github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/api/facadeversions.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package api 5 6 // facadeVersions lists the best version of facades that we know about. This 7 // will be used to pick out a default version for communication, given the list 8 // of known versions that the API server tells us it is capable of supporting. 9 // This map should be updated whenever the API server exposes a new version (so 10 // that the client will use it whenever it is available). 11 // New facades should start at 1. 12 // Facades that existed before versioning start at 0. 13 var facadeVersions = map[string]int{ 14 "Action": 0, 15 "Addresser": 1, 16 "Agent": 1, 17 "AllWatcher": 0, 18 "AllEnvWatcher": 1, 19 "Annotations": 1, 20 "Backups": 0, 21 "Block": 1, 22 "Charms": 1, 23 "CharmRevisionUpdater": 0, 24 "Client": 0, 25 "Cleaner": 1, 26 "Deployer": 0, 27 "DiskManager": 1, 28 "EntityWatcher": 1, 29 "Environment": 0, 30 "EnvironmentManager": 1, 31 "FilesystemAttachmentsWatcher": 1, 32 "Firewaller": 1, 33 "HighAvailability": 1, 34 "ImageManager": 1, 35 "ImageMetadata": 1, 36 "InstancePoller": 1, 37 "KeyManager": 0, 38 "KeyUpdater": 0, 39 "LeadershipService": 1, 40 "Logger": 0, 41 "MachineManager": 1, 42 "Machiner": 0, 43 "MetricsManager": 0, 44 "MeterStatus": 1, 45 "MetricsAdder": 1, 46 "Networker": 0, 47 "NotifyWatcher": 0, 48 "Pinger": 0, 49 "Provisioner": 1, 50 "Reboot": 1, 51 "RelationUnitsWatcher": 0, 52 "Resumer": 1, 53 "Rsyslog": 0, 54 "Service": 1, 55 "Storage": 1, 56 "Spaces": 1, 57 "Subnets": 1, 58 "StorageProvisioner": 1, 59 "StringsWatcher": 0, 60 "SystemManager": 1, 61 "Upgrader": 0, 62 "Uniter": 2, 63 "UserManager": 0, 64 "VolumeAttachmentsWatcher": 1, 65 } 66 67 // bestVersion tries to find the newest version in the version list that we can 68 // use. 69 func bestVersion(desiredVersion int, versions []int) int { 70 best := 0 71 for _, version := range versions { 72 if version <= desiredVersion && version > best { 73 best = version 74 } 75 } 76 return best 77 }