Include resources from store when deploying (#102)
[osm/N2VC.git] / juju / client / client.py
index 96de086..f4eef0e 100644 (file)
+'''Replace auto-generated classes with our own, where necessary.
 
-from juju.client.facade import Type, ReturnMapping
-                  
-class Action(Type):
-    _toSchema = {'receiver': 'receiver', 'name': 'name', 'tag': 'tag', 'parameters': 'parameters'}
-    _toPy = {'receiver': 'receiver', 'name': 'name', 'tag': 'tag', 'parameters': 'parameters'}
-    def __init__(self, name=None, parameters=None, receiver=None, tag=None):
-        '''
-        name : str
-        parameters : typing.Mapping[str, typing.Any]
-        receiver : str
-        tag : str
-        '''
-        self.name = name
-        self.parameters = parameters
-        self.receiver = receiver
-        self.tag = tag
+'''
 
+from . import _client
+from . import overrides
 
-class ActionResult(Type):
-    _toSchema = {'message': 'message', 'enqueued': 'enqueued', 'action': 'action', 'started': 'started', 'output': 'output', 'completed': 'completed', 'error': 'error', 'status': 'status'}
-    _toPy = {'message': 'message', 'enqueued': 'enqueued', 'action': 'action', 'started': 'started', 'output': 'output', 'completed': 'completed', 'error': 'error', 'status': 'status'}
-    def __init__(self, action=None, completed=None, enqueued=None, error=None, message=None, output=None, started=None, status=None):
-        '''
-        action : Action
-        completed : str
-        enqueued : str
-        error : Error
-        message : str
-        output : typing.Mapping[str, typing.Any]
-        started : str
-        status : str
-        '''
-        self.action = Action.from_json(action)
-        self.completed = completed
-        self.enqueued = enqueued
-        self.error = Error.from_json(error)
-        self.message = message
-        self.output = output
-        self.started = started
-        self.status = status
 
+for o in overrides.__all__:
+    setattr(_client, o, getattr(overrides, o))
 
-class ActionResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~ActionResult]
-        '''
-        self.results = [ActionResult.from_json(o) for o in results or []]
-
-
-class Actions(Type):
-    _toSchema = {'actions': 'actions'}
-    _toPy = {'actions': 'actions'}
-    def __init__(self, actions=None):
-        '''
-        actions : typing.Sequence[~Action]
-        '''
-        self.actions = [Action.from_json(o) for o in actions or []]
-
-
-class ActionsByName(Type):
-    _toSchema = {'actions': 'actions', 'error': 'error', 'name': 'name'}
-    _toPy = {'actions': 'actions', 'error': 'error', 'name': 'name'}
-    def __init__(self, actions=None, error=None, name=None):
-        '''
-        actions : typing.Sequence[~ActionResult]
-        error : Error
-        name : str
-        '''
-        self.actions = [ActionResult.from_json(o) for o in actions or []]
-        self.error = Error.from_json(error)
-        self.name = name
-
-
-class ActionsByNames(Type):
-    _toSchema = {'actions': 'actions'}
-    _toPy = {'actions': 'actions'}
-    def __init__(self, actions=None):
-        '''
-        actions : typing.Sequence[~ActionsByName]
-        '''
-        self.actions = [ActionsByName.from_json(o) for o in actions or []]
-
-
-class ActionsByReceiver(Type):
-    _toSchema = {'actions': 'actions', 'error': 'error', 'receiver': 'receiver'}
-    _toPy = {'actions': 'actions', 'error': 'error', 'receiver': 'receiver'}
-    def __init__(self, actions=None, error=None, receiver=None):
-        '''
-        actions : typing.Sequence[~ActionResult]
-        error : Error
-        receiver : str
-        '''
-        self.actions = [ActionResult.from_json(o) for o in actions or []]
-        self.error = Error.from_json(error)
-        self.receiver = receiver
-
-
-class ActionsByReceivers(Type):
-    _toSchema = {'actions': 'actions'}
-    _toPy = {'actions': 'actions'}
-    def __init__(self, actions=None):
-        '''
-        actions : typing.Sequence[~ActionsByReceiver]
-        '''
-        self.actions = [ActionsByReceiver.from_json(o) for o in actions or []]
-
-
-class Entities(Type):
-    _toSchema = {'entities': 'Entities'}
-    _toPy = {'Entities': 'entities'}
-    def __init__(self, entities=None):
-        '''
-        entities : typing.Sequence[~Entity]
-        '''
-        self.entities = [Entity.from_json(o) for o in entities or []]
-
-
-class Entity(Type):
-    _toSchema = {'tag': 'Tag'}
-    _toPy = {'Tag': 'tag'}
-    def __init__(self, tag=None):
-        '''
-        tag : str
-        '''
-        self.tag = tag
-
-
-class Error(Type):
-    _toSchema = {'info': 'Info', 'code': 'Code', 'message': 'Message'}
-    _toPy = {'Code': 'code', 'Info': 'info', 'Message': 'message'}
-    def __init__(self, code=None, info=None, message=None):
-        '''
-        code : str
-        info : ErrorInfo
-        message : str
-        '''
-        self.code = code
-        self.info = ErrorInfo.from_json(info)
-        self.message = message
-
-
-class ErrorInfo(Type):
-    _toSchema = {'macaroon': 'Macaroon', 'macaroonpath': 'MacaroonPath'}
-    _toPy = {'MacaroonPath': 'macaroonpath', 'Macaroon': 'macaroon'}
-    def __init__(self, macaroon=None, macaroonpath=None):
-        '''
-        macaroon : Macaroon
-        macaroonpath : str
-        '''
-        self.macaroon = Macaroon.from_json(macaroon)
-        self.macaroonpath = macaroonpath
-
-
-class FindActionsByNames(Type):
-    _toSchema = {'names': 'names'}
-    _toPy = {'names': 'names'}
-    def __init__(self, names=None):
-        '''
-        names : typing.Sequence[str]
-        '''
-        self.names = names
-
-
-class FindTags(Type):
-    _toSchema = {'prefixes': 'prefixes'}
-    _toPy = {'prefixes': 'prefixes'}
-    def __init__(self, prefixes=None):
-        '''
-        prefixes : typing.Sequence[str]
-        '''
-        self.prefixes = prefixes
-
-
-class FindTagsResults(Type):
-    _toSchema = {'matches': 'matches'}
-    _toPy = {'matches': 'matches'}
-    def __init__(self, matches=None):
-        '''
-        matches : typing.Sequence[~Entity]
-        '''
-        self.matches = [Entity.from_json(o) for o in matches or []]
-
-
-class Macaroon(Type):
-    _toSchema = {'id_': 'id', 'data': 'data', 'location': 'location', 'caveats': 'caveats', 'sig': 'sig'}
-    _toPy = {'id': 'id_', 'data': 'data', 'location': 'location', 'caveats': 'caveats', 'sig': 'sig'}
-    def __init__(self, caveats=None, data=None, id_=None, location=None, sig=None):
-        '''
-        caveats : typing.Sequence[~caveat]
-        data : typing.Sequence[int]
-        id_ : packet
-        location : packet
-        sig : typing.Sequence[int]
-        '''
-        self.caveats = [caveat.from_json(o) for o in caveats or []]
-        self.data = data
-        self.id_ = packet.from_json(id_)
-        self.location = packet.from_json(location)
-        self.sig = sig
-
-
-class RunParams(Type):
-    _toSchema = {'services': 'Services', 'commands': 'Commands', 'machines': 'Machines', 'units': 'Units', 'timeout': 'Timeout'}
-    _toPy = {'Services': 'services', 'Commands': 'commands', 'Units': 'units', 'Timeout': 'timeout', 'Machines': 'machines'}
-    def __init__(self, commands=None, machines=None, services=None, timeout=None, units=None):
-        '''
-        commands : str
-        machines : typing.Sequence[str]
-        services : typing.Sequence[str]
-        timeout : int
-        units : typing.Sequence[str]
-        '''
-        self.commands = commands
-        self.machines = machines
-        self.services = services
-        self.timeout = timeout
-        self.units = units
-
-
-class ServiceCharmActionsResult(Type):
-    _toSchema = {'actions': 'actions', 'error': 'error', 'servicetag': 'servicetag'}
-    _toPy = {'actions': 'actions', 'error': 'error', 'servicetag': 'servicetag'}
-    def __init__(self, actions=None, error=None, servicetag=None):
-        '''
-        actions : Actions
-        error : Error
-        servicetag : str
-        '''
-        self.actions = Actions.from_json(actions)
-        self.error = Error.from_json(error)
-        self.servicetag = servicetag
-
-
-class ServicesCharmActionsResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~ServiceCharmActionsResult]
-        '''
-        self.results = [ServiceCharmActionsResult.from_json(o) for o in results or []]
-
-
-class caveat(Type):
-    _toSchema = {'verificationid': 'verificationId', 'location': 'location', 'caveatid': 'caveatId'}
-    _toPy = {'verificationId': 'verificationid', 'location': 'location', 'caveatId': 'caveatid'}
-    def __init__(self, caveatid=None, location=None, verificationid=None):
-        '''
-        caveatid : packet
-        location : packet
-        verificationid : packet
-        '''
-        self.caveatid = packet.from_json(caveatid)
-        self.location = packet.from_json(location)
-        self.verificationid = packet.from_json(verificationid)
-
-
-class packet(Type):
-    _toSchema = {'start': 'start', 'totallen': 'totalLen', 'headerlen': 'headerLen'}
-    _toPy = {'start': 'start', 'headerLen': 'headerlen', 'totalLen': 'totallen'}
-    def __init__(self, headerlen=None, start=None, totallen=None):
-        '''
-        headerlen : int
-        start : int
-        totallen : int
-        '''
-        self.headerlen = headerlen
-        self.start = start
-        self.totallen = totallen
-
-
-class BoolResult(Type):
-    _toSchema = {'error': 'Error', 'result': 'Result'}
-    _toPy = {'Error': 'error', 'Result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : bool
-        '''
-        self.error = Error.from_json(error)
-        self.result = result
-
-
-class EntitiesWatchResult(Type):
-    _toSchema = {'entitywatcherid': 'EntityWatcherId', 'changes': 'Changes', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'EntityWatcherId': 'entitywatcherid', 'Changes': 'changes'}
-    def __init__(self, changes=None, entitywatcherid=None, error=None):
-        '''
-        changes : typing.Sequence[str]
-        entitywatcherid : str
-        error : Error
-        '''
-        self.changes = changes
-        self.entitywatcherid = entitywatcherid
-        self.error = Error.from_json(error)
-
-
-class ErrorResult(Type):
-    _toSchema = {'info': 'Info', 'code': 'Code', 'message': 'Message'}
-    _toPy = {'Code': 'code', 'Info': 'info', 'Message': 'message'}
-    def __init__(self, code=None, info=None, message=None):
-        '''
-        code : str
-        info : ErrorInfo
-        message : str
-        '''
-        self.code = code
-        self.info = ErrorInfo.from_json(info)
-        self.message = message
-
-
-class AgentGetEntitiesResult(Type):
-    _toSchema = {'containertype': 'ContainerType', 'jobs': 'Jobs', 'life': 'Life', 'error': 'Error'}
-    _toPy = {'Life': 'life', 'Error': 'error', 'ContainerType': 'containertype', 'Jobs': 'jobs'}
-    def __init__(self, containertype=None, error=None, jobs=None, life=None):
-        '''
-        containertype : str
-        error : Error
-        jobs : typing.Sequence[str]
-        life : str
-        '''
-        self.containertype = containertype
-        self.error = Error.from_json(error)
-        self.jobs = jobs
-        self.life = life
-
-
-class AgentGetEntitiesResults(Type):
-    _toSchema = {'entities': 'Entities'}
-    _toPy = {'Entities': 'entities'}
-    def __init__(self, entities=None):
-        '''
-        entities : typing.Sequence[~AgentGetEntitiesResult]
-        '''
-        self.entities = [AgentGetEntitiesResult.from_json(o) for o in entities or []]
-
-
-class EntityPassword(Type):
-    _toSchema = {'tag': 'Tag', 'password': 'Password'}
-    _toPy = {'Password': 'password', 'Tag': 'tag'}
-    def __init__(self, password=None, tag=None):
-        '''
-        password : str
-        tag : str
-        '''
-        self.password = password
-        self.tag = tag
-
-
-class EntityPasswords(Type):
-    _toSchema = {'changes': 'Changes'}
-    _toPy = {'Changes': 'changes'}
-    def __init__(self, changes=None):
-        '''
-        changes : typing.Sequence[~EntityPassword]
-        '''
-        self.changes = [EntityPassword.from_json(o) for o in changes or []]
-
-
-class ErrorResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~ErrorResult]
-        '''
-        self.results = [ErrorResult.from_json(o) for o in results or []]
-
-
-class IsMasterResult(Type):
-    _toSchema = {'master': 'Master'}
-    _toPy = {'Master': 'master'}
-    def __init__(self, master=None):
-        '''
-        master : bool
-        '''
-        self.master = master
-
-
-class ModelConfigResult(Type):
-    _toSchema = {'config': 'Config'}
-    _toPy = {'Config': 'config'}
-    def __init__(self, config=None):
-        '''
-        config : typing.Mapping[str, typing.Any]
-        '''
-        self.config = config
-
-
-class NotifyWatchResult(Type):
-    _toSchema = {'notifywatcherid': 'NotifyWatcherId', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'NotifyWatcherId': 'notifywatcherid'}
-    def __init__(self, error=None, notifywatcherid=None):
-        '''
-        error : Error
-        notifywatcherid : str
-        '''
-        self.error = Error.from_json(error)
-        self.notifywatcherid = notifywatcherid
-
-
-class StateServingInfo(Type):
-    _toSchema = {'systemidentity': 'SystemIdentity', 'caprivatekey': 'CAPrivateKey', 'sharedsecret': 'SharedSecret', 'privatekey': 'PrivateKey', 'stateport': 'StatePort', 'cert': 'Cert', 'apiport': 'APIPort'}
-    _toPy = {'StatePort': 'stateport', 'APIPort': 'apiport', 'CAPrivateKey': 'caprivatekey', 'Cert': 'cert', 'SharedSecret': 'sharedsecret', 'SystemIdentity': 'systemidentity', 'PrivateKey': 'privatekey'}
-    def __init__(self, apiport=None, caprivatekey=None, cert=None, privatekey=None, sharedsecret=None, stateport=None, systemidentity=None):
-        '''
-        apiport : int
-        caprivatekey : str
-        cert : str
-        privatekey : str
-        sharedsecret : str
-        stateport : int
-        systemidentity : str
-        '''
-        self.apiport = apiport
-        self.caprivatekey = caprivatekey
-        self.cert = cert
-        self.privatekey = privatekey
-        self.sharedsecret = sharedsecret
-        self.stateport = stateport
-        self.systemidentity = systemidentity
-
-
-class AllWatcherNextResults(Type):
-    _toSchema = {'deltas': 'Deltas'}
-    _toPy = {'Deltas': 'deltas'}
-    def __init__(self, deltas=None):
-        '''
-        deltas : typing.Sequence[~Delta]
-        '''
-        self.deltas = [Delta.from_json(o) for o in deltas or []]
-
-
-class Delta(Type):
-    _toSchema = {'removed': 'Removed'}
-    _toPy = {'Removed': 'removed'}
-    def __init__(self, removed=None):
-        '''
-        removed : bool
-        '''
-        self.removed = removed
-
-
-class AnnotationsGetResult(Type):
-    _toSchema = {'annotations': 'Annotations', 'entitytag': 'EntityTag', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'Annotations': 'annotations', 'EntityTag': 'entitytag'}
-    def __init__(self, annotations=None, entitytag=None, error=None):
-        '''
-        annotations : typing.Mapping[str, str]
-        entitytag : str
-        error : ErrorResult
-        '''
-        self.annotations = annotations
-        self.entitytag = entitytag
-        self.error = ErrorResult.from_json(error)
-
-
-class AnnotationsGetResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~AnnotationsGetResult]
-        '''
-        self.results = [AnnotationsGetResult.from_json(o) for o in results or []]
-
-
-class AnnotationsSet(Type):
-    _toSchema = {'annotations': 'Annotations'}
-    _toPy = {'Annotations': 'annotations'}
-    def __init__(self, annotations=None):
-        '''
-        annotations : typing.Sequence[~EntityAnnotations]
-        '''
-        self.annotations = [EntityAnnotations.from_json(o) for o in annotations or []]
-
-
-class EntityAnnotations(Type):
-    _toSchema = {'annotations': 'Annotations', 'entitytag': 'EntityTag'}
-    _toPy = {'Annotations': 'annotations', 'EntityTag': 'entitytag'}
-    def __init__(self, annotations=None, entitytag=None):
-        '''
-        annotations : typing.Mapping[str, str]
-        entitytag : str
-        '''
-        self.annotations = annotations
-        self.entitytag = entitytag
-
-
-class BackupsCreateArgs(Type):
-    _toSchema = {'notes': 'Notes'}
-    _toPy = {'Notes': 'notes'}
-    def __init__(self, notes=None):
-        '''
-        notes : str
-        '''
-        self.notes = notes
-
-
-class BackupsInfoArgs(Type):
-    _toSchema = {'id_': 'ID'}
-    _toPy = {'ID': 'id_'}
-    def __init__(self, id_=None):
-        '''
-        id_ : str
-        '''
-        self.id_ = id_
-
-
-class BackupsListArgs(Type):
-    _toSchema = {}
-    _toPy = {}
-    def __init__(self):
-        '''
-
-        '''
-        pass
-
-
-class BackupsListResult(Type):
-    _toSchema = {'list_': 'List'}
-    _toPy = {'List': 'list_'}
-    def __init__(self, list_=None):
-        '''
-        list_ : typing.Sequence[~BackupsMetadataResult]
-        '''
-        self.list_ = [BackupsMetadataResult.from_json(o) for o in list_ or []]
-
-
-class BackupsMetadataResult(Type):
-    _toSchema = {'finished': 'Finished', 'caprivatekey': 'CAPrivateKey', 'hostname': 'Hostname', 'size': 'Size', 'notes': 'Notes', 'model': 'Model', 'stored': 'Stored', 'checksum': 'Checksum', 'id_': 'ID', 'checksumformat': 'ChecksumFormat', 'started': 'Started', 'version': 'Version', 'cacert': 'CACert', 'machine': 'Machine'}
-    _toPy = {'ID': 'id_', 'Started': 'started', 'Version': 'version', 'Model': 'model', 'Stored': 'stored', 'Checksum': 'checksum', 'Machine': 'machine', 'Hostname': 'hostname', 'CAPrivateKey': 'caprivatekey', 'Finished': 'finished', 'ChecksumFormat': 'checksumformat', 'CACert': 'cacert', 'Size': 'size', 'Notes': 'notes'}
-    def __init__(self, cacert=None, caprivatekey=None, checksum=None, checksumformat=None, finished=None, hostname=None, id_=None, machine=None, model=None, notes=None, size=None, started=None, stored=None, version=None):
-        '''
-        cacert : str
-        caprivatekey : str
-        checksum : str
-        checksumformat : str
-        finished : str
-        hostname : str
-        id_ : str
-        machine : str
-        model : str
-        notes : str
-        size : int
-        started : str
-        stored : str
-        version : Number
-        '''
-        self.cacert = cacert
-        self.caprivatekey = caprivatekey
-        self.checksum = checksum
-        self.checksumformat = checksumformat
-        self.finished = finished
-        self.hostname = hostname
-        self.id_ = id_
-        self.machine = machine
-        self.model = model
-        self.notes = notes
-        self.size = size
-        self.started = started
-        self.stored = stored
-        self.version = Number.from_json(version)
-
-
-class BackupsRemoveArgs(Type):
-    _toSchema = {'id_': 'ID'}
-    _toPy = {'ID': 'id_'}
-    def __init__(self, id_=None):
-        '''
-        id_ : str
-        '''
-        self.id_ = id_
-
-
-class Number(Type):
-    _toSchema = {'tag': 'Tag', 'patch': 'Patch', 'major': 'Major', 'minor': 'Minor', 'build': 'Build'}
-    _toPy = {'Patch': 'patch', 'Tag': 'tag', 'Minor': 'minor', 'Build': 'build', 'Major': 'major'}
-    def __init__(self, build=None, major=None, minor=None, patch=None, tag=None):
-        '''
-        build : int
-        major : int
-        minor : int
-        patch : int
-        tag : str
-        '''
-        self.build = build
-        self.major = major
-        self.minor = minor
-        self.patch = patch
-        self.tag = tag
-
-
-class RestoreArgs(Type):
-    _toSchema = {'backupid': 'BackupId'}
-    _toPy = {'BackupId': 'backupid'}
-    def __init__(self, backupid=None):
-        '''
-        backupid : str
-        '''
-        self.backupid = backupid
-
-
-class Block(Type):
-    _toSchema = {'message': 'message', 'id_': 'id', 'type_': 'type', 'tag': 'tag'}
-    _toPy = {'message': 'message', 'id': 'id_', 'type': 'type_', 'tag': 'tag'}
-    def __init__(self, id_=None, message=None, tag=None, type_=None):
-        '''
-        id_ : str
-        message : str
-        tag : str
-        type_ : str
-        '''
-        self.id_ = id_
-        self.message = message
-        self.tag = tag
-        self.type_ = type_
-
-
-class BlockResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : Block
-        '''
-        self.error = Error.from_json(error)
-        self.result = Block.from_json(result)
-
-
-class BlockResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~BlockResult]
-        '''
-        self.results = [BlockResult.from_json(o) for o in results or []]
-
-
-class BlockSwitchParams(Type):
-    _toSchema = {'message': 'message', 'type_': 'type'}
-    _toPy = {'message': 'message', 'type': 'type_'}
-    def __init__(self, message=None, type_=None):
-        '''
-        message : str
-        type_ : str
-        '''
-        self.message = message
-        self.type_ = type_
-
-
-class CharmInfo(Type):
-    _toSchema = {'charmurl': 'CharmURL'}
-    _toPy = {'CharmURL': 'charmurl'}
-    def __init__(self, charmurl=None):
-        '''
-        charmurl : str
-        '''
-        self.charmurl = charmurl
-
-
-class CharmsList(Type):
-    _toSchema = {'names': 'Names'}
-    _toPy = {'Names': 'names'}
-    def __init__(self, names=None):
-        '''
-        names : typing.Sequence[str]
-        '''
-        self.names = names
-
-
-class CharmsListResult(Type):
-    _toSchema = {'charmurls': 'CharmURLs'}
-    _toPy = {'CharmURLs': 'charmurls'}
-    def __init__(self, charmurls=None):
-        '''
-        charmurls : typing.Sequence[str]
-        '''
-        self.charmurls = charmurls
-
-
-class IsMeteredResult(Type):
-    _toSchema = {'metered': 'Metered'}
-    _toPy = {'Metered': 'metered'}
-    def __init__(self, metered=None):
-        '''
-        metered : bool
-        '''
-        self.metered = metered
-
-
-class APIHostPortsResult(Type):
-    _toSchema = {'servers': 'Servers'}
-    _toPy = {'Servers': 'servers'}
-    def __init__(self, servers=None):
-        '''
-        servers : typing.Sequence[~HostPort]
-        '''
-        self.servers = [HostPort.from_json(o) for o in servers or []]
-
-
-class AddCharm(Type):
-    _toSchema = {'url': 'URL', 'channel': 'Channel'}
-    _toPy = {'Channel': 'channel', 'URL': 'url'}
-    def __init__(self, channel=None, url=None):
-        '''
-        channel : str
-        url : str
-        '''
-        self.channel = channel
-        self.url = url
-
-
-class AddCharmWithAuthorization(Type):
-    _toSchema = {'url': 'URL', 'charmstoremacaroon': 'CharmStoreMacaroon', 'channel': 'Channel'}
-    _toPy = {'CharmStoreMacaroon': 'charmstoremacaroon', 'Channel': 'channel', 'URL': 'url'}
-    def __init__(self, channel=None, charmstoremacaroon=None, url=None):
-        '''
-        channel : str
-        charmstoremacaroon : Macaroon
-        url : str
-        '''
-        self.channel = channel
-        self.charmstoremacaroon = Macaroon.from_json(charmstoremacaroon)
-        self.url = url
-
-
-class AddMachineParams(Type):
-    _toSchema = {'containertype': 'ContainerType', 'disks': 'Disks', 'placement': 'Placement', 'series': 'Series', 'instanceid': 'InstanceId', 'hardwarecharacteristics': 'HardwareCharacteristics', 'parentid': 'ParentId', 'constraints': 'Constraints', 'jobs': 'Jobs', 'addrs': 'Addrs', 'nonce': 'Nonce'}
-    _toPy = {'Constraints': 'constraints', 'ParentId': 'parentid', 'Addrs': 'addrs', 'Jobs': 'jobs', 'Disks': 'disks', 'HardwareCharacteristics': 'hardwarecharacteristics', 'Placement': 'placement', 'InstanceId': 'instanceid', 'ContainerType': 'containertype', 'Nonce': 'nonce', 'Series': 'series'}
-    def __init__(self, addrs=None, constraints=None, containertype=None, disks=None, hardwarecharacteristics=None, instanceid=None, jobs=None, nonce=None, parentid=None, placement=None, series=None):
-        '''
-        addrs : typing.Sequence[~Address]
-        constraints : Value
-        containertype : str
-        disks : typing.Sequence[~Constraints]
-        hardwarecharacteristics : HardwareCharacteristics
-        instanceid : str
-        jobs : typing.Sequence[str]
-        nonce : str
-        parentid : str
-        placement : Placement
-        series : str
-        '''
-        self.addrs = [Address.from_json(o) for o in addrs or []]
-        self.constraints = Value.from_json(constraints)
-        self.containertype = containertype
-        self.disks = [Constraints.from_json(o) for o in disks or []]
-        self.hardwarecharacteristics = HardwareCharacteristics.from_json(hardwarecharacteristics)
-        self.instanceid = instanceid
-        self.jobs = jobs
-        self.nonce = nonce
-        self.parentid = parentid
-        self.placement = Placement.from_json(placement)
-        self.series = series
-
-
-class AddMachines(Type):
-    _toSchema = {'machineparams': 'MachineParams'}
-    _toPy = {'MachineParams': 'machineparams'}
-    def __init__(self, machineparams=None):
-        '''
-        machineparams : typing.Sequence[~AddMachineParams]
-        '''
-        self.machineparams = [AddMachineParams.from_json(o) for o in machineparams or []]
-
-
-class AddMachinesResult(Type):
-    _toSchema = {'error': 'Error', 'machine': 'Machine'}
-    _toPy = {'Machine': 'machine', 'Error': 'error'}
-    def __init__(self, error=None, machine=None):
-        '''
-        error : Error
-        machine : str
-        '''
-        self.error = Error.from_json(error)
-        self.machine = machine
-
-
-class AddMachinesResults(Type):
-    _toSchema = {'machines': 'Machines'}
-    _toPy = {'Machines': 'machines'}
-    def __init__(self, machines=None):
-        '''
-        machines : typing.Sequence[~AddMachinesResult]
-        '''
-        self.machines = [AddMachinesResult.from_json(o) for o in machines or []]
-
-
-class Address(Type):
-    _toSchema = {'scope': 'Scope', 'spacename': 'SpaceName', 'type_': 'Type', 'value': 'Value'}
-    _toPy = {'Scope': 'scope', 'Value': 'value', 'Type': 'type_', 'SpaceName': 'spacename'}
-    def __init__(self, scope=None, spacename=None, type_=None, value=None):
-        '''
-        scope : str
-        spacename : str
-        type_ : str
-        value : str
-        '''
-        self.scope = scope
-        self.spacename = spacename
-        self.type_ = type_
-        self.value = value
-
-
-class AgentVersionResult(Type):
-    _toSchema = {'tag': 'Tag', 'patch': 'Patch', 'major': 'Major', 'minor': 'Minor', 'build': 'Build'}
-    _toPy = {'Patch': 'patch', 'Tag': 'tag', 'Minor': 'minor', 'Build': 'build', 'Major': 'major'}
-    def __init__(self, build=None, major=None, minor=None, patch=None, tag=None):
-        '''
-        build : int
-        major : int
-        minor : int
-        patch : int
-        tag : str
-        '''
-        self.build = build
-        self.major = major
-        self.minor = minor
-        self.patch = patch
-        self.tag = tag
-
-
-class AllWatcherId(Type):
-    _toSchema = {'allwatcherid': 'AllWatcherId'}
-    _toPy = {'AllWatcherId': 'allwatcherid'}
-    def __init__(self, allwatcherid=None):
-        '''
-        allwatcherid : str
-        '''
-        self.allwatcherid = allwatcherid
-
-
-class Binary(Type):
-    _toSchema = {'series': 'Series', 'number': 'Number', 'arch': 'Arch'}
-    _toPy = {'Number': 'number', 'Arch': 'arch', 'Series': 'series'}
-    def __init__(self, arch=None, number=None, series=None):
-        '''
-        arch : str
-        number : Number
-        series : str
-        '''
-        self.arch = arch
-        self.number = Number.from_json(number)
-        self.series = series
-
-
-class BundleChangesChange(Type):
-    _toSchema = {'id_': 'id', 'requires': 'requires', 'method': 'method', 'args': 'args'}
-    _toPy = {'id': 'id_', 'requires': 'requires', 'method': 'method', 'args': 'args'}
-    def __init__(self, args=None, id_=None, method=None, requires=None):
-        '''
-        args : typing.Sequence[typing.Any]
-        id_ : str
-        method : str
-        requires : typing.Sequence[str]
-        '''
-        self.args = args
-        self.id_ = id_
-        self.method = method
-        self.requires = requires
-
-
-class Constraints(Type):
-    _toSchema = {'pool': 'Pool', 'count': 'Count', 'size': 'Size'}
-    _toPy = {'Pool': 'pool', 'Count': 'count', 'Size': 'size'}
-    def __init__(self, count=None, pool=None, size=None):
-        '''
-        count : int
-        pool : str
-        size : int
-        '''
-        self.count = count
-        self.pool = pool
-        self.size = size
-
-
-class DestroyMachines(Type):
-    _toSchema = {'force': 'Force', 'machinenames': 'MachineNames'}
-    _toPy = {'Force': 'force', 'MachineNames': 'machinenames'}
-    def __init__(self, force=None, machinenames=None):
-        '''
-        force : bool
-        machinenames : typing.Sequence[str]
-        '''
-        self.force = force
-        self.machinenames = machinenames
-
-
-class DetailedStatus(Type):
-    _toSchema = {'info': 'Info', 'since': 'Since', 'kind': 'Kind', 'life': 'Life', 'version': 'Version', 'data': 'Data', 'status': 'Status'}
-    _toPy = {'Version': 'version', 'Data': 'data', 'Kind': 'kind', 'Status': 'status', 'Since': 'since', 'Life': 'life', 'Info': 'info'}
-    def __init__(self, data=None, info=None, kind=None, life=None, since=None, status=None, version=None):
-        '''
-        data : typing.Mapping[str, typing.Any]
-        info : str
-        kind : str
-        life : str
-        since : str
-        status : str
-        version : str
-        '''
-        self.data = data
-        self.info = info
-        self.kind = kind
-        self.life = life
-        self.since = since
-        self.status = status
-        self.version = version
-
-
-class EndpointStatus(Type):
-    _toSchema = {'role': 'Role', 'servicename': 'ServiceName', 'subordinate': 'Subordinate', 'name': 'Name'}
-    _toPy = {'Name': 'name', 'ServiceName': 'servicename', 'Role': 'role', 'Subordinate': 'subordinate'}
-    def __init__(self, name=None, role=None, servicename=None, subordinate=None):
-        '''
-        name : str
-        role : str
-        servicename : str
-        subordinate : bool
-        '''
-        self.name = name
-        self.role = role
-        self.servicename = servicename
-        self.subordinate = subordinate
-
-
-class EntityStatus(Type):
-    _toSchema = {'info': 'Info', 'since': 'Since', 'data': 'Data', 'status': 'Status'}
-    _toPy = {'Status': 'status', 'Since': 'since', 'Data': 'data', 'Info': 'info'}
-    def __init__(self, data=None, info=None, since=None, status=None):
-        '''
-        data : typing.Mapping[str, typing.Any]
-        info : str
-        since : str
-        status : str
-        '''
-        self.data = data
-        self.info = info
-        self.since = since
-        self.status = status
-
-
-class FindToolsParams(Type):
-    _toSchema = {'series': 'Series', 'minorversion': 'MinorVersion', 'number': 'Number', 'majorversion': 'MajorVersion', 'arch': 'Arch'}
-    _toPy = {'MinorVersion': 'minorversion', 'MajorVersion': 'majorversion', 'Series': 'series', 'Arch': 'arch', 'Number': 'number'}
-    def __init__(self, arch=None, majorversion=None, minorversion=None, number=None, series=None):
-        '''
-        arch : str
-        majorversion : int
-        minorversion : int
-        number : Number
-        series : str
-        '''
-        self.arch = arch
-        self.majorversion = majorversion
-        self.minorversion = minorversion
-        self.number = Number.from_json(number)
-        self.series = series
-
-
-class FindToolsResult(Type):
-    _toSchema = {'list_': 'List', 'error': 'Error'}
-    _toPy = {'List': 'list_', 'Error': 'error'}
-    def __init__(self, error=None, list_=None):
-        '''
-        error : Error
-        list_ : typing.Sequence[~Tools]
-        '''
-        self.error = Error.from_json(error)
-        self.list_ = [Tools.from_json(o) for o in list_ or []]
-
-
-class FullStatus(Type):
-    _toSchema = {'modelname': 'ModelName', 'availableversion': 'AvailableVersion', 'relations': 'Relations', 'machines': 'Machines', 'services': 'Services'}
-    _toPy = {'ModelName': 'modelname', 'Relations': 'relations', 'AvailableVersion': 'availableversion', 'Machines': 'machines', 'Services': 'services'}
-    def __init__(self, availableversion=None, machines=None, modelname=None, relations=None, services=None):
-        '''
-        availableversion : str
-        machines : typing.Mapping[str, ~MachineStatus]
-        modelname : str
-        relations : typing.Sequence[~RelationStatus]
-        services : typing.Mapping[str, ~ServiceStatus]
-        '''
-        self.availableversion = availableversion
-        self.machines = {k: MachineStatus.from_json(v) for k, v in (machines or dict()).items()}
-        self.modelname = modelname
-        self.relations = [RelationStatus.from_json(o) for o in relations or []]
-        self.services = {k: ServiceStatus.from_json(v) for k, v in (services or dict()).items()}
-
-
-class GetBundleChangesParams(Type):
-    _toSchema = {'yaml': 'yaml'}
-    _toPy = {'yaml': 'yaml'}
-    def __init__(self, yaml=None):
-        '''
-        yaml : str
-        '''
-        self.yaml = yaml
-
-
-class GetBundleChangesResults(Type):
-    _toSchema = {'changes': 'changes', 'errors': 'errors'}
-    _toPy = {'changes': 'changes', 'errors': 'errors'}
-    def __init__(self, changes=None, errors=None):
-        '''
-        changes : typing.Sequence[~BundleChangesChange]
-        errors : typing.Sequence[str]
-        '''
-        self.changes = [BundleChangesChange.from_json(o) for o in changes or []]
-        self.errors = errors
-
-
-class GetConstraintsResults(Type):
-    _toSchema = {'tags': 'tags', 'root_disk': 'root-disk', 'spaces': 'spaces', 'virt_type': 'virt-type', 'container': 'container', 'mem': 'mem', 'arch': 'arch', 'cpu_power': 'cpu-power', 'cpu_cores': 'cpu-cores', 'instance_type': 'instance-type'}
-    _toPy = {'spaces': 'spaces', 'instance-type': 'instance_type', 'virt-type': 'virt_type', 'container': 'container', 'cpu-cores': 'cpu_cores', 'tags': 'tags', 'cpu-power': 'cpu_power', 'mem': 'mem', 'root-disk': 'root_disk', 'arch': 'arch'}
-    def __init__(self, arch=None, container=None, cpu_cores=None, cpu_power=None, instance_type=None, mem=None, root_disk=None, spaces=None, tags=None, virt_type=None):
-        '''
-        arch : str
-        container : str
-        cpu_cores : int
-        cpu_power : int
-        instance_type : str
-        mem : int
-        root_disk : int
-        spaces : typing.Sequence[str]
-        tags : typing.Sequence[str]
-        virt_type : str
-        '''
-        self.arch = arch
-        self.container = container
-        self.cpu_cores = cpu_cores
-        self.cpu_power = cpu_power
-        self.instance_type = instance_type
-        self.mem = mem
-        self.root_disk = root_disk
-        self.spaces = spaces
-        self.tags = tags
-        self.virt_type = virt_type
-
-
-class HardwareCharacteristics(Type):
-    _toSchema = {'cpucores': 'CpuCores', 'cpupower': 'CpuPower', 'rootdisk': 'RootDisk', 'availabilityzone': 'AvailabilityZone', 'mem': 'Mem', 'tags': 'Tags', 'arch': 'Arch'}
-    _toPy = {'Tags': 'tags', 'Mem': 'mem', 'AvailabilityZone': 'availabilityzone', 'RootDisk': 'rootdisk', 'CpuCores': 'cpucores', 'CpuPower': 'cpupower', 'Arch': 'arch'}
-    def __init__(self, arch=None, availabilityzone=None, cpucores=None, cpupower=None, mem=None, rootdisk=None, tags=None):
-        '''
-        arch : str
-        availabilityzone : str
-        cpucores : int
-        cpupower : int
-        mem : int
-        rootdisk : int
-        tags : typing.Sequence[str]
-        '''
-        self.arch = arch
-        self.availabilityzone = availabilityzone
-        self.cpucores = cpucores
-        self.cpupower = cpupower
-        self.mem = mem
-        self.rootdisk = rootdisk
-        self.tags = tags
-
-
-class HostPort(Type):
-    _toSchema = {'port': 'Port', 'address': 'Address'}
-    _toPy = {'Address': 'address', 'Port': 'port'}
-    def __init__(self, address=None, port=None):
-        '''
-        address : Address
-        port : int
-        '''
-        self.address = Address.from_json(address)
-        self.port = port
-
-
-class MachineStatus(Type):
-    _toSchema = {'containers': 'Containers', 'hasvote': 'HasVote', 'agentstatus': 'AgentStatus', 'id_': 'Id', 'hardware': 'Hardware', 'series': 'Series', 'instanceid': 'InstanceId', 'instancestatus': 'InstanceStatus', 'dnsname': 'DNSName', 'wantsvote': 'WantsVote', 'jobs': 'Jobs'}
-    _toPy = {'Id': 'id_', 'HasVote': 'hasvote', 'Jobs': 'jobs', 'DNSName': 'dnsname', 'WantsVote': 'wantsvote', 'Containers': 'containers', 'Hardware': 'hardware', 'AgentStatus': 'agentstatus', 'Series': 'series', 'InstanceId': 'instanceid', 'InstanceStatus': 'instancestatus'}
-    def __init__(self, agentstatus=None, containers=None, dnsname=None, hardware=None, hasvote=None, id_=None, instanceid=None, instancestatus=None, jobs=None, series=None, wantsvote=None):
-        '''
-        agentstatus : DetailedStatus
-        containers : typing.Mapping[str, ~MachineStatus]
-        dnsname : str
-        hardware : str
-        hasvote : bool
-        id_ : str
-        instanceid : str
-        instancestatus : DetailedStatus
-        jobs : typing.Sequence[str]
-        series : str
-        wantsvote : bool
-        '''
-        self.agentstatus = DetailedStatus.from_json(agentstatus)
-        self.containers = {k: MachineStatus.from_json(v) for k, v in (containers or dict()).items()}
-        self.dnsname = dnsname
-        self.hardware = hardware
-        self.hasvote = hasvote
-        self.id_ = id_
-        self.instanceid = instanceid
-        self.instancestatus = DetailedStatus.from_json(instancestatus)
-        self.jobs = jobs
-        self.series = series
-        self.wantsvote = wantsvote
-
-
-class MeterStatus(Type):
-    _toSchema = {'message': 'Message', 'color': 'Color'}
-    _toPy = {'Color': 'color', 'Message': 'message'}
-    def __init__(self, color=None, message=None):
-        '''
-        color : str
-        message : str
-        '''
-        self.color = color
-        self.message = message
-
-
-class ModelConfigResults(Type):
-    _toSchema = {'config': 'Config'}
-    _toPy = {'Config': 'config'}
-    def __init__(self, config=None):
-        '''
-        config : typing.Mapping[str, typing.Any]
-        '''
-        self.config = config
-
-
-class ModelInfo(Type):
-    _toSchema = {'providertype': 'ProviderType', 'life': 'Life', 'name': 'Name', 'uuid': 'UUID', 'defaultseries': 'DefaultSeries', 'serveruuid': 'ServerUUID', 'users': 'Users', 'ownertag': 'OwnerTag', 'status': 'Status'}
-    _toPy = {'Name': 'name', 'UUID': 'uuid', 'ProviderType': 'providertype', 'Status': 'status', 'Life': 'life', 'Users': 'users', 'OwnerTag': 'ownertag', 'DefaultSeries': 'defaultseries', 'ServerUUID': 'serveruuid'}
-    def __init__(self, defaultseries=None, life=None, name=None, ownertag=None, providertype=None, serveruuid=None, status=None, uuid=None, users=None):
-        '''
-        defaultseries : str
-        life : str
-        name : str
-        ownertag : str
-        providertype : str
-        serveruuid : str
-        status : EntityStatus
-        uuid : str
-        users : typing.Sequence[~ModelUserInfo]
-        '''
-        self.defaultseries = defaultseries
-        self.life = life
-        self.name = name
-        self.ownertag = ownertag
-        self.providertype = providertype
-        self.serveruuid = serveruuid
-        self.status = EntityStatus.from_json(status)
-        self.uuid = uuid
-        self.users = [ModelUserInfo.from_json(o) for o in users or []]
-
-
-class ModelSet(Type):
-    _toSchema = {'config': 'Config'}
-    _toPy = {'Config': 'config'}
-    def __init__(self, config=None):
-        '''
-        config : typing.Mapping[str, typing.Any]
-        '''
-        self.config = config
-
-
-class ModelUnset(Type):
-    _toSchema = {'keys': 'Keys'}
-    _toPy = {'Keys': 'keys'}
-    def __init__(self, keys=None):
-        '''
-        keys : typing.Sequence[str]
-        '''
-        self.keys = keys
-
-
-class ModelUserInfo(Type):
-    _toSchema = {'access': 'access', 'displayname': 'displayname', 'user': 'user', 'lastconnection': 'lastconnection'}
-    _toPy = {'access': 'access', 'displayname': 'displayname', 'user': 'user', 'lastconnection': 'lastconnection'}
-    def __init__(self, access=None, displayname=None, lastconnection=None, user=None):
-        '''
-        access : str
-        displayname : str
-        lastconnection : str
-        user : str
-        '''
-        self.access = access
-        self.displayname = displayname
-        self.lastconnection = lastconnection
-        self.user = user
-
-
-class ModelUserInfoResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : ModelUserInfo
-        '''
-        self.error = Error.from_json(error)
-        self.result = ModelUserInfo.from_json(result)
-
-
-class ModelUserInfoResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~ModelUserInfoResult]
-        '''
-        self.results = [ModelUserInfoResult.from_json(o) for o in results or []]
-
-
-class Placement(Type):
-    _toSchema = {'scope': 'Scope', 'directive': 'Directive'}
-    _toPy = {'Scope': 'scope', 'Directive': 'directive'}
-    def __init__(self, directive=None, scope=None):
-        '''
-        directive : str
-        scope : str
-        '''
-        self.directive = directive
-        self.scope = scope
-
-
-class PrivateAddress(Type):
-    _toSchema = {'target': 'Target'}
-    _toPy = {'Target': 'target'}
-    def __init__(self, target=None):
-        '''
-        target : str
-        '''
-        self.target = target
-
-
-class PrivateAddressResults(Type):
-    _toSchema = {'privateaddress': 'PrivateAddress'}
-    _toPy = {'PrivateAddress': 'privateaddress'}
-    def __init__(self, privateaddress=None):
-        '''
-        privateaddress : str
-        '''
-        self.privateaddress = privateaddress
-
-
-class ProvisioningScriptParams(Type):
-    _toSchema = {'nonce': 'Nonce', 'machineid': 'MachineId', 'datadir': 'DataDir', 'disablepackagecommands': 'DisablePackageCommands'}
-    _toPy = {'MachineId': 'machineid', 'DisablePackageCommands': 'disablepackagecommands', 'Nonce': 'nonce', 'DataDir': 'datadir'}
-    def __init__(self, datadir=None, disablepackagecommands=None, machineid=None, nonce=None):
-        '''
-        datadir : str
-        disablepackagecommands : bool
-        machineid : str
-        nonce : str
-        '''
-        self.datadir = datadir
-        self.disablepackagecommands = disablepackagecommands
-        self.machineid = machineid
-        self.nonce = nonce
-
-
-class ProvisioningScriptResult(Type):
-    _toSchema = {'script': 'Script'}
-    _toPy = {'Script': 'script'}
-    def __init__(self, script=None):
-        '''
-        script : str
-        '''
-        self.script = script
-
-
-class PublicAddress(Type):
-    _toSchema = {'target': 'Target'}
-    _toPy = {'Target': 'target'}
-    def __init__(self, target=None):
-        '''
-        target : str
-        '''
-        self.target = target
-
-
-class PublicAddressResults(Type):
-    _toSchema = {'publicaddress': 'PublicAddress'}
-    _toPy = {'PublicAddress': 'publicaddress'}
-    def __init__(self, publicaddress=None):
-        '''
-        publicaddress : str
-        '''
-        self.publicaddress = publicaddress
-
-
-class RelationStatus(Type):
-    _toSchema = {'scope': 'Scope', 'interface': 'Interface', 'id_': 'Id', 'key': 'Key', 'endpoints': 'Endpoints'}
-    _toPy = {'Id': 'id_', 'Interface': 'interface', 'Scope': 'scope', 'Endpoints': 'endpoints', 'Key': 'key'}
-    def __init__(self, endpoints=None, id_=None, interface=None, key=None, scope=None):
-        '''
-        endpoints : typing.Sequence[~EndpointStatus]
-        id_ : int
-        interface : str
-        key : str
-        scope : str
-        '''
-        self.endpoints = [EndpointStatus.from_json(o) for o in endpoints or []]
-        self.id_ = id_
-        self.interface = interface
-        self.key = key
-        self.scope = scope
-
-
-class ResolveCharmResult(Type):
-    _toSchema = {'url': 'URL', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'URL': 'url'}
-    def __init__(self, error=None, url=None):
-        '''
-        error : str
-        url : URL
-        '''
-        self.error = error
-        self.url = URL.from_json(url)
-
-
-class ResolveCharmResults(Type):
-    _toSchema = {'urls': 'URLs'}
-    _toPy = {'URLs': 'urls'}
-    def __init__(self, urls=None):
-        '''
-        urls : typing.Sequence[~ResolveCharmResult]
-        '''
-        self.urls = [ResolveCharmResult.from_json(o) for o in urls or []]
-
-
-class ResolveCharms(Type):
-    _toSchema = {'references': 'References'}
-    _toPy = {'References': 'references'}
-    def __init__(self, references=None):
-        '''
-        references : typing.Sequence[~URL]
-        '''
-        self.references = [URL.from_json(o) for o in references or []]
-
-
-class Resolved(Type):
-    _toSchema = {'unitname': 'UnitName', 'retry': 'Retry'}
-    _toPy = {'Retry': 'retry', 'UnitName': 'unitname'}
-    def __init__(self, retry=None, unitname=None):
-        '''
-        retry : bool
-        unitname : str
-        '''
-        self.retry = retry
-        self.unitname = unitname
-
-
-class ServiceStatus(Type):
-    _toSchema = {'canupgradeto': 'CanUpgradeTo', 'meterstatuses': 'MeterStatuses', 'exposed': 'Exposed', 'life': 'Life', 'units': 'Units', 'charm': 'Charm', 'relations': 'Relations', 'subordinateto': 'SubordinateTo', 'status': 'Status'}
-    _toPy = {'CanUpgradeTo': 'canupgradeto', 'Relations': 'relations', 'MeterStatuses': 'meterstatuses', 'SubordinateTo': 'subordinateto', 'Status': 'status', 'Charm': 'charm', 'Exposed': 'exposed', 'Units': 'units', 'Life': 'life'}
-    def __init__(self, canupgradeto=None, charm=None, exposed=None, life=None, meterstatuses=None, relations=None, status=None, subordinateto=None, units=None):
-        '''
-        canupgradeto : str
-        charm : str
-        exposed : bool
-        life : str
-        meterstatuses : typing.Mapping[str, ~MeterStatus]
-        relations : typing.Sequence[str]
-        status : DetailedStatus
-        subordinateto : typing.Sequence[str]
-        units : typing.Mapping[str, ~UnitStatus]
-        '''
-        self.canupgradeto = canupgradeto
-        self.charm = charm
-        self.exposed = exposed
-        self.life = life
-        self.meterstatuses = {k: MeterStatus.from_json(v) for k, v in (meterstatuses or dict()).items()}
-        self.relations = relations
-        self.status = DetailedStatus.from_json(status)
-        self.subordinateto = subordinateto
-        self.units = {k: UnitStatus.from_json(v) for k, v in (units or dict()).items()}
-
-
-class SetConstraints(Type):
-    _toSchema = {'servicename': 'ServiceName', 'constraints': 'Constraints'}
-    _toPy = {'Constraints': 'constraints', 'ServiceName': 'servicename'}
-    def __init__(self, constraints=None, servicename=None):
-        '''
-        constraints : Value
-        servicename : str
-        '''
-        self.constraints = Value.from_json(constraints)
-        self.servicename = servicename
-
-
-class SetModelAgentVersion(Type):
-    _toSchema = {'tag': 'Tag', 'patch': 'Patch', 'major': 'Major', 'minor': 'Minor', 'build': 'Build'}
-    _toPy = {'Patch': 'patch', 'Tag': 'tag', 'Minor': 'minor', 'Build': 'build', 'Major': 'major'}
-    def __init__(self, build=None, major=None, minor=None, patch=None, tag=None):
-        '''
-        build : int
-        major : int
-        minor : int
-        patch : int
-        tag : str
-        '''
-        self.build = build
-        self.major = major
-        self.minor = minor
-        self.patch = patch
-        self.tag = tag
-
-
-class StatusHistoryArgs(Type):
-    _toSchema = {'kind': 'Kind', 'name': 'Name', 'size': 'Size'}
-    _toPy = {'Name': 'name', 'Size': 'size', 'Kind': 'kind'}
-    def __init__(self, kind=None, name=None, size=None):
-        '''
-        kind : str
-        name : str
-        size : int
-        '''
-        self.kind = kind
-        self.name = name
-        self.size = size
-
-
-class StatusHistoryResults(Type):
-    _toSchema = {'statuses': 'Statuses'}
-    _toPy = {'Statuses': 'statuses'}
-    def __init__(self, statuses=None):
-        '''
-        statuses : typing.Sequence[~DetailedStatus]
-        '''
-        self.statuses = [DetailedStatus.from_json(o) for o in statuses or []]
-
-
-class StatusParams(Type):
-    _toSchema = {'patterns': 'Patterns'}
-    _toPy = {'Patterns': 'patterns'}
-    def __init__(self, patterns=None):
-        '''
-        patterns : typing.Sequence[str]
-        '''
-        self.patterns = patterns
-
-
-class Tools(Type):
-    _toSchema = {'url': 'url', 'size': 'size', 'sha256': 'sha256', 'version': 'version'}
-    _toPy = {'url': 'url', 'size': 'size', 'sha256': 'sha256', 'version': 'version'}
-    def __init__(self, sha256=None, size=None, url=None, version=None):
-        '''
-        sha256 : str
-        size : int
-        url : str
-        version : Binary
-        '''
-        self.sha256 = sha256
-        self.size = size
-        self.url = url
-        self.version = Binary.from_json(version)
-
-
-class URL(Type):
-    _toSchema = {'series': 'Series', 'name': 'Name', 'channel': 'Channel', 'revision': 'Revision', 'schema': 'Schema', 'user': 'User'}
-    _toPy = {'Name': 'name', 'Revision': 'revision', 'Channel': 'channel', 'Schema': 'schema', 'User': 'user', 'Series': 'series'}
-    def __init__(self, channel=None, name=None, revision=None, schema=None, series=None, user=None):
-        '''
-        channel : str
-        name : str
-        revision : int
-        schema : str
-        series : str
-        user : str
-        '''
-        self.channel = channel
-        self.name = name
-        self.revision = revision
-        self.schema = schema
-        self.series = series
-        self.user = user
-
-
-class UnitStatus(Type):
-    _toSchema = {'agentstatus': 'AgentStatus', 'subordinates': 'Subordinates', 'charm': 'Charm', 'openedports': 'OpenedPorts', 'workloadstatus': 'WorkloadStatus', 'publicaddress': 'PublicAddress', 'machine': 'Machine'}
-    _toPy = {'WorkloadStatus': 'workloadstatus', 'Machine': 'machine', 'PublicAddress': 'publicaddress', 'OpenedPorts': 'openedports', 'Subordinates': 'subordinates', 'AgentStatus': 'agentstatus', 'Charm': 'charm'}
-    def __init__(self, agentstatus=None, charm=None, machine=None, openedports=None, publicaddress=None, subordinates=None, workloadstatus=None):
-        '''
-        agentstatus : DetailedStatus
-        charm : str
-        machine : str
-        openedports : typing.Sequence[str]
-        publicaddress : str
-        subordinates : typing.Mapping[str, ~UnitStatus]
-        workloadstatus : DetailedStatus
-        '''
-        self.agentstatus = DetailedStatus.from_json(agentstatus)
-        self.charm = charm
-        self.machine = machine
-        self.openedports = openedports
-        self.publicaddress = publicaddress
-        self.subordinates = {k: UnitStatus.from_json(v) for k, v in (subordinates or dict()).items()}
-        self.workloadstatus = DetailedStatus.from_json(workloadstatus)
-
-
-class Value(Type):
-    _toSchema = {'tags': 'tags', 'root_disk': 'root-disk', 'spaces': 'spaces', 'virt_type': 'virt-type', 'container': 'container', 'mem': 'mem', 'arch': 'arch', 'cpu_power': 'cpu-power', 'cpu_cores': 'cpu-cores', 'instance_type': 'instance-type'}
-    _toPy = {'spaces': 'spaces', 'instance-type': 'instance_type', 'virt-type': 'virt_type', 'container': 'container', 'cpu-cores': 'cpu_cores', 'tags': 'tags', 'cpu-power': 'cpu_power', 'mem': 'mem', 'root-disk': 'root_disk', 'arch': 'arch'}
-    def __init__(self, arch=None, container=None, cpu_cores=None, cpu_power=None, instance_type=None, mem=None, root_disk=None, spaces=None, tags=None, virt_type=None):
-        '''
-        arch : str
-        container : str
-        cpu_cores : int
-        cpu_power : int
-        instance_type : str
-        mem : int
-        root_disk : int
-        spaces : typing.Sequence[str]
-        tags : typing.Sequence[str]
-        virt_type : str
-        '''
-        self.arch = arch
-        self.container = container
-        self.cpu_cores = cpu_cores
-        self.cpu_power = cpu_power
-        self.instance_type = instance_type
-        self.mem = mem
-        self.root_disk = root_disk
-        self.spaces = spaces
-        self.tags = tags
-        self.virt_type = virt_type
-
-
-class DestroyControllerArgs(Type):
-    _toSchema = {'destroy_models': 'destroy-models'}
-    _toPy = {'destroy-models': 'destroy_models'}
-    def __init__(self, destroy_models=None):
-        '''
-        destroy_models : bool
-        '''
-        self.destroy_models = destroy_models
-
-
-class InitiateModelMigrationArgs(Type):
-    _toSchema = {'specs': 'specs'}
-    _toPy = {'specs': 'specs'}
-    def __init__(self, specs=None):
-        '''
-        specs : typing.Sequence[~ModelMigrationSpec]
-        '''
-        self.specs = [ModelMigrationSpec.from_json(o) for o in specs or []]
-
-
-class InitiateModelMigrationResult(Type):
-    _toSchema = {'model_tag': 'model-tag', 'id_': 'id', 'error': 'error'}
-    _toPy = {'model-tag': 'model_tag', 'id': 'id_', 'error': 'error'}
-    def __init__(self, error=None, id_=None, model_tag=None):
-        '''
-        error : Error
-        id_ : str
-        model_tag : str
-        '''
-        self.error = Error.from_json(error)
-        self.id_ = id_
-        self.model_tag = model_tag
-
-
-class InitiateModelMigrationResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~InitiateModelMigrationResult]
-        '''
-        self.results = [InitiateModelMigrationResult.from_json(o) for o in results or []]
-
-
-class Model(Type):
-    _toSchema = {'uuid': 'UUID', 'name': 'Name', 'ownertag': 'OwnerTag'}
-    _toPy = {'Name': 'name', 'OwnerTag': 'ownertag', 'UUID': 'uuid'}
-    def __init__(self, name=None, ownertag=None, uuid=None):
-        '''
-        name : str
-        ownertag : str
-        uuid : str
-        '''
-        self.name = name
-        self.ownertag = ownertag
-        self.uuid = uuid
-
-
-class ModelBlockInfo(Type):
-    _toSchema = {'blocks': 'blocks', 'owner_tag': 'owner-tag', 'name': 'name', 'model_uuid': 'model-uuid'}
-    _toPy = {'blocks': 'blocks', 'owner-tag': 'owner_tag', 'name': 'name', 'model-uuid': 'model_uuid'}
-    def __init__(self, blocks=None, model_uuid=None, name=None, owner_tag=None):
-        '''
-        blocks : typing.Sequence[str]
-        model_uuid : str
-        name : str
-        owner_tag : str
-        '''
-        self.blocks = blocks
-        self.model_uuid = model_uuid
-        self.name = name
-        self.owner_tag = owner_tag
-
-
-class ModelBlockInfoList(Type):
-    _toSchema = {'models': 'models'}
-    _toPy = {'models': 'models'}
-    def __init__(self, models=None):
-        '''
-        models : typing.Sequence[~ModelBlockInfo]
-        '''
-        self.models = [ModelBlockInfo.from_json(o) for o in models or []]
-
-
-class ModelMigrationSpec(Type):
-    _toSchema = {'model_tag': 'model-tag', 'target_info': 'target-info'}
-    _toPy = {'model-tag': 'model_tag', 'target-info': 'target_info'}
-    def __init__(self, model_tag=None, target_info=None):
-        '''
-        model_tag : str
-        target_info : ModelMigrationTargetInfo
-        '''
-        self.model_tag = model_tag
-        self.target_info = ModelMigrationTargetInfo.from_json(target_info)
-
-
-class ModelMigrationTargetInfo(Type):
-    _toSchema = {'ca_cert': 'ca-cert', 'controller_tag': 'controller-tag', 'auth_tag': 'auth-tag', 'addrs': 'addrs', 'password': 'password'}
-    _toPy = {'auth-tag': 'auth_tag', 'password': 'password', 'ca-cert': 'ca_cert', 'addrs': 'addrs', 'controller-tag': 'controller_tag'}
-    def __init__(self, addrs=None, auth_tag=None, ca_cert=None, controller_tag=None, password=None):
-        '''
-        addrs : typing.Sequence[str]
-        auth_tag : str
-        ca_cert : str
-        controller_tag : str
-        password : str
-        '''
-        self.addrs = addrs
-        self.auth_tag = auth_tag
-        self.ca_cert = ca_cert
-        self.controller_tag = controller_tag
-        self.password = password
-
-
-class ModelStatus(Type):
-    _toSchema = {'hosted_machine_count': 'hosted-machine-count', 'model_tag': 'model-tag', 'service_count': 'service-count', 'life': 'life', 'owner_tag': 'owner-tag'}
-    _toPy = {'life': 'life', 'model-tag': 'model_tag', 'owner-tag': 'owner_tag', 'hosted-machine-count': 'hosted_machine_count', 'service-count': 'service_count'}
-    def __init__(self, hosted_machine_count=None, life=None, model_tag=None, owner_tag=None, service_count=None):
-        '''
-        hosted_machine_count : int
-        life : str
-        model_tag : str
-        owner_tag : str
-        service_count : int
-        '''
-        self.hosted_machine_count = hosted_machine_count
-        self.life = life
-        self.model_tag = model_tag
-        self.owner_tag = owner_tag
-        self.service_count = service_count
-
-
-class ModelStatusResults(Type):
-    _toSchema = {'models': 'models'}
-    _toPy = {'models': 'models'}
-    def __init__(self, models=None):
-        '''
-        models : typing.Sequence[~ModelStatus]
-        '''
-        self.models = [ModelStatus.from_json(o) for o in models or []]
-
-
-class RemoveBlocksArgs(Type):
-    _toSchema = {'all_': 'all'}
-    _toPy = {'all': 'all_'}
-    def __init__(self, all_=None):
-        '''
-        all_ : bool
-        '''
-        self.all_ = all_
-
-
-class UserModel(Type):
-    _toSchema = {'lastconnection': 'LastConnection', 'model': 'Model'}
-    _toPy = {'Model': 'model', 'LastConnection': 'lastconnection'}
-    def __init__(self, lastconnection=None, model=None):
-        '''
-        lastconnection : str
-        model : Model
-        '''
-        self.lastconnection = lastconnection
-        self.model = Model.from_json(model)
-
-
-class UserModelList(Type):
-    _toSchema = {'usermodels': 'UserModels'}
-    _toPy = {'UserModels': 'usermodels'}
-    def __init__(self, usermodels=None):
-        '''
-        usermodels : typing.Sequence[~UserModel]
-        '''
-        self.usermodels = [UserModel.from_json(o) for o in usermodels or []]
-
-
-class BytesResult(Type):
-    _toSchema = {'result': 'Result'}
-    _toPy = {'Result': 'result'}
-    def __init__(self, result=None):
-        '''
-        result : typing.Sequence[int]
-        '''
-        self.result = result
-
-
-class DeployerConnectionValues(Type):
-    _toSchema = {'apiaddresses': 'APIAddresses', 'stateaddresses': 'StateAddresses'}
-    _toPy = {'APIAddresses': 'apiaddresses', 'StateAddresses': 'stateaddresses'}
-    def __init__(self, apiaddresses=None, stateaddresses=None):
-        '''
-        apiaddresses : typing.Sequence[str]
-        stateaddresses : typing.Sequence[str]
-        '''
-        self.apiaddresses = apiaddresses
-        self.stateaddresses = stateaddresses
-
-
-class LifeResult(Type):
-    _toSchema = {'life': 'Life', 'error': 'Error'}
-    _toPy = {'Life': 'life', 'Error': 'error'}
-    def __init__(self, error=None, life=None):
-        '''
-        error : Error
-        life : str
-        '''
-        self.error = Error.from_json(error)
-        self.life = life
-
-
-class LifeResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~LifeResult]
-        '''
-        self.results = [LifeResult.from_json(o) for o in results or []]
-
-
-class StringResult(Type):
-    _toSchema = {'error': 'Error', 'result': 'Result'}
-    _toPy = {'Error': 'error', 'Result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : str
-        '''
-        self.error = Error.from_json(error)
-        self.result = result
-
-
-class StringsResult(Type):
-    _toSchema = {'error': 'Error', 'result': 'Result'}
-    _toPy = {'Error': 'error', 'Result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : typing.Sequence[str]
-        '''
-        self.error = Error.from_json(error)
-        self.result = result
-
-
-class StringsWatchResult(Type):
-    _toSchema = {'changes': 'Changes', 'error': 'Error', 'stringswatcherid': 'StringsWatcherId'}
-    _toPy = {'Error': 'error', 'StringsWatcherId': 'stringswatcherid', 'Changes': 'changes'}
-    def __init__(self, changes=None, error=None, stringswatcherid=None):
-        '''
-        changes : typing.Sequence[str]
-        error : Error
-        stringswatcherid : str
-        '''
-        self.changes = changes
-        self.error = Error.from_json(error)
-        self.stringswatcherid = stringswatcherid
-
-
-class StringsWatchResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~StringsWatchResult]
-        '''
-        self.results = [StringsWatchResult.from_json(o) for o in results or []]
-
-
-class AddSubnetParams(Type):
-    _toSchema = {'subnetproviderid': 'SubnetProviderId', 'zones': 'Zones', 'subnettag': 'SubnetTag', 'spacetag': 'SpaceTag'}
-    _toPy = {'SubnetProviderId': 'subnetproviderid', 'SubnetTag': 'subnettag', 'SpaceTag': 'spacetag', 'Zones': 'zones'}
-    def __init__(self, spacetag=None, subnetproviderid=None, subnettag=None, zones=None):
-        '''
-        spacetag : str
-        subnetproviderid : str
-        subnettag : str
-        zones : typing.Sequence[str]
-        '''
-        self.spacetag = spacetag
-        self.subnetproviderid = subnetproviderid
-        self.subnettag = subnettag
-        self.zones = zones
-
-
-class AddSubnetsParams(Type):
-    _toSchema = {'subnets': 'Subnets'}
-    _toPy = {'Subnets': 'subnets'}
-    def __init__(self, subnets=None):
-        '''
-        subnets : typing.Sequence[~AddSubnetParams]
-        '''
-        self.subnets = [AddSubnetParams.from_json(o) for o in subnets or []]
-
-
-class CreateSpaceParams(Type):
-    _toSchema = {'public': 'Public', 'providerid': 'ProviderId', 'spacetag': 'SpaceTag', 'subnettags': 'SubnetTags'}
-    _toPy = {'Public': 'public', 'SubnetTags': 'subnettags', 'ProviderId': 'providerid', 'SpaceTag': 'spacetag'}
-    def __init__(self, providerid=None, public=None, spacetag=None, subnettags=None):
-        '''
-        providerid : str
-        public : bool
-        spacetag : str
-        subnettags : typing.Sequence[str]
-        '''
-        self.providerid = providerid
-        self.public = public
-        self.spacetag = spacetag
-        self.subnettags = subnettags
-
-
-class CreateSpacesParams(Type):
-    _toSchema = {'spaces': 'Spaces'}
-    _toPy = {'Spaces': 'spaces'}
-    def __init__(self, spaces=None):
-        '''
-        spaces : typing.Sequence[~CreateSpaceParams]
-        '''
-        self.spaces = [CreateSpaceParams.from_json(o) for o in spaces or []]
-
-
-class DiscoverSpacesResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~ProviderSpace]
-        '''
-        self.results = [ProviderSpace.from_json(o) for o in results or []]
-
-
-class ListSubnetsResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~Subnet]
-        '''
-        self.results = [Subnet.from_json(o) for o in results or []]
-
-
-class ProviderSpace(Type):
-    _toSchema = {'providerid': 'ProviderId', 'name': 'Name', 'error': 'Error', 'subnets': 'Subnets'}
-    _toPy = {'Name': 'name', 'Subnets': 'subnets', 'Error': 'error', 'ProviderId': 'providerid'}
-    def __init__(self, error=None, name=None, providerid=None, subnets=None):
-        '''
-        error : Error
-        name : str
-        providerid : str
-        subnets : typing.Sequence[~Subnet]
-        '''
-        self.error = Error.from_json(error)
-        self.name = name
-        self.providerid = providerid
-        self.subnets = [Subnet.from_json(o) for o in subnets or []]
-
-
-class Subnet(Type):
-    _toSchema = {'providerid': 'ProviderId', 'cidr': 'CIDR', 'life': 'Life', 'staticrangehighip': 'StaticRangeHighIP', 'zones': 'Zones', 'vlantag': 'VLANTag', 'staticrangelowip': 'StaticRangeLowIP', 'spacetag': 'SpaceTag', 'status': 'Status'}
-    _toPy = {'StaticRangeHighIP': 'staticrangehighip', 'Zones': 'zones', 'StaticRangeLowIP': 'staticrangelowip', 'CIDR': 'cidr', 'VLANTag': 'vlantag', 'Status': 'status', 'Life': 'life', 'ProviderId': 'providerid', 'SpaceTag': 'spacetag'}
-    def __init__(self, cidr=None, life=None, providerid=None, spacetag=None, staticrangehighip=None, staticrangelowip=None, status=None, vlantag=None, zones=None):
-        '''
-        cidr : str
-        life : str
-        providerid : str
-        spacetag : str
-        staticrangehighip : typing.Sequence[int]
-        staticrangelowip : typing.Sequence[int]
-        status : str
-        vlantag : int
-        zones : typing.Sequence[str]
-        '''
-        self.cidr = cidr
-        self.life = life
-        self.providerid = providerid
-        self.spacetag = spacetag
-        self.staticrangehighip = staticrangehighip
-        self.staticrangelowip = staticrangelowip
-        self.status = status
-        self.vlantag = vlantag
-        self.zones = zones
-
-
-class SubnetsFilters(Type):
-    _toSchema = {'spacetag': 'SpaceTag', 'zone': 'Zone'}
-    _toPy = {'Zone': 'zone', 'SpaceTag': 'spacetag'}
-    def __init__(self, spacetag=None, zone=None):
-        '''
-        spacetag : str
-        zone : str
-        '''
-        self.spacetag = spacetag
-        self.zone = zone
-
-
-class BlockDevice(Type):
-    _toSchema = {'hardwareid': 'HardwareId', 'inuse': 'InUse', 'size': 'Size', 'uuid': 'UUID', 'filesystemtype': 'FilesystemType', 'mountpoint': 'MountPoint', 'label': 'Label', 'busaddress': 'BusAddress', 'devicename': 'DeviceName', 'devicelinks': 'DeviceLinks'}
-    _toPy = {'FilesystemType': 'filesystemtype', 'DeviceLinks': 'devicelinks', 'Label': 'label', 'InUse': 'inuse', 'MountPoint': 'mountpoint', 'DeviceName': 'devicename', 'UUID': 'uuid', 'Size': 'size', 'HardwareId': 'hardwareid', 'BusAddress': 'busaddress'}
-    def __init__(self, busaddress=None, devicelinks=None, devicename=None, filesystemtype=None, hardwareid=None, inuse=None, label=None, mountpoint=None, size=None, uuid=None):
-        '''
-        busaddress : str
-        devicelinks : typing.Sequence[str]
-        devicename : str
-        filesystemtype : str
-        hardwareid : str
-        inuse : bool
-        label : str
-        mountpoint : str
-        size : int
-        uuid : str
-        '''
-        self.busaddress = busaddress
-        self.devicelinks = devicelinks
-        self.devicename = devicename
-        self.filesystemtype = filesystemtype
-        self.hardwareid = hardwareid
-        self.inuse = inuse
-        self.label = label
-        self.mountpoint = mountpoint
-        self.size = size
-        self.uuid = uuid
-
-
-class MachineBlockDevices(Type):
-    _toSchema = {'blockdevices': 'blockdevices', 'machine': 'machine'}
-    _toPy = {'blockdevices': 'blockdevices', 'machine': 'machine'}
-    def __init__(self, blockdevices=None, machine=None):
-        '''
-        blockdevices : typing.Sequence[~BlockDevice]
-        machine : str
-        '''
-        self.blockdevices = [BlockDevice.from_json(o) for o in blockdevices or []]
-        self.machine = machine
-
-
-class SetMachineBlockDevices(Type):
-    _toSchema = {'machineblockdevices': 'machineblockdevices'}
-    _toPy = {'machineblockdevices': 'machineblockdevices'}
-    def __init__(self, machineblockdevices=None):
-        '''
-        machineblockdevices : typing.Sequence[~MachineBlockDevices]
-        '''
-        self.machineblockdevices = [MachineBlockDevices.from_json(o) for o in machineblockdevices or []]
-
-
-class MachineStorageId(Type):
-    _toSchema = {'attachmenttag': 'attachmenttag', 'machinetag': 'machinetag'}
-    _toPy = {'attachmenttag': 'attachmenttag', 'machinetag': 'machinetag'}
-    def __init__(self, attachmenttag=None, machinetag=None):
-        '''
-        attachmenttag : str
-        machinetag : str
-        '''
-        self.attachmenttag = attachmenttag
-        self.machinetag = machinetag
-
-
-class MachineStorageIdsWatchResult(Type):
-    _toSchema = {'machinestorageidswatcherid': 'MachineStorageIdsWatcherId', 'changes': 'Changes', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'Changes': 'changes', 'MachineStorageIdsWatcherId': 'machinestorageidswatcherid'}
-    def __init__(self, changes=None, error=None, machinestorageidswatcherid=None):
-        '''
-        changes : typing.Sequence[~MachineStorageId]
-        error : Error
-        machinestorageidswatcherid : str
-        '''
-        self.changes = [MachineStorageId.from_json(o) for o in changes or []]
-        self.error = Error.from_json(error)
-        self.machinestorageidswatcherid = machinestorageidswatcherid
-
-
-class BoolResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~BoolResult]
-        '''
-        self.results = [BoolResult.from_json(o) for o in results or []]
-
-
-class MachinePortRange(Type):
-    _toSchema = {'relationtag': 'RelationTag', 'portrange': 'PortRange', 'unittag': 'UnitTag'}
-    _toPy = {'UnitTag': 'unittag', 'PortRange': 'portrange', 'RelationTag': 'relationtag'}
-    def __init__(self, portrange=None, relationtag=None, unittag=None):
-        '''
-        portrange : PortRange
-        relationtag : str
-        unittag : str
-        '''
-        self.portrange = PortRange.from_json(portrange)
-        self.relationtag = relationtag
-        self.unittag = unittag
-
-
-class MachinePorts(Type):
-    _toSchema = {'machinetag': 'MachineTag', 'subnettag': 'SubnetTag'}
-    _toPy = {'MachineTag': 'machinetag', 'SubnetTag': 'subnettag'}
-    def __init__(self, machinetag=None, subnettag=None):
-        '''
-        machinetag : str
-        subnettag : str
-        '''
-        self.machinetag = machinetag
-        self.subnettag = subnettag
-
-
-class MachinePortsParams(Type):
-    _toSchema = {'params': 'Params'}
-    _toPy = {'Params': 'params'}
-    def __init__(self, params=None):
-        '''
-        params : typing.Sequence[~MachinePorts]
-        '''
-        self.params = [MachinePorts.from_json(o) for o in params or []]
-
-
-class MachinePortsResult(Type):
-    _toSchema = {'error': 'Error', 'ports': 'Ports'}
-    _toPy = {'Error': 'error', 'Ports': 'ports'}
-    def __init__(self, error=None, ports=None):
-        '''
-        error : Error
-        ports : typing.Sequence[~MachinePortRange]
-        '''
-        self.error = Error.from_json(error)
-        self.ports = [MachinePortRange.from_json(o) for o in ports or []]
-
-
-class MachinePortsResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~MachinePortsResult]
-        '''
-        self.results = [MachinePortsResult.from_json(o) for o in results or []]
-
-
-class NotifyWatchResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~NotifyWatchResult]
-        '''
-        self.results = [NotifyWatchResult.from_json(o) for o in results or []]
-
-
-class PortRange(Type):
-    _toSchema = {'protocol': 'Protocol', 'toport': 'ToPort', 'fromport': 'FromPort'}
-    _toPy = {'FromPort': 'fromport', 'Protocol': 'protocol', 'ToPort': 'toport'}
-    def __init__(self, fromport=None, protocol=None, toport=None):
-        '''
-        fromport : int
-        protocol : str
-        toport : int
-        '''
-        self.fromport = fromport
-        self.protocol = protocol
-        self.toport = toport
-
-
-class StringResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~StringResult]
-        '''
-        self.results = [StringResult.from_json(o) for o in results or []]
-
-
-class StringsResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~StringsResult]
-        '''
-        self.results = [StringsResult.from_json(o) for o in results or []]
-
-
-class ControllersChangeResult(Type):
-    _toSchema = {'error': 'Error', 'result': 'Result'}
-    _toPy = {'Error': 'error', 'Result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : ControllersChanges
-        '''
-        self.error = Error.from_json(error)
-        self.result = ControllersChanges.from_json(result)
-
-
-class ControllersChangeResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~ControllersChangeResult]
-        '''
-        self.results = [ControllersChangeResult.from_json(o) for o in results or []]
-
-
-class ControllersChanges(Type):
-    _toSchema = {'added': 'added', 'promoted': 'promoted', 'removed': 'removed', 'demoted': 'demoted', 'maintained': 'maintained', 'converted': 'converted'}
-    _toPy = {'added': 'added', 'promoted': 'promoted', 'removed': 'removed', 'demoted': 'demoted', 'maintained': 'maintained', 'converted': 'converted'}
-    def __init__(self, added=None, converted=None, demoted=None, maintained=None, promoted=None, removed=None):
-        '''
-        added : typing.Sequence[str]
-        converted : typing.Sequence[str]
-        demoted : typing.Sequence[str]
-        maintained : typing.Sequence[str]
-        promoted : typing.Sequence[str]
-        removed : typing.Sequence[str]
-        '''
-        self.added = added
-        self.converted = converted
-        self.demoted = demoted
-        self.maintained = maintained
-        self.promoted = promoted
-        self.removed = removed
-
-
-class ControllersSpec(Type):
-    _toSchema = {'modeltag': 'ModelTag', 'num_controllers': 'num-controllers', 'constraints': 'constraints', 'placement': 'placement', 'series': 'series'}
-    _toPy = {'placement': 'placement', 'constraints': 'constraints', 'series': 'series', 'num-controllers': 'num_controllers', 'ModelTag': 'modeltag'}
-    def __init__(self, modeltag=None, constraints=None, num_controllers=None, placement=None, series=None):
-        '''
-        modeltag : str
-        constraints : Value
-        num_controllers : int
-        placement : typing.Sequence[str]
-        series : str
-        '''
-        self.modeltag = modeltag
-        self.constraints = Value.from_json(constraints)
-        self.num_controllers = num_controllers
-        self.placement = placement
-        self.series = series
-
-
-class ControllersSpecs(Type):
-    _toSchema = {'specs': 'Specs'}
-    _toPy = {'Specs': 'specs'}
-    def __init__(self, specs=None):
-        '''
-        specs : typing.Sequence[~ControllersSpec]
-        '''
-        self.specs = [ControllersSpec.from_json(o) for o in specs or []]
-
-
-class HAMember(Type):
-    _toSchema = {'publicaddress': 'PublicAddress', 'series': 'Series', 'tag': 'Tag'}
-    _toPy = {'Tag': 'tag', 'PublicAddress': 'publicaddress', 'Series': 'series'}
-    def __init__(self, publicaddress=None, series=None, tag=None):
-        '''
-        publicaddress : Address
-        series : str
-        tag : str
-        '''
-        self.publicaddress = Address.from_json(publicaddress)
-        self.series = series
-        self.tag = tag
-
-
-class Member(Type):
-    _toSchema = {'slavedelay': 'SlaveDelay', 'id_': 'Id', 'priority': 'Priority', 'hidden': 'Hidden', 'address': 'Address', 'buildindexes': 'BuildIndexes', 'arbiter': 'Arbiter', 'votes': 'Votes', 'tags': 'Tags'}
-    _toPy = {'SlaveDelay': 'slavedelay', 'Id': 'id_', 'Hidden': 'hidden', 'Arbiter': 'arbiter', 'Priority': 'priority', 'Address': 'address', 'Votes': 'votes', 'Tags': 'tags', 'BuildIndexes': 'buildindexes'}
-    def __init__(self, address=None, arbiter=None, buildindexes=None, hidden=None, id_=None, priority=None, slavedelay=None, tags=None, votes=None):
-        '''
-        address : str
-        arbiter : bool
-        buildindexes : bool
-        hidden : bool
-        id_ : int
-        priority : float
-        slavedelay : int
-        tags : typing.Mapping[str, str]
-        votes : int
-        '''
-        self.address = address
-        self.arbiter = arbiter
-        self.buildindexes = buildindexes
-        self.hidden = hidden
-        self.id_ = id_
-        self.priority = priority
-        self.slavedelay = slavedelay
-        self.tags = tags
-        self.votes = votes
-
-
-class MongoUpgradeResults(Type):
-    _toSchema = {'members': 'Members', 'master': 'Master', 'rsmembers': 'RsMembers'}
-    _toPy = {'Members': 'members', 'RsMembers': 'rsmembers', 'Master': 'master'}
-    def __init__(self, master=None, members=None, rsmembers=None):
-        '''
-        master : HAMember
-        members : typing.Sequence[~HAMember]
-        rsmembers : typing.Sequence[~Member]
-        '''
-        self.master = HAMember.from_json(master)
-        self.members = [HAMember.from_json(o) for o in members or []]
-        self.rsmembers = [Member.from_json(o) for o in rsmembers or []]
-
-
-class ResumeReplicationParams(Type):
-    _toSchema = {'members': 'Members'}
-    _toPy = {'Members': 'members'}
-    def __init__(self, members=None):
-        '''
-        members : typing.Sequence[~Member]
-        '''
-        self.members = [Member.from_json(o) for o in members or []]
-
-
-class UpgradeMongoParams(Type):
-    _toSchema = {'patch': 'Patch', 'major': 'Major', 'storageengine': 'StorageEngine', 'minor': 'Minor'}
-    _toPy = {'Patch': 'patch', 'StorageEngine': 'storageengine', 'Major': 'major', 'Minor': 'minor'}
-    def __init__(self, major=None, minor=None, patch=None, storageengine=None):
-        '''
-        major : int
-        minor : int
-        patch : str
-        storageengine : str
-        '''
-        self.major = major
-        self.minor = minor
-        self.patch = patch
-        self.storageengine = storageengine
-
-
-class Version(Type):
-    _toSchema = {'patch': 'Patch', 'major': 'Major', 'storageengine': 'StorageEngine', 'minor': 'Minor'}
-    _toPy = {'Patch': 'patch', 'StorageEngine': 'storageengine', 'Major': 'major', 'Minor': 'minor'}
-    def __init__(self, major=None, minor=None, patch=None, storageengine=None):
-        '''
-        major : int
-        minor : int
-        patch : str
-        storageengine : str
-        '''
-        self.major = major
-        self.minor = minor
-        self.patch = patch
-        self.storageengine = storageengine
-
-
-class SSHHostKeySet(Type):
-    _toSchema = {'entity_keys': 'entity-keys'}
-    _toPy = {'entity-keys': 'entity_keys'}
-    def __init__(self, entity_keys=None):
-        '''
-        entity_keys : typing.Sequence[~SSHHostKeys]
-        '''
-        self.entity_keys = [SSHHostKeys.from_json(o) for o in entity_keys or []]
-
-
-class SSHHostKeys(Type):
-    _toSchema = {'tag': 'tag', 'public_keys': 'public-keys'}
-    _toPy = {'public-keys': 'public_keys', 'tag': 'tag'}
-    def __init__(self, public_keys=None, tag=None):
-        '''
-        public_keys : typing.Sequence[str]
-        tag : str
-        '''
-        self.public_keys = public_keys
-        self.tag = tag
-
-
-class ImageFilterParams(Type):
-    _toSchema = {'images': 'images'}
-    _toPy = {'images': 'images'}
-    def __init__(self, images=None):
-        '''
-        images : typing.Sequence[~ImageSpec]
-        '''
-        self.images = [ImageSpec.from_json(o) for o in images or []]
-
-
-class ImageMetadata(Type):
-    _toSchema = {'url': 'url', 'created': 'created', 'kind': 'kind', 'series': 'series', 'arch': 'arch'}
-    _toPy = {'url': 'url', 'created': 'created', 'kind': 'kind', 'series': 'series', 'arch': 'arch'}
-    def __init__(self, arch=None, created=None, kind=None, series=None, url=None):
-        '''
-        arch : str
-        created : str
-        kind : str
-        series : str
-        url : str
-        '''
-        self.arch = arch
-        self.created = created
-        self.kind = kind
-        self.series = series
-        self.url = url
-
-
-class ImageSpec(Type):
-    _toSchema = {'kind': 'kind', 'series': 'series', 'arch': 'arch'}
-    _toPy = {'kind': 'kind', 'series': 'series', 'arch': 'arch'}
-    def __init__(self, arch=None, kind=None, series=None):
-        '''
-        arch : str
-        kind : str
-        series : str
-        '''
-        self.arch = arch
-        self.kind = kind
-        self.series = series
-
-
-class ListImageResult(Type):
-    _toSchema = {'result': 'result'}
-    _toPy = {'result': 'result'}
-    def __init__(self, result=None):
-        '''
-        result : typing.Sequence[~ImageMetadata]
-        '''
-        self.result = [ImageMetadata.from_json(o) for o in result or []]
-
-
-class CloudImageMetadata(Type):
-    _toSchema = {'source': 'source', 'root_storage_size': 'root_storage_size', 'series': 'series', 'version': 'version', 'priority': 'priority', 'image_id': 'image_id', 'virt_type': 'virt_type', 'stream': 'stream', 'root_storage_type': 'root_storage_type', 'region': 'region', 'arch': 'arch'}
-    _toPy = {'source': 'source', 'root_storage_size': 'root_storage_size', 'series': 'series', 'version': 'version', 'priority': 'priority', 'image_id': 'image_id', 'virt_type': 'virt_type', 'stream': 'stream', 'root_storage_type': 'root_storage_type', 'region': 'region', 'arch': 'arch'}
-    def __init__(self, arch=None, image_id=None, priority=None, region=None, root_storage_size=None, root_storage_type=None, series=None, source=None, stream=None, version=None, virt_type=None):
-        '''
-        arch : str
-        image_id : str
-        priority : int
-        region : str
-        root_storage_size : int
-        root_storage_type : str
-        series : str
-        source : str
-        stream : str
-        version : str
-        virt_type : str
-        '''
-        self.arch = arch
-        self.image_id = image_id
-        self.priority = priority
-        self.region = region
-        self.root_storage_size = root_storage_size
-        self.root_storage_type = root_storage_type
-        self.series = series
-        self.source = source
-        self.stream = stream
-        self.version = version
-        self.virt_type = virt_type
-
-
-class CloudImageMetadataList(Type):
-    _toSchema = {'metadata': 'metadata'}
-    _toPy = {'metadata': 'metadata'}
-    def __init__(self, metadata=None):
-        '''
-        metadata : typing.Sequence[~CloudImageMetadata]
-        '''
-        self.metadata = [CloudImageMetadata.from_json(o) for o in metadata or []]
-
-
-class ImageMetadataFilter(Type):
-    _toSchema = {'series': 'series', 'virt_type': 'virt_type', 'stream': 'stream', 'arches': 'arches', 'region': 'region', 'root_storage_type': 'root-storage-type'}
-    _toPy = {'series': 'series', 'root-storage-type': 'root_storage_type', 'virt_type': 'virt_type', 'stream': 'stream', 'arches': 'arches', 'region': 'region'}
-    def __init__(self, arches=None, region=None, root_storage_type=None, series=None, stream=None, virt_type=None):
-        '''
-        arches : typing.Sequence[str]
-        region : str
-        root_storage_type : str
-        series : typing.Sequence[str]
-        stream : str
-        virt_type : str
-        '''
-        self.arches = arches
-        self.region = region
-        self.root_storage_type = root_storage_type
-        self.series = series
-        self.stream = stream
-        self.virt_type = virt_type
-
-
-class ListCloudImageMetadataResult(Type):
-    _toSchema = {'result': 'result'}
-    _toPy = {'result': 'result'}
-    def __init__(self, result=None):
-        '''
-        result : typing.Sequence[~CloudImageMetadata]
-        '''
-        self.result = [CloudImageMetadata.from_json(o) for o in result or []]
-
-
-class MetadataImageIds(Type):
-    _toSchema = {'image_ids': 'image_ids'}
-    _toPy = {'image_ids': 'image_ids'}
-    def __init__(self, image_ids=None):
-        '''
-        image_ids : typing.Sequence[str]
-        '''
-        self.image_ids = image_ids
-
-
-class MetadataSaveParams(Type):
-    _toSchema = {'metadata': 'metadata'}
-    _toPy = {'metadata': 'metadata'}
-    def __init__(self, metadata=None):
-        '''
-        metadata : typing.Sequence[~CloudImageMetadataList]
-        '''
-        self.metadata = [CloudImageMetadataList.from_json(o) for o in metadata or []]
-
-
-class EntityStatusArgs(Type):
-    _toSchema = {'info': 'Info', 'data': 'Data', 'tag': 'Tag', 'status': 'Status'}
-    _toPy = {'Status': 'status', 'Tag': 'tag', 'Data': 'data', 'Info': 'info'}
-    def __init__(self, data=None, info=None, status=None, tag=None):
-        '''
-        data : typing.Mapping[str, typing.Any]
-        info : str
-        status : str
-        tag : str
-        '''
-        self.data = data
-        self.info = info
-        self.status = status
-        self.tag = tag
-
-
-class MachineAddresses(Type):
-    _toSchema = {'addresses': 'Addresses', 'tag': 'Tag'}
-    _toPy = {'Addresses': 'addresses', 'Tag': 'tag'}
-    def __init__(self, addresses=None, tag=None):
-        '''
-        addresses : typing.Sequence[~Address]
-        tag : str
-        '''
-        self.addresses = [Address.from_json(o) for o in addresses or []]
-        self.tag = tag
-
-
-class MachineAddressesResult(Type):
-    _toSchema = {'addresses': 'Addresses', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'Addresses': 'addresses'}
-    def __init__(self, addresses=None, error=None):
-        '''
-        addresses : typing.Sequence[~Address]
-        error : Error
-        '''
-        self.addresses = [Address.from_json(o) for o in addresses or []]
-        self.error = Error.from_json(error)
-
-
-class MachineAddressesResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~MachineAddressesResult]
-        '''
-        self.results = [MachineAddressesResult.from_json(o) for o in results or []]
-
-
-class SetMachinesAddresses(Type):
-    _toSchema = {'machineaddresses': 'MachineAddresses'}
-    _toPy = {'MachineAddresses': 'machineaddresses'}
-    def __init__(self, machineaddresses=None):
-        '''
-        machineaddresses : typing.Sequence[~MachineAddresses]
-        '''
-        self.machineaddresses = [MachineAddresses.from_json(o) for o in machineaddresses or []]
-
-
-class SetStatus(Type):
-    _toSchema = {'entities': 'Entities'}
-    _toPy = {'Entities': 'entities'}
-    def __init__(self, entities=None):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        '''
-        self.entities = [EntityStatusArgs.from_json(o) for o in entities or []]
-
-
-class StatusResult(Type):
-    _toSchema = {'info': 'Info', 'since': 'Since', 'id_': 'Id', 'life': 'Life', 'data': 'Data', 'error': 'Error', 'status': 'Status'}
-    _toPy = {'Since': 'since', 'Data': 'data', 'Id': 'id_', 'Status': 'status', 'Life': 'life', 'Error': 'error', 'Info': 'info'}
-    def __init__(self, data=None, error=None, id_=None, info=None, life=None, since=None, status=None):
-        '''
-        data : typing.Mapping[str, typing.Any]
-        error : Error
-        id_ : str
-        info : str
-        life : str
-        since : str
-        status : str
-        '''
-        self.data = data
-        self.error = Error.from_json(error)
-        self.id_ = id_
-        self.info = info
-        self.life = life
-        self.since = since
-        self.status = status
-
-
-class StatusResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~StatusResult]
-        '''
-        self.results = [StatusResult.from_json(o) for o in results or []]
-
-
-class ListSSHKeys(Type):
-    _toSchema = {'mode': 'Mode', 'entities': 'Entities'}
-    _toPy = {'Mode': 'mode', 'Entities': 'entities'}
-    def __init__(self, entities=None, mode=None):
-        '''
-        entities : Entities
-        mode : bool
-        '''
-        self.entities = Entities.from_json(entities)
-        self.mode = mode
-
-
-class ModifyUserSSHKeys(Type):
-    _toSchema = {'keys': 'Keys', 'user': 'User'}
-    _toPy = {'Keys': 'keys', 'User': 'user'}
-    def __init__(self, keys=None, user=None):
-        '''
-        keys : typing.Sequence[str]
-        user : str
-        '''
-        self.keys = keys
-        self.user = user
-
-
-class ClaimLeadershipBulkParams(Type):
-    _toSchema = {'params': 'Params'}
-    _toPy = {'Params': 'params'}
-    def __init__(self, params=None):
-        '''
-        params : typing.Sequence[~ClaimLeadershipParams]
-        '''
-        self.params = [ClaimLeadershipParams.from_json(o) for o in params or []]
-
-
-class ClaimLeadershipBulkResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~ErrorResult]
-        '''
-        self.results = [ErrorResult.from_json(o) for o in results or []]
-
-
-class ClaimLeadershipParams(Type):
-    _toSchema = {'durationseconds': 'DurationSeconds', 'unittag': 'UnitTag', 'servicetag': 'ServiceTag'}
-    _toPy = {'ServiceTag': 'servicetag', 'UnitTag': 'unittag', 'DurationSeconds': 'durationseconds'}
-    def __init__(self, durationseconds=None, servicetag=None, unittag=None):
-        '''
-        durationseconds : float
-        servicetag : str
-        unittag : str
-        '''
-        self.durationseconds = durationseconds
-        self.servicetag = servicetag
-        self.unittag = unittag
-
-
-class ServiceTag(Type):
-    _toSchema = {'name': 'Name'}
-    _toPy = {'Name': 'name'}
-    def __init__(self, name=None):
-        '''
-        name : str
-        '''
-        self.name = name
-
-
-class ActionExecutionResult(Type):
-    _toSchema = {'message': 'message', 'results': 'results', 'status': 'status', 'actiontag': 'actiontag'}
-    _toPy = {'message': 'message', 'results': 'results', 'status': 'status', 'actiontag': 'actiontag'}
-    def __init__(self, actiontag=None, message=None, results=None, status=None):
-        '''
-        actiontag : str
-        message : str
-        results : typing.Mapping[str, typing.Any]
-        status : str
-        '''
-        self.actiontag = actiontag
-        self.message = message
-        self.results = results
-        self.status = status
-
-
-class ActionExecutionResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~ActionExecutionResult]
-        '''
-        self.results = [ActionExecutionResult.from_json(o) for o in results or []]
-
-
-class JobsResult(Type):
-    _toSchema = {'jobs': 'Jobs', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'Jobs': 'jobs'}
-    def __init__(self, error=None, jobs=None):
-        '''
-        error : Error
-        jobs : typing.Sequence[str]
-        '''
-        self.error = Error.from_json(error)
-        self.jobs = jobs
-
-
-class JobsResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~JobsResult]
-        '''
-        self.results = [JobsResult.from_json(o) for o in results or []]
-
-
-class NetworkConfig(Type):
-    _toSchema = {'parentinterfacename': 'ParentInterfaceName', 'macaddress': 'MACAddress', 'cidr': 'CIDR', 'dnsservers': 'DNSServers', 'noautostart': 'NoAutoStart', 'address': 'Address', 'providersubnetid': 'ProviderSubnetId', 'providerspaceid': 'ProviderSpaceId', 'gatewayaddress': 'GatewayAddress', 'provideraddressid': 'ProviderAddressId', 'providerid': 'ProviderId', 'disabled': 'Disabled', 'dnssearchdomains': 'DNSSearchDomains', 'deviceindex': 'DeviceIndex', 'configtype': 'ConfigType', 'vlantag': 'VLANTag', 'interfacetype': 'InterfaceType', 'interfacename': 'InterfaceName', 'mtu': 'MTU', 'providervlanid': 'ProviderVLANId'}
-    _toPy = {'ParentInterfaceName': 'parentinterfacename', 'VLANTag': 'vlantag', 'MTU': 'mtu', 'CIDR': 'cidr', 'ProviderAddressId': 'provideraddressid', 'ConfigType': 'configtype', 'ProviderSpaceId': 'providerspaceid', 'GatewayAddress': 'gatewayaddress', 'ProviderId': 'providerid', 'InterfaceName': 'interfacename', 'InterfaceType': 'interfacetype', 'NoAutoStart': 'noautostart', 'DNSServers': 'dnsservers', 'DNSSearchDomains': 'dnssearchdomains', 'ProviderSubnetId': 'providersubnetid', 'MACAddress': 'macaddress', 'Address': 'address', 'Disabled': 'disabled', 'DeviceIndex': 'deviceindex', 'ProviderVLANId': 'providervlanid'}
-    def __init__(self, address=None, cidr=None, configtype=None, dnssearchdomains=None, dnsservers=None, deviceindex=None, disabled=None, gatewayaddress=None, interfacename=None, interfacetype=None, macaddress=None, mtu=None, noautostart=None, parentinterfacename=None, provideraddressid=None, providerid=None, providerspaceid=None, providersubnetid=None, providervlanid=None, vlantag=None):
-        '''
-        address : str
-        cidr : str
-        configtype : str
-        dnssearchdomains : typing.Sequence[str]
-        dnsservers : typing.Sequence[str]
-        deviceindex : int
-        disabled : bool
-        gatewayaddress : str
-        interfacename : str
-        interfacetype : str
-        macaddress : str
-        mtu : int
-        noautostart : bool
-        parentinterfacename : str
-        provideraddressid : str
-        providerid : str
-        providerspaceid : str
-        providersubnetid : str
-        providervlanid : str
-        vlantag : int
-        '''
-        self.address = address
-        self.cidr = cidr
-        self.configtype = configtype
-        self.dnssearchdomains = dnssearchdomains
-        self.dnsservers = dnsservers
-        self.deviceindex = deviceindex
-        self.disabled = disabled
-        self.gatewayaddress = gatewayaddress
-        self.interfacename = interfacename
-        self.interfacetype = interfacetype
-        self.macaddress = macaddress
-        self.mtu = mtu
-        self.noautostart = noautostart
-        self.parentinterfacename = parentinterfacename
-        self.provideraddressid = provideraddressid
-        self.providerid = providerid
-        self.providerspaceid = providerspaceid
-        self.providersubnetid = providersubnetid
-        self.providervlanid = providervlanid
-        self.vlantag = vlantag
-
-
-class SetMachineNetworkConfig(Type):
-    _toSchema = {'config': 'Config', 'tag': 'Tag'}
-    _toPy = {'Tag': 'tag', 'Config': 'config'}
-    def __init__(self, config=None, tag=None):
-        '''
-        config : typing.Sequence[~NetworkConfig]
-        tag : str
-        '''
-        self.config = [NetworkConfig.from_json(o) for o in config or []]
-        self.tag = tag
-
-
-class MeterStatusResult(Type):
-    _toSchema = {'info': 'Info', 'code': 'Code', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'Code': 'code', 'Info': 'info'}
-    def __init__(self, code=None, error=None, info=None):
-        '''
-        code : str
-        error : Error
-        info : str
-        '''
-        self.code = code
-        self.error = Error.from_json(error)
-        self.info = info
-
-
-class MeterStatusResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~MeterStatusResult]
-        '''
-        self.results = [MeterStatusResult.from_json(o) for o in results or []]
-
-
-class Metric(Type):
-    _toSchema = {'key': 'Key', 'time': 'Time', 'value': 'Value'}
-    _toPy = {'Key': 'key', 'Value': 'value', 'Time': 'time'}
-    def __init__(self, key=None, time=None, value=None):
-        '''
-        key : str
-        time : str
-        value : str
-        '''
-        self.key = key
-        self.time = time
-        self.value = value
-
-
-class MetricBatch(Type):
-    _toSchema = {'created': 'Created', 'metrics': 'Metrics', 'uuid': 'UUID', 'charmurl': 'CharmURL'}
-    _toPy = {'Metrics': 'metrics', 'UUID': 'uuid', 'CharmURL': 'charmurl', 'Created': 'created'}
-    def __init__(self, charmurl=None, created=None, metrics=None, uuid=None):
-        '''
-        charmurl : str
-        created : str
-        metrics : typing.Sequence[~Metric]
-        uuid : str
-        '''
-        self.charmurl = charmurl
-        self.created = created
-        self.metrics = [Metric.from_json(o) for o in metrics or []]
-        self.uuid = uuid
-
-
-class MetricBatchParam(Type):
-    _toSchema = {'batch': 'Batch', 'tag': 'Tag'}
-    _toPy = {'Tag': 'tag', 'Batch': 'batch'}
-    def __init__(self, batch=None, tag=None):
-        '''
-        batch : MetricBatch
-        tag : str
-        '''
-        self.batch = MetricBatch.from_json(batch)
-        self.tag = tag
-
-
-class MetricBatchParams(Type):
-    _toSchema = {'batches': 'Batches'}
-    _toPy = {'Batches': 'batches'}
-    def __init__(self, batches=None):
-        '''
-        batches : typing.Sequence[~MetricBatchParam]
-        '''
-        self.batches = [MetricBatchParam.from_json(o) for o in batches or []]
-
-
-class EntityMetrics(Type):
-    _toSchema = {'metrics': 'metrics', 'error': 'error'}
-    _toPy = {'metrics': 'metrics', 'error': 'error'}
-    def __init__(self, error=None, metrics=None):
-        '''
-        error : Error
-        metrics : typing.Sequence[~MetricResult]
-        '''
-        self.error = Error.from_json(error)
-        self.metrics = [MetricResult.from_json(o) for o in metrics or []]
-
-
-class MeterStatusParam(Type):
-    _toSchema = {'info': 'info', 'code': 'code', 'tag': 'tag'}
-    _toPy = {'info': 'info', 'code': 'code', 'tag': 'tag'}
-    def __init__(self, code=None, info=None, tag=None):
-        '''
-        code : str
-        info : str
-        tag : str
-        '''
-        self.code = code
-        self.info = info
-        self.tag = tag
-
-
-class MeterStatusParams(Type):
-    _toSchema = {'statues': 'statues'}
-    _toPy = {'statues': 'statues'}
-    def __init__(self, statues=None):
-        '''
-        statues : typing.Sequence[~MeterStatusParam]
-        '''
-        self.statues = [MeterStatusParam.from_json(o) for o in statues or []]
-
-
-class MetricResult(Type):
-    _toSchema = {'key': 'key', 'time': 'time', 'value': 'value'}
-    _toPy = {'key': 'key', 'time': 'time', 'value': 'value'}
-    def __init__(self, key=None, time=None, value=None):
-        '''
-        key : str
-        time : str
-        value : str
-        '''
-        self.key = key
-        self.time = time
-        self.value = value
-
-
-class MetricResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~EntityMetrics]
-        '''
-        self.results = [EntityMetrics.from_json(o) for o in results or []]
-
-
-class PhaseResult(Type):
-    _toSchema = {'phase': 'phase', 'error': 'Error'}
-    _toPy = {'phase': 'phase', 'Error': 'error'}
-    def __init__(self, error=None, phase=None):
-        '''
-        error : Error
-        phase : str
-        '''
-        self.error = Error.from_json(error)
-        self.phase = phase
-
-
-class PhaseResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~PhaseResult]
-        '''
-        self.results = [PhaseResult.from_json(o) for o in results or []]
-
-
-class FullMigrationStatus(Type):
-    _toSchema = {'attempt': 'attempt', 'phase': 'phase', 'spec': 'spec'}
-    _toPy = {'attempt': 'attempt', 'phase': 'phase', 'spec': 'spec'}
-    def __init__(self, attempt=None, phase=None, spec=None):
-        '''
-        attempt : int
-        phase : str
-        spec : ModelMigrationSpec
-        '''
-        self.attempt = attempt
-        self.phase = phase
-        self.spec = ModelMigrationSpec.from_json(spec)
-
-
-class SerializedModel(Type):
-    _toSchema = {'bytes_': 'bytes'}
-    _toPy = {'bytes': 'bytes_'}
-    def __init__(self, bytes_=None):
-        '''
-        bytes_ : typing.Sequence[int]
-        '''
-        self.bytes_ = bytes_
-
-
-class SetMigrationPhaseArgs(Type):
-    _toSchema = {'phase': 'phase'}
-    _toPy = {'phase': 'phase'}
-    def __init__(self, phase=None):
-        '''
-        phase : str
-        '''
-        self.phase = phase
-
-
-class MigrationStatus(Type):
-    _toSchema = {'source_ca_cert': 'source-ca-cert', 'attempt': 'attempt', 'target_api_addrs': 'target-api-addrs', 'source_api_addrs': 'source-api-addrs', 'target_ca_cert': 'target-ca-cert', 'phase': 'phase'}
-    _toPy = {'attempt': 'attempt', 'target-ca-cert': 'target_ca_cert', 'source-ca-cert': 'source_ca_cert', 'target-api-addrs': 'target_api_addrs', 'phase': 'phase', 'source-api-addrs': 'source_api_addrs'}
-    def __init__(self, attempt=None, phase=None, source_api_addrs=None, source_ca_cert=None, target_api_addrs=None, target_ca_cert=None):
-        '''
-        attempt : int
-        phase : str
-        source_api_addrs : typing.Sequence[str]
-        source_ca_cert : str
-        target_api_addrs : typing.Sequence[str]
-        target_ca_cert : str
-        '''
-        self.attempt = attempt
-        self.phase = phase
-        self.source_api_addrs = source_api_addrs
-        self.source_ca_cert = source_ca_cert
-        self.target_api_addrs = target_api_addrs
-        self.target_ca_cert = target_ca_cert
-
-
-class ModelArgs(Type):
-    _toSchema = {'model_tag': 'model-tag'}
-    _toPy = {'model-tag': 'model_tag'}
-    def __init__(self, model_tag=None):
-        '''
-        model_tag : str
-        '''
-        self.model_tag = model_tag
-
-
-class ModelCreateArgs(Type):
-    _toSchema = {'config': 'Config', 'ownertag': 'OwnerTag', 'account': 'Account'}
-    _toPy = {'OwnerTag': 'ownertag', 'Config': 'config', 'Account': 'account'}
-    def __init__(self, account=None, config=None, ownertag=None):
-        '''
-        account : typing.Mapping[str, typing.Any]
-        config : typing.Mapping[str, typing.Any]
-        ownertag : str
-        '''
-        self.account = account
-        self.config = config
-        self.ownertag = ownertag
-
-
-class ModelInfoResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : ModelInfo
-        '''
-        self.error = Error.from_json(error)
-        self.result = ModelInfo.from_json(result)
-
-
-class ModelInfoResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~ModelInfoResult]
-        '''
-        self.results = [ModelInfoResult.from_json(o) for o in results or []]
-
-
-class ModelSkeletonConfigArgs(Type):
-    _toSchema = {'provider': 'Provider', 'region': 'Region'}
-    _toPy = {'Provider': 'provider', 'Region': 'region'}
-    def __init__(self, provider=None, region=None):
-        '''
-        provider : str
-        region : str
-        '''
-        self.provider = provider
-        self.region = region
-
-
-class ModifyModelAccess(Type):
-    _toSchema = {'access': 'access', 'model_tag': 'model-tag', 'action': 'action', 'user_tag': 'user-tag'}
-    _toPy = {'access': 'access', 'model-tag': 'model_tag', 'action': 'action', 'user-tag': 'user_tag'}
-    def __init__(self, access=None, action=None, model_tag=None, user_tag=None):
-        '''
-        access : str
-        action : str
-        model_tag : str
-        user_tag : str
-        '''
-        self.access = access
-        self.action = action
-        self.model_tag = model_tag
-        self.user_tag = user_tag
-
-
-class ModifyModelAccessRequest(Type):
-    _toSchema = {'changes': 'changes'}
-    _toPy = {'changes': 'changes'}
-    def __init__(self, changes=None):
-        '''
-        changes : typing.Sequence[~ModifyModelAccess]
-        '''
-        self.changes = [ModifyModelAccess.from_json(o) for o in changes or []]
-
-
-class ConstraintsResult(Type):
-    _toSchema = {'constraints': 'Constraints', 'error': 'Error'}
-    _toPy = {'Constraints': 'constraints', 'Error': 'error'}
-    def __init__(self, constraints=None, error=None):
-        '''
-        constraints : Value
-        error : Error
-        '''
-        self.constraints = Value.from_json(constraints)
-        self.error = Error.from_json(error)
-
-
-class ConstraintsResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~ConstraintsResult]
-        '''
-        self.results = [ConstraintsResult.from_json(o) for o in results or []]
-
-
-class ContainerConfig(Type):
-    _toSchema = {'preferipv6': 'PreferIPv6', 'allowlxcloopmounts': 'AllowLXCLoopMounts', 'providertype': 'ProviderType', 'aptproxy': 'AptProxy', 'authorizedkeys': 'AuthorizedKeys', 'proxy': 'Proxy', 'aptmirror': 'AptMirror', 'updatebehavior': 'UpdateBehavior', 'sslhostnameverification': 'SSLHostnameVerification'}
-    _toPy = {'AptProxy': 'aptproxy', 'AllowLXCLoopMounts': 'allowlxcloopmounts', 'AptMirror': 'aptmirror', 'AuthorizedKeys': 'authorizedkeys', 'ProviderType': 'providertype', 'PreferIPv6': 'preferipv6', 'Proxy': 'proxy', 'SSLHostnameVerification': 'sslhostnameverification', 'UpdateBehavior': 'updatebehavior'}
-    def __init__(self, allowlxcloopmounts=None, aptmirror=None, aptproxy=None, authorizedkeys=None, preferipv6=None, providertype=None, proxy=None, sslhostnameverification=None, updatebehavior=None):
-        '''
-        allowlxcloopmounts : bool
-        aptmirror : str
-        aptproxy : Settings
-        authorizedkeys : str
-        preferipv6 : bool
-        providertype : str
-        proxy : Settings
-        sslhostnameverification : bool
-        updatebehavior : UpdateBehavior
-        '''
-        self.allowlxcloopmounts = allowlxcloopmounts
-        self.aptmirror = aptmirror
-        self.aptproxy = Settings.from_json(aptproxy)
-        self.authorizedkeys = authorizedkeys
-        self.preferipv6 = preferipv6
-        self.providertype = providertype
-        self.proxy = Settings.from_json(proxy)
-        self.sslhostnameverification = sslhostnameverification
-        self.updatebehavior = UpdateBehavior.from_json(updatebehavior)
-
-
-class ContainerManagerConfig(Type):
-    _toSchema = {'managerconfig': 'ManagerConfig'}
-    _toPy = {'ManagerConfig': 'managerconfig'}
-    def __init__(self, managerconfig=None):
-        '''
-        managerconfig : typing.Mapping[str, str]
-        '''
-        self.managerconfig = managerconfig
-
-
-class ContainerManagerConfigParams(Type):
-    _toSchema = {'type_': 'Type'}
-    _toPy = {'Type': 'type_'}
-    def __init__(self, type_=None):
-        '''
-        type_ : str
-        '''
-        self.type_ = type_
-
-
-class DistributionGroupResult(Type):
-    _toSchema = {'error': 'Error', 'result': 'Result'}
-    _toPy = {'Error': 'error', 'Result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : typing.Sequence[str]
-        '''
-        self.error = Error.from_json(error)
-        self.result = result
-
-
-class DistributionGroupResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~DistributionGroupResult]
-        '''
-        self.results = [DistributionGroupResult.from_json(o) for o in results or []]
-
-
-class InstanceInfo(Type):
-    _toSchema = {'nonce': 'Nonce', 'volumes': 'Volumes', 'volumeattachments': 'VolumeAttachments', 'tag': 'Tag', 'instanceid': 'InstanceId', 'characteristics': 'Characteristics', 'networkconfig': 'NetworkConfig'}
-    _toPy = {'NetworkConfig': 'networkconfig', 'Tag': 'tag', 'Characteristics': 'characteristics', 'VolumeAttachments': 'volumeattachments', 'InstanceId': 'instanceid', 'Volumes': 'volumes', 'Nonce': 'nonce'}
-    def __init__(self, characteristics=None, instanceid=None, networkconfig=None, nonce=None, tag=None, volumeattachments=None, volumes=None):
-        '''
-        characteristics : HardwareCharacteristics
-        instanceid : str
-        networkconfig : typing.Sequence[~NetworkConfig]
-        nonce : str
-        tag : str
-        volumeattachments : typing.Mapping[str, ~VolumeAttachmentInfo]
-        volumes : typing.Sequence[~Volume]
-        '''
-        self.characteristics = HardwareCharacteristics.from_json(characteristics)
-        self.instanceid = instanceid
-        self.networkconfig = [NetworkConfig.from_json(o) for o in networkconfig or []]
-        self.nonce = nonce
-        self.tag = tag
-        self.volumeattachments = {k: VolumeAttachmentInfo.from_json(v) for k, v in (volumeattachments or dict()).items()}
-        self.volumes = [Volume.from_json(o) for o in volumes or []]
-
-
-class InstancesInfo(Type):
-    _toSchema = {'machines': 'Machines'}
-    _toPy = {'Machines': 'machines'}
-    def __init__(self, machines=None):
-        '''
-        machines : typing.Sequence[~InstanceInfo]
-        '''
-        self.machines = [InstanceInfo.from_json(o) for o in machines or []]
-
-
-class MachineContainers(Type):
-    _toSchema = {'containertypes': 'ContainerTypes', 'machinetag': 'MachineTag'}
-    _toPy = {'MachineTag': 'machinetag', 'ContainerTypes': 'containertypes'}
-    def __init__(self, containertypes=None, machinetag=None):
-        '''
-        containertypes : typing.Sequence[str]
-        machinetag : str
-        '''
-        self.containertypes = containertypes
-        self.machinetag = machinetag
-
-
-class MachineContainersParams(Type):
-    _toSchema = {'params': 'Params'}
-    _toPy = {'Params': 'params'}
-    def __init__(self, params=None):
-        '''
-        params : typing.Sequence[~MachineContainers]
-        '''
-        self.params = [MachineContainers.from_json(o) for o in params or []]
-
-
-class MachineNetworkConfigResult(Type):
-    _toSchema = {'info': 'Info', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'Info': 'info'}
-    def __init__(self, error=None, info=None):
-        '''
-        error : Error
-        info : typing.Sequence[~NetworkConfig]
-        '''
-        self.error = Error.from_json(error)
-        self.info = [NetworkConfig.from_json(o) for o in info or []]
-
-
-class MachineNetworkConfigResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~MachineNetworkConfigResult]
-        '''
-        self.results = [MachineNetworkConfigResult.from_json(o) for o in results or []]
-
-
-class ProvisioningInfo(Type):
-    _toSchema = {'jobs': 'Jobs', 'placement': 'Placement', 'series': 'Series', 'endpointbindings': 'EndpointBindings', 'subnetstozones': 'SubnetsToZones', 'imagemetadata': 'ImageMetadata', 'volumes': 'Volumes', 'constraints': 'Constraints', 'tags': 'Tags'}
-    _toPy = {'SubnetsToZones': 'subnetstozones', 'Constraints': 'constraints', 'Tags': 'tags', 'Jobs': 'jobs', 'Placement': 'placement', 'Volumes': 'volumes', 'ImageMetadata': 'imagemetadata', 'EndpointBindings': 'endpointbindings', 'Series': 'series'}
-    def __init__(self, constraints=None, endpointbindings=None, imagemetadata=None, jobs=None, placement=None, series=None, subnetstozones=None, tags=None, volumes=None):
-        '''
-        constraints : Value
-        endpointbindings : typing.Mapping[str, str]
-        imagemetadata : typing.Sequence[~CloudImageMetadata]
-        jobs : typing.Sequence[str]
-        placement : str
-        series : str
-        subnetstozones : typing.Sequence[str]
-        tags : typing.Mapping[str, str]
-        volumes : typing.Sequence[~VolumeParams]
-        '''
-        self.constraints = Value.from_json(constraints)
-        self.endpointbindings = endpointbindings
-        self.imagemetadata = [CloudImageMetadata.from_json(o) for o in imagemetadata or []]
-        self.jobs = jobs
-        self.placement = placement
-        self.series = series
-        self.subnetstozones = subnetstozones
-        self.tags = tags
-        self.volumes = [VolumeParams.from_json(o) for o in volumes or []]
-
-
-class ProvisioningInfoResult(Type):
-    _toSchema = {'error': 'Error', 'result': 'Result'}
-    _toPy = {'Error': 'error', 'Result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : ProvisioningInfo
-        '''
-        self.error = Error.from_json(error)
-        self.result = ProvisioningInfo.from_json(result)
-
-
-class ProvisioningInfoResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~ProvisioningInfoResult]
-        '''
-        self.results = [ProvisioningInfoResult.from_json(o) for o in results or []]
-
-
-class Settings(Type):
-    _toSchema = {'http': 'Http', 'ftp': 'Ftp', 'noproxy': 'NoProxy', 'https': 'Https'}
-    _toPy = {'Ftp': 'ftp', 'Https': 'https', 'Http': 'http', 'NoProxy': 'noproxy'}
-    def __init__(self, ftp=None, http=None, https=None, noproxy=None):
-        '''
-        ftp : str
-        http : str
-        https : str
-        noproxy : str
-        '''
-        self.ftp = ftp
-        self.http = http
-        self.https = https
-        self.noproxy = noproxy
-
-
-class ToolsResult(Type):
-    _toSchema = {'toolslist': 'ToolsList', 'error': 'Error', 'disablesslhostnameverification': 'DisableSSLHostnameVerification'}
-    _toPy = {'DisableSSLHostnameVerification': 'disablesslhostnameverification', 'ToolsList': 'toolslist', 'Error': 'error'}
-    def __init__(self, disablesslhostnameverification=None, error=None, toolslist=None):
-        '''
-        disablesslhostnameverification : bool
-        error : Error
-        toolslist : typing.Sequence[~Tools]
-        '''
-        self.disablesslhostnameverification = disablesslhostnameverification
-        self.error = Error.from_json(error)
-        self.toolslist = [Tools.from_json(o) for o in toolslist or []]
-
-
-class ToolsResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~ToolsResult]
-        '''
-        self.results = [ToolsResult.from_json(o) for o in results or []]
-
-
-class UpdateBehavior(Type):
-    _toSchema = {'enableosrefreshupdate': 'EnableOSRefreshUpdate', 'enableosupgrade': 'EnableOSUpgrade'}
-    _toPy = {'EnableOSRefreshUpdate': 'enableosrefreshupdate', 'EnableOSUpgrade': 'enableosupgrade'}
-    def __init__(self, enableosrefreshupdate=None, enableosupgrade=None):
-        '''
-        enableosrefreshupdate : bool
-        enableosupgrade : bool
-        '''
-        self.enableosrefreshupdate = enableosrefreshupdate
-        self.enableosupgrade = enableosupgrade
-
-
-class Volume(Type):
-    _toSchema = {'info': 'info', 'volumetag': 'volumetag'}
-    _toPy = {'info': 'info', 'volumetag': 'volumetag'}
-    def __init__(self, info=None, volumetag=None):
-        '''
-        info : VolumeInfo
-        volumetag : str
-        '''
-        self.info = VolumeInfo.from_json(info)
-        self.volumetag = volumetag
-
-
-class VolumeAttachmentInfo(Type):
-    _toSchema = {'read_only': 'read-only', 'busaddress': 'busaddress', 'devicename': 'devicename', 'devicelink': 'devicelink'}
-    _toPy = {'busaddress': 'busaddress', 'devicename': 'devicename', 'devicelink': 'devicelink', 'read-only': 'read_only'}
-    def __init__(self, busaddress=None, devicelink=None, devicename=None, read_only=None):
-        '''
-        busaddress : str
-        devicelink : str
-        devicename : str
-        read_only : bool
-        '''
-        self.busaddress = busaddress
-        self.devicelink = devicelink
-        self.devicename = devicename
-        self.read_only = read_only
-
-
-class VolumeAttachmentParams(Type):
-    _toSchema = {'read_only': 'read-only', 'machinetag': 'machinetag', 'instanceid': 'instanceid', 'provider': 'provider', 'volumetag': 'volumetag', 'volumeid': 'volumeid'}
-    _toPy = {'volumetag': 'volumetag', 'machinetag': 'machinetag', 'instanceid': 'instanceid', 'volumeid': 'volumeid', 'read-only': 'read_only', 'provider': 'provider'}
-    def __init__(self, instanceid=None, machinetag=None, provider=None, read_only=None, volumeid=None, volumetag=None):
-        '''
-        instanceid : str
-        machinetag : str
-        provider : str
-        read_only : bool
-        volumeid : str
-        volumetag : str
-        '''
-        self.instanceid = instanceid
-        self.machinetag = machinetag
-        self.provider = provider
-        self.read_only = read_only
-        self.volumeid = volumeid
-        self.volumetag = volumetag
-
-
-class VolumeInfo(Type):
-    _toSchema = {'hardwareid': 'hardwareid', 'persistent': 'persistent', 'volumeid': 'volumeid', 'size': 'size'}
-    _toPy = {'hardwareid': 'hardwareid', 'persistent': 'persistent', 'volumeid': 'volumeid', 'size': 'size'}
-    def __init__(self, hardwareid=None, persistent=None, size=None, volumeid=None):
-        '''
-        hardwareid : str
-        persistent : bool
-        size : int
-        volumeid : str
-        '''
-        self.hardwareid = hardwareid
-        self.persistent = persistent
-        self.size = size
-        self.volumeid = volumeid
-
-
-class VolumeParams(Type):
-    _toSchema = {'volumetag': 'volumetag', 'attachment': 'attachment', 'size': 'size', 'attributes': 'attributes', 'provider': 'provider', 'tags': 'tags'}
-    _toPy = {'volumetag': 'volumetag', 'attachment': 'attachment', 'size': 'size', 'attributes': 'attributes', 'provider': 'provider', 'tags': 'tags'}
-    def __init__(self, attachment=None, attributes=None, provider=None, size=None, tags=None, volumetag=None):
-        '''
-        attachment : VolumeAttachmentParams
-        attributes : typing.Mapping[str, typing.Any]
-        provider : str
-        size : int
-        tags : typing.Mapping[str, str]
-        volumetag : str
-        '''
-        self.attachment = VolumeAttachmentParams.from_json(attachment)
-        self.attributes = attributes
-        self.provider = provider
-        self.size = size
-        self.tags = tags
-        self.volumetag = volumetag
-
-
-class WatchContainer(Type):
-    _toSchema = {'containertype': 'ContainerType', 'machinetag': 'MachineTag'}
-    _toPy = {'MachineTag': 'machinetag', 'ContainerType': 'containertype'}
-    def __init__(self, containertype=None, machinetag=None):
-        '''
-        containertype : str
-        machinetag : str
-        '''
-        self.containertype = containertype
-        self.machinetag = machinetag
-
-
-class WatchContainers(Type):
-    _toSchema = {'params': 'Params'}
-    _toPy = {'Params': 'params'}
-    def __init__(self, params=None):
-        '''
-        params : typing.Sequence[~WatchContainer]
-        '''
-        self.params = [WatchContainer.from_json(o) for o in params or []]
-
-
-class ProxyConfig(Type):
-    _toSchema = {'http': 'HTTP', 'ftp': 'FTP', 'noproxy': 'NoProxy', 'https': 'HTTPS'}
-    _toPy = {'HTTP': 'http', 'FTP': 'ftp', 'HTTPS': 'https', 'NoProxy': 'noproxy'}
-    def __init__(self, ftp=None, http=None, https=None, noproxy=None):
-        '''
-        ftp : str
-        http : str
-        https : str
-        noproxy : str
-        '''
-        self.ftp = ftp
-        self.http = http
-        self.https = https
-        self.noproxy = noproxy
-
-
-class ProxyConfigResult(Type):
-    _toSchema = {'proxysettings': 'ProxySettings', 'error': 'Error', 'aptproxysettings': 'APTProxySettings'}
-    _toPy = {'Error': 'error', 'ProxySettings': 'proxysettings', 'APTProxySettings': 'aptproxysettings'}
-    def __init__(self, aptproxysettings=None, error=None, proxysettings=None):
-        '''
-        aptproxysettings : ProxyConfig
-        error : Error
-        proxysettings : ProxyConfig
-        '''
-        self.aptproxysettings = ProxyConfig.from_json(aptproxysettings)
-        self.error = Error.from_json(error)
-        self.proxysettings = ProxyConfig.from_json(proxysettings)
-
-
-class ProxyConfigResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~ProxyConfigResult]
-        '''
-        self.results = [ProxyConfigResult.from_json(o) for o in results or []]
-
-
-class RebootActionResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : str
-        '''
-        self.error = Error.from_json(error)
-        self.result = result
-
-
-class RebootActionResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~RebootActionResult]
-        '''
-        self.results = [RebootActionResult.from_json(o) for o in results or []]
-
-
-class RelationUnitsChange(Type):
-    _toSchema = {'changed': 'Changed', 'departed': 'Departed'}
-    _toPy = {'Changed': 'changed', 'Departed': 'departed'}
-    def __init__(self, changed=None, departed=None):
-        '''
-        changed : typing.Mapping[str, ~UnitSettings]
-        departed : typing.Sequence[str]
-        '''
-        self.changed = {k: UnitSettings.from_json(v) for k, v in (changed or dict()).items()}
-        self.departed = departed
-
-
-class RelationUnitsWatchResult(Type):
-    _toSchema = {'changes': 'Changes', 'relationunitswatcherid': 'RelationUnitsWatcherId', 'error': 'Error'}
-    _toPy = {'RelationUnitsWatcherId': 'relationunitswatcherid', 'Error': 'error', 'Changes': 'changes'}
-    def __init__(self, changes=None, error=None, relationunitswatcherid=None):
-        '''
-        changes : RelationUnitsChange
-        error : Error
-        relationunitswatcherid : str
-        '''
-        self.changes = RelationUnitsChange.from_json(changes)
-        self.error = Error.from_json(error)
-        self.relationunitswatcherid = relationunitswatcherid
-
-
-class UnitSettings(Type):
-    _toSchema = {'version': 'Version'}
-    _toPy = {'Version': 'version'}
-    def __init__(self, version=None):
-        '''
-        version : int
-        '''
-        self.version = version
-
-
-class RetryStrategy(Type):
-    _toSchema = {'jitterretrytime': 'JitterRetryTime', 'shouldretry': 'ShouldRetry', 'retrytimefactor': 'RetryTimeFactor', 'minretrytime': 'MinRetryTime', 'maxretrytime': 'MaxRetryTime'}
-    _toPy = {'MaxRetryTime': 'maxretrytime', 'JitterRetryTime': 'jitterretrytime', 'MinRetryTime': 'minretrytime', 'ShouldRetry': 'shouldretry', 'RetryTimeFactor': 'retrytimefactor'}
-    def __init__(self, jitterretrytime=None, maxretrytime=None, minretrytime=None, retrytimefactor=None, shouldretry=None):
-        '''
-        jitterretrytime : bool
-        maxretrytime : int
-        minretrytime : int
-        retrytimefactor : int
-        shouldretry : bool
-        '''
-        self.jitterretrytime = jitterretrytime
-        self.maxretrytime = maxretrytime
-        self.minretrytime = minretrytime
-        self.retrytimefactor = retrytimefactor
-        self.shouldretry = shouldretry
-
-
-class RetryStrategyResult(Type):
-    _toSchema = {'error': 'Error', 'result': 'Result'}
-    _toPy = {'Error': 'error', 'Result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : RetryStrategy
-        '''
-        self.error = Error.from_json(error)
-        self.result = RetryStrategy.from_json(result)
-
-
-class RetryStrategyResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~RetryStrategyResult]
-        '''
-        self.results = [RetryStrategyResult.from_json(o) for o in results or []]
-
-
-class SSHAddressResult(Type):
-    _toSchema = {'error': 'error', 'address': 'address'}
-    _toPy = {'error': 'error', 'address': 'address'}
-    def __init__(self, address=None, error=None):
-        '''
-        address : str
-        error : Error
-        '''
-        self.address = address
-        self.error = Error.from_json(error)
-
-
-class SSHAddressResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~SSHAddressResult]
-        '''
-        self.results = [SSHAddressResult.from_json(o) for o in results or []]
-
-
-class SSHProxyResult(Type):
-    _toSchema = {'use_proxy': 'use-proxy'}
-    _toPy = {'use-proxy': 'use_proxy'}
-    def __init__(self, use_proxy=None):
-        '''
-        use_proxy : bool
-        '''
-        self.use_proxy = use_proxy
-
-
-class SSHPublicKeysResult(Type):
-    _toSchema = {'error': 'error', 'public_keys': 'public-keys'}
-    _toPy = {'public-keys': 'public_keys', 'error': 'error'}
-    def __init__(self, error=None, public_keys=None):
-        '''
-        error : Error
-        public_keys : typing.Sequence[str]
-        '''
-        self.error = Error.from_json(error)
-        self.public_keys = public_keys
-
-
-class SSHPublicKeysResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~SSHPublicKeysResult]
-        '''
-        self.results = [SSHPublicKeysResult.from_json(o) for o in results or []]
-
-
-class AddRelation(Type):
-    _toSchema = {'endpoints': 'Endpoints'}
-    _toPy = {'Endpoints': 'endpoints'}
-    def __init__(self, endpoints=None):
-        '''
-        endpoints : typing.Sequence[str]
-        '''
-        self.endpoints = endpoints
-
-
-class AddRelationResults(Type):
-    _toSchema = {'endpoints': 'Endpoints'}
-    _toPy = {'Endpoints': 'endpoints'}
-    def __init__(self, endpoints=None):
-        '''
-        endpoints : typing.Mapping[str, ~Relation]
-        '''
-        self.endpoints = {k: Relation.from_json(v) for k, v in (endpoints or dict()).items()}
-
-
-class AddServiceUnits(Type):
-    _toSchema = {'servicename': 'ServiceName', 'placement': 'Placement', 'numunits': 'NumUnits'}
-    _toPy = {'NumUnits': 'numunits', 'Placement': 'placement', 'ServiceName': 'servicename'}
-    def __init__(self, numunits=None, placement=None, servicename=None):
-        '''
-        numunits : int
-        placement : typing.Sequence[~Placement]
-        servicename : str
-        '''
-        self.numunits = numunits
-        self.placement = [Placement.from_json(o) for o in placement or []]
-        self.servicename = servicename
-
-
-class AddServiceUnitsResults(Type):
-    _toSchema = {'units': 'Units'}
-    _toPy = {'Units': 'units'}
-    def __init__(self, units=None):
-        '''
-        units : typing.Sequence[str]
-        '''
-        self.units = units
-
-
-class DestroyRelation(Type):
-    _toSchema = {'endpoints': 'Endpoints'}
-    _toPy = {'Endpoints': 'endpoints'}
-    def __init__(self, endpoints=None):
-        '''
-        endpoints : typing.Sequence[str]
-        '''
-        self.endpoints = endpoints
-
-
-class DestroyServiceUnits(Type):
-    _toSchema = {'unitnames': 'UnitNames'}
-    _toPy = {'UnitNames': 'unitnames'}
-    def __init__(self, unitnames=None):
-        '''
-        unitnames : typing.Sequence[str]
-        '''
-        self.unitnames = unitnames
-
-
-class GetServiceConstraints(Type):
-    _toSchema = {'servicename': 'ServiceName'}
-    _toPy = {'ServiceName': 'servicename'}
-    def __init__(self, servicename=None):
-        '''
-        servicename : str
-        '''
-        self.servicename = servicename
-
-
-class Relation(Type):
-    _toSchema = {'scope': 'Scope', 'name': 'Name', 'optional': 'Optional', 'role': 'Role', 'interface': 'Interface', 'limit': 'Limit'}
-    _toPy = {'Interface': 'interface', 'Scope': 'scope', 'Role': 'role', 'Name': 'name', 'Limit': 'limit', 'Optional': 'optional'}
-    def __init__(self, interface=None, limit=None, name=None, optional=None, role=None, scope=None):
-        '''
-        interface : str
-        limit : int
-        name : str
-        optional : bool
-        role : str
-        scope : str
-        '''
-        self.interface = interface
-        self.limit = limit
-        self.name = name
-        self.optional = optional
-        self.role = role
-        self.scope = scope
-
-
-class ServiceCharmRelations(Type):
-    _toSchema = {'servicename': 'ServiceName'}
-    _toPy = {'ServiceName': 'servicename'}
-    def __init__(self, servicename=None):
-        '''
-        servicename : str
-        '''
-        self.servicename = servicename
-
-
-class ServiceCharmRelationsResults(Type):
-    _toSchema = {'charmrelations': 'CharmRelations'}
-    _toPy = {'CharmRelations': 'charmrelations'}
-    def __init__(self, charmrelations=None):
-        '''
-        charmrelations : typing.Sequence[str]
-        '''
-        self.charmrelations = charmrelations
-
-
-class ServiceDeploy(Type):
-    _toSchema = {'placement': 'Placement', 'numunits': 'NumUnits', 'endpointbindings': 'EndpointBindings', 'servicename': 'ServiceName', 'storage': 'Storage', 'resources': 'Resources', 'charmurl': 'CharmUrl', 'configyaml': 'ConfigYAML', 'series': 'Series', 'channel': 'Channel', 'config': 'Config', 'constraints': 'Constraints'}
-    _toPy = {'Constraints': 'constraints', 'Channel': 'channel', 'Config': 'config', 'Placement': 'placement', 'Resources': 'resources', 'Storage': 'storage', 'CharmUrl': 'charmurl', 'ConfigYAML': 'configyaml', 'NumUnits': 'numunits', 'ServiceName': 'servicename', 'EndpointBindings': 'endpointbindings', 'Series': 'series'}
-    def __init__(self, channel=None, charmurl=None, config=None, configyaml=None, constraints=None, endpointbindings=None, numunits=None, placement=None, resources=None, series=None, servicename=None, storage=None):
-        '''
-        channel : str
-        charmurl : str
-        config : typing.Mapping[str, str]
-        configyaml : str
-        constraints : Value
-        endpointbindings : typing.Mapping[str, str]
-        numunits : int
-        placement : typing.Sequence[~Placement]
-        resources : typing.Mapping[str, str]
-        series : str
-        servicename : str
-        storage : typing.Mapping[str, ~Constraints]
-        '''
-        self.channel = channel
-        self.charmurl = charmurl
-        self.config = config
-        self.configyaml = configyaml
-        self.constraints = Value.from_json(constraints)
-        self.endpointbindings = endpointbindings
-        self.numunits = numunits
-        self.placement = [Placement.from_json(o) for o in placement or []]
-        self.resources = resources
-        self.series = series
-        self.servicename = servicename
-        self.storage = {k: Constraints.from_json(v) for k, v in (storage or dict()).items()}
-
-
-class ServiceDestroy(Type):
-    _toSchema = {'servicename': 'ServiceName'}
-    _toPy = {'ServiceName': 'servicename'}
-    def __init__(self, servicename=None):
-        '''
-        servicename : str
-        '''
-        self.servicename = servicename
-
-
-class ServiceExpose(Type):
-    _toSchema = {'servicename': 'ServiceName'}
-    _toPy = {'ServiceName': 'servicename'}
-    def __init__(self, servicename=None):
-        '''
-        servicename : str
-        '''
-        self.servicename = servicename
-
-
-class ServiceGet(Type):
-    _toSchema = {'servicename': 'ServiceName'}
-    _toPy = {'ServiceName': 'servicename'}
-    def __init__(self, servicename=None):
-        '''
-        servicename : str
-        '''
-        self.servicename = servicename
-
-
-class ServiceGetResults(Type):
-    _toSchema = {'service': 'Service', 'charm': 'Charm', 'constraints': 'Constraints', 'config': 'Config'}
-    _toPy = {'Constraints': 'constraints', 'Charm': 'charm', 'Service': 'service', 'Config': 'config'}
-    def __init__(self, charm=None, config=None, constraints=None, service=None):
-        '''
-        charm : str
-        config : typing.Mapping[str, typing.Any]
-        constraints : Value
-        service : str
-        '''
-        self.charm = charm
-        self.config = config
-        self.constraints = Value.from_json(constraints)
-        self.service = service
-
-
-class ServiceMetricCredential(Type):
-    _toSchema = {'servicename': 'ServiceName', 'metriccredentials': 'MetricCredentials'}
-    _toPy = {'ServiceName': 'servicename', 'MetricCredentials': 'metriccredentials'}
-    def __init__(self, metriccredentials=None, servicename=None):
-        '''
-        metriccredentials : typing.Sequence[int]
-        servicename : str
-        '''
-        self.metriccredentials = metriccredentials
-        self.servicename = servicename
-
-
-class ServiceMetricCredentials(Type):
-    _toSchema = {'creds': 'Creds'}
-    _toPy = {'Creds': 'creds'}
-    def __init__(self, creds=None):
-        '''
-        creds : typing.Sequence[~ServiceMetricCredential]
-        '''
-        self.creds = [ServiceMetricCredential.from_json(o) for o in creds or []]
-
-
-class ServiceSet(Type):
-    _toSchema = {'servicename': 'ServiceName', 'options': 'Options'}
-    _toPy = {'Options': 'options', 'ServiceName': 'servicename'}
-    def __init__(self, options=None, servicename=None):
-        '''
-        options : typing.Mapping[str, str]
-        servicename : str
-        '''
-        self.options = options
-        self.servicename = servicename
-
-
-class ServiceSetCharm(Type):
-    _toSchema = {'forceunits': 'forceunits', 'servicename': 'servicename', 'resourceids': 'resourceids', 'cs_channel': 'cs-channel', 'charmurl': 'charmurl', 'forceseries': 'forceseries'}
-    _toPy = {'cs-channel': 'cs_channel', 'forceunits': 'forceunits', 'servicename': 'servicename', 'resourceids': 'resourceids', 'charmurl': 'charmurl', 'forceseries': 'forceseries'}
-    def __init__(self, charmurl=None, cs_channel=None, forceseries=None, forceunits=None, resourceids=None, servicename=None):
-        '''
-        charmurl : str
-        cs_channel : str
-        forceseries : bool
-        forceunits : bool
-        resourceids : typing.Mapping[str, str]
-        servicename : str
-        '''
-        self.charmurl = charmurl
-        self.cs_channel = cs_channel
-        self.forceseries = forceseries
-        self.forceunits = forceunits
-        self.resourceids = resourceids
-        self.servicename = servicename
-
-
-class ServiceUnexpose(Type):
-    _toSchema = {'servicename': 'ServiceName'}
-    _toPy = {'ServiceName': 'servicename'}
-    def __init__(self, servicename=None):
-        '''
-        servicename : str
-        '''
-        self.servicename = servicename
-
-
-class ServiceUnset(Type):
-    _toSchema = {'servicename': 'ServiceName', 'options': 'Options'}
-    _toPy = {'Options': 'options', 'ServiceName': 'servicename'}
-    def __init__(self, options=None, servicename=None):
-        '''
-        options : typing.Sequence[str]
-        servicename : str
-        '''
-        self.options = options
-        self.servicename = servicename
-
-
-class ServiceUpdate(Type):
-    _toSchema = {'minunits': 'MinUnits', 'settingsyaml': 'SettingsYAML', 'servicename': 'ServiceName', 'settingsstrings': 'SettingsStrings', 'forcecharmurl': 'ForceCharmUrl', 'constraints': 'Constraints', 'charmurl': 'CharmUrl', 'forceseries': 'ForceSeries'}
-    _toPy = {'Constraints': 'constraints', 'CharmUrl': 'charmurl', 'ForceSeries': 'forceseries', 'ForceCharmUrl': 'forcecharmurl', 'MinUnits': 'minunits', 'ServiceName': 'servicename', 'SettingsStrings': 'settingsstrings', 'SettingsYAML': 'settingsyaml'}
-    def __init__(self, charmurl=None, constraints=None, forcecharmurl=None, forceseries=None, minunits=None, servicename=None, settingsstrings=None, settingsyaml=None):
-        '''
-        charmurl : str
-        constraints : Value
-        forcecharmurl : bool
-        forceseries : bool
-        minunits : int
-        servicename : str
-        settingsstrings : typing.Mapping[str, str]
-        settingsyaml : str
-        '''
-        self.charmurl = charmurl
-        self.constraints = Value.from_json(constraints)
-        self.forcecharmurl = forcecharmurl
-        self.forceseries = forceseries
-        self.minunits = minunits
-        self.servicename = servicename
-        self.settingsstrings = settingsstrings
-        self.settingsyaml = settingsyaml
-
-
-class ServicesDeploy(Type):
-    _toSchema = {'services': 'Services'}
-    _toPy = {'Services': 'services'}
-    def __init__(self, services=None):
-        '''
-        services : typing.Sequence[~ServiceDeploy]
-        '''
-        self.services = [ServiceDeploy.from_json(o) for o in services or []]
-
-
-class SingularClaim(Type):
-    _toSchema = {'modeltag': 'ModelTag', 'controllertag': 'ControllerTag', 'duration': 'Duration'}
-    _toPy = {'Duration': 'duration', 'ControllerTag': 'controllertag', 'ModelTag': 'modeltag'}
-    def __init__(self, controllertag=None, duration=None, modeltag=None):
-        '''
-        controllertag : str
-        duration : int
-        modeltag : str
-        '''
-        self.controllertag = controllertag
-        self.duration = duration
-        self.modeltag = modeltag
-
-
-class SingularClaims(Type):
-    _toSchema = {'claims': 'Claims'}
-    _toPy = {'Claims': 'claims'}
-    def __init__(self, claims=None):
-        '''
-        claims : typing.Sequence[~SingularClaim]
-        '''
-        self.claims = [SingularClaim.from_json(o) for o in claims or []]
-
-
-class ListSpacesResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~Space]
-        '''
-        self.results = [Space.from_json(o) for o in results or []]
-
-
-class Space(Type):
-    _toSchema = {'name': 'Name', 'error': 'Error', 'subnets': 'Subnets'}
-    _toPy = {'Name': 'name', 'Subnets': 'subnets', 'Error': 'error'}
-    def __init__(self, error=None, name=None, subnets=None):
-        '''
-        error : Error
-        name : str
-        subnets : typing.Sequence[~Subnet]
-        '''
-        self.error = Error.from_json(error)
-        self.name = name
-        self.subnets = [Subnet.from_json(o) for o in subnets or []]
-
-
-class StatusHistoryPruneArgs(Type):
-    _toSchema = {'maxlogsperentity': 'MaxLogsPerEntity'}
-    _toPy = {'MaxLogsPerEntity': 'maxlogsperentity'}
-    def __init__(self, maxlogsperentity=None):
-        '''
-        maxlogsperentity : int
-        '''
-        self.maxlogsperentity = maxlogsperentity
-
-
-class FilesystemAttachmentInfo(Type):
-    _toSchema = {'read_only': 'read-only', 'mountpoint': 'mountpoint'}
-    _toPy = {'read-only': 'read_only', 'mountpoint': 'mountpoint'}
-    def __init__(self, mountpoint=None, read_only=None):
-        '''
-        mountpoint : str
-        read_only : bool
-        '''
-        self.mountpoint = mountpoint
-        self.read_only = read_only
-
-
-class FilesystemDetails(Type):
-    _toSchema = {'info': 'info', 'volumetag': 'volumetag', 'machineattachments': 'machineattachments', 'storage': 'storage', 'filesystemtag': 'filesystemtag', 'status': 'status'}
-    _toPy = {'info': 'info', 'volumetag': 'volumetag', 'machineattachments': 'machineattachments', 'storage': 'storage', 'filesystemtag': 'filesystemtag', 'status': 'status'}
-    def __init__(self, filesystemtag=None, info=None, machineattachments=None, status=None, storage=None, volumetag=None):
-        '''
-        filesystemtag : str
-        info : FilesystemInfo
-        machineattachments : typing.Mapping[str, ~FilesystemAttachmentInfo]
-        status : EntityStatus
-        storage : StorageDetails
-        volumetag : str
-        '''
-        self.filesystemtag = filesystemtag
-        self.info = FilesystemInfo.from_json(info)
-        self.machineattachments = {k: FilesystemAttachmentInfo.from_json(v) for k, v in (machineattachments or dict()).items()}
-        self.status = EntityStatus.from_json(status)
-        self.storage = StorageDetails.from_json(storage)
-        self.volumetag = volumetag
-
-
-class FilesystemDetailsListResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : typing.Sequence[~FilesystemDetails]
-        '''
-        self.error = Error.from_json(error)
-        self.result = [FilesystemDetails.from_json(o) for o in result or []]
-
-
-class FilesystemDetailsListResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~FilesystemDetailsListResult]
-        '''
-        self.results = [FilesystemDetailsListResult.from_json(o) for o in results or []]
-
-
-class FilesystemFilter(Type):
-    _toSchema = {'machines': 'machines'}
-    _toPy = {'machines': 'machines'}
-    def __init__(self, machines=None):
-        '''
-        machines : typing.Sequence[str]
-        '''
-        self.machines = machines
-
-
-class FilesystemFilters(Type):
-    _toSchema = {'filters': 'filters'}
-    _toPy = {'filters': 'filters'}
-    def __init__(self, filters=None):
-        '''
-        filters : typing.Sequence[~FilesystemFilter]
-        '''
-        self.filters = [FilesystemFilter.from_json(o) for o in filters or []]
-
-
-class FilesystemInfo(Type):
-    _toSchema = {'size': 'size', 'filesystemid': 'filesystemid'}
-    _toPy = {'size': 'size', 'filesystemid': 'filesystemid'}
-    def __init__(self, filesystemid=None, size=None):
-        '''
-        filesystemid : str
-        size : int
-        '''
-        self.filesystemid = filesystemid
-        self.size = size
-
-
-class StorageAddParams(Type):
-    _toSchema = {'storagename': 'StorageName', 'storage': 'storage', 'unit': 'unit'}
-    _toPy = {'StorageName': 'storagename', 'storage': 'storage', 'unit': 'unit'}
-    def __init__(self, storagename=None, storage=None, unit=None):
-        '''
-        storagename : str
-        storage : StorageConstraints
-        unit : str
-        '''
-        self.storagename = storagename
-        self.storage = StorageConstraints.from_json(storage)
-        self.unit = unit
-
-
-class StorageAttachmentDetails(Type):
-    _toSchema = {'storagetag': 'storagetag', 'machinetag': 'machinetag', 'location': 'location', 'unittag': 'unittag'}
-    _toPy = {'storagetag': 'storagetag', 'machinetag': 'machinetag', 'location': 'location', 'unittag': 'unittag'}
-    def __init__(self, location=None, machinetag=None, storagetag=None, unittag=None):
-        '''
-        location : str
-        machinetag : str
-        storagetag : str
-        unittag : str
-        '''
-        self.location = location
-        self.machinetag = machinetag
-        self.storagetag = storagetag
-        self.unittag = unittag
-
-
-class StorageConstraints(Type):
-    _toSchema = {'pool': 'Pool', 'count': 'Count', 'size': 'Size'}
-    _toPy = {'Pool': 'pool', 'Count': 'count', 'Size': 'size'}
-    def __init__(self, count=None, pool=None, size=None):
-        '''
-        count : int
-        pool : str
-        size : int
-        '''
-        self.count = count
-        self.pool = pool
-        self.size = size
-
-
-class StorageDetails(Type):
-    _toSchema = {'kind': 'kind', 'persistent': 'Persistent', 'attachments': 'attachments', 'storagetag': 'storagetag', 'ownertag': 'ownertag', 'status': 'status'}
-    _toPy = {'kind': 'kind', 'attachments': 'attachments', 'storagetag': 'storagetag', 'Persistent': 'persistent', 'ownertag': 'ownertag', 'status': 'status'}
-    def __init__(self, persistent=None, attachments=None, kind=None, ownertag=None, status=None, storagetag=None):
-        '''
-        persistent : bool
-        attachments : typing.Mapping[str, ~StorageAttachmentDetails]
-        kind : int
-        ownertag : str
-        status : EntityStatus
-        storagetag : str
-        '''
-        self.persistent = persistent
-        self.attachments = {k: StorageAttachmentDetails.from_json(v) for k, v in (attachments or dict()).items()}
-        self.kind = kind
-        self.ownertag = ownertag
-        self.status = EntityStatus.from_json(status)
-        self.storagetag = storagetag
-
-
-class StorageDetailsListResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : typing.Sequence[~StorageDetails]
-        '''
-        self.error = Error.from_json(error)
-        self.result = [StorageDetails.from_json(o) for o in result or []]
-
-
-class StorageDetailsListResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~StorageDetailsListResult]
-        '''
-        self.results = [StorageDetailsListResult.from_json(o) for o in results or []]
-
-
-class StorageDetailsResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : StorageDetails
-        '''
-        self.error = Error.from_json(error)
-        self.result = StorageDetails.from_json(result)
-
-
-class StorageDetailsResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~StorageDetailsResult]
-        '''
-        self.results = [StorageDetailsResult.from_json(o) for o in results or []]
-
-
-class StorageFilter(Type):
-    _toSchema = {}
-    _toPy = {}
-    def __init__(self):
-        '''
-
-        '''
-        pass
-
-
-class StorageFilters(Type):
-    _toSchema = {'filters': 'filters'}
-    _toPy = {'filters': 'filters'}
-    def __init__(self, filters=None):
-        '''
-        filters : typing.Sequence[~StorageFilter]
-        '''
-        self.filters = [StorageFilter.from_json(o) for o in filters or []]
-
-
-class StoragePool(Type):
-    _toSchema = {'attrs': 'attrs', 'name': 'name', 'provider': 'provider'}
-    _toPy = {'attrs': 'attrs', 'name': 'name', 'provider': 'provider'}
-    def __init__(self, attrs=None, name=None, provider=None):
-        '''
-        attrs : typing.Mapping[str, typing.Any]
-        name : str
-        provider : str
-        '''
-        self.attrs = attrs
-        self.name = name
-        self.provider = provider
-
-
-class StoragePoolFilter(Type):
-    _toSchema = {'names': 'names', 'providers': 'providers'}
-    _toPy = {'names': 'names', 'providers': 'providers'}
-    def __init__(self, names=None, providers=None):
-        '''
-        names : typing.Sequence[str]
-        providers : typing.Sequence[str]
-        '''
-        self.names = names
-        self.providers = providers
-
-
-class StoragePoolFilters(Type):
-    _toSchema = {'filters': 'filters'}
-    _toPy = {'filters': 'filters'}
-    def __init__(self, filters=None):
-        '''
-        filters : typing.Sequence[~StoragePoolFilter]
-        '''
-        self.filters = [StoragePoolFilter.from_json(o) for o in filters or []]
-
-
-class StoragePoolsResult(Type):
-    _toSchema = {'storagepools': 'storagepools', 'error': 'error'}
-    _toPy = {'storagepools': 'storagepools', 'error': 'error'}
-    def __init__(self, error=None, storagepools=None):
-        '''
-        error : Error
-        storagepools : typing.Sequence[~StoragePool]
-        '''
-        self.error = Error.from_json(error)
-        self.storagepools = [StoragePool.from_json(o) for o in storagepools or []]
-
-
-class StoragePoolsResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~StoragePoolsResult]
-        '''
-        self.results = [StoragePoolsResult.from_json(o) for o in results or []]
-
-
-class StoragesAddParams(Type):
-    _toSchema = {'storages': 'storages'}
-    _toPy = {'storages': 'storages'}
-    def __init__(self, storages=None):
-        '''
-        storages : typing.Sequence[~StorageAddParams]
-        '''
-        self.storages = [StorageAddParams.from_json(o) for o in storages or []]
-
-
-class VolumeDetails(Type):
-    _toSchema = {'info': 'info', 'volumetag': 'volumetag', 'machineattachments': 'machineattachments', 'storage': 'storage', 'status': 'status'}
-    _toPy = {'info': 'info', 'volumetag': 'volumetag', 'machineattachments': 'machineattachments', 'storage': 'storage', 'status': 'status'}
-    def __init__(self, info=None, machineattachments=None, status=None, storage=None, volumetag=None):
-        '''
-        info : VolumeInfo
-        machineattachments : typing.Mapping[str, ~VolumeAttachmentInfo]
-        status : EntityStatus
-        storage : StorageDetails
-        volumetag : str
-        '''
-        self.info = VolumeInfo.from_json(info)
-        self.machineattachments = {k: VolumeAttachmentInfo.from_json(v) for k, v in (machineattachments or dict()).items()}
-        self.status = EntityStatus.from_json(status)
-        self.storage = StorageDetails.from_json(storage)
-        self.volumetag = volumetag
-
-
-class VolumeDetailsListResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : typing.Sequence[~VolumeDetails]
-        '''
-        self.error = Error.from_json(error)
-        self.result = [VolumeDetails.from_json(o) for o in result or []]
-
-
-class VolumeDetailsListResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~VolumeDetailsListResult]
-        '''
-        self.results = [VolumeDetailsListResult.from_json(o) for o in results or []]
-
-
-class VolumeFilter(Type):
-    _toSchema = {'machines': 'machines'}
-    _toPy = {'machines': 'machines'}
-    def __init__(self, machines=None):
-        '''
-        machines : typing.Sequence[str]
-        '''
-        self.machines = machines
-
-
-class VolumeFilters(Type):
-    _toSchema = {'filters': 'filters'}
-    _toPy = {'filters': 'filters'}
-    def __init__(self, filters=None):
-        '''
-        filters : typing.Sequence[~VolumeFilter]
-        '''
-        self.filters = [VolumeFilter.from_json(o) for o in filters or []]
-
-
-class BlockDeviceResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : BlockDevice
-        '''
-        self.error = Error.from_json(error)
-        self.result = BlockDevice.from_json(result)
-
-
-class BlockDeviceResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~BlockDeviceResult]
-        '''
-        self.results = [BlockDeviceResult.from_json(o) for o in results or []]
-
-
-class Filesystem(Type):
-    _toSchema = {'info': 'info', 'volumetag': 'volumetag', 'filesystemtag': 'filesystemtag'}
-    _toPy = {'info': 'info', 'volumetag': 'volumetag', 'filesystemtag': 'filesystemtag'}
-    def __init__(self, filesystemtag=None, info=None, volumetag=None):
-        '''
-        filesystemtag : str
-        info : FilesystemInfo
-        volumetag : str
-        '''
-        self.filesystemtag = filesystemtag
-        self.info = FilesystemInfo.from_json(info)
-        self.volumetag = volumetag
-
-
-class FilesystemAttachment(Type):
-    _toSchema = {'info': 'info', 'filesystemtag': 'filesystemtag', 'machinetag': 'machinetag'}
-    _toPy = {'info': 'info', 'filesystemtag': 'filesystemtag', 'machinetag': 'machinetag'}
-    def __init__(self, filesystemtag=None, info=None, machinetag=None):
-        '''
-        filesystemtag : str
-        info : FilesystemAttachmentInfo
-        machinetag : str
-        '''
-        self.filesystemtag = filesystemtag
-        self.info = FilesystemAttachmentInfo.from_json(info)
-        self.machinetag = machinetag
-
-
-class FilesystemAttachmentParams(Type):
-    _toSchema = {'read_only': 'read-only', 'machinetag': 'machinetag', 'mountpoint': 'mountpoint', 'instanceid': 'instanceid', 'filesystemtag': 'filesystemtag', 'provider': 'provider', 'filesystemid': 'filesystemid'}
-    _toPy = {'read-only': 'read_only', 'machinetag': 'machinetag', 'mountpoint': 'mountpoint', 'instanceid': 'instanceid', 'filesystemtag': 'filesystemtag', 'provider': 'provider', 'filesystemid': 'filesystemid'}
-    def __init__(self, filesystemid=None, filesystemtag=None, instanceid=None, machinetag=None, mountpoint=None, provider=None, read_only=None):
-        '''
-        filesystemid : str
-        filesystemtag : str
-        instanceid : str
-        machinetag : str
-        mountpoint : str
-        provider : str
-        read_only : bool
-        '''
-        self.filesystemid = filesystemid
-        self.filesystemtag = filesystemtag
-        self.instanceid = instanceid
-        self.machinetag = machinetag
-        self.mountpoint = mountpoint
-        self.provider = provider
-        self.read_only = read_only
-
-
-class FilesystemAttachmentParamsResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : FilesystemAttachmentParams
-        '''
-        self.error = Error.from_json(error)
-        self.result = FilesystemAttachmentParams.from_json(result)
-
-
-class FilesystemAttachmentParamsResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~FilesystemAttachmentParamsResult]
-        '''
-        self.results = [FilesystemAttachmentParamsResult.from_json(o) for o in results or []]
-
-
-class FilesystemAttachmentResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : FilesystemAttachment
-        '''
-        self.error = Error.from_json(error)
-        self.result = FilesystemAttachment.from_json(result)
-
-
-class FilesystemAttachmentResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~FilesystemAttachmentResult]
-        '''
-        self.results = [FilesystemAttachmentResult.from_json(o) for o in results or []]
-
-
-class FilesystemAttachments(Type):
-    _toSchema = {'filesystemattachments': 'filesystemattachments'}
-    _toPy = {'filesystemattachments': 'filesystemattachments'}
-    def __init__(self, filesystemattachments=None):
-        '''
-        filesystemattachments : typing.Sequence[~FilesystemAttachment]
-        '''
-        self.filesystemattachments = [FilesystemAttachment.from_json(o) for o in filesystemattachments or []]
-
-
-class FilesystemParams(Type):
-    _toSchema = {'volumetag': 'volumetag', 'attachment': 'attachment', 'size': 'size', 'attributes': 'attributes', 'filesystemtag': 'filesystemtag', 'provider': 'provider', 'tags': 'tags'}
-    _toPy = {'volumetag': 'volumetag', 'attachment': 'attachment', 'size': 'size', 'attributes': 'attributes', 'filesystemtag': 'filesystemtag', 'provider': 'provider', 'tags': 'tags'}
-    def __init__(self, attachment=None, attributes=None, filesystemtag=None, provider=None, size=None, tags=None, volumetag=None):
-        '''
-        attachment : FilesystemAttachmentParams
-        attributes : typing.Mapping[str, typing.Any]
-        filesystemtag : str
-        provider : str
-        size : int
-        tags : typing.Mapping[str, str]
-        volumetag : str
-        '''
-        self.attachment = FilesystemAttachmentParams.from_json(attachment)
-        self.attributes = attributes
-        self.filesystemtag = filesystemtag
-        self.provider = provider
-        self.size = size
-        self.tags = tags
-        self.volumetag = volumetag
-
-
-class FilesystemParamsResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : FilesystemParams
-        '''
-        self.error = Error.from_json(error)
-        self.result = FilesystemParams.from_json(result)
-
-
-class FilesystemParamsResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~FilesystemParamsResult]
-        '''
-        self.results = [FilesystemParamsResult.from_json(o) for o in results or []]
-
-
-class FilesystemResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : Filesystem
-        '''
-        self.error = Error.from_json(error)
-        self.result = Filesystem.from_json(result)
-
-
-class FilesystemResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~FilesystemResult]
-        '''
-        self.results = [FilesystemResult.from_json(o) for o in results or []]
-
-
-class Filesystems(Type):
-    _toSchema = {'filesystems': 'filesystems'}
-    _toPy = {'filesystems': 'filesystems'}
-    def __init__(self, filesystems=None):
-        '''
-        filesystems : typing.Sequence[~Filesystem]
-        '''
-        self.filesystems = [Filesystem.from_json(o) for o in filesystems or []]
-
-
-class MachineStorageIds(Type):
-    _toSchema = {'ids': 'ids'}
-    _toPy = {'ids': 'ids'}
-    def __init__(self, ids=None):
-        '''
-        ids : typing.Sequence[~MachineStorageId]
-        '''
-        self.ids = [MachineStorageId.from_json(o) for o in ids or []]
-
-
-class MachineStorageIdsWatchResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~MachineStorageIdsWatchResult]
-        '''
-        self.results = [MachineStorageIdsWatchResult.from_json(o) for o in results or []]
-
-
-class VolumeAttachment(Type):
-    _toSchema = {'info': 'info', 'volumetag': 'volumetag', 'machinetag': 'machinetag'}
-    _toPy = {'info': 'info', 'volumetag': 'volumetag', 'machinetag': 'machinetag'}
-    def __init__(self, info=None, machinetag=None, volumetag=None):
-        '''
-        info : VolumeAttachmentInfo
-        machinetag : str
-        volumetag : str
-        '''
-        self.info = VolumeAttachmentInfo.from_json(info)
-        self.machinetag = machinetag
-        self.volumetag = volumetag
-
-
-class VolumeAttachmentParamsResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : VolumeAttachmentParams
-        '''
-        self.error = Error.from_json(error)
-        self.result = VolumeAttachmentParams.from_json(result)
-
-
-class VolumeAttachmentParamsResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~VolumeAttachmentParamsResult]
-        '''
-        self.results = [VolumeAttachmentParamsResult.from_json(o) for o in results or []]
-
-
-class VolumeAttachmentResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : VolumeAttachment
-        '''
-        self.error = Error.from_json(error)
-        self.result = VolumeAttachment.from_json(result)
-
-
-class VolumeAttachmentResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~VolumeAttachmentResult]
-        '''
-        self.results = [VolumeAttachmentResult.from_json(o) for o in results or []]
-
-
-class VolumeAttachments(Type):
-    _toSchema = {'volumeattachments': 'volumeattachments'}
-    _toPy = {'volumeattachments': 'volumeattachments'}
-    def __init__(self, volumeattachments=None):
-        '''
-        volumeattachments : typing.Sequence[~VolumeAttachment]
-        '''
-        self.volumeattachments = [VolumeAttachment.from_json(o) for o in volumeattachments or []]
-
-
-class VolumeParamsResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : VolumeParams
-        '''
-        self.error = Error.from_json(error)
-        self.result = VolumeParams.from_json(result)
-
-
-class VolumeParamsResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~VolumeParamsResult]
-        '''
-        self.results = [VolumeParamsResult.from_json(o) for o in results or []]
-
-
-class VolumeResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : Volume
-        '''
-        self.error = Error.from_json(error)
-        self.result = Volume.from_json(result)
-
-
-class VolumeResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~VolumeResult]
-        '''
-        self.results = [VolumeResult.from_json(o) for o in results or []]
-
-
-class Volumes(Type):
-    _toSchema = {'volumes': 'volumes'}
-    _toPy = {'volumes': 'volumes'}
-    def __init__(self, volumes=None):
-        '''
-        volumes : typing.Sequence[~Volume]
-        '''
-        self.volumes = [Volume.from_json(o) for o in volumes or []]
-
-
-class SpaceResult(Type):
-    _toSchema = {'tag': 'Tag', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'Tag': 'tag'}
-    def __init__(self, error=None, tag=None):
-        '''
-        error : Error
-        tag : str
-        '''
-        self.error = Error.from_json(error)
-        self.tag = tag
-
-
-class SpaceResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~SpaceResult]
-        '''
-        self.results = [SpaceResult.from_json(o) for o in results or []]
-
-
-class ZoneResult(Type):
-    _toSchema = {'available': 'Available', 'name': 'Name', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'Name': 'name', 'Available': 'available'}
-    def __init__(self, available=None, error=None, name=None):
-        '''
-        available : bool
-        error : Error
-        name : str
-        '''
-        self.available = available
-        self.error = Error.from_json(error)
-        self.name = name
-
-
-class ZoneResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~ZoneResult]
-        '''
-        self.results = [ZoneResult.from_json(o) for o in results or []]
-
-
-class UndertakerModelInfo(Type):
-    _toSchema = {'globalname': 'GlobalName', 'life': 'Life', 'issystem': 'IsSystem', 'name': 'Name', 'uuid': 'UUID'}
-    _toPy = {'Name': 'name', 'Life': 'life', 'GlobalName': 'globalname', 'IsSystem': 'issystem', 'UUID': 'uuid'}
-    def __init__(self, globalname=None, issystem=None, life=None, name=None, uuid=None):
-        '''
-        globalname : str
-        issystem : bool
-        life : str
-        name : str
-        uuid : str
-        '''
-        self.globalname = globalname
-        self.issystem = issystem
-        self.life = life
-        self.name = name
-        self.uuid = uuid
-
-
-class UndertakerModelInfoResult(Type):
-    _toSchema = {'error': 'Error', 'result': 'Result'}
-    _toPy = {'Error': 'error', 'Result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : UndertakerModelInfo
-        '''
-        self.error = Error.from_json(error)
-        self.result = UndertakerModelInfo.from_json(result)
-
-
-class CharmURL(Type):
-    _toSchema = {'url': 'URL'}
-    _toPy = {'URL': 'url'}
-    def __init__(self, url=None):
-        '''
-        url : str
-        '''
-        self.url = url
-
-
-class CharmURLs(Type):
-    _toSchema = {'urls': 'URLs'}
-    _toPy = {'URLs': 'urls'}
-    def __init__(self, urls=None):
-        '''
-        urls : typing.Sequence[~CharmURL]
-        '''
-        self.urls = [CharmURL.from_json(o) for o in urls or []]
-
-
-class ConfigSettingsResult(Type):
-    _toSchema = {'settings': 'Settings', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'Settings': 'settings'}
-    def __init__(self, error=None, settings=None):
-        '''
-        error : Error
-        settings : typing.Mapping[str, typing.Any]
-        '''
-        self.error = Error.from_json(error)
-        self.settings = settings
-
-
-class ConfigSettingsResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~ConfigSettingsResult]
-        '''
-        self.results = [ConfigSettingsResult.from_json(o) for o in results or []]
-
-
-class Endpoint(Type):
-    _toSchema = {'relation': 'Relation', 'servicename': 'ServiceName'}
-    _toPy = {'Relation': 'relation', 'ServiceName': 'servicename'}
-    def __init__(self, relation=None, servicename=None):
-        '''
-        relation : Relation
-        servicename : str
-        '''
-        self.relation = Relation.from_json(relation)
-        self.servicename = servicename
-
-
-class EntitiesCharmURL(Type):
-    _toSchema = {'entities': 'Entities'}
-    _toPy = {'Entities': 'entities'}
-    def __init__(self, entities=None):
-        '''
-        entities : typing.Sequence[~EntityCharmURL]
-        '''
-        self.entities = [EntityCharmURL.from_json(o) for o in entities or []]
-
-
-class EntitiesPortRanges(Type):
-    _toSchema = {'entities': 'Entities'}
-    _toPy = {'Entities': 'entities'}
-    def __init__(self, entities=None):
-        '''
-        entities : typing.Sequence[~EntityPortRange]
-        '''
-        self.entities = [EntityPortRange.from_json(o) for o in entities or []]
-
-
-class EntityCharmURL(Type):
-    _toSchema = {'tag': 'Tag', 'charmurl': 'CharmURL'}
-    _toPy = {'Tag': 'tag', 'CharmURL': 'charmurl'}
-    def __init__(self, charmurl=None, tag=None):
-        '''
-        charmurl : str
-        tag : str
-        '''
-        self.charmurl = charmurl
-        self.tag = tag
-
-
-class EntityPortRange(Type):
-    _toSchema = {'protocol': 'Protocol', 'toport': 'ToPort', 'tag': 'Tag', 'fromport': 'FromPort'}
-    _toPy = {'FromPort': 'fromport', 'Protocol': 'protocol', 'Tag': 'tag', 'ToPort': 'toport'}
-    def __init__(self, fromport=None, protocol=None, tag=None, toport=None):
-        '''
-        fromport : int
-        protocol : str
-        tag : str
-        toport : int
-        '''
-        self.fromport = fromport
-        self.protocol = protocol
-        self.tag = tag
-        self.toport = toport
-
-
-class GetLeadershipSettingsBulkResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~GetLeadershipSettingsResult]
-        '''
-        self.results = [GetLeadershipSettingsResult.from_json(o) for o in results or []]
-
-
-class GetLeadershipSettingsResult(Type):
-    _toSchema = {'settings': 'Settings', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'Settings': 'settings'}
-    def __init__(self, error=None, settings=None):
-        '''
-        error : Error
-        settings : typing.Mapping[str, str]
-        '''
-        self.error = Error.from_json(error)
-        self.settings = settings
-
-
-class IntResult(Type):
-    _toSchema = {'error': 'Error', 'result': 'Result'}
-    _toPy = {'Error': 'error', 'Result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : int
-        '''
-        self.error = Error.from_json(error)
-        self.result = result
-
-
-class IntResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~IntResult]
-        '''
-        self.results = [IntResult.from_json(o) for o in results or []]
-
-
-class MergeLeadershipSettingsBulkParams(Type):
-    _toSchema = {'params': 'Params'}
-    _toPy = {'Params': 'params'}
-    def __init__(self, params=None):
-        '''
-        params : typing.Sequence[~MergeLeadershipSettingsParam]
-        '''
-        self.params = [MergeLeadershipSettingsParam.from_json(o) for o in params or []]
-
-
-class MergeLeadershipSettingsParam(Type):
-    _toSchema = {'settings': 'Settings', 'servicetag': 'ServiceTag'}
-    _toPy = {'ServiceTag': 'servicetag', 'Settings': 'settings'}
-    def __init__(self, servicetag=None, settings=None):
-        '''
-        servicetag : str
-        settings : typing.Mapping[str, str]
-        '''
-        self.servicetag = servicetag
-        self.settings = settings
-
-
-class ModelResult(Type):
-    _toSchema = {'uuid': 'UUID', 'name': 'Name', 'error': 'Error'}
-    _toPy = {'Name': 'name', 'UUID': 'uuid', 'Error': 'error'}
-    def __init__(self, error=None, name=None, uuid=None):
-        '''
-        error : Error
-        name : str
-        uuid : str
-        '''
-        self.error = Error.from_json(error)
-        self.name = name
-        self.uuid = uuid
-
-
-class RelationIds(Type):
-    _toSchema = {'relationids': 'RelationIds'}
-    _toPy = {'RelationIds': 'relationids'}
-    def __init__(self, relationids=None):
-        '''
-        relationids : typing.Sequence[int]
-        '''
-        self.relationids = relationids
-
-
-class RelationResult(Type):
-    _toSchema = {'life': 'Life', 'endpoint': 'Endpoint', 'id_': 'Id', 'key': 'Key', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'Id': 'id_', 'Life': 'life', 'Endpoint': 'endpoint', 'Key': 'key'}
-    def __init__(self, endpoint=None, error=None, id_=None, key=None, life=None):
-        '''
-        endpoint : Endpoint
-        error : Error
-        id_ : int
-        key : str
-        life : str
-        '''
-        self.endpoint = Endpoint.from_json(endpoint)
-        self.error = Error.from_json(error)
-        self.id_ = id_
-        self.key = key
-        self.life = life
-
-
-class RelationResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~RelationResult]
-        '''
-        self.results = [RelationResult.from_json(o) for o in results or []]
-
-
-class RelationUnit(Type):
-    _toSchema = {'relation': 'Relation', 'unit': 'Unit'}
-    _toPy = {'Relation': 'relation', 'Unit': 'unit'}
-    def __init__(self, relation=None, unit=None):
-        '''
-        relation : str
-        unit : str
-        '''
-        self.relation = relation
-        self.unit = unit
-
-
-class RelationUnitPair(Type):
-    _toSchema = {'relation': 'Relation', 'remoteunit': 'RemoteUnit', 'localunit': 'LocalUnit'}
-    _toPy = {'Relation': 'relation', 'LocalUnit': 'localunit', 'RemoteUnit': 'remoteunit'}
-    def __init__(self, localunit=None, relation=None, remoteunit=None):
-        '''
-        localunit : str
-        relation : str
-        remoteunit : str
-        '''
-        self.localunit = localunit
-        self.relation = relation
-        self.remoteunit = remoteunit
-
-
-class RelationUnitPairs(Type):
-    _toSchema = {'relationunitpairs': 'RelationUnitPairs'}
-    _toPy = {'RelationUnitPairs': 'relationunitpairs'}
-    def __init__(self, relationunitpairs=None):
-        '''
-        relationunitpairs : typing.Sequence[~RelationUnitPair]
-        '''
-        self.relationunitpairs = [RelationUnitPair.from_json(o) for o in relationunitpairs or []]
-
-
-class RelationUnitSettings(Type):
-    _toSchema = {'relation': 'Relation', 'settings': 'Settings', 'unit': 'Unit'}
-    _toPy = {'Relation': 'relation', 'Settings': 'settings', 'Unit': 'unit'}
-    def __init__(self, relation=None, settings=None, unit=None):
-        '''
-        relation : str
-        settings : typing.Mapping[str, str]
-        unit : str
-        '''
-        self.relation = relation
-        self.settings = settings
-        self.unit = unit
-
-
-class RelationUnits(Type):
-    _toSchema = {'relationunits': 'RelationUnits'}
-    _toPy = {'RelationUnits': 'relationunits'}
-    def __init__(self, relationunits=None):
-        '''
-        relationunits : typing.Sequence[~RelationUnit]
-        '''
-        self.relationunits = [RelationUnit.from_json(o) for o in relationunits or []]
-
-
-class RelationUnitsSettings(Type):
-    _toSchema = {'relationunits': 'RelationUnits'}
-    _toPy = {'RelationUnits': 'relationunits'}
-    def __init__(self, relationunits=None):
-        '''
-        relationunits : typing.Sequence[~RelationUnitSettings]
-        '''
-        self.relationunits = [RelationUnitSettings.from_json(o) for o in relationunits or []]
-
-
-class RelationUnitsWatchResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~RelationUnitsWatchResult]
-        '''
-        self.results = [RelationUnitsWatchResult.from_json(o) for o in results or []]
-
-
-class ResolvedModeResult(Type):
-    _toSchema = {'mode': 'Mode', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'Mode': 'mode'}
-    def __init__(self, error=None, mode=None):
-        '''
-        error : Error
-        mode : str
-        '''
-        self.error = Error.from_json(error)
-        self.mode = mode
-
-
-class ResolvedModeResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~ResolvedModeResult]
-        '''
-        self.results = [ResolvedModeResult.from_json(o) for o in results or []]
-
-
-class ServiceStatusResult(Type):
-    _toSchema = {'service': 'Service', 'units': 'Units', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'Units': 'units', 'Service': 'service'}
-    def __init__(self, error=None, service=None, units=None):
-        '''
-        error : Error
-        service : StatusResult
-        units : typing.Mapping[str, ~StatusResult]
-        '''
-        self.error = Error.from_json(error)
-        self.service = StatusResult.from_json(service)
-        self.units = {k: StatusResult.from_json(v) for k, v in (units or dict()).items()}
-
-
-class ServiceStatusResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~ServiceStatusResult]
-        '''
-        self.results = [ServiceStatusResult.from_json(o) for o in results or []]
-
-
-class SettingsResult(Type):
-    _toSchema = {'settings': 'Settings', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'Settings': 'settings'}
-    def __init__(self, error=None, settings=None):
-        '''
-        error : Error
-        settings : typing.Mapping[str, str]
-        '''
-        self.error = Error.from_json(error)
-        self.settings = settings
-
-
-class SettingsResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~SettingsResult]
-        '''
-        self.results = [SettingsResult.from_json(o) for o in results or []]
-
-
-class StorageAttachment(Type):
-    _toSchema = {'kind': 'Kind', 'life': 'Life', 'location': 'Location', 'storagetag': 'StorageTag', 'unittag': 'UnitTag', 'ownertag': 'OwnerTag'}
-    _toPy = {'StorageTag': 'storagetag', 'UnitTag': 'unittag', 'Location': 'location', 'Kind': 'kind', 'Life': 'life', 'OwnerTag': 'ownertag'}
-    def __init__(self, kind=None, life=None, location=None, ownertag=None, storagetag=None, unittag=None):
-        '''
-        kind : int
-        life : str
-        location : str
-        ownertag : str
-        storagetag : str
-        unittag : str
-        '''
-        self.kind = kind
-        self.life = life
-        self.location = location
-        self.ownertag = ownertag
-        self.storagetag = storagetag
-        self.unittag = unittag
-
-
-class StorageAttachmentId(Type):
-    _toSchema = {'storagetag': 'storagetag', 'unittag': 'unittag'}
-    _toPy = {'storagetag': 'storagetag', 'unittag': 'unittag'}
-    def __init__(self, storagetag=None, unittag=None):
-        '''
-        storagetag : str
-        unittag : str
-        '''
-        self.storagetag = storagetag
-        self.unittag = unittag
-
-
-class StorageAttachmentIds(Type):
-    _toSchema = {'ids': 'ids'}
-    _toPy = {'ids': 'ids'}
-    def __init__(self, ids=None):
-        '''
-        ids : typing.Sequence[~StorageAttachmentId]
-        '''
-        self.ids = [StorageAttachmentId.from_json(o) for o in ids or []]
-
-
-class StorageAttachmentIdsResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : StorageAttachmentIds
-        '''
-        self.error = Error.from_json(error)
-        self.result = StorageAttachmentIds.from_json(result)
-
-
-class StorageAttachmentIdsResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~StorageAttachmentIdsResult]
-        '''
-        self.results = [StorageAttachmentIdsResult.from_json(o) for o in results or []]
-
-
-class StorageAttachmentResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : StorageAttachment
-        '''
-        self.error = Error.from_json(error)
-        self.result = StorageAttachment.from_json(result)
-
-
-class StorageAttachmentResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~StorageAttachmentResult]
-        '''
-        self.results = [StorageAttachmentResult.from_json(o) for o in results or []]
-
-
-class StringBoolResult(Type):
-    _toSchema = {'ok': 'Ok', 'error': 'Error', 'result': 'Result'}
-    _toPy = {'Ok': 'ok', 'Error': 'error', 'Result': 'result'}
-    def __init__(self, error=None, ok=None, result=None):
-        '''
-        error : Error
-        ok : bool
-        result : str
-        '''
-        self.error = Error.from_json(error)
-        self.ok = ok
-        self.result = result
-
-
-class StringBoolResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~StringBoolResult]
-        '''
-        self.results = [StringBoolResult.from_json(o) for o in results or []]
-
-
-class UnitNetworkConfig(Type):
-    _toSchema = {'unittag': 'UnitTag', 'bindingname': 'BindingName'}
-    _toPy = {'BindingName': 'bindingname', 'UnitTag': 'unittag'}
-    def __init__(self, bindingname=None, unittag=None):
-        '''
-        bindingname : str
-        unittag : str
-        '''
-        self.bindingname = bindingname
-        self.unittag = unittag
-
-
-class UnitNetworkConfigResult(Type):
-    _toSchema = {'info': 'Info', 'error': 'Error'}
-    _toPy = {'Error': 'error', 'Info': 'info'}
-    def __init__(self, error=None, info=None):
-        '''
-        error : Error
-        info : typing.Sequence[~NetworkConfig]
-        '''
-        self.error = Error.from_json(error)
-        self.info = [NetworkConfig.from_json(o) for o in info or []]
-
-
-class UnitNetworkConfigResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~UnitNetworkConfigResult]
-        '''
-        self.results = [UnitNetworkConfigResult.from_json(o) for o in results or []]
-
-
-class UnitsNetworkConfig(Type):
-    _toSchema = {'args': 'Args'}
-    _toPy = {'Args': 'args'}
-    def __init__(self, args=None):
-        '''
-        args : typing.Sequence[~UnitNetworkConfig]
-        '''
-        self.args = [UnitNetworkConfig.from_json(o) for o in args or []]
-
-
-class EntitiesVersion(Type):
-    _toSchema = {'agenttools': 'AgentTools'}
-    _toPy = {'AgentTools': 'agenttools'}
-    def __init__(self, agenttools=None):
-        '''
-        agenttools : typing.Sequence[~EntityVersion]
-        '''
-        self.agenttools = [EntityVersion.from_json(o) for o in agenttools or []]
-
-
-class EntityVersion(Type):
-    _toSchema = {'tools': 'Tools', 'tag': 'Tag'}
-    _toPy = {'Tools': 'tools', 'Tag': 'tag'}
-    def __init__(self, tag=None, tools=None):
-        '''
-        tag : str
-        tools : Version
-        '''
-        self.tag = tag
-        self.tools = Version.from_json(tools)
-
-
-class VersionResult(Type):
-    _toSchema = {'error': 'Error', 'version': 'Version'}
-    _toPy = {'Version': 'version', 'Error': 'error'}
-    def __init__(self, error=None, version=None):
-        '''
-        error : Error
-        version : Number
-        '''
-        self.error = Error.from_json(error)
-        self.version = Number.from_json(version)
-
-
-class VersionResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~VersionResult]
-        '''
-        self.results = [VersionResult.from_json(o) for o in results or []]
-
-
-class AddUser(Type):
-    _toSchema = {'shared_model_tags': 'shared-model-tags', 'model_access_permission': 'model-access-permission', 'username': 'username', 'display_name': 'display-name', 'password': 'password'}
-    _toPy = {'shared-model-tags': 'shared_model_tags', 'display-name': 'display_name', 'username': 'username', 'model-access-permission': 'model_access_permission', 'password': 'password'}
-    def __init__(self, display_name=None, model_access_permission=None, password=None, shared_model_tags=None, username=None):
-        '''
-        display_name : str
-        model_access_permission : str
-        password : str
-        shared_model_tags : typing.Sequence[str]
-        username : str
-        '''
-        self.display_name = display_name
-        self.model_access_permission = model_access_permission
-        self.password = password
-        self.shared_model_tags = shared_model_tags
-        self.username = username
-
-
-class AddUserResult(Type):
-    _toSchema = {'secret_key': 'secret-key', 'tag': 'tag', 'error': 'error'}
-    _toPy = {'tag': 'tag', 'error': 'error', 'secret-key': 'secret_key'}
-    def __init__(self, error=None, secret_key=None, tag=None):
-        '''
-        error : Error
-        secret_key : typing.Sequence[int]
-        tag : str
-        '''
-        self.error = Error.from_json(error)
-        self.secret_key = secret_key
-        self.tag = tag
-
-
-class AddUserResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~AddUserResult]
-        '''
-        self.results = [AddUserResult.from_json(o) for o in results or []]
-
-
-class AddUsers(Type):
-    _toSchema = {'users': 'users'}
-    _toPy = {'users': 'users'}
-    def __init__(self, users=None):
-        '''
-        users : typing.Sequence[~AddUser]
-        '''
-        self.users = [AddUser.from_json(o) for o in users or []]
-
-
-class MacaroonResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : Macaroon
-        '''
-        self.error = Error.from_json(error)
-        self.result = Macaroon.from_json(result)
-
-
-class MacaroonResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~MacaroonResult]
-        '''
-        self.results = [MacaroonResult.from_json(o) for o in results or []]
-
-
-class UserInfo(Type):
-    _toSchema = {'date_created': 'date-created', 'disabled': 'disabled', 'last_connection': 'last-connection', 'created_by': 'created-by', 'username': 'username', 'display_name': 'display-name'}
-    _toPy = {'disabled': 'disabled', 'username': 'username', 'last-connection': 'last_connection', 'display-name': 'display_name', 'created-by': 'created_by', 'date-created': 'date_created'}
-    def __init__(self, created_by=None, date_created=None, disabled=None, display_name=None, last_connection=None, username=None):
-        '''
-        created_by : str
-        date_created : str
-        disabled : bool
-        display_name : str
-        last_connection : str
-        username : str
-        '''
-        self.created_by = created_by
-        self.date_created = date_created
-        self.disabled = disabled
-        self.display_name = display_name
-        self.last_connection = last_connection
-        self.username = username
-
-
-class UserInfoRequest(Type):
-    _toSchema = {'entities': 'entities', 'include_disabled': 'include-disabled'}
-    _toPy = {'include-disabled': 'include_disabled', 'entities': 'entities'}
-    def __init__(self, entities=None, include_disabled=None):
-        '''
-        entities : typing.Sequence[~Entity]
-        include_disabled : bool
-        '''
-        self.entities = [Entity.from_json(o) for o in entities or []]
-        self.include_disabled = include_disabled
-
-
-class UserInfoResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
-        '''
-        error : Error
-        result : UserInfo
-        '''
-        self.error = Error.from_json(error)
-        self.result = UserInfo.from_json(result)
-
-
-class UserInfoResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None):
-        '''
-        results : typing.Sequence[~UserInfoResult]
-        '''
-        self.results = [UserInfoResult.from_json(o) for o in results or []]
-
-
-class Action(Type):
-    name = 'Action'
-    version = 1
-    schema =     {'definitions': {'Action': {'additionalProperties': False,
-                                'properties': {'name': {'type': 'string'},
-                                               'parameters': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                           'type': 'object'}},
-                                                              'type': 'object'},
-                                               'receiver': {'type': 'string'},
-                                               'tag': {'type': 'string'}},
-                                'required': ['tag', 'receiver', 'name'],
-                                'type': 'object'},
-                     'ActionResult': {'additionalProperties': False,
-                                      'properties': {'action': {'$ref': '#/definitions/Action'},
-                                                     'completed': {'format': 'date-time',
-                                                                   'type': 'string'},
-                                                     'enqueued': {'format': 'date-time',
-                                                                  'type': 'string'},
-                                                     'error': {'$ref': '#/definitions/Error'},
-                                                     'message': {'type': 'string'},
-                                                     'output': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                             'type': 'object'}},
-                                                                'type': 'object'},
-                                                     'started': {'format': 'date-time',
-                                                                 'type': 'string'},
-                                                     'status': {'type': 'string'}},
-                                      'type': 'object'},
-                     'ActionResults': {'additionalProperties': False,
-                                       'properties': {'results': {'items': {'$ref': '#/definitions/ActionResult'},
-                                                                  'type': 'array'}},
-                                       'type': 'object'},
-                     'Actions': {'additionalProperties': False,
-                                 'properties': {'actions': {'items': {'$ref': '#/definitions/Action'},
-                                                            'type': 'array'}},
-                                 'type': 'object'},
-                     'ActionsByName': {'additionalProperties': False,
-                                       'properties': {'actions': {'items': {'$ref': '#/definitions/ActionResult'},
-                                                                  'type': 'array'},
-                                                      'error': {'$ref': '#/definitions/Error'},
-                                                      'name': {'type': 'string'}},
-                                       'type': 'object'},
-                     'ActionsByNames': {'additionalProperties': False,
-                                        'properties': {'actions': {'items': {'$ref': '#/definitions/ActionsByName'},
-                                                                   'type': 'array'}},
-                                        'type': 'object'},
-                     'ActionsByReceiver': {'additionalProperties': False,
-                                           'properties': {'actions': {'items': {'$ref': '#/definitions/ActionResult'},
-                                                                      'type': 'array'},
-                                                          'error': {'$ref': '#/definitions/Error'},
-                                                          'receiver': {'type': 'string'}},
-                                           'type': 'object'},
-                     'ActionsByReceivers': {'additionalProperties': False,
-                                            'properties': {'actions': {'items': {'$ref': '#/definitions/ActionsByReceiver'},
-                                                                       'type': 'array'}},
-                                            'type': 'object'},
-                     'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'FindActionsByNames': {'additionalProperties': False,
-                                            'properties': {'names': {'items': {'type': 'string'},
-                                                                     'type': 'array'}},
-                                            'type': 'object'},
-                     'FindTags': {'additionalProperties': False,
-                                  'properties': {'prefixes': {'items': {'type': 'string'},
-                                                              'type': 'array'}},
-                                  'required': ['prefixes'],
-                                  'type': 'object'},
-                     'FindTagsResults': {'additionalProperties': False,
-                                         'properties': {'matches': {'patternProperties': {'.*': {'items': {'$ref': '#/definitions/Entity'},
-                                                                                                 'type': 'array'}},
-                                                                    'type': 'object'}},
-                                         'required': ['matches'],
-                                         'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'RunParams': {'additionalProperties': False,
-                                   'properties': {'Commands': {'type': 'string'},
-                                                  'Machines': {'items': {'type': 'string'},
-                                                               'type': 'array'},
-                                                  'Services': {'items': {'type': 'string'},
-                                                               'type': 'array'},
-                                                  'Timeout': {'type': 'integer'},
-                                                  'Units': {'items': {'type': 'string'},
-                                                            'type': 'array'}},
-                                   'required': ['Commands',
-                                                'Timeout',
-                                                'Machines',
-                                                'Services',
-                                                'Units'],
-                                   'type': 'object'},
-                     'ServiceCharmActionsResult': {'additionalProperties': False,
-                                                   'properties': {'actions': {'$ref': '#/definitions/Actions'},
-                                                                  'error': {'$ref': '#/definitions/Error'},
-                                                                  'servicetag': {'type': 'string'}},
-                                                   'type': 'object'},
-                     'ServicesCharmActionsResults': {'additionalProperties': False,
-                                                     'properties': {'results': {'items': {'$ref': '#/definitions/ServiceCharmActionsResult'},
-                                                                                'type': 'array'}},
-                                                     'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'Actions': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                               'Result': {'$ref': '#/definitions/ActionResults'}},
-                                'type': 'object'},
-                    'Cancel': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                              'Result': {'$ref': '#/definitions/ActionResults'}},
-                               'type': 'object'},
-                    'Enqueue': {'properties': {'Params': {'$ref': '#/definitions/Actions'},
-                                               'Result': {'$ref': '#/definitions/ActionResults'}},
-                                'type': 'object'},
-                    'FindActionTagsByPrefix': {'properties': {'Params': {'$ref': '#/definitions/FindTags'},
-                                                              'Result': {'$ref': '#/definitions/FindTagsResults'}},
-                                               'type': 'object'},
-                    'FindActionsByNames': {'properties': {'Params': {'$ref': '#/definitions/FindActionsByNames'},
-                                                          'Result': {'$ref': '#/definitions/ActionsByNames'}},
-                                           'type': 'object'},
-                    'ListAll': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                               'Result': {'$ref': '#/definitions/ActionsByReceivers'}},
-                                'type': 'object'},
-                    'ListCompleted': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                     'Result': {'$ref': '#/definitions/ActionsByReceivers'}},
-                                      'type': 'object'},
-                    'ListPending': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                   'Result': {'$ref': '#/definitions/ActionsByReceivers'}},
-                                    'type': 'object'},
-                    'ListRunning': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                   'Result': {'$ref': '#/definitions/ActionsByReceivers'}},
-                                    'type': 'object'},
-                    'Run': {'properties': {'Params': {'$ref': '#/definitions/RunParams'},
-                                           'Result': {'$ref': '#/definitions/ActionResults'}},
-                            'type': 'object'},
-                    'RunOnAllMachines': {'properties': {'Params': {'$ref': '#/definitions/RunParams'},
-                                                        'Result': {'$ref': '#/definitions/ActionResults'}},
-                                         'type': 'object'},
-                    'ServicesCharmActions': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                            'Result': {'$ref': '#/definitions/ServicesCharmActionsResults'}},
-                                             'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ActionResults)
-    async def Actions(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ActionResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Action', Request='Actions', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionResults)
-    async def Cancel(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ActionResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Action', Request='Cancel', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionResults)
-    async def Enqueue(self, actions):
-        '''
-        actions : typing.Sequence[~Action]
-        Returns -> typing.Sequence[~ActionResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Action', Request='Enqueue', Version=1, Params=params)
-        params['actions'] = actions
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(FindTagsResults)
-    async def FindActionTagsByPrefix(self, prefixes):
-        '''
-        prefixes : typing.Sequence[str]
-        Returns -> typing.Sequence[~Entity]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Action', Request='FindActionTagsByPrefix', Version=1, Params=params)
-        params['prefixes'] = prefixes
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionsByNames)
-    async def FindActionsByNames(self, names):
-        '''
-        names : typing.Sequence[str]
-        Returns -> typing.Sequence[~ActionsByName]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Action', Request='FindActionsByNames', Version=1, Params=params)
-        params['names'] = names
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionsByReceivers)
-    async def ListAll(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ActionsByReceiver]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Action', Request='ListAll', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionsByReceivers)
-    async def ListCompleted(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ActionsByReceiver]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Action', Request='ListCompleted', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionsByReceivers)
-    async def ListPending(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ActionsByReceiver]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Action', Request='ListPending', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionsByReceivers)
-    async def ListRunning(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ActionsByReceiver]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Action', Request='ListRunning', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionResults)
-    async def Run(self, commands, machines, services, timeout, units):
-        '''
-        commands : str
-        machines : typing.Sequence[str]
-        services : typing.Sequence[str]
-        timeout : int
-        units : typing.Sequence[str]
-        Returns -> typing.Sequence[~ActionResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Action', Request='Run', Version=1, Params=params)
-        params['Commands'] = commands
-        params['Machines'] = machines
-        params['Services'] = services
-        params['Timeout'] = timeout
-        params['Units'] = units
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionResults)
-    async def RunOnAllMachines(self, commands, machines, services, timeout, units):
-        '''
-        commands : str
-        machines : typing.Sequence[str]
-        services : typing.Sequence[str]
-        timeout : int
-        units : typing.Sequence[str]
-        Returns -> typing.Sequence[~ActionResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Action', Request='RunOnAllMachines', Version=1, Params=params)
-        params['Commands'] = commands
-        params['Machines'] = machines
-        params['Services'] = services
-        params['Timeout'] = timeout
-        params['Units'] = units
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ServicesCharmActionsResults)
-    async def ServicesCharmActions(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ServiceCharmActionsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Action', Request='ServicesCharmActions', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Addresser(Type):
-    name = 'Addresser'
-    version = 2
-    schema =     {'definitions': {'BoolResult': {'additionalProperties': False,
-                                    'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                   'Result': {'type': 'boolean'}},
-                                    'required': ['Error', 'Result'],
-                                    'type': 'object'},
-                     'EntitiesWatchResult': {'additionalProperties': False,
-                                             'properties': {'Changes': {'items': {'type': 'string'},
-                                                                        'type': 'array'},
-                                                            'EntityWatcherId': {'type': 'string'},
-                                                            'Error': {'$ref': '#/definitions/Error'}},
-                                             'required': ['EntityWatcherId',
-                                                          'Changes',
-                                                          'Error'],
-                                             'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'CanDeallocateAddresses': {'properties': {'Result': {'$ref': '#/definitions/BoolResult'}},
-                                               'type': 'object'},
-                    'CleanupIPAddresses': {'properties': {'Result': {'$ref': '#/definitions/ErrorResult'}},
-                                           'type': 'object'},
-                    'WatchIPAddresses': {'properties': {'Result': {'$ref': '#/definitions/EntitiesWatchResult'}},
-                                         'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(BoolResult)
-    async def CanDeallocateAddresses(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), bool]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Addresser', Request='CanDeallocateAddresses', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResult)
-    async def CleanupIPAddresses(self):
-        '''
-
-        Returns -> Error
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Addresser', Request='CleanupIPAddresses', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(EntitiesWatchResult)
-    async def WatchIPAddresses(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error')]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Addresser', Request='WatchIPAddresses', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Agent(Type):
-    name = 'Agent'
-    version = 2
-    schema =     {'definitions': {'AgentGetEntitiesResult': {'additionalProperties': False,
-                                                'properties': {'ContainerType': {'type': 'string'},
-                                                               'Error': {'$ref': '#/definitions/Error'},
-                                                               'Jobs': {'items': {'type': 'string'},
-                                                                        'type': 'array'},
-                                                               'Life': {'type': 'string'}},
-                                                'required': ['Life',
-                                                             'Jobs',
-                                                             'ContainerType',
-                                                             'Error'],
-                                                'type': 'object'},
-                     'AgentGetEntitiesResults': {'additionalProperties': False,
-                                                 'properties': {'Entities': {'items': {'$ref': '#/definitions/AgentGetEntitiesResult'},
-                                                                             'type': 'array'}},
-                                                 'required': ['Entities'],
-                                                 'type': 'object'},
-                     'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'EntityPassword': {'additionalProperties': False,
-                                        'properties': {'Password': {'type': 'string'},
-                                                       'Tag': {'type': 'string'}},
-                                        'required': ['Tag', 'Password'],
-                                        'type': 'object'},
-                     'EntityPasswords': {'additionalProperties': False,
-                                         'properties': {'Changes': {'items': {'$ref': '#/definitions/EntityPassword'},
-                                                                    'type': 'array'}},
-                                         'required': ['Changes'],
-                                         'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'IsMasterResult': {'additionalProperties': False,
-                                        'properties': {'Master': {'type': 'boolean'}},
-                                        'required': ['Master'],
-                                        'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'ModelConfigResult': {'additionalProperties': False,
-                                           'properties': {'Config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                  'type': 'object'}},
-                                                                     'type': 'object'}},
-                                           'required': ['Config'],
-                                           'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'StateServingInfo': {'additionalProperties': False,
-                                          'properties': {'APIPort': {'type': 'integer'},
-                                                         'CAPrivateKey': {'type': 'string'},
-                                                         'Cert': {'type': 'string'},
-                                                         'PrivateKey': {'type': 'string'},
-                                                         'SharedSecret': {'type': 'string'},
-                                                         'StatePort': {'type': 'integer'},
-                                                         'SystemIdentity': {'type': 'string'}},
-                                          'required': ['APIPort',
-                                                       'StatePort',
-                                                       'Cert',
-                                                       'PrivateKey',
-                                                       'CAPrivateKey',
-                                                       'SharedSecret',
-                                                       'SystemIdentity'],
-                                          'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'ClearReboot': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                   'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                    'type': 'object'},
-                    'GetEntities': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                   'Result': {'$ref': '#/definitions/AgentGetEntitiesResults'}},
-                                    'type': 'object'},
-                    'IsMaster': {'properties': {'Result': {'$ref': '#/definitions/IsMasterResult'}},
-                                 'type': 'object'},
-                    'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}},
-                                    'type': 'object'},
-                    'SetPasswords': {'properties': {'Params': {'$ref': '#/definitions/EntityPasswords'},
-                                                    'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                     'type': 'object'},
-                    'StateServingInfo': {'properties': {'Result': {'$ref': '#/definitions/StateServingInfo'}},
-                                         'type': 'object'},
-                    'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                                   'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResults)
-    async def ClearReboot(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Agent', Request='ClearReboot', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(AgentGetEntitiesResults)
-    async def GetEntities(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~AgentGetEntitiesResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Agent', Request='GetEntities', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(IsMasterResult)
-    async def IsMaster(self):
-        '''
-
-        Returns -> bool
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Agent', Request='IsMaster', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelConfigResult)
-    async def ModelConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Agent', Request='ModelConfig', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetPasswords(self, changes):
-        '''
-        changes : typing.Sequence[~EntityPassword]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Agent', Request='SetPasswords', Version=2, Params=params)
-        params['Changes'] = changes
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StateServingInfo)
-    async def StateServingInfo(self):
-        '''
-
-        Returns -> typing.Union[int, str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Agent', Request='StateServingInfo', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def WatchForModelConfigChanges(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Agent', Request='WatchForModelConfigChanges', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class AgentTools(Type):
-    name = 'AgentTools'
-    version = 1
-    schema =     {'properties': {'UpdateToolsAvailable': {'type': 'object'}}, 'type': 'object'}
-    
-
-    @ReturnMapping(None)
-    async def UpdateToolsAvailable(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='AgentTools', Request='UpdateToolsAvailable', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class AllModelWatcher(Type):
-    name = 'AllModelWatcher'
-    version = 2
-    schema =     {'definitions': {'AllWatcherNextResults': {'additionalProperties': False,
-                                               'properties': {'Deltas': {'items': {'$ref': '#/definitions/Delta'},
-                                                                         'type': 'array'}},
-                                               'required': ['Deltas'],
-                                               'type': 'object'},
-                     'Delta': {'additionalProperties': False,
-                               'properties': {'Entity': {'additionalProperties': True,
-                                                         'type': 'object'},
-                                              'Removed': {'type': 'boolean'}},
-                               'required': ['Removed', 'Entity'],
-                               'type': 'object'}},
-     'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/AllWatcherNextResults'}},
-                             'type': 'object'},
-                    'Stop': {'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(AllWatcherNextResults)
-    async def Next(self):
-        '''
-
-        Returns -> typing.Sequence[~Delta]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='AllModelWatcher', Request='Next', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Stop(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='AllModelWatcher', Request='Stop', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class AllWatcher(Type):
-    name = 'AllWatcher'
-    version = 1
-    schema =     {'definitions': {'AllWatcherNextResults': {'additionalProperties': False,
-                                               'properties': {'Deltas': {'items': {'$ref': '#/definitions/Delta'},
-                                                                         'type': 'array'}},
-                                               'required': ['Deltas'],
-                                               'type': 'object'},
-                     'Delta': {'additionalProperties': False,
-                               'properties': {'Entity': {'additionalProperties': True,
-                                                         'type': 'object'},
-                                              'Removed': {'type': 'boolean'}},
-                               'required': ['Removed', 'Entity'],
-                               'type': 'object'}},
-     'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/AllWatcherNextResults'}},
-                             'type': 'object'},
-                    'Stop': {'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(AllWatcherNextResults)
-    async def Next(self):
-        '''
-
-        Returns -> typing.Sequence[~Delta]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='AllWatcher', Request='Next', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Stop(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='AllWatcher', Request='Stop', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Annotations(Type):
-    name = 'Annotations'
-    version = 2
-    schema =     {'definitions': {'AnnotationsGetResult': {'additionalProperties': False,
-                                              'properties': {'Annotations': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                             'type': 'object'},
-                                                             'EntityTag': {'type': 'string'},
-                                                             'Error': {'$ref': '#/definitions/ErrorResult'}},
-                                              'required': ['EntityTag',
-                                                           'Annotations',
-                                                           'Error'],
-                                              'type': 'object'},
-                     'AnnotationsGetResults': {'additionalProperties': False,
-                                               'properties': {'Results': {'items': {'$ref': '#/definitions/AnnotationsGetResult'},
-                                                                          'type': 'array'}},
-                                               'required': ['Results'],
-                                               'type': 'object'},
-                     'AnnotationsSet': {'additionalProperties': False,
-                                        'properties': {'Annotations': {'items': {'$ref': '#/definitions/EntityAnnotations'},
-                                                                       'type': 'array'}},
-                                        'required': ['Annotations'],
-                                        'type': 'object'},
-                     'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'EntityAnnotations': {'additionalProperties': False,
-                                           'properties': {'Annotations': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                          'type': 'object'},
-                                                          'EntityTag': {'type': 'string'}},
-                                           'required': ['EntityTag', 'Annotations'],
-                                           'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'Get': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                           'Result': {'$ref': '#/definitions/AnnotationsGetResults'}},
-                            'type': 'object'},
-                    'Set': {'properties': {'Params': {'$ref': '#/definitions/AnnotationsSet'},
-                                           'Result': {'$ref': '#/definitions/ErrorResults'}},
-                            'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(AnnotationsGetResults)
-    async def Get(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~AnnotationsGetResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Annotations', Request='Get', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Set(self, annotations):
-        '''
-        annotations : typing.Sequence[~EntityAnnotations]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Annotations', Request='Set', Version=2, Params=params)
-        params['Annotations'] = annotations
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Backups(Type):
-    name = 'Backups'
-    version = 1
-    schema =     {'definitions': {'BackupsCreateArgs': {'additionalProperties': False,
-                                           'properties': {'Notes': {'type': 'string'}},
-                                           'required': ['Notes'],
-                                           'type': 'object'},
-                     'BackupsInfoArgs': {'additionalProperties': False,
-                                         'properties': {'ID': {'type': 'string'}},
-                                         'required': ['ID'],
-                                         'type': 'object'},
-                     'BackupsListArgs': {'additionalProperties': False,
-                                         'type': 'object'},
-                     'BackupsListResult': {'additionalProperties': False,
-                                           'properties': {'List': {'items': {'$ref': '#/definitions/BackupsMetadataResult'},
-                                                                   'type': 'array'}},
-                                           'required': ['List'],
-                                           'type': 'object'},
-                     'BackupsMetadataResult': {'additionalProperties': False,
-                                               'properties': {'CACert': {'type': 'string'},
-                                                              'CAPrivateKey': {'type': 'string'},
-                                                              'Checksum': {'type': 'string'},
-                                                              'ChecksumFormat': {'type': 'string'},
-                                                              'Finished': {'format': 'date-time',
-                                                                           'type': 'string'},
-                                                              'Hostname': {'type': 'string'},
-                                                              'ID': {'type': 'string'},
-                                                              'Machine': {'type': 'string'},
-                                                              'Model': {'type': 'string'},
-                                                              'Notes': {'type': 'string'},
-                                                              'Size': {'type': 'integer'},
-                                                              'Started': {'format': 'date-time',
-                                                                          'type': 'string'},
-                                                              'Stored': {'format': 'date-time',
-                                                                         'type': 'string'},
-                                                              'Version': {'$ref': '#/definitions/Number'}},
-                                               'required': ['ID',
-                                                            'Checksum',
-                                                            'ChecksumFormat',
-                                                            'Size',
-                                                            'Stored',
-                                                            'Started',
-                                                            'Finished',
-                                                            'Notes',
-                                                            'Model',
-                                                            'Machine',
-                                                            'Hostname',
-                                                            'Version',
-                                                            'CACert',
-                                                            'CAPrivateKey'],
-                                               'type': 'object'},
-                     'BackupsRemoveArgs': {'additionalProperties': False,
-                                           'properties': {'ID': {'type': 'string'}},
-                                           'required': ['ID'],
-                                           'type': 'object'},
-                     'Number': {'additionalProperties': False,
-                                'properties': {'Build': {'type': 'integer'},
-                                               'Major': {'type': 'integer'},
-                                               'Minor': {'type': 'integer'},
-                                               'Patch': {'type': 'integer'},
-                                               'Tag': {'type': 'string'}},
-                                'required': ['Major',
-                                             'Minor',
-                                             'Tag',
-                                             'Patch',
-                                             'Build'],
-                                'type': 'object'},
-                     'RestoreArgs': {'additionalProperties': False,
-                                     'properties': {'BackupId': {'type': 'string'}},
-                                     'required': ['BackupId'],
-                                     'type': 'object'}},
-     'properties': {'Create': {'properties': {'Params': {'$ref': '#/definitions/BackupsCreateArgs'},
-                                              'Result': {'$ref': '#/definitions/BackupsMetadataResult'}},
-                               'type': 'object'},
-                    'FinishRestore': {'type': 'object'},
-                    'Info': {'properties': {'Params': {'$ref': '#/definitions/BackupsInfoArgs'},
-                                            'Result': {'$ref': '#/definitions/BackupsMetadataResult'}},
-                             'type': 'object'},
-                    'List': {'properties': {'Params': {'$ref': '#/definitions/BackupsListArgs'},
-                                            'Result': {'$ref': '#/definitions/BackupsListResult'}},
-                             'type': 'object'},
-                    'PrepareRestore': {'type': 'object'},
-                    'Remove': {'properties': {'Params': {'$ref': '#/definitions/BackupsRemoveArgs'}},
-                               'type': 'object'},
-                    'Restore': {'properties': {'Params': {'$ref': '#/definitions/RestoreArgs'}},
-                                'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(BackupsMetadataResult)
-    async def Create(self, notes):
-        '''
-        notes : str
-        Returns -> typing.Union[str, int, _ForwardRef('Number')]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Backups', Request='Create', Version=1, Params=params)
-        params['Notes'] = notes
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def FinishRestore(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Backups', Request='FinishRestore', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BackupsMetadataResult)
-    async def Info(self, id_):
-        '''
-        id_ : str
-        Returns -> typing.Union[str, int, _ForwardRef('Number')]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Backups', Request='Info', Version=1, Params=params)
-        params['ID'] = id_
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BackupsListResult)
-    async def List(self):
-        '''
-
-        Returns -> typing.Sequence[~BackupsMetadataResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Backups', Request='List', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def PrepareRestore(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Backups', Request='PrepareRestore', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Remove(self, id_):
-        '''
-        id_ : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Backups', Request='Remove', Version=1, Params=params)
-        params['ID'] = id_
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Restore(self, backupid):
-        '''
-        backupid : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Backups', Request='Restore', Version=1, Params=params)
-        params['BackupId'] = backupid
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Block(Type):
-    name = 'Block'
-    version = 2
-    schema =     {'definitions': {'Block': {'additionalProperties': False,
-                               'properties': {'id': {'type': 'string'},
-                                              'message': {'type': 'string'},
-                                              'tag': {'type': 'string'},
-                                              'type': {'type': 'string'}},
-                               'required': ['id', 'tag', 'type'],
-                               'type': 'object'},
-                     'BlockResult': {'additionalProperties': False,
-                                     'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                    'result': {'$ref': '#/definitions/Block'}},
-                                     'required': ['result'],
-                                     'type': 'object'},
-                     'BlockResults': {'additionalProperties': False,
-                                      'properties': {'results': {'items': {'$ref': '#/definitions/BlockResult'},
-                                                                 'type': 'array'}},
-                                      'type': 'object'},
-                     'BlockSwitchParams': {'additionalProperties': False,
-                                           'properties': {'message': {'type': 'string'},
-                                                          'type': {'type': 'string'}},
-                                           'required': ['type'],
-                                           'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'List': {'properties': {'Result': {'$ref': '#/definitions/BlockResults'}},
-                             'type': 'object'},
-                    'SwitchBlockOff': {'properties': {'Params': {'$ref': '#/definitions/BlockSwitchParams'},
-                                                      'Result': {'$ref': '#/definitions/ErrorResult'}},
-                                       'type': 'object'},
-                    'SwitchBlockOn': {'properties': {'Params': {'$ref': '#/definitions/BlockSwitchParams'},
-                                                     'Result': {'$ref': '#/definitions/ErrorResult'}},
-                                      'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(BlockResults)
-    async def List(self):
-        '''
-
-        Returns -> typing.Sequence[~BlockResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Block', Request='List', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResult)
-    async def SwitchBlockOff(self, message, type_):
-        '''
-        message : str
-        type_ : str
-        Returns -> Error
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Block', Request='SwitchBlockOff', Version=2, Params=params)
-        params['message'] = message
-        params['type'] = type_
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResult)
-    async def SwitchBlockOn(self, message, type_):
-        '''
-        message : str
-        type_ : str
-        Returns -> Error
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Block', Request='SwitchBlockOn', Version=2, Params=params)
-        params['message'] = message
-        params['type'] = type_
-        reply = await self.rpc(msg)
-        return reply
-
-
-class CharmRevisionUpdater(Type):
-    name = 'CharmRevisionUpdater'
-    version = 1
-    schema =     {'definitions': {'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'UpdateLatestRevisions': {'properties': {'Result': {'$ref': '#/definitions/ErrorResult'}},
-                                              'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResult)
-    async def UpdateLatestRevisions(self):
-        '''
-
-        Returns -> Error
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='CharmRevisionUpdater', Request='UpdateLatestRevisions', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Charms(Type):
-    name = 'Charms'
-    version = 2
-    schema =     {'definitions': {'CharmInfo': {'additionalProperties': False,
-                                   'properties': {'CharmURL': {'type': 'string'}},
-                                   'required': ['CharmURL'],
-                                   'type': 'object'},
-                     'CharmsList': {'additionalProperties': False,
-                                    'properties': {'Names': {'items': {'type': 'string'},
-                                                             'type': 'array'}},
-                                    'required': ['Names'],
-                                    'type': 'object'},
-                     'CharmsListResult': {'additionalProperties': False,
-                                          'properties': {'CharmURLs': {'items': {'type': 'string'},
-                                                                       'type': 'array'}},
-                                          'required': ['CharmURLs'],
-                                          'type': 'object'},
-                     'IsMeteredResult': {'additionalProperties': False,
-                                         'properties': {'Metered': {'type': 'boolean'}},
-                                         'required': ['Metered'],
-                                         'type': 'object'}},
-     'properties': {'CharmInfo': {'properties': {'Params': {'$ref': '#/definitions/CharmInfo'},
-                                                 'Result': {'$ref': '#/definitions/CharmInfo'}},
-                                  'type': 'object'},
-                    'IsMetered': {'properties': {'Params': {'$ref': '#/definitions/CharmInfo'},
-                                                 'Result': {'$ref': '#/definitions/IsMeteredResult'}},
-                                  'type': 'object'},
-                    'List': {'properties': {'Params': {'$ref': '#/definitions/CharmsList'},
-                                            'Result': {'$ref': '#/definitions/CharmsListResult'}},
-                             'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(CharmInfo)
-    async def CharmInfo(self, charmurl):
-        '''
-        charmurl : str
-        Returns -> str
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Charms', Request='CharmInfo', Version=2, Params=params)
-        params['CharmURL'] = charmurl
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(IsMeteredResult)
-    async def IsMetered(self, charmurl):
-        '''
-        charmurl : str
-        Returns -> bool
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Charms', Request='IsMetered', Version=2, Params=params)
-        params['CharmURL'] = charmurl
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(CharmsListResult)
-    async def List(self, names):
-        '''
-        names : typing.Sequence[str]
-        Returns -> typing.Sequence[str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Charms', Request='List', Version=2, Params=params)
-        params['Names'] = names
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Cleaner(Type):
-    name = 'Cleaner'
-    version = 2
-    schema =     {'definitions': {'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'Cleanup': {'type': 'object'},
-                    'WatchCleanups': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                      'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(None)
-    async def Cleanup(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Cleaner', Request='Cleanup', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def WatchCleanups(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Cleaner', Request='WatchCleanups', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Client(Type):
-    name = 'Client'
-    version = 1
-    schema =     {'definitions': {'APIHostPortsResult': {'additionalProperties': False,
-                                            'properties': {'Servers': {'items': {'items': {'$ref': '#/definitions/HostPort'},
-                                                                                 'type': 'array'},
-                                                                       'type': 'array'}},
-                                            'required': ['Servers'],
-                                            'type': 'object'},
-                     'AddCharm': {'additionalProperties': False,
-                                  'properties': {'Channel': {'type': 'string'},
-                                                 'URL': {'type': 'string'}},
-                                  'required': ['URL', 'Channel'],
-                                  'type': 'object'},
-                     'AddCharmWithAuthorization': {'additionalProperties': False,
-                                                   'properties': {'Channel': {'type': 'string'},
-                                                                  'CharmStoreMacaroon': {'$ref': '#/definitions/Macaroon'},
-                                                                  'URL': {'type': 'string'}},
-                                                   'required': ['URL',
-                                                                'Channel',
-                                                                'CharmStoreMacaroon'],
-                                                   'type': 'object'},
-                     'AddMachineParams': {'additionalProperties': False,
-                                          'properties': {'Addrs': {'items': {'$ref': '#/definitions/Address'},
-                                                                   'type': 'array'},
-                                                         'Constraints': {'$ref': '#/definitions/Value'},
-                                                         'ContainerType': {'type': 'string'},
-                                                         'Disks': {'items': {'$ref': '#/definitions/Constraints'},
-                                                                   'type': 'array'},
-                                                         'HardwareCharacteristics': {'$ref': '#/definitions/HardwareCharacteristics'},
-                                                         'InstanceId': {'type': 'string'},
-                                                         'Jobs': {'items': {'type': 'string'},
-                                                                  'type': 'array'},
-                                                         'Nonce': {'type': 'string'},
-                                                         'ParentId': {'type': 'string'},
-                                                         'Placement': {'$ref': '#/definitions/Placement'},
-                                                         'Series': {'type': 'string'}},
-                                          'required': ['Series',
-                                                       'Constraints',
-                                                       'Jobs',
-                                                       'Disks',
-                                                       'Placement',
-                                                       'ParentId',
-                                                       'ContainerType',
-                                                       'InstanceId',
-                                                       'Nonce',
-                                                       'HardwareCharacteristics',
-                                                       'Addrs'],
-                                          'type': 'object'},
-                     'AddMachines': {'additionalProperties': False,
-                                     'properties': {'MachineParams': {'items': {'$ref': '#/definitions/AddMachineParams'},
-                                                                      'type': 'array'}},
-                                     'required': ['MachineParams'],
-                                     'type': 'object'},
-                     'AddMachinesResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'Machine': {'type': 'string'}},
-                                           'required': ['Machine', 'Error'],
-                                           'type': 'object'},
-                     'AddMachinesResults': {'additionalProperties': False,
-                                            'properties': {'Machines': {'items': {'$ref': '#/definitions/AddMachinesResult'},
-                                                                        'type': 'array'}},
-                                            'required': ['Machines'],
-                                            'type': 'object'},
-                     'Address': {'additionalProperties': False,
-                                 'properties': {'Scope': {'type': 'string'},
-                                                'SpaceName': {'type': 'string'},
-                                                'Type': {'type': 'string'},
-                                                'Value': {'type': 'string'}},
-                                 'required': ['Value', 'Type', 'Scope'],
-                                 'type': 'object'},
-                     'AgentVersionResult': {'additionalProperties': False,
-                                            'properties': {'Version': {'$ref': '#/definitions/Number'}},
-                                            'required': ['Version'],
-                                            'type': 'object'},
-                     'AllWatcherId': {'additionalProperties': False,
-                                      'properties': {'AllWatcherId': {'type': 'string'}},
-                                      'required': ['AllWatcherId'],
-                                      'type': 'object'},
-                     'Binary': {'additionalProperties': False,
-                                'properties': {'Arch': {'type': 'string'},
-                                               'Number': {'$ref': '#/definitions/Number'},
-                                               'Series': {'type': 'string'}},
-                                'required': ['Number', 'Series', 'Arch'],
-                                'type': 'object'},
-                     'BundleChangesChange': {'additionalProperties': False,
-                                             'properties': {'args': {'items': {'additionalProperties': True,
-                                                                               'type': 'object'},
-                                                                     'type': 'array'},
-                                                            'id': {'type': 'string'},
-                                                            'method': {'type': 'string'},
-                                                            'requires': {'items': {'type': 'string'},
-                                                                         'type': 'array'}},
-                                             'required': ['id',
-                                                          'method',
-                                                          'args',
-                                                          'requires'],
-                                             'type': 'object'},
-                     'CharmInfo': {'additionalProperties': False,
-                                   'properties': {'CharmURL': {'type': 'string'}},
-                                   'required': ['CharmURL'],
-                                   'type': 'object'},
-                     'Constraints': {'additionalProperties': False,
-                                     'properties': {'Count': {'type': 'integer'},
-                                                    'Pool': {'type': 'string'},
-                                                    'Size': {'type': 'integer'}},
-                                     'required': ['Pool', 'Size', 'Count'],
-                                     'type': 'object'},
-                     'DestroyMachines': {'additionalProperties': False,
-                                         'properties': {'Force': {'type': 'boolean'},
-                                                        'MachineNames': {'items': {'type': 'string'},
-                                                                         'type': 'array'}},
-                                         'required': ['MachineNames', 'Force'],
-                                         'type': 'object'},
-                     'DetailedStatus': {'additionalProperties': False,
-                                        'properties': {'Data': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                             'type': 'object'}},
-                                                                'type': 'object'},
-                                                       'Err': {'additionalProperties': True,
-                                                               'type': 'object'},
-                                                       'Info': {'type': 'string'},
-                                                       'Kind': {'type': 'string'},
-                                                       'Life': {'type': 'string'},
-                                                       'Since': {'format': 'date-time',
-                                                                 'type': 'string'},
-                                                       'Status': {'type': 'string'},
-                                                       'Version': {'type': 'string'}},
-                                        'required': ['Status',
-                                                     'Info',
-                                                     'Data',
-                                                     'Since',
-                                                     'Kind',
-                                                     'Version',
-                                                     'Life',
-                                                     'Err'],
-                                        'type': 'object'},
-                     'EndpointStatus': {'additionalProperties': False,
-                                        'properties': {'Name': {'type': 'string'},
-                                                       'Role': {'type': 'string'},
-                                                       'ServiceName': {'type': 'string'},
-                                                       'Subordinate': {'type': 'boolean'}},
-                                        'required': ['ServiceName',
-                                                     'Name',
-                                                     'Role',
-                                                     'Subordinate'],
-                                        'type': 'object'},
-                     'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'EntityStatus': {'additionalProperties': False,
-                                      'properties': {'Data': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                           'type': 'object'}},
-                                                              'type': 'object'},
-                                                     'Info': {'type': 'string'},
-                                                     'Since': {'format': 'date-time',
-                                                               'type': 'string'},
-                                                     'Status': {'type': 'string'}},
-                                      'required': ['Status',
-                                                   'Info',
-                                                   'Data',
-                                                   'Since'],
-                                      'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'FindToolsParams': {'additionalProperties': False,
-                                         'properties': {'Arch': {'type': 'string'},
-                                                        'MajorVersion': {'type': 'integer'},
-                                                        'MinorVersion': {'type': 'integer'},
-                                                        'Number': {'$ref': '#/definitions/Number'},
-                                                        'Series': {'type': 'string'}},
-                                         'required': ['Number',
-                                                      'MajorVersion',
-                                                      'MinorVersion',
-                                                      'Arch',
-                                                      'Series'],
-                                         'type': 'object'},
-                     'FindToolsResult': {'additionalProperties': False,
-                                         'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                        'List': {'items': {'$ref': '#/definitions/Tools'},
-                                                                 'type': 'array'}},
-                                         'required': ['List', 'Error'],
-                                         'type': 'object'},
-                     'FullStatus': {'additionalProperties': False,
-                                    'properties': {'AvailableVersion': {'type': 'string'},
-                                                   'Machines': {'patternProperties': {'.*': {'$ref': '#/definitions/MachineStatus'}},
-                                                                'type': 'object'},
-                                                   'ModelName': {'type': 'string'},
-                                                   'Relations': {'items': {'$ref': '#/definitions/RelationStatus'},
-                                                                 'type': 'array'},
-                                                   'Services': {'patternProperties': {'.*': {'$ref': '#/definitions/ServiceStatus'}},
-                                                                'type': 'object'}},
-                                    'required': ['ModelName',
-                                                 'AvailableVersion',
-                                                 'Machines',
-                                                 'Services',
-                                                 'Relations'],
-                                    'type': 'object'},
-                     'GetBundleChangesParams': {'additionalProperties': False,
-                                                'properties': {'yaml': {'type': 'string'}},
-                                                'required': ['yaml'],
-                                                'type': 'object'},
-                     'GetBundleChangesResults': {'additionalProperties': False,
-                                                 'properties': {'changes': {'items': {'$ref': '#/definitions/BundleChangesChange'},
-                                                                            'type': 'array'},
-                                                                'errors': {'items': {'type': 'string'},
-                                                                           'type': 'array'}},
-                                                 'type': 'object'},
-                     'GetConstraintsResults': {'additionalProperties': False,
-                                               'properties': {'Constraints': {'$ref': '#/definitions/Value'}},
-                                               'required': ['Constraints'],
-                                               'type': 'object'},
-                     'HardwareCharacteristics': {'additionalProperties': False,
-                                                 'properties': {'Arch': {'type': 'string'},
-                                                                'AvailabilityZone': {'type': 'string'},
-                                                                'CpuCores': {'type': 'integer'},
-                                                                'CpuPower': {'type': 'integer'},
-                                                                'Mem': {'type': 'integer'},
-                                                                'RootDisk': {'type': 'integer'},
-                                                                'Tags': {'items': {'type': 'string'},
-                                                                         'type': 'array'}},
-                                                 'type': 'object'},
-                     'HostPort': {'additionalProperties': False,
-                                  'properties': {'Address': {'$ref': '#/definitions/Address'},
-                                                 'Port': {'type': 'integer'}},
-                                  'required': ['Address', 'Port'],
-                                  'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'MachineStatus': {'additionalProperties': False,
-                                       'properties': {'AgentStatus': {'$ref': '#/definitions/DetailedStatus'},
-                                                      'Containers': {'patternProperties': {'.*': {'$ref': '#/definitions/MachineStatus'}},
-                                                                     'type': 'object'},
-                                                      'DNSName': {'type': 'string'},
-                                                      'Hardware': {'type': 'string'},
-                                                      'HasVote': {'type': 'boolean'},
-                                                      'Id': {'type': 'string'},
-                                                      'InstanceId': {'type': 'string'},
-                                                      'InstanceStatus': {'$ref': '#/definitions/DetailedStatus'},
-                                                      'Jobs': {'items': {'type': 'string'},
-                                                               'type': 'array'},
-                                                      'Series': {'type': 'string'},
-                                                      'WantsVote': {'type': 'boolean'}},
-                                       'required': ['AgentStatus',
-                                                    'InstanceStatus',
-                                                    'DNSName',
-                                                    'InstanceId',
-                                                    'Series',
-                                                    'Id',
-                                                    'Containers',
-                                                    'Hardware',
-                                                    'Jobs',
-                                                    'HasVote',
-                                                    'WantsVote'],
-                                       'type': 'object'},
-                     'MeterStatus': {'additionalProperties': False,
-                                     'properties': {'Color': {'type': 'string'},
-                                                    'Message': {'type': 'string'}},
-                                     'required': ['Color', 'Message'],
-                                     'type': 'object'},
-                     'ModelConfigResults': {'additionalProperties': False,
-                                            'properties': {'Config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                   'type': 'object'}},
-                                                                      'type': 'object'}},
-                                            'required': ['Config'],
-                                            'type': 'object'},
-                     'ModelInfo': {'additionalProperties': False,
-                                   'properties': {'DefaultSeries': {'type': 'string'},
-                                                  'Life': {'type': 'string'},
-                                                  'Name': {'type': 'string'},
-                                                  'OwnerTag': {'type': 'string'},
-                                                  'ProviderType': {'type': 'string'},
-                                                  'ServerUUID': {'type': 'string'},
-                                                  'Status': {'$ref': '#/definitions/EntityStatus'},
-                                                  'UUID': {'type': 'string'},
-                                                  'Users': {'items': {'$ref': '#/definitions/ModelUserInfo'},
-                                                            'type': 'array'}},
-                                   'required': ['Name',
-                                                'UUID',
-                                                'ServerUUID',
-                                                'ProviderType',
-                                                'DefaultSeries',
-                                                'OwnerTag',
-                                                'Life',
-                                                'Status',
-                                                'Users'],
-                                   'type': 'object'},
-                     'ModelSet': {'additionalProperties': False,
-                                  'properties': {'Config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                         'type': 'object'}},
-                                                            'type': 'object'}},
-                                  'required': ['Config'],
-                                  'type': 'object'},
-                     'ModelUnset': {'additionalProperties': False,
-                                    'properties': {'Keys': {'items': {'type': 'string'},
-                                                            'type': 'array'}},
-                                    'required': ['Keys'],
-                                    'type': 'object'},
-                     'ModelUserInfo': {'additionalProperties': False,
-                                       'properties': {'access': {'type': 'string'},
-                                                      'displayname': {'type': 'string'},
-                                                      'lastconnection': {'format': 'date-time',
-                                                                         'type': 'string'},
-                                                      'user': {'type': 'string'}},
-                                       'required': ['user',
-                                                    'displayname',
-                                                    'lastconnection',
-                                                    'access'],
-                                       'type': 'object'},
-                     'ModelUserInfoResult': {'additionalProperties': False,
-                                             'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                            'result': {'$ref': '#/definitions/ModelUserInfo'}},
-                                             'type': 'object'},
-                     'ModelUserInfoResults': {'additionalProperties': False,
-                                              'properties': {'results': {'items': {'$ref': '#/definitions/ModelUserInfoResult'},
-                                                                         'type': 'array'}},
-                                              'required': ['results'],
-                                              'type': 'object'},
-                     'Number': {'additionalProperties': False,
-                                'properties': {'Build': {'type': 'integer'},
-                                               'Major': {'type': 'integer'},
-                                               'Minor': {'type': 'integer'},
-                                               'Patch': {'type': 'integer'},
-                                               'Tag': {'type': 'string'}},
-                                'required': ['Major',
-                                             'Minor',
-                                             'Tag',
-                                             'Patch',
-                                             'Build'],
-                                'type': 'object'},
-                     'Placement': {'additionalProperties': False,
-                                   'properties': {'Directive': {'type': 'string'},
-                                                  'Scope': {'type': 'string'}},
-                                   'required': ['Scope', 'Directive'],
-                                   'type': 'object'},
-                     'PrivateAddress': {'additionalProperties': False,
-                                        'properties': {'Target': {'type': 'string'}},
-                                        'required': ['Target'],
-                                        'type': 'object'},
-                     'PrivateAddressResults': {'additionalProperties': False,
-                                               'properties': {'PrivateAddress': {'type': 'string'}},
-                                               'required': ['PrivateAddress'],
-                                               'type': 'object'},
-                     'ProvisioningScriptParams': {'additionalProperties': False,
-                                                  'properties': {'DataDir': {'type': 'string'},
-                                                                 'DisablePackageCommands': {'type': 'boolean'},
-                                                                 'MachineId': {'type': 'string'},
-                                                                 'Nonce': {'type': 'string'}},
-                                                  'required': ['MachineId',
-                                                               'Nonce',
-                                                               'DataDir',
-                                                               'DisablePackageCommands'],
-                                                  'type': 'object'},
-                     'ProvisioningScriptResult': {'additionalProperties': False,
-                                                  'properties': {'Script': {'type': 'string'}},
-                                                  'required': ['Script'],
-                                                  'type': 'object'},
-                     'PublicAddress': {'additionalProperties': False,
-                                       'properties': {'Target': {'type': 'string'}},
-                                       'required': ['Target'],
-                                       'type': 'object'},
-                     'PublicAddressResults': {'additionalProperties': False,
-                                              'properties': {'PublicAddress': {'type': 'string'}},
-                                              'required': ['PublicAddress'],
-                                              'type': 'object'},
-                     'RelationStatus': {'additionalProperties': False,
-                                        'properties': {'Endpoints': {'items': {'$ref': '#/definitions/EndpointStatus'},
-                                                                     'type': 'array'},
-                                                       'Id': {'type': 'integer'},
-                                                       'Interface': {'type': 'string'},
-                                                       'Key': {'type': 'string'},
-                                                       'Scope': {'type': 'string'}},
-                                        'required': ['Id',
-                                                     'Key',
-                                                     'Interface',
-                                                     'Scope',
-                                                     'Endpoints'],
-                                        'type': 'object'},
-                     'ResolveCharmResult': {'additionalProperties': False,
-                                            'properties': {'Error': {'type': 'string'},
-                                                           'URL': {'$ref': '#/definitions/URL'}},
-                                            'type': 'object'},
-                     'ResolveCharmResults': {'additionalProperties': False,
-                                             'properties': {'URLs': {'items': {'$ref': '#/definitions/ResolveCharmResult'},
-                                                                     'type': 'array'}},
-                                             'required': ['URLs'],
-                                             'type': 'object'},
-                     'ResolveCharms': {'additionalProperties': False,
-                                       'properties': {'References': {'items': {'$ref': '#/definitions/URL'},
-                                                                     'type': 'array'}},
-                                       'required': ['References'],
-                                       'type': 'object'},
-                     'Resolved': {'additionalProperties': False,
-                                  'properties': {'Retry': {'type': 'boolean'},
-                                                 'UnitName': {'type': 'string'}},
-                                  'required': ['UnitName', 'Retry'],
-                                  'type': 'object'},
-                     'ServiceStatus': {'additionalProperties': False,
-                                       'properties': {'CanUpgradeTo': {'type': 'string'},
-                                                      'Charm': {'type': 'string'},
-                                                      'Err': {'additionalProperties': True,
-                                                              'type': 'object'},
-                                                      'Exposed': {'type': 'boolean'},
-                                                      'Life': {'type': 'string'},
-                                                      'MeterStatuses': {'patternProperties': {'.*': {'$ref': '#/definitions/MeterStatus'}},
-                                                                        'type': 'object'},
-                                                      'Relations': {'patternProperties': {'.*': {'items': {'type': 'string'},
-                                                                                                 'type': 'array'}},
-                                                                    'type': 'object'},
-                                                      'Status': {'$ref': '#/definitions/DetailedStatus'},
-                                                      'SubordinateTo': {'items': {'type': 'string'},
-                                                                        'type': 'array'},
-                                                      'Units': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitStatus'}},
-                                                                'type': 'object'}},
-                                       'required': ['Err',
-                                                    'Charm',
-                                                    'Exposed',
-                                                    'Life',
-                                                    'Relations',
-                                                    'CanUpgradeTo',
-                                                    'SubordinateTo',
-                                                    'Units',
-                                                    'MeterStatuses',
-                                                    'Status'],
-                                       'type': 'object'},
-                     'SetConstraints': {'additionalProperties': False,
-                                        'properties': {'Constraints': {'$ref': '#/definitions/Value'},
-                                                       'ServiceName': {'type': 'string'}},
-                                        'required': ['ServiceName', 'Constraints'],
-                                        'type': 'object'},
-                     'SetModelAgentVersion': {'additionalProperties': False,
-                                              'properties': {'Version': {'$ref': '#/definitions/Number'}},
-                                              'required': ['Version'],
-                                              'type': 'object'},
-                     'StatusHistoryArgs': {'additionalProperties': False,
-                                           'properties': {'Kind': {'type': 'string'},
-                                                          'Name': {'type': 'string'},
-                                                          'Size': {'type': 'integer'}},
-                                           'required': ['Kind', 'Size', 'Name'],
-                                           'type': 'object'},
-                     'StatusHistoryResults': {'additionalProperties': False,
-                                              'properties': {'Statuses': {'items': {'$ref': '#/definitions/DetailedStatus'},
-                                                                          'type': 'array'}},
-                                              'required': ['Statuses'],
-                                              'type': 'object'},
-                     'StatusParams': {'additionalProperties': False,
-                                      'properties': {'Patterns': {'items': {'type': 'string'},
-                                                                  'type': 'array'}},
-                                      'required': ['Patterns'],
-                                      'type': 'object'},
-                     'Tools': {'additionalProperties': False,
-                               'properties': {'sha256': {'type': 'string'},
-                                              'size': {'type': 'integer'},
-                                              'url': {'type': 'string'},
-                                              'version': {'$ref': '#/definitions/Binary'}},
-                               'required': ['version', 'url', 'size'],
-                               'type': 'object'},
-                     'URL': {'additionalProperties': False,
-                             'properties': {'Channel': {'type': 'string'},
-                                            'Name': {'type': 'string'},
-                                            'Revision': {'type': 'integer'},
-                                            'Schema': {'type': 'string'},
-                                            'Series': {'type': 'string'},
-                                            'User': {'type': 'string'}},
-                             'required': ['Schema',
-                                          'User',
-                                          'Name',
-                                          'Revision',
-                                          'Series',
-                                          'Channel'],
-                             'type': 'object'},
-                     'UnitStatus': {'additionalProperties': False,
-                                    'properties': {'AgentStatus': {'$ref': '#/definitions/DetailedStatus'},
-                                                   'Charm': {'type': 'string'},
-                                                   'Machine': {'type': 'string'},
-                                                   'OpenedPorts': {'items': {'type': 'string'},
-                                                                   'type': 'array'},
-                                                   'PublicAddress': {'type': 'string'},
-                                                   'Subordinates': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitStatus'}},
-                                                                    'type': 'object'},
-                                                   'WorkloadStatus': {'$ref': '#/definitions/DetailedStatus'}},
-                                    'required': ['AgentStatus',
-                                                 'WorkloadStatus',
-                                                 'Machine',
-                                                 'OpenedPorts',
-                                                 'PublicAddress',
-                                                 'Charm',
-                                                 'Subordinates'],
-                                    'type': 'object'},
-                     'Value': {'additionalProperties': False,
-                               'properties': {'arch': {'type': 'string'},
-                                              'container': {'type': 'string'},
-                                              'cpu-cores': {'type': 'integer'},
-                                              'cpu-power': {'type': 'integer'},
-                                              'instance-type': {'type': 'string'},
-                                              'mem': {'type': 'integer'},
-                                              'root-disk': {'type': 'integer'},
-                                              'spaces': {'items': {'type': 'string'},
-                                                         'type': 'array'},
-                                              'tags': {'items': {'type': 'string'},
-                                                       'type': 'array'},
-                                              'virt-type': {'type': 'string'}},
-                               'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}},
-                                     'type': 'object'},
-                    'AbortCurrentUpgrade': {'type': 'object'},
-                    'AddCharm': {'properties': {'Params': {'$ref': '#/definitions/AddCharm'}},
-                                 'type': 'object'},
-                    'AddCharmWithAuthorization': {'properties': {'Params': {'$ref': '#/definitions/AddCharmWithAuthorization'}},
-                                                  'type': 'object'},
-                    'AddMachines': {'properties': {'Params': {'$ref': '#/definitions/AddMachines'},
-                                                   'Result': {'$ref': '#/definitions/AddMachinesResults'}},
-                                    'type': 'object'},
-                    'AddMachinesV2': {'properties': {'Params': {'$ref': '#/definitions/AddMachines'},
-                                                     'Result': {'$ref': '#/definitions/AddMachinesResults'}},
-                                      'type': 'object'},
-                    'AgentVersion': {'properties': {'Result': {'$ref': '#/definitions/AgentVersionResult'}},
-                                     'type': 'object'},
-                    'CharmInfo': {'properties': {'Params': {'$ref': '#/definitions/CharmInfo'},
-                                                 'Result': {'$ref': '#/definitions/CharmInfo'}},
-                                  'type': 'object'},
-                    'DestroyMachines': {'properties': {'Params': {'$ref': '#/definitions/DestroyMachines'}},
-                                        'type': 'object'},
-                    'DestroyModel': {'type': 'object'},
-                    'FindTools': {'properties': {'Params': {'$ref': '#/definitions/FindToolsParams'},
-                                                 'Result': {'$ref': '#/definitions/FindToolsResult'}},
-                                  'type': 'object'},
-                    'FullStatus': {'properties': {'Params': {'$ref': '#/definitions/StatusParams'},
-                                                  'Result': {'$ref': '#/definitions/FullStatus'}},
-                                   'type': 'object'},
-                    'GetBundleChanges': {'properties': {'Params': {'$ref': '#/definitions/GetBundleChangesParams'},
-                                                        'Result': {'$ref': '#/definitions/GetBundleChangesResults'}},
-                                         'type': 'object'},
-                    'GetModelConstraints': {'properties': {'Result': {'$ref': '#/definitions/GetConstraintsResults'}},
-                                            'type': 'object'},
-                    'InjectMachines': {'properties': {'Params': {'$ref': '#/definitions/AddMachines'},
-                                                      'Result': {'$ref': '#/definitions/AddMachinesResults'}},
-                                       'type': 'object'},
-                    'ModelGet': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResults'}},
-                                 'type': 'object'},
-                    'ModelInfo': {'properties': {'Result': {'$ref': '#/definitions/ModelInfo'}},
-                                  'type': 'object'},
-                    'ModelSet': {'properties': {'Params': {'$ref': '#/definitions/ModelSet'}},
-                                 'type': 'object'},
-                    'ModelUnset': {'properties': {'Params': {'$ref': '#/definitions/ModelUnset'}},
-                                   'type': 'object'},
-                    'ModelUserInfo': {'properties': {'Result': {'$ref': '#/definitions/ModelUserInfoResults'}},
-                                      'type': 'object'},
-                    'PrivateAddress': {'properties': {'Params': {'$ref': '#/definitions/PrivateAddress'},
-                                                      'Result': {'$ref': '#/definitions/PrivateAddressResults'}},
-                                       'type': 'object'},
-                    'ProvisioningScript': {'properties': {'Params': {'$ref': '#/definitions/ProvisioningScriptParams'},
-                                                          'Result': {'$ref': '#/definitions/ProvisioningScriptResult'}},
-                                           'type': 'object'},
-                    'PublicAddress': {'properties': {'Params': {'$ref': '#/definitions/PublicAddress'},
-                                                     'Result': {'$ref': '#/definitions/PublicAddressResults'}},
-                                      'type': 'object'},
-                    'ResolveCharms': {'properties': {'Params': {'$ref': '#/definitions/ResolveCharms'},
-                                                     'Result': {'$ref': '#/definitions/ResolveCharmResults'}},
-                                      'type': 'object'},
-                    'Resolved': {'properties': {'Params': {'$ref': '#/definitions/Resolved'}},
-                                 'type': 'object'},
-                    'RetryProvisioning': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                         'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                          'type': 'object'},
-                    'SetModelAgentVersion': {'properties': {'Params': {'$ref': '#/definitions/SetModelAgentVersion'}},
-                                             'type': 'object'},
-                    'SetModelConstraints': {'properties': {'Params': {'$ref': '#/definitions/SetConstraints'}},
-                                            'type': 'object'},
-                    'StatusHistory': {'properties': {'Params': {'$ref': '#/definitions/StatusHistoryArgs'},
-                                                     'Result': {'$ref': '#/definitions/StatusHistoryResults'}},
-                                      'type': 'object'},
-                    'WatchAll': {'properties': {'Result': {'$ref': '#/definitions/AllWatcherId'}},
-                                 'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(APIHostPortsResult)
-    async def APIHostPorts(self):
-        '''
-
-        Returns -> typing.Sequence[~HostPort]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='APIHostPorts', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def AbortCurrentUpgrade(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='AbortCurrentUpgrade', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def AddCharm(self, channel, url):
-        '''
-        channel : str
-        url : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='AddCharm', Version=1, Params=params)
-        params['Channel'] = channel
-        params['URL'] = url
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def AddCharmWithAuthorization(self, channel, charmstoremacaroon, url):
-        '''
-        channel : str
-        charmstoremacaroon : Macaroon
-        url : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='AddCharmWithAuthorization', Version=1, Params=params)
-        params['Channel'] = channel
-        params['CharmStoreMacaroon'] = charmstoremacaroon
-        params['URL'] = url
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(AddMachinesResults)
-    async def AddMachines(self, machineparams):
-        '''
-        machineparams : typing.Sequence[~AddMachineParams]
-        Returns -> typing.Sequence[~AddMachinesResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='AddMachines', Version=1, Params=params)
-        params['MachineParams'] = machineparams
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(AddMachinesResults)
-    async def AddMachinesV2(self, machineparams):
-        '''
-        machineparams : typing.Sequence[~AddMachineParams]
-        Returns -> typing.Sequence[~AddMachinesResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='AddMachinesV2', Version=1, Params=params)
-        params['MachineParams'] = machineparams
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(AgentVersionResult)
-    async def AgentVersion(self):
-        '''
-
-        Returns -> Number
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='AgentVersion', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(CharmInfo)
-    async def CharmInfo(self, charmurl):
-        '''
-        charmurl : str
-        Returns -> str
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='CharmInfo', Version=1, Params=params)
-        params['CharmURL'] = charmurl
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def DestroyMachines(self, force, machinenames):
-        '''
-        force : bool
-        machinenames : typing.Sequence[str]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='DestroyMachines', Version=1, Params=params)
-        params['Force'] = force
-        params['MachineNames'] = machinenames
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def DestroyModel(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='DestroyModel', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(FindToolsResult)
-    async def FindTools(self, arch, majorversion, minorversion, number, series):
-        '''
-        arch : str
-        majorversion : int
-        minorversion : int
-        number : Number
-        series : str
-        Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence[~Tools]]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='FindTools', Version=1, Params=params)
-        params['Arch'] = arch
-        params['MajorVersion'] = majorversion
-        params['MinorVersion'] = minorversion
-        params['Number'] = number
-        params['Series'] = series
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(FullStatus)
-    async def FullStatus(self, patterns):
-        '''
-        patterns : typing.Sequence[str]
-        Returns -> typing.Union[typing.Sequence[~RelationStatus], typing.Mapping[str, ~ServiceStatus]]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='FullStatus', Version=1, Params=params)
-        params['Patterns'] = patterns
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(GetBundleChangesResults)
-    async def GetBundleChanges(self, yaml):
-        '''
-        yaml : str
-        Returns -> typing.Sequence[~BundleChangesChange]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='GetBundleChanges', Version=1, Params=params)
-        params['yaml'] = yaml
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(GetConstraintsResults)
-    async def GetModelConstraints(self):
-        '''
-
-        Returns -> Value
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='GetModelConstraints', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(AddMachinesResults)
-    async def InjectMachines(self, machineparams):
-        '''
-        machineparams : typing.Sequence[~AddMachineParams]
-        Returns -> typing.Sequence[~AddMachinesResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='InjectMachines', Version=1, Params=params)
-        params['MachineParams'] = machineparams
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelConfigResults)
-    async def ModelGet(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='ModelGet', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelInfo)
-    async def ModelInfo(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('EntityStatus'), typing.Sequence[~ModelUserInfo]]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='ModelInfo', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def ModelSet(self, config):
-        '''
-        config : typing.Mapping[str, typing.Any]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='ModelSet', Version=1, Params=params)
-        params['Config'] = config
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def ModelUnset(self, keys):
-        '''
-        keys : typing.Sequence[str]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='ModelUnset', Version=1, Params=params)
-        params['Keys'] = keys
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelUserInfoResults)
-    async def ModelUserInfo(self):
-        '''
-
-        Returns -> typing.Sequence[~ModelUserInfoResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='ModelUserInfo', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(PrivateAddressResults)
-    async def PrivateAddress(self, target):
-        '''
-        target : str
-        Returns -> str
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='PrivateAddress', Version=1, Params=params)
-        params['Target'] = target
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ProvisioningScriptResult)
-    async def ProvisioningScript(self, datadir, disablepackagecommands, machineid, nonce):
-        '''
-        datadir : str
-        disablepackagecommands : bool
-        machineid : str
-        nonce : str
-        Returns -> str
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='ProvisioningScript', Version=1, Params=params)
-        params['DataDir'] = datadir
-        params['DisablePackageCommands'] = disablepackagecommands
-        params['MachineId'] = machineid
-        params['Nonce'] = nonce
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(PublicAddressResults)
-    async def PublicAddress(self, target):
-        '''
-        target : str
-        Returns -> str
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='PublicAddress', Version=1, Params=params)
-        params['Target'] = target
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ResolveCharmResults)
-    async def ResolveCharms(self, references):
-        '''
-        references : typing.Sequence[~URL]
-        Returns -> typing.Sequence[~ResolveCharmResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='ResolveCharms', Version=1, Params=params)
-        params['References'] = references
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Resolved(self, retry, unitname):
-        '''
-        retry : bool
-        unitname : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='Resolved', Version=1, Params=params)
-        params['Retry'] = retry
-        params['UnitName'] = unitname
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def RetryProvisioning(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='RetryProvisioning', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def SetModelAgentVersion(self, build, major, minor, patch, tag):
-        '''
-        build : int
-        major : int
-        minor : int
-        patch : int
-        tag : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='SetModelAgentVersion', Version=1, Params=params)
-        params['Build'] = build
-        params['Major'] = major
-        params['Minor'] = minor
-        params['Patch'] = patch
-        params['Tag'] = tag
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def SetModelConstraints(self, constraints, servicename):
-        '''
-        constraints : Value
-        servicename : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='SetModelConstraints', Version=1, Params=params)
-        params['Constraints'] = constraints
-        params['ServiceName'] = servicename
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StatusHistoryResults)
-    async def StatusHistory(self, kind, name, size):
-        '''
-        kind : str
-        name : str
-        size : int
-        Returns -> typing.Sequence[~DetailedStatus]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='StatusHistory', Version=1, Params=params)
-        params['Kind'] = kind
-        params['Name'] = name
-        params['Size'] = size
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(AllWatcherId)
-    async def WatchAll(self):
-        '''
-
-        Returns -> str
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Client', Request='WatchAll', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Controller(Type):
-    name = 'Controller'
-    version = 2
-    schema =     {'definitions': {'AllWatcherId': {'additionalProperties': False,
-                                      'properties': {'AllWatcherId': {'type': 'string'}},
-                                      'required': ['AllWatcherId'],
-                                      'type': 'object'},
-                     'DestroyControllerArgs': {'additionalProperties': False,
-                                               'properties': {'destroy-models': {'type': 'boolean'}},
-                                               'required': ['destroy-models'],
-                                               'type': 'object'},
-                     'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'InitiateModelMigrationArgs': {'additionalProperties': False,
-                                                    'properties': {'specs': {'items': {'$ref': '#/definitions/ModelMigrationSpec'},
-                                                                             'type': 'array'}},
-                                                    'required': ['specs'],
-                                                    'type': 'object'},
-                     'InitiateModelMigrationResult': {'additionalProperties': False,
-                                                      'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                     'id': {'type': 'string'},
-                                                                     'model-tag': {'type': 'string'}},
-                                                      'required': ['model-tag',
-                                                                   'error',
-                                                                   'id'],
-                                                      'type': 'object'},
-                     'InitiateModelMigrationResults': {'additionalProperties': False,
-                                                       'properties': {'results': {'items': {'$ref': '#/definitions/InitiateModelMigrationResult'},
-                                                                                  'type': 'array'}},
-                                                       'required': ['results'],
-                                                       'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'Model': {'additionalProperties': False,
-                               'properties': {'Name': {'type': 'string'},
-                                              'OwnerTag': {'type': 'string'},
-                                              'UUID': {'type': 'string'}},
-                               'required': ['Name', 'UUID', 'OwnerTag'],
-                               'type': 'object'},
-                     'ModelBlockInfo': {'additionalProperties': False,
-                                        'properties': {'blocks': {'items': {'type': 'string'},
-                                                                  'type': 'array'},
-                                                       'model-uuid': {'type': 'string'},
-                                                       'name': {'type': 'string'},
-                                                       'owner-tag': {'type': 'string'}},
-                                        'required': ['name',
-                                                     'model-uuid',
-                                                     'owner-tag',
-                                                     'blocks'],
-                                        'type': 'object'},
-                     'ModelBlockInfoList': {'additionalProperties': False,
-                                            'properties': {'models': {'items': {'$ref': '#/definitions/ModelBlockInfo'},
-                                                                      'type': 'array'}},
-                                            'type': 'object'},
-                     'ModelConfigResults': {'additionalProperties': False,
-                                            'properties': {'Config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                   'type': 'object'}},
-                                                                      'type': 'object'}},
-                                            'required': ['Config'],
-                                            'type': 'object'},
-                     'ModelMigrationSpec': {'additionalProperties': False,
-                                            'properties': {'model-tag': {'type': 'string'},
-                                                           'target-info': {'$ref': '#/definitions/ModelMigrationTargetInfo'}},
-                                            'required': ['model-tag',
-                                                         'target-info'],
-                                            'type': 'object'},
-                     'ModelMigrationTargetInfo': {'additionalProperties': False,
-                                                  'properties': {'addrs': {'items': {'type': 'string'},
-                                                                           'type': 'array'},
-                                                                 'auth-tag': {'type': 'string'},
-                                                                 'ca-cert': {'type': 'string'},
-                                                                 'controller-tag': {'type': 'string'},
-                                                                 'password': {'type': 'string'}},
-                                                  'required': ['controller-tag',
-                                                               'addrs',
-                                                               'ca-cert',
-                                                               'auth-tag',
-                                                               'password'],
-                                                  'type': 'object'},
-                     'ModelStatus': {'additionalProperties': False,
-                                     'properties': {'hosted-machine-count': {'type': 'integer'},
-                                                    'life': {'type': 'string'},
-                                                    'model-tag': {'type': 'string'},
-                                                    'owner-tag': {'type': 'string'},
-                                                    'service-count': {'type': 'integer'}},
-                                     'required': ['model-tag',
-                                                  'life',
-                                                  'hosted-machine-count',
-                                                  'service-count',
-                                                  'owner-tag'],
-                                     'type': 'object'},
-                     'ModelStatusResults': {'additionalProperties': False,
-                                            'properties': {'models': {'items': {'$ref': '#/definitions/ModelStatus'},
-                                                                      'type': 'array'}},
-                                            'required': ['models'],
-                                            'type': 'object'},
-                     'RemoveBlocksArgs': {'additionalProperties': False,
-                                          'properties': {'all': {'type': 'boolean'}},
-                                          'required': ['all'],
-                                          'type': 'object'},
-                     'UserModel': {'additionalProperties': False,
-                                   'properties': {'LastConnection': {'format': 'date-time',
-                                                                     'type': 'string'},
-                                                  'Model': {'$ref': '#/definitions/Model'}},
-                                   'required': ['Model', 'LastConnection'],
-                                   'type': 'object'},
-                     'UserModelList': {'additionalProperties': False,
-                                       'properties': {'UserModels': {'items': {'$ref': '#/definitions/UserModel'},
-                                                                     'type': 'array'}},
-                                       'required': ['UserModels'],
-                                       'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'AllModels': {'properties': {'Result': {'$ref': '#/definitions/UserModelList'}},
-                                  'type': 'object'},
-                    'DestroyController': {'properties': {'Params': {'$ref': '#/definitions/DestroyControllerArgs'}},
-                                          'type': 'object'},
-                    'InitiateModelMigration': {'properties': {'Params': {'$ref': '#/definitions/InitiateModelMigrationArgs'},
-                                                              'Result': {'$ref': '#/definitions/InitiateModelMigrationResults'}},
-                                               'type': 'object'},
-                    'ListBlockedModels': {'properties': {'Result': {'$ref': '#/definitions/ModelBlockInfoList'}},
-                                          'type': 'object'},
-                    'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResults'}},
-                                    'type': 'object'},
-                    'ModelStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                   'Result': {'$ref': '#/definitions/ModelStatusResults'}},
-                                    'type': 'object'},
-                    'RemoveBlocks': {'properties': {'Params': {'$ref': '#/definitions/RemoveBlocksArgs'}},
-                                     'type': 'object'},
-                    'WatchAllModels': {'properties': {'Result': {'$ref': '#/definitions/AllWatcherId'}},
-                                       'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(UserModelList)
-    async def AllModels(self):
-        '''
-
-        Returns -> typing.Sequence[~UserModel]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Controller', Request='AllModels', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def DestroyController(self, destroy_models):
-        '''
-        destroy_models : bool
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Controller', Request='DestroyController', Version=2, Params=params)
-        params['destroy-models'] = destroy_models
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(InitiateModelMigrationResults)
-    async def InitiateModelMigration(self, specs):
-        '''
-        specs : typing.Sequence[~ModelMigrationSpec]
-        Returns -> typing.Sequence[~InitiateModelMigrationResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Controller', Request='InitiateModelMigration', Version=2, Params=params)
-        params['specs'] = specs
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelBlockInfoList)
-    async def ListBlockedModels(self):
-        '''
-
-        Returns -> typing.Sequence[~ModelBlockInfo]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Controller', Request='ListBlockedModels', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelConfigResults)
-    async def ModelConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Controller', Request='ModelConfig', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelStatusResults)
-    async def ModelStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ModelStatus]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Controller', Request='ModelStatus', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def RemoveBlocks(self, all_):
-        '''
-        all_ : bool
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Controller', Request='RemoveBlocks', Version=2, Params=params)
-        params['all'] = all_
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(AllWatcherId)
-    async def WatchAllModels(self):
-        '''
-
-        Returns -> str
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Controller', Request='WatchAllModels', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Deployer(Type):
-    name = 'Deployer'
-    version = 1
-    schema =     {'definitions': {'APIHostPortsResult': {'additionalProperties': False,
-                                            'properties': {'Servers': {'items': {'items': {'$ref': '#/definitions/HostPort'},
-                                                                                 'type': 'array'},
-                                                                       'type': 'array'}},
-                                            'required': ['Servers'],
-                                            'type': 'object'},
-                     'Address': {'additionalProperties': False,
-                                 'properties': {'Scope': {'type': 'string'},
-                                                'SpaceName': {'type': 'string'},
-                                                'Type': {'type': 'string'},
-                                                'Value': {'type': 'string'}},
-                                 'required': ['Value', 'Type', 'Scope'],
-                                 'type': 'object'},
-                     'BytesResult': {'additionalProperties': False,
-                                     'properties': {'Result': {'items': {'type': 'integer'},
-                                                               'type': 'array'}},
-                                     'required': ['Result'],
-                                     'type': 'object'},
-                     'DeployerConnectionValues': {'additionalProperties': False,
-                                                  'properties': {'APIAddresses': {'items': {'type': 'string'},
-                                                                                  'type': 'array'},
-                                                                 'StateAddresses': {'items': {'type': 'string'},
-                                                                                    'type': 'array'}},
-                                                  'required': ['StateAddresses',
-                                                               'APIAddresses'],
-                                                  'type': 'object'},
-                     'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'EntityPassword': {'additionalProperties': False,
-                                        'properties': {'Password': {'type': 'string'},
-                                                       'Tag': {'type': 'string'}},
-                                        'required': ['Tag', 'Password'],
-                                        'type': 'object'},
-                     'EntityPasswords': {'additionalProperties': False,
-                                         'properties': {'Changes': {'items': {'$ref': '#/definitions/EntityPassword'},
-                                                                    'type': 'array'}},
-                                         'required': ['Changes'],
-                                         'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'HostPort': {'additionalProperties': False,
-                                  'properties': {'Address': {'$ref': '#/definitions/Address'},
-                                                 'Port': {'type': 'integer'}},
-                                  'required': ['Address', 'Port'],
-                                  'type': 'object'},
-                     'LifeResult': {'additionalProperties': False,
-                                    'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                   'Life': {'type': 'string'}},
-                                    'required': ['Life', 'Error'],
-                                    'type': 'object'},
-                     'LifeResults': {'additionalProperties': False,
-                                     'properties': {'Results': {'items': {'$ref': '#/definitions/LifeResult'},
-                                                                'type': 'array'}},
-                                     'required': ['Results'],
-                                     'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'StringResult': {'additionalProperties': False,
-                                      'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                     'Result': {'type': 'string'}},
-                                      'required': ['Error', 'Result'],
-                                      'type': 'object'},
-                     'StringsResult': {'additionalProperties': False,
-                                       'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                      'Result': {'items': {'type': 'string'},
-                                                                 'type': 'array'}},
-                                       'required': ['Error', 'Result'],
-                                       'type': 'object'},
-                     'StringsWatchResult': {'additionalProperties': False,
-                                            'properties': {'Changes': {'items': {'type': 'string'},
-                                                                       'type': 'array'},
-                                                           'Error': {'$ref': '#/definitions/Error'},
-                                                           'StringsWatcherId': {'type': 'string'}},
-                                            'required': ['StringsWatcherId',
-                                                         'Changes',
-                                                         'Error'],
-                                            'type': 'object'},
-                     'StringsWatchResults': {'additionalProperties': False,
-                                             'properties': {'Results': {'items': {'$ref': '#/definitions/StringsWatchResult'},
-                                                                        'type': 'array'}},
-                                             'required': ['Results'],
-                                             'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}},
-                                     'type': 'object'},
-                    'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}},
-                                     'type': 'object'},
-                    'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}},
-                               'type': 'object'},
-                    'ConnectionInfo': {'properties': {'Result': {'$ref': '#/definitions/DeployerConnectionValues'}},
-                                       'type': 'object'},
-                    'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                            'Result': {'$ref': '#/definitions/LifeResults'}},
-                             'type': 'object'},
-                    'ModelUUID': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
-                                  'type': 'object'},
-                    'Remove': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                              'Result': {'$ref': '#/definitions/ErrorResults'}},
-                               'type': 'object'},
-                    'SetPasswords': {'properties': {'Params': {'$ref': '#/definitions/EntityPasswords'},
-                                                    'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                     'type': 'object'},
-                    'StateAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}},
-                                       'type': 'object'},
-                    'WatchAPIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                          'type': 'object'},
-                    'WatchUnits': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                  'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                   'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(StringsResult)
-    async def APIAddresses(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence[str]]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Deployer', Request='APIAddresses', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(APIHostPortsResult)
-    async def APIHostPorts(self):
-        '''
-
-        Returns -> typing.Sequence[~HostPort]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Deployer', Request='APIHostPorts', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BytesResult)
-    async def CACert(self):
-        '''
-
-        Returns -> typing.Sequence[int]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Deployer', Request='CACert', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(DeployerConnectionValues)
-    async def ConnectionInfo(self):
-        '''
-
-        Returns -> typing.Sequence[str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Deployer', Request='ConnectionInfo', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LifeResults)
-    async def Life(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Deployer', Request='Life', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResult)
-    async def ModelUUID(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Deployer', Request='ModelUUID', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Remove(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Deployer', Request='Remove', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetPasswords(self, changes):
-        '''
-        changes : typing.Sequence[~EntityPassword]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Deployer', Request='SetPasswords', Version=1, Params=params)
-        params['Changes'] = changes
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsResult)
-    async def StateAddresses(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence[str]]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Deployer', Request='StateAddresses', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def WatchAPIHostPorts(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Deployer', Request='WatchAPIHostPorts', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchUnits(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Deployer', Request='WatchUnits', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class DiscoverSpaces(Type):
-    name = 'DiscoverSpaces'
-    version = 2
-    schema =     {'definitions': {'AddSubnetParams': {'additionalProperties': False,
-                                         'properties': {'SpaceTag': {'type': 'string'},
-                                                        'SubnetProviderId': {'type': 'string'},
-                                                        'SubnetTag': {'type': 'string'},
-                                                        'Zones': {'items': {'type': 'string'},
-                                                                  'type': 'array'}},
-                                         'required': ['SpaceTag'],
-                                         'type': 'object'},
-                     'AddSubnetsParams': {'additionalProperties': False,
-                                          'properties': {'Subnets': {'items': {'$ref': '#/definitions/AddSubnetParams'},
-                                                                     'type': 'array'}},
-                                          'required': ['Subnets'],
-                                          'type': 'object'},
-                     'CreateSpaceParams': {'additionalProperties': False,
-                                           'properties': {'ProviderId': {'type': 'string'},
-                                                          'Public': {'type': 'boolean'},
-                                                          'SpaceTag': {'type': 'string'},
-                                                          'SubnetTags': {'items': {'type': 'string'},
-                                                                         'type': 'array'}},
-                                           'required': ['SubnetTags',
-                                                        'SpaceTag',
-                                                        'Public'],
-                                           'type': 'object'},
-                     'CreateSpacesParams': {'additionalProperties': False,
-                                            'properties': {'Spaces': {'items': {'$ref': '#/definitions/CreateSpaceParams'},
-                                                                      'type': 'array'}},
-                                            'required': ['Spaces'],
-                                            'type': 'object'},
-                     'DiscoverSpacesResults': {'additionalProperties': False,
-                                               'properties': {'Results': {'items': {'$ref': '#/definitions/ProviderSpace'},
-                                                                          'type': 'array'}},
-                                               'required': ['Results'],
-                                               'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'ListSubnetsResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/Subnet'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'ModelConfigResult': {'additionalProperties': False,
-                                           'properties': {'Config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                  'type': 'object'}},
-                                                                     'type': 'object'}},
-                                           'required': ['Config'],
-                                           'type': 'object'},
-                     'ProviderSpace': {'additionalProperties': False,
-                                       'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                      'Name': {'type': 'string'},
-                                                      'ProviderId': {'type': 'string'},
-                                                      'Subnets': {'items': {'$ref': '#/definitions/Subnet'},
-                                                                  'type': 'array'}},
-                                       'required': ['Name',
-                                                    'ProviderId',
-                                                    'Subnets'],
-                                       'type': 'object'},
-                     'Subnet': {'additionalProperties': False,
-                                'properties': {'CIDR': {'type': 'string'},
-                                               'Life': {'type': 'string'},
-                                               'ProviderId': {'type': 'string'},
-                                               'SpaceTag': {'type': 'string'},
-                                               'StaticRangeHighIP': {'items': {'type': 'integer'},
-                                                                     'type': 'array'},
-                                               'StaticRangeLowIP': {'items': {'type': 'integer'},
-                                                                    'type': 'array'},
-                                               'Status': {'type': 'string'},
-                                               'VLANTag': {'type': 'integer'},
-                                               'Zones': {'items': {'type': 'string'},
-                                                         'type': 'array'}},
-                                'required': ['CIDR',
-                                             'VLANTag',
-                                             'Life',
-                                             'SpaceTag',
-                                             'Zones'],
-                                'type': 'object'},
-                     'SubnetsFilters': {'additionalProperties': False,
-                                        'properties': {'SpaceTag': {'type': 'string'},
-                                                       'Zone': {'type': 'string'}},
-                                        'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'AddSubnets': {'properties': {'Params': {'$ref': '#/definitions/AddSubnetsParams'},
-                                                  'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                   'type': 'object'},
-                    'CreateSpaces': {'properties': {'Params': {'$ref': '#/definitions/CreateSpacesParams'},
-                                                    'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                     'type': 'object'},
-                    'ListSpaces': {'properties': {'Result': {'$ref': '#/definitions/DiscoverSpacesResults'}},
-                                   'type': 'object'},
-                    'ListSubnets': {'properties': {'Params': {'$ref': '#/definitions/SubnetsFilters'},
-                                                   'Result': {'$ref': '#/definitions/ListSubnetsResults'}},
-                                    'type': 'object'},
-                    'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}},
-                                    'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResults)
-    async def AddSubnets(self, subnets):
-        '''
-        subnets : typing.Sequence[~AddSubnetParams]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='DiscoverSpaces', Request='AddSubnets', Version=2, Params=params)
-        params['Subnets'] = subnets
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def CreateSpaces(self, spaces):
-        '''
-        spaces : typing.Sequence[~CreateSpaceParams]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='DiscoverSpaces', Request='CreateSpaces', Version=2, Params=params)
-        params['Spaces'] = spaces
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(DiscoverSpacesResults)
-    async def ListSpaces(self):
-        '''
-
-        Returns -> typing.Sequence[~ProviderSpace]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='DiscoverSpaces', Request='ListSpaces', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ListSubnetsResults)
-    async def ListSubnets(self, spacetag, zone):
-        '''
-        spacetag : str
-        zone : str
-        Returns -> typing.Sequence[~Subnet]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='DiscoverSpaces', Request='ListSubnets', Version=2, Params=params)
-        params['SpaceTag'] = spacetag
-        params['Zone'] = zone
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelConfigResult)
-    async def ModelConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='DiscoverSpaces', Request='ModelConfig', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class DiskManager(Type):
-    name = 'DiskManager'
-    version = 2
-    schema =     {'definitions': {'BlockDevice': {'additionalProperties': False,
-                                     'properties': {'BusAddress': {'type': 'string'},
-                                                    'DeviceLinks': {'items': {'type': 'string'},
-                                                                    'type': 'array'},
-                                                    'DeviceName': {'type': 'string'},
-                                                    'FilesystemType': {'type': 'string'},
-                                                    'HardwareId': {'type': 'string'},
-                                                    'InUse': {'type': 'boolean'},
-                                                    'Label': {'type': 'string'},
-                                                    'MountPoint': {'type': 'string'},
-                                                    'Size': {'type': 'integer'},
-                                                    'UUID': {'type': 'string'}},
-                                     'required': ['DeviceName',
-                                                  'DeviceLinks',
-                                                  'Label',
-                                                  'UUID',
-                                                  'HardwareId',
-                                                  'BusAddress',
-                                                  'Size',
-                                                  'FilesystemType',
-                                                  'InUse',
-                                                  'MountPoint'],
-                                     'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'MachineBlockDevices': {'additionalProperties': False,
-                                             'properties': {'blockdevices': {'items': {'$ref': '#/definitions/BlockDevice'},
-                                                                             'type': 'array'},
-                                                            'machine': {'type': 'string'}},
-                                             'required': ['machine'],
-                                             'type': 'object'},
-                     'SetMachineBlockDevices': {'additionalProperties': False,
-                                                'properties': {'machineblockdevices': {'items': {'$ref': '#/definitions/MachineBlockDevices'},
-                                                                                       'type': 'array'}},
-                                                'required': ['machineblockdevices'],
-                                                'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'SetMachineBlockDevices': {'properties': {'Params': {'$ref': '#/definitions/SetMachineBlockDevices'},
-                                                              'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                               'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResults)
-    async def SetMachineBlockDevices(self, machineblockdevices):
-        '''
-        machineblockdevices : typing.Sequence[~MachineBlockDevices]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='DiskManager', Request='SetMachineBlockDevices', Version=2, Params=params)
-        params['machineblockdevices'] = machineblockdevices
-        reply = await self.rpc(msg)
-        return reply
-
-
-class EntityWatcher(Type):
-    name = 'EntityWatcher'
-    version = 2
-    schema =     {'definitions': {'EntitiesWatchResult': {'additionalProperties': False,
-                                             'properties': {'Changes': {'items': {'type': 'string'},
-                                                                        'type': 'array'},
-                                                            'EntityWatcherId': {'type': 'string'},
-                                                            'Error': {'$ref': '#/definitions/Error'}},
-                                             'required': ['EntityWatcherId',
-                                                          'Changes',
-                                                          'Error'],
-                                             'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/EntitiesWatchResult'}},
-                             'type': 'object'},
-                    'Stop': {'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(EntitiesWatchResult)
-    async def Next(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error')]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='EntityWatcher', Request='Next', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Stop(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='EntityWatcher', Request='Stop', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class FilesystemAttachmentsWatcher(Type):
-    name = 'FilesystemAttachmentsWatcher'
-    version = 2
-    schema =     {'definitions': {'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'MachineStorageId': {'additionalProperties': False,
-                                          'properties': {'attachmenttag': {'type': 'string'},
-                                                         'machinetag': {'type': 'string'}},
-                                          'required': ['machinetag',
-                                                       'attachmenttag'],
-                                          'type': 'object'},
-                     'MachineStorageIdsWatchResult': {'additionalProperties': False,
-                                                      'properties': {'Changes': {'items': {'$ref': '#/definitions/MachineStorageId'},
-                                                                                 'type': 'array'},
-                                                                     'Error': {'$ref': '#/definitions/Error'},
-                                                                     'MachineStorageIdsWatcherId': {'type': 'string'}},
-                                                      'required': ['MachineStorageIdsWatcherId',
-                                                                   'Changes',
-                                                                   'Error'],
-                                                      'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/MachineStorageIdsWatchResult'}},
-                             'type': 'object'},
-                    'Stop': {'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(MachineStorageIdsWatchResult)
-    async def Next(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[~MachineStorageId], _ForwardRef('Error')]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='FilesystemAttachmentsWatcher', Request='Next', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Stop(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='FilesystemAttachmentsWatcher', Request='Stop', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Firewaller(Type):
-    name = 'Firewaller'
-    version = 2
-    schema =     {'definitions': {'BoolResult': {'additionalProperties': False,
-                                    'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                   'Result': {'type': 'boolean'}},
-                                    'required': ['Error', 'Result'],
-                                    'type': 'object'},
-                     'BoolResults': {'additionalProperties': False,
-                                     'properties': {'Results': {'items': {'$ref': '#/definitions/BoolResult'},
-                                                                'type': 'array'}},
-                                     'required': ['Results'],
-                                     'type': 'object'},
-                     'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'LifeResult': {'additionalProperties': False,
-                                    'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                   'Life': {'type': 'string'}},
-                                    'required': ['Life', 'Error'],
-                                    'type': 'object'},
-                     'LifeResults': {'additionalProperties': False,
-                                     'properties': {'Results': {'items': {'$ref': '#/definitions/LifeResult'},
-                                                                'type': 'array'}},
-                                     'required': ['Results'],
-                                     'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'MachinePortRange': {'additionalProperties': False,
-                                          'properties': {'PortRange': {'$ref': '#/definitions/PortRange'},
-                                                         'RelationTag': {'type': 'string'},
-                                                         'UnitTag': {'type': 'string'}},
-                                          'required': ['UnitTag',
-                                                       'RelationTag',
-                                                       'PortRange'],
-                                          'type': 'object'},
-                     'MachinePorts': {'additionalProperties': False,
-                                      'properties': {'MachineTag': {'type': 'string'},
-                                                     'SubnetTag': {'type': 'string'}},
-                                      'required': ['MachineTag', 'SubnetTag'],
-                                      'type': 'object'},
-                     'MachinePortsParams': {'additionalProperties': False,
-                                            'properties': {'Params': {'items': {'$ref': '#/definitions/MachinePorts'},
-                                                                      'type': 'array'}},
-                                            'required': ['Params'],
-                                            'type': 'object'},
-                     'MachinePortsResult': {'additionalProperties': False,
-                                            'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                           'Ports': {'items': {'$ref': '#/definitions/MachinePortRange'},
-                                                                     'type': 'array'}},
-                                            'required': ['Error', 'Ports'],
-                                            'type': 'object'},
-                     'MachinePortsResults': {'additionalProperties': False,
-                                             'properties': {'Results': {'items': {'$ref': '#/definitions/MachinePortsResult'},
-                                                                        'type': 'array'}},
-                                             'required': ['Results'],
-                                             'type': 'object'},
-                     'ModelConfigResult': {'additionalProperties': False,
-                                           'properties': {'Config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                  'type': 'object'}},
-                                                                     'type': 'object'}},
-                                           'required': ['Config'],
-                                           'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'NotifyWatchResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'PortRange': {'additionalProperties': False,
-                                   'properties': {'FromPort': {'type': 'integer'},
-                                                  'Protocol': {'type': 'string'},
-                                                  'ToPort': {'type': 'integer'}},
-                                   'required': ['FromPort', 'ToPort', 'Protocol'],
-                                   'type': 'object'},
-                     'StringResult': {'additionalProperties': False,
-                                      'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                     'Result': {'type': 'string'}},
-                                      'required': ['Error', 'Result'],
-                                      'type': 'object'},
-                     'StringResults': {'additionalProperties': False,
-                                       'properties': {'Results': {'items': {'$ref': '#/definitions/StringResult'},
-                                                                  'type': 'array'}},
-                                       'required': ['Results'],
-                                       'type': 'object'},
-                     'StringsResult': {'additionalProperties': False,
-                                       'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                      'Result': {'items': {'type': 'string'},
-                                                                 'type': 'array'}},
-                                       'required': ['Error', 'Result'],
-                                       'type': 'object'},
-                     'StringsResults': {'additionalProperties': False,
-                                        'properties': {'Results': {'items': {'$ref': '#/definitions/StringsResult'},
-                                                                   'type': 'array'}},
-                                        'required': ['Results'],
-                                        'type': 'object'},
-                     'StringsWatchResult': {'additionalProperties': False,
-                                            'properties': {'Changes': {'items': {'type': 'string'},
-                                                                       'type': 'array'},
-                                                           'Error': {'$ref': '#/definitions/Error'},
-                                                           'StringsWatcherId': {'type': 'string'}},
-                                            'required': ['StringsWatcherId',
-                                                         'Changes',
-                                                         'Error'],
-                                            'type': 'object'},
-                     'StringsWatchResults': {'additionalProperties': False,
-                                             'properties': {'Results': {'items': {'$ref': '#/definitions/StringsWatchResult'},
-                                                                        'type': 'array'}},
-                                             'required': ['Results'],
-                                             'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'GetAssignedMachine': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                          'Result': {'$ref': '#/definitions/StringResults'}},
-                                           'type': 'object'},
-                    'GetExposed': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                  'Result': {'$ref': '#/definitions/BoolResults'}},
-                                   'type': 'object'},
-                    'GetMachineActiveSubnets': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                               'Result': {'$ref': '#/definitions/StringsResults'}},
-                                                'type': 'object'},
-                    'GetMachinePorts': {'properties': {'Params': {'$ref': '#/definitions/MachinePortsParams'},
-                                                       'Result': {'$ref': '#/definitions/MachinePortsResults'}},
-                                        'type': 'object'},
-                    'InstanceId': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                  'Result': {'$ref': '#/definitions/StringResults'}},
-                                   'type': 'object'},
-                    'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                            'Result': {'$ref': '#/definitions/LifeResults'}},
-                             'type': 'object'},
-                    'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}},
-                                    'type': 'object'},
-                    'Watch': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                             'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                              'type': 'object'},
-                    'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                                   'type': 'object'},
-                    'WatchModelMachines': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
-                                           'type': 'object'},
-                    'WatchOpenedPorts': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                        'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                         'type': 'object'},
-                    'WatchUnits': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                  'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                   'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(StringResults)
-    async def GetAssignedMachine(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Firewaller', Request='GetAssignedMachine', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BoolResults)
-    async def GetExposed(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~BoolResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Firewaller', Request='GetExposed', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsResults)
-    async def GetMachineActiveSubnets(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Firewaller', Request='GetMachineActiveSubnets', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MachinePortsResults)
-    async def GetMachinePorts(self, params):
-        '''
-        params : typing.Sequence[~MachinePorts]
-        Returns -> typing.Sequence[~MachinePortsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Firewaller', Request='GetMachinePorts', Version=2, Params=params)
-        params['Params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def InstanceId(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Firewaller', Request='InstanceId', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LifeResults)
-    async def Life(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Firewaller', Request='Life', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelConfigResult)
-    async def ModelConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Firewaller', Request='ModelConfig', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def Watch(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Firewaller', Request='Watch', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def WatchForModelConfigChanges(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Firewaller', Request='WatchForModelConfigChanges', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResult)
-    async def WatchModelMachines(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error')]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Firewaller', Request='WatchModelMachines', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchOpenedPorts(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Firewaller', Request='WatchOpenedPorts', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchUnits(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Firewaller', Request='WatchUnits', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class HighAvailability(Type):
-    name = 'HighAvailability'
-    version = 2
-    schema =     {'definitions': {'Address': {'additionalProperties': False,
-                                 'properties': {'Scope': {'type': 'string'},
-                                                'SpaceName': {'type': 'string'},
-                                                'SpaceProviderId': {'type': 'string'},
-                                                'Type': {'type': 'string'},
-                                                'Value': {'type': 'string'}},
-                                 'required': ['Value',
-                                              'Type',
-                                              'Scope',
-                                              'SpaceName',
-                                              'SpaceProviderId'],
-                                 'type': 'object'},
-                     'ControllersChangeResult': {'additionalProperties': False,
-                                                 'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                                'Result': {'$ref': '#/definitions/ControllersChanges'}},
-                                                 'required': ['Result', 'Error'],
-                                                 'type': 'object'},
-                     'ControllersChangeResults': {'additionalProperties': False,
-                                                  'properties': {'Results': {'items': {'$ref': '#/definitions/ControllersChangeResult'},
-                                                                             'type': 'array'}},
-                                                  'required': ['Results'],
-                                                  'type': 'object'},
-                     'ControllersChanges': {'additionalProperties': False,
-                                            'properties': {'added': {'items': {'type': 'string'},
-                                                                     'type': 'array'},
-                                                           'converted': {'items': {'type': 'string'},
-                                                                         'type': 'array'},
-                                                           'demoted': {'items': {'type': 'string'},
-                                                                       'type': 'array'},
-                                                           'maintained': {'items': {'type': 'string'},
-                                                                          'type': 'array'},
-                                                           'promoted': {'items': {'type': 'string'},
-                                                                        'type': 'array'},
-                                                           'removed': {'items': {'type': 'string'},
-                                                                       'type': 'array'}},
-                                            'type': 'object'},
-                     'ControllersSpec': {'additionalProperties': False,
-                                         'properties': {'ModelTag': {'type': 'string'},
-                                                        'constraints': {'$ref': '#/definitions/Value'},
-                                                        'num-controllers': {'type': 'integer'},
-                                                        'placement': {'items': {'type': 'string'},
-                                                                      'type': 'array'},
-                                                        'series': {'type': 'string'}},
-                                         'required': ['ModelTag',
-                                                      'num-controllers'],
-                                         'type': 'object'},
-                     'ControllersSpecs': {'additionalProperties': False,
-                                          'properties': {'Specs': {'items': {'$ref': '#/definitions/ControllersSpec'},
-                                                                   'type': 'array'}},
-                                          'required': ['Specs'],
-                                          'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'HAMember': {'additionalProperties': False,
-                                  'properties': {'PublicAddress': {'$ref': '#/definitions/Address'},
-                                                 'Series': {'type': 'string'},
-                                                 'Tag': {'type': 'string'}},
-                                  'required': ['Tag', 'PublicAddress', 'Series'],
-                                  'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'Member': {'additionalProperties': False,
-                                'properties': {'Address': {'type': 'string'},
-                                               'Arbiter': {'type': 'boolean'},
-                                               'BuildIndexes': {'type': 'boolean'},
-                                               'Hidden': {'type': 'boolean'},
-                                               'Id': {'type': 'integer'},
-                                               'Priority': {'type': 'number'},
-                                               'SlaveDelay': {'type': 'integer'},
-                                               'Tags': {'patternProperties': {'.*': {'type': 'string'}},
-                                                        'type': 'object'},
-                                               'Votes': {'type': 'integer'}},
-                                'required': ['Id',
-                                             'Address',
-                                             'Arbiter',
-                                             'BuildIndexes',
-                                             'Hidden',
-                                             'Priority',
-                                             'Tags',
-                                             'SlaveDelay',
-                                             'Votes'],
-                                'type': 'object'},
-                     'MongoUpgradeResults': {'additionalProperties': False,
-                                             'properties': {'Master': {'$ref': '#/definitions/HAMember'},
-                                                            'Members': {'items': {'$ref': '#/definitions/HAMember'},
-                                                                        'type': 'array'},
-                                                            'RsMembers': {'items': {'$ref': '#/definitions/Member'},
-                                                                          'type': 'array'}},
-                                             'required': ['RsMembers',
-                                                          'Master',
-                                                          'Members'],
-                                             'type': 'object'},
-                     'ResumeReplicationParams': {'additionalProperties': False,
-                                                 'properties': {'Members': {'items': {'$ref': '#/definitions/Member'},
-                                                                            'type': 'array'}},
-                                                 'required': ['Members'],
-                                                 'type': 'object'},
-                     'UpgradeMongoParams': {'additionalProperties': False,
-                                            'properties': {'Target': {'$ref': '#/definitions/Version'}},
-                                            'required': ['Target'],
-                                            'type': 'object'},
-                     'Value': {'additionalProperties': False,
-                               'properties': {'arch': {'type': 'string'},
-                                              'container': {'type': 'string'},
-                                              'cpu-cores': {'type': 'integer'},
-                                              'cpu-power': {'type': 'integer'},
-                                              'instance-type': {'type': 'string'},
-                                              'mem': {'type': 'integer'},
-                                              'root-disk': {'type': 'integer'},
-                                              'spaces': {'items': {'type': 'string'},
-                                                         'type': 'array'},
-                                              'tags': {'items': {'type': 'string'},
-                                                       'type': 'array'},
-                                              'virt-type': {'type': 'string'}},
-                               'type': 'object'},
-                     'Version': {'additionalProperties': False,
-                                 'properties': {'Major': {'type': 'integer'},
-                                                'Minor': {'type': 'integer'},
-                                                'Patch': {'type': 'string'},
-                                                'StorageEngine': {'type': 'string'}},
-                                 'required': ['Major',
-                                              'Minor',
-                                              'Patch',
-                                              'StorageEngine'],
-                                 'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'EnableHA': {'properties': {'Params': {'$ref': '#/definitions/ControllersSpecs'},
-                                                'Result': {'$ref': '#/definitions/ControllersChangeResults'}},
-                                 'type': 'object'},
-                    'ResumeHAReplicationAfterUpgrade': {'properties': {'Params': {'$ref': '#/definitions/ResumeReplicationParams'}},
-                                                        'type': 'object'},
-                    'StopHAReplicationForUpgrade': {'properties': {'Params': {'$ref': '#/definitions/UpgradeMongoParams'},
-                                                                   'Result': {'$ref': '#/definitions/MongoUpgradeResults'}},
-                                                    'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ControllersChangeResults)
-    async def EnableHA(self, specs):
-        '''
-        specs : typing.Sequence[~ControllersSpec]
-        Returns -> typing.Sequence[~ControllersChangeResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='HighAvailability', Request='EnableHA', Version=2, Params=params)
-        params['Specs'] = specs
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def ResumeHAReplicationAfterUpgrade(self, members):
-        '''
-        members : typing.Sequence[~Member]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='HighAvailability', Request='ResumeHAReplicationAfterUpgrade', Version=2, Params=params)
-        params['Members'] = members
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MongoUpgradeResults)
-    async def StopHAReplicationForUpgrade(self, major, minor, patch, storageengine):
-        '''
-        major : int
-        minor : int
-        patch : str
-        storageengine : str
-        Returns -> typing.Union[_ForwardRef('HAMember'), typing.Sequence[~Member]]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='HighAvailability', Request='StopHAReplicationForUpgrade', Version=2, Params=params)
-        params['Major'] = major
-        params['Minor'] = minor
-        params['Patch'] = patch
-        params['StorageEngine'] = storageengine
-        reply = await self.rpc(msg)
-        return reply
-
-
-class HostKeyReporter(Type):
-    name = 'HostKeyReporter'
-    version = 1
-    schema =     {'definitions': {'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'SSHHostKeySet': {'additionalProperties': False,
-                                       'properties': {'entity-keys': {'items': {'$ref': '#/definitions/SSHHostKeys'},
-                                                                      'type': 'array'}},
-                                       'required': ['entity-keys'],
-                                       'type': 'object'},
-                     'SSHHostKeys': {'additionalProperties': False,
-                                     'properties': {'public-keys': {'items': {'type': 'string'},
-                                                                    'type': 'array'},
-                                                    'tag': {'type': 'string'}},
-                                     'required': ['tag', 'public-keys'],
-                                     'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'ReportKeys': {'properties': {'Params': {'$ref': '#/definitions/SSHHostKeySet'},
-                                                  'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                   'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResults)
-    async def ReportKeys(self, entity_keys):
-        '''
-        entity_keys : typing.Sequence[~SSHHostKeys]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='HostKeyReporter', Request='ReportKeys', Version=1, Params=params)
-        params['entity-keys'] = entity_keys
-        reply = await self.rpc(msg)
-        return reply
-
-
-class ImageManager(Type):
-    name = 'ImageManager'
-    version = 2
-    schema =     {'definitions': {'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'ImageFilterParams': {'additionalProperties': False,
-                                           'properties': {'images': {'items': {'$ref': '#/definitions/ImageSpec'},
-                                                                     'type': 'array'}},
-                                           'required': ['images'],
-                                           'type': 'object'},
-                     'ImageMetadata': {'additionalProperties': False,
-                                       'properties': {'arch': {'type': 'string'},
-                                                      'created': {'format': 'date-time',
-                                                                  'type': 'string'},
-                                                      'kind': {'type': 'string'},
-                                                      'series': {'type': 'string'},
-                                                      'url': {'type': 'string'}},
-                                       'required': ['kind',
-                                                    'arch',
-                                                    'series',
-                                                    'url',
-                                                    'created'],
-                                       'type': 'object'},
-                     'ImageSpec': {'additionalProperties': False,
-                                   'properties': {'arch': {'type': 'string'},
-                                                  'kind': {'type': 'string'},
-                                                  'series': {'type': 'string'}},
-                                   'required': ['kind', 'arch', 'series'],
-                                   'type': 'object'},
-                     'ListImageResult': {'additionalProperties': False,
-                                         'properties': {'result': {'items': {'$ref': '#/definitions/ImageMetadata'},
-                                                                   'type': 'array'}},
-                                         'required': ['result'],
-                                         'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'DeleteImages': {'properties': {'Params': {'$ref': '#/definitions/ImageFilterParams'},
-                                                    'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                     'type': 'object'},
-                    'ListImages': {'properties': {'Params': {'$ref': '#/definitions/ImageFilterParams'},
-                                                  'Result': {'$ref': '#/definitions/ListImageResult'}},
-                                   'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResults)
-    async def DeleteImages(self, images):
-        '''
-        images : typing.Sequence[~ImageSpec]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='ImageManager', Request='DeleteImages', Version=2, Params=params)
-        params['images'] = images
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ListImageResult)
-    async def ListImages(self, images):
-        '''
-        images : typing.Sequence[~ImageSpec]
-        Returns -> typing.Sequence[~ImageMetadata]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='ImageManager', Request='ListImages', Version=2, Params=params)
-        params['images'] = images
-        reply = await self.rpc(msg)
-        return reply
-
-
-class ImageMetadata(Type):
-    name = 'ImageMetadata'
-    version = 2
-    schema =     {'definitions': {'CloudImageMetadata': {'additionalProperties': False,
-                                            'properties': {'arch': {'type': 'string'},
-                                                           'image_id': {'type': 'string'},
-                                                           'priority': {'type': 'integer'},
-                                                           'region': {'type': 'string'},
-                                                           'root_storage_size': {'type': 'integer'},
-                                                           'root_storage_type': {'type': 'string'},
-                                                           'series': {'type': 'string'},
-                                                           'source': {'type': 'string'},
-                                                           'stream': {'type': 'string'},
-                                                           'version': {'type': 'string'},
-                                                           'virt_type': {'type': 'string'}},
-                                            'required': ['image_id',
-                                                         'region',
-                                                         'version',
-                                                         'series',
-                                                         'arch',
-                                                         'source',
-                                                         'priority'],
-                                            'type': 'object'},
-                     'CloudImageMetadataList': {'additionalProperties': False,
-                                                'properties': {'metadata': {'items': {'$ref': '#/definitions/CloudImageMetadata'},
-                                                                            'type': 'array'}},
-                                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'ImageMetadataFilter': {'additionalProperties': False,
-                                             'properties': {'arches': {'items': {'type': 'string'},
-                                                                       'type': 'array'},
-                                                            'region': {'type': 'string'},
-                                                            'root-storage-type': {'type': 'string'},
-                                                            'series': {'items': {'type': 'string'},
-                                                                       'type': 'array'},
-                                                            'stream': {'type': 'string'},
-                                                            'virt_type': {'type': 'string'}},
-                                             'type': 'object'},
-                     'ListCloudImageMetadataResult': {'additionalProperties': False,
-                                                      'properties': {'result': {'items': {'$ref': '#/definitions/CloudImageMetadata'},
-                                                                                'type': 'array'}},
-                                                      'required': ['result'],
-                                                      'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'MetadataImageIds': {'additionalProperties': False,
-                                          'properties': {'image_ids': {'items': {'type': 'string'},
-                                                                       'type': 'array'}},
-                                          'required': ['image_ids'],
-                                          'type': 'object'},
-                     'MetadataSaveParams': {'additionalProperties': False,
-                                            'properties': {'metadata': {'items': {'$ref': '#/definitions/CloudImageMetadataList'},
-                                                                        'type': 'array'}},
-                                            'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'Delete': {'properties': {'Params': {'$ref': '#/definitions/MetadataImageIds'},
-                                              'Result': {'$ref': '#/definitions/ErrorResults'}},
-                               'type': 'object'},
-                    'List': {'properties': {'Params': {'$ref': '#/definitions/ImageMetadataFilter'},
-                                            'Result': {'$ref': '#/definitions/ListCloudImageMetadataResult'}},
-                             'type': 'object'},
-                    'Save': {'properties': {'Params': {'$ref': '#/definitions/MetadataSaveParams'},
-                                            'Result': {'$ref': '#/definitions/ErrorResults'}},
-                             'type': 'object'},
-                    'UpdateFromPublishedImages': {'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResults)
-    async def Delete(self, image_ids):
-        '''
-        image_ids : typing.Sequence[str]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='ImageMetadata', Request='Delete', Version=2, Params=params)
-        params['image_ids'] = image_ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ListCloudImageMetadataResult)
-    async def List(self, arches, region, root_storage_type, series, stream, virt_type):
-        '''
-        arches : typing.Sequence[str]
-        region : str
-        root_storage_type : str
-        series : typing.Sequence[str]
-        stream : str
-        virt_type : str
-        Returns -> typing.Sequence[~CloudImageMetadata]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='ImageMetadata', Request='List', Version=2, Params=params)
-        params['arches'] = arches
-        params['region'] = region
-        params['root-storage-type'] = root_storage_type
-        params['series'] = series
-        params['stream'] = stream
-        params['virt_type'] = virt_type
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Save(self, metadata):
-        '''
-        metadata : typing.Sequence[~CloudImageMetadataList]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='ImageMetadata', Request='Save', Version=2, Params=params)
-        params['metadata'] = metadata
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def UpdateFromPublishedImages(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='ImageMetadata', Request='UpdateFromPublishedImages', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class InstancePoller(Type):
-    name = 'InstancePoller'
-    version = 2
-    schema =     {'definitions': {'Address': {'additionalProperties': False,
-                                 'properties': {'Scope': {'type': 'string'},
-                                                'SpaceName': {'type': 'string'},
-                                                'Type': {'type': 'string'},
-                                                'Value': {'type': 'string'}},
-                                 'required': ['Value', 'Type', 'Scope'],
-                                 'type': 'object'},
-                     'BoolResult': {'additionalProperties': False,
-                                    'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                   'Result': {'type': 'boolean'}},
-                                    'required': ['Error', 'Result'],
-                                    'type': 'object'},
-                     'BoolResults': {'additionalProperties': False,
-                                     'properties': {'Results': {'items': {'$ref': '#/definitions/BoolResult'},
-                                                                'type': 'array'}},
-                                     'required': ['Results'],
-                                     'type': 'object'},
-                     'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'EntityStatusArgs': {'additionalProperties': False,
-                                          'properties': {'Data': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                               'type': 'object'}},
-                                                                  'type': 'object'},
-                                                         'Info': {'type': 'string'},
-                                                         'Status': {'type': 'string'},
-                                                         'Tag': {'type': 'string'}},
-                                          'required': ['Tag',
-                                                       'Status',
-                                                       'Info',
-                                                       'Data'],
-                                          'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'LifeResult': {'additionalProperties': False,
-                                    'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                   'Life': {'type': 'string'}},
-                                    'required': ['Life', 'Error'],
-                                    'type': 'object'},
-                     'LifeResults': {'additionalProperties': False,
-                                     'properties': {'Results': {'items': {'$ref': '#/definitions/LifeResult'},
-                                                                'type': 'array'}},
-                                     'required': ['Results'],
-                                     'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'MachineAddresses': {'additionalProperties': False,
-                                          'properties': {'Addresses': {'items': {'$ref': '#/definitions/Address'},
-                                                                       'type': 'array'},
-                                                         'Tag': {'type': 'string'}},
-                                          'required': ['Tag', 'Addresses'],
-                                          'type': 'object'},
-                     'MachineAddressesResult': {'additionalProperties': False,
-                                                'properties': {'Addresses': {'items': {'$ref': '#/definitions/Address'},
-                                                                             'type': 'array'},
-                                                               'Error': {'$ref': '#/definitions/Error'}},
-                                                'required': ['Error', 'Addresses'],
-                                                'type': 'object'},
-                     'MachineAddressesResults': {'additionalProperties': False,
-                                                 'properties': {'Results': {'items': {'$ref': '#/definitions/MachineAddressesResult'},
-                                                                            'type': 'array'}},
-                                                 'required': ['Results'],
-                                                 'type': 'object'},
-                     'ModelConfigResult': {'additionalProperties': False,
-                                           'properties': {'Config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                  'type': 'object'}},
-                                                                     'type': 'object'}},
-                                           'required': ['Config'],
-                                           'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'SetMachinesAddresses': {'additionalProperties': False,
-                                              'properties': {'MachineAddresses': {'items': {'$ref': '#/definitions/MachineAddresses'},
-                                                                                  'type': 'array'}},
-                                              'required': ['MachineAddresses'],
-                                              'type': 'object'},
-                     'SetStatus': {'additionalProperties': False,
-                                   'properties': {'Entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'},
-                                                               'type': 'array'}},
-                                   'required': ['Entities'],
-                                   'type': 'object'},
-                     'StatusResult': {'additionalProperties': False,
-                                      'properties': {'Data': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                           'type': 'object'}},
-                                                              'type': 'object'},
-                                                     'Error': {'$ref': '#/definitions/Error'},
-                                                     'Id': {'type': 'string'},
-                                                     'Info': {'type': 'string'},
-                                                     'Life': {'type': 'string'},
-                                                     'Since': {'format': 'date-time',
-                                                               'type': 'string'},
-                                                     'Status': {'type': 'string'}},
-                                      'required': ['Error',
-                                                   'Id',
-                                                   'Life',
-                                                   'Status',
-                                                   'Info',
-                                                   'Data',
-                                                   'Since'],
-                                      'type': 'object'},
-                     'StatusResults': {'additionalProperties': False,
-                                       'properties': {'Results': {'items': {'$ref': '#/definitions/StatusResult'},
-                                                                  'type': 'array'}},
-                                       'required': ['Results'],
-                                       'type': 'object'},
-                     'StringResult': {'additionalProperties': False,
-                                      'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                     'Result': {'type': 'string'}},
-                                      'required': ['Error', 'Result'],
-                                      'type': 'object'},
-                     'StringResults': {'additionalProperties': False,
-                                       'properties': {'Results': {'items': {'$ref': '#/definitions/StringResult'},
-                                                                  'type': 'array'}},
-                                       'required': ['Results'],
-                                       'type': 'object'},
-                     'StringsWatchResult': {'additionalProperties': False,
-                                            'properties': {'Changes': {'items': {'type': 'string'},
-                                                                       'type': 'array'},
-                                                           'Error': {'$ref': '#/definitions/Error'},
-                                                           'StringsWatcherId': {'type': 'string'}},
-                                            'required': ['StringsWatcherId',
-                                                         'Changes',
-                                                         'Error'],
-                                            'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'AreManuallyProvisioned': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                              'Result': {'$ref': '#/definitions/BoolResults'}},
-                                               'type': 'object'},
-                    'InstanceId': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                  'Result': {'$ref': '#/definitions/StringResults'}},
-                                   'type': 'object'},
-                    'InstanceStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                      'Result': {'$ref': '#/definitions/StatusResults'}},
-                                       'type': 'object'},
-                    'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                            'Result': {'$ref': '#/definitions/LifeResults'}},
-                             'type': 'object'},
-                    'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}},
-                                    'type': 'object'},
-                    'ProviderAddresses': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                         'Result': {'$ref': '#/definitions/MachineAddressesResults'}},
-                                          'type': 'object'},
-                    'SetInstanceStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                         'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                          'type': 'object'},
-                    'SetProviderAddresses': {'properties': {'Params': {'$ref': '#/definitions/SetMachinesAddresses'},
-                                                            'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                             'type': 'object'},
-                    'Status': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                              'Result': {'$ref': '#/definitions/StatusResults'}},
-                               'type': 'object'},
-                    'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                                   'type': 'object'},
-                    'WatchModelMachines': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
-                                           'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(BoolResults)
-    async def AreManuallyProvisioned(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~BoolResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='InstancePoller', Request='AreManuallyProvisioned', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def InstanceId(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='InstancePoller', Request='InstanceId', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StatusResults)
-    async def InstanceStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StatusResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='InstancePoller', Request='InstanceStatus', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LifeResults)
-    async def Life(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='InstancePoller', Request='Life', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelConfigResult)
-    async def ModelConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='InstancePoller', Request='ModelConfig', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MachineAddressesResults)
-    async def ProviderAddresses(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~MachineAddressesResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='InstancePoller', Request='ProviderAddresses', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetInstanceStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='InstancePoller', Request='SetInstanceStatus', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetProviderAddresses(self, machineaddresses):
-        '''
-        machineaddresses : typing.Sequence[~MachineAddresses]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='InstancePoller', Request='SetProviderAddresses', Version=2, Params=params)
-        params['MachineAddresses'] = machineaddresses
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StatusResults)
-    async def Status(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StatusResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='InstancePoller', Request='Status', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def WatchForModelConfigChanges(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='InstancePoller', Request='WatchForModelConfigChanges', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResult)
-    async def WatchModelMachines(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error')]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='InstancePoller', Request='WatchModelMachines', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class KeyManager(Type):
-    name = 'KeyManager'
-    version = 1
-    schema =     {'definitions': {'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'ListSSHKeys': {'additionalProperties': False,
-                                     'properties': {'Entities': {'$ref': '#/definitions/Entities'},
-                                                    'Mode': {'type': 'boolean'}},
-                                     'required': ['Entities', 'Mode'],
-                                     'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'ModifyUserSSHKeys': {'additionalProperties': False,
-                                           'properties': {'Keys': {'items': {'type': 'string'},
-                                                                   'type': 'array'},
-                                                          'User': {'type': 'string'}},
-                                           'required': ['User', 'Keys'],
-                                           'type': 'object'},
-                     'StringsResult': {'additionalProperties': False,
-                                       'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                      'Result': {'items': {'type': 'string'},
-                                                                 'type': 'array'}},
-                                       'required': ['Error', 'Result'],
-                                       'type': 'object'},
-                     'StringsResults': {'additionalProperties': False,
-                                        'properties': {'Results': {'items': {'$ref': '#/definitions/StringsResult'},
-                                                                   'type': 'array'}},
-                                        'required': ['Results'],
-                                        'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'AddKeys': {'properties': {'Params': {'$ref': '#/definitions/ModifyUserSSHKeys'},
-                                               'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                'type': 'object'},
-                    'DeleteKeys': {'properties': {'Params': {'$ref': '#/definitions/ModifyUserSSHKeys'},
-                                                  'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                   'type': 'object'},
-                    'ImportKeys': {'properties': {'Params': {'$ref': '#/definitions/ModifyUserSSHKeys'},
-                                                  'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                   'type': 'object'},
-                    'ListKeys': {'properties': {'Params': {'$ref': '#/definitions/ListSSHKeys'},
-                                                'Result': {'$ref': '#/definitions/StringsResults'}},
-                                 'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResults)
-    async def AddKeys(self, keys, user):
-        '''
-        keys : typing.Sequence[str]
-        user : str
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='KeyManager', Request='AddKeys', Version=1, Params=params)
-        params['Keys'] = keys
-        params['User'] = user
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def DeleteKeys(self, keys, user):
-        '''
-        keys : typing.Sequence[str]
-        user : str
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='KeyManager', Request='DeleteKeys', Version=1, Params=params)
-        params['Keys'] = keys
-        params['User'] = user
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def ImportKeys(self, keys, user):
-        '''
-        keys : typing.Sequence[str]
-        user : str
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='KeyManager', Request='ImportKeys', Version=1, Params=params)
-        params['Keys'] = keys
-        params['User'] = user
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsResults)
-    async def ListKeys(self, entities, mode):
-        '''
-        entities : Entities
-        mode : bool
-        Returns -> typing.Sequence[~StringsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='KeyManager', Request='ListKeys', Version=1, Params=params)
-        params['Entities'] = entities
-        params['Mode'] = mode
-        reply = await self.rpc(msg)
-        return reply
-
-
-class KeyUpdater(Type):
-    name = 'KeyUpdater'
-    version = 1
-    schema =     {'definitions': {'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'NotifyWatchResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'StringsResult': {'additionalProperties': False,
-                                       'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                      'Result': {'items': {'type': 'string'},
-                                                                 'type': 'array'}},
-                                       'required': ['Error', 'Result'],
-                                       'type': 'object'},
-                     'StringsResults': {'additionalProperties': False,
-                                        'properties': {'Results': {'items': {'$ref': '#/definitions/StringsResult'},
-                                                                   'type': 'array'}},
-                                        'required': ['Results'],
-                                        'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'AuthorisedKeys': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                      'Result': {'$ref': '#/definitions/StringsResults'}},
-                                       'type': 'object'},
-                    'WatchAuthorisedKeys': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                           'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                            'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(StringsResults)
-    async def AuthorisedKeys(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='KeyUpdater', Request='AuthorisedKeys', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchAuthorisedKeys(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='KeyUpdater', Request='WatchAuthorisedKeys', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class LeadershipService(Type):
-    name = 'LeadershipService'
-    version = 2
-    schema =     {'definitions': {'ClaimLeadershipBulkParams': {'additionalProperties': False,
-                                                   'properties': {'Params': {'items': {'$ref': '#/definitions/ClaimLeadershipParams'},
-                                                                             'type': 'array'}},
-                                                   'required': ['Params'],
-                                                   'type': 'object'},
-                     'ClaimLeadershipBulkResults': {'additionalProperties': False,
-                                                    'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                               'type': 'array'}},
-                                                    'required': ['Results'],
-                                                    'type': 'object'},
-                     'ClaimLeadershipParams': {'additionalProperties': False,
-                                               'properties': {'DurationSeconds': {'type': 'number'},
-                                                              'ServiceTag': {'type': 'string'},
-                                                              'UnitTag': {'type': 'string'}},
-                                               'required': ['ServiceTag',
-                                                            'UnitTag',
-                                                            'DurationSeconds'],
-                                               'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'ServiceTag': {'additionalProperties': False,
-                                    'properties': {'Name': {'type': 'string'}},
-                                    'required': ['Name'],
-                                    'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'BlockUntilLeadershipReleased': {'properties': {'Params': {'$ref': '#/definitions/ServiceTag'},
-                                                                    'Result': {'$ref': '#/definitions/ErrorResult'}},
-                                                     'type': 'object'},
-                    'ClaimLeadership': {'properties': {'Params': {'$ref': '#/definitions/ClaimLeadershipBulkParams'},
-                                                       'Result': {'$ref': '#/definitions/ClaimLeadershipBulkResults'}},
-                                        'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResult)
-    async def BlockUntilLeadershipReleased(self, name):
-        '''
-        name : str
-        Returns -> Error
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='LeadershipService', Request='BlockUntilLeadershipReleased', Version=2, Params=params)
-        params['Name'] = name
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ClaimLeadershipBulkResults)
-    async def ClaimLeadership(self, params):
-        '''
-        params : typing.Sequence[~ClaimLeadershipParams]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='LeadershipService', Request='ClaimLeadership', Version=2, Params=params)
-        params['Params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-class LifeFlag(Type):
-    name = 'LifeFlag'
-    version = 1
-    schema =     {'definitions': {'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'LifeResult': {'additionalProperties': False,
-                                    'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                   'Life': {'type': 'string'}},
-                                    'required': ['Life', 'Error'],
-                                    'type': 'object'},
-                     'LifeResults': {'additionalProperties': False,
-                                     'properties': {'Results': {'items': {'$ref': '#/definitions/LifeResult'},
-                                                                'type': 'array'}},
-                                     'required': ['Results'],
-                                     'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'NotifyWatchResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                            'Result': {'$ref': '#/definitions/LifeResults'}},
-                             'type': 'object'},
-                    'Watch': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                             'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                              'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(LifeResults)
-    async def Life(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='LifeFlag', Request='Life', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def Watch(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='LifeFlag', Request='Watch', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Logger(Type):
-    name = 'Logger'
-    version = 1
-    schema =     {'definitions': {'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'NotifyWatchResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'StringResult': {'additionalProperties': False,
-                                      'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                     'Result': {'type': 'string'}},
-                                      'required': ['Error', 'Result'],
-                                      'type': 'object'},
-                     'StringResults': {'additionalProperties': False,
-                                       'properties': {'Results': {'items': {'$ref': '#/definitions/StringResult'},
-                                                                  'type': 'array'}},
-                                       'required': ['Results'],
-                                       'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'LoggingConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                     'Result': {'$ref': '#/definitions/StringResults'}},
-                                      'type': 'object'},
-                    'WatchLoggingConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                          'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                           'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(StringResults)
-    async def LoggingConfig(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Logger', Request='LoggingConfig', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchLoggingConfig(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Logger', Request='WatchLoggingConfig', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class MachineActions(Type):
-    name = 'MachineActions'
-    version = 1
-    schema =     {'definitions': {'Action': {'additionalProperties': False,
-                                'properties': {'name': {'type': 'string'},
-                                               'parameters': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                           'type': 'object'}},
-                                                              'type': 'object'},
-                                               'receiver': {'type': 'string'},
-                                               'tag': {'type': 'string'}},
-                                'required': ['tag', 'receiver', 'name'],
-                                'type': 'object'},
-                     'ActionExecutionResult': {'additionalProperties': False,
-                                               'properties': {'actiontag': {'type': 'string'},
-                                                              'message': {'type': 'string'},
-                                                              'results': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                       'type': 'object'}},
-                                                                          'type': 'object'},
-                                                              'status': {'type': 'string'}},
-                                               'required': ['actiontag', 'status'],
-                                               'type': 'object'},
-                     'ActionExecutionResults': {'additionalProperties': False,
-                                                'properties': {'results': {'items': {'$ref': '#/definitions/ActionExecutionResult'},
-                                                                           'type': 'array'}},
-                                                'type': 'object'},
-                     'ActionResult': {'additionalProperties': False,
-                                      'properties': {'action': {'$ref': '#/definitions/Action'},
-                                                     'completed': {'format': 'date-time',
-                                                                   'type': 'string'},
-                                                     'enqueued': {'format': 'date-time',
-                                                                  'type': 'string'},
-                                                     'error': {'$ref': '#/definitions/Error'},
-                                                     'message': {'type': 'string'},
-                                                     'output': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                             'type': 'object'}},
-                                                                'type': 'object'},
-                                                     'started': {'format': 'date-time',
-                                                                 'type': 'string'},
-                                                     'status': {'type': 'string'}},
-                                      'type': 'object'},
-                     'ActionResults': {'additionalProperties': False,
-                                       'properties': {'results': {'items': {'$ref': '#/definitions/ActionResult'},
-                                                                  'type': 'array'}},
-                                       'type': 'object'},
-                     'ActionsByReceiver': {'additionalProperties': False,
-                                           'properties': {'actions': {'items': {'$ref': '#/definitions/ActionResult'},
-                                                                      'type': 'array'},
-                                                          'error': {'$ref': '#/definitions/Error'},
-                                                          'receiver': {'type': 'string'}},
-                                           'type': 'object'},
-                     'ActionsByReceivers': {'additionalProperties': False,
-                                            'properties': {'actions': {'items': {'$ref': '#/definitions/ActionsByReceiver'},
-                                                                       'type': 'array'}},
-                                            'type': 'object'},
-                     'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'StringsWatchResult': {'additionalProperties': False,
-                                            'properties': {'Changes': {'items': {'type': 'string'},
-                                                                       'type': 'array'},
-                                                           'Error': {'$ref': '#/definitions/Error'},
-                                                           'StringsWatcherId': {'type': 'string'}},
-                                            'required': ['StringsWatcherId',
-                                                         'Changes',
-                                                         'Error'],
-                                            'type': 'object'},
-                     'StringsWatchResults': {'additionalProperties': False,
-                                             'properties': {'Results': {'items': {'$ref': '#/definitions/StringsWatchResult'},
-                                                                        'type': 'array'}},
-                                             'required': ['Results'],
-                                             'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'Actions': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                               'Result': {'$ref': '#/definitions/ActionResults'}},
-                                'type': 'object'},
-                    'BeginActions': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                    'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                     'type': 'object'},
-                    'FinishActions': {'properties': {'Params': {'$ref': '#/definitions/ActionExecutionResults'},
-                                                     'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                      'type': 'object'},
-                    'RunningActions': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                      'Result': {'$ref': '#/definitions/ActionsByReceivers'}},
-                                       'type': 'object'},
-                    'WatchActionNotifications': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                                 'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ActionResults)
-    async def Actions(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ActionResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MachineActions', Request='Actions', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def BeginActions(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MachineActions', Request='BeginActions', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def FinishActions(self, results):
-        '''
-        results : typing.Sequence[~ActionExecutionResult]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MachineActions', Request='FinishActions', Version=1, Params=params)
-        params['results'] = results
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionsByReceivers)
-    async def RunningActions(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ActionsByReceiver]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MachineActions', Request='RunningActions', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchActionNotifications(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MachineActions', Request='WatchActionNotifications', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class MachineManager(Type):
-    name = 'MachineManager'
-    version = 2
-    schema =     {'definitions': {'AddMachineParams': {'additionalProperties': False,
-                                          'properties': {'Addrs': {'items': {'$ref': '#/definitions/Address'},
-                                                                   'type': 'array'},
-                                                         'Constraints': {'$ref': '#/definitions/Value'},
-                                                         'ContainerType': {'type': 'string'},
-                                                         'Disks': {'items': {'$ref': '#/definitions/Constraints'},
-                                                                   'type': 'array'},
-                                                         'HardwareCharacteristics': {'$ref': '#/definitions/HardwareCharacteristics'},
-                                                         'InstanceId': {'type': 'string'},
-                                                         'Jobs': {'items': {'type': 'string'},
-                                                                  'type': 'array'},
-                                                         'Nonce': {'type': 'string'},
-                                                         'ParentId': {'type': 'string'},
-                                                         'Placement': {'$ref': '#/definitions/Placement'},
-                                                         'Series': {'type': 'string'}},
-                                          'required': ['Series',
-                                                       'Constraints',
-                                                       'Jobs',
-                                                       'Disks',
-                                                       'Placement',
-                                                       'ParentId',
-                                                       'ContainerType',
-                                                       'InstanceId',
-                                                       'Nonce',
-                                                       'HardwareCharacteristics',
-                                                       'Addrs'],
-                                          'type': 'object'},
-                     'AddMachines': {'additionalProperties': False,
-                                     'properties': {'MachineParams': {'items': {'$ref': '#/definitions/AddMachineParams'},
-                                                                      'type': 'array'}},
-                                     'required': ['MachineParams'],
-                                     'type': 'object'},
-                     'AddMachinesResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'Machine': {'type': 'string'}},
-                                           'required': ['Machine', 'Error'],
-                                           'type': 'object'},
-                     'AddMachinesResults': {'additionalProperties': False,
-                                            'properties': {'Machines': {'items': {'$ref': '#/definitions/AddMachinesResult'},
-                                                                        'type': 'array'}},
-                                            'required': ['Machines'],
-                                            'type': 'object'},
-                     'Address': {'additionalProperties': False,
-                                 'properties': {'Scope': {'type': 'string'},
-                                                'SpaceName': {'type': 'string'},
-                                                'Type': {'type': 'string'},
-                                                'Value': {'type': 'string'}},
-                                 'required': ['Value', 'Type', 'Scope'],
-                                 'type': 'object'},
-                     'Constraints': {'additionalProperties': False,
-                                     'properties': {'Count': {'type': 'integer'},
-                                                    'Pool': {'type': 'string'},
-                                                    'Size': {'type': 'integer'}},
-                                     'required': ['Pool', 'Size', 'Count'],
-                                     'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'HardwareCharacteristics': {'additionalProperties': False,
-                                                 'properties': {'Arch': {'type': 'string'},
-                                                                'AvailabilityZone': {'type': 'string'},
-                                                                'CpuCores': {'type': 'integer'},
-                                                                'CpuPower': {'type': 'integer'},
-                                                                'Mem': {'type': 'integer'},
-                                                                'RootDisk': {'type': 'integer'},
-                                                                'Tags': {'items': {'type': 'string'},
-                                                                         'type': 'array'}},
-                                                 'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'Placement': {'additionalProperties': False,
-                                   'properties': {'Directive': {'type': 'string'},
-                                                  'Scope': {'type': 'string'}},
-                                   'required': ['Scope', 'Directive'],
-                                   'type': 'object'},
-                     'Value': {'additionalProperties': False,
-                               'properties': {'arch': {'type': 'string'},
-                                              'container': {'type': 'string'},
-                                              'cpu-cores': {'type': 'integer'},
-                                              'cpu-power': {'type': 'integer'},
-                                              'instance-type': {'type': 'string'},
-                                              'mem': {'type': 'integer'},
-                                              'root-disk': {'type': 'integer'},
-                                              'spaces': {'items': {'type': 'string'},
-                                                         'type': 'array'},
-                                              'tags': {'items': {'type': 'string'},
-                                                       'type': 'array'},
-                                              'virt-type': {'type': 'string'}},
-                               'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'AddMachines': {'properties': {'Params': {'$ref': '#/definitions/AddMachines'},
-                                                   'Result': {'$ref': '#/definitions/AddMachinesResults'}},
-                                    'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(AddMachinesResults)
-    async def AddMachines(self, machineparams):
-        '''
-        machineparams : typing.Sequence[~AddMachineParams]
-        Returns -> typing.Sequence[~AddMachinesResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MachineManager', Request='AddMachines', Version=2, Params=params)
-        params['MachineParams'] = machineparams
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Machiner(Type):
-    name = 'Machiner'
-    version = 1
-    schema =     {'definitions': {'APIHostPortsResult': {'additionalProperties': False,
-                                            'properties': {'Servers': {'items': {'items': {'$ref': '#/definitions/HostPort'},
-                                                                                 'type': 'array'},
-                                                                       'type': 'array'}},
-                                            'required': ['Servers'],
-                                            'type': 'object'},
-                     'Address': {'additionalProperties': False,
-                                 'properties': {'Scope': {'type': 'string'},
-                                                'SpaceName': {'type': 'string'},
-                                                'Type': {'type': 'string'},
-                                                'Value': {'type': 'string'}},
-                                 'required': ['Value', 'Type', 'Scope'],
-                                 'type': 'object'},
-                     'BytesResult': {'additionalProperties': False,
-                                     'properties': {'Result': {'items': {'type': 'integer'},
-                                                               'type': 'array'}},
-                                     'required': ['Result'],
-                                     'type': 'object'},
-                     'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'EntityStatusArgs': {'additionalProperties': False,
-                                          'properties': {'Data': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                               'type': 'object'}},
-                                                                  'type': 'object'},
-                                                         'Info': {'type': 'string'},
-                                                         'Status': {'type': 'string'},
-                                                         'Tag': {'type': 'string'}},
-                                          'required': ['Tag',
-                                                       'Status',
-                                                       'Info',
-                                                       'Data'],
-                                          'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'HostPort': {'additionalProperties': False,
-                                  'properties': {'Address': {'$ref': '#/definitions/Address'},
-                                                 'Port': {'type': 'integer'}},
-                                  'required': ['Address', 'Port'],
-                                  'type': 'object'},
-                     'JobsResult': {'additionalProperties': False,
-                                    'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                   'Jobs': {'items': {'type': 'string'},
-                                                            'type': 'array'}},
-                                    'required': ['Jobs', 'Error'],
-                                    'type': 'object'},
-                     'JobsResults': {'additionalProperties': False,
-                                     'properties': {'Results': {'items': {'$ref': '#/definitions/JobsResult'},
-                                                                'type': 'array'}},
-                                     'required': ['Results'],
-                                     'type': 'object'},
-                     'LifeResult': {'additionalProperties': False,
-                                    'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                   'Life': {'type': 'string'}},
-                                    'required': ['Life', 'Error'],
-                                    'type': 'object'},
-                     'LifeResults': {'additionalProperties': False,
-                                     'properties': {'Results': {'items': {'$ref': '#/definitions/LifeResult'},
-                                                                'type': 'array'}},
-                                     'required': ['Results'],
-                                     'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'MachineAddresses': {'additionalProperties': False,
-                                          'properties': {'Addresses': {'items': {'$ref': '#/definitions/Address'},
-                                                                       'type': 'array'},
-                                                         'Tag': {'type': 'string'}},
-                                          'required': ['Tag', 'Addresses'],
-                                          'type': 'object'},
-                     'NetworkConfig': {'additionalProperties': False,
-                                       'properties': {'Address': {'type': 'string'},
-                                                      'CIDR': {'type': 'string'},
-                                                      'ConfigType': {'type': 'string'},
-                                                      'DNSSearchDomains': {'items': {'type': 'string'},
-                                                                           'type': 'array'},
-                                                      'DNSServers': {'items': {'type': 'string'},
-                                                                     'type': 'array'},
-                                                      'DeviceIndex': {'type': 'integer'},
-                                                      'Disabled': {'type': 'boolean'},
-                                                      'GatewayAddress': {'type': 'string'},
-                                                      'InterfaceName': {'type': 'string'},
-                                                      'InterfaceType': {'type': 'string'},
-                                                      'MACAddress': {'type': 'string'},
-                                                      'MTU': {'type': 'integer'},
-                                                      'NoAutoStart': {'type': 'boolean'},
-                                                      'ParentInterfaceName': {'type': 'string'},
-                                                      'ProviderAddressId': {'type': 'string'},
-                                                      'ProviderId': {'type': 'string'},
-                                                      'ProviderSpaceId': {'type': 'string'},
-                                                      'ProviderSubnetId': {'type': 'string'},
-                                                      'ProviderVLANId': {'type': 'string'},
-                                                      'VLANTag': {'type': 'integer'}},
-                                       'required': ['DeviceIndex',
-                                                    'MACAddress',
-                                                    'CIDR',
-                                                    'MTU',
-                                                    'ProviderId',
-                                                    'ProviderSubnetId',
-                                                    'ProviderSpaceId',
-                                                    'ProviderAddressId',
-                                                    'ProviderVLANId',
-                                                    'VLANTag',
-                                                    'InterfaceName',
-                                                    'ParentInterfaceName',
-                                                    'InterfaceType',
-                                                    'Disabled'],
-                                       'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'NotifyWatchResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'SetMachineNetworkConfig': {'additionalProperties': False,
-                                                 'properties': {'Config': {'items': {'$ref': '#/definitions/NetworkConfig'},
-                                                                           'type': 'array'},
-                                                                'Tag': {'type': 'string'}},
-                                                 'required': ['Tag', 'Config'],
-                                                 'type': 'object'},
-                     'SetMachinesAddresses': {'additionalProperties': False,
-                                              'properties': {'MachineAddresses': {'items': {'$ref': '#/definitions/MachineAddresses'},
-                                                                                  'type': 'array'}},
-                                              'required': ['MachineAddresses'],
-                                              'type': 'object'},
-                     'SetStatus': {'additionalProperties': False,
-                                   'properties': {'Entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'},
-                                                               'type': 'array'}},
-                                   'required': ['Entities'],
-                                   'type': 'object'},
-                     'StringResult': {'additionalProperties': False,
-                                      'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                     'Result': {'type': 'string'}},
-                                      'required': ['Error', 'Result'],
-                                      'type': 'object'},
-                     'StringsResult': {'additionalProperties': False,
-                                       'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                      'Result': {'items': {'type': 'string'},
-                                                                 'type': 'array'}},
-                                       'required': ['Error', 'Result'],
-                                       'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}},
-                                     'type': 'object'},
-                    'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}},
-                                     'type': 'object'},
-                    'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}},
-                               'type': 'object'},
-                    'EnsureDead': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                  'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                   'type': 'object'},
-                    'Jobs': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                            'Result': {'$ref': '#/definitions/JobsResults'}},
-                             'type': 'object'},
-                    'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                            'Result': {'$ref': '#/definitions/LifeResults'}},
-                             'type': 'object'},
-                    'ModelUUID': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
-                                  'type': 'object'},
-                    'SetMachineAddresses': {'properties': {'Params': {'$ref': '#/definitions/SetMachinesAddresses'},
-                                                           'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                            'type': 'object'},
-                    'SetObservedNetworkConfig': {'properties': {'Params': {'$ref': '#/definitions/SetMachineNetworkConfig'}},
-                                                 'type': 'object'},
-                    'SetProviderNetworkConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                 'type': 'object'},
-                    'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                 'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                  'type': 'object'},
-                    'UpdateStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                    'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                     'type': 'object'},
-                    'Watch': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                             'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                              'type': 'object'},
-                    'WatchAPIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                          'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(StringsResult)
-    async def APIAddresses(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence[str]]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Machiner', Request='APIAddresses', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(APIHostPortsResult)
-    async def APIHostPorts(self):
-        '''
-
-        Returns -> typing.Sequence[~HostPort]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Machiner', Request='APIHostPorts', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BytesResult)
-    async def CACert(self):
-        '''
-
-        Returns -> typing.Sequence[int]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Machiner', Request='CACert', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def EnsureDead(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Machiner', Request='EnsureDead', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(JobsResults)
-    async def Jobs(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~JobsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Machiner', Request='Jobs', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LifeResults)
-    async def Life(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Machiner', Request='Life', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResult)
-    async def ModelUUID(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Machiner', Request='ModelUUID', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetMachineAddresses(self, machineaddresses):
-        '''
-        machineaddresses : typing.Sequence[~MachineAddresses]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Machiner', Request='SetMachineAddresses', Version=1, Params=params)
-        params['MachineAddresses'] = machineaddresses
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def SetObservedNetworkConfig(self, config, tag):
-        '''
-        config : typing.Sequence[~NetworkConfig]
-        tag : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Machiner', Request='SetObservedNetworkConfig', Version=1, Params=params)
-        params['Config'] = config
-        params['Tag'] = tag
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetProviderNetworkConfig(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Machiner', Request='SetProviderNetworkConfig', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Machiner', Request='SetStatus', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def UpdateStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Machiner', Request='UpdateStatus', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def Watch(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Machiner', Request='Watch', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def WatchAPIHostPorts(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Machiner', Request='WatchAPIHostPorts', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class MeterStatus(Type):
-    name = 'MeterStatus'
-    version = 1
-    schema =     {'definitions': {'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'MeterStatusResult': {'additionalProperties': False,
-                                           'properties': {'Code': {'type': 'string'},
-                                                          'Error': {'$ref': '#/definitions/Error'},
-                                                          'Info': {'type': 'string'}},
-                                           'required': ['Code', 'Info', 'Error'],
-                                           'type': 'object'},
-                     'MeterStatusResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/MeterStatusResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'NotifyWatchResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'GetMeterStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                      'Result': {'$ref': '#/definitions/MeterStatusResults'}},
-                                       'type': 'object'},
-                    'WatchMeterStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                        'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                         'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(MeterStatusResults)
-    async def GetMeterStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~MeterStatusResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MeterStatus', Request='GetMeterStatus', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchMeterStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MeterStatus', Request='WatchMeterStatus', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class MetricsAdder(Type):
-    name = 'MetricsAdder'
-    version = 2
-    schema =     {'definitions': {'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'Metric': {'additionalProperties': False,
-                                'properties': {'Key': {'type': 'string'},
-                                               'Time': {'format': 'date-time',
-                                                        'type': 'string'},
-                                               'Value': {'type': 'string'}},
-                                'required': ['Key', 'Value', 'Time'],
-                                'type': 'object'},
-                     'MetricBatch': {'additionalProperties': False,
-                                     'properties': {'CharmURL': {'type': 'string'},
-                                                    'Created': {'format': 'date-time',
-                                                                'type': 'string'},
-                                                    'Metrics': {'items': {'$ref': '#/definitions/Metric'},
-                                                                'type': 'array'},
-                                                    'UUID': {'type': 'string'}},
-                                     'required': ['UUID',
-                                                  'CharmURL',
-                                                  'Created',
-                                                  'Metrics'],
-                                     'type': 'object'},
-                     'MetricBatchParam': {'additionalProperties': False,
-                                          'properties': {'Batch': {'$ref': '#/definitions/MetricBatch'},
-                                                         'Tag': {'type': 'string'}},
-                                          'required': ['Tag', 'Batch'],
-                                          'type': 'object'},
-                     'MetricBatchParams': {'additionalProperties': False,
-                                           'properties': {'Batches': {'items': {'$ref': '#/definitions/MetricBatchParam'},
-                                                                      'type': 'array'}},
-                                           'required': ['Batches'],
-                                           'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'AddMetricBatches': {'properties': {'Params': {'$ref': '#/definitions/MetricBatchParams'},
-                                                        'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                         'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResults)
-    async def AddMetricBatches(self, batches):
-        '''
-        batches : typing.Sequence[~MetricBatchParam]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MetricsAdder', Request='AddMetricBatches', Version=2, Params=params)
-        params['Batches'] = batches
-        reply = await self.rpc(msg)
-        return reply
-
-
-class MetricsDebug(Type):
-    name = 'MetricsDebug'
-    version = 1
-    schema =     {'definitions': {'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'EntityMetrics': {'additionalProperties': False,
-                                       'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                      'metrics': {'items': {'$ref': '#/definitions/MetricResult'},
-                                                                  'type': 'array'}},
-                                       'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'MeterStatusParam': {'additionalProperties': False,
-                                          'properties': {'code': {'type': 'string'},
-                                                         'info': {'type': 'string'},
-                                                         'tag': {'type': 'string'}},
-                                          'required': ['tag', 'code', 'info'],
-                                          'type': 'object'},
-                     'MeterStatusParams': {'additionalProperties': False,
-                                           'properties': {'statues': {'items': {'$ref': '#/definitions/MeterStatusParam'},
-                                                                      'type': 'array'}},
-                                           'required': ['statues'],
-                                           'type': 'object'},
-                     'MetricResult': {'additionalProperties': False,
-                                      'properties': {'key': {'type': 'string'},
-                                                     'time': {'format': 'date-time',
-                                                              'type': 'string'},
-                                                     'value': {'type': 'string'}},
-                                      'required': ['time', 'key', 'value'],
-                                      'type': 'object'},
-                     'MetricResults': {'additionalProperties': False,
-                                       'properties': {'results': {'items': {'$ref': '#/definitions/EntityMetrics'},
-                                                                  'type': 'array'}},
-                                       'required': ['results'],
-                                       'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'GetMetrics': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                  'Result': {'$ref': '#/definitions/MetricResults'}},
-                                   'type': 'object'},
-                    'SetMeterStatus': {'properties': {'Params': {'$ref': '#/definitions/MeterStatusParams'},
-                                                      'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                       'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(MetricResults)
-    async def GetMetrics(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~EntityMetrics]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MetricsDebug', Request='GetMetrics', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetMeterStatus(self, statues):
-        '''
-        statues : typing.Sequence[~MeterStatusParam]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MetricsDebug', Request='SetMeterStatus', Version=1, Params=params)
-        params['statues'] = statues
-        reply = await self.rpc(msg)
-        return reply
-
-
-class MetricsManager(Type):
-    name = 'MetricsManager'
-    version = 1
-    schema =     {'definitions': {'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'CleanupOldMetrics': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                         'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                          'type': 'object'},
-                    'SendMetrics': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                   'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                    'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResults)
-    async def CleanupOldMetrics(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MetricsManager', Request='CleanupOldMetrics', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SendMetrics(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MetricsManager', Request='SendMetrics', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class MigrationFlag(Type):
-    name = 'MigrationFlag'
-    version = 1
-    schema =     {'definitions': {'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'NotifyWatchResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'PhaseResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                    'phase': {'type': 'string'}},
-                                     'required': ['phase', 'Error'],
-                                     'type': 'object'},
-                     'PhaseResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/PhaseResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'Phase': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                             'Result': {'$ref': '#/definitions/PhaseResults'}},
-                              'type': 'object'},
-                    'Watch': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                             'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                              'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(PhaseResults)
-    async def Phase(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~PhaseResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MigrationFlag', Request='Phase', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def Watch(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MigrationFlag', Request='Watch', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class MigrationMaster(Type):
-    name = 'MigrationMaster'
-    version = 1
-    schema =     {'definitions': {'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'FullMigrationStatus': {'additionalProperties': False,
-                                             'properties': {'attempt': {'type': 'integer'},
-                                                            'phase': {'type': 'string'},
-                                                            'spec': {'$ref': '#/definitions/ModelMigrationSpec'}},
-                                             'required': ['spec',
-                                                          'attempt',
-                                                          'phase'],
-                                             'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'ModelMigrationSpec': {'additionalProperties': False,
-                                            'properties': {'model-tag': {'type': 'string'},
-                                                           'target-info': {'$ref': '#/definitions/ModelMigrationTargetInfo'}},
-                                            'required': ['model-tag',
-                                                         'target-info'],
-                                            'type': 'object'},
-                     'ModelMigrationTargetInfo': {'additionalProperties': False,
-                                                  'properties': {'addrs': {'items': {'type': 'string'},
-                                                                           'type': 'array'},
-                                                                 'auth-tag': {'type': 'string'},
-                                                                 'ca-cert': {'type': 'string'},
-                                                                 'controller-tag': {'type': 'string'},
-                                                                 'password': {'type': 'string'}},
-                                                  'required': ['controller-tag',
-                                                               'addrs',
-                                                               'ca-cert',
-                                                               'auth-tag',
-                                                               'password'],
-                                                  'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'SerializedModel': {'additionalProperties': False,
-                                         'properties': {'bytes': {'items': {'type': 'integer'},
-                                                                  'type': 'array'}},
-                                         'required': ['bytes'],
-                                         'type': 'object'},
-                     'SetMigrationPhaseArgs': {'additionalProperties': False,
-                                               'properties': {'phase': {'type': 'string'}},
-                                               'required': ['phase'],
-                                               'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'Export': {'properties': {'Result': {'$ref': '#/definitions/SerializedModel'}},
-                               'type': 'object'},
-                    'GetMigrationStatus': {'properties': {'Result': {'$ref': '#/definitions/FullMigrationStatus'}},
-                                           'type': 'object'},
-                    'SetPhase': {'properties': {'Params': {'$ref': '#/definitions/SetMigrationPhaseArgs'}},
-                                 'type': 'object'},
-                    'Watch': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                              'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(SerializedModel)
-    async def Export(self):
-        '''
-
-        Returns -> typing.Sequence[int]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MigrationMaster', Request='Export', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(FullMigrationStatus)
-    async def GetMigrationStatus(self):
-        '''
-
-        Returns -> typing.Union[int, str, _ForwardRef('ModelMigrationSpec')]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MigrationMaster', Request='GetMigrationStatus', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def SetPhase(self, phase):
-        '''
-        phase : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MigrationMaster', Request='SetPhase', Version=1, Params=params)
-        params['phase'] = phase
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def Watch(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MigrationMaster', Request='Watch', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class MigrationMinion(Type):
-    name = 'MigrationMinion'
-    version = 1
-    schema =     {'definitions': {'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'Watch': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                              'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(NotifyWatchResult)
-    async def Watch(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MigrationMinion', Request='Watch', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class MigrationStatusWatcher(Type):
-    name = 'MigrationStatusWatcher'
-    version = 1
-    schema =     {'definitions': {'MigrationStatus': {'additionalProperties': False,
-                                         'properties': {'attempt': {'type': 'integer'},
-                                                        'phase': {'type': 'string'},
-                                                        'source-api-addrs': {'items': {'type': 'string'},
-                                                                             'type': 'array'},
-                                                        'source-ca-cert': {'type': 'string'},
-                                                        'target-api-addrs': {'items': {'type': 'string'},
-                                                                             'type': 'array'},
-                                                        'target-ca-cert': {'type': 'string'}},
-                                         'required': ['attempt',
-                                                      'phase',
-                                                      'source-api-addrs',
-                                                      'source-ca-cert',
-                                                      'target-api-addrs',
-                                                      'target-ca-cert'],
-                                         'type': 'object'}},
-     'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/MigrationStatus'}},
-                             'type': 'object'},
-                    'Stop': {'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(MigrationStatus)
-    async def Next(self):
-        '''
-
-        Returns -> typing.Union[int, typing.Sequence[str]]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MigrationStatusWatcher', Request='Next', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Stop(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MigrationStatusWatcher', Request='Stop', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class MigrationTarget(Type):
-    name = 'MigrationTarget'
-    version = 1
-    schema =     {'definitions': {'ModelArgs': {'additionalProperties': False,
-                                   'properties': {'model-tag': {'type': 'string'}},
-                                   'required': ['model-tag'],
-                                   'type': 'object'},
-                     'SerializedModel': {'additionalProperties': False,
-                                         'properties': {'bytes': {'items': {'type': 'integer'},
-                                                                  'type': 'array'}},
-                                         'required': ['bytes'],
-                                         'type': 'object'}},
-     'properties': {'Abort': {'properties': {'Params': {'$ref': '#/definitions/ModelArgs'}},
-                              'type': 'object'},
-                    'Activate': {'properties': {'Params': {'$ref': '#/definitions/ModelArgs'}},
-                                 'type': 'object'},
-                    'Import': {'properties': {'Params': {'$ref': '#/definitions/SerializedModel'}},
-                               'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(None)
-    async def Abort(self, model_tag):
-        '''
-        model_tag : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MigrationTarget', Request='Abort', Version=1, Params=params)
-        params['model-tag'] = model_tag
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Activate(self, model_tag):
-        '''
-        model_tag : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MigrationTarget', Request='Activate', Version=1, Params=params)
-        params['model-tag'] = model_tag
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Import(self, bytes_):
-        '''
-        bytes_ : typing.Sequence[int]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='MigrationTarget', Request='Import', Version=1, Params=params)
-        params['bytes'] = bytes_
-        reply = await self.rpc(msg)
-        return reply
-
-
-class ModelManager(Type):
-    name = 'ModelManager'
-    version = 2
-    schema =     {'definitions': {'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'EntityStatus': {'additionalProperties': False,
-                                      'properties': {'Data': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                           'type': 'object'}},
-                                                              'type': 'object'},
-                                                     'Info': {'type': 'string'},
-                                                     'Since': {'format': 'date-time',
-                                                               'type': 'string'},
-                                                     'Status': {'type': 'string'}},
-                                      'required': ['Status',
-                                                   'Info',
-                                                   'Data',
-                                                   'Since'],
-                                      'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'Model': {'additionalProperties': False,
-                               'properties': {'Name': {'type': 'string'},
-                                              'OwnerTag': {'type': 'string'},
-                                              'UUID': {'type': 'string'}},
-                               'required': ['Name', 'UUID', 'OwnerTag'],
-                               'type': 'object'},
-                     'ModelConfigResult': {'additionalProperties': False,
-                                           'properties': {'Config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                  'type': 'object'}},
-                                                                     'type': 'object'}},
-                                           'required': ['Config'],
-                                           'type': 'object'},
-                     'ModelCreateArgs': {'additionalProperties': False,
-                                         'properties': {'Account': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                 'type': 'object'}},
-                                                                    'type': 'object'},
-                                                        'Config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                'type': 'object'}},
-                                                                   'type': 'object'},
-                                                        'OwnerTag': {'type': 'string'}},
-                                         'required': ['OwnerTag',
-                                                      'Account',
-                                                      'Config'],
-                                         'type': 'object'},
-                     'ModelInfo': {'additionalProperties': False,
-                                   'properties': {'DefaultSeries': {'type': 'string'},
-                                                  'Life': {'type': 'string'},
-                                                  'Name': {'type': 'string'},
-                                                  'OwnerTag': {'type': 'string'},
-                                                  'ProviderType': {'type': 'string'},
-                                                  'ServerUUID': {'type': 'string'},
-                                                  'Status': {'$ref': '#/definitions/EntityStatus'},
-                                                  'UUID': {'type': 'string'},
-                                                  'Users': {'items': {'$ref': '#/definitions/ModelUserInfo'},
-                                                            'type': 'array'}},
-                                   'required': ['Name',
-                                                'UUID',
-                                                'ServerUUID',
-                                                'ProviderType',
-                                                'DefaultSeries',
-                                                'OwnerTag',
-                                                'Life',
-                                                'Status',
-                                                'Users'],
-                                   'type': 'object'},
-                     'ModelInfoResult': {'additionalProperties': False,
-                                         'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                        'result': {'$ref': '#/definitions/ModelInfo'}},
-                                         'type': 'object'},
-                     'ModelInfoResults': {'additionalProperties': False,
-                                          'properties': {'results': {'items': {'$ref': '#/definitions/ModelInfoResult'},
-                                                                     'type': 'array'}},
-                                          'required': ['results'],
-                                          'type': 'object'},
-                     'ModelSkeletonConfigArgs': {'additionalProperties': False,
-                                                 'properties': {'Provider': {'type': 'string'},
-                                                                'Region': {'type': 'string'}},
-                                                 'required': ['Provider', 'Region'],
-                                                 'type': 'object'},
-                     'ModelUserInfo': {'additionalProperties': False,
-                                       'properties': {'access': {'type': 'string'},
-                                                      'displayname': {'type': 'string'},
-                                                      'lastconnection': {'format': 'date-time',
-                                                                         'type': 'string'},
-                                                      'user': {'type': 'string'}},
-                                       'required': ['user',
-                                                    'displayname',
-                                                    'lastconnection',
-                                                    'access'],
-                                       'type': 'object'},
-                     'ModifyModelAccess': {'additionalProperties': False,
-                                           'properties': {'access': {'type': 'string'},
-                                                          'action': {'type': 'string'},
-                                                          'model-tag': {'type': 'string'},
-                                                          'user-tag': {'type': 'string'}},
-                                           'required': ['user-tag',
-                                                        'action',
-                                                        'access',
-                                                        'model-tag'],
-                                           'type': 'object'},
-                     'ModifyModelAccessRequest': {'additionalProperties': False,
-                                                  'properties': {'changes': {'items': {'$ref': '#/definitions/ModifyModelAccess'},
-                                                                             'type': 'array'}},
-                                                  'required': ['changes'],
-                                                  'type': 'object'},
-                     'UserModel': {'additionalProperties': False,
-                                   'properties': {'LastConnection': {'format': 'date-time',
-                                                                     'type': 'string'},
-                                                  'Model': {'$ref': '#/definitions/Model'}},
-                                   'required': ['Model', 'LastConnection'],
-                                   'type': 'object'},
-                     'UserModelList': {'additionalProperties': False,
-                                       'properties': {'UserModels': {'items': {'$ref': '#/definitions/UserModel'},
-                                                                     'type': 'array'}},
-                                       'required': ['UserModels'],
-                                       'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'ConfigSkeleton': {'properties': {'Params': {'$ref': '#/definitions/ModelSkeletonConfigArgs'},
-                                                      'Result': {'$ref': '#/definitions/ModelConfigResult'}},
-                                       'type': 'object'},
-                    'CreateModel': {'properties': {'Params': {'$ref': '#/definitions/ModelCreateArgs'},
-                                                   'Result': {'$ref': '#/definitions/Model'}},
-                                    'type': 'object'},
-                    'ListModels': {'properties': {'Params': {'$ref': '#/definitions/Entity'},
-                                                  'Result': {'$ref': '#/definitions/UserModelList'}},
-                                   'type': 'object'},
-                    'ModelInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                 'Result': {'$ref': '#/definitions/ModelInfoResults'}},
-                                  'type': 'object'},
-                    'ModifyModelAccess': {'properties': {'Params': {'$ref': '#/definitions/ModifyModelAccessRequest'},
-                                                         'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                          'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ModelConfigResult)
-    async def ConfigSkeleton(self, provider, region):
-        '''
-        provider : str
-        region : str
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='ModelManager', Request='ConfigSkeleton', Version=2, Params=params)
-        params['Provider'] = provider
-        params['Region'] = region
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(Model)
-    async def CreateModel(self, account, config, ownertag):
-        '''
-        account : typing.Mapping[str, typing.Any]
-        config : typing.Mapping[str, typing.Any]
-        ownertag : str
-        Returns -> <class 'str'>
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='ModelManager', Request='CreateModel', Version=2, Params=params)
-        params['Account'] = account
-        params['Config'] = config
-        params['OwnerTag'] = ownertag
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(UserModelList)
-    async def ListModels(self, tag):
-        '''
-        tag : str
-        Returns -> typing.Sequence[~UserModel]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='ModelManager', Request='ListModels', Version=2, Params=params)
-        params['Tag'] = tag
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelInfoResults)
-    async def ModelInfo(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ModelInfoResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='ModelManager', Request='ModelInfo', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def ModifyModelAccess(self, changes):
-        '''
-        changes : typing.Sequence[~ModifyModelAccess]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='ModelManager', Request='ModifyModelAccess', Version=2, Params=params)
-        params['changes'] = changes
-        reply = await self.rpc(msg)
-        return reply
-
-
-class NotifyWatcher(Type):
-    name = 'NotifyWatcher'
-    version = 1
-    schema =     {'properties': {'Next': {'type': 'object'}, 'Stop': {'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(None)
-    async def Next(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='NotifyWatcher', Request='Next', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Stop(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='NotifyWatcher', Request='Stop', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Pinger(Type):
-    name = 'Pinger'
-    version = 1
-    schema =     {'properties': {'Ping': {'type': 'object'}, 'Stop': {'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(None)
-    async def Ping(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Pinger', Request='Ping', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Stop(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Pinger', Request='Stop', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Provisioner(Type):
-    name = 'Provisioner'
-    version = 2
-    schema =     {'definitions': {'APIHostPortsResult': {'additionalProperties': False,
-                                            'properties': {'Servers': {'items': {'items': {'$ref': '#/definitions/HostPort'},
-                                                                                 'type': 'array'},
-                                                                       'type': 'array'}},
-                                            'required': ['Servers'],
-                                            'type': 'object'},
-                     'Address': {'additionalProperties': False,
-                                 'properties': {'Scope': {'type': 'string'},
-                                                'SpaceName': {'type': 'string'},
-                                                'Type': {'type': 'string'},
-                                                'Value': {'type': 'string'}},
-                                 'required': ['Value', 'Type', 'Scope'],
-                                 'type': 'object'},
-                     'Binary': {'additionalProperties': False,
-                                'properties': {'Arch': {'type': 'string'},
-                                               'Number': {'$ref': '#/definitions/Number'},
-                                               'Series': {'type': 'string'}},
-                                'required': ['Number', 'Series', 'Arch'],
-                                'type': 'object'},
-                     'BytesResult': {'additionalProperties': False,
-                                     'properties': {'Result': {'items': {'type': 'integer'},
-                                                               'type': 'array'}},
-                                     'required': ['Result'],
-                                     'type': 'object'},
-                     'CloudImageMetadata': {'additionalProperties': False,
-                                            'properties': {'arch': {'type': 'string'},
-                                                           'image_id': {'type': 'string'},
-                                                           'priority': {'type': 'integer'},
-                                                           'region': {'type': 'string'},
-                                                           'root_storage_size': {'type': 'integer'},
-                                                           'root_storage_type': {'type': 'string'},
-                                                           'series': {'type': 'string'},
-                                                           'source': {'type': 'string'},
-                                                           'stream': {'type': 'string'},
-                                                           'version': {'type': 'string'},
-                                                           'virt_type': {'type': 'string'}},
-                                            'required': ['image_id',
-                                                         'region',
-                                                         'version',
-                                                         'series',
-                                                         'arch',
-                                                         'source',
-                                                         'priority'],
-                                            'type': 'object'},
-                     'ConstraintsResult': {'additionalProperties': False,
-                                           'properties': {'Constraints': {'$ref': '#/definitions/Value'},
-                                                          'Error': {'$ref': '#/definitions/Error'}},
-                                           'required': ['Error', 'Constraints'],
-                                           'type': 'object'},
-                     'ConstraintsResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/ConstraintsResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'ContainerConfig': {'additionalProperties': False,
-                                         'properties': {'AllowLXCLoopMounts': {'type': 'boolean'},
-                                                        'AptMirror': {'type': 'string'},
-                                                        'AptProxy': {'$ref': '#/definitions/Settings'},
-                                                        'AuthorizedKeys': {'type': 'string'},
-                                                        'PreferIPv6': {'type': 'boolean'},
-                                                        'ProviderType': {'type': 'string'},
-                                                        'Proxy': {'$ref': '#/definitions/Settings'},
-                                                        'SSLHostnameVerification': {'type': 'boolean'},
-                                                        'UpdateBehavior': {'$ref': '#/definitions/UpdateBehavior'}},
-                                         'required': ['ProviderType',
-                                                      'AuthorizedKeys',
-                                                      'SSLHostnameVerification',
-                                                      'Proxy',
-                                                      'AptProxy',
-                                                      'AptMirror',
-                                                      'PreferIPv6',
-                                                      'AllowLXCLoopMounts',
-                                                      'UpdateBehavior'],
-                                         'type': 'object'},
-                     'ContainerManagerConfig': {'additionalProperties': False,
-                                                'properties': {'ManagerConfig': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                                 'type': 'object'}},
-                                                'required': ['ManagerConfig'],
-                                                'type': 'object'},
-                     'ContainerManagerConfigParams': {'additionalProperties': False,
-                                                      'properties': {'Type': {'type': 'string'}},
-                                                      'required': ['Type'],
-                                                      'type': 'object'},
-                     'DistributionGroupResult': {'additionalProperties': False,
-                                                 'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                                'Result': {'items': {'type': 'string'},
-                                                                           'type': 'array'}},
-                                                 'required': ['Error', 'Result'],
-                                                 'type': 'object'},
-                     'DistributionGroupResults': {'additionalProperties': False,
-                                                  'properties': {'Results': {'items': {'$ref': '#/definitions/DistributionGroupResult'},
-                                                                             'type': 'array'}},
-                                                  'required': ['Results'],
-                                                  'type': 'object'},
-                     'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'EntityPassword': {'additionalProperties': False,
-                                        'properties': {'Password': {'type': 'string'},
-                                                       'Tag': {'type': 'string'}},
-                                        'required': ['Tag', 'Password'],
-                                        'type': 'object'},
-                     'EntityPasswords': {'additionalProperties': False,
-                                         'properties': {'Changes': {'items': {'$ref': '#/definitions/EntityPassword'},
-                                                                    'type': 'array'}},
-                                         'required': ['Changes'],
-                                         'type': 'object'},
-                     'EntityStatusArgs': {'additionalProperties': False,
-                                          'properties': {'Data': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                               'type': 'object'}},
-                                                                  'type': 'object'},
-                                                         'Info': {'type': 'string'},
-                                                         'Status': {'type': 'string'},
-                                                         'Tag': {'type': 'string'}},
-                                          'required': ['Tag',
-                                                       'Status',
-                                                       'Info',
-                                                       'Data'],
-                                          'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'FindToolsParams': {'additionalProperties': False,
-                                         'properties': {'Arch': {'type': 'string'},
-                                                        'MajorVersion': {'type': 'integer'},
-                                                        'MinorVersion': {'type': 'integer'},
-                                                        'Number': {'$ref': '#/definitions/Number'},
-                                                        'Series': {'type': 'string'}},
-                                         'required': ['Number',
-                                                      'MajorVersion',
-                                                      'MinorVersion',
-                                                      'Arch',
-                                                      'Series'],
-                                         'type': 'object'},
-                     'FindToolsResult': {'additionalProperties': False,
-                                         'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                        'List': {'items': {'$ref': '#/definitions/Tools'},
-                                                                 'type': 'array'}},
-                                         'required': ['List', 'Error'],
-                                         'type': 'object'},
-                     'HardwareCharacteristics': {'additionalProperties': False,
-                                                 'properties': {'Arch': {'type': 'string'},
-                                                                'AvailabilityZone': {'type': 'string'},
-                                                                'CpuCores': {'type': 'integer'},
-                                                                'CpuPower': {'type': 'integer'},
-                                                                'Mem': {'type': 'integer'},
-                                                                'RootDisk': {'type': 'integer'},
-                                                                'Tags': {'items': {'type': 'string'},
-                                                                         'type': 'array'}},
-                                                 'type': 'object'},
-                     'HostPort': {'additionalProperties': False,
-                                  'properties': {'Address': {'$ref': '#/definitions/Address'},
-                                                 'Port': {'type': 'integer'}},
-                                  'required': ['Address', 'Port'],
-                                  'type': 'object'},
-                     'InstanceInfo': {'additionalProperties': False,
-                                      'properties': {'Characteristics': {'$ref': '#/definitions/HardwareCharacteristics'},
-                                                     'InstanceId': {'type': 'string'},
-                                                     'NetworkConfig': {'items': {'$ref': '#/definitions/NetworkConfig'},
-                                                                       'type': 'array'},
-                                                     'Nonce': {'type': 'string'},
-                                                     'Tag': {'type': 'string'},
-                                                     'VolumeAttachments': {'patternProperties': {'.*': {'$ref': '#/definitions/VolumeAttachmentInfo'}},
-                                                                           'type': 'object'},
-                                                     'Volumes': {'items': {'$ref': '#/definitions/Volume'},
-                                                                 'type': 'array'}},
-                                      'required': ['Tag',
-                                                   'InstanceId',
-                                                   'Nonce',
-                                                   'Characteristics',
-                                                   'Volumes',
-                                                   'VolumeAttachments',
-                                                   'NetworkConfig'],
-                                      'type': 'object'},
-                     'InstancesInfo': {'additionalProperties': False,
-                                       'properties': {'Machines': {'items': {'$ref': '#/definitions/InstanceInfo'},
-                                                                   'type': 'array'}},
-                                       'required': ['Machines'],
-                                       'type': 'object'},
-                     'LifeResult': {'additionalProperties': False,
-                                    'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                   'Life': {'type': 'string'}},
-                                    'required': ['Life', 'Error'],
-                                    'type': 'object'},
-                     'LifeResults': {'additionalProperties': False,
-                                     'properties': {'Results': {'items': {'$ref': '#/definitions/LifeResult'},
-                                                                'type': 'array'}},
-                                     'required': ['Results'],
-                                     'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'MachineContainers': {'additionalProperties': False,
-                                           'properties': {'ContainerTypes': {'items': {'type': 'string'},
-                                                                             'type': 'array'},
-                                                          'MachineTag': {'type': 'string'}},
-                                           'required': ['MachineTag',
-                                                        'ContainerTypes'],
-                                           'type': 'object'},
-                     'MachineContainersParams': {'additionalProperties': False,
-                                                 'properties': {'Params': {'items': {'$ref': '#/definitions/MachineContainers'},
-                                                                           'type': 'array'}},
-                                                 'required': ['Params'],
-                                                 'type': 'object'},
-                     'MachineNetworkConfigResult': {'additionalProperties': False,
-                                                    'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                                   'Info': {'items': {'$ref': '#/definitions/NetworkConfig'},
-                                                                            'type': 'array'}},
-                                                    'required': ['Error', 'Info'],
-                                                    'type': 'object'},
-                     'MachineNetworkConfigResults': {'additionalProperties': False,
-                                                     'properties': {'Results': {'items': {'$ref': '#/definitions/MachineNetworkConfigResult'},
-                                                                                'type': 'array'}},
-                                                     'required': ['Results'],
-                                                     'type': 'object'},
-                     'ModelConfigResult': {'additionalProperties': False,
-                                           'properties': {'Config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                  'type': 'object'}},
-                                                                     'type': 'object'}},
-                                           'required': ['Config'],
-                                           'type': 'object'},
-                     'NetworkConfig': {'additionalProperties': False,
-                                       'properties': {'Address': {'type': 'string'},
-                                                      'CIDR': {'type': 'string'},
-                                                      'ConfigType': {'type': 'string'},
-                                                      'DNSSearchDomains': {'items': {'type': 'string'},
-                                                                           'type': 'array'},
-                                                      'DNSServers': {'items': {'type': 'string'},
-                                                                     'type': 'array'},
-                                                      'DeviceIndex': {'type': 'integer'},
-                                                      'Disabled': {'type': 'boolean'},
-                                                      'GatewayAddress': {'type': 'string'},
-                                                      'InterfaceName': {'type': 'string'},
-                                                      'InterfaceType': {'type': 'string'},
-                                                      'MACAddress': {'type': 'string'},
-                                                      'MTU': {'type': 'integer'},
-                                                      'NoAutoStart': {'type': 'boolean'},
-                                                      'ParentInterfaceName': {'type': 'string'},
-                                                      'ProviderAddressId': {'type': 'string'},
-                                                      'ProviderId': {'type': 'string'},
-                                                      'ProviderSpaceId': {'type': 'string'},
-                                                      'ProviderSubnetId': {'type': 'string'},
-                                                      'ProviderVLANId': {'type': 'string'},
-                                                      'VLANTag': {'type': 'integer'}},
-                                       'required': ['DeviceIndex',
-                                                    'MACAddress',
-                                                    'CIDR',
-                                                    'MTU',
-                                                    'ProviderId',
-                                                    'ProviderSubnetId',
-                                                    'ProviderSpaceId',
-                                                    'ProviderAddressId',
-                                                    'ProviderVLANId',
-                                                    'VLANTag',
-                                                    'InterfaceName',
-                                                    'ParentInterfaceName',
-                                                    'InterfaceType',
-                                                    'Disabled'],
-                                       'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'Number': {'additionalProperties': False,
-                                'properties': {'Build': {'type': 'integer'},
-                                               'Major': {'type': 'integer'},
-                                               'Minor': {'type': 'integer'},
-                                               'Patch': {'type': 'integer'},
-                                               'Tag': {'type': 'string'}},
-                                'required': ['Major',
-                                             'Minor',
-                                             'Tag',
-                                             'Patch',
-                                             'Build'],
-                                'type': 'object'},
-                     'ProvisioningInfo': {'additionalProperties': False,
-                                          'properties': {'Constraints': {'$ref': '#/definitions/Value'},
-                                                         'EndpointBindings': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                              'type': 'object'},
-                                                         'ImageMetadata': {'items': {'$ref': '#/definitions/CloudImageMetadata'},
-                                                                           'type': 'array'},
-                                                         'Jobs': {'items': {'type': 'string'},
-                                                                  'type': 'array'},
-                                                         'Placement': {'type': 'string'},
-                                                         'Series': {'type': 'string'},
-                                                         'SubnetsToZones': {'patternProperties': {'.*': {'items': {'type': 'string'},
-                                                                                                         'type': 'array'}},
-                                                                            'type': 'object'},
-                                                         'Tags': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                  'type': 'object'},
-                                                         'Volumes': {'items': {'$ref': '#/definitions/VolumeParams'},
-                                                                     'type': 'array'}},
-                                          'required': ['Constraints',
-                                                       'Series',
-                                                       'Placement',
-                                                       'Jobs',
-                                                       'Volumes',
-                                                       'Tags',
-                                                       'SubnetsToZones',
-                                                       'ImageMetadata',
-                                                       'EndpointBindings'],
-                                          'type': 'object'},
-                     'ProvisioningInfoResult': {'additionalProperties': False,
-                                                'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                               'Result': {'$ref': '#/definitions/ProvisioningInfo'}},
-                                                'required': ['Error', 'Result'],
-                                                'type': 'object'},
-                     'ProvisioningInfoResults': {'additionalProperties': False,
-                                                 'properties': {'Results': {'items': {'$ref': '#/definitions/ProvisioningInfoResult'},
-                                                                            'type': 'array'}},
-                                                 'required': ['Results'],
-                                                 'type': 'object'},
-                     'SetStatus': {'additionalProperties': False,
-                                   'properties': {'Entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'},
-                                                               'type': 'array'}},
-                                   'required': ['Entities'],
-                                   'type': 'object'},
-                     'Settings': {'additionalProperties': False,
-                                  'properties': {'Ftp': {'type': 'string'},
-                                                 'Http': {'type': 'string'},
-                                                 'Https': {'type': 'string'},
-                                                 'NoProxy': {'type': 'string'}},
-                                  'required': ['Http', 'Https', 'Ftp', 'NoProxy'],
-                                  'type': 'object'},
-                     'StatusResult': {'additionalProperties': False,
-                                      'properties': {'Data': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                           'type': 'object'}},
-                                                              'type': 'object'},
-                                                     'Error': {'$ref': '#/definitions/Error'},
-                                                     'Id': {'type': 'string'},
-                                                     'Info': {'type': 'string'},
-                                                     'Life': {'type': 'string'},
-                                                     'Since': {'format': 'date-time',
-                                                               'type': 'string'},
-                                                     'Status': {'type': 'string'}},
-                                      'required': ['Error',
-                                                   'Id',
-                                                   'Life',
-                                                   'Status',
-                                                   'Info',
-                                                   'Data',
-                                                   'Since'],
-                                      'type': 'object'},
-                     'StatusResults': {'additionalProperties': False,
-                                       'properties': {'Results': {'items': {'$ref': '#/definitions/StatusResult'},
-                                                                  'type': 'array'}},
-                                       'required': ['Results'],
-                                       'type': 'object'},
-                     'StringResult': {'additionalProperties': False,
-                                      'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                     'Result': {'type': 'string'}},
-                                      'required': ['Error', 'Result'],
-                                      'type': 'object'},
-                     'StringResults': {'additionalProperties': False,
-                                       'properties': {'Results': {'items': {'$ref': '#/definitions/StringResult'},
-                                                                  'type': 'array'}},
-                                       'required': ['Results'],
-                                       'type': 'object'},
-                     'StringsResult': {'additionalProperties': False,
-                                       'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                      'Result': {'items': {'type': 'string'},
-                                                                 'type': 'array'}},
-                                       'required': ['Error', 'Result'],
-                                       'type': 'object'},
-                     'StringsWatchResult': {'additionalProperties': False,
-                                            'properties': {'Changes': {'items': {'type': 'string'},
-                                                                       'type': 'array'},
-                                                           'Error': {'$ref': '#/definitions/Error'},
-                                                           'StringsWatcherId': {'type': 'string'}},
-                                            'required': ['StringsWatcherId',
-                                                         'Changes',
-                                                         'Error'],
-                                            'type': 'object'},
-                     'StringsWatchResults': {'additionalProperties': False,
-                                             'properties': {'Results': {'items': {'$ref': '#/definitions/StringsWatchResult'},
-                                                                        'type': 'array'}},
-                                             'required': ['Results'],
-                                             'type': 'object'},
-                     'Tools': {'additionalProperties': False,
-                               'properties': {'sha256': {'type': 'string'},
-                                              'size': {'type': 'integer'},
-                                              'url': {'type': 'string'},
-                                              'version': {'$ref': '#/definitions/Binary'}},
-                               'required': ['version', 'url', 'size'],
-                               'type': 'object'},
-                     'ToolsResult': {'additionalProperties': False,
-                                     'properties': {'DisableSSLHostnameVerification': {'type': 'boolean'},
-                                                    'Error': {'$ref': '#/definitions/Error'},
-                                                    'ToolsList': {'items': {'$ref': '#/definitions/Tools'},
-                                                                  'type': 'array'}},
-                                     'required': ['ToolsList',
-                                                  'DisableSSLHostnameVerification',
-                                                  'Error'],
-                                     'type': 'object'},
-                     'ToolsResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ToolsResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'UpdateBehavior': {'additionalProperties': False,
-                                        'properties': {'EnableOSRefreshUpdate': {'type': 'boolean'},
-                                                       'EnableOSUpgrade': {'type': 'boolean'}},
-                                        'required': ['EnableOSRefreshUpdate',
-                                                     'EnableOSUpgrade'],
-                                        'type': 'object'},
-                     'Value': {'additionalProperties': False,
-                               'properties': {'arch': {'type': 'string'},
-                                              'container': {'type': 'string'},
-                                              'cpu-cores': {'type': 'integer'},
-                                              'cpu-power': {'type': 'integer'},
-                                              'instance-type': {'type': 'string'},
-                                              'mem': {'type': 'integer'},
-                                              'root-disk': {'type': 'integer'},
-                                              'spaces': {'items': {'type': 'string'},
-                                                         'type': 'array'},
-                                              'tags': {'items': {'type': 'string'},
-                                                       'type': 'array'},
-                                              'virt-type': {'type': 'string'}},
-                               'type': 'object'},
-                     'Volume': {'additionalProperties': False,
-                                'properties': {'info': {'$ref': '#/definitions/VolumeInfo'},
-                                               'volumetag': {'type': 'string'}},
-                                'required': ['volumetag', 'info'],
-                                'type': 'object'},
-                     'VolumeAttachmentInfo': {'additionalProperties': False,
-                                              'properties': {'busaddress': {'type': 'string'},
-                                                             'devicelink': {'type': 'string'},
-                                                             'devicename': {'type': 'string'},
-                                                             'read-only': {'type': 'boolean'}},
-                                              'type': 'object'},
-                     'VolumeAttachmentParams': {'additionalProperties': False,
-                                                'properties': {'instanceid': {'type': 'string'},
-                                                               'machinetag': {'type': 'string'},
-                                                               'provider': {'type': 'string'},
-                                                               'read-only': {'type': 'boolean'},
-                                                               'volumeid': {'type': 'string'},
-                                                               'volumetag': {'type': 'string'}},
-                                                'required': ['volumetag',
-                                                             'machinetag',
-                                                             'provider'],
-                                                'type': 'object'},
-                     'VolumeInfo': {'additionalProperties': False,
-                                    'properties': {'hardwareid': {'type': 'string'},
-                                                   'persistent': {'type': 'boolean'},
-                                                   'size': {'type': 'integer'},
-                                                   'volumeid': {'type': 'string'}},
-                                    'required': ['volumeid', 'size', 'persistent'],
-                                    'type': 'object'},
-                     'VolumeParams': {'additionalProperties': False,
-                                      'properties': {'attachment': {'$ref': '#/definitions/VolumeAttachmentParams'},
-                                                     'attributes': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                 'type': 'object'}},
-                                                                    'type': 'object'},
-                                                     'provider': {'type': 'string'},
-                                                     'size': {'type': 'integer'},
-                                                     'tags': {'patternProperties': {'.*': {'type': 'string'}},
-                                                              'type': 'object'},
-                                                     'volumetag': {'type': 'string'}},
-                                      'required': ['volumetag', 'size', 'provider'],
-                                      'type': 'object'},
-                     'WatchContainer': {'additionalProperties': False,
-                                        'properties': {'ContainerType': {'type': 'string'},
-                                                       'MachineTag': {'type': 'string'}},
-                                        'required': ['MachineTag', 'ContainerType'],
-                                        'type': 'object'},
-                     'WatchContainers': {'additionalProperties': False,
-                                         'properties': {'Params': {'items': {'$ref': '#/definitions/WatchContainer'},
-                                                                   'type': 'array'}},
-                                         'required': ['Params'],
-                                         'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}},
-                                     'type': 'object'},
-                    'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}},
-                                     'type': 'object'},
-                    'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}},
-                               'type': 'object'},
-                    'Constraints': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                   'Result': {'$ref': '#/definitions/ConstraintsResults'}},
-                                    'type': 'object'},
-                    'ContainerConfig': {'properties': {'Result': {'$ref': '#/definitions/ContainerConfig'}},
-                                        'type': 'object'},
-                    'ContainerManagerConfig': {'properties': {'Params': {'$ref': '#/definitions/ContainerManagerConfigParams'},
-                                                              'Result': {'$ref': '#/definitions/ContainerManagerConfig'}},
-                                               'type': 'object'},
-                    'DistributionGroup': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                         'Result': {'$ref': '#/definitions/DistributionGroupResults'}},
-                                          'type': 'object'},
-                    'EnsureDead': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                  'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                   'type': 'object'},
-                    'FindTools': {'properties': {'Params': {'$ref': '#/definitions/FindToolsParams'},
-                                                 'Result': {'$ref': '#/definitions/FindToolsResult'}},
-                                  'type': 'object'},
-                    'GetContainerInterfaceInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                 'Result': {'$ref': '#/definitions/MachineNetworkConfigResults'}},
-                                                  'type': 'object'},
-                    'InstanceId': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                  'Result': {'$ref': '#/definitions/StringResults'}},
-                                   'type': 'object'},
-                    'InstanceStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                      'Result': {'$ref': '#/definitions/StatusResults'}},
-                                       'type': 'object'},
-                    'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                            'Result': {'$ref': '#/definitions/LifeResults'}},
-                             'type': 'object'},
-                    'MachinesWithTransientErrors': {'properties': {'Result': {'$ref': '#/definitions/StatusResults'}},
-                                                    'type': 'object'},
-                    'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}},
-                                    'type': 'object'},
-                    'ModelUUID': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
-                                  'type': 'object'},
-                    'PrepareContainerInterfaceInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                     'Result': {'$ref': '#/definitions/MachineNetworkConfigResults'}},
-                                                      'type': 'object'},
-                    'ProvisioningInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                        'Result': {'$ref': '#/definitions/ProvisioningInfoResults'}},
-                                         'type': 'object'},
-                    'ReleaseContainerAddresses': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                 'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                  'type': 'object'},
-                    'Remove': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                              'Result': {'$ref': '#/definitions/ErrorResults'}},
-                               'type': 'object'},
-                    'Series': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                              'Result': {'$ref': '#/definitions/StringResults'}},
-                               'type': 'object'},
-                    'SetInstanceInfo': {'properties': {'Params': {'$ref': '#/definitions/InstancesInfo'},
-                                                       'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                        'type': 'object'},
-                    'SetInstanceStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                         'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                          'type': 'object'},
-                    'SetPasswords': {'properties': {'Params': {'$ref': '#/definitions/EntityPasswords'},
-                                                    'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                     'type': 'object'},
-                    'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                 'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                  'type': 'object'},
-                    'SetSupportedContainers': {'properties': {'Params': {'$ref': '#/definitions/MachineContainersParams'},
-                                                              'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                               'type': 'object'},
-                    'StateAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}},
-                                       'type': 'object'},
-                    'Status': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                              'Result': {'$ref': '#/definitions/StatusResults'}},
-                               'type': 'object'},
-                    'Tools': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                             'Result': {'$ref': '#/definitions/ToolsResults'}},
-                              'type': 'object'},
-                    'UpdateStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                    'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                     'type': 'object'},
-                    'WatchAPIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                          'type': 'object'},
-                    'WatchAllContainers': {'properties': {'Params': {'$ref': '#/definitions/WatchContainers'},
-                                                          'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                           'type': 'object'},
-                    'WatchContainers': {'properties': {'Params': {'$ref': '#/definitions/WatchContainers'},
-                                                       'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                        'type': 'object'},
-                    'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                                   'type': 'object'},
-                    'WatchMachineErrorRetry': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                               'type': 'object'},
-                    'WatchModelMachines': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
-                                           'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(StringsResult)
-    async def APIAddresses(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence[str]]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='APIAddresses', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(APIHostPortsResult)
-    async def APIHostPorts(self):
-        '''
-
-        Returns -> typing.Sequence[~HostPort]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='APIHostPorts', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BytesResult)
-    async def CACert(self):
-        '''
-
-        Returns -> typing.Sequence[int]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='CACert', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ConstraintsResults)
-    async def Constraints(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ConstraintsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='Constraints', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ContainerConfig)
-    async def ContainerConfig(self):
-        '''
-
-        Returns -> typing.Union[bool, str, _ForwardRef('Settings'), _ForwardRef('Settings'), _ForwardRef('UpdateBehavior')]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='ContainerConfig', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ContainerManagerConfig)
-    async def ContainerManagerConfig(self, type_):
-        '''
-        type_ : str
-        Returns -> typing.Mapping[str, str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='ContainerManagerConfig', Version=2, Params=params)
-        params['Type'] = type_
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(DistributionGroupResults)
-    async def DistributionGroup(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~DistributionGroupResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='DistributionGroup', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def EnsureDead(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='EnsureDead', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(FindToolsResult)
-    async def FindTools(self, arch, majorversion, minorversion, number, series):
-        '''
-        arch : str
-        majorversion : int
-        minorversion : int
-        number : Number
-        series : str
-        Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence[~Tools]]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='FindTools', Version=2, Params=params)
-        params['Arch'] = arch
-        params['MajorVersion'] = majorversion
-        params['MinorVersion'] = minorversion
-        params['Number'] = number
-        params['Series'] = series
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MachineNetworkConfigResults)
-    async def GetContainerInterfaceInfo(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~MachineNetworkConfigResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='GetContainerInterfaceInfo', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def InstanceId(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='InstanceId', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StatusResults)
-    async def InstanceStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StatusResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='InstanceStatus', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LifeResults)
-    async def Life(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='Life', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StatusResults)
-    async def MachinesWithTransientErrors(self):
-        '''
-
-        Returns -> typing.Sequence[~StatusResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='MachinesWithTransientErrors', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelConfigResult)
-    async def ModelConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='ModelConfig', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResult)
-    async def ModelUUID(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='ModelUUID', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MachineNetworkConfigResults)
-    async def PrepareContainerInterfaceInfo(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~MachineNetworkConfigResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='PrepareContainerInterfaceInfo', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ProvisioningInfoResults)
-    async def ProvisioningInfo(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ProvisioningInfoResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='ProvisioningInfo', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def ReleaseContainerAddresses(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='ReleaseContainerAddresses', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Remove(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='Remove', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def Series(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='Series', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetInstanceInfo(self, machines):
-        '''
-        machines : typing.Sequence[~InstanceInfo]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='SetInstanceInfo', Version=2, Params=params)
-        params['Machines'] = machines
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetInstanceStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='SetInstanceStatus', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetPasswords(self, changes):
-        '''
-        changes : typing.Sequence[~EntityPassword]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='SetPasswords', Version=2, Params=params)
-        params['Changes'] = changes
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='SetStatus', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetSupportedContainers(self, params):
-        '''
-        params : typing.Sequence[~MachineContainers]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='SetSupportedContainers', Version=2, Params=params)
-        params['Params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsResult)
-    async def StateAddresses(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence[str]]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='StateAddresses', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StatusResults)
-    async def Status(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StatusResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='Status', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ToolsResults)
-    async def Tools(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ToolsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='Tools', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def UpdateStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='UpdateStatus', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def WatchAPIHostPorts(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='WatchAPIHostPorts', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchAllContainers(self, params):
-        '''
-        params : typing.Sequence[~WatchContainer]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='WatchAllContainers', Version=2, Params=params)
-        params['Params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchContainers(self, params):
-        '''
-        params : typing.Sequence[~WatchContainer]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='WatchContainers', Version=2, Params=params)
-        params['Params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def WatchForModelConfigChanges(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='WatchForModelConfigChanges', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def WatchMachineErrorRetry(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='WatchMachineErrorRetry', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResult)
-    async def WatchModelMachines(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error')]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Provisioner', Request='WatchModelMachines', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class ProxyUpdater(Type):
-    name = 'ProxyUpdater'
-    version = 1
-    schema =     {'definitions': {'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'NotifyWatchResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'ProxyConfig': {'additionalProperties': False,
-                                     'properties': {'FTP': {'type': 'string'},
-                                                    'HTTP': {'type': 'string'},
-                                                    'HTTPS': {'type': 'string'},
-                                                    'NoProxy': {'type': 'string'}},
-                                     'required': ['HTTP',
-                                                  'HTTPS',
-                                                  'FTP',
-                                                  'NoProxy'],
-                                     'type': 'object'},
-                     'ProxyConfigResult': {'additionalProperties': False,
-                                           'properties': {'APTProxySettings': {'$ref': '#/definitions/ProxyConfig'},
-                                                          'Error': {'$ref': '#/definitions/Error'},
-                                                          'ProxySettings': {'$ref': '#/definitions/ProxyConfig'}},
-                                           'required': ['ProxySettings',
-                                                        'APTProxySettings'],
-                                           'type': 'object'},
-                     'ProxyConfigResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/ProxyConfigResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'ProxyConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                   'Result': {'$ref': '#/definitions/ProxyConfigResults'}},
-                                    'type': 'object'},
-                    'WatchForProxyConfigAndAPIHostPortChanges': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                                'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                                                 'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ProxyConfigResults)
-    async def ProxyConfig(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ProxyConfigResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='ProxyUpdater', Request='ProxyConfig', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchForProxyConfigAndAPIHostPortChanges(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='ProxyUpdater', Request='WatchForProxyConfigAndAPIHostPortChanges', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Reboot(Type):
-    name = 'Reboot'
-    version = 2
-    schema =     {'definitions': {'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'RebootActionResult': {'additionalProperties': False,
-                                            'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                           'result': {'type': 'string'}},
-                                            'type': 'object'},
-                     'RebootActionResults': {'additionalProperties': False,
-                                             'properties': {'results': {'items': {'$ref': '#/definitions/RebootActionResult'},
-                                                                        'type': 'array'}},
-                                             'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'ClearReboot': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                   'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                    'type': 'object'},
-                    'GetRebootAction': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                       'Result': {'$ref': '#/definitions/RebootActionResults'}},
-                                        'type': 'object'},
-                    'RequestReboot': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                     'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                      'type': 'object'},
-                    'WatchForRebootEvent': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                            'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResults)
-    async def ClearReboot(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Reboot', Request='ClearReboot', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(RebootActionResults)
-    async def GetRebootAction(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~RebootActionResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Reboot', Request='GetRebootAction', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def RequestReboot(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Reboot', Request='RequestReboot', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def WatchForRebootEvent(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Reboot', Request='WatchForRebootEvent', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class RelationUnitsWatcher(Type):
-    name = 'RelationUnitsWatcher'
-    version = 1
-    schema =     {'definitions': {'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'RelationUnitsChange': {'additionalProperties': False,
-                                             'properties': {'Changed': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitSettings'}},
-                                                                        'type': 'object'},
-                                                            'Departed': {'items': {'type': 'string'},
-                                                                         'type': 'array'}},
-                                             'required': ['Changed', 'Departed'],
-                                             'type': 'object'},
-                     'RelationUnitsWatchResult': {'additionalProperties': False,
-                                                  'properties': {'Changes': {'$ref': '#/definitions/RelationUnitsChange'},
-                                                                 'Error': {'$ref': '#/definitions/Error'},
-                                                                 'RelationUnitsWatcherId': {'type': 'string'}},
-                                                  'required': ['RelationUnitsWatcherId',
-                                                               'Changes',
-                                                               'Error'],
-                                                  'type': 'object'},
-                     'UnitSettings': {'additionalProperties': False,
-                                      'properties': {'Version': {'type': 'integer'}},
-                                      'required': ['Version'],
-                                      'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/RelationUnitsWatchResult'}},
-                             'type': 'object'},
-                    'Stop': {'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(RelationUnitsWatchResult)
-    async def Next(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('RelationUnitsChange'), _ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='RelationUnitsWatcher', Request='Next', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Stop(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='RelationUnitsWatcher', Request='Stop', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Resumer(Type):
-    name = 'Resumer'
-    version = 2
-    schema =     {'properties': {'ResumeTransactions': {'type': 'object'}}, 'type': 'object'}
-    
-
-    @ReturnMapping(None)
-    async def ResumeTransactions(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Resumer', Request='ResumeTransactions', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class RetryStrategy(Type):
-    name = 'RetryStrategy'
-    version = 1
-    schema =     {'definitions': {'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'NotifyWatchResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'RetryStrategy': {'additionalProperties': False,
-                                       'properties': {'JitterRetryTime': {'type': 'boolean'},
-                                                      'MaxRetryTime': {'type': 'integer'},
-                                                      'MinRetryTime': {'type': 'integer'},
-                                                      'RetryTimeFactor': {'type': 'integer'},
-                                                      'ShouldRetry': {'type': 'boolean'}},
-                                       'required': ['ShouldRetry',
-                                                    'MinRetryTime',
-                                                    'MaxRetryTime',
-                                                    'JitterRetryTime',
-                                                    'RetryTimeFactor'],
-                                       'type': 'object'},
-                     'RetryStrategyResult': {'additionalProperties': False,
-                                             'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                            'Result': {'$ref': '#/definitions/RetryStrategy'}},
-                                             'required': ['Error', 'Result'],
-                                             'type': 'object'},
-                     'RetryStrategyResults': {'additionalProperties': False,
-                                              'properties': {'Results': {'items': {'$ref': '#/definitions/RetryStrategyResult'},
-                                                                         'type': 'array'}},
-                                              'required': ['Results'],
-                                              'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'RetryStrategy': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                     'Result': {'$ref': '#/definitions/RetryStrategyResults'}},
-                                      'type': 'object'},
-                    'WatchRetryStrategy': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                          'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                           'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(RetryStrategyResults)
-    async def RetryStrategy(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~RetryStrategyResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='RetryStrategy', Request='RetryStrategy', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchRetryStrategy(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='RetryStrategy', Request='WatchRetryStrategy', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class SSHClient(Type):
-    name = 'SSHClient'
-    version = 1
-    schema =     {'definitions': {'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'SSHAddressResult': {'additionalProperties': False,
-                                          'properties': {'address': {'type': 'string'},
-                                                         'error': {'$ref': '#/definitions/Error'}},
-                                          'type': 'object'},
-                     'SSHAddressResults': {'additionalProperties': False,
-                                           'properties': {'results': {'items': {'$ref': '#/definitions/SSHAddressResult'},
-                                                                      'type': 'array'}},
-                                           'required': ['results'],
-                                           'type': 'object'},
-                     'SSHProxyResult': {'additionalProperties': False,
-                                        'properties': {'use-proxy': {'type': 'boolean'}},
-                                        'required': ['use-proxy'],
-                                        'type': 'object'},
-                     'SSHPublicKeysResult': {'additionalProperties': False,
-                                             'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                            'public-keys': {'items': {'type': 'string'},
-                                                                            'type': 'array'}},
-                                             'type': 'object'},
-                     'SSHPublicKeysResults': {'additionalProperties': False,
-                                              'properties': {'results': {'items': {'$ref': '#/definitions/SSHPublicKeysResult'},
-                                                                         'type': 'array'}},
-                                              'required': ['results'],
-                                              'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'PrivateAddress': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                      'Result': {'$ref': '#/definitions/SSHAddressResults'}},
-                                       'type': 'object'},
-                    'Proxy': {'properties': {'Result': {'$ref': '#/definitions/SSHProxyResult'}},
-                              'type': 'object'},
-                    'PublicAddress': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                     'Result': {'$ref': '#/definitions/SSHAddressResults'}},
-                                      'type': 'object'},
-                    'PublicKeys': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                  'Result': {'$ref': '#/definitions/SSHPublicKeysResults'}},
-                                   'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(SSHAddressResults)
-    async def PrivateAddress(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~SSHAddressResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='SSHClient', Request='PrivateAddress', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(SSHProxyResult)
-    async def Proxy(self):
-        '''
-
-        Returns -> bool
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='SSHClient', Request='Proxy', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(SSHAddressResults)
-    async def PublicAddress(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~SSHAddressResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='SSHClient', Request='PublicAddress', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(SSHPublicKeysResults)
-    async def PublicKeys(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~SSHPublicKeysResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='SSHClient', Request='PublicKeys', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Service(Type):
-    name = 'Service'
-    version = 3
-    schema =     {'definitions': {'AddRelation': {'additionalProperties': False,
-                                     'properties': {'Endpoints': {'items': {'type': 'string'},
-                                                                  'type': 'array'}},
-                                     'required': ['Endpoints'],
-                                     'type': 'object'},
-                     'AddRelationResults': {'additionalProperties': False,
-                                            'properties': {'Endpoints': {'patternProperties': {'.*': {'$ref': '#/definitions/Relation'}},
-                                                                         'type': 'object'}},
-                                            'required': ['Endpoints'],
-                                            'type': 'object'},
-                     'AddServiceUnits': {'additionalProperties': False,
-                                         'properties': {'NumUnits': {'type': 'integer'},
-                                                        'Placement': {'items': {'$ref': '#/definitions/Placement'},
-                                                                      'type': 'array'},
-                                                        'ServiceName': {'type': 'string'}},
-                                         'required': ['ServiceName',
-                                                      'NumUnits',
-                                                      'Placement'],
-                                         'type': 'object'},
-                     'AddServiceUnitsResults': {'additionalProperties': False,
-                                                'properties': {'Units': {'items': {'type': 'string'},
-                                                                         'type': 'array'}},
-                                                'required': ['Units'],
-                                                'type': 'object'},
-                     'Constraints': {'additionalProperties': False,
-                                     'properties': {'Count': {'type': 'integer'},
-                                                    'Pool': {'type': 'string'},
-                                                    'Size': {'type': 'integer'}},
-                                     'required': ['Pool', 'Size', 'Count'],
-                                     'type': 'object'},
-                     'DestroyRelation': {'additionalProperties': False,
-                                         'properties': {'Endpoints': {'items': {'type': 'string'},
-                                                                      'type': 'array'}},
-                                         'required': ['Endpoints'],
-                                         'type': 'object'},
-                     'DestroyServiceUnits': {'additionalProperties': False,
-                                             'properties': {'UnitNames': {'items': {'type': 'string'},
-                                                                          'type': 'array'}},
-                                             'required': ['UnitNames'],
-                                             'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'GetConstraintsResults': {'additionalProperties': False,
-                                               'properties': {'Constraints': {'$ref': '#/definitions/Value'}},
-                                               'required': ['Constraints'],
-                                               'type': 'object'},
-                     'GetServiceConstraints': {'additionalProperties': False,
-                                               'properties': {'ServiceName': {'type': 'string'}},
-                                               'required': ['ServiceName'],
-                                               'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'Placement': {'additionalProperties': False,
-                                   'properties': {'Directive': {'type': 'string'},
-                                                  'Scope': {'type': 'string'}},
-                                   'required': ['Scope', 'Directive'],
-                                   'type': 'object'},
-                     'Relation': {'additionalProperties': False,
-                                  'properties': {'Interface': {'type': 'string'},
-                                                 'Limit': {'type': 'integer'},
-                                                 'Name': {'type': 'string'},
-                                                 'Optional': {'type': 'boolean'},
-                                                 'Role': {'type': 'string'},
-                                                 'Scope': {'type': 'string'}},
-                                  'required': ['Name',
-                                               'Role',
-                                               'Interface',
-                                               'Optional',
-                                               'Limit',
-                                               'Scope'],
-                                  'type': 'object'},
-                     'ServiceCharmRelations': {'additionalProperties': False,
-                                               'properties': {'ServiceName': {'type': 'string'}},
-                                               'required': ['ServiceName'],
-                                               'type': 'object'},
-                     'ServiceCharmRelationsResults': {'additionalProperties': False,
-                                                      'properties': {'CharmRelations': {'items': {'type': 'string'},
-                                                                                        'type': 'array'}},
-                                                      'required': ['CharmRelations'],
-                                                      'type': 'object'},
-                     'ServiceDeploy': {'additionalProperties': False,
-                                       'properties': {'Channel': {'type': 'string'},
-                                                      'CharmUrl': {'type': 'string'},
-                                                      'Config': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                 'type': 'object'},
-                                                      'ConfigYAML': {'type': 'string'},
-                                                      'Constraints': {'$ref': '#/definitions/Value'},
-                                                      'EndpointBindings': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                           'type': 'object'},
-                                                      'NumUnits': {'type': 'integer'},
-                                                      'Placement': {'items': {'$ref': '#/definitions/Placement'},
-                                                                    'type': 'array'},
-                                                      'Resources': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                    'type': 'object'},
-                                                      'Series': {'type': 'string'},
-                                                      'ServiceName': {'type': 'string'},
-                                                      'Storage': {'patternProperties': {'.*': {'$ref': '#/definitions/Constraints'}},
-                                                                  'type': 'object'}},
-                                       'required': ['ServiceName',
-                                                    'Series',
-                                                    'CharmUrl',
-                                                    'Channel',
-                                                    'NumUnits',
-                                                    'Config',
-                                                    'ConfigYAML',
-                                                    'Constraints',
-                                                    'Placement',
-                                                    'Storage',
-                                                    'EndpointBindings',
-                                                    'Resources'],
-                                       'type': 'object'},
-                     'ServiceDestroy': {'additionalProperties': False,
-                                        'properties': {'ServiceName': {'type': 'string'}},
-                                        'required': ['ServiceName'],
-                                        'type': 'object'},
-                     'ServiceExpose': {'additionalProperties': False,
-                                       'properties': {'ServiceName': {'type': 'string'}},
-                                       'required': ['ServiceName'],
-                                       'type': 'object'},
-                     'ServiceGet': {'additionalProperties': False,
-                                    'properties': {'ServiceName': {'type': 'string'}},
-                                    'required': ['ServiceName'],
-                                    'type': 'object'},
-                     'ServiceGetResults': {'additionalProperties': False,
-                                           'properties': {'Charm': {'type': 'string'},
-                                                          'Config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                  'type': 'object'}},
-                                                                     'type': 'object'},
-                                                          'Constraints': {'$ref': '#/definitions/Value'},
-                                                          'Service': {'type': 'string'}},
-                                           'required': ['Service',
-                                                        'Charm',
-                                                        'Config',
-                                                        'Constraints'],
-                                           'type': 'object'},
-                     'ServiceMetricCredential': {'additionalProperties': False,
-                                                 'properties': {'MetricCredentials': {'items': {'type': 'integer'},
-                                                                                      'type': 'array'},
-                                                                'ServiceName': {'type': 'string'}},
-                                                 'required': ['ServiceName',
-                                                              'MetricCredentials'],
-                                                 'type': 'object'},
-                     'ServiceMetricCredentials': {'additionalProperties': False,
-                                                  'properties': {'Creds': {'items': {'$ref': '#/definitions/ServiceMetricCredential'},
-                                                                           'type': 'array'}},
-                                                  'required': ['Creds'],
-                                                  'type': 'object'},
-                     'ServiceSet': {'additionalProperties': False,
-                                    'properties': {'Options': {'patternProperties': {'.*': {'type': 'string'}},
-                                                               'type': 'object'},
-                                                   'ServiceName': {'type': 'string'}},
-                                    'required': ['ServiceName', 'Options'],
-                                    'type': 'object'},
-                     'ServiceSetCharm': {'additionalProperties': False,
-                                         'properties': {'charmurl': {'type': 'string'},
-                                                        'cs-channel': {'type': 'string'},
-                                                        'forceseries': {'type': 'boolean'},
-                                                        'forceunits': {'type': 'boolean'},
-                                                        'resourceids': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                        'type': 'object'},
-                                                        'servicename': {'type': 'string'}},
-                                         'required': ['servicename',
-                                                      'charmurl',
-                                                      'cs-channel',
-                                                      'forceunits',
-                                                      'forceseries',
-                                                      'resourceids'],
-                                         'type': 'object'},
-                     'ServiceUnexpose': {'additionalProperties': False,
-                                         'properties': {'ServiceName': {'type': 'string'}},
-                                         'required': ['ServiceName'],
-                                         'type': 'object'},
-                     'ServiceUnset': {'additionalProperties': False,
-                                      'properties': {'Options': {'items': {'type': 'string'},
-                                                                 'type': 'array'},
-                                                     'ServiceName': {'type': 'string'}},
-                                      'required': ['ServiceName', 'Options'],
-                                      'type': 'object'},
-                     'ServiceUpdate': {'additionalProperties': False,
-                                       'properties': {'CharmUrl': {'type': 'string'},
-                                                      'Constraints': {'$ref': '#/definitions/Value'},
-                                                      'ForceCharmUrl': {'type': 'boolean'},
-                                                      'ForceSeries': {'type': 'boolean'},
-                                                      'MinUnits': {'type': 'integer'},
-                                                      'ServiceName': {'type': 'string'},
-                                                      'SettingsStrings': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                          'type': 'object'},
-                                                      'SettingsYAML': {'type': 'string'}},
-                                       'required': ['ServiceName',
-                                                    'CharmUrl',
-                                                    'ForceCharmUrl',
-                                                    'ForceSeries',
-                                                    'MinUnits',
-                                                    'SettingsStrings',
-                                                    'SettingsYAML',
-                                                    'Constraints'],
-                                       'type': 'object'},
-                     'ServicesDeploy': {'additionalProperties': False,
-                                        'properties': {'Services': {'items': {'$ref': '#/definitions/ServiceDeploy'},
-                                                                    'type': 'array'}},
-                                        'required': ['Services'],
-                                        'type': 'object'},
-                     'SetConstraints': {'additionalProperties': False,
-                                        'properties': {'Constraints': {'$ref': '#/definitions/Value'},
-                                                       'ServiceName': {'type': 'string'}},
-                                        'required': ['ServiceName', 'Constraints'],
-                                        'type': 'object'},
-                     'StringResult': {'additionalProperties': False,
-                                      'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                     'Result': {'type': 'string'}},
-                                      'required': ['Error', 'Result'],
-                                      'type': 'object'},
-                     'Value': {'additionalProperties': False,
-                               'properties': {'arch': {'type': 'string'},
-                                              'container': {'type': 'string'},
-                                              'cpu-cores': {'type': 'integer'},
-                                              'cpu-power': {'type': 'integer'},
-                                              'instance-type': {'type': 'string'},
-                                              'mem': {'type': 'integer'},
-                                              'root-disk': {'type': 'integer'},
-                                              'spaces': {'items': {'type': 'string'},
-                                                         'type': 'array'},
-                                              'tags': {'items': {'type': 'string'},
-                                                       'type': 'array'},
-                                              'virt-type': {'type': 'string'}},
-                               'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'AddRelation': {'properties': {'Params': {'$ref': '#/definitions/AddRelation'},
-                                                   'Result': {'$ref': '#/definitions/AddRelationResults'}},
-                                    'type': 'object'},
-                    'AddUnits': {'properties': {'Params': {'$ref': '#/definitions/AddServiceUnits'},
-                                                'Result': {'$ref': '#/definitions/AddServiceUnitsResults'}},
-                                 'type': 'object'},
-                    'CharmRelations': {'properties': {'Params': {'$ref': '#/definitions/ServiceCharmRelations'},
-                                                      'Result': {'$ref': '#/definitions/ServiceCharmRelationsResults'}},
-                                       'type': 'object'},
-                    'Deploy': {'properties': {'Params': {'$ref': '#/definitions/ServicesDeploy'},
-                                              'Result': {'$ref': '#/definitions/ErrorResults'}},
-                               'type': 'object'},
-                    'Destroy': {'properties': {'Params': {'$ref': '#/definitions/ServiceDestroy'}},
-                                'type': 'object'},
-                    'DestroyRelation': {'properties': {'Params': {'$ref': '#/definitions/DestroyRelation'}},
-                                        'type': 'object'},
-                    'DestroyUnits': {'properties': {'Params': {'$ref': '#/definitions/DestroyServiceUnits'}},
-                                     'type': 'object'},
-                    'Expose': {'properties': {'Params': {'$ref': '#/definitions/ServiceExpose'}},
-                               'type': 'object'},
-                    'Get': {'properties': {'Params': {'$ref': '#/definitions/ServiceGet'},
-                                           'Result': {'$ref': '#/definitions/ServiceGetResults'}},
-                            'type': 'object'},
-                    'GetCharmURL': {'properties': {'Params': {'$ref': '#/definitions/ServiceGet'},
-                                                   'Result': {'$ref': '#/definitions/StringResult'}},
-                                    'type': 'object'},
-                    'GetConstraints': {'properties': {'Params': {'$ref': '#/definitions/GetServiceConstraints'},
-                                                      'Result': {'$ref': '#/definitions/GetConstraintsResults'}},
-                                       'type': 'object'},
-                    'Set': {'properties': {'Params': {'$ref': '#/definitions/ServiceSet'}},
-                            'type': 'object'},
-                    'SetCharm': {'properties': {'Params': {'$ref': '#/definitions/ServiceSetCharm'}},
-                                 'type': 'object'},
-                    'SetConstraints': {'properties': {'Params': {'$ref': '#/definitions/SetConstraints'}},
-                                       'type': 'object'},
-                    'SetMetricCredentials': {'properties': {'Params': {'$ref': '#/definitions/ServiceMetricCredentials'},
-                                                            'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                             'type': 'object'},
-                    'Unexpose': {'properties': {'Params': {'$ref': '#/definitions/ServiceUnexpose'}},
-                                 'type': 'object'},
-                    'Unset': {'properties': {'Params': {'$ref': '#/definitions/ServiceUnset'}},
-                              'type': 'object'},
-                    'Update': {'properties': {'Params': {'$ref': '#/definitions/ServiceUpdate'}},
-                               'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(AddRelationResults)
-    async def AddRelation(self, endpoints):
-        '''
-        endpoints : typing.Sequence[str]
-        Returns -> typing.Mapping[str, ~Relation]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='AddRelation', Version=3, Params=params)
-        params['Endpoints'] = endpoints
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(AddServiceUnitsResults)
-    async def AddUnits(self, numunits, placement, servicename):
-        '''
-        numunits : int
-        placement : typing.Sequence[~Placement]
-        servicename : str
-        Returns -> typing.Sequence[str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='AddUnits', Version=3, Params=params)
-        params['NumUnits'] = numunits
-        params['Placement'] = placement
-        params['ServiceName'] = servicename
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ServiceCharmRelationsResults)
-    async def CharmRelations(self, servicename):
-        '''
-        servicename : str
-        Returns -> typing.Sequence[str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='CharmRelations', Version=3, Params=params)
-        params['ServiceName'] = servicename
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Deploy(self, services):
-        '''
-        services : typing.Sequence[~ServiceDeploy]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='Deploy', Version=3, Params=params)
-        params['Services'] = services
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Destroy(self, servicename):
-        '''
-        servicename : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='Destroy', Version=3, Params=params)
-        params['ServiceName'] = servicename
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def DestroyRelation(self, endpoints):
-        '''
-        endpoints : typing.Sequence[str]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='DestroyRelation', Version=3, Params=params)
-        params['Endpoints'] = endpoints
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def DestroyUnits(self, unitnames):
-        '''
-        unitnames : typing.Sequence[str]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='DestroyUnits', Version=3, Params=params)
-        params['UnitNames'] = unitnames
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Expose(self, servicename):
-        '''
-        servicename : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='Expose', Version=3, Params=params)
-        params['ServiceName'] = servicename
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ServiceGetResults)
-    async def Get(self, servicename):
-        '''
-        servicename : str
-        Returns -> typing.Union[str, typing.Mapping[str, typing.Any], _ForwardRef('Value')]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='Get', Version=3, Params=params)
-        params['ServiceName'] = servicename
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResult)
-    async def GetCharmURL(self, servicename):
-        '''
-        servicename : str
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='GetCharmURL', Version=3, Params=params)
-        params['ServiceName'] = servicename
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(GetConstraintsResults)
-    async def GetConstraints(self, servicename):
-        '''
-        servicename : str
-        Returns -> Value
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='GetConstraints', Version=3, Params=params)
-        params['ServiceName'] = servicename
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Set(self, options, servicename):
-        '''
-        options : typing.Mapping[str, str]
-        servicename : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='Set', Version=3, Params=params)
-        params['Options'] = options
-        params['ServiceName'] = servicename
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def SetCharm(self, charmurl, cs_channel, forceseries, forceunits, resourceids, servicename):
-        '''
-        charmurl : str
-        cs_channel : str
-        forceseries : bool
-        forceunits : bool
-        resourceids : typing.Mapping[str, str]
-        servicename : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='SetCharm', Version=3, Params=params)
-        params['charmurl'] = charmurl
-        params['cs-channel'] = cs_channel
-        params['forceseries'] = forceseries
-        params['forceunits'] = forceunits
-        params['resourceids'] = resourceids
-        params['servicename'] = servicename
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def SetConstraints(self, constraints, servicename):
-        '''
-        constraints : Value
-        servicename : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='SetConstraints', Version=3, Params=params)
-        params['Constraints'] = constraints
-        params['ServiceName'] = servicename
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetMetricCredentials(self, creds):
-        '''
-        creds : typing.Sequence[~ServiceMetricCredential]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='SetMetricCredentials', Version=3, Params=params)
-        params['Creds'] = creds
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Unexpose(self, servicename):
-        '''
-        servicename : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='Unexpose', Version=3, Params=params)
-        params['ServiceName'] = servicename
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Unset(self, options, servicename):
-        '''
-        options : typing.Sequence[str]
-        servicename : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='Unset', Version=3, Params=params)
-        params['Options'] = options
-        params['ServiceName'] = servicename
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Update(self, charmurl, constraints, forcecharmurl, forceseries, minunits, servicename, settingsstrings, settingsyaml):
-        '''
-        charmurl : str
-        constraints : Value
-        forcecharmurl : bool
-        forceseries : bool
-        minunits : int
-        servicename : str
-        settingsstrings : typing.Mapping[str, str]
-        settingsyaml : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Service', Request='Update', Version=3, Params=params)
-        params['CharmUrl'] = charmurl
-        params['Constraints'] = constraints
-        params['ForceCharmUrl'] = forcecharmurl
-        params['ForceSeries'] = forceseries
-        params['MinUnits'] = minunits
-        params['ServiceName'] = servicename
-        params['SettingsStrings'] = settingsstrings
-        params['SettingsYAML'] = settingsyaml
-        reply = await self.rpc(msg)
-        return reply
-
-
-class ServiceScaler(Type):
-    name = 'ServiceScaler'
-    version = 1
-    schema =     {'definitions': {'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'StringsWatchResult': {'additionalProperties': False,
-                                            'properties': {'Changes': {'items': {'type': 'string'},
-                                                                       'type': 'array'},
-                                                           'Error': {'$ref': '#/definitions/Error'},
-                                                           'StringsWatcherId': {'type': 'string'}},
-                                            'required': ['StringsWatcherId',
-                                                         'Changes',
-                                                         'Error'],
-                                            'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'Rescale': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                               'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                'type': 'object'},
-                    'Watch': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
-                              'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResults)
-    async def Rescale(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='ServiceScaler', Request='Rescale', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResult)
-    async def Watch(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error')]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='ServiceScaler', Request='Watch', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Singular(Type):
-    name = 'Singular'
-    version = 1
-    schema =     {'definitions': {'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'SingularClaim': {'additionalProperties': False,
-                                       'properties': {'ControllerTag': {'type': 'string'},
-                                                      'Duration': {'type': 'integer'},
-                                                      'ModelTag': {'type': 'string'}},
-                                       'required': ['ModelTag',
-                                                    'ControllerTag',
-                                                    'Duration'],
-                                       'type': 'object'},
-                     'SingularClaims': {'additionalProperties': False,
-                                        'properties': {'Claims': {'items': {'$ref': '#/definitions/SingularClaim'},
-                                                                  'type': 'array'}},
-                                        'required': ['Claims'],
-                                        'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'Claim': {'properties': {'Params': {'$ref': '#/definitions/SingularClaims'},
-                                             'Result': {'$ref': '#/definitions/ErrorResults'}},
-                              'type': 'object'},
-                    'Wait': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                            'Result': {'$ref': '#/definitions/ErrorResults'}},
-                             'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResults)
-    async def Claim(self, claims):
-        '''
-        claims : typing.Sequence[~SingularClaim]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Singular', Request='Claim', Version=1, Params=params)
-        params['Claims'] = claims
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Wait(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Singular', Request='Wait', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Spaces(Type):
-    name = 'Spaces'
-    version = 2
-    schema =     {'definitions': {'CreateSpaceParams': {'additionalProperties': False,
-                                           'properties': {'ProviderId': {'type': 'string'},
-                                                          'Public': {'type': 'boolean'},
-                                                          'SpaceTag': {'type': 'string'},
-                                                          'SubnetTags': {'items': {'type': 'string'},
-                                                                         'type': 'array'}},
-                                           'required': ['SubnetTags',
-                                                        'SpaceTag',
-                                                        'Public'],
-                                           'type': 'object'},
-                     'CreateSpacesParams': {'additionalProperties': False,
-                                            'properties': {'Spaces': {'items': {'$ref': '#/definitions/CreateSpaceParams'},
-                                                                      'type': 'array'}},
-                                            'required': ['Spaces'],
-                                            'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'ListSpacesResults': {'additionalProperties': False,
-                                           'properties': {'Results': {'items': {'$ref': '#/definitions/Space'},
-                                                                      'type': 'array'}},
-                                           'required': ['Results'],
-                                           'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'Space': {'additionalProperties': False,
-                               'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                              'Name': {'type': 'string'},
-                                              'Subnets': {'items': {'$ref': '#/definitions/Subnet'},
-                                                          'type': 'array'}},
-                               'required': ['Name', 'Subnets'],
-                               'type': 'object'},
-                     'Subnet': {'additionalProperties': False,
-                                'properties': {'CIDR': {'type': 'string'},
-                                               'Life': {'type': 'string'},
-                                               'ProviderId': {'type': 'string'},
-                                               'SpaceTag': {'type': 'string'},
-                                               'StaticRangeHighIP': {'items': {'type': 'integer'},
-                                                                     'type': 'array'},
-                                               'StaticRangeLowIP': {'items': {'type': 'integer'},
-                                                                    'type': 'array'},
-                                               'Status': {'type': 'string'},
-                                               'VLANTag': {'type': 'integer'},
-                                               'Zones': {'items': {'type': 'string'},
-                                                         'type': 'array'}},
-                                'required': ['CIDR',
-                                             'VLANTag',
-                                             'Life',
-                                             'SpaceTag',
-                                             'Zones'],
-                                'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'CreateSpaces': {'properties': {'Params': {'$ref': '#/definitions/CreateSpacesParams'},
-                                                    'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                     'type': 'object'},
-                    'ListSpaces': {'properties': {'Result': {'$ref': '#/definitions/ListSpacesResults'}},
-                                   'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResults)
-    async def CreateSpaces(self, spaces):
-        '''
-        spaces : typing.Sequence[~CreateSpaceParams]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Spaces', Request='CreateSpaces', Version=2, Params=params)
-        params['Spaces'] = spaces
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ListSpacesResults)
-    async def ListSpaces(self):
-        '''
-
-        Returns -> typing.Sequence[~Space]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Spaces', Request='ListSpaces', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class StatusHistory(Type):
-    name = 'StatusHistory'
-    version = 2
-    schema =     {'definitions': {'StatusHistoryPruneArgs': {'additionalProperties': False,
-                                                'properties': {'MaxLogsPerEntity': {'type': 'integer'}},
-                                                'required': ['MaxLogsPerEntity'],
-                                                'type': 'object'}},
-     'properties': {'Prune': {'properties': {'Params': {'$ref': '#/definitions/StatusHistoryPruneArgs'}},
-                              'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(None)
-    async def Prune(self, maxlogsperentity):
-        '''
-        maxlogsperentity : int
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StatusHistory', Request='Prune', Version=2, Params=params)
-        params['MaxLogsPerEntity'] = maxlogsperentity
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Storage(Type):
-    name = 'Storage'
-    version = 2
-    schema =     {'definitions': {'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'EntityStatus': {'additionalProperties': False,
-                                      'properties': {'Data': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                           'type': 'object'}},
-                                                              'type': 'object'},
-                                                     'Info': {'type': 'string'},
-                                                     'Since': {'format': 'date-time',
-                                                               'type': 'string'},
-                                                     'Status': {'type': 'string'}},
-                                      'required': ['Status',
-                                                   'Info',
-                                                   'Data',
-                                                   'Since'],
-                                      'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'FilesystemAttachmentInfo': {'additionalProperties': False,
-                                                  'properties': {'mountpoint': {'type': 'string'},
-                                                                 'read-only': {'type': 'boolean'}},
-                                                  'type': 'object'},
-                     'FilesystemDetails': {'additionalProperties': False,
-                                           'properties': {'filesystemtag': {'type': 'string'},
-                                                          'info': {'$ref': '#/definitions/FilesystemInfo'},
-                                                          'machineattachments': {'patternProperties': {'.*': {'$ref': '#/definitions/FilesystemAttachmentInfo'}},
-                                                                                 'type': 'object'},
-                                                          'status': {'$ref': '#/definitions/EntityStatus'},
-                                                          'storage': {'$ref': '#/definitions/StorageDetails'},
-                                                          'volumetag': {'type': 'string'}},
-                                           'required': ['filesystemtag',
-                                                        'info',
-                                                        'status'],
-                                           'type': 'object'},
-                     'FilesystemDetailsListResult': {'additionalProperties': False,
-                                                     'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                    'result': {'items': {'$ref': '#/definitions/FilesystemDetails'},
-                                                                               'type': 'array'}},
-                                                     'type': 'object'},
-                     'FilesystemDetailsListResults': {'additionalProperties': False,
-                                                      'properties': {'results': {'items': {'$ref': '#/definitions/FilesystemDetailsListResult'},
-                                                                                 'type': 'array'}},
-                                                      'type': 'object'},
-                     'FilesystemFilter': {'additionalProperties': False,
-                                          'properties': {'machines': {'items': {'type': 'string'},
-                                                                      'type': 'array'}},
-                                          'type': 'object'},
-                     'FilesystemFilters': {'additionalProperties': False,
-                                           'properties': {'filters': {'items': {'$ref': '#/definitions/FilesystemFilter'},
-                                                                      'type': 'array'}},
-                                           'type': 'object'},
-                     'FilesystemInfo': {'additionalProperties': False,
-                                        'properties': {'filesystemid': {'type': 'string'},
-                                                       'size': {'type': 'integer'}},
-                                        'required': ['filesystemid', 'size'],
-                                        'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'StorageAddParams': {'additionalProperties': False,
-                                          'properties': {'StorageName': {'type': 'string'},
-                                                         'storage': {'$ref': '#/definitions/StorageConstraints'},
-                                                         'unit': {'type': 'string'}},
-                                          'required': ['unit',
-                                                       'StorageName',
-                                                       'storage'],
-                                          'type': 'object'},
-                     'StorageAttachmentDetails': {'additionalProperties': False,
-                                                  'properties': {'location': {'type': 'string'},
-                                                                 'machinetag': {'type': 'string'},
-                                                                 'storagetag': {'type': 'string'},
-                                                                 'unittag': {'type': 'string'}},
-                                                  'required': ['storagetag',
-                                                               'unittag',
-                                                               'machinetag'],
-                                                  'type': 'object'},
-                     'StorageConstraints': {'additionalProperties': False,
-                                            'properties': {'Count': {'type': 'integer'},
-                                                           'Pool': {'type': 'string'},
-                                                           'Size': {'type': 'integer'}},
-                                            'required': ['Pool', 'Size', 'Count'],
-                                            'type': 'object'},
-                     'StorageDetails': {'additionalProperties': False,
-                                        'properties': {'Persistent': {'type': 'boolean'},
-                                                       'attachments': {'patternProperties': {'.*': {'$ref': '#/definitions/StorageAttachmentDetails'}},
-                                                                       'type': 'object'},
-                                                       'kind': {'type': 'integer'},
-                                                       'ownertag': {'type': 'string'},
-                                                       'status': {'$ref': '#/definitions/EntityStatus'},
-                                                       'storagetag': {'type': 'string'}},
-                                        'required': ['storagetag',
-                                                     'ownertag',
-                                                     'kind',
-                                                     'status',
-                                                     'Persistent'],
-                                        'type': 'object'},
-                     'StorageDetailsListResult': {'additionalProperties': False,
-                                                  'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                 'result': {'items': {'$ref': '#/definitions/StorageDetails'},
-                                                                            'type': 'array'}},
-                                                  'type': 'object'},
-                     'StorageDetailsListResults': {'additionalProperties': False,
-                                                   'properties': {'results': {'items': {'$ref': '#/definitions/StorageDetailsListResult'},
-                                                                              'type': 'array'}},
-                                                   'type': 'object'},
-                     'StorageDetailsResult': {'additionalProperties': False,
-                                              'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                             'result': {'$ref': '#/definitions/StorageDetails'}},
-                                              'type': 'object'},
-                     'StorageDetailsResults': {'additionalProperties': False,
-                                               'properties': {'results': {'items': {'$ref': '#/definitions/StorageDetailsResult'},
-                                                                          'type': 'array'}},
-                                               'type': 'object'},
-                     'StorageFilter': {'additionalProperties': False,
-                                       'type': 'object'},
-                     'StorageFilters': {'additionalProperties': False,
-                                        'properties': {'filters': {'items': {'$ref': '#/definitions/StorageFilter'},
-                                                                   'type': 'array'}},
-                                        'type': 'object'},
-                     'StoragePool': {'additionalProperties': False,
-                                     'properties': {'attrs': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                           'type': 'object'}},
-                                                              'type': 'object'},
-                                                    'name': {'type': 'string'},
-                                                    'provider': {'type': 'string'}},
-                                     'required': ['name', 'provider', 'attrs'],
-                                     'type': 'object'},
-                     'StoragePoolFilter': {'additionalProperties': False,
-                                           'properties': {'names': {'items': {'type': 'string'},
-                                                                    'type': 'array'},
-                                                          'providers': {'items': {'type': 'string'},
-                                                                        'type': 'array'}},
-                                           'type': 'object'},
-                     'StoragePoolFilters': {'additionalProperties': False,
-                                            'properties': {'filters': {'items': {'$ref': '#/definitions/StoragePoolFilter'},
-                                                                       'type': 'array'}},
-                                            'type': 'object'},
-                     'StoragePoolsResult': {'additionalProperties': False,
-                                            'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                           'storagepools': {'items': {'$ref': '#/definitions/StoragePool'},
-                                                                            'type': 'array'}},
-                                            'type': 'object'},
-                     'StoragePoolsResults': {'additionalProperties': False,
-                                             'properties': {'results': {'items': {'$ref': '#/definitions/StoragePoolsResult'},
-                                                                        'type': 'array'}},
-                                             'type': 'object'},
-                     'StoragesAddParams': {'additionalProperties': False,
-                                           'properties': {'storages': {'items': {'$ref': '#/definitions/StorageAddParams'},
-                                                                       'type': 'array'}},
-                                           'required': ['storages'],
-                                           'type': 'object'},
-                     'VolumeAttachmentInfo': {'additionalProperties': False,
-                                              'properties': {'busaddress': {'type': 'string'},
-                                                             'devicelink': {'type': 'string'},
-                                                             'devicename': {'type': 'string'},
-                                                             'read-only': {'type': 'boolean'}},
-                                              'type': 'object'},
-                     'VolumeDetails': {'additionalProperties': False,
-                                       'properties': {'info': {'$ref': '#/definitions/VolumeInfo'},
-                                                      'machineattachments': {'patternProperties': {'.*': {'$ref': '#/definitions/VolumeAttachmentInfo'}},
-                                                                             'type': 'object'},
-                                                      'status': {'$ref': '#/definitions/EntityStatus'},
-                                                      'storage': {'$ref': '#/definitions/StorageDetails'},
-                                                      'volumetag': {'type': 'string'}},
-                                       'required': ['volumetag', 'info', 'status'],
-                                       'type': 'object'},
-                     'VolumeDetailsListResult': {'additionalProperties': False,
-                                                 'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                'result': {'items': {'$ref': '#/definitions/VolumeDetails'},
-                                                                           'type': 'array'}},
-                                                 'type': 'object'},
-                     'VolumeDetailsListResults': {'additionalProperties': False,
-                                                  'properties': {'results': {'items': {'$ref': '#/definitions/VolumeDetailsListResult'},
-                                                                             'type': 'array'}},
-                                                  'type': 'object'},
-                     'VolumeFilter': {'additionalProperties': False,
-                                      'properties': {'machines': {'items': {'type': 'string'},
-                                                                  'type': 'array'}},
-                                      'type': 'object'},
-                     'VolumeFilters': {'additionalProperties': False,
-                                       'properties': {'filters': {'items': {'$ref': '#/definitions/VolumeFilter'},
-                                                                  'type': 'array'}},
-                                       'type': 'object'},
-                     'VolumeInfo': {'additionalProperties': False,
-                                    'properties': {'hardwareid': {'type': 'string'},
-                                                   'persistent': {'type': 'boolean'},
-                                                   'size': {'type': 'integer'},
-                                                   'volumeid': {'type': 'string'}},
-                                    'required': ['volumeid', 'size', 'persistent'],
-                                    'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'AddToUnit': {'properties': {'Params': {'$ref': '#/definitions/StoragesAddParams'},
-                                                 'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                  'type': 'object'},
-                    'CreatePool': {'properties': {'Params': {'$ref': '#/definitions/StoragePool'}},
-                                   'type': 'object'},
-                    'ListFilesystems': {'properties': {'Params': {'$ref': '#/definitions/FilesystemFilters'},
-                                                       'Result': {'$ref': '#/definitions/FilesystemDetailsListResults'}},
-                                        'type': 'object'},
-                    'ListPools': {'properties': {'Params': {'$ref': '#/definitions/StoragePoolFilters'},
-                                                 'Result': {'$ref': '#/definitions/StoragePoolsResults'}},
-                                  'type': 'object'},
-                    'ListStorageDetails': {'properties': {'Params': {'$ref': '#/definitions/StorageFilters'},
-                                                          'Result': {'$ref': '#/definitions/StorageDetailsListResults'}},
-                                           'type': 'object'},
-                    'ListVolumes': {'properties': {'Params': {'$ref': '#/definitions/VolumeFilters'},
-                                                   'Result': {'$ref': '#/definitions/VolumeDetailsListResults'}},
-                                    'type': 'object'},
-                    'StorageDetails': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                      'Result': {'$ref': '#/definitions/StorageDetailsResults'}},
-                                       'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResults)
-    async def AddToUnit(self, storages):
-        '''
-        storages : typing.Sequence[~StorageAddParams]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Storage', Request='AddToUnit', Version=2, Params=params)
-        params['storages'] = storages
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def CreatePool(self, attrs, name, provider):
-        '''
-        attrs : typing.Mapping[str, typing.Any]
-        name : str
-        provider : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Storage', Request='CreatePool', Version=2, Params=params)
-        params['attrs'] = attrs
-        params['name'] = name
-        params['provider'] = provider
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(FilesystemDetailsListResults)
-    async def ListFilesystems(self, filters):
-        '''
-        filters : typing.Sequence[~FilesystemFilter]
-        Returns -> typing.Sequence[~FilesystemDetailsListResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Storage', Request='ListFilesystems', Version=2, Params=params)
-        params['filters'] = filters
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StoragePoolsResults)
-    async def ListPools(self, filters):
-        '''
-        filters : typing.Sequence[~StoragePoolFilter]
-        Returns -> typing.Sequence[~StoragePoolsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Storage', Request='ListPools', Version=2, Params=params)
-        params['filters'] = filters
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StorageDetailsListResults)
-    async def ListStorageDetails(self, filters):
-        '''
-        filters : typing.Sequence[~StorageFilter]
-        Returns -> typing.Sequence[~StorageDetailsListResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Storage', Request='ListStorageDetails', Version=2, Params=params)
-        params['filters'] = filters
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(VolumeDetailsListResults)
-    async def ListVolumes(self, filters):
-        '''
-        filters : typing.Sequence[~VolumeFilter]
-        Returns -> typing.Sequence[~VolumeDetailsListResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Storage', Request='ListVolumes', Version=2, Params=params)
-        params['filters'] = filters
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StorageDetailsResults)
-    async def StorageDetails(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StorageDetailsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Storage', Request='StorageDetails', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class StorageProvisioner(Type):
-    name = 'StorageProvisioner'
-    version = 2
-    schema =     {'definitions': {'BlockDevice': {'additionalProperties': False,
-                                     'properties': {'BusAddress': {'type': 'string'},
-                                                    'DeviceLinks': {'items': {'type': 'string'},
-                                                                    'type': 'array'},
-                                                    'DeviceName': {'type': 'string'},
-                                                    'FilesystemType': {'type': 'string'},
-                                                    'HardwareId': {'type': 'string'},
-                                                    'InUse': {'type': 'boolean'},
-                                                    'Label': {'type': 'string'},
-                                                    'MountPoint': {'type': 'string'},
-                                                    'Size': {'type': 'integer'},
-                                                    'UUID': {'type': 'string'}},
-                                     'required': ['DeviceName',
-                                                  'DeviceLinks',
-                                                  'Label',
-                                                  'UUID',
-                                                  'HardwareId',
-                                                  'BusAddress',
-                                                  'Size',
-                                                  'FilesystemType',
-                                                  'InUse',
-                                                  'MountPoint'],
-                                     'type': 'object'},
-                     'BlockDeviceResult': {'additionalProperties': False,
-                                           'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                          'result': {'$ref': '#/definitions/BlockDevice'}},
-                                           'required': ['result'],
-                                           'type': 'object'},
-                     'BlockDeviceResults': {'additionalProperties': False,
-                                            'properties': {'results': {'items': {'$ref': '#/definitions/BlockDeviceResult'},
-                                                                       'type': 'array'}},
-                                            'type': 'object'},
-                     'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'EntityStatusArgs': {'additionalProperties': False,
-                                          'properties': {'Data': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                               'type': 'object'}},
-                                                                  'type': 'object'},
-                                                         'Info': {'type': 'string'},
-                                                         'Status': {'type': 'string'},
-                                                         'Tag': {'type': 'string'}},
-                                          'required': ['Tag',
-                                                       'Status',
-                                                       'Info',
-                                                       'Data'],
-                                          'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Filesystem': {'additionalProperties': False,
-                                    'properties': {'filesystemtag': {'type': 'string'},
-                                                   'info': {'$ref': '#/definitions/FilesystemInfo'},
-                                                   'volumetag': {'type': 'string'}},
-                                    'required': ['filesystemtag', 'info'],
-                                    'type': 'object'},
-                     'FilesystemAttachment': {'additionalProperties': False,
-                                              'properties': {'filesystemtag': {'type': 'string'},
-                                                             'info': {'$ref': '#/definitions/FilesystemAttachmentInfo'},
-                                                             'machinetag': {'type': 'string'}},
-                                              'required': ['filesystemtag',
-                                                           'machinetag',
-                                                           'info'],
-                                              'type': 'object'},
-                     'FilesystemAttachmentInfo': {'additionalProperties': False,
-                                                  'properties': {'mountpoint': {'type': 'string'},
-                                                                 'read-only': {'type': 'boolean'}},
-                                                  'type': 'object'},
-                     'FilesystemAttachmentParams': {'additionalProperties': False,
-                                                    'properties': {'filesystemid': {'type': 'string'},
-                                                                   'filesystemtag': {'type': 'string'},
-                                                                   'instanceid': {'type': 'string'},
-                                                                   'machinetag': {'type': 'string'},
-                                                                   'mountpoint': {'type': 'string'},
-                                                                   'provider': {'type': 'string'},
-                                                                   'read-only': {'type': 'boolean'}},
-                                                    'required': ['filesystemtag',
-                                                                 'machinetag',
-                                                                 'provider'],
-                                                    'type': 'object'},
-                     'FilesystemAttachmentParamsResult': {'additionalProperties': False,
-                                                          'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                         'result': {'$ref': '#/definitions/FilesystemAttachmentParams'}},
-                                                          'required': ['result'],
-                                                          'type': 'object'},
-                     'FilesystemAttachmentParamsResults': {'additionalProperties': False,
-                                                           'properties': {'results': {'items': {'$ref': '#/definitions/FilesystemAttachmentParamsResult'},
-                                                                                      'type': 'array'}},
-                                                           'type': 'object'},
-                     'FilesystemAttachmentResult': {'additionalProperties': False,
-                                                    'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                   'result': {'$ref': '#/definitions/FilesystemAttachment'}},
-                                                    'required': ['result'],
-                                                    'type': 'object'},
-                     'FilesystemAttachmentResults': {'additionalProperties': False,
-                                                     'properties': {'results': {'items': {'$ref': '#/definitions/FilesystemAttachmentResult'},
-                                                                                'type': 'array'}},
-                                                     'type': 'object'},
-                     'FilesystemAttachments': {'additionalProperties': False,
-                                               'properties': {'filesystemattachments': {'items': {'$ref': '#/definitions/FilesystemAttachment'},
-                                                                                        'type': 'array'}},
-                                               'required': ['filesystemattachments'],
-                                               'type': 'object'},
-                     'FilesystemInfo': {'additionalProperties': False,
-                                        'properties': {'filesystemid': {'type': 'string'},
-                                                       'size': {'type': 'integer'}},
-                                        'required': ['filesystemid', 'size'],
-                                        'type': 'object'},
-                     'FilesystemParams': {'additionalProperties': False,
-                                          'properties': {'attachment': {'$ref': '#/definitions/FilesystemAttachmentParams'},
-                                                         'attributes': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                     'type': 'object'}},
-                                                                        'type': 'object'},
-                                                         'filesystemtag': {'type': 'string'},
-                                                         'provider': {'type': 'string'},
-                                                         'size': {'type': 'integer'},
-                                                         'tags': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                  'type': 'object'},
-                                                         'volumetag': {'type': 'string'}},
-                                          'required': ['filesystemtag',
-                                                       'size',
-                                                       'provider'],
-                                          'type': 'object'},
-                     'FilesystemParamsResult': {'additionalProperties': False,
-                                                'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                               'result': {'$ref': '#/definitions/FilesystemParams'}},
-                                                'required': ['result'],
-                                                'type': 'object'},
-                     'FilesystemParamsResults': {'additionalProperties': False,
-                                                 'properties': {'results': {'items': {'$ref': '#/definitions/FilesystemParamsResult'},
-                                                                            'type': 'array'}},
-                                                 'type': 'object'},
-                     'FilesystemResult': {'additionalProperties': False,
-                                          'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                         'result': {'$ref': '#/definitions/Filesystem'}},
-                                          'required': ['result'],
-                                          'type': 'object'},
-                     'FilesystemResults': {'additionalProperties': False,
-                                           'properties': {'results': {'items': {'$ref': '#/definitions/FilesystemResult'},
-                                                                      'type': 'array'}},
-                                           'type': 'object'},
-                     'Filesystems': {'additionalProperties': False,
-                                     'properties': {'filesystems': {'items': {'$ref': '#/definitions/Filesystem'},
-                                                                    'type': 'array'}},
-                                     'required': ['filesystems'],
-                                     'type': 'object'},
-                     'LifeResult': {'additionalProperties': False,
-                                    'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                   'Life': {'type': 'string'}},
-                                    'required': ['Life', 'Error'],
-                                    'type': 'object'},
-                     'LifeResults': {'additionalProperties': False,
-                                     'properties': {'Results': {'items': {'$ref': '#/definitions/LifeResult'},
-                                                                'type': 'array'}},
-                                     'required': ['Results'],
-                                     'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'MachineStorageId': {'additionalProperties': False,
-                                          'properties': {'attachmenttag': {'type': 'string'},
-                                                         'machinetag': {'type': 'string'}},
-                                          'required': ['machinetag',
-                                                       'attachmenttag'],
-                                          'type': 'object'},
-                     'MachineStorageIds': {'additionalProperties': False,
-                                           'properties': {'ids': {'items': {'$ref': '#/definitions/MachineStorageId'},
-                                                                  'type': 'array'}},
-                                           'required': ['ids'],
-                                           'type': 'object'},
-                     'MachineStorageIdsWatchResult': {'additionalProperties': False,
-                                                      'properties': {'Changes': {'items': {'$ref': '#/definitions/MachineStorageId'},
-                                                                                 'type': 'array'},
-                                                                     'Error': {'$ref': '#/definitions/Error'},
-                                                                     'MachineStorageIdsWatcherId': {'type': 'string'}},
-                                                      'required': ['MachineStorageIdsWatcherId',
-                                                                   'Changes',
-                                                                   'Error'],
-                                                      'type': 'object'},
-                     'MachineStorageIdsWatchResults': {'additionalProperties': False,
-                                                       'properties': {'Results': {'items': {'$ref': '#/definitions/MachineStorageIdsWatchResult'},
-                                                                                  'type': 'array'}},
-                                                       'required': ['Results'],
-                                                       'type': 'object'},
-                     'ModelConfigResult': {'additionalProperties': False,
-                                           'properties': {'Config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                  'type': 'object'}},
-                                                                     'type': 'object'}},
-                                           'required': ['Config'],
-                                           'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'NotifyWatchResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'SetStatus': {'additionalProperties': False,
-                                   'properties': {'Entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'},
-                                                               'type': 'array'}},
-                                   'required': ['Entities'],
-                                   'type': 'object'},
-                     'StringResult': {'additionalProperties': False,
-                                      'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                     'Result': {'type': 'string'}},
-                                      'required': ['Error', 'Result'],
-                                      'type': 'object'},
-                     'StringResults': {'additionalProperties': False,
-                                       'properties': {'Results': {'items': {'$ref': '#/definitions/StringResult'},
-                                                                  'type': 'array'}},
-                                       'required': ['Results'],
-                                       'type': 'object'},
-                     'StringsWatchResult': {'additionalProperties': False,
-                                            'properties': {'Changes': {'items': {'type': 'string'},
-                                                                       'type': 'array'},
-                                                           'Error': {'$ref': '#/definitions/Error'},
-                                                           'StringsWatcherId': {'type': 'string'}},
-                                            'required': ['StringsWatcherId',
-                                                         'Changes',
-                                                         'Error'],
-                                            'type': 'object'},
-                     'StringsWatchResults': {'additionalProperties': False,
-                                             'properties': {'Results': {'items': {'$ref': '#/definitions/StringsWatchResult'},
-                                                                        'type': 'array'}},
-                                             'required': ['Results'],
-                                             'type': 'object'},
-                     'Volume': {'additionalProperties': False,
-                                'properties': {'info': {'$ref': '#/definitions/VolumeInfo'},
-                                               'volumetag': {'type': 'string'}},
-                                'required': ['volumetag', 'info'],
-                                'type': 'object'},
-                     'VolumeAttachment': {'additionalProperties': False,
-                                          'properties': {'info': {'$ref': '#/definitions/VolumeAttachmentInfo'},
-                                                         'machinetag': {'type': 'string'},
-                                                         'volumetag': {'type': 'string'}},
-                                          'required': ['volumetag',
-                                                       'machinetag',
-                                                       'info'],
-                                          'type': 'object'},
-                     'VolumeAttachmentInfo': {'additionalProperties': False,
-                                              'properties': {'busaddress': {'type': 'string'},
-                                                             'devicelink': {'type': 'string'},
-                                                             'devicename': {'type': 'string'},
-                                                             'read-only': {'type': 'boolean'}},
-                                              'type': 'object'},
-                     'VolumeAttachmentParams': {'additionalProperties': False,
-                                                'properties': {'instanceid': {'type': 'string'},
-                                                               'machinetag': {'type': 'string'},
-                                                               'provider': {'type': 'string'},
-                                                               'read-only': {'type': 'boolean'},
-                                                               'volumeid': {'type': 'string'},
-                                                               'volumetag': {'type': 'string'}},
-                                                'required': ['volumetag',
-                                                             'machinetag',
-                                                             'provider'],
-                                                'type': 'object'},
-                     'VolumeAttachmentParamsResult': {'additionalProperties': False,
-                                                      'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                     'result': {'$ref': '#/definitions/VolumeAttachmentParams'}},
-                                                      'required': ['result'],
-                                                      'type': 'object'},
-                     'VolumeAttachmentParamsResults': {'additionalProperties': False,
-                                                       'properties': {'results': {'items': {'$ref': '#/definitions/VolumeAttachmentParamsResult'},
-                                                                                  'type': 'array'}},
-                                                       'type': 'object'},
-                     'VolumeAttachmentResult': {'additionalProperties': False,
-                                                'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                               'result': {'$ref': '#/definitions/VolumeAttachment'}},
-                                                'required': ['result'],
-                                                'type': 'object'},
-                     'VolumeAttachmentResults': {'additionalProperties': False,
-                                                 'properties': {'results': {'items': {'$ref': '#/definitions/VolumeAttachmentResult'},
-                                                                            'type': 'array'}},
-                                                 'type': 'object'},
-                     'VolumeAttachments': {'additionalProperties': False,
-                                           'properties': {'volumeattachments': {'items': {'$ref': '#/definitions/VolumeAttachment'},
-                                                                                'type': 'array'}},
-                                           'required': ['volumeattachments'],
-                                           'type': 'object'},
-                     'VolumeInfo': {'additionalProperties': False,
-                                    'properties': {'hardwareid': {'type': 'string'},
-                                                   'persistent': {'type': 'boolean'},
-                                                   'size': {'type': 'integer'},
-                                                   'volumeid': {'type': 'string'}},
-                                    'required': ['volumeid', 'size', 'persistent'],
-                                    'type': 'object'},
-                     'VolumeParams': {'additionalProperties': False,
-                                      'properties': {'attachment': {'$ref': '#/definitions/VolumeAttachmentParams'},
-                                                     'attributes': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                 'type': 'object'}},
-                                                                    'type': 'object'},
-                                                     'provider': {'type': 'string'},
-                                                     'size': {'type': 'integer'},
-                                                     'tags': {'patternProperties': {'.*': {'type': 'string'}},
-                                                              'type': 'object'},
-                                                     'volumetag': {'type': 'string'}},
-                                      'required': ['volumetag', 'size', 'provider'],
-                                      'type': 'object'},
-                     'VolumeParamsResult': {'additionalProperties': False,
-                                            'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                           'result': {'$ref': '#/definitions/VolumeParams'}},
-                                            'required': ['result'],
-                                            'type': 'object'},
-                     'VolumeParamsResults': {'additionalProperties': False,
-                                             'properties': {'results': {'items': {'$ref': '#/definitions/VolumeParamsResult'},
-                                                                        'type': 'array'}},
-                                             'type': 'object'},
-                     'VolumeResult': {'additionalProperties': False,
-                                      'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                     'result': {'$ref': '#/definitions/Volume'}},
-                                      'required': ['result'],
-                                      'type': 'object'},
-                     'VolumeResults': {'additionalProperties': False,
-                                       'properties': {'results': {'items': {'$ref': '#/definitions/VolumeResult'},
-                                                                  'type': 'array'}},
-                                       'type': 'object'},
-                     'Volumes': {'additionalProperties': False,
-                                 'properties': {'volumes': {'items': {'$ref': '#/definitions/Volume'},
-                                                            'type': 'array'}},
-                                 'required': ['volumes'],
-                                 'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'AttachmentLife': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'},
-                                                      'Result': {'$ref': '#/definitions/LifeResults'}},
-                                       'type': 'object'},
-                    'EnsureDead': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                  'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                   'type': 'object'},
-                    'FilesystemAttachmentParams': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'},
-                                                                  'Result': {'$ref': '#/definitions/FilesystemAttachmentParamsResults'}},
-                                                   'type': 'object'},
-                    'FilesystemAttachments': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'},
-                                                             'Result': {'$ref': '#/definitions/FilesystemAttachmentResults'}},
-                                              'type': 'object'},
-                    'FilesystemParams': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                        'Result': {'$ref': '#/definitions/FilesystemParamsResults'}},
-                                         'type': 'object'},
-                    'Filesystems': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                   'Result': {'$ref': '#/definitions/FilesystemResults'}},
-                                    'type': 'object'},
-                    'InstanceId': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                  'Result': {'$ref': '#/definitions/StringResults'}},
-                                   'type': 'object'},
-                    'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                            'Result': {'$ref': '#/definitions/LifeResults'}},
-                             'type': 'object'},
-                    'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}},
-                                    'type': 'object'},
-                    'Remove': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                              'Result': {'$ref': '#/definitions/ErrorResults'}},
-                               'type': 'object'},
-                    'RemoveAttachment': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'},
-                                                        'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                         'type': 'object'},
-                    'SetFilesystemAttachmentInfo': {'properties': {'Params': {'$ref': '#/definitions/FilesystemAttachments'},
-                                                                   'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                    'type': 'object'},
-                    'SetFilesystemInfo': {'properties': {'Params': {'$ref': '#/definitions/Filesystems'},
-                                                         'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                          'type': 'object'},
-                    'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                 'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                  'type': 'object'},
-                    'SetVolumeAttachmentInfo': {'properties': {'Params': {'$ref': '#/definitions/VolumeAttachments'},
-                                                               'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                'type': 'object'},
-                    'SetVolumeInfo': {'properties': {'Params': {'$ref': '#/definitions/Volumes'},
-                                                     'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                      'type': 'object'},
-                    'UpdateStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                    'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                     'type': 'object'},
-                    'VolumeAttachmentParams': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'},
-                                                              'Result': {'$ref': '#/definitions/VolumeAttachmentParamsResults'}},
-                                               'type': 'object'},
-                    'VolumeAttachments': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'},
-                                                         'Result': {'$ref': '#/definitions/VolumeAttachmentResults'}},
-                                          'type': 'object'},
-                    'VolumeBlockDevices': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'},
-                                                          'Result': {'$ref': '#/definitions/BlockDeviceResults'}},
-                                           'type': 'object'},
-                    'VolumeParams': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                    'Result': {'$ref': '#/definitions/VolumeParamsResults'}},
-                                     'type': 'object'},
-                    'Volumes': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                               'Result': {'$ref': '#/definitions/VolumeResults'}},
-                                'type': 'object'},
-                    'WatchBlockDevices': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                         'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                          'type': 'object'},
-                    'WatchFilesystemAttachments': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                  'Result': {'$ref': '#/definitions/MachineStorageIdsWatchResults'}},
-                                                   'type': 'object'},
-                    'WatchFilesystems': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                        'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                         'type': 'object'},
-                    'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                                   'type': 'object'},
-                    'WatchMachines': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                     'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                      'type': 'object'},
-                    'WatchVolumeAttachments': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                              'Result': {'$ref': '#/definitions/MachineStorageIdsWatchResults'}},
-                                               'type': 'object'},
-                    'WatchVolumes': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                    'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                     'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(LifeResults)
-    async def AttachmentLife(self, ids):
-        '''
-        ids : typing.Sequence[~MachineStorageId]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='AttachmentLife', Version=2, Params=params)
-        params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def EnsureDead(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='EnsureDead', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(FilesystemAttachmentParamsResults)
-    async def FilesystemAttachmentParams(self, ids):
-        '''
-        ids : typing.Sequence[~MachineStorageId]
-        Returns -> typing.Sequence[~FilesystemAttachmentParamsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='FilesystemAttachmentParams', Version=2, Params=params)
-        params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(FilesystemAttachmentResults)
-    async def FilesystemAttachments(self, ids):
-        '''
-        ids : typing.Sequence[~MachineStorageId]
-        Returns -> typing.Sequence[~FilesystemAttachmentResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='FilesystemAttachments', Version=2, Params=params)
-        params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(FilesystemParamsResults)
-    async def FilesystemParams(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~FilesystemParamsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='FilesystemParams', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(FilesystemResults)
-    async def Filesystems(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~FilesystemResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='Filesystems', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def InstanceId(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='InstanceId', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LifeResults)
-    async def Life(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='Life', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelConfigResult)
-    async def ModelConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='ModelConfig', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Remove(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='Remove', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def RemoveAttachment(self, ids):
-        '''
-        ids : typing.Sequence[~MachineStorageId]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='RemoveAttachment', Version=2, Params=params)
-        params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetFilesystemAttachmentInfo(self, filesystemattachments):
-        '''
-        filesystemattachments : typing.Sequence[~FilesystemAttachment]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='SetFilesystemAttachmentInfo', Version=2, Params=params)
-        params['filesystemattachments'] = filesystemattachments
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetFilesystemInfo(self, filesystems):
-        '''
-        filesystems : typing.Sequence[~Filesystem]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='SetFilesystemInfo', Version=2, Params=params)
-        params['filesystems'] = filesystems
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='SetStatus', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetVolumeAttachmentInfo(self, volumeattachments):
-        '''
-        volumeattachments : typing.Sequence[~VolumeAttachment]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='SetVolumeAttachmentInfo', Version=2, Params=params)
-        params['volumeattachments'] = volumeattachments
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetVolumeInfo(self, volumes):
-        '''
-        volumes : typing.Sequence[~Volume]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='SetVolumeInfo', Version=2, Params=params)
-        params['volumes'] = volumes
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def UpdateStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='UpdateStatus', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(VolumeAttachmentParamsResults)
-    async def VolumeAttachmentParams(self, ids):
-        '''
-        ids : typing.Sequence[~MachineStorageId]
-        Returns -> typing.Sequence[~VolumeAttachmentParamsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='VolumeAttachmentParams', Version=2, Params=params)
-        params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(VolumeAttachmentResults)
-    async def VolumeAttachments(self, ids):
-        '''
-        ids : typing.Sequence[~MachineStorageId]
-        Returns -> typing.Sequence[~VolumeAttachmentResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='VolumeAttachments', Version=2, Params=params)
-        params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BlockDeviceResults)
-    async def VolumeBlockDevices(self, ids):
-        '''
-        ids : typing.Sequence[~MachineStorageId]
-        Returns -> typing.Sequence[~BlockDeviceResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='VolumeBlockDevices', Version=2, Params=params)
-        params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(VolumeParamsResults)
-    async def VolumeParams(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~VolumeParamsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='VolumeParams', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(VolumeResults)
-    async def Volumes(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~VolumeResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='Volumes', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchBlockDevices(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='WatchBlockDevices', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MachineStorageIdsWatchResults)
-    async def WatchFilesystemAttachments(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~MachineStorageIdsWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='WatchFilesystemAttachments', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchFilesystems(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='WatchFilesystems', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def WatchForModelConfigChanges(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='WatchForModelConfigChanges', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchMachines(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='WatchMachines', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MachineStorageIdsWatchResults)
-    async def WatchVolumeAttachments(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~MachineStorageIdsWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='WatchVolumeAttachments', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchVolumes(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StorageProvisioner', Request='WatchVolumes', Version=2, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class StringsWatcher(Type):
-    name = 'StringsWatcher'
-    version = 1
-    schema =     {'definitions': {'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'StringsWatchResult': {'additionalProperties': False,
-                                            'properties': {'Changes': {'items': {'type': 'string'},
-                                                                       'type': 'array'},
-                                                           'Error': {'$ref': '#/definitions/Error'},
-                                                           'StringsWatcherId': {'type': 'string'}},
-                                            'required': ['StringsWatcherId',
-                                                         'Changes',
-                                                         'Error'],
-                                            'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
-                             'type': 'object'},
-                    'Stop': {'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(StringsWatchResult)
-    async def Next(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error')]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StringsWatcher', Request='Next', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Stop(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='StringsWatcher', Request='Stop', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Subnets(Type):
-    name = 'Subnets'
-    version = 2
-    schema =     {'definitions': {'AddSubnetParams': {'additionalProperties': False,
-                                         'properties': {'SpaceTag': {'type': 'string'},
-                                                        'SubnetProviderId': {'type': 'string'},
-                                                        'SubnetTag': {'type': 'string'},
-                                                        'Zones': {'items': {'type': 'string'},
-                                                                  'type': 'array'}},
-                                         'required': ['SpaceTag'],
-                                         'type': 'object'},
-                     'AddSubnetsParams': {'additionalProperties': False,
-                                          'properties': {'Subnets': {'items': {'$ref': '#/definitions/AddSubnetParams'},
-                                                                     'type': 'array'}},
-                                          'required': ['Subnets'],
-                                          'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'ListSubnetsResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/Subnet'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'SpaceResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                    'Tag': {'type': 'string'}},
-                                     'required': ['Error', 'Tag'],
-                                     'type': 'object'},
-                     'SpaceResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/SpaceResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Subnet': {'additionalProperties': False,
-                                'properties': {'CIDR': {'type': 'string'},
-                                               'Life': {'type': 'string'},
-                                               'ProviderId': {'type': 'string'},
-                                               'SpaceTag': {'type': 'string'},
-                                               'StaticRangeHighIP': {'items': {'type': 'integer'},
-                                                                     'type': 'array'},
-                                               'StaticRangeLowIP': {'items': {'type': 'integer'},
-                                                                    'type': 'array'},
-                                               'Status': {'type': 'string'},
-                                               'VLANTag': {'type': 'integer'},
-                                               'Zones': {'items': {'type': 'string'},
-                                                         'type': 'array'}},
-                                'required': ['CIDR',
-                                             'VLANTag',
-                                             'Life',
-                                             'SpaceTag',
-                                             'Zones'],
-                                'type': 'object'},
-                     'SubnetsFilters': {'additionalProperties': False,
-                                        'properties': {'SpaceTag': {'type': 'string'},
-                                                       'Zone': {'type': 'string'}},
-                                        'type': 'object'},
-                     'ZoneResult': {'additionalProperties': False,
-                                    'properties': {'Available': {'type': 'boolean'},
-                                                   'Error': {'$ref': '#/definitions/Error'},
-                                                   'Name': {'type': 'string'}},
-                                    'required': ['Error', 'Name', 'Available'],
-                                    'type': 'object'},
-                     'ZoneResults': {'additionalProperties': False,
-                                     'properties': {'Results': {'items': {'$ref': '#/definitions/ZoneResult'},
-                                                                'type': 'array'}},
-                                     'required': ['Results'],
-                                     'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'AddSubnets': {'properties': {'Params': {'$ref': '#/definitions/AddSubnetsParams'},
-                                                  'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                   'type': 'object'},
-                    'AllSpaces': {'properties': {'Result': {'$ref': '#/definitions/SpaceResults'}},
-                                  'type': 'object'},
-                    'AllZones': {'properties': {'Result': {'$ref': '#/definitions/ZoneResults'}},
-                                 'type': 'object'},
-                    'ListSubnets': {'properties': {'Params': {'$ref': '#/definitions/SubnetsFilters'},
-                                                   'Result': {'$ref': '#/definitions/ListSubnetsResults'}},
-                                    'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResults)
-    async def AddSubnets(self, subnets):
-        '''
-        subnets : typing.Sequence[~AddSubnetParams]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Subnets', Request='AddSubnets', Version=2, Params=params)
-        params['Subnets'] = subnets
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(SpaceResults)
-    async def AllSpaces(self):
-        '''
-
-        Returns -> typing.Sequence[~SpaceResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Subnets', Request='AllSpaces', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ZoneResults)
-    async def AllZones(self):
-        '''
-
-        Returns -> typing.Sequence[~ZoneResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Subnets', Request='AllZones', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ListSubnetsResults)
-    async def ListSubnets(self, spacetag, zone):
-        '''
-        spacetag : str
-        zone : str
-        Returns -> typing.Sequence[~Subnet]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Subnets', Request='ListSubnets', Version=2, Params=params)
-        params['SpaceTag'] = spacetag
-        params['Zone'] = zone
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Undertaker(Type):
-    name = 'Undertaker'
-    version = 1
-    schema =     {'definitions': {'EntityStatusArgs': {'additionalProperties': False,
-                                          'properties': {'Data': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                               'type': 'object'}},
-                                                                  'type': 'object'},
-                                                         'Info': {'type': 'string'},
-                                                         'Status': {'type': 'string'},
-                                                         'Tag': {'type': 'string'}},
-                                          'required': ['Tag',
-                                                       'Status',
-                                                       'Info',
-                                                       'Data'],
-                                          'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'ModelConfigResult': {'additionalProperties': False,
-                                           'properties': {'Config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                  'type': 'object'}},
-                                                                     'type': 'object'}},
-                                           'required': ['Config'],
-                                           'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'NotifyWatchResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'SetStatus': {'additionalProperties': False,
-                                   'properties': {'Entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'},
-                                                               'type': 'array'}},
-                                   'required': ['Entities'],
-                                   'type': 'object'},
-                     'UndertakerModelInfo': {'additionalProperties': False,
-                                             'properties': {'GlobalName': {'type': 'string'},
-                                                            'IsSystem': {'type': 'boolean'},
-                                                            'Life': {'type': 'string'},
-                                                            'Name': {'type': 'string'},
-                                                            'UUID': {'type': 'string'}},
-                                             'required': ['UUID',
-                                                          'Name',
-                                                          'GlobalName',
-                                                          'IsSystem',
-                                                          'Life'],
-                                             'type': 'object'},
-                     'UndertakerModelInfoResult': {'additionalProperties': False,
-                                                   'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                                  'Result': {'$ref': '#/definitions/UndertakerModelInfo'}},
-                                                   'required': ['Error', 'Result'],
-                                                   'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}},
-                                    'type': 'object'},
-                    'ModelInfo': {'properties': {'Result': {'$ref': '#/definitions/UndertakerModelInfoResult'}},
-                                  'type': 'object'},
-                    'ProcessDyingModel': {'type': 'object'},
-                    'RemoveModel': {'type': 'object'},
-                    'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                 'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                  'type': 'object'},
-                    'UpdateStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                    'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                     'type': 'object'},
-                    'WatchModelResources': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                            'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ModelConfigResult)
-    async def ModelConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Undertaker', Request='ModelConfig', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(UndertakerModelInfoResult)
-    async def ModelInfo(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), _ForwardRef('UndertakerModelInfo')]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Undertaker', Request='ModelInfo', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def ProcessDyingModel(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Undertaker', Request='ProcessDyingModel', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def RemoveModel(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Undertaker', Request='RemoveModel', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Undertaker', Request='SetStatus', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def UpdateStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Undertaker', Request='UpdateStatus', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchModelResources(self):
-        '''
-
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Undertaker', Request='WatchModelResources', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class UnitAssigner(Type):
-    name = 'UnitAssigner'
-    version = 1
-    schema =     {'definitions': {'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'EntityStatusArgs': {'additionalProperties': False,
-                                          'properties': {'Data': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                               'type': 'object'}},
-                                                                  'type': 'object'},
-                                                         'Info': {'type': 'string'},
-                                                         'Status': {'type': 'string'},
-                                                         'Tag': {'type': 'string'}},
-                                          'required': ['Tag',
-                                                       'Status',
-                                                       'Info',
-                                                       'Data'],
-                                          'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'SetStatus': {'additionalProperties': False,
-                                   'properties': {'Entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'},
-                                                               'type': 'array'}},
-                                   'required': ['Entities'],
-                                   'type': 'object'},
-                     'StringsWatchResult': {'additionalProperties': False,
-                                            'properties': {'Changes': {'items': {'type': 'string'},
-                                                                       'type': 'array'},
-                                                           'Error': {'$ref': '#/definitions/Error'},
-                                                           'StringsWatcherId': {'type': 'string'}},
-                                            'required': ['StringsWatcherId',
-                                                         'Changes',
-                                                         'Error'],
-                                            'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'AssignUnits': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                   'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                    'type': 'object'},
-                    'SetAgentStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                      'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                       'type': 'object'},
-                    'WatchUnitAssignments': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
-                                             'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResults)
-    async def AssignUnits(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='UnitAssigner', Request='AssignUnits', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetAgentStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='UnitAssigner', Request='SetAgentStatus', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResult)
-    async def WatchUnitAssignments(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error')]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='UnitAssigner', Request='WatchUnitAssignments', Version=1, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Uniter(Type):
-    name = 'Uniter'
-    version = 3
-    schema =     {'definitions': {'APIHostPortsResult': {'additionalProperties': False,
-                                            'properties': {'Servers': {'items': {'items': {'$ref': '#/definitions/HostPort'},
-                                                                                 'type': 'array'},
-                                                                       'type': 'array'}},
-                                            'required': ['Servers'],
-                                            'type': 'object'},
-                     'Action': {'additionalProperties': False,
-                                'properties': {'name': {'type': 'string'},
-                                               'parameters': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                           'type': 'object'}},
-                                                              'type': 'object'},
-                                               'receiver': {'type': 'string'},
-                                               'tag': {'type': 'string'}},
-                                'required': ['tag', 'receiver', 'name'],
-                                'type': 'object'},
-                     'ActionExecutionResult': {'additionalProperties': False,
-                                               'properties': {'actiontag': {'type': 'string'},
-                                                              'message': {'type': 'string'},
-                                                              'results': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                       'type': 'object'}},
-                                                                          'type': 'object'},
-                                                              'status': {'type': 'string'}},
-                                               'required': ['actiontag', 'status'],
-                                               'type': 'object'},
-                     'ActionExecutionResults': {'additionalProperties': False,
-                                                'properties': {'results': {'items': {'$ref': '#/definitions/ActionExecutionResult'},
-                                                                           'type': 'array'}},
-                                                'type': 'object'},
-                     'ActionResult': {'additionalProperties': False,
-                                      'properties': {'action': {'$ref': '#/definitions/Action'},
-                                                     'completed': {'format': 'date-time',
-                                                                   'type': 'string'},
-                                                     'enqueued': {'format': 'date-time',
-                                                                  'type': 'string'},
-                                                     'error': {'$ref': '#/definitions/Error'},
-                                                     'message': {'type': 'string'},
-                                                     'output': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                             'type': 'object'}},
-                                                                'type': 'object'},
-                                                     'started': {'format': 'date-time',
-                                                                 'type': 'string'},
-                                                     'status': {'type': 'string'}},
-                                      'type': 'object'},
-                     'ActionResults': {'additionalProperties': False,
-                                       'properties': {'results': {'items': {'$ref': '#/definitions/ActionResult'},
-                                                                  'type': 'array'}},
-                                       'type': 'object'},
-                     'Address': {'additionalProperties': False,
-                                 'properties': {'Scope': {'type': 'string'},
-                                                'SpaceName': {'type': 'string'},
-                                                'Type': {'type': 'string'},
-                                                'Value': {'type': 'string'}},
-                                 'required': ['Value', 'Type', 'Scope'],
-                                 'type': 'object'},
-                     'BoolResult': {'additionalProperties': False,
-                                    'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                   'Result': {'type': 'boolean'}},
-                                    'required': ['Error', 'Result'],
-                                    'type': 'object'},
-                     'BoolResults': {'additionalProperties': False,
-                                     'properties': {'Results': {'items': {'$ref': '#/definitions/BoolResult'},
-                                                                'type': 'array'}},
-                                     'required': ['Results'],
-                                     'type': 'object'},
-                     'BytesResult': {'additionalProperties': False,
-                                     'properties': {'Result': {'items': {'type': 'integer'},
-                                                               'type': 'array'}},
-                                     'required': ['Result'],
-                                     'type': 'object'},
-                     'CharmURL': {'additionalProperties': False,
-                                  'properties': {'URL': {'type': 'string'}},
-                                  'required': ['URL'],
-                                  'type': 'object'},
-                     'CharmURLs': {'additionalProperties': False,
-                                   'properties': {'URLs': {'items': {'$ref': '#/definitions/CharmURL'},
-                                                           'type': 'array'}},
-                                   'required': ['URLs'],
-                                   'type': 'object'},
-                     'ConfigSettingsResult': {'additionalProperties': False,
-                                              'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                             'Settings': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                       'type': 'object'}},
-                                                                          'type': 'object'}},
-                                              'required': ['Error', 'Settings'],
-                                              'type': 'object'},
-                     'ConfigSettingsResults': {'additionalProperties': False,
-                                               'properties': {'Results': {'items': {'$ref': '#/definitions/ConfigSettingsResult'},
-                                                                          'type': 'array'}},
-                                               'required': ['Results'],
-                                               'type': 'object'},
-                     'Endpoint': {'additionalProperties': False,
-                                  'properties': {'Relation': {'$ref': '#/definitions/Relation'},
-                                                 'ServiceName': {'type': 'string'}},
-                                  'required': ['ServiceName', 'Relation'],
-                                  'type': 'object'},
-                     'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'EntitiesCharmURL': {'additionalProperties': False,
-                                          'properties': {'Entities': {'items': {'$ref': '#/definitions/EntityCharmURL'},
-                                                                      'type': 'array'}},
-                                          'required': ['Entities'],
-                                          'type': 'object'},
-                     'EntitiesPortRanges': {'additionalProperties': False,
-                                            'properties': {'Entities': {'items': {'$ref': '#/definitions/EntityPortRange'},
-                                                                        'type': 'array'}},
-                                            'required': ['Entities'],
-                                            'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'EntityCharmURL': {'additionalProperties': False,
-                                        'properties': {'CharmURL': {'type': 'string'},
-                                                       'Tag': {'type': 'string'}},
-                                        'required': ['Tag', 'CharmURL'],
-                                        'type': 'object'},
-                     'EntityPortRange': {'additionalProperties': False,
-                                         'properties': {'FromPort': {'type': 'integer'},
-                                                        'Protocol': {'type': 'string'},
-                                                        'Tag': {'type': 'string'},
-                                                        'ToPort': {'type': 'integer'}},
-                                         'required': ['Tag',
-                                                      'Protocol',
-                                                      'FromPort',
-                                                      'ToPort'],
-                                         'type': 'object'},
-                     'EntityStatusArgs': {'additionalProperties': False,
-                                          'properties': {'Data': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                               'type': 'object'}},
-                                                                  'type': 'object'},
-                                                         'Info': {'type': 'string'},
-                                                         'Status': {'type': 'string'},
-                                                         'Tag': {'type': 'string'}},
-                                          'required': ['Tag',
-                                                       'Status',
-                                                       'Info',
-                                                       'Data'],
-                                          'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'GetLeadershipSettingsBulkResults': {'additionalProperties': False,
-                                                          'properties': {'Results': {'items': {'$ref': '#/definitions/GetLeadershipSettingsResult'},
-                                                                                     'type': 'array'}},
-                                                          'required': ['Results'],
-                                                          'type': 'object'},
-                     'GetLeadershipSettingsResult': {'additionalProperties': False,
-                                                     'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                                    'Settings': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                                 'type': 'object'}},
-                                                     'required': ['Settings',
-                                                                  'Error'],
-                                                     'type': 'object'},
-                     'HostPort': {'additionalProperties': False,
-                                  'properties': {'Address': {'$ref': '#/definitions/Address'},
-                                                 'Port': {'type': 'integer'}},
-                                  'required': ['Address', 'Port'],
-                                  'type': 'object'},
-                     'IntResult': {'additionalProperties': False,
-                                   'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                  'Result': {'type': 'integer'}},
-                                   'required': ['Error', 'Result'],
-                                   'type': 'object'},
-                     'IntResults': {'additionalProperties': False,
-                                    'properties': {'Results': {'items': {'$ref': '#/definitions/IntResult'},
-                                                               'type': 'array'}},
-                                    'required': ['Results'],
-                                    'type': 'object'},
-                     'LifeResult': {'additionalProperties': False,
-                                    'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                   'Life': {'type': 'string'}},
-                                    'required': ['Life', 'Error'],
-                                    'type': 'object'},
-                     'LifeResults': {'additionalProperties': False,
-                                     'properties': {'Results': {'items': {'$ref': '#/definitions/LifeResult'},
-                                                                'type': 'array'}},
-                                     'required': ['Results'],
-                                     'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'MachinePortRange': {'additionalProperties': False,
-                                          'properties': {'PortRange': {'$ref': '#/definitions/PortRange'},
-                                                         'RelationTag': {'type': 'string'},
-                                                         'UnitTag': {'type': 'string'}},
-                                          'required': ['UnitTag',
-                                                       'RelationTag',
-                                                       'PortRange'],
-                                          'type': 'object'},
-                     'MachinePortsResult': {'additionalProperties': False,
-                                            'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                           'Ports': {'items': {'$ref': '#/definitions/MachinePortRange'},
-                                                                     'type': 'array'}},
-                                            'required': ['Error', 'Ports'],
-                                            'type': 'object'},
-                     'MachinePortsResults': {'additionalProperties': False,
-                                             'properties': {'Results': {'items': {'$ref': '#/definitions/MachinePortsResult'},
-                                                                        'type': 'array'}},
-                                             'required': ['Results'],
-                                             'type': 'object'},
-                     'MergeLeadershipSettingsBulkParams': {'additionalProperties': False,
-                                                           'properties': {'Params': {'items': {'$ref': '#/definitions/MergeLeadershipSettingsParam'},
-                                                                                     'type': 'array'}},
-                                                           'required': ['Params'],
-                                                           'type': 'object'},
-                     'MergeLeadershipSettingsParam': {'additionalProperties': False,
-                                                      'properties': {'ServiceTag': {'type': 'string'},
-                                                                     'Settings': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                                  'type': 'object'}},
-                                                      'required': ['ServiceTag',
-                                                                   'Settings'],
-                                                      'type': 'object'},
-                     'MeterStatusResult': {'additionalProperties': False,
-                                           'properties': {'Code': {'type': 'string'},
-                                                          'Error': {'$ref': '#/definitions/Error'},
-                                                          'Info': {'type': 'string'}},
-                                           'required': ['Code', 'Info', 'Error'],
-                                           'type': 'object'},
-                     'MeterStatusResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/MeterStatusResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'Metric': {'additionalProperties': False,
-                                'properties': {'Key': {'type': 'string'},
-                                               'Time': {'format': 'date-time',
-                                                        'type': 'string'},
-                                               'Value': {'type': 'string'}},
-                                'required': ['Key', 'Value', 'Time'],
-                                'type': 'object'},
-                     'MetricBatch': {'additionalProperties': False,
-                                     'properties': {'CharmURL': {'type': 'string'},
-                                                    'Created': {'format': 'date-time',
-                                                                'type': 'string'},
-                                                    'Metrics': {'items': {'$ref': '#/definitions/Metric'},
-                                                                'type': 'array'},
-                                                    'UUID': {'type': 'string'}},
-                                     'required': ['UUID',
-                                                  'CharmURL',
-                                                  'Created',
-                                                  'Metrics'],
-                                     'type': 'object'},
-                     'MetricBatchParam': {'additionalProperties': False,
-                                          'properties': {'Batch': {'$ref': '#/definitions/MetricBatch'},
-                                                         'Tag': {'type': 'string'}},
-                                          'required': ['Tag', 'Batch'],
-                                          'type': 'object'},
-                     'MetricBatchParams': {'additionalProperties': False,
-                                           'properties': {'Batches': {'items': {'$ref': '#/definitions/MetricBatchParam'},
-                                                                      'type': 'array'}},
-                                           'required': ['Batches'],
-                                           'type': 'object'},
-                     'ModelConfigResult': {'additionalProperties': False,
-                                           'properties': {'Config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                  'type': 'object'}},
-                                                                     'type': 'object'}},
-                                           'required': ['Config'],
-                                           'type': 'object'},
-                     'ModelResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                    'Name': {'type': 'string'},
-                                                    'UUID': {'type': 'string'}},
-                                     'required': ['Error', 'Name', 'UUID'],
-                                     'type': 'object'},
-                     'NetworkConfig': {'additionalProperties': False,
-                                       'properties': {'Address': {'type': 'string'},
-                                                      'CIDR': {'type': 'string'},
-                                                      'ConfigType': {'type': 'string'},
-                                                      'DNSSearchDomains': {'items': {'type': 'string'},
-                                                                           'type': 'array'},
-                                                      'DNSServers': {'items': {'type': 'string'},
-                                                                     'type': 'array'},
-                                                      'DeviceIndex': {'type': 'integer'},
-                                                      'Disabled': {'type': 'boolean'},
-                                                      'GatewayAddress': {'type': 'string'},
-                                                      'InterfaceName': {'type': 'string'},
-                                                      'InterfaceType': {'type': 'string'},
-                                                      'MACAddress': {'type': 'string'},
-                                                      'MTU': {'type': 'integer'},
-                                                      'NoAutoStart': {'type': 'boolean'},
-                                                      'ParentInterfaceName': {'type': 'string'},
-                                                      'ProviderAddressId': {'type': 'string'},
-                                                      'ProviderId': {'type': 'string'},
-                                                      'ProviderSpaceId': {'type': 'string'},
-                                                      'ProviderSubnetId': {'type': 'string'},
-                                                      'ProviderVLANId': {'type': 'string'},
-                                                      'VLANTag': {'type': 'integer'}},
-                                       'required': ['DeviceIndex',
-                                                    'MACAddress',
-                                                    'CIDR',
-                                                    'MTU',
-                                                    'ProviderId',
-                                                    'ProviderSubnetId',
-                                                    'ProviderSpaceId',
-                                                    'ProviderAddressId',
-                                                    'ProviderVLANId',
-                                                    'VLANTag',
-                                                    'InterfaceName',
-                                                    'ParentInterfaceName',
-                                                    'InterfaceType',
-                                                    'Disabled'],
-                                       'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'NotifyWatchResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'PortRange': {'additionalProperties': False,
-                                   'properties': {'FromPort': {'type': 'integer'},
-                                                  'Protocol': {'type': 'string'},
-                                                  'ToPort': {'type': 'integer'}},
-                                   'required': ['FromPort', 'ToPort', 'Protocol'],
-                                   'type': 'object'},
-                     'Relation': {'additionalProperties': False,
-                                  'properties': {'Interface': {'type': 'string'},
-                                                 'Limit': {'type': 'integer'},
-                                                 'Name': {'type': 'string'},
-                                                 'Optional': {'type': 'boolean'},
-                                                 'Role': {'type': 'string'},
-                                                 'Scope': {'type': 'string'}},
-                                  'required': ['Name',
-                                               'Role',
-                                               'Interface',
-                                               'Optional',
-                                               'Limit',
-                                               'Scope'],
-                                  'type': 'object'},
-                     'RelationIds': {'additionalProperties': False,
-                                     'properties': {'RelationIds': {'items': {'type': 'integer'},
-                                                                    'type': 'array'}},
-                                     'required': ['RelationIds'],
-                                     'type': 'object'},
-                     'RelationResult': {'additionalProperties': False,
-                                        'properties': {'Endpoint': {'$ref': '#/definitions/Endpoint'},
-                                                       'Error': {'$ref': '#/definitions/Error'},
-                                                       'Id': {'type': 'integer'},
-                                                       'Key': {'type': 'string'},
-                                                       'Life': {'type': 'string'}},
-                                        'required': ['Error',
-                                                     'Life',
-                                                     'Id',
-                                                     'Key',
-                                                     'Endpoint'],
-                                        'type': 'object'},
-                     'RelationResults': {'additionalProperties': False,
-                                         'properties': {'Results': {'items': {'$ref': '#/definitions/RelationResult'},
-                                                                    'type': 'array'}},
-                                         'required': ['Results'],
-                                         'type': 'object'},
-                     'RelationUnit': {'additionalProperties': False,
-                                      'properties': {'Relation': {'type': 'string'},
-                                                     'Unit': {'type': 'string'}},
-                                      'required': ['Relation', 'Unit'],
-                                      'type': 'object'},
-                     'RelationUnitPair': {'additionalProperties': False,
-                                          'properties': {'LocalUnit': {'type': 'string'},
-                                                         'Relation': {'type': 'string'},
-                                                         'RemoteUnit': {'type': 'string'}},
-                                          'required': ['Relation',
-                                                       'LocalUnit',
-                                                       'RemoteUnit'],
-                                          'type': 'object'},
-                     'RelationUnitPairs': {'additionalProperties': False,
-                                           'properties': {'RelationUnitPairs': {'items': {'$ref': '#/definitions/RelationUnitPair'},
-                                                                                'type': 'array'}},
-                                           'required': ['RelationUnitPairs'],
-                                           'type': 'object'},
-                     'RelationUnitSettings': {'additionalProperties': False,
-                                              'properties': {'Relation': {'type': 'string'},
-                                                             'Settings': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                          'type': 'object'},
-                                                             'Unit': {'type': 'string'}},
-                                              'required': ['Relation',
-                                                           'Unit',
-                                                           'Settings'],
-                                              'type': 'object'},
-                     'RelationUnits': {'additionalProperties': False,
-                                       'properties': {'RelationUnits': {'items': {'$ref': '#/definitions/RelationUnit'},
-                                                                        'type': 'array'}},
-                                       'required': ['RelationUnits'],
-                                       'type': 'object'},
-                     'RelationUnitsChange': {'additionalProperties': False,
-                                             'properties': {'Changed': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitSettings'}},
-                                                                        'type': 'object'},
-                                                            'Departed': {'items': {'type': 'string'},
-                                                                         'type': 'array'}},
-                                             'required': ['Changed', 'Departed'],
-                                             'type': 'object'},
-                     'RelationUnitsSettings': {'additionalProperties': False,
-                                               'properties': {'RelationUnits': {'items': {'$ref': '#/definitions/RelationUnitSettings'},
-                                                                                'type': 'array'}},
-                                               'required': ['RelationUnits'],
-                                               'type': 'object'},
-                     'RelationUnitsWatchResult': {'additionalProperties': False,
-                                                  'properties': {'Changes': {'$ref': '#/definitions/RelationUnitsChange'},
-                                                                 'Error': {'$ref': '#/definitions/Error'},
-                                                                 'RelationUnitsWatcherId': {'type': 'string'}},
-                                                  'required': ['RelationUnitsWatcherId',
-                                                               'Changes',
-                                                               'Error'],
-                                                  'type': 'object'},
-                     'RelationUnitsWatchResults': {'additionalProperties': False,
-                                                   'properties': {'Results': {'items': {'$ref': '#/definitions/RelationUnitsWatchResult'},
-                                                                              'type': 'array'}},
-                                                   'required': ['Results'],
-                                                   'type': 'object'},
-                     'ResolvedModeResult': {'additionalProperties': False,
-                                            'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                           'Mode': {'type': 'string'}},
-                                            'required': ['Error', 'Mode'],
-                                            'type': 'object'},
-                     'ResolvedModeResults': {'additionalProperties': False,
-                                             'properties': {'Results': {'items': {'$ref': '#/definitions/ResolvedModeResult'},
-                                                                        'type': 'array'}},
-                                             'required': ['Results'],
-                                             'type': 'object'},
-                     'ServiceStatusResult': {'additionalProperties': False,
-                                             'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                            'Service': {'$ref': '#/definitions/StatusResult'},
-                                                            'Units': {'patternProperties': {'.*': {'$ref': '#/definitions/StatusResult'}},
-                                                                      'type': 'object'}},
-                                             'required': ['Service',
-                                                          'Units',
-                                                          'Error'],
-                                             'type': 'object'},
-                     'ServiceStatusResults': {'additionalProperties': False,
-                                              'properties': {'Results': {'items': {'$ref': '#/definitions/ServiceStatusResult'},
-                                                                         'type': 'array'}},
-                                              'required': ['Results'],
-                                              'type': 'object'},
-                     'SetStatus': {'additionalProperties': False,
-                                   'properties': {'Entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'},
-                                                               'type': 'array'}},
-                                   'required': ['Entities'],
-                                   'type': 'object'},
-                     'SettingsResult': {'additionalProperties': False,
-                                        'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                       'Settings': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                    'type': 'object'}},
-                                        'required': ['Error', 'Settings'],
-                                        'type': 'object'},
-                     'SettingsResults': {'additionalProperties': False,
-                                         'properties': {'Results': {'items': {'$ref': '#/definitions/SettingsResult'},
-                                                                    'type': 'array'}},
-                                         'required': ['Results'],
-                                         'type': 'object'},
-                     'StatusResult': {'additionalProperties': False,
-                                      'properties': {'Data': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                           'type': 'object'}},
-                                                              'type': 'object'},
-                                                     'Error': {'$ref': '#/definitions/Error'},
-                                                     'Id': {'type': 'string'},
-                                                     'Info': {'type': 'string'},
-                                                     'Life': {'type': 'string'},
-                                                     'Since': {'format': 'date-time',
-                                                               'type': 'string'},
-                                                     'Status': {'type': 'string'}},
-                                      'required': ['Error',
-                                                   'Id',
-                                                   'Life',
-                                                   'Status',
-                                                   'Info',
-                                                   'Data',
-                                                   'Since'],
-                                      'type': 'object'},
-                     'StatusResults': {'additionalProperties': False,
-                                       'properties': {'Results': {'items': {'$ref': '#/definitions/StatusResult'},
-                                                                  'type': 'array'}},
-                                       'required': ['Results'],
-                                       'type': 'object'},
-                     'StorageAddParams': {'additionalProperties': False,
-                                          'properties': {'StorageName': {'type': 'string'},
-                                                         'storage': {'$ref': '#/definitions/StorageConstraints'},
-                                                         'unit': {'type': 'string'}},
-                                          'required': ['unit',
-                                                       'StorageName',
-                                                       'storage'],
-                                          'type': 'object'},
-                     'StorageAttachment': {'additionalProperties': False,
-                                           'properties': {'Kind': {'type': 'integer'},
-                                                          'Life': {'type': 'string'},
-                                                          'Location': {'type': 'string'},
-                                                          'OwnerTag': {'type': 'string'},
-                                                          'StorageTag': {'type': 'string'},
-                                                          'UnitTag': {'type': 'string'}},
-                                           'required': ['StorageTag',
-                                                        'OwnerTag',
-                                                        'UnitTag',
-                                                        'Kind',
-                                                        'Location',
-                                                        'Life'],
-                                           'type': 'object'},
-                     'StorageAttachmentId': {'additionalProperties': False,
-                                             'properties': {'storagetag': {'type': 'string'},
-                                                            'unittag': {'type': 'string'}},
-                                             'required': ['storagetag', 'unittag'],
-                                             'type': 'object'},
-                     'StorageAttachmentIds': {'additionalProperties': False,
-                                              'properties': {'ids': {'items': {'$ref': '#/definitions/StorageAttachmentId'},
-                                                                     'type': 'array'}},
-                                              'required': ['ids'],
-                                              'type': 'object'},
-                     'StorageAttachmentIdsResult': {'additionalProperties': False,
-                                                    'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                   'result': {'$ref': '#/definitions/StorageAttachmentIds'}},
-                                                    'required': ['result'],
-                                                    'type': 'object'},
-                     'StorageAttachmentIdsResults': {'additionalProperties': False,
-                                                     'properties': {'results': {'items': {'$ref': '#/definitions/StorageAttachmentIdsResult'},
-                                                                                'type': 'array'}},
-                                                     'type': 'object'},
-                     'StorageAttachmentResult': {'additionalProperties': False,
-                                                 'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                'result': {'$ref': '#/definitions/StorageAttachment'}},
-                                                 'required': ['result'],
-                                                 'type': 'object'},
-                     'StorageAttachmentResults': {'additionalProperties': False,
-                                                  'properties': {'results': {'items': {'$ref': '#/definitions/StorageAttachmentResult'},
-                                                                             'type': 'array'}},
-                                                  'type': 'object'},
-                     'StorageConstraints': {'additionalProperties': False,
-                                            'properties': {'Count': {'type': 'integer'},
-                                                           'Pool': {'type': 'string'},
-                                                           'Size': {'type': 'integer'}},
-                                            'required': ['Pool', 'Size', 'Count'],
-                                            'type': 'object'},
-                     'StoragesAddParams': {'additionalProperties': False,
-                                           'properties': {'storages': {'items': {'$ref': '#/definitions/StorageAddParams'},
-                                                                       'type': 'array'}},
-                                           'required': ['storages'],
-                                           'type': 'object'},
-                     'StringBoolResult': {'additionalProperties': False,
-                                          'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                         'Ok': {'type': 'boolean'},
-                                                         'Result': {'type': 'string'}},
-                                          'required': ['Error', 'Result', 'Ok'],
-                                          'type': 'object'},
-                     'StringBoolResults': {'additionalProperties': False,
-                                           'properties': {'Results': {'items': {'$ref': '#/definitions/StringBoolResult'},
-                                                                      'type': 'array'}},
-                                           'required': ['Results'],
-                                           'type': 'object'},
-                     'StringResult': {'additionalProperties': False,
-                                      'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                     'Result': {'type': 'string'}},
-                                      'required': ['Error', 'Result'],
-                                      'type': 'object'},
-                     'StringResults': {'additionalProperties': False,
-                                       'properties': {'Results': {'items': {'$ref': '#/definitions/StringResult'},
-                                                                  'type': 'array'}},
-                                       'required': ['Results'],
-                                       'type': 'object'},
-                     'StringsResult': {'additionalProperties': False,
-                                       'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                      'Result': {'items': {'type': 'string'},
-                                                                 'type': 'array'}},
-                                       'required': ['Error', 'Result'],
-                                       'type': 'object'},
-                     'StringsResults': {'additionalProperties': False,
-                                        'properties': {'Results': {'items': {'$ref': '#/definitions/StringsResult'},
-                                                                   'type': 'array'}},
-                                        'required': ['Results'],
-                                        'type': 'object'},
-                     'StringsWatchResult': {'additionalProperties': False,
-                                            'properties': {'Changes': {'items': {'type': 'string'},
-                                                                       'type': 'array'},
-                                                           'Error': {'$ref': '#/definitions/Error'},
-                                                           'StringsWatcherId': {'type': 'string'}},
-                                            'required': ['StringsWatcherId',
-                                                         'Changes',
-                                                         'Error'],
-                                            'type': 'object'},
-                     'StringsWatchResults': {'additionalProperties': False,
-                                             'properties': {'Results': {'items': {'$ref': '#/definitions/StringsWatchResult'},
-                                                                        'type': 'array'}},
-                                             'required': ['Results'],
-                                             'type': 'object'},
-                     'UnitNetworkConfig': {'additionalProperties': False,
-                                           'properties': {'BindingName': {'type': 'string'},
-                                                          'UnitTag': {'type': 'string'}},
-                                           'required': ['UnitTag', 'BindingName'],
-                                           'type': 'object'},
-                     'UnitNetworkConfigResult': {'additionalProperties': False,
-                                                 'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                                'Info': {'items': {'$ref': '#/definitions/NetworkConfig'},
-                                                                         'type': 'array'}},
-                                                 'required': ['Error', 'Info'],
-                                                 'type': 'object'},
-                     'UnitNetworkConfigResults': {'additionalProperties': False,
-                                                  'properties': {'Results': {'items': {'$ref': '#/definitions/UnitNetworkConfigResult'},
-                                                                             'type': 'array'}},
-                                                  'required': ['Results'],
-                                                  'type': 'object'},
-                     'UnitSettings': {'additionalProperties': False,
-                                      'properties': {'Version': {'type': 'integer'}},
-                                      'required': ['Version'],
-                                      'type': 'object'},
-                     'UnitsNetworkConfig': {'additionalProperties': False,
-                                            'properties': {'Args': {'items': {'$ref': '#/definitions/UnitNetworkConfig'},
-                                                                    'type': 'array'}},
-                                            'required': ['Args'],
-                                            'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}},
-                                     'type': 'object'},
-                    'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}},
-                                     'type': 'object'},
-                    'Actions': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                               'Result': {'$ref': '#/definitions/ActionResults'}},
-                                'type': 'object'},
-                    'AddMetricBatches': {'properties': {'Params': {'$ref': '#/definitions/MetricBatchParams'},
-                                                        'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                         'type': 'object'},
-                    'AddUnitStorage': {'properties': {'Params': {'$ref': '#/definitions/StoragesAddParams'},
-                                                      'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                       'type': 'object'},
-                    'AllMachinePorts': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                       'Result': {'$ref': '#/definitions/MachinePortsResults'}},
-                                        'type': 'object'},
-                    'AssignedMachine': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                       'Result': {'$ref': '#/definitions/StringResults'}},
-                                        'type': 'object'},
-                    'AvailabilityZone': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                        'Result': {'$ref': '#/definitions/StringResults'}},
-                                         'type': 'object'},
-                    'BeginActions': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                    'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                     'type': 'object'},
-                    'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}},
-                               'type': 'object'},
-                    'CharmArchiveSha256': {'properties': {'Params': {'$ref': '#/definitions/CharmURLs'},
-                                                          'Result': {'$ref': '#/definitions/StringResults'}},
-                                           'type': 'object'},
-                    'CharmModifiedVersion': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                            'Result': {'$ref': '#/definitions/IntResults'}},
-                                             'type': 'object'},
-                    'CharmURL': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                'Result': {'$ref': '#/definitions/StringBoolResults'}},
-                                 'type': 'object'},
-                    'ClearResolved': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                     'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                      'type': 'object'},
-                    'ClosePorts': {'properties': {'Params': {'$ref': '#/definitions/EntitiesPortRanges'},
-                                                  'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                   'type': 'object'},
-                    'ConfigSettings': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                      'Result': {'$ref': '#/definitions/ConfigSettingsResults'}},
-                                       'type': 'object'},
-                    'CurrentModel': {'properties': {'Result': {'$ref': '#/definitions/ModelResult'}},
-                                     'type': 'object'},
-                    'Destroy': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                               'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                'type': 'object'},
-                    'DestroyAllSubordinates': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                              'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                               'type': 'object'},
-                    'DestroyUnitStorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                     'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                      'type': 'object'},
-                    'EnsureDead': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                  'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                   'type': 'object'},
-                    'EnterScope': {'properties': {'Params': {'$ref': '#/definitions/RelationUnits'},
-                                                  'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                   'type': 'object'},
-                    'FinishActions': {'properties': {'Params': {'$ref': '#/definitions/ActionExecutionResults'},
-                                                     'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                      'type': 'object'},
-                    'GetMeterStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                      'Result': {'$ref': '#/definitions/MeterStatusResults'}},
-                                       'type': 'object'},
-                    'GetPrincipal': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                    'Result': {'$ref': '#/definitions/StringBoolResults'}},
-                                     'type': 'object'},
-                    'HasSubordinates': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                       'Result': {'$ref': '#/definitions/BoolResults'}},
-                                        'type': 'object'},
-                    'JoinedRelations': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                       'Result': {'$ref': '#/definitions/StringsResults'}},
-                                        'type': 'object'},
-                    'LeaveScope': {'properties': {'Params': {'$ref': '#/definitions/RelationUnits'},
-                                                  'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                   'type': 'object'},
-                    'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                            'Result': {'$ref': '#/definitions/LifeResults'}},
-                             'type': 'object'},
-                    'Merge': {'properties': {'Params': {'$ref': '#/definitions/MergeLeadershipSettingsBulkParams'},
-                                             'Result': {'$ref': '#/definitions/ErrorResults'}},
-                              'type': 'object'},
-                    'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}},
-                                    'type': 'object'},
-                    'ModelUUID': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
-                                  'type': 'object'},
-                    'NetworkConfig': {'properties': {'Params': {'$ref': '#/definitions/UnitsNetworkConfig'},
-                                                     'Result': {'$ref': '#/definitions/UnitNetworkConfigResults'}},
-                                      'type': 'object'},
-                    'OpenPorts': {'properties': {'Params': {'$ref': '#/definitions/EntitiesPortRanges'},
-                                                 'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                  'type': 'object'},
-                    'PrivateAddress': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                      'Result': {'$ref': '#/definitions/StringResults'}},
-                                       'type': 'object'},
-                    'ProviderType': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
-                                     'type': 'object'},
-                    'PublicAddress': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                     'Result': {'$ref': '#/definitions/StringResults'}},
-                                      'type': 'object'},
-                    'Read': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                            'Result': {'$ref': '#/definitions/GetLeadershipSettingsBulkResults'}},
-                             'type': 'object'},
-                    'ReadRemoteSettings': {'properties': {'Params': {'$ref': '#/definitions/RelationUnitPairs'},
-                                                          'Result': {'$ref': '#/definitions/SettingsResults'}},
-                                           'type': 'object'},
-                    'ReadSettings': {'properties': {'Params': {'$ref': '#/definitions/RelationUnits'},
-                                                    'Result': {'$ref': '#/definitions/SettingsResults'}},
-                                     'type': 'object'},
-                    'Relation': {'properties': {'Params': {'$ref': '#/definitions/RelationUnits'},
-                                                'Result': {'$ref': '#/definitions/RelationResults'}},
-                                 'type': 'object'},
-                    'RelationById': {'properties': {'Params': {'$ref': '#/definitions/RelationIds'},
-                                                    'Result': {'$ref': '#/definitions/RelationResults'}},
-                                     'type': 'object'},
-                    'RemoveStorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'},
-                                                                'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                 'type': 'object'},
-                    'RequestReboot': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                     'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                      'type': 'object'},
-                    'Resolved': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                'Result': {'$ref': '#/definitions/ResolvedModeResults'}},
-                                 'type': 'object'},
-                    'ServiceOwner': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                    'Result': {'$ref': '#/definitions/StringResults'}},
-                                     'type': 'object'},
-                    'ServiceStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                     'Result': {'$ref': '#/definitions/ServiceStatusResults'}},
-                                      'type': 'object'},
-                    'SetAgentStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                      'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                       'type': 'object'},
-                    'SetCharmURL': {'properties': {'Params': {'$ref': '#/definitions/EntitiesCharmURL'},
-                                                   'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                    'type': 'object'},
-                    'SetServiceStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                        'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                         'type': 'object'},
-                    'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                 'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                  'type': 'object'},
-                    'SetUnitStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                     'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                      'type': 'object'},
-                    'StorageAttachmentLife': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'},
-                                                             'Result': {'$ref': '#/definitions/LifeResults'}},
-                                              'type': 'object'},
-                    'StorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'},
-                                                          'Result': {'$ref': '#/definitions/StorageAttachmentResults'}},
-                                           'type': 'object'},
-                    'UnitStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                  'Result': {'$ref': '#/definitions/StatusResults'}},
-                                   'type': 'object'},
-                    'UnitStorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                              'Result': {'$ref': '#/definitions/StorageAttachmentIdsResults'}},
-                                               'type': 'object'},
-                    'UpdateSettings': {'properties': {'Params': {'$ref': '#/definitions/RelationUnitsSettings'},
-                                                      'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                       'type': 'object'},
-                    'Watch': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                             'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                              'type': 'object'},
-                    'WatchAPIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                          'type': 'object'},
-                    'WatchActionNotifications': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                                 'type': 'object'},
-                    'WatchConfigSettings': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                           'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                            'type': 'object'},
-                    'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                                   'type': 'object'},
-                    'WatchLeadershipSettings': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                               'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                                'type': 'object'},
-                    'WatchMeterStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                        'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                         'type': 'object'},
-                    'WatchRelationUnits': {'properties': {'Params': {'$ref': '#/definitions/RelationUnits'},
-                                                          'Result': {'$ref': '#/definitions/RelationUnitsWatchResults'}},
-                                           'type': 'object'},
-                    'WatchServiceRelations': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                             'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                              'type': 'object'},
-                    'WatchStorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'},
-                                                               'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                                'type': 'object'},
-                    'WatchUnitAddresses': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                          'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                           'type': 'object'},
-                    'WatchUnitStorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                   'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                                    'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(StringsResult)
-    async def APIAddresses(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence[str]]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='APIAddresses', Version=3, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(APIHostPortsResult)
-    async def APIHostPorts(self):
-        '''
-
-        Returns -> typing.Sequence[~HostPort]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='APIHostPorts', Version=3, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionResults)
-    async def Actions(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ActionResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='Actions', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def AddMetricBatches(self, batches):
-        '''
-        batches : typing.Sequence[~MetricBatchParam]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='AddMetricBatches', Version=3, Params=params)
-        params['Batches'] = batches
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def AddUnitStorage(self, storages):
-        '''
-        storages : typing.Sequence[~StorageAddParams]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='AddUnitStorage', Version=3, Params=params)
-        params['storages'] = storages
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MachinePortsResults)
-    async def AllMachinePorts(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~MachinePortsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='AllMachinePorts', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def AssignedMachine(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='AssignedMachine', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def AvailabilityZone(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='AvailabilityZone', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def BeginActions(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='BeginActions', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BytesResult)
-    async def CACert(self):
-        '''
-
-        Returns -> typing.Sequence[int]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='CACert', Version=3, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def CharmArchiveSha256(self, urls):
-        '''
-        urls : typing.Sequence[~CharmURL]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='CharmArchiveSha256', Version=3, Params=params)
-        params['URLs'] = urls
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(IntResults)
-    async def CharmModifiedVersion(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~IntResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='CharmModifiedVersion', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringBoolResults)
-    async def CharmURL(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringBoolResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='CharmURL', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def ClearResolved(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='ClearResolved', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def ClosePorts(self, entities):
-        '''
-        entities : typing.Sequence[~EntityPortRange]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='ClosePorts', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ConfigSettingsResults)
-    async def ConfigSettings(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ConfigSettingsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='ConfigSettings', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelResult)
-    async def CurrentModel(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='CurrentModel', Version=3, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Destroy(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='Destroy', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def DestroyAllSubordinates(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='DestroyAllSubordinates', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def DestroyUnitStorageAttachments(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='DestroyUnitStorageAttachments', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def EnsureDead(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='EnsureDead', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def EnterScope(self, relationunits):
-        '''
-        relationunits : typing.Sequence[~RelationUnit]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='EnterScope', Version=3, Params=params)
-        params['RelationUnits'] = relationunits
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def FinishActions(self, results):
-        '''
-        results : typing.Sequence[~ActionExecutionResult]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='FinishActions', Version=3, Params=params)
-        params['results'] = results
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MeterStatusResults)
-    async def GetMeterStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~MeterStatusResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='GetMeterStatus', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringBoolResults)
-    async def GetPrincipal(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringBoolResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='GetPrincipal', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BoolResults)
-    async def HasSubordinates(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~BoolResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='HasSubordinates', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsResults)
-    async def JoinedRelations(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='JoinedRelations', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def LeaveScope(self, relationunits):
-        '''
-        relationunits : typing.Sequence[~RelationUnit]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='LeaveScope', Version=3, Params=params)
-        params['RelationUnits'] = relationunits
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LifeResults)
-    async def Life(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='Life', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Merge(self, params):
-        '''
-        params : typing.Sequence[~MergeLeadershipSettingsParam]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='Merge', Version=3, Params=params)
-        params['Params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelConfigResult)
-    async def ModelConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='ModelConfig', Version=3, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResult)
-    async def ModelUUID(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='ModelUUID', Version=3, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(UnitNetworkConfigResults)
-    async def NetworkConfig(self, args):
-        '''
-        args : typing.Sequence[~UnitNetworkConfig]
-        Returns -> typing.Sequence[~UnitNetworkConfigResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='NetworkConfig', Version=3, Params=params)
-        params['Args'] = args
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def OpenPorts(self, entities):
-        '''
-        entities : typing.Sequence[~EntityPortRange]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='OpenPorts', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def PrivateAddress(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='PrivateAddress', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResult)
-    async def ProviderType(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='ProviderType', Version=3, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def PublicAddress(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='PublicAddress', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(GetLeadershipSettingsBulkResults)
-    async def Read(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~GetLeadershipSettingsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='Read', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(SettingsResults)
-    async def ReadRemoteSettings(self, relationunitpairs):
-        '''
-        relationunitpairs : typing.Sequence[~RelationUnitPair]
-        Returns -> typing.Sequence[~SettingsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='ReadRemoteSettings', Version=3, Params=params)
-        params['RelationUnitPairs'] = relationunitpairs
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(SettingsResults)
-    async def ReadSettings(self, relationunits):
-        '''
-        relationunits : typing.Sequence[~RelationUnit]
-        Returns -> typing.Sequence[~SettingsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='ReadSettings', Version=3, Params=params)
-        params['RelationUnits'] = relationunits
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(RelationResults)
-    async def Relation(self, relationunits):
-        '''
-        relationunits : typing.Sequence[~RelationUnit]
-        Returns -> typing.Sequence[~RelationResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='Relation', Version=3, Params=params)
-        params['RelationUnits'] = relationunits
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(RelationResults)
-    async def RelationById(self, relationids):
-        '''
-        relationids : typing.Sequence[int]
-        Returns -> typing.Sequence[~RelationResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='RelationById', Version=3, Params=params)
-        params['RelationIds'] = relationids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def RemoveStorageAttachments(self, ids):
-        '''
-        ids : typing.Sequence[~StorageAttachmentId]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='RemoveStorageAttachments', Version=3, Params=params)
-        params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def RequestReboot(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='RequestReboot', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ResolvedModeResults)
-    async def Resolved(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ResolvedModeResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='Resolved', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def ServiceOwner(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='ServiceOwner', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ServiceStatusResults)
-    async def ServiceStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ServiceStatusResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='ServiceStatus', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetAgentStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='SetAgentStatus', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetCharmURL(self, entities):
-        '''
-        entities : typing.Sequence[~EntityCharmURL]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='SetCharmURL', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetServiceStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='SetServiceStatus', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='SetStatus', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetUnitStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='SetUnitStatus', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LifeResults)
-    async def StorageAttachmentLife(self, ids):
-        '''
-        ids : typing.Sequence[~StorageAttachmentId]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='StorageAttachmentLife', Version=3, Params=params)
-        params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StorageAttachmentResults)
-    async def StorageAttachments(self, ids):
-        '''
-        ids : typing.Sequence[~StorageAttachmentId]
-        Returns -> typing.Sequence[~StorageAttachmentResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='StorageAttachments', Version=3, Params=params)
-        params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StatusResults)
-    async def UnitStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StatusResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='UnitStatus', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StorageAttachmentIdsResults)
-    async def UnitStorageAttachments(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StorageAttachmentIdsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='UnitStorageAttachments', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def UpdateSettings(self, relationunits):
-        '''
-        relationunits : typing.Sequence[~RelationUnitSettings]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='UpdateSettings', Version=3, Params=params)
-        params['RelationUnits'] = relationunits
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def Watch(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='Watch', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def WatchAPIHostPorts(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='WatchAPIHostPorts', Version=3, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchActionNotifications(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='WatchActionNotifications', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchConfigSettings(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='WatchConfigSettings', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def WatchForModelConfigChanges(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='WatchForModelConfigChanges', Version=3, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchLeadershipSettings(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='WatchLeadershipSettings', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchMeterStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='WatchMeterStatus', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(RelationUnitsWatchResults)
-    async def WatchRelationUnits(self, relationunits):
-        '''
-        relationunits : typing.Sequence[~RelationUnit]
-        Returns -> typing.Sequence[~RelationUnitsWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='WatchRelationUnits', Version=3, Params=params)
-        params['RelationUnits'] = relationunits
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchServiceRelations(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='WatchServiceRelations', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchStorageAttachments(self, ids):
-        '''
-        ids : typing.Sequence[~StorageAttachmentId]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='WatchStorageAttachments', Version=3, Params=params)
-        params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchUnitAddresses(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='WatchUnitAddresses', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchUnitStorageAttachments(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Uniter', Request='WatchUnitStorageAttachments', Version=3, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class Upgrader(Type):
-    name = 'Upgrader'
-    version = 1
-    schema =     {'definitions': {'Binary': {'additionalProperties': False,
-                                'properties': {'Arch': {'type': 'string'},
-                                               'Number': {'$ref': '#/definitions/Number'},
-                                               'Series': {'type': 'string'}},
-                                'required': ['Number', 'Series', 'Arch'],
-                                'type': 'object'},
-                     'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'EntitiesVersion': {'additionalProperties': False,
-                                         'properties': {'AgentTools': {'items': {'$ref': '#/definitions/EntityVersion'},
-                                                                       'type': 'array'}},
-                                         'required': ['AgentTools'],
-                                         'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'EntityVersion': {'additionalProperties': False,
-                                       'properties': {'Tag': {'type': 'string'},
-                                                      'Tools': {'$ref': '#/definitions/Version'}},
-                                       'required': ['Tag', 'Tools'],
-                                       'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'NotifyWatcherId': {'type': 'string'}},
-                                           'required': ['NotifyWatcherId', 'Error'],
-                                           'type': 'object'},
-                     'NotifyWatchResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'Number': {'additionalProperties': False,
-                                'properties': {'Build': {'type': 'integer'},
-                                               'Major': {'type': 'integer'},
-                                               'Minor': {'type': 'integer'},
-                                               'Patch': {'type': 'integer'},
-                                               'Tag': {'type': 'string'}},
-                                'required': ['Major',
-                                             'Minor',
-                                             'Tag',
-                                             'Patch',
-                                             'Build'],
-                                'type': 'object'},
-                     'Tools': {'additionalProperties': False,
-                               'properties': {'sha256': {'type': 'string'},
-                                              'size': {'type': 'integer'},
-                                              'url': {'type': 'string'},
-                                              'version': {'$ref': '#/definitions/Binary'}},
-                               'required': ['version', 'url', 'size'],
-                               'type': 'object'},
-                     'ToolsResult': {'additionalProperties': False,
-                                     'properties': {'DisableSSLHostnameVerification': {'type': 'boolean'},
-                                                    'Error': {'$ref': '#/definitions/Error'},
-                                                    'ToolsList': {'items': {'$ref': '#/definitions/Tools'},
-                                                                  'type': 'array'}},
-                                     'required': ['ToolsList',
-                                                  'DisableSSLHostnameVerification',
-                                                  'Error'],
-                                     'type': 'object'},
-                     'ToolsResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ToolsResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Version': {'additionalProperties': False,
-                                 'properties': {'Version': {'$ref': '#/definitions/Binary'}},
-                                 'required': ['Version'],
-                                 'type': 'object'},
-                     'VersionResult': {'additionalProperties': False,
-                                       'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                      'Version': {'$ref': '#/definitions/Number'}},
-                                       'required': ['Version', 'Error'],
-                                       'type': 'object'},
-                     'VersionResults': {'additionalProperties': False,
-                                        'properties': {'Results': {'items': {'$ref': '#/definitions/VersionResult'},
-                                                                   'type': 'array'}},
-                                        'required': ['Results'],
-                                        'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'DesiredVersion': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                      'Result': {'$ref': '#/definitions/VersionResults'}},
-                                       'type': 'object'},
-                    'SetTools': {'properties': {'Params': {'$ref': '#/definitions/EntitiesVersion'},
-                                                'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                 'type': 'object'},
-                    'Tools': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                             'Result': {'$ref': '#/definitions/ToolsResults'}},
-                              'type': 'object'},
-                    'WatchAPIVersion': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                       'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                        'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(VersionResults)
-    async def DesiredVersion(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~VersionResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Upgrader', Request='DesiredVersion', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetTools(self, agenttools):
-        '''
-        agenttools : typing.Sequence[~EntityVersion]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Upgrader', Request='SetTools', Version=1, Params=params)
-        params['AgentTools'] = agenttools
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ToolsResults)
-    async def Tools(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ToolsResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Upgrader', Request='Tools', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchAPIVersion(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='Upgrader', Request='WatchAPIVersion', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-class UserManager(Type):
-    name = 'UserManager'
-    version = 1
-    schema =     {'definitions': {'AddUser': {'additionalProperties': False,
-                                 'properties': {'display-name': {'type': 'string'},
-                                                'model-access-permission': {'type': 'string'},
-                                                'password': {'type': 'string'},
-                                                'shared-model-tags': {'items': {'type': 'string'},
-                                                                      'type': 'array'},
-                                                'username': {'type': 'string'}},
-                                 'required': ['username',
-                                              'display-name',
-                                              'shared-model-tags'],
-                                 'type': 'object'},
-                     'AddUserResult': {'additionalProperties': False,
-                                       'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                      'secret-key': {'items': {'type': 'integer'},
-                                                                     'type': 'array'},
-                                                      'tag': {'type': 'string'}},
-                                       'type': 'object'},
-                     'AddUserResults': {'additionalProperties': False,
-                                        'properties': {'results': {'items': {'$ref': '#/definitions/AddUserResult'},
-                                                                   'type': 'array'}},
-                                        'required': ['results'],
-                                        'type': 'object'},
-                     'AddUsers': {'additionalProperties': False,
-                                  'properties': {'users': {'items': {'$ref': '#/definitions/AddUser'},
-                                                           'type': 'array'}},
-                                  'required': ['users'],
-                                  'type': 'object'},
-                     'Entities': {'additionalProperties': False,
-                                  'properties': {'Entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                              'type': 'array'}},
-                                  'required': ['Entities'],
-                                  'type': 'object'},
-                     'Entity': {'additionalProperties': False,
-                                'properties': {'Tag': {'type': 'string'}},
-                                'required': ['Tag'],
-                                'type': 'object'},
-                     'EntityPassword': {'additionalProperties': False,
-                                        'properties': {'Password': {'type': 'string'},
-                                                       'Tag': {'type': 'string'}},
-                                        'required': ['Tag', 'Password'],
-                                        'type': 'object'},
-                     'EntityPasswords': {'additionalProperties': False,
-                                         'properties': {'Changes': {'items': {'$ref': '#/definitions/EntityPassword'},
-                                                                    'type': 'array'}},
-                                         'required': ['Changes'],
-                                         'type': 'object'},
-                     'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'ErrorResult': {'additionalProperties': False,
-                                     'properties': {'Error': {'$ref': '#/definitions/Error'}},
-                                     'required': ['Error'],
-                                     'type': 'object'},
-                     'ErrorResults': {'additionalProperties': False,
-                                      'properties': {'Results': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                 'type': 'array'}},
-                                      'required': ['Results'],
-                                      'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'MacaroonResult': {'additionalProperties': False,
-                                        'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                       'result': {'$ref': '#/definitions/Macaroon'}},
-                                        'type': 'object'},
-                     'MacaroonResults': {'additionalProperties': False,
-                                         'properties': {'results': {'items': {'$ref': '#/definitions/MacaroonResult'},
-                                                                    'type': 'array'}},
-                                         'required': ['results'],
-                                         'type': 'object'},
-                     'UserInfo': {'additionalProperties': False,
-                                  'properties': {'created-by': {'type': 'string'},
-                                                 'date-created': {'format': 'date-time',
-                                                                  'type': 'string'},
-                                                 'disabled': {'type': 'boolean'},
-                                                 'display-name': {'type': 'string'},
-                                                 'last-connection': {'format': 'date-time',
-                                                                     'type': 'string'},
-                                                 'username': {'type': 'string'}},
-                                  'required': ['username',
-                                               'display-name',
-                                               'created-by',
-                                               'date-created',
-                                               'disabled'],
-                                  'type': 'object'},
-                     'UserInfoRequest': {'additionalProperties': False,
-                                         'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                                     'type': 'array'},
-                                                        'include-disabled': {'type': 'boolean'}},
-                                         'required': ['entities',
-                                                      'include-disabled'],
-                                         'type': 'object'},
-                     'UserInfoResult': {'additionalProperties': False,
-                                        'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                       'result': {'$ref': '#/definitions/UserInfo'}},
-                                        'type': 'object'},
-                     'UserInfoResults': {'additionalProperties': False,
-                                         'properties': {'results': {'items': {'$ref': '#/definitions/UserInfoResult'},
-                                                                    'type': 'array'}},
-                                         'required': ['results'],
-                                         'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'AddUser': {'properties': {'Params': {'$ref': '#/definitions/AddUsers'},
-                                               'Result': {'$ref': '#/definitions/AddUserResults'}},
-                                'type': 'object'},
-                    'CreateLocalLoginMacaroon': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                'Result': {'$ref': '#/definitions/MacaroonResults'}},
-                                                 'type': 'object'},
-                    'DisableUser': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                   'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                    'type': 'object'},
-                    'EnableUser': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                  'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                   'type': 'object'},
-                    'SetPassword': {'properties': {'Params': {'$ref': '#/definitions/EntityPasswords'},
-                                                   'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                    'type': 'object'},
-                    'UserInfo': {'properties': {'Params': {'$ref': '#/definitions/UserInfoRequest'},
-                                                'Result': {'$ref': '#/definitions/UserInfoResults'}},
-                                 'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(AddUserResults)
-    async def AddUser(self, users):
-        '''
-        users : typing.Sequence[~AddUser]
-        Returns -> typing.Sequence[~AddUserResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='UserManager', Request='AddUser', Version=1, Params=params)
-        params['users'] = users
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MacaroonResults)
-    async def CreateLocalLoginMacaroon(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~MacaroonResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='UserManager', Request='CreateLocalLoginMacaroon', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def DisableUser(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='UserManager', Request='DisableUser', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def EnableUser(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='UserManager', Request='EnableUser', Version=1, Params=params)
-        params['Entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetPassword(self, changes):
-        '''
-        changes : typing.Sequence[~EntityPassword]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='UserManager', Request='SetPassword', Version=1, Params=params)
-        params['Changes'] = changes
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(UserInfoResults)
-    async def UserInfo(self, entities, include_disabled):
-        '''
-        entities : typing.Sequence[~Entity]
-        include_disabled : bool
-        Returns -> typing.Sequence[~UserInfoResult]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='UserManager', Request='UserInfo', Version=1, Params=params)
-        params['entities'] = entities
-        params['include-disabled'] = include_disabled
-        reply = await self.rpc(msg)
-        return reply
-
-
-class VolumeAttachmentsWatcher(Type):
-    name = 'VolumeAttachmentsWatcher'
-    version = 2
-    schema =     {'definitions': {'Error': {'additionalProperties': False,
-                               'properties': {'Code': {'type': 'string'},
-                                              'Info': {'$ref': '#/definitions/ErrorInfo'},
-                                              'Message': {'type': 'string'}},
-                               'required': ['Message', 'Code'],
-                               'type': 'object'},
-                     'ErrorInfo': {'additionalProperties': False,
-                                   'properties': {'Macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                  'MacaroonPath': {'type': 'string'}},
-                                   'type': 'object'},
-                     'Macaroon': {'additionalProperties': False,
-                                  'properties': {'caveats': {'items': {'$ref': '#/definitions/caveat'},
-                                                             'type': 'array'},
-                                                 'data': {'items': {'type': 'integer'},
-                                                          'type': 'array'},
-                                                 'id': {'$ref': '#/definitions/packet'},
-                                                 'location': {'$ref': '#/definitions/packet'},
-                                                 'sig': {'items': {'type': 'integer'},
-                                                         'type': 'array'}},
-                                  'required': ['data',
-                                               'location',
-                                               'id',
-                                               'caveats',
-                                               'sig'],
-                                  'type': 'object'},
-                     'MachineStorageId': {'additionalProperties': False,
-                                          'properties': {'attachmenttag': {'type': 'string'},
-                                                         'machinetag': {'type': 'string'}},
-                                          'required': ['machinetag',
-                                                       'attachmenttag'],
-                                          'type': 'object'},
-                     'MachineStorageIdsWatchResult': {'additionalProperties': False,
-                                                      'properties': {'Changes': {'items': {'$ref': '#/definitions/MachineStorageId'},
-                                                                                 'type': 'array'},
-                                                                     'Error': {'$ref': '#/definitions/Error'},
-                                                                     'MachineStorageIdsWatcherId': {'type': 'string'}},
-                                                      'required': ['MachineStorageIdsWatcherId',
-                                                                   'Changes',
-                                                                   'Error'],
-                                                      'type': 'object'},
-                     'caveat': {'additionalProperties': False,
-                                'properties': {'caveatId': {'$ref': '#/definitions/packet'},
-                                               'location': {'$ref': '#/definitions/packet'},
-                                               'verificationId': {'$ref': '#/definitions/packet'}},
-                                'required': ['location',
-                                             'caveatId',
-                                             'verificationId'],
-                                'type': 'object'},
-                     'packet': {'additionalProperties': False,
-                                'properties': {'headerLen': {'type': 'integer'},
-                                               'start': {'type': 'integer'},
-                                               'totalLen': {'type': 'integer'}},
-                                'required': ['start', 'totalLen', 'headerLen'],
-                                'type': 'object'}},
-     'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/MachineStorageIdsWatchResult'}},
-                             'type': 'object'},
-                    'Stop': {'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(MachineStorageIdsWatchResult)
-    async def Next(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[~MachineStorageId], _ForwardRef('Error')]
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='VolumeAttachmentsWatcher', Request='Next', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Stop(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        params = dict()
-        msg = dict(Type='VolumeAttachmentsWatcher', Request='Stop', Version=2, Params=params)
-
-        reply = await self.rpc(msg)
-        return reply
-
+for o in overrides.__patches__:
+    c_type = getattr(_client, o)
+    o_type = getattr(overrides, o)
+    for a in dir(o_type):
+        if not a.startswith('_'):
+            setattr(c_type, a, getattr(o_type, a))
 
+from ._client import *  # noqa