Remove VERSION_MAP and rely on facade list from controller (#118)
authorCory Johns <johnsca@gmail.com>
Thu, 27 Apr 2017 20:45:28 +0000 (16:45 -0400)
committerPete Vander Giessen <petevg@gmail.com>
Thu, 27 Apr 2017 20:45:28 +0000 (16:45 -0400)
Based on feedback from core, the facades list is complete and accurate,
but does depend on the connection type.  So, we don't need to maintain
our own mapping of it.

Tested with Juju 2.1.2 and Juju 2.2-beta3

juju/client/connection.py
juju/client/facade.py
juju/client/version_map.py [deleted file]

index c2c6b2d..9bef2a3 100644 (file)
@@ -17,7 +17,6 @@ import yaml
 
 from juju import tag, utils
 from juju.client import client
-from juju.client.version_map import VERSION_MAP
 from juju.errors import JujuError, JujuAPIError, JujuConnectionError
 from juju.utils import IdQueue
 
@@ -478,22 +477,8 @@ class Connection:
 
     def build_facades(self, facades):
         self.facades.clear()
-        # In order to work around an issue where the juju api is not
-        # returning a complete list of facades, we simply look up the
-        # juju version in a pregenerated map, and use that info to
-        # populate our list of facades.
-
-        # TODO: if a future version of juju fixes this bug, restore
-        # the following code for that version and higher:
-        # for facade in facades:
-        #     self.facades[facade['name']] = facade['versions'][-1]
-        try:
-            self.facades = VERSION_MAP[self.info['server-version']]
-        except KeyError:
-            log.warning("Could not find a set of facades for {}. Using "
-                        "the latest facade set instead".format(
-                            self.info['server-version']))
-            self.facades = VERSION_MAP['latest']
+        for facade in facades:
+            self.facades[facade['name']] = facade['versions'][-1]
 
     async def login(self):
         username = self.username
index 5f37c27..00dd26a 100644 (file)
@@ -17,7 +17,6 @@ from . import codegen
 _marker = object()
 
 JUJU_VERSION = re.compile('[0-9]+\.[0-9-]+[\.\-][0-9a-z]+(\.[0-9]+)?')
-VERSION_MAP = defaultdict(dict)
 # Workaround for https://bugs.launchpad.net/juju/+bug/1683906
 NAUGHTY_CLASSES = ['ClientFacade', 'Client', 'FullStatus', 'ModelStatusInfo',
                    'ModelInfo']
@@ -716,25 +715,6 @@ def write_client(captures, options):
             print(factories[key], file=f)
 
 
-def write_version_map(options):
-    """
-    In order to work around
-    https://bugs.launchpad.net/juju/+bug/1682925, we build a map of
-    the facades that each version supports, and write it to disk here.
-
-    """
-    with open("{}/version_map.py".format(options.output_dir), "w") as f:
-        f.write(HEADER)
-        f.write("VERSION_MAP = {\n")
-        for juju_version in sorted(VERSION_MAP.keys()):
-            f.write('    "{}": {{\n'.format(juju_version))
-            for key in VERSION_MAP[juju_version]:
-                f.write('        "{}": {},\n'.format(
-                    key, VERSION_MAP[juju_version][key]))
-            f.write('    },\n')
-        f.write("}\n")
-
-
 def generate_facades(options):
     captures = defaultdict(codegen.Capture)
     schemas = {}
@@ -759,7 +739,6 @@ def generate_facades(options):
         for schema in schemas[juju_version]:
             schema.buildDefinitions()
             buildTypes(schema, captures[schema.version])
-            VERSION_MAP[juju_version][schema.name] = schema.version
 
     # Build the Facade classes
     for juju_version in sorted(schemas.keys()):
@@ -797,7 +776,6 @@ def main():
     last_version = write_facades(captures, options)
     write_definitions(captures, options, last_version)
     write_client(captures, options)
-    write_version_map(options)
 
 if __name__ == '__main__':
     main()
diff --git a/juju/client/version_map.py b/juju/client/version_map.py
deleted file mode 100644 (file)
index fb3f486..0000000
+++ /dev/null
@@ -1,861 +0,0 @@
-# DO NOT CHANGE THIS FILE! This file is auto-generated by facade.py.
-# Changes will be overwritten/lost when the file is regenerated.
-
-VERSION_MAP = {
-    "2.0.0": {
-        "InstancePoller": 3,
-        "RelationUnitsWatcher": 1,
-        "FilesystemAttachmentsWatcher": 2,
-        "Controller": 3,
-        "MigrationStatusWatcher": 1,
-        "Agent": 2,
-        "LogForwarding": 1,
-        "Payloads": 1,
-        "HostKeyReporter": 1,
-        "Storage": 3,
-        "RetryStrategy": 1,
-        "ApplicationScaler": 1,
-        "Charms": 2,
-        "MetricsManager": 1,
-        "Firewaller": 3,
-        "StatusHistory": 2,
-        "MetricsDebug": 2,
-        "DiscoverSpaces": 2,
-        "ImageMetadata": 2,
-        "Block": 2,
-        "MachineManager": 2,
-        "AllModelWatcher": 2,
-        "MigrationMaster": 1,
-        "ModelManager": 2,
-        "StorageProvisioner": 3,
-        "Action": 2,
-        "ModelConfig": 1,
-        "Singular": 1,
-        "HighAvailability": 2,
-        "Machiner": 1,
-        "StringsWatcher": 1,
-        "Logger": 1,
-        "EntityWatcher": 2,
-        "Resumer": 2,
-        "Uniter": 4,
-        "PayloadsHookContext": 1,
-        "MigrationTarget": 1,
-        "MachineActions": 1,
-        "MigrationMinion": 1,
-        "MigrationFlag": 1,
-        "Bundle": 1,
-        "VolumeAttachmentsWatcher": 2,
-        "Backups": 1,
-        "Upgrader": 1,
-        "ProxyUpdater": 1,
-        "Provisioner": 3,
-        "MeterStatus": 1,
-        "AllWatcher": 1,
-        "Resources": 1,
-        "Undertaker": 1,
-        "MetricsAdder": 2,
-        "Deployer": 1,
-        "ImageManager": 2,
-        "LifeFlag": 1,
-        "KeyManager": 1,
-        "UserManager": 1,
-        "AgentTools": 1,
-        "Spaces": 2,
-        "Cleaner": 2,
-        "ResourcesHookContext": 1,
-        "Annotations": 2,
-        "SSHClient": 1,
-        "LeadershipService": 2,
-        "Pinger": 1,
-        "Subnets": 2,
-        "KeyUpdater": 1,
-        "MachineUndertaker": 1,
-        "DiskManager": 2,
-        "Client": 1,
-        "Reboot": 2,
-        "Application": 2,
-        "UnitAssigner": 1,
-        "CharmRevisionUpdater": 2,
-        "Cloud": 1,
-        "NotifyWatcher": 1,
-    },
-    "2.0.1": {
-        "InstancePoller": 3,
-        "RelationUnitsWatcher": 1,
-        "FilesystemAttachmentsWatcher": 2,
-        "ApplicationRelationsWatcher": 1,
-        "MigrationStatusWatcher": 1,
-        "Agent": 2,
-        "LogForwarding": 1,
-        "Payloads": 1,
-        "HostKeyReporter": 1,
-        "Storage": 3,
-        "RetryStrategy": 1,
-        "ApplicationScaler": 1,
-        "Charms": 2,
-        "MetricsManager": 1,
-        "Firewaller": 3,
-        "StatusHistory": 2,
-        "MetricsDebug": 2,
-        "DiscoverSpaces": 2,
-        "ImageMetadata": 2,
-        "Block": 2,
-        "Controller": 3,
-        "AllModelWatcher": 2,
-        "MigrationMaster": 1,
-        "ModelManager": 2,
-        "StorageProvisioner": 3,
-        "Action": 2,
-        "ModelConfig": 1,
-        "Singular": 1,
-        "HighAvailability": 2,
-        "Machiner": 1,
-        "StringsWatcher": 1,
-        "Logger": 1,
-        "EntityWatcher": 2,
-        "Resumer": 2,
-        "Uniter": 4,
-        "PayloadsHookContext": 1,
-        "MigrationFlag": 1,
-        "MigrationTarget": 1,
-        "MachineActions": 1,
-        "MigrationMinion": 1,
-        "KeyManager": 1,
-        "Bundle": 1,
-        "VolumeAttachmentsWatcher": 2,
-        "Backups": 1,
-        "ProxyUpdater": 1,
-        "Provisioner": 3,
-        "MeterStatus": 1,
-        "AllWatcher": 1,
-        "Resources": 1,
-        "Undertaker": 1,
-        "MetricsAdder": 2,
-        "Deployer": 1,
-        "ImageManager": 2,
-        "LifeFlag": 1,
-        "Upgrader": 1,
-        "UserManager": 1,
-        "AgentTools": 1,
-        "Spaces": 2,
-        "Cleaner": 2,
-        "MachineManager": 2,
-        "ResourcesHookContext": 1,
-        "Annotations": 2,
-        "SSHClient": 2,
-        "LeadershipService": 2,
-        "Pinger": 1,
-        "Subnets": 2,
-        "KeyUpdater": 1,
-        "MachineUndertaker": 1,
-        "DiskManager": 2,
-        "Client": 1,
-        "Reboot": 2,
-        "Application": 3,
-        "UnitAssigner": 1,
-        "CharmRevisionUpdater": 2,
-        "Cloud": 1,
-        "NotifyWatcher": 1,
-    },
-    "2.0.2": {
-        "InstancePoller": 3,
-        "RelationUnitsWatcher": 1,
-        "FilesystemAttachmentsWatcher": 2,
-        "ApplicationRelationsWatcher": 1,
-        "MigrationStatusWatcher": 1,
-        "Agent": 2,
-        "LogForwarding": 1,
-        "Payloads": 1,
-        "HostKeyReporter": 1,
-        "Storage": 3,
-        "RetryStrategy": 1,
-        "ApplicationScaler": 1,
-        "Charms": 2,
-        "MetricsManager": 1,
-        "Firewaller": 3,
-        "StatusHistory": 2,
-        "MetricsDebug": 2,
-        "DiscoverSpaces": 2,
-        "ImageMetadata": 2,
-        "Block": 2,
-        "Controller": 3,
-        "AllModelWatcher": 2,
-        "MigrationMaster": 1,
-        "ModelManager": 2,
-        "StorageProvisioner": 3,
-        "Action": 2,
-        "ModelConfig": 1,
-        "Singular": 1,
-        "HighAvailability": 2,
-        "Machiner": 1,
-        "StringsWatcher": 1,
-        "Logger": 1,
-        "EntityWatcher": 2,
-        "Resumer": 2,
-        "Uniter": 4,
-        "PayloadsHookContext": 1,
-        "MigrationFlag": 1,
-        "MigrationTarget": 1,
-        "MachineActions": 1,
-        "MigrationMinion": 1,
-        "KeyManager": 1,
-        "Bundle": 1,
-        "VolumeAttachmentsWatcher": 2,
-        "Backups": 1,
-        "ProxyUpdater": 1,
-        "Provisioner": 3,
-        "MeterStatus": 1,
-        "AllWatcher": 1,
-        "Resources": 1,
-        "Undertaker": 1,
-        "MetricsAdder": 2,
-        "Deployer": 1,
-        "ImageManager": 2,
-        "LifeFlag": 1,
-        "Upgrader": 1,
-        "UserManager": 1,
-        "AgentTools": 1,
-        "Spaces": 2,
-        "Cleaner": 2,
-        "MachineManager": 2,
-        "ResourcesHookContext": 1,
-        "Annotations": 2,
-        "SSHClient": 2,
-        "LeadershipService": 2,
-        "Pinger": 1,
-        "Subnets": 2,
-        "KeyUpdater": 1,
-        "MachineUndertaker": 1,
-        "DiskManager": 2,
-        "Client": 1,
-        "Reboot": 2,
-        "Application": 3,
-        "UnitAssigner": 1,
-        "CharmRevisionUpdater": 2,
-        "Cloud": 1,
-        "NotifyWatcher": 1,
-    },
-    "2.0.3": {
-        "InstancePoller": 3,
-        "RelationUnitsWatcher": 1,
-        "FilesystemAttachmentsWatcher": 2,
-        "ApplicationRelationsWatcher": 1,
-        "MigrationStatusWatcher": 1,
-        "Agent": 2,
-        "LogForwarding": 1,
-        "Payloads": 1,
-        "HostKeyReporter": 1,
-        "Storage": 3,
-        "RetryStrategy": 1,
-        "ApplicationScaler": 1,
-        "Charms": 2,
-        "MetricsManager": 1,
-        "Firewaller": 3,
-        "StatusHistory": 2,
-        "MetricsDebug": 2,
-        "DiscoverSpaces": 2,
-        "ImageMetadata": 2,
-        "Block": 2,
-        "Controller": 3,
-        "AllModelWatcher": 2,
-        "MigrationMaster": 1,
-        "ModelManager": 2,
-        "StorageProvisioner": 3,
-        "Action": 2,
-        "ModelConfig": 1,
-        "Singular": 1,
-        "HighAvailability": 2,
-        "Machiner": 1,
-        "StringsWatcher": 1,
-        "Logger": 1,
-        "EntityWatcher": 2,
-        "Resumer": 2,
-        "Uniter": 4,
-        "PayloadsHookContext": 1,
-        "MigrationFlag": 1,
-        "MigrationTarget": 1,
-        "MachineActions": 1,
-        "MigrationMinion": 1,
-        "KeyManager": 1,
-        "Bundle": 1,
-        "VolumeAttachmentsWatcher": 2,
-        "Backups": 1,
-        "ProxyUpdater": 1,
-        "Provisioner": 3,
-        "MeterStatus": 1,
-        "AllWatcher": 1,
-        "Resources": 1,
-        "Undertaker": 1,
-        "MetricsAdder": 2,
-        "Deployer": 1,
-        "ImageManager": 2,
-        "LifeFlag": 1,
-        "Upgrader": 1,
-        "UserManager": 1,
-        "AgentTools": 1,
-        "Spaces": 2,
-        "Cleaner": 2,
-        "MachineManager": 2,
-        "ResourcesHookContext": 1,
-        "Annotations": 2,
-        "SSHClient": 2,
-        "LeadershipService": 2,
-        "Pinger": 1,
-        "Subnets": 2,
-        "KeyUpdater": 1,
-        "MachineUndertaker": 1,
-        "DiskManager": 2,
-        "Client": 1,
-        "Reboot": 2,
-        "Application": 3,
-        "UnitAssigner": 1,
-        "CharmRevisionUpdater": 2,
-        "Cloud": 1,
-        "NotifyWatcher": 1,
-    },
-    "2.1.0": {
-        "InstancePoller": 3,
-        "RelationUnitsWatcher": 1,
-        "FilesystemAttachmentsWatcher": 2,
-        "Controller": 3,
-        "MigrationStatusWatcher": 1,
-        "Agent": 2,
-        "LogForwarding": 1,
-        "Payloads": 1,
-        "HostKeyReporter": 1,
-        "RemoteRelationsWatcher": 1,
-        "Storage": 3,
-        "RetryStrategy": 1,
-        "ApplicationScaler": 1,
-        "Charms": 2,
-        "MetricsManager": 1,
-        "Firewaller": 3,
-        "RemoteApplicationWatcher": 1,
-        "MetricsDebug": 2,
-        "DiscoverSpaces": 2,
-        "ImageMetadata": 2,
-        "Block": 2,
-        "MachineManager": 2,
-        "AllModelWatcher": 2,
-        "MigrationMaster": 1,
-        "ModelManager": 2,
-        "StorageProvisioner": 3,
-        "Action": 2,
-        "ModelConfig": 1,
-        "Singular": 1,
-        "HighAvailability": 2,
-        "Machiner": 1,
-        "StringsWatcher": 1,
-        "Logger": 1,
-        "EntityWatcher": 2,
-        "Resumer": 2,
-        "Uniter": 4,
-        "PayloadsHookContext": 1,
-        "MigrationTarget": 1,
-        "MachineActions": 1,
-        "MigrationMinion": 1,
-        "MigrationFlag": 1,
-        "Bundle": 1,
-        "VolumeAttachmentsWatcher": 2,
-        "Backups": 1,
-        "Upgrader": 1,
-        "ProxyUpdater": 1,
-        "Provisioner": 3,
-        "MeterStatus": 1,
-        "AllWatcher": 1,
-        "Resources": 1,
-        "Undertaker": 1,
-        "MetricsAdder": 2,
-        "Deployer": 1,
-        "ImageManager": 2,
-        "LifeFlag": 1,
-        "KeyManager": 1,
-        "UserManager": 1,
-        "AgentTools": 1,
-        "Spaces": 2,
-        "Cleaner": 2,
-        "ResourcesHookContext": 1,
-        "Annotations": 2,
-        "SSHClient": 2,
-        "LeadershipService": 2,
-        "Pinger": 1,
-        "Subnets": 2,
-        "KeyUpdater": 1,
-        "MachineUndertaker": 1,
-        "StatusHistory": 2,
-        "DiskManager": 2,
-        "Client": 1,
-        "Reboot": 2,
-        "Application": 3,
-        "UnitAssigner": 1,
-        "CharmRevisionUpdater": 2,
-        "Cloud": 1,
-        "NotifyWatcher": 1,
-    },
-    "2.1.1": {
-        "InstancePoller": 3,
-        "RelationUnitsWatcher": 1,
-        "FilesystemAttachmentsWatcher": 2,
-        "Controller": 3,
-        "MigrationStatusWatcher": 1,
-        "Agent": 2,
-        "LogForwarding": 1,
-        "Payloads": 1,
-        "HostKeyReporter": 1,
-        "RemoteRelationsWatcher": 1,
-        "Storage": 3,
-        "RetryStrategy": 1,
-        "ApplicationScaler": 1,
-        "Charms": 2,
-        "MetricsManager": 1,
-        "Firewaller": 3,
-        "RemoteApplicationWatcher": 1,
-        "MetricsDebug": 2,
-        "DiscoverSpaces": 2,
-        "ImageMetadata": 2,
-        "Block": 2,
-        "MachineManager": 2,
-        "AllModelWatcher": 2,
-        "MigrationMaster": 1,
-        "ModelManager": 2,
-        "StorageProvisioner": 3,
-        "Action": 2,
-        "ModelConfig": 1,
-        "Singular": 1,
-        "HighAvailability": 2,
-        "Machiner": 1,
-        "StringsWatcher": 1,
-        "Logger": 1,
-        "EntityWatcher": 2,
-        "Resumer": 2,
-        "Uniter": 4,
-        "PayloadsHookContext": 1,
-        "MigrationTarget": 1,
-        "MachineActions": 1,
-        "MigrationMinion": 1,
-        "MigrationFlag": 1,
-        "Bundle": 1,
-        "VolumeAttachmentsWatcher": 2,
-        "Backups": 1,
-        "Upgrader": 1,
-        "ProxyUpdater": 1,
-        "Provisioner": 3,
-        "MeterStatus": 1,
-        "AllWatcher": 1,
-        "Resources": 1,
-        "Undertaker": 1,
-        "MetricsAdder": 2,
-        "Deployer": 1,
-        "ImageManager": 2,
-        "LifeFlag": 1,
-        "KeyManager": 1,
-        "UserManager": 1,
-        "AgentTools": 1,
-        "Spaces": 2,
-        "Cleaner": 2,
-        "ResourcesHookContext": 1,
-        "Annotations": 2,
-        "SSHClient": 2,
-        "LeadershipService": 2,
-        "Pinger": 1,
-        "Subnets": 2,
-        "KeyUpdater": 1,
-        "MachineUndertaker": 1,
-        "StatusHistory": 2,
-        "DiskManager": 2,
-        "Client": 1,
-        "Reboot": 2,
-        "Application": 3,
-        "UnitAssigner": 1,
-        "CharmRevisionUpdater": 2,
-        "Cloud": 1,
-        "NotifyWatcher": 1,
-    },
-    "2.1.2": {
-        "InstancePoller": 3,
-        "RelationUnitsWatcher": 1,
-        "FilesystemAttachmentsWatcher": 2,
-        "Controller": 3,
-        "MigrationStatusWatcher": 1,
-        "Agent": 2,
-        "LogForwarding": 1,
-        "Payloads": 1,
-        "HostKeyReporter": 1,
-        "RemoteRelationsWatcher": 1,
-        "Storage": 3,
-        "RetryStrategy": 1,
-        "ApplicationScaler": 1,
-        "Charms": 2,
-        "MetricsManager": 1,
-        "Firewaller": 3,
-        "RemoteApplicationWatcher": 1,
-        "MetricsDebug": 2,
-        "DiscoverSpaces": 2,
-        "ImageMetadata": 2,
-        "Block": 2,
-        "MachineManager": 2,
-        "AllModelWatcher": 2,
-        "MigrationMaster": 1,
-        "ModelManager": 2,
-        "StorageProvisioner": 3,
-        "Action": 2,
-        "ModelConfig": 1,
-        "Singular": 1,
-        "HighAvailability": 2,
-        "Machiner": 1,
-        "StringsWatcher": 1,
-        "Logger": 1,
-        "EntityWatcher": 2,
-        "Resumer": 2,
-        "Uniter": 4,
-        "PayloadsHookContext": 1,
-        "MigrationTarget": 1,
-        "MachineActions": 1,
-        "MigrationMinion": 1,
-        "MigrationFlag": 1,
-        "Bundle": 1,
-        "VolumeAttachmentsWatcher": 2,
-        "Backups": 1,
-        "Upgrader": 1,
-        "ProxyUpdater": 1,
-        "Provisioner": 3,
-        "MeterStatus": 1,
-        "AllWatcher": 1,
-        "Resources": 1,
-        "Undertaker": 1,
-        "MetricsAdder": 2,
-        "Deployer": 1,
-        "ImageManager": 2,
-        "LifeFlag": 1,
-        "KeyManager": 1,
-        "UserManager": 1,
-        "AgentTools": 1,
-        "Spaces": 2,
-        "Cleaner": 2,
-        "ResourcesHookContext": 1,
-        "Annotations": 2,
-        "SSHClient": 2,
-        "LeadershipService": 2,
-        "Pinger": 1,
-        "Subnets": 2,
-        "KeyUpdater": 1,
-        "MachineUndertaker": 1,
-        "StatusHistory": 2,
-        "DiskManager": 2,
-        "Client": 1,
-        "Reboot": 2,
-        "Application": 3,
-        "UnitAssigner": 1,
-        "CharmRevisionUpdater": 2,
-        "Cloud": 1,
-        "NotifyWatcher": 1,
-    },
-    "2.2-alpha1": {
-        "InstancePoller": 3,
-        "RelationUnitsWatcher": 1,
-        "FilesystemAttachmentsWatcher": 2,
-        "Controller": 3,
-        "MigrationStatusWatcher": 1,
-        "Agent": 2,
-        "LogForwarding": 1,
-        "Payloads": 1,
-        "HostKeyReporter": 1,
-        "Storage": 3,
-        "RetryStrategy": 1,
-        "ApplicationScaler": 1,
-        "Charms": 2,
-        "MetricsManager": 1,
-        "Firewaller": 3,
-        "StatusHistory": 2,
-        "MetricsDebug": 2,
-        "DiscoverSpaces": 2,
-        "ImageMetadata": 2,
-        "Block": 2,
-        "MachineManager": 3,
-        "AllModelWatcher": 2,
-        "MigrationMaster": 1,
-        "ModelManager": 2,
-        "StorageProvisioner": 3,
-        "Action": 2,
-        "ModelConfig": 1,
-        "Singular": 1,
-        "HighAvailability": 2,
-        "Machiner": 1,
-        "StringsWatcher": 1,
-        "Logger": 1,
-        "EntityWatcher": 2,
-        "Resumer": 2,
-        "Uniter": 4,
-        "PayloadsHookContext": 1,
-        "MigrationTarget": 1,
-        "MachineActions": 1,
-        "MigrationMinion": 1,
-        "MigrationFlag": 1,
-        "Bundle": 1,
-        "VolumeAttachmentsWatcher": 2,
-        "Backups": 1,
-        "Upgrader": 1,
-        "ProxyUpdater": 1,
-        "Provisioner": 3,
-        "MeterStatus": 1,
-        "AllWatcher": 1,
-        "Resources": 1,
-        "Undertaker": 1,
-        "MetricsAdder": 2,
-        "Deployer": 1,
-        "ImageManager": 2,
-        "LifeFlag": 1,
-        "KeyManager": 1,
-        "UserManager": 1,
-        "AgentTools": 1,
-        "Spaces": 2,
-        "Cleaner": 2,
-        "ResourcesHookContext": 1,
-        "Annotations": 2,
-        "SSHClient": 2,
-        "LeadershipService": 2,
-        "Pinger": 1,
-        "Subnets": 2,
-        "KeyUpdater": 1,
-        "MachineUndertaker": 1,
-        "DiskManager": 2,
-        "Client": 1,
-        "Reboot": 2,
-        "Application": 4,
-        "UnitAssigner": 1,
-        "CharmRevisionUpdater": 2,
-        "Cloud": 1,
-        "NotifyWatcher": 1,
-    },
-    "2.2-beta1": {
-        "InstancePoller": 3,
-        "RelationUnitsWatcher": 1,
-        "FilesystemAttachmentsWatcher": 2,
-        "Controller": 3,
-        "MigrationStatusWatcher": 1,
-        "Agent": 2,
-        "LogForwarding": 1,
-        "Payloads": 1,
-        "HostKeyReporter": 1,
-        "Storage": 3,
-        "RetryStrategy": 1,
-        "ApplicationScaler": 1,
-        "Charms": 2,
-        "MetricsManager": 1,
-        "Firewaller": 3,
-        "StatusHistory": 2,
-        "MetricsDebug": 2,
-        "DiscoverSpaces": 2,
-        "ImageMetadata": 2,
-        "Block": 2,
-        "MachineManager": 3,
-        "AllModelWatcher": 2,
-        "MigrationMaster": 1,
-        "ModelManager": 2,
-        "StorageProvisioner": 3,
-        "Action": 2,
-        "ModelConfig": 1,
-        "Singular": 1,
-        "HighAvailability": 2,
-        "Machiner": 1,
-        "StringsWatcher": 1,
-        "Logger": 1,
-        "EntityWatcher": 2,
-        "Resumer": 2,
-        "Uniter": 5,
-        "PayloadsHookContext": 1,
-        "MigrationTarget": 1,
-        "MachineActions": 1,
-        "MigrationMinion": 1,
-        "MigrationFlag": 1,
-        "Bundle": 1,
-        "VolumeAttachmentsWatcher": 2,
-        "Backups": 1,
-        "Upgrader": 1,
-        "ProxyUpdater": 1,
-        "Provisioner": 3,
-        "MeterStatus": 1,
-        "AllWatcher": 1,
-        "Resources": 1,
-        "Undertaker": 1,
-        "MetricsAdder": 2,
-        "Deployer": 1,
-        "ImageManager": 2,
-        "LifeFlag": 1,
-        "KeyManager": 1,
-        "UserManager": 1,
-        "AgentTools": 1,
-        "Spaces": 2,
-        "Cleaner": 2,
-        "ResourcesHookContext": 1,
-        "Annotations": 2,
-        "SSHClient": 2,
-        "LeadershipService": 2,
-        "Pinger": 1,
-        "Subnets": 2,
-        "KeyUpdater": 1,
-        "MachineUndertaker": 1,
-        "DiskManager": 2,
-        "Client": 1,
-        "Reboot": 2,
-        "Application": 4,
-        "UnitAssigner": 1,
-        "CharmRevisionUpdater": 2,
-        "Cloud": 1,
-        "NotifyWatcher": 1,
-    },
-    "2.2-beta2": {
-        "InstancePoller": 3,
-        "RelationUnitsWatcher": 1,
-        "FilesystemAttachmentsWatcher": 2,
-        "Controller": 3,
-        "MigrationStatusWatcher": 1,
-        "Agent": 2,
-        "LogForwarding": 1,
-        "Payloads": 1,
-        "HostKeyReporter": 1,
-        "Storage": 3,
-        "RetryStrategy": 1,
-        "ApplicationScaler": 1,
-        "Charms": 2,
-        "MetricsManager": 1,
-        "Firewaller": 3,
-        "StatusHistory": 2,
-        "MetricsDebug": 2,
-        "DiscoverSpaces": 2,
-        "ImageMetadata": 2,
-        "Block": 2,
-        "MachineManager": 3,
-        "AllModelWatcher": 2,
-        "MigrationMaster": 1,
-        "ModelManager": 2,
-        "StorageProvisioner": 3,
-        "Action": 2,
-        "ModelConfig": 1,
-        "Singular": 1,
-        "HighAvailability": 2,
-        "Machiner": 1,
-        "StringsWatcher": 1,
-        "Logger": 1,
-        "EntityWatcher": 2,
-        "Resumer": 2,
-        "Uniter": 5,
-        "PayloadsHookContext": 1,
-        "MigrationTarget": 1,
-        "MachineActions": 1,
-        "MigrationMinion": 1,
-        "MigrationFlag": 1,
-        "Bundle": 1,
-        "VolumeAttachmentsWatcher": 2,
-        "Backups": 1,
-        "Upgrader": 1,
-        "ProxyUpdater": 1,
-        "Provisioner": 3,
-        "MeterStatus": 1,
-        "AllWatcher": 1,
-        "Resources": 1,
-        "Undertaker": 1,
-        "MetricsAdder": 2,
-        "Deployer": 1,
-        "ImageManager": 2,
-        "LifeFlag": 1,
-        "KeyManager": 1,
-        "UserManager": 1,
-        "AgentTools": 1,
-        "Spaces": 2,
-        "Cleaner": 2,
-        "ResourcesHookContext": 1,
-        "Annotations": 2,
-        "SSHClient": 2,
-        "LeadershipService": 2,
-        "Pinger": 1,
-        "Subnets": 2,
-        "KeyUpdater": 1,
-        "MachineUndertaker": 1,
-        "DiskManager": 2,
-        "Client": 1,
-        "Reboot": 2,
-        "Application": 4,
-        "UnitAssigner": 1,
-        "CharmRevisionUpdater": 2,
-        "Cloud": 1,
-        "NotifyWatcher": 1,
-    },
-    "latest": {
-        "InstancePoller": 3,
-        "RelationUnitsWatcher": 1,
-        "FilesystemAttachmentsWatcher": 2,
-        "Controller": 3,
-        "MigrationStatusWatcher": 1,
-        "Agent": 2,
-        "LogForwarding": 1,
-        "Payloads": 1,
-        "HostKeyReporter": 1,
-        "Storage": 3,
-        "RetryStrategy": 1,
-        "ApplicationScaler": 1,
-        "Charms": 2,
-        "MetricsManager": 1,
-        "Firewaller": 3,
-        "StatusHistory": 2,
-        "MetricsDebug": 2,
-        "DiscoverSpaces": 2,
-        "ImageMetadata": 2,
-        "Block": 2,
-        "MachineManager": 3,
-        "AllModelWatcher": 2,
-        "MigrationMaster": 1,
-        "ModelManager": 2,
-        "StorageProvisioner": 3,
-        "Action": 2,
-        "ModelConfig": 1,
-        "Singular": 1,
-        "HighAvailability": 2,
-        "Machiner": 1,
-        "StringsWatcher": 1,
-        "Logger": 1,
-        "EntityWatcher": 2,
-        "Resumer": 2,
-        "Uniter": 5,
-        "PayloadsHookContext": 1,
-        "MigrationTarget": 1,
-        "MachineActions": 1,
-        "MigrationMinion": 1,
-        "MigrationFlag": 1,
-        "Bundle": 1,
-        "VolumeAttachmentsWatcher": 2,
-        "Backups": 1,
-        "Upgrader": 1,
-        "ProxyUpdater": 1,
-        "Provisioner": 3,
-        "MeterStatus": 1,
-        "AllWatcher": 1,
-        "Resources": 1,
-        "Undertaker": 1,
-        "MetricsAdder": 2,
-        "Deployer": 1,
-        "ImageManager": 2,
-        "LifeFlag": 1,
-        "KeyManager": 1,
-        "UserManager": 1,
-        "AgentTools": 1,
-        "Spaces": 2,
-        "Cleaner": 2,
-        "ResourcesHookContext": 1,
-        "Annotations": 2,
-        "SSHClient": 2,
-        "LeadershipService": 2,
-        "Pinger": 1,
-        "Subnets": 2,
-        "KeyUpdater": 1,
-        "MachineUndertaker": 1,
-        "DiskManager": 2,
-        "Client": 1,
-        "Reboot": 2,
-        "Application": 4,
-        "UnitAssigner": 1,
-        "CharmRevisionUpdater": 2,
-        "Cloud": 1,
-        "NotifyWatcher": 1,
-    },
-}