dev/
.pytest_cache
pytestdebug.log
+.vscode/
env:
global: >
TEST_AGENTS='{"agents":[{"url":"https://api.staging.jujucharms.com/identity","username":"libjuju-ci@yellow"}],"key":{"private":"88OOCxIHQNguRG7zFg2y2Hx5Ob0SeVKKBRnjyehverc=","public":"fDn20+5FGyN2hYO7z0rFUyoHGUnfrleslUNtoYsjNSs="}}'
- LXD_PASSWORD="password"
PATH="/snap/bin:$PATH"
matrix:
- python: 3.7-dev
env: JUJU_CHANNEL=edge
before_script:
- - sudo lxd waitready --timeout 30
- - sudo lxc storage create default dir
- - sudo lxd init --auto --trust-password="${LXD_PASSWORD}" --network-address='[::]' --network-port=8443
+ # Run lint before performing more expensive operations (fail fast/early)
+ - tox -e lint
- # I suspect these could be integrated into the lxd init call
- - sudo sudo mkdir /var/snap/lxd/common/lxd/storage-pools/juju-zfs
- - sudo lxc storage create juju-zfs dir source=/var/snap/lxd/common/lxd/storage-pools/juju-zfs # Horrible workaround to LP Bug #1738614
+ # init lxd for tests
+ - sudo lxd waitready --timeout 30
+ - sudo chmod 666 /var/snap/lxd/common/lxd/unix.socket
+ - lxd init --auto --network-address='[::]' --network-port=8443 --storage-backend=dir
- - sudo addgroup lxd || true
- - sudo usermod -a -G lxd $USER || true
- # Trigger generation of the client certificates
- - sg lxd -c "echo y|lxc remote add "$USER" https://0.0.0.0:8443 --accept-certificate --password='${LXD_PASSWORD}'"
+ # Horrible workaround to LP Bug #1738614
+ - sudo mkdir /var/snap/lxd/common/lxd/storage-pools/juju-zfs
+ - lxc storage create juju-zfs dir source=/var/snap/lxd/common/lxd/storage-pools/juju-zfs
script:
- - sudo -E sudo -u $USER -E juju bootstrap localhost test --config 'identity-url=https://api.staging.jujucharms.com/identity' --config 'allow-model-access=true'
+ - juju bootstrap localhost test --config 'identity-url=https://api.staging.jujucharms.com/identity' --config 'allow-model-access=true'
- tox -e py3,integration,serial
.tox:
tox -r --notest
-client:
+client: .tox
ifndef SCHEMAGEN
$(error "schemagen is not available, please install from https://github.com/juju/schemagen")
endif
test:
tox
+.PHONY: lint
+lint:
+ tox -e lint --notest
+
docs: .tox
$(PIP) install -r docs/requirements.txt
rm -rf docs/_build/
release:
git fetch --tags
- $(PY) setup.py sdist upload
+ rm dist/*.tar.gz
+ $(PY) setup.py sdist
+ $(BIN)/twine upload --repository-url https://upload.pypi.org/legacy/ dist/*
git tag ${VERSION}
git push --tags
-<<<<<<< HEAD
-0.7.3
-=======
-0.9.1
->>>>>>> 8a2d5bc35a302a970244b3c307a4f47deac0af63
+0.11.3
Changelog
---------
-<<<<<<< HEAD
-=======
+0.11.3
+^^^^^^
+Wednesday March 13 2019
+
+* k8s bundles no longer have application placement (#293)
+* Add retry for connection if all endpoints fail (#288)
+* Support generation of registration string for model sharing. (#279)
+* Add Twine for dist upload on release (#284)
+
+
+0.11.2
+^^^^^^
+Wednesday January 16 2019
+
+* update facade methods for Juju 2.5-rc2 (#281)
+* Add test case for redirect during connect (#275)
+* Implement App.get_resources and pinned resources in bundles (#278)
+
+
+0.11.1
+^^^^^^
+Thursday December 13 2018
+
+* Fix bundles with subordinates for Juju <2.5 (#277)
+
+
+0.11.0
+^^^^^^
+Tuesday December 11 2018
+
+* Updates for new Juju version (#274)
+* Fix wrong variable name in revoke_model function (#271)
+
+
+0.10.2
+^^^^^^
+Tuesday September 18 2018
+
+* set include_stats to false to reduce request time (#266)
+
+
+0.10.1
+^^^^^^
+Monday September 17 2018
+
+* Retry ssh in manual provision test (#265)
+* Clean up lint and add lint coverage to travis config (#263)
+* Increase the timeout for charmstore connections (#262)
+* Fix log level of `Driver connected to juju` message (#258)
+
+
+0.10.0
+^^^^^^
+Thursday August 16 2018
+
+* Fix error due to scp extra opts order (#260)
+* Implement set/get model constraints (#253)
+
+
+>>>>>>> b8a8281b1785358bd5632a119c016f21811172c6
0.9.1
^^^^^
Monday July 16 2018
* Add doc req to force newer pymacaroons to fix RTD builds
* Fix dependency conflict for building docs
->>>>>>> 8a2d5bc35a302a970244b3c307a4f47deac0af63
0.7.3
^^^^^
Tuesday Feb 20 2018
* Make Application.upgrade_charm upgrade resources (#158)
* Expand integration tests to use stable/edge versions of juju (#155)
* Move docs to ReadTheDocs (https://pythonlibjuju.readthedocs.io/en/latest/)
-<<<<<<< HEAD
-
-0.6.1
-^^^^^
-Fri Sept 29 2017
-
-* Fix failure when controller supports newer facade version (#145)
-* Fix test failures (#163)
-* Fix SSH key handling when adding a new model (#161)
-* Make Application.upgrade_charm upgrade resources (#158)
-* Expand integration tests to use stable/edge versions of juju (#155)
-* Move docs to ReadTheDocs (https://pythonlibjuju.readthedocs.io/en/latest/)
-=======
->>>>>>> 8a2d5bc35a302a970244b3c307a4f47deac0af63
0.6.0
^^^^^
add_units = add_unit
+ async def scale(self, scale=None, scale_change=None):
+ """
+ Set or adjust the scale of this (K8s) application.
+
+ One or the other of scale or scale_change must be provided.
+
+ :param int scale: Scale to which to set this application.
+ :param int scale_change: Amount by which to adjust the scale of this
+ application (can be positive or negative).
+ """
+ app_facade = client.ApplicationFacade.from_connection(self.connection)
+
+ if (scale, scale_change) == (None, None):
+ raise ValueError('Must provide either scale or scale_change')
+
+ log.debug(
+ 'Scaling application %s %s %s',
+ self.name, 'to' if scale else 'by', scale or scale_change)
+
+ await app_facade.ScaleApplications([
+ client.ScaleApplicationParam(application_tag=self.tag,
+ scale=scale,
+ scale_change=scale_change)
+ ])
+
def allocate(self, budget, value):
"""Allocate budget to this application.
actions = {k: v['description'] for k, v in actions.items()}
return actions
- def get_resources(self, details=False):
+ async def get_resources(self):
"""Return resources for this application.
- :param bool details: Include detailed info about resources used by each
- unit
-
+ Returns a dict mapping resource name to
+ :class:`~juju._definitions.CharmResource` instances.
"""
- raise NotImplementedError()
+ facade = client.ResourcesFacade.from_connection(self.connection)
+ response = await facade.ListResources([client.Entity(self.tag)])
+
+ resources = dict()
+ for result in response.results:
+ for resource in result.charm_store_resources or []:
+ resources[resource.name] = resource
+ for resource in result.resources or []:
+ if resource.charmresource:
+ resource = resource.charmresource
+ resources[resource.name] = resource
+ return resources
async def run(self, command, timeout=None):
"""Run command on all units for this application.
"""
Restore application config to default values.
- :param list to_default: A list of config options to be reset to their default value.
+ :param list to_default: A list of config options to be reset to their
+ default value.
"""
app_facade = client.ApplicationFacade.from_connection(self.connection)
# DO NOT CHANGE THIS FILE! This file is auto-generated by facade.py.
# Changes will be overwritten/lost when the file is regenerated.
-from juju.client import _client1, _client2, _client3, _client4, _client5
-from juju.client._definitions import * # noqa
+from juju.client._definitions import *
+
+from juju.client import _client2, _client1, _client3, _client4, _client5, _client8, _client7, _client9
+
CLIENTS = {
- "1": _client1,
"2": _client2,
+ "1": _client1,
"3": _client3,
"4": _client4,
- "5": _client5
+ "5": _client5,
+ "8": _client8,
+ "7": _client7,
+ "9": _client9
}
def lookup_facade(name, version):
- """
- Given a facade name and version, attempt to pull that facade out
- of the correct client<version>.py file.
-
- """
- for _version in range(int(version), 0, -1):
- try:
- facade = getattr(CLIENTS[str(_version)], name)
- return facade
- except (KeyError, AttributeError):
- continue
- else:
- raise ImportError("No supported version for facade: "
- "{}".format(name))
+ """
+ Given a facade name and version, attempt to pull that facade out
+ of the correct client<version>.py file.
+
+ """
+ for _version in range(int(version), 0, -1):
+ try:
+ facade = getattr(CLIENTS[str(_version)], name)
+ return facade
+ except (KeyError, AttributeError):
+ continue
+ else:
+ raise ImportError("No supported version for facade: "
+ "{}".format(name))
class TypeFactory:
facade_name = facade_name[:-len('Facade')]
version = connection.facades.get(facade_name)
if version is None:
- raise Exception('No facade {} in facades {}'.format(facade_name, connection.facades))
+ raise Exception('No facade {} in facades {}'.format(facade_name,
+ connection.facades))
c = lookup_facade(cls.__name__, version)
c = c()
pass
+class ActionPrunerFacade(TypeFactory):
+ pass
+
+
class AgentFacade(TypeFactory):
pass
pass
+class ApplicationOffersFacade(TypeFactory):
+ pass
+
+
class ApplicationRelationsWatcherFacade(TypeFactory):
pass
pass
+class CAASAgentFacade(TypeFactory):
+ pass
+
+
+class CAASFirewallerFacade(TypeFactory):
+ pass
+
+
+class CAASOperatorFacade(TypeFactory):
+ pass
+
+
+class CAASOperatorProvisionerFacade(TypeFactory):
+ pass
+
+
+class CAASUnitProvisionerFacade(TypeFactory):
+ pass
+
+
class CharmRevisionUpdaterFacade(TypeFactory):
pass
pass
+class CredentialManagerFacade(TypeFactory):
+ pass
+
+
+class CredentialValidatorFacade(TypeFactory):
+ pass
+
+
+class CrossControllerFacade(TypeFactory):
+ pass
+
+
+class CrossModelRelationsFacade(TypeFactory):
+ pass
+
+
class DeployerFacade(TypeFactory):
pass
pass
+class ExternalControllerUpdaterFacade(TypeFactory):
+ pass
+
+
+class FanConfigurerFacade(TypeFactory):
+ pass
+
+
class FilesystemAttachmentsWatcherFacade(TypeFactory):
pass
+class FirewallRulesFacade(TypeFactory):
+ pass
+
+
class FirewallerFacade(TypeFactory):
pass
pass
+class ModelUpgraderFacade(TypeFactory):
+ pass
+
+
class NotifyWatcherFacade(TypeFactory):
pass
+class OfferStatusWatcherFacade(TypeFactory):
+ pass
+
+
class PayloadsFacade(TypeFactory):
pass
pass
+class RelationStatusWatcherFacade(TypeFactory):
+ pass
+
+
class RelationUnitsWatcherFacade(TypeFactory):
pass
pass
+class RemoteRelationsFacade(TypeFactory):
+ pass
+
+
class RemoteRelationsWatcherFacade(TypeFactory):
pass
pass
+class UpgradeSeriesFacade(TypeFactory):
+ pass
+
+
class UpgraderFacade(TypeFactory):
pass
pass
+class VolumeAttachmentPlansWatcherFacade(TypeFactory):
+ pass
+
+
class VolumeAttachmentsWatcherFacade(TypeFactory):
pass
from juju.client.facade import ReturnMapping, Type
+class ActionPrunerFacade(Type):
+ name = 'ActionPruner'
+ version = 1
+ schema = {'definitions': {'ActionPruneArgs': {'additionalProperties': False,
+ 'properties': {'max-history-mb': {'type': 'integer'},
+ 'max-history-time': {'type': 'integer'}},
+ 'required': ['max-history-time',
+ 'max-history-mb'],
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'ModelConfigResult': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ 'type': 'object'}},
+ 'properties': {'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}},
+ 'type': 'object'},
+ 'Prune': {'properties': {'Params': {'$ref': '#/definitions/ActionPruneArgs'}},
+ 'type': 'object'},
+ 'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
+ '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='ActionPruner',
+ request='ModelConfig',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Prune(self, max_history_mb, max_history_time):
+ '''
+ max_history_mb : int
+ max_history_time : int
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ActionPruner',
+ request='Prune',
+ version=1,
+ params=_params)
+ _params['max-history-mb'] = max_history_mb
+ _params['max-history-time'] = max_history_time
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NotifyWatchResult)
+ async def WatchForModelConfigChanges(self):
+ '''
+
+ Returns -> typing.Union[str, _ForwardRef('Error')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ActionPruner',
+ request='WatchForModelConfigChanges',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
class AgentToolsFacade(Type):
name = 'AgentTools'
version = 1
schema = {'properties': {'UpdateToolsAvailable': {'type': 'object'}}, 'type': 'object'}
-
+
@ReturnMapping(None)
async def UpdateToolsAvailable(self):
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='AgentTools', request='UpdateToolsAvailable', version=1, params=_params)
+ msg = dict(type='AgentTools',
+ request='UpdateToolsAvailable',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
'type': 'object'},
'Stop': {'type': 'object'}},
'type': 'object'}
-
+
@ReturnMapping(AllWatcherNextResults)
async def Next(self):
'''
- Returns -> typing.Sequence<+T_co>[~Delta]<~Delta>
+ Returns -> typing.Sequence[~Delta]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='AllWatcher', request='Next', version=1, params=_params)
+ msg = dict(type='AllWatcher',
+ request='Next',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='AllWatcher', request='Stop', version=1, params=_params)
+ msg = dict(type='AllWatcher',
+ request='Stop',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
'type': 'object'},
'Stop': {'type': 'object'}},
'type': 'object'}
-
+
@ReturnMapping(ApplicationRelationsWatchResult)
async def Next(self):
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ApplicationRelationsWatcher', request='Next', version=1, params=_params)
+ msg = dict(type='ApplicationRelationsWatcher',
+ request='Next',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ApplicationRelationsWatcher', request='Stop', version=1, params=_params)
+ msg = dict(type='ApplicationRelationsWatcher',
+ request='Stop',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
'Watch': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
'type': 'object'}},
'type': 'object'}
-
+
@ReturnMapping(ErrorResults)
async def Rescale(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ApplicationScaler', request='Rescale', version=1, params=_params)
+ msg = dict(type='ApplicationScaler',
+ request='Rescale',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
async def Watch(self):
'''
- Returns -> typing.Union[typing.Sequence<+T_co>[str], _ForwardRef('Error')]
+ Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ApplicationScaler', request='Watch', version=1, params=_params)
+ msg = dict(type='ApplicationScaler',
+ request='Watch',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
'Restore': {'properties': {'Params': {'$ref': '#/definitions/RestoreArgs'}},
'type': 'object'}},
'type': 'object'}
-
+
@ReturnMapping(BackupsMetadataResult)
async def Create(self, notes):
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Backups', request='Create', version=1, params=_params)
+ msg = dict(type='Backups',
+ request='Create',
+ version=1,
+ params=_params)
_params['notes'] = notes
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Backups', request='FinishRestore', version=1, params=_params)
+ msg = dict(type='Backups',
+ request='FinishRestore',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Backups', request='Info', version=1, params=_params)
+ msg = dict(type='Backups',
+ request='Info',
+ version=1,
+ params=_params)
_params['id'] = id_
reply = await self.rpc(msg)
return reply
async def List(self):
'''
- Returns -> typing.Sequence<+T_co>[~BackupsMetadataResult]<~BackupsMetadataResult>
+ Returns -> typing.Sequence[~BackupsMetadataResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Backups', request='List', version=1, params=_params)
+ msg = dict(type='Backups',
+ request='List',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Backups', request='PrepareRestore', version=1, params=_params)
+ msg = dict(type='Backups',
+ request='PrepareRestore',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Backups', request='Remove', version=1, params=_params)
+ msg = dict(type='Backups',
+ request='Remove',
+ version=1,
+ params=_params)
_params['id'] = id_
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Backups', request='Restore', version=1, params=_params)
+ msg = dict(type='Backups',
+ request='Restore',
+ version=1,
+ params=_params)
_params['backup-id'] = backup_id
reply = await self.rpc(msg)
return reply
'Result': {'$ref': '#/definitions/BundleChangesResults'}},
'type': 'object'}},
'type': 'object'}
-
+
@ReturnMapping(BundleChangesResults)
async def GetChanges(self, yaml):
'''
yaml : str
- Returns -> typing.Sequence<+T_co>[~BundleChange]<~BundleChange>
+ Returns -> typing.Union[typing.Sequence[~BundleChange], typing.Sequence[str]]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Bundle', request='GetChanges', version=1, params=_params)
+ msg = dict(type='Bundle',
+ request='GetChanges',
+ version=1,
+ params=_params)
_params['yaml'] = yaml
reply = await self.rpc(msg)
return reply
-class ClientFacade(Type):
- name = 'Client'
+class CAASAgentFacade(Type):
+ name = 'CAASAgent'
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'},
- 'macaroon': {'$ref': '#/definitions/Macaroon'},
- 'url': {'type': 'string'}},
- 'required': ['url',
- 'channel',
- 'macaroon'],
- 'type': 'object'},
- 'AddMachineParams': {'additionalProperties': False,
- 'properties': {'addresses': {'items': {'$ref': '#/definitions/Address'},
- 'type': 'array'},
- 'constraints': {'$ref': '#/definitions/Value'},
- 'container-type': {'type': 'string'},
- 'disks': {'items': {'$ref': '#/definitions/Constraints'},
- 'type': 'array'},
- 'hardware-characteristics': {'$ref': '#/definitions/HardwareCharacteristics'},
- 'instance-id': {'type': 'string'},
- 'jobs': {'items': {'type': 'string'},
- 'type': 'array'},
- 'nonce': {'type': 'string'},
- 'parent-id': {'type': 'string'},
- 'placement': {'$ref': '#/definitions/Placement'},
- 'series': {'type': 'string'}},
- 'required': ['series',
- 'constraints',
- 'jobs',
- 'parent-id',
- 'container-type',
- 'instance-id',
- 'nonce',
- 'hardware-characteristics',
- 'addresses'],
- 'type': 'object'},
- 'AddMachines': {'additionalProperties': False,
- 'properties': {'params': {'items': {'$ref': '#/definitions/AddMachineParams'},
- 'type': 'array'}},
- 'required': ['params'],
- 'type': 'object'},
- 'AddMachinesResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'},
- 'machine': {'type': 'string'}},
- 'required': ['machine'],
- 'type': 'object'},
- 'AddMachinesResults': {'additionalProperties': False,
- 'properties': {'machines': {'items': {'$ref': '#/definitions/AddMachinesResult'},
- 'type': 'array'}},
- 'required': ['machines'],
- 'type': 'object'},
- 'Address': {'additionalProperties': False,
- 'properties': {'scope': {'type': 'string'},
- 'space-name': {'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': {'watcher-id': {'type': 'string'}},
- 'required': ['watcher-id'],
- 'type': 'object'},
- 'ApplicationStatus': {'additionalProperties': False,
- 'properties': {'can-upgrade-to': {'type': 'string'},
- 'charm': {'type': 'string'},
- 'err': {'additionalProperties': True,
+ schema = {'definitions': {'CloudCredential': {'additionalProperties': False,
+ 'properties': {'attrs': {'patternProperties': {'.*': {'type': 'string'}},
'type': 'object'},
- 'exposed': {'type': 'boolean'},
- 'life': {'type': 'string'},
- 'meter-statuses': {'patternProperties': {'.*': {'$ref': '#/definitions/MeterStatus'}},
- 'type': 'object'},
- 'relations': {'patternProperties': {'.*': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'type': 'object'},
- 'series': {'type': 'string'},
- 'status': {'$ref': '#/definitions/DetailedStatus'},
- 'subordinate-to': {'items': {'type': 'string'},
- 'type': 'array'},
- 'units': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitStatus'}},
- 'type': 'object'},
- 'workload-version': {'type': 'string'}},
- 'required': ['charm',
- 'series',
- 'exposed',
- 'life',
- 'relations',
- 'can-upgrade-to',
- 'subordinate-to',
- 'units',
- 'meter-statuses',
- 'status',
- 'workload-version'],
- 'type': 'object'},
- 'Binary': {'additionalProperties': False,
- 'properties': {'Arch': {'type': 'string'},
- 'Number': {'$ref': '#/definitions/Number'},
- 'Series': {'type': 'string'}},
- 'required': ['Number', 'Series', 'Arch'],
+ 'auth-type': {'type': 'string'},
+ 'redacted': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['auth-type'],
+ 'type': 'object'},
+ 'CloudSpec': {'additionalProperties': False,
+ 'properties': {'cacertificates': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'credential': {'$ref': '#/definitions/CloudCredential'},
+ 'endpoint': {'type': 'string'},
+ 'identity-endpoint': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'region': {'type': 'string'},
+ 'storage-endpoint': {'type': 'string'},
+ 'type': {'type': 'string'}},
+ 'required': ['type', 'name'],
+ 'type': 'object'},
+ 'CloudSpecResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/CloudSpec'}},
+ 'type': 'object'},
+ 'CloudSpecResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/CloudSpecResult'},
+ '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'},
- 'BundleChange': {'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'},
- 'BundleChangesParams': {'additionalProperties': False,
- 'properties': {'yaml': {'type': 'string'}},
- 'required': ['yaml'],
- 'type': 'object'},
- 'BundleChangesResults': {'additionalProperties': False,
- 'properties': {'changes': {'items': {'$ref': '#/definitions/BundleChange'},
- 'type': 'array'},
- 'errors': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'type': 'object'},
- 'BytesResult': {'additionalProperties': False,
- 'properties': {'result': {'items': {'type': 'integer'},
- 'type': 'array'}},
- 'required': ['result'],
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'ModelConfigResult': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'ModelTag': {'additionalProperties': False, 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ 'type': 'object'}},
+ 'properties': {'CloudSpec': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/CloudSpecResults'}},
+ 'type': 'object'},
+ 'GetCloudSpec': {'properties': {'Params': {'$ref': '#/definitions/ModelTag'},
+ 'Result': {'$ref': '#/definitions/CloudSpecResult'}},
'type': 'object'},
- 'ConfigValue': {'additionalProperties': False,
- 'properties': {'source': {'type': 'string'},
- 'value': {'additionalProperties': True,
- 'type': 'object'}},
- 'required': ['value', 'source'],
- 'type': 'object'},
- 'Constraints': {'additionalProperties': False,
- 'properties': {'Count': {'type': 'integer'},
- 'Pool': {'type': 'string'},
- 'Size': {'type': 'integer'}},
- 'required': ['Pool', 'Size', 'Count'],
+ 'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}},
+ 'type': 'object'},
+ 'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
+ 'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(CloudSpecResults)
+ async def CloudSpec(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~CloudSpecResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASAgent',
+ request='CloudSpec',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(CloudSpecResult)
+ async def GetCloudSpec(self):
+ '''
+
+ Returns -> typing.Union[_ForwardRef('Error'), _ForwardRef('CloudSpec')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASAgent',
+ request='GetCloudSpec',
+ version=1,
+ 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='CAASAgent',
+ request='ModelConfig',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NotifyWatchResult)
+ async def WatchForModelConfigChanges(self):
+ '''
+
+ Returns -> typing.Union[str, _ForwardRef('Error')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASAgent',
+ request='WatchForModelConfigChanges',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class CAASFirewallerFacade(Type):
+ name = 'CAASFirewaller'
+ version = 1
+ schema = {'definitions': {'ApplicationGetConfigResults': {'additionalProperties': False,
+ 'properties': {'Results': {'items': {'$ref': '#/definitions/ConfigResult'},
+ 'type': 'array'}},
+ 'required': ['Results'],
+ 'type': 'object'},
+ 'BoolResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'boolean'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'BoolResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/BoolResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
'type': 'object'},
- 'DestroyMachines': {'additionalProperties': False,
- 'properties': {'force': {'type': 'boolean'},
- 'machine-names': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'required': ['machine-names', 'force'],
- 'type': 'object'},
- 'DetailedStatus': {'additionalProperties': False,
- 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'ConfigResult': {'additionalProperties': False,
+ 'properties': {'config': {'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'],
- 'type': 'object'},
- 'EndpointStatus': {'additionalProperties': False,
- 'properties': {'application': {'type': 'string'},
- 'name': {'type': 'string'},
- 'role': {'type': 'string'},
- 'subordinate': {'type': 'boolean'}},
- 'required': ['application',
- 'name',
- 'role',
- 'subordinate'],
- 'type': 'object'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['config'],
+ 'type': 'object'},
'Entities': {'additionalProperties': False,
'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
'type': 'array'}},
'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', 'since'],
- 'type': 'object'},
'Error': {'additionalProperties': False,
'properties': {'code': {'type': 'string'},
'info': {'$ref': '#/definitions/ErrorInfo'},
'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
'macaroon-path': {'type': 'string'}},
'type': 'object'},
- 'ErrorResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/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'},
- 'major': {'type': 'integer'},
- 'minor': {'type': 'integer'},
- 'number': {'$ref': '#/definitions/Number'},
- 'series': {'type': 'string'}},
- 'required': ['number',
- 'major',
- 'minor',
- 'arch',
- 'series'],
- 'type': 'object'},
- 'FindToolsResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'},
- 'list': {'items': {'$ref': '#/definitions/Tools'},
- 'type': 'array'}},
- 'required': ['list'],
- 'type': 'object'},
- 'FullStatus': {'additionalProperties': False,
- 'properties': {'applications': {'patternProperties': {'.*': {'$ref': '#/definitions/ApplicationStatus'}},
- 'type': 'object'},
- 'machines': {'patternProperties': {'.*': {'$ref': '#/definitions/MachineStatus'}},
- 'type': 'object'},
- 'model': {'$ref': '#/definitions/ModelStatusInfo'},
- 'relations': {'items': {'$ref': '#/definitions/RelationStatus'},
- 'type': 'array'},
- 'remote-applications': {'patternProperties': {'.*': {'$ref': '#/definitions/RemoteApplicationStatus'}},
- 'type': 'object'}},
- 'required': ['model',
- 'machines',
- 'applications',
- 'remote-applications',
- 'relations'],
+ 'LifeResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'life': {'type': 'string'}},
+ 'required': ['life'],
'type': 'object'},
- 'GetConstraintsResults': {'additionalProperties': False,
- 'properties': {'constraints': {'$ref': '#/definitions/Value'}},
- 'required': ['constraints'],
- 'type': 'object'},
- 'HardwareCharacteristics': {'additionalProperties': False,
- 'properties': {'arch': {'type': 'string'},
- 'availability-zone': {'type': 'string'},
- 'cpu-cores': {'type': 'integer'},
- 'cpu-power': {'type': 'integer'},
- 'mem': {'type': 'integer'},
- 'root-disk': {'type': 'integer'},
- 'tags': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'type': 'object'},
- 'History': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'},
- 'statuses': {'items': {'$ref': '#/definitions/DetailedStatus'},
- 'type': 'array'}},
- 'required': ['statuses'],
- 'type': 'object'},
- 'HostPort': {'additionalProperties': False,
- 'properties': {'Address': {'$ref': '#/definitions/Address'},
- 'port': {'type': 'integer'}},
- 'required': ['Address', 'port'],
- 'type': 'object'},
- 'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'MachineHardware': {'additionalProperties': False,
- 'properties': {'arch': {'type': 'string'},
- 'availability-zone': {'type': 'string'},
- 'cores': {'type': 'integer'},
- 'cpu-power': {'type': 'integer'},
- 'mem': {'type': 'integer'},
- 'root-disk': {'type': 'integer'},
- 'tags': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'type': 'object'},
- 'MachineStatus': {'additionalProperties': False,
- 'properties': {'agent-status': {'$ref': '#/definitions/DetailedStatus'},
- 'constraints': {'type': 'string'},
- 'containers': {'patternProperties': {'.*': {'$ref': '#/definitions/MachineStatus'}},
- 'type': 'object'},
- 'dns-name': {'type': 'string'},
- 'hardware': {'type': 'string'},
- 'has-vote': {'type': 'boolean'},
- 'id': {'type': 'string'},
- 'instance-id': {'type': 'string'},
- 'instance-status': {'$ref': '#/definitions/DetailedStatus'},
- 'ip-addresses': {'items': {'type': 'string'},
- 'type': 'array'},
- 'jobs': {'items': {'type': 'string'},
- 'type': 'array'},
- 'network-interfaces': {'patternProperties': {'.*': {'$ref': '#/definitions/NetworkInterface'}},
- 'type': 'object'},
- 'series': {'type': 'string'},
- 'wants-vote': {'type': 'boolean'}},
- 'required': ['agent-status',
- 'instance-status',
- 'dns-name',
- 'instance-id',
- 'series',
- 'id',
- 'containers',
- 'constraints',
- 'hardware',
- 'jobs',
- 'has-vote',
- 'wants-vote'],
- 'type': 'object'},
- 'MeterStatus': {'additionalProperties': False,
- 'properties': {'color': {'type': 'string'},
- 'message': {'type': 'string'}},
- 'required': ['color', 'message'],
+ 'LifeResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
'type': 'object'},
- 'ModelConfigResults': {'additionalProperties': False,
- 'properties': {'config': {'patternProperties': {'.*': {'$ref': '#/definitions/ConfigValue'}},
- 'type': 'object'}},
- 'required': ['config'],
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ 'type': 'object'},
+ 'NotifyWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
'type': 'object'},
- 'ModelInfo': {'additionalProperties': False,
- 'properties': {'agent-version': {'$ref': '#/definitions/Number'},
- 'cloud-credential-tag': {'type': 'string'},
- 'cloud-region': {'type': 'string'},
- 'cloud-tag': {'type': 'string'},
- 'controller-uuid': {'type': 'string'},
- 'default-series': {'type': 'string'},
- 'life': {'type': 'string'},
- 'machines': {'items': {'$ref': '#/definitions/ModelMachineInfo'},
- 'type': 'array'},
- 'migration': {'$ref': '#/definitions/ModelMigrationStatus'},
- 'name': {'type': 'string'},
- 'owner-tag': {'type': 'string'},
- 'provider-type': {'type': 'string'},
- 'sla': {'$ref': '#/definitions/ModelSLAInfo'},
- 'status': {'$ref': '#/definitions/EntityStatus'},
- 'users': {'items': {'$ref': '#/definitions/ModelUserInfo'},
- 'type': 'array'},
- 'uuid': {'type': 'string'}},
- 'required': ['name',
- 'uuid',
- 'controller-uuid',
- 'cloud-tag',
- 'owner-tag',
- 'life',
- 'users',
- 'machines',
- 'sla',
- 'agent-version'],
- 'type': 'object'},
- 'ModelMachineInfo': {'additionalProperties': False,
- 'properties': {'hardware': {'$ref': '#/definitions/MachineHardware'},
- 'has-vote': {'type': 'boolean'},
- 'id': {'type': 'string'},
- 'instance-id': {'type': 'string'},
- 'status': {'type': 'string'},
- 'wants-vote': {'type': 'boolean'}},
- 'required': ['id'],
+ 'StringsWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
+ 'type': 'object'}},
+ 'properties': {'ApplicationsConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ApplicationGetConfigResults'}},
+ 'type': 'object'},
+ 'IsExposed': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/BoolResults'}},
+ 'type': 'object'},
+ 'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/LifeResults'}},
+ 'type': 'object'},
+ 'Watch': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
+ 'type': 'object'},
+ 'WatchApplications': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
+ 'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(ApplicationGetConfigResults)
+ async def ApplicationsConfig(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ConfigResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASFirewaller',
+ request='ApplicationsConfig',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(BoolResults)
+ async def IsExposed(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~BoolResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASFirewaller',
+ request='IsExposed',
+ 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='CAASFirewaller',
+ 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='CAASFirewaller',
+ request='Watch',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsWatchResult)
+ async def WatchApplications(self):
+ '''
+
+ Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASFirewaller',
+ request='WatchApplications',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class CAASOperatorFacade(Type):
+ name = 'CAASOperator'
+ 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'},
+ 'space-name': {'type': 'string'},
+ 'type': {'type': 'string'},
+ 'value': {'type': 'string'}},
+ 'required': ['value', 'type', 'scope'],
+ 'type': 'object'},
+ 'ApplicationCharm': {'additionalProperties': False,
+ 'properties': {'charm-modified-version': {'type': 'integer'},
+ 'force-upgrade': {'type': 'boolean'},
+ 'sha256': {'type': 'string'},
+ 'url': {'type': 'string'}},
+ 'required': ['url',
+ 'sha256',
+ 'charm-modified-version'],
'type': 'object'},
- 'ModelMigrationStatus': {'additionalProperties': False,
- 'properties': {'end': {'format': 'date-time',
- 'type': 'string'},
- 'start': {'format': 'date-time',
- 'type': 'string'},
- 'status': {'type': 'string'}},
- 'required': ['status', 'start'],
- 'type': 'object'},
- 'ModelSLA': {'additionalProperties': False,
- 'properties': {'ModelSLAInfo': {'$ref': '#/definitions/ModelSLAInfo'},
- 'creds': {'items': {'type': 'integer'},
- 'type': 'array'}},
- 'required': ['ModelSLAInfo', 'creds'],
+ 'ApplicationCharmResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/ApplicationCharm'}},
+ 'type': 'object'},
+ 'ApplicationCharmResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ApplicationCharmResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ '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'},
- 'ModelSLAInfo': {'additionalProperties': False,
- 'properties': {'level': {'type': 'string'},
- 'owner': {'type': 'string'}},
- 'required': ['level', 'owner'],
+ 'EntitiesVersion': {'additionalProperties': False,
+ 'properties': {'agent-tools': {'items': {'$ref': '#/definitions/EntityVersion'},
+ 'type': 'array'}},
+ 'required': ['agent-tools'],
+ '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'},
+ 'EntityString': {'additionalProperties': False,
+ 'properties': {'tag': {'type': 'string'},
+ 'value': {'type': 'string'}},
+ 'required': ['tag', 'value'],
'type': 'object'},
- 'ModelSet': {'additionalProperties': False,
- 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
- 'type': 'object'}},
- 'type': 'object'}},
- 'required': ['config'],
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/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'},
- 'ModelStatusInfo': {'additionalProperties': False,
- 'properties': {'available-version': {'type': 'string'},
- 'cloud-tag': {'type': 'string'},
- 'meter-status': {'$ref': '#/definitions/MeterStatus'},
- 'model-status': {'$ref': '#/definitions/DetailedStatus'},
- 'name': {'type': 'string'},
- 'region': {'type': 'string'},
- 'sla': {'type': 'string'},
- 'version': {'type': 'string'}},
- 'required': ['name',
- 'cloud-tag',
- 'version',
- 'available-version',
- 'model-status',
- 'meter-status',
- 'sla'],
- 'type': 'object'},
- 'ModelUnset': {'additionalProperties': False,
- 'properties': {'keys': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'required': ['keys'],
+ 'LifeResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'life': {'type': 'string'}},
+ 'required': ['life'],
'type': 'object'},
- 'ModelUserInfo': {'additionalProperties': False,
- 'properties': {'access': {'type': 'string'},
- 'display-name': {'type': 'string'},
- 'last-connection': {'format': 'date-time',
- 'type': 'string'},
- 'user': {'type': 'string'}},
- 'required': ['user',
- 'display-name',
- 'last-connection',
- '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'},
- 'NetworkInterface': {'additionalProperties': False,
- 'properties': {'dns-nameservers': {'items': {'type': 'string'},
- 'type': 'array'},
- 'gateway': {'type': 'string'},
- 'ip-addresses': {'items': {'type': 'string'},
- 'type': 'array'},
- 'is-up': {'type': 'boolean'},
- 'mac-address': {'type': 'string'},
- 'space': {'type': 'string'}},
- 'required': ['ip-addresses',
- 'mac-address',
- 'is-up'],
- 'type': 'object'},
+ 'LifeResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'ModelResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'name': {'type': 'string'},
+ 'type': {'type': 'string'},
+ 'uuid': {'type': 'string'}},
+ 'required': ['name', 'uuid', 'type'],
+ 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ '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'},
'Patch',
'Build'],
'type': 'object'},
- 'Placement': {'additionalProperties': False,
- 'properties': {'directive': {'type': 'string'},
- 'scope': {'type': 'string'}},
- 'required': ['scope', 'directive'],
+ 'SetPodSpecParams': {'additionalProperties': False,
+ 'properties': {'specs': {'items': {'$ref': '#/definitions/EntityString'},
+ 'type': 'array'}},
+ 'required': ['specs'],
+ 'type': 'object'},
+ 'SetStatus': {'additionalProperties': False,
+ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'},
+ 'type': 'array'}},
+ 'required': ['entities'],
'type': 'object'},
- 'PrivateAddress': {'additionalProperties': False,
- 'properties': {'target': {'type': 'string'}},
- 'required': ['target'],
- 'type': 'object'},
- 'PrivateAddressResults': {'additionalProperties': False,
- 'properties': {'private-address': {'type': 'string'}},
- 'required': ['private-address'],
- 'type': 'object'},
- 'ProvisioningScriptParams': {'additionalProperties': False,
- 'properties': {'data-dir': {'type': 'string'},
- 'disable-package-commands': {'type': 'boolean'},
- 'machine-id': {'type': 'string'},
- 'nonce': {'type': 'string'}},
- 'required': ['machine-id',
- 'nonce',
- 'data-dir',
- 'disable-package-commands'],
- 'type': 'object'},
- 'ProvisioningScriptResult': {'additionalProperties': False,
- 'properties': {'script': {'type': 'string'}},
- 'required': ['script'],
- 'type': 'object'},
- 'PublicAddress': {'additionalProperties': False,
- 'properties': {'target': {'type': 'string'}},
- 'required': ['target'],
+ 'StringResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'string'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'StringsResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'items': {'type': 'string'},
+ 'type': 'array'}},
'type': 'object'},
- 'PublicAddressResults': {'additionalProperties': False,
- 'properties': {'public-address': {'type': 'string'}},
- 'required': ['public-address'],
- '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'},
- 'RemoteApplicationStatus': {'additionalProperties': False,
- 'properties': {'application-name': {'type': 'string'},
- 'application-url': {'type': 'string'},
- 'endpoints': {'items': {'$ref': '#/definitions/RemoteEndpoint'},
- 'type': 'array'},
- 'err': {'additionalProperties': True,
- 'type': 'object'},
- 'life': {'type': 'string'},
- 'relations': {'patternProperties': {'.*': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'type': 'object'},
- 'status': {'$ref': '#/definitions/DetailedStatus'}},
- 'required': ['application-url',
- 'application-name',
- 'endpoints',
- 'life',
- 'relations',
- 'status'],
- 'type': 'object'},
- 'RemoteEndpoint': {'additionalProperties': False,
- 'properties': {'interface': {'type': 'string'},
- 'limit': {'type': 'integer'},
- 'name': {'type': 'string'},
- 'role': {'type': 'string'},
- 'scope': {'type': 'string'}},
- 'required': ['name',
- 'role',
- 'interface',
- 'limit',
- 'scope'],
- 'type': 'object'},
- 'ResolveCharmResult': {'additionalProperties': False,
- 'properties': {'error': {'type': 'string'},
- 'url': {'type': 'string'}},
+ 'StringsWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
'type': 'object'},
- 'ResolveCharmResults': {'additionalProperties': False,
- 'properties': {'urls': {'items': {'$ref': '#/definitions/ResolveCharmResult'},
- 'type': 'array'}},
- 'required': ['urls'],
+ 'StringsWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
'type': 'object'},
- 'ResolveCharms': {'additionalProperties': False,
- 'properties': {'references': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'required': ['references'],
- 'type': 'object'},
- 'Resolved': {'additionalProperties': False,
- 'properties': {'retry': {'type': 'boolean'},
- 'unit-name': {'type': 'string'}},
- 'required': ['unit-name', 'retry'],
+ 'Version': {'additionalProperties': False,
+ 'properties': {'version': {'$ref': '#/definitions/Binary'}},
+ 'required': ['version'],
+ 'type': 'object'}},
+ 'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}},
+ 'type': 'object'},
+ 'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}},
+ 'type': 'object'},
+ 'Charm': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ApplicationCharmResults'}},
+ 'type': 'object'},
+ 'CurrentModel': {'properties': {'Result': {'$ref': '#/definitions/ModelResult'}},
+ 'type': 'object'},
+ 'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/LifeResults'}},
+ 'type': 'object'},
+ 'ModelUUID': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
'type': 'object'},
- 'SetConstraints': {'additionalProperties': False,
- 'properties': {'application': {'type': 'string'},
- 'constraints': {'$ref': '#/definitions/Value'}},
- 'required': ['application', 'constraints'],
- 'type': 'object'},
- 'SetModelAgentVersion': {'additionalProperties': False,
- 'properties': {'version': {'$ref': '#/definitions/Number'}},
- 'required': ['version'],
- 'type': 'object'},
- 'StatusHistoryFilter': {'additionalProperties': False,
- 'properties': {'date': {'format': 'date-time',
- 'type': 'string'},
- 'delta': {'type': 'integer'},
- 'exclude': {'items': {'type': 'string'},
- 'type': 'array'},
- 'size': {'type': 'integer'}},
- 'required': ['size',
- 'date',
- 'delta',
- 'exclude'],
- 'type': 'object'},
- 'StatusHistoryRequest': {'additionalProperties': False,
- 'properties': {'filter': {'$ref': '#/definitions/StatusHistoryFilter'},
- 'historyKind': {'type': 'string'},
- 'size': {'type': 'integer'},
- 'tag': {'type': 'string'}},
- 'required': ['historyKind',
- 'size',
- 'filter',
- 'tag'],
- 'type': 'object'},
- 'StatusHistoryRequests': {'additionalProperties': False,
- 'properties': {'requests': {'items': {'$ref': '#/definitions/StatusHistoryRequest'},
- 'type': 'array'}},
- 'required': ['requests'],
+ 'Remove': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'SetPodSpec': {'properties': {'Params': {'$ref': '#/definitions/SetPodSpecParams'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'SetTools': {'properties': {'Params': {'$ref': '#/definitions/EntitiesVersion'},
+ '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'},
+ '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='CAASOperator',
+ 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='CAASOperator',
+ request='APIHostPorts',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ApplicationCharmResults)
+ async def Charm(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ApplicationCharmResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASOperator',
+ request='Charm',
+ version=1,
+ 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='CAASOperator',
+ request='CurrentModel',
+ 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='CAASOperator',
+ 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='CAASOperator',
+ 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='CAASOperator',
+ request='Remove',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetPodSpec(self, specs):
+ '''
+ specs : typing.Sequence[~EntityString]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASOperator',
+ request='SetPodSpec',
+ version=1,
+ params=_params)
+ _params['specs'] = specs
+ 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='CAASOperator',
+ request='SetStatus',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetTools(self, agent_tools):
+ '''
+ agent_tools : typing.Sequence[~EntityVersion]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASOperator',
+ request='SetTools',
+ version=1,
+ params=_params)
+ _params['agent-tools'] = agent_tools
+ 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='CAASOperator',
+ 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[str, _ForwardRef('Error')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASOperator',
+ 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='CAASOperator',
+ request='WatchUnits',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class CAASOperatorProvisionerFacade(Type):
+ name = 'CAASOperatorProvisioner'
+ 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'},
+ 'space-name': {'type': 'string'},
+ 'type': {'type': 'string'},
+ 'value': {'type': 'string'}},
+ 'required': ['value', 'type', 'scope'],
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/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'},
+ 'KubernetesFilesystemAttachmentParams': {'additionalProperties': False,
+ 'properties': {'mount-point': {'type': 'string'},
+ 'provider': {'type': 'string'},
+ 'read-only': {'type': 'boolean'}},
+ 'required': ['provider'],
+ 'type': 'object'},
+ 'KubernetesFilesystemParams': {'additionalProperties': False,
+ 'properties': {'attachment': {'$ref': '#/definitions/KubernetesFilesystemAttachmentParams'},
+ 'attributes': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'provider': {'type': 'string'},
+ 'size': {'type': 'integer'},
+ 'storagename': {'type': 'string'},
+ 'tags': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'}},
+ 'required': ['storagename',
+ 'size',
+ 'provider'],
+ 'type': 'object'},
+ 'LifeResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'life': {'type': 'string'}},
+ 'required': ['life'],
+ 'type': 'object'},
+ 'LifeResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ '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'},
+ 'OperatorProvisioningInfo': {'additionalProperties': False,
+ 'properties': {'api-addresses': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'charm-storage': {'$ref': '#/definitions/KubernetesFilesystemParams'},
+ 'image-path': {'type': 'string'},
+ 'tags': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'version': {'$ref': '#/definitions/Number'}},
+ 'required': ['image-path',
+ 'version',
+ 'api-addresses',
+ 'charm-storage'],
+ 'type': 'object'},
+ 'StringResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'string'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'StringsResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'StringsWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
+ 'type': 'object'}},
+ 'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}},
+ 'type': 'object'},
+ 'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}},
+ 'type': 'object'},
+ 'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/LifeResults'}},
+ 'type': 'object'},
+ 'ModelUUID': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
+ 'type': 'object'},
+ 'OperatorProvisioningInfo': {'properties': {'Result': {'$ref': '#/definitions/OperatorProvisioningInfo'}},
+ 'type': 'object'},
+ 'SetPasswords': {'properties': {'Params': {'$ref': '#/definitions/EntityPasswords'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'WatchAPIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
+ 'type': 'object'},
+ 'WatchApplications': {'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='CAASOperatorProvisioner',
+ 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='CAASOperatorProvisioner',
+ request='APIHostPorts',
+ 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='CAASOperatorProvisioner',
+ 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='CAASOperatorProvisioner',
+ request='ModelUUID',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(OperatorProvisioningInfo)
+ async def OperatorProvisioningInfo(self):
+ '''
+
+ Returns -> typing.Union[typing.Sequence[str], _ForwardRef('KubernetesFilesystemParams'), str, typing.Mapping[str, str], _ForwardRef('Number')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASOperatorProvisioner',
+ request='OperatorProvisioningInfo',
+ version=1,
+ 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='CAASOperatorProvisioner',
+ request='SetPasswords',
+ version=1,
+ params=_params)
+ _params['changes'] = changes
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NotifyWatchResult)
+ async def WatchAPIHostPorts(self):
+ '''
+
+ Returns -> typing.Union[str, _ForwardRef('Error')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASOperatorProvisioner',
+ request='WatchAPIHostPorts',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsWatchResult)
+ async def WatchApplications(self):
+ '''
+
+ Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASOperatorProvisioner',
+ request='WatchApplications',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class CAASUnitProvisionerFacade(Type):
+ name = 'CAASUnitProvisioner'
+ version = 1
+ schema = {'definitions': {'Address': {'additionalProperties': False,
+ 'properties': {'scope': {'type': 'string'},
+ 'space-name': {'type': 'string'},
+ 'type': {'type': 'string'},
+ 'value': {'type': 'string'}},
+ 'required': ['value', 'type', 'scope'],
+ 'type': 'object'},
+ 'ApplicationGetConfigResults': {'additionalProperties': False,
+ 'properties': {'Results': {'items': {'$ref': '#/definitions/ConfigResult'},
+ 'type': 'array'}},
+ 'required': ['Results'],
+ 'type': 'object'},
+ 'ApplicationUnitParams': {'additionalProperties': False,
+ 'properties': {'address': {'type': 'string'},
+ 'data': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'filesystem-info': {'items': {'$ref': '#/definitions/KubernetesFilesystemInfo'},
+ 'type': 'array'},
+ 'info': {'type': 'string'},
+ 'ports': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'provider-id': {'type': 'string'},
+ 'status': {'type': 'string'},
+ 'unit-tag': {'type': 'string'}},
+ 'required': ['provider-id',
+ 'unit-tag',
+ 'address',
+ 'ports',
+ 'status',
+ 'info'],
+ 'type': 'object'},
+ 'ConfigResult': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['config'],
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'IntResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'integer'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'IntResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/IntResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'KubernetesDeviceParams': {'additionalProperties': False,
+ 'properties': {'Attributes': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'Count': {'type': 'integer'},
+ 'Type': {'type': 'string'}},
+ 'required': ['Type',
+ 'Count',
+ 'Attributes'],
+ 'type': 'object'},
+ 'KubernetesFilesystemAttachmentParams': {'additionalProperties': False,
+ 'properties': {'mount-point': {'type': 'string'},
+ 'provider': {'type': 'string'},
+ 'read-only': {'type': 'boolean'}},
+ 'required': ['provider'],
+ 'type': 'object'},
+ 'KubernetesFilesystemInfo': {'additionalProperties': False,
+ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'filesystem-id': {'type': 'string'},
+ 'info': {'type': 'string'},
+ 'mount-point': {'type': 'string'},
+ 'pool': {'type': 'string'},
+ 'read-only': {'type': 'boolean'},
+ 'size': {'type': 'integer'},
+ 'status': {'type': 'string'},
+ 'storagename': {'type': 'string'},
+ 'volume': {'$ref': '#/definitions/KubernetesVolumeInfo'}},
+ 'required': ['storagename',
+ 'pool',
+ 'size',
+ 'filesystem-id',
+ 'status',
+ 'info',
+ 'volume'],
+ 'type': 'object'},
+ 'KubernetesFilesystemParams': {'additionalProperties': False,
+ 'properties': {'attachment': {'$ref': '#/definitions/KubernetesFilesystemAttachmentParams'},
+ 'attributes': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'provider': {'type': 'string'},
+ 'size': {'type': 'integer'},
+ 'storagename': {'type': 'string'},
+ 'tags': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'}},
+ 'required': ['storagename',
+ 'size',
+ 'provider'],
+ 'type': 'object'},
+ 'KubernetesProvisioningInfo': {'additionalProperties': False,
+ 'properties': {'constraints': {'$ref': '#/definitions/Value'},
+ 'devices': {'items': {'$ref': '#/definitions/KubernetesDeviceParams'},
+ 'type': 'array'},
+ 'filesystems': {'items': {'$ref': '#/definitions/KubernetesFilesystemParams'},
+ 'type': 'array'},
+ 'placement': {'type': 'string'},
+ 'pod-spec': {'type': 'string'},
+ 'tags': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'volumes': {'items': {'$ref': '#/definitions/KubernetesVolumeParams'},
+ 'type': 'array'}},
+ 'required': ['pod-spec',
+ 'constraints'],
+ 'type': 'object'},
+ 'KubernetesProvisioningInfoResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/KubernetesProvisioningInfo'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'KubernetesProvisioningInfoResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/KubernetesProvisioningInfoResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'KubernetesVolumeAttachmentParams': {'additionalProperties': False,
+ 'properties': {'provider': {'type': 'string'},
+ 'read-only': {'type': 'boolean'}},
+ 'required': ['provider'],
+ 'type': 'object'},
+ 'KubernetesVolumeInfo': {'additionalProperties': False,
+ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'info': {'type': 'string'},
+ 'persistent': {'type': 'boolean'},
+ 'pool': {'type': 'string'},
+ 'size': {'type': 'integer'},
+ 'status': {'type': 'string'},
+ 'volume-id': {'type': 'string'}},
+ 'required': ['volume-id',
+ 'size',
+ 'persistent',
+ 'status',
+ 'info'],
+ 'type': 'object'},
+ 'KubernetesVolumeParams': {'additionalProperties': False,
+ 'properties': {'attachment': {'$ref': '#/definitions/KubernetesVolumeAttachmentParams'},
+ 'attributes': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'provider': {'type': 'string'},
+ 'size': {'type': 'integer'},
+ 'storagename': {'type': 'string'},
+ 'tags': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'}},
+ 'required': ['storagename',
+ 'size',
+ 'provider'],
+ 'type': 'object'},
+ 'LifeResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'life': {'type': 'string'}},
+ 'required': ['life'],
+ 'type': 'object'},
+ 'LifeResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ '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'},
+ 'StringsWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
+ 'type': 'object'},
+ 'UpdateApplicationServiceArg': {'additionalProperties': False,
+ 'properties': {'addresses': {'items': {'$ref': '#/definitions/Address'},
+ 'type': 'array'},
+ 'application-tag': {'type': 'string'},
+ 'provider-id': {'type': 'string'}},
+ 'required': ['application-tag',
+ 'provider-id',
+ 'addresses'],
+ 'type': 'object'},
+ 'UpdateApplicationServiceArgs': {'additionalProperties': False,
+ 'properties': {'args': {'items': {'$ref': '#/definitions/UpdateApplicationServiceArg'},
+ 'type': 'array'}},
+ 'required': ['args'],
+ 'type': 'object'},
+ 'UpdateApplicationUnitArgs': {'additionalProperties': False,
+ 'properties': {'args': {'items': {'$ref': '#/definitions/UpdateApplicationUnits'},
+ 'type': 'array'}},
+ 'required': ['args'],
+ 'type': 'object'},
+ 'UpdateApplicationUnits': {'additionalProperties': False,
+ 'properties': {'application-tag': {'type': 'string'},
+ 'units': {'items': {'$ref': '#/definitions/ApplicationUnitParams'},
+ 'type': 'array'}},
+ 'required': ['application-tag',
+ 'units'],
+ 'type': 'object'},
+ 'Value': {'additionalProperties': False,
+ 'properties': {'arch': {'type': 'string'},
+ 'container': {'type': 'string'},
+ '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'},
+ 'zones': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'}},
+ 'properties': {'ApplicationsConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ApplicationGetConfigResults'}},
+ 'type': 'object'},
+ 'ApplicationsScale': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/IntResults'}},
+ 'type': 'object'},
+ 'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/LifeResults'}},
+ 'type': 'object'},
+ 'ProvisioningInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/KubernetesProvisioningInfoResults'}},
+ 'type': 'object'},
+ 'SetOperatorStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'UpdateApplicationsService': {'properties': {'Params': {'$ref': '#/definitions/UpdateApplicationServiceArgs'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'UpdateApplicationsUnits': {'properties': {'Params': {'$ref': '#/definitions/UpdateApplicationUnitArgs'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'WatchApplications': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
+ 'type': 'object'},
+ 'WatchApplicationsScale': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
+ 'type': 'object'},
+ 'WatchPodSpec': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
+ 'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(ApplicationGetConfigResults)
+ async def ApplicationsConfig(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ConfigResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASUnitProvisioner',
+ request='ApplicationsConfig',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(IntResults)
+ async def ApplicationsScale(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~IntResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASUnitProvisioner',
+ request='ApplicationsScale',
+ 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='CAASUnitProvisioner',
+ request='Life',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(KubernetesProvisioningInfoResults)
+ async def ProvisioningInfo(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~KubernetesProvisioningInfoResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASUnitProvisioner',
+ request='ProvisioningInfo',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetOperatorStatus(self, entities):
+ '''
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASUnitProvisioner',
+ request='SetOperatorStatus',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def UpdateApplicationsService(self, args):
+ '''
+ args : typing.Sequence[~UpdateApplicationServiceArg]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASUnitProvisioner',
+ request='UpdateApplicationsService',
+ version=1,
+ params=_params)
+ _params['args'] = args
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def UpdateApplicationsUnits(self, args):
+ '''
+ args : typing.Sequence[~UpdateApplicationUnits]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASUnitProvisioner',
+ request='UpdateApplicationsUnits',
+ version=1,
+ params=_params)
+ _params['args'] = args
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsWatchResult)
+ async def WatchApplications(self):
+ '''
+
+ Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASUnitProvisioner',
+ request='WatchApplications',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NotifyWatchResults)
+ async def WatchApplicationsScale(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASUnitProvisioner',
+ request='WatchApplicationsScale',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NotifyWatchResults)
+ async def WatchPodSpec(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CAASUnitProvisioner',
+ request='WatchPodSpec',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class ClientFacade(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'},
+ 'macaroon': {'$ref': '#/definitions/Macaroon'},
+ 'url': {'type': 'string'}},
+ 'required': ['url',
+ 'channel',
+ 'macaroon'],
+ 'type': 'object'},
+ 'AddMachineParams': {'additionalProperties': False,
+ 'properties': {'addresses': {'items': {'$ref': '#/definitions/Address'},
+ 'type': 'array'},
+ 'constraints': {'$ref': '#/definitions/Value'},
+ 'container-type': {'type': 'string'},
+ 'disks': {'items': {'$ref': '#/definitions/Constraints'},
+ 'type': 'array'},
+ 'hardware-characteristics': {'$ref': '#/definitions/HardwareCharacteristics'},
+ 'instance-id': {'type': 'string'},
+ 'jobs': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'nonce': {'type': 'string'},
+ 'parent-id': {'type': 'string'},
+ 'placement': {'$ref': '#/definitions/Placement'},
+ 'series': {'type': 'string'}},
+ 'required': ['series',
+ 'constraints',
+ 'jobs',
+ 'parent-id',
+ 'container-type',
+ 'instance-id',
+ 'nonce',
+ 'hardware-characteristics',
+ 'addresses'],
+ 'type': 'object'},
+ 'AddMachines': {'additionalProperties': False,
+ 'properties': {'params': {'items': {'$ref': '#/definitions/AddMachineParams'},
+ 'type': 'array'}},
+ 'required': ['params'],
+ 'type': 'object'},
+ 'AddMachinesResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'machine': {'type': 'string'}},
+ 'required': ['machine'],
+ 'type': 'object'},
+ 'AddMachinesResults': {'additionalProperties': False,
+ 'properties': {'machines': {'items': {'$ref': '#/definitions/AddMachinesResult'},
+ 'type': 'array'}},
+ 'required': ['machines'],
+ 'type': 'object'},
+ 'Address': {'additionalProperties': False,
+ 'properties': {'scope': {'type': 'string'},
+ 'space-name': {'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': {'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
+ 'type': 'object'},
+ 'ApplicationStatus': {'additionalProperties': False,
+ 'properties': {'can-upgrade-to': {'type': 'string'},
+ 'charm': {'type': 'string'},
+ 'err': {'additionalProperties': True,
+ 'type': 'object'},
+ 'exposed': {'type': 'boolean'},
+ 'life': {'type': 'string'},
+ 'meter-statuses': {'patternProperties': {'.*': {'$ref': '#/definitions/MeterStatus'}},
+ 'type': 'object'},
+ 'relations': {'patternProperties': {'.*': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'series': {'type': 'string'},
+ 'status': {'$ref': '#/definitions/DetailedStatus'},
+ 'subordinate-to': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'units': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitStatus'}},
+ 'type': 'object'},
+ 'workload-version': {'type': 'string'}},
+ 'required': ['charm',
+ 'series',
+ 'exposed',
+ 'life',
+ 'relations',
+ 'can-upgrade-to',
+ 'subordinate-to',
+ 'units',
+ 'meter-statuses',
+ 'status',
+ 'workload-version'],
+ 'type': 'object'},
+ 'Binary': {'additionalProperties': False,
+ 'properties': {'Arch': {'type': 'string'},
+ 'Number': {'$ref': '#/definitions/Number'},
+ 'Series': {'type': 'string'}},
+ 'required': ['Number', 'Series', 'Arch'],
+ 'type': 'object'},
+ 'BundleChange': {'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'},
+ 'BundleChangesParams': {'additionalProperties': False,
+ 'properties': {'yaml': {'type': 'string'}},
+ 'required': ['yaml'],
+ 'type': 'object'},
+ 'BundleChangesResults': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'$ref': '#/definitions/BundleChange'},
+ 'type': 'array'},
+ 'errors': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'BytesResult': {'additionalProperties': False,
+ 'properties': {'result': {'items': {'type': 'integer'},
+ 'type': 'array'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'ConfigValue': {'additionalProperties': False,
+ 'properties': {'source': {'type': 'string'},
+ 'value': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'required': ['value', 'source'],
+ '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'},
+ 'machine-names': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['machine-names', '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'],
+ 'type': 'object'},
+ 'EndpointStatus': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'role': {'type': 'string'},
+ 'subordinate': {'type': 'boolean'}},
+ 'required': ['application',
+ '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', '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/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'},
+ 'major': {'type': 'integer'},
+ 'minor': {'type': 'integer'},
+ 'number': {'$ref': '#/definitions/Number'},
+ 'series': {'type': 'string'}},
+ 'required': ['number',
+ 'major',
+ 'minor',
+ 'arch',
+ 'series'],
+ 'type': 'object'},
+ 'FindToolsResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'list': {'items': {'$ref': '#/definitions/Tools'},
+ 'type': 'array'}},
+ 'required': ['list'],
+ 'type': 'object'},
+ 'FullStatus': {'additionalProperties': False,
+ 'properties': {'applications': {'patternProperties': {'.*': {'$ref': '#/definitions/ApplicationStatus'}},
+ 'type': 'object'},
+ 'machines': {'patternProperties': {'.*': {'$ref': '#/definitions/MachineStatus'}},
+ 'type': 'object'},
+ 'model': {'$ref': '#/definitions/ModelStatusInfo'},
+ 'relations': {'items': {'$ref': '#/definitions/RelationStatus'},
+ 'type': 'array'},
+ 'remote-applications': {'patternProperties': {'.*': {'$ref': '#/definitions/RemoteApplicationStatus'}},
+ 'type': 'object'}},
+ 'required': ['model',
+ 'machines',
+ 'applications',
+ 'remote-applications',
+ 'relations'],
+ 'type': 'object'},
+ 'GetConstraintsResults': {'additionalProperties': False,
+ 'properties': {'constraints': {'$ref': '#/definitions/Value'}},
+ 'required': ['constraints'],
+ 'type': 'object'},
+ 'HardwareCharacteristics': {'additionalProperties': False,
+ 'properties': {'arch': {'type': 'string'},
+ 'availability-zone': {'type': 'string'},
+ 'cpu-cores': {'type': 'integer'},
+ 'cpu-power': {'type': 'integer'},
+ 'mem': {'type': 'integer'},
+ 'root-disk': {'type': 'integer'},
+ 'tags': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'History': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'statuses': {'items': {'$ref': '#/definitions/DetailedStatus'},
+ 'type': 'array'}},
+ 'required': ['statuses'],
+ 'type': 'object'},
+ 'HostPort': {'additionalProperties': False,
+ 'properties': {'Address': {'$ref': '#/definitions/Address'},
+ 'port': {'type': 'integer'}},
+ 'required': ['Address', 'port'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'MachineHardware': {'additionalProperties': False,
+ 'properties': {'arch': {'type': 'string'},
+ 'availability-zone': {'type': 'string'},
+ 'cores': {'type': 'integer'},
+ 'cpu-power': {'type': 'integer'},
+ 'mem': {'type': 'integer'},
+ 'root-disk': {'type': 'integer'},
+ 'tags': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'MachineStatus': {'additionalProperties': False,
+ 'properties': {'agent-status': {'$ref': '#/definitions/DetailedStatus'},
+ 'constraints': {'type': 'string'},
+ 'containers': {'patternProperties': {'.*': {'$ref': '#/definitions/MachineStatus'}},
+ 'type': 'object'},
+ 'dns-name': {'type': 'string'},
+ 'hardware': {'type': 'string'},
+ 'has-vote': {'type': 'boolean'},
+ 'id': {'type': 'string'},
+ 'instance-id': {'type': 'string'},
+ 'instance-status': {'$ref': '#/definitions/DetailedStatus'},
+ 'ip-addresses': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'jobs': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'network-interfaces': {'patternProperties': {'.*': {'$ref': '#/definitions/NetworkInterface'}},
+ 'type': 'object'},
+ 'series': {'type': 'string'},
+ 'wants-vote': {'type': 'boolean'}},
+ 'required': ['agent-status',
+ 'instance-status',
+ 'dns-name',
+ 'instance-id',
+ 'series',
+ 'id',
+ 'containers',
+ 'constraints',
+ 'hardware',
+ 'jobs',
+ 'has-vote',
+ 'wants-vote'],
+ 'type': 'object'},
+ 'MeterStatus': {'additionalProperties': False,
+ 'properties': {'color': {'type': 'string'},
+ 'message': {'type': 'string'}},
+ 'required': ['color', 'message'],
+ 'type': 'object'},
+ 'ModelConfigResults': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'$ref': '#/definitions/ConfigValue'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'ModelInfo': {'additionalProperties': False,
+ 'properties': {'agent-version': {'$ref': '#/definitions/Number'},
+ 'cloud-credential-tag': {'type': 'string'},
+ 'cloud-region': {'type': 'string'},
+ 'cloud-tag': {'type': 'string'},
+ 'controller-uuid': {'type': 'string'},
+ 'default-series': {'type': 'string'},
+ 'life': {'type': 'string'},
+ 'machines': {'items': {'$ref': '#/definitions/ModelMachineInfo'},
+ 'type': 'array'},
+ 'migration': {'$ref': '#/definitions/ModelMigrationStatus'},
+ 'name': {'type': 'string'},
+ 'owner-tag': {'type': 'string'},
+ 'provider-type': {'type': 'string'},
+ 'sla': {'$ref': '#/definitions/ModelSLAInfo'},
+ 'status': {'$ref': '#/definitions/EntityStatus'},
+ 'users': {'items': {'$ref': '#/definitions/ModelUserInfo'},
+ 'type': 'array'},
+ 'uuid': {'type': 'string'}},
+ 'required': ['name',
+ 'uuid',
+ 'controller-uuid',
+ 'cloud-tag',
+ 'owner-tag',
+ 'life',
+ 'users',
+ 'machines',
+ 'sla',
+ 'agent-version'],
+ 'type': 'object'},
+ 'ModelMachineInfo': {'additionalProperties': False,
+ 'properties': {'hardware': {'$ref': '#/definitions/MachineHardware'},
+ 'has-vote': {'type': 'boolean'},
+ 'id': {'type': 'string'},
+ 'instance-id': {'type': 'string'},
+ 'status': {'type': 'string'},
+ 'wants-vote': {'type': 'boolean'}},
+ 'required': ['id'],
+ 'type': 'object'},
+ 'ModelMigrationStatus': {'additionalProperties': False,
+ 'properties': {'end': {'format': 'date-time',
+ 'type': 'string'},
+ 'start': {'format': 'date-time',
+ 'type': 'string'},
+ 'status': {'type': 'string'}},
+ 'required': ['status', 'start'],
+ 'type': 'object'},
+ 'ModelSLA': {'additionalProperties': False,
+ 'properties': {'ModelSLAInfo': {'$ref': '#/definitions/ModelSLAInfo'},
+ 'creds': {'items': {'type': 'integer'},
+ 'type': 'array'}},
+ 'required': ['ModelSLAInfo', 'creds'],
+ 'type': 'object'},
+ 'ModelSLAInfo': {'additionalProperties': False,
+ 'properties': {'level': {'type': 'string'},
+ 'owner': {'type': 'string'}},
+ 'required': ['level', 'owner'],
+ 'type': 'object'},
+ 'ModelSet': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'ModelStatusInfo': {'additionalProperties': False,
+ 'properties': {'available-version': {'type': 'string'},
+ 'cloud-tag': {'type': 'string'},
+ 'meter-status': {'$ref': '#/definitions/MeterStatus'},
+ 'model-status': {'$ref': '#/definitions/DetailedStatus'},
+ 'name': {'type': 'string'},
+ 'region': {'type': 'string'},
+ 'sla': {'type': 'string'},
+ 'version': {'type': 'string'}},
+ 'required': ['name',
+ 'cloud-tag',
+ 'version',
+ 'available-version',
+ 'model-status',
+ 'meter-status',
+ 'sla'],
+ 'type': 'object'},
+ 'ModelUnset': {'additionalProperties': False,
+ 'properties': {'keys': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['keys'],
+ 'type': 'object'},
+ 'ModelUserInfo': {'additionalProperties': False,
+ 'properties': {'access': {'type': 'string'},
+ 'display-name': {'type': 'string'},
+ 'last-connection': {'format': 'date-time',
+ 'type': 'string'},
+ 'user': {'type': 'string'}},
+ 'required': ['user',
+ 'display-name',
+ 'last-connection',
+ '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'},
+ 'NetworkInterface': {'additionalProperties': False,
+ 'properties': {'dns-nameservers': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'gateway': {'type': 'string'},
+ 'ip-addresses': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'is-up': {'type': 'boolean'},
+ 'mac-address': {'type': 'string'},
+ 'space': {'type': 'string'}},
+ 'required': ['ip-addresses',
+ 'mac-address',
+ 'is-up'],
+ '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': {'private-address': {'type': 'string'}},
+ 'required': ['private-address'],
+ 'type': 'object'},
+ 'ProvisioningScriptParams': {'additionalProperties': False,
+ 'properties': {'data-dir': {'type': 'string'},
+ 'disable-package-commands': {'type': 'boolean'},
+ 'machine-id': {'type': 'string'},
+ 'nonce': {'type': 'string'}},
+ 'required': ['machine-id',
+ 'nonce',
+ 'data-dir',
+ 'disable-package-commands'],
+ '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': {'public-address': {'type': 'string'}},
+ 'required': ['public-address'],
+ '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'},
+ 'RemoteApplicationStatus': {'additionalProperties': False,
+ 'properties': {'application-name': {'type': 'string'},
+ 'application-url': {'type': 'string'},
+ 'endpoints': {'items': {'$ref': '#/definitions/RemoteEndpoint'},
+ 'type': 'array'},
+ 'err': {'additionalProperties': True,
+ 'type': 'object'},
+ 'life': {'type': 'string'},
+ 'relations': {'patternProperties': {'.*': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'status': {'$ref': '#/definitions/DetailedStatus'}},
+ 'required': ['application-url',
+ 'application-name',
+ 'endpoints',
+ 'life',
+ 'relations',
+ 'status'],
+ 'type': 'object'},
+ 'RemoteEndpoint': {'additionalProperties': False,
+ 'properties': {'interface': {'type': 'string'},
+ 'limit': {'type': 'integer'},
+ 'name': {'type': 'string'},
+ 'role': {'type': 'string'},
+ 'scope': {'type': 'string'}},
+ 'required': ['name',
+ 'role',
+ 'interface',
+ 'limit',
+ 'scope'],
+ 'type': 'object'},
+ 'ResolveCharmResult': {'additionalProperties': False,
+ 'properties': {'error': {'type': 'string'},
+ 'url': {'type': 'string'}},
+ 'type': 'object'},
+ 'ResolveCharmResults': {'additionalProperties': False,
+ 'properties': {'urls': {'items': {'$ref': '#/definitions/ResolveCharmResult'},
+ 'type': 'array'}},
+ 'required': ['urls'],
+ 'type': 'object'},
+ 'ResolveCharms': {'additionalProperties': False,
+ 'properties': {'references': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['references'],
+ 'type': 'object'},
+ 'Resolved': {'additionalProperties': False,
+ 'properties': {'retry': {'type': 'boolean'},
+ 'unit-name': {'type': 'string'}},
+ 'required': ['unit-name', 'retry'],
+ 'type': 'object'},
+ 'SetConstraints': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'},
+ 'constraints': {'$ref': '#/definitions/Value'}},
+ 'required': ['application', 'constraints'],
+ 'type': 'object'},
+ 'SetModelAgentVersion': {'additionalProperties': False,
+ 'properties': {'version': {'$ref': '#/definitions/Number'}},
+ 'required': ['version'],
+ 'type': 'object'},
+ 'StatusHistoryFilter': {'additionalProperties': False,
+ 'properties': {'date': {'format': 'date-time',
+ 'type': 'string'},
+ 'delta': {'type': 'integer'},
+ 'exclude': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'size': {'type': 'integer'}},
+ 'required': ['size',
+ 'date',
+ 'delta',
+ 'exclude'],
+ 'type': 'object'},
+ 'StatusHistoryRequest': {'additionalProperties': False,
+ 'properties': {'filter': {'$ref': '#/definitions/StatusHistoryFilter'},
+ 'historyKind': {'type': 'string'},
+ 'size': {'type': 'integer'},
+ 'tag': {'type': 'string'}},
+ 'required': ['historyKind',
+ 'size',
+ 'filter',
+ 'tag'],
+ 'type': 'object'},
+ 'StatusHistoryRequests': {'additionalProperties': False,
+ 'properties': {'requests': {'items': {'$ref': '#/definitions/StatusHistoryRequest'},
+ 'type': 'array'}},
+ 'required': ['requests'],
+ 'type': 'object'},
+ 'StatusHistoryResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'history': {'$ref': '#/definitions/History'}},
+ 'required': ['history'],
+ 'type': 'object'},
+ 'StatusHistoryResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StatusHistoryResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'StatusParams': {'additionalProperties': False,
+ 'properties': {'patterns': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['patterns'],
+ 'type': 'object'},
+ 'StringResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'string'}},
+ 'required': ['result'],
+ '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'},
+ 'UnitStatus': {'additionalProperties': False,
+ 'properties': {'agent-status': {'$ref': '#/definitions/DetailedStatus'},
+ 'charm': {'type': 'string'},
+ 'leader': {'type': 'boolean'},
+ 'machine': {'type': 'string'},
+ 'opened-ports': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'public-address': {'type': 'string'},
+ 'subordinates': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitStatus'}},
+ 'type': 'object'},
+ 'workload-status': {'$ref': '#/definitions/DetailedStatus'},
+ 'workload-version': {'type': 'string'}},
+ 'required': ['agent-status',
+ 'workload-status',
+ 'workload-version',
+ 'machine',
+ 'opened-ports',
+ 'public-address',
+ 'charm',
+ 'subordinates'],
+ 'type': 'object'},
+ 'Value': {'additionalProperties': False,
+ 'properties': {'arch': {'type': 'string'},
+ 'container': {'type': 'string'},
+ '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'}},
+ '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'},
+ 'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}},
+ 'type': 'object'},
+ 'DestroyMachines': {'properties': {'Params': {'$ref': '#/definitions/DestroyMachines'}},
+ '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/BundleChangesParams'},
+ 'Result': {'$ref': '#/definitions/BundleChangesResults'}},
+ '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'},
+ 'SLALevel': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
+ 'type': 'object'},
+ 'SetModelAgentVersion': {'properties': {'Params': {'$ref': '#/definitions/SetModelAgentVersion'}},
+ 'type': 'object'},
+ 'SetModelConstraints': {'properties': {'Params': {'$ref': '#/definitions/SetConstraints'}},
+ 'type': 'object'},
+ 'SetSLALevel': {'properties': {'Params': {'$ref': '#/definitions/ModelSLA'}},
+ 'type': 'object'},
+ 'StatusHistory': {'properties': {'Params': {'$ref': '#/definitions/StatusHistoryRequests'},
+ '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, macaroon, url):
+ '''
+ channel : str
+ macaroon : 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['macaroon'] = macaroon
+ _params['url'] = url
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(AddMachinesResults)
+ async def AddMachines(self, params):
+ '''
+ params : 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['params'] = params
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(AddMachinesResults)
+ async def AddMachinesV2(self, params):
+ '''
+ params : 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['params'] = params
+ 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(BytesResult)
+ async def CACert(self):
+ '''
+
+ Returns -> typing.Sequence[int]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='CACert',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def DestroyMachines(self, force, machine_names):
+ '''
+ force : bool
+ machine_names : 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['machine-names'] = machine_names
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(FindToolsResult)
+ async def FindTools(self, arch, major, minor, number, series):
+ '''
+ arch : str
+ major : int
+ minor : 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['major'] = major
+ _params['minor'] = minor
+ _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.Mapping[str, ~ApplicationStatus], str, typing.Mapping[str, ~MachineStatus], _ForwardRef('ModelStatusInfo'), typing.Mapping[str, ~ApplicationOfferStatus], typing.Sequence[~RelationStatus], typing.Mapping[str, ~RemoteApplicationStatus]]
+ '''
+ # 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(BundleChangesResults)
+ async def GetBundleChanges(self, yaml):
+ '''
+ yaml : str
+ Returns -> typing.Union[typing.Sequence[~BundleChange], typing.Sequence[str]]
+ '''
+ # 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, params):
+ '''
+ params : 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['params'] = params
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ModelConfigResults)
+ async def ModelGet(self):
+ '''
+
+ Returns -> typing.Mapping[str, ~ConfigValue]
+ '''
+ # 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('Number'), str, typing.Sequence[~ModelMachineInfo], _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _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, data_dir, disable_package_commands, machine_id, nonce):
+ '''
+ data_dir : str
+ disable_package_commands : bool
+ machine_id : str
+ nonce : str
+ Returns -> str
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='ProvisioningScript',
+ version=1,
+ params=_params)
+ _params['data-dir'] = data_dir
+ _params['disable-package-commands'] = disable_package_commands
+ _params['machine-id'] = machine_id
+ _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[str]
+ 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, unit_name):
+ '''
+ retry : bool
+ unit_name : 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['unit-name'] = unit_name
+ 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(StringResult)
+ async def SLALevel(self):
+ '''
+
+ Returns -> typing.Union[_ForwardRef('Error'), str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='SLALevel',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def SetModelAgentVersion(self, version):
+ '''
+ version : Number
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='SetModelAgentVersion',
+ version=1,
+ params=_params)
+ _params['version'] = version
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def SetModelConstraints(self, application, constraints):
+ '''
+ application : str
+ constraints : Value
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='SetModelConstraints',
+ version=1,
+ params=_params)
+ _params['application'] = application
+ _params['constraints'] = constraints
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def SetSLALevel(self, creds, level):
+ '''
+ creds : typing.Sequence[int]
+ level : str
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='SetSLALevel',
+ version=1,
+ params=_params)
+ _params['creds'] = creds
+ _params['level'] = level
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StatusHistoryResults)
+ async def StatusHistory(self, requests):
+ '''
+ requests : typing.Sequence[~StatusHistoryRequest]
+ Returns -> typing.Sequence[~StatusHistoryResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='StatusHistory',
+ version=1,
+ params=_params)
+ _params['requests'] = requests
+ 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 CloudFacade(Type):
+ name = 'Cloud'
+ version = 1
+ schema = {'definitions': {'Cloud': {'additionalProperties': False,
+ 'properties': {'auth-types': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'endpoint': {'type': 'string'},
+ 'identity-endpoint': {'type': 'string'},
+ 'regions': {'items': {'$ref': '#/definitions/CloudRegion'},
+ 'type': 'array'},
+ 'storage-endpoint': {'type': 'string'},
+ 'type': {'type': 'string'}},
+ 'required': ['type'],
+ 'type': 'object'},
+ 'CloudCredential': {'additionalProperties': False,
+ 'properties': {'attrs': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'auth-type': {'type': 'string'},
+ 'redacted': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['auth-type'],
+ 'type': 'object'},
+ 'CloudCredentialResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/CloudCredential'}},
'type': 'object'},
- 'StatusHistoryResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'},
- 'history': {'$ref': '#/definitions/History'}},
- 'required': ['history'],
+ 'CloudCredentialResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/CloudCredentialResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'CloudInstanceTypesConstraint': {'additionalProperties': False,
+ 'properties': {'cloud-tag': {'type': 'string'},
+ 'constraints': {'$ref': '#/definitions/Value'},
+ 'region': {'type': 'string'}},
+ 'required': ['cloud-tag',
+ 'region'],
+ 'type': 'object'},
+ 'CloudInstanceTypesConstraints': {'additionalProperties': False,
+ 'properties': {'constraints': {'items': {'$ref': '#/definitions/CloudInstanceTypesConstraint'},
+ 'type': 'array'}},
+ 'required': ['constraints'],
+ 'type': 'object'},
+ 'CloudRegion': {'additionalProperties': False,
+ 'properties': {'endpoint': {'type': 'string'},
+ 'identity-endpoint': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'storage-endpoint': {'type': 'string'}},
+ 'required': ['name'],
+ 'type': 'object'},
+ 'CloudResult': {'additionalProperties': False,
+ 'properties': {'cloud': {'$ref': '#/definitions/Cloud'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'CloudResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/CloudResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'CloudsResult': {'additionalProperties': False,
+ 'properties': {'clouds': {'patternProperties': {'.*': {'$ref': '#/definitions/Cloud'}},
+ 'type': 'object'}},
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'InstanceType': {'additionalProperties': False,
+ 'properties': {'arches': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'cost': {'type': 'integer'},
+ 'cpu-cores': {'type': 'integer'},
+ 'deprecated': {'type': 'boolean'},
+ 'memory': {'type': 'integer'},
+ 'name': {'type': 'string'},
+ 'root-disk': {'type': 'integer'},
+ 'virt-type': {'type': 'string'}},
+ 'required': ['arches', 'cpu-cores', 'memory'],
+ 'type': 'object'},
+ 'InstanceTypesResult': {'additionalProperties': False,
+ 'properties': {'cost-currency': {'type': 'string'},
+ 'cost-divisor': {'type': 'integer'},
+ 'cost-unit': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'instance-types': {'items': {'$ref': '#/definitions/InstanceType'},
+ 'type': 'array'}},
'type': 'object'},
- 'StatusHistoryResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/StatusHistoryResult'},
+ 'InstanceTypesResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/InstanceTypesResult'},
'type': 'array'}},
'required': ['results'],
'type': 'object'},
- 'StatusParams': {'additionalProperties': False,
- 'properties': {'patterns': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'required': ['patterns'],
- 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
'StringResult': {'additionalProperties': False,
'properties': {'error': {'$ref': '#/definitions/Error'},
'result': {'type': 'string'}},
'required': ['result'],
'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'},
- 'UnitStatus': {'additionalProperties': False,
- 'properties': {'agent-status': {'$ref': '#/definitions/DetailedStatus'},
- 'charm': {'type': 'string'},
- 'leader': {'type': 'boolean'},
- 'machine': {'type': 'string'},
- 'opened-ports': {'items': {'type': 'string'},
- 'type': 'array'},
- 'public-address': {'type': 'string'},
- 'subordinates': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitStatus'}},
- 'type': 'object'},
- 'workload-status': {'$ref': '#/definitions/DetailedStatus'},
- 'workload-version': {'type': 'string'}},
- 'required': ['agent-status',
- 'workload-status',
- 'workload-version',
- 'machine',
- 'opened-ports',
- 'public-address',
- 'charm',
- 'subordinates'],
+ 'StringsResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'StringsResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'UpdateCloudCredential': {'additionalProperties': False,
+ 'properties': {'credential': {'$ref': '#/definitions/CloudCredential'},
+ 'tag': {'type': 'string'}},
+ 'required': ['tag', 'credential'],
+ 'type': 'object'},
+ 'UpdateCloudCredentials': {'additionalProperties': False,
+ 'properties': {'credentials': {'items': {'$ref': '#/definitions/UpdateCloudCredential'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'UserCloud': {'additionalProperties': False,
+ 'properties': {'cloud-tag': {'type': 'string'},
+ 'user-tag': {'type': 'string'}},
+ 'required': ['user-tag', 'cloud-tag'],
+ 'type': 'object'},
+ 'UserClouds': {'additionalProperties': False,
+ 'properties': {'user-clouds': {'items': {'$ref': '#/definitions/UserCloud'},
+ 'type': 'array'}},
'type': 'object'},
'Value': {'additionalProperties': False,
'properties': {'arch': {'type': 'string'},
'type': 'array'},
'virt-type': {'type': 'string'}},
'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'},
- 'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}},
+ 'properties': {'Cloud': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/CloudResults'}},
+ 'type': 'object'},
+ 'Clouds': {'properties': {'Result': {'$ref': '#/definitions/CloudsResult'}},
'type': 'object'},
- 'DestroyMachines': {'properties': {'Params': {'$ref': '#/definitions/DestroyMachines'}},
- '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/BundleChangesParams'},
- 'Result': {'$ref': '#/definitions/BundleChangesResults'}},
- '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'}},
+ 'Credential': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/CloudCredentialResults'}},
'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'},
+ 'DefaultCloud': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
+ 'type': 'object'},
+ 'InstanceTypes': {'properties': {'Params': {'$ref': '#/definitions/CloudInstanceTypesConstraints'},
+ 'Result': {'$ref': '#/definitions/InstanceTypesResults'}},
+ 'type': 'object'},
+ 'RevokeCredentials': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
'Result': {'$ref': '#/definitions/ErrorResults'}},
'type': 'object'},
- 'SLALevel': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
- 'type': 'object'},
- 'SetModelAgentVersion': {'properties': {'Params': {'$ref': '#/definitions/SetModelAgentVersion'}},
- 'type': 'object'},
- 'SetModelConstraints': {'properties': {'Params': {'$ref': '#/definitions/SetConstraints'}},
- 'type': 'object'},
- 'SetSLALevel': {'properties': {'Params': {'$ref': '#/definitions/ModelSLA'}},
- 'type': 'object'},
- 'StatusHistory': {'properties': {'Params': {'$ref': '#/definitions/StatusHistoryRequests'},
- 'Result': {'$ref': '#/definitions/StatusHistoryResults'}},
- 'type': 'object'},
- 'WatchAll': {'properties': {'Result': {'$ref': '#/definitions/AllWatcherId'}},
- 'type': 'object'}},
+ 'UpdateCredentials': {'properties': {'Params': {'$ref': '#/definitions/UpdateCloudCredentials'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'UserCredentials': {'properties': {'Params': {'$ref': '#/definitions/UserClouds'},
+ 'Result': {'$ref': '#/definitions/StringsResults'}},
+ 'type': 'object'}},
'type': 'object'}
-
- @ReturnMapping(APIHostPortsResult)
- async def APIHostPorts(self):
+
+ @ReturnMapping(CloudResults)
+ async def Cloud(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~CloudResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Cloud',
+ request='Cloud',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(CloudsResult)
+ async def Clouds(self):
'''
- Returns -> typing.Sequence<+T_co>[~HostPort]<~HostPort>
+ Returns -> typing.Mapping[str, ~Cloud]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='APIHostPorts', version=1, params=_params)
+ msg = dict(type='Cloud',
+ request='Clouds',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def AbortCurrentUpgrade(self):
+ @ReturnMapping(CloudCredentialResults)
+ async def Credential(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~CloudCredentialResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Cloud',
+ request='Credential',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringResult)
+ async def DefaultCloud(self):
'''
- Returns -> None
+ Returns -> typing.Union[_ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='AbortCurrentUpgrade', version=1, params=_params)
+ msg = dict(type='Cloud',
+ request='DefaultCloud',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def AddCharm(self, channel, url):
+ @ReturnMapping(InstanceTypesResults)
+ async def InstanceTypes(self, constraints):
'''
- channel : str
- url : str
- Returns -> None
+ constraints : typing.Sequence[~CloudInstanceTypesConstraint]
+ Returns -> typing.Sequence[~InstanceTypesResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='AddCharm', version=1, params=_params)
- _params['channel'] = channel
- _params['url'] = url
+ msg = dict(type='Cloud',
+ request='InstanceTypes',
+ version=1,
+ params=_params)
+ _params['constraints'] = constraints
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def AddCharmWithAuthorization(self, channel, macaroon, url):
+ @ReturnMapping(ErrorResults)
+ async def RevokeCredentials(self, entities):
'''
- channel : str
- macaroon : Macaroon
- url : str
- Returns -> None
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='AddCharmWithAuthorization', version=1, params=_params)
- _params['channel'] = channel
- _params['macaroon'] = macaroon
- _params['url'] = url
+ msg = dict(type='Cloud',
+ request='RevokeCredentials',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(AddMachinesResults)
- async def AddMachines(self, params):
+ @ReturnMapping(ErrorResults)
+ async def UpdateCredentials(self, credentials):
'''
- params : typing.Sequence<+T_co>[~AddMachineParams]<~AddMachineParams>
- Returns -> typing.Sequence<+T_co>[~AddMachinesResult]<~AddMachinesResult>
+ credentials : typing.Sequence[~UpdateCloudCredential]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='AddMachines', version=1, params=_params)
- _params['params'] = params
+ msg = dict(type='Cloud',
+ request='UpdateCredentials',
+ version=1,
+ params=_params)
+ _params['credentials'] = credentials
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsResults)
+ async def UserCredentials(self, user_clouds):
+ '''
+ user_clouds : typing.Sequence[~UserCloud]
+ Returns -> typing.Sequence[~StringsResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Cloud',
+ request='UserCredentials',
+ version=1,
+ params=_params)
+ _params['user-clouds'] = user_clouds
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class CredentialManagerFacade(Type):
+ name = 'CredentialManager'
+ 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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'InvalidateCredentialArg': {'additionalProperties': False,
+ 'properties': {'reason': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'}},
+ 'properties': {'InvalidateModelCredential': {'properties': {'Params': {'$ref': '#/definitions/InvalidateCredentialArg'},
+ 'Result': {'$ref': '#/definitions/ErrorResult'}},
+ 'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(ErrorResult)
+ async def InvalidateModelCredential(self, reason):
+ '''
+ reason : str
+ Returns -> Error
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CredentialManager',
+ request='InvalidateModelCredential',
+ version=1,
+ params=_params)
+ _params['reason'] = reason
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class CrossControllerFacade(Type):
+ name = 'CrossController'
+ version = 1
+ schema = {'definitions': {'ControllerAPIInfoResult': {'additionalProperties': False,
+ 'properties': {'addresses': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'cacert': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['addresses',
+ 'cacert'],
+ 'type': 'object'},
+ 'ControllerAPIInfoResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ControllerAPIInfoResult'},
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ 'type': 'object'},
+ 'NotifyWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'}},
+ 'properties': {'ControllerInfo': {'properties': {'Result': {'$ref': '#/definitions/ControllerAPIInfoResults'}},
+ 'type': 'object'},
+ 'WatchControllerInfo': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
+ 'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(ControllerAPIInfoResults)
+ async def ControllerInfo(self):
+ '''
+
+ Returns -> typing.Sequence[~ControllerAPIInfoResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CrossController',
+ request='ControllerInfo',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NotifyWatchResults)
+ async def WatchControllerInfo(self):
+ '''
+
+ Returns -> typing.Sequence[~NotifyWatchResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CrossController',
+ request='WatchControllerInfo',
+ version=1,
+ params=_params)
+
reply = await self.rpc(msg)
return reply
- @ReturnMapping(AddMachinesResults)
- async def AddMachinesV2(self, params):
+class CrossModelRelationsFacade(Type):
+ name = 'CrossModelRelations'
+ version = 1
+ schema = {'definitions': {'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', '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'IngressNetworksChangeEvent': {'additionalProperties': False,
+ 'properties': {'application-token': {'type': 'string'},
+ 'ingress-required': {'type': 'boolean'},
+ 'macaroons': {'items': {'$ref': '#/definitions/Macaroon'},
+ 'type': 'array'},
+ 'networks': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'relation-token': {'type': 'string'}},
+ 'required': ['relation-token',
+ 'application-token',
+ 'ingress-required'],
+ 'type': 'object'},
+ 'IngressNetworksChanges': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'$ref': '#/definitions/IngressNetworksChangeEvent'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'OfferArg': {'additionalProperties': False,
+ 'properties': {'macaroons': {'items': {'$ref': '#/definitions/Macaroon'},
+ 'type': 'array'},
+ 'offer-uuid': {'type': 'string'}},
+ 'required': ['offer-uuid'],
+ 'type': 'object'},
+ 'OfferArgs': {'additionalProperties': False,
+ 'properties': {'args': {'items': {'$ref': '#/definitions/OfferArg'},
+ 'type': 'array'}},
+ 'required': ['args'],
+ 'type': 'object'},
+ 'OfferStatusChange': {'additionalProperties': False,
+ 'properties': {'offer-name': {'type': 'string'},
+ 'status': {'$ref': '#/definitions/EntityStatus'}},
+ 'required': ['offer-name', 'status'],
+ 'type': 'object'},
+ 'OfferStatusWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'$ref': '#/definitions/OfferStatusChange'},
+ 'type': 'array'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id',
+ 'changes'],
+ 'type': 'object'},
+ 'OfferStatusWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/OfferStatusWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'RegisterRemoteRelationArg': {'additionalProperties': False,
+ 'properties': {'application-token': {'type': 'string'},
+ 'local-endpoint-name': {'type': 'string'},
+ 'macaroons': {'items': {'$ref': '#/definitions/Macaroon'},
+ 'type': 'array'},
+ 'offer-uuid': {'type': 'string'},
+ 'relation-token': {'type': 'string'},
+ 'remote-endpoint': {'$ref': '#/definitions/RemoteEndpoint'},
+ 'remote-space': {'$ref': '#/definitions/RemoteSpace'},
+ 'source-model-tag': {'type': 'string'}},
+ 'required': ['application-token',
+ 'source-model-tag',
+ 'relation-token',
+ 'remote-endpoint',
+ 'remote-space',
+ 'offer-uuid',
+ 'local-endpoint-name'],
+ 'type': 'object'},
+ 'RegisterRemoteRelationArgs': {'additionalProperties': False,
+ 'properties': {'relations': {'items': {'$ref': '#/definitions/RegisterRemoteRelationArg'},
+ 'type': 'array'}},
+ 'required': ['relations'],
+ 'type': 'object'},
+ 'RegisterRemoteRelationResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/RemoteRelationDetails'}},
+ 'type': 'object'},
+ 'RegisterRemoteRelationResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/RegisterRemoteRelationResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'RelationLifeSuspendedStatusChange': {'additionalProperties': False,
+ 'properties': {'key': {'type': 'string'},
+ 'life': {'type': 'string'},
+ 'suspended': {'type': 'boolean'},
+ 'suspended-reason': {'type': 'string'}},
+ 'required': ['key',
+ 'life',
+ 'suspended',
+ 'suspended-reason'],
+ 'type': 'object'},
+ 'RelationLifeSuspendedStatusWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'$ref': '#/definitions/RelationLifeSuspendedStatusChange'},
+ 'type': 'array'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id',
+ 'changes'],
+ 'type': 'object'},
+ 'RelationStatusWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/RelationLifeSuspendedStatusWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'RelationUnitsChange': {'additionalProperties': False,
+ 'properties': {'changed': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitSettings'}},
+ 'type': 'object'},
+ 'departed': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['changed'],
+ 'type': 'object'},
+ 'RelationUnitsWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'$ref': '#/definitions/RelationUnitsChange'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id',
+ 'changes'],
+ 'type': 'object'},
+ 'RelationUnitsWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/RelationUnitsWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'RemoteEndpoint': {'additionalProperties': False,
+ 'properties': {'interface': {'type': 'string'},
+ 'limit': {'type': 'integer'},
+ 'name': {'type': 'string'},
+ 'role': {'type': 'string'}},
+ 'required': ['name',
+ 'role',
+ 'interface',
+ 'limit'],
+ 'type': 'object'},
+ 'RemoteEntityArg': {'additionalProperties': False,
+ 'properties': {'macaroons': {'items': {'$ref': '#/definitions/Macaroon'},
+ 'type': 'array'},
+ 'relation-token': {'type': 'string'}},
+ 'required': ['relation-token'],
+ 'type': 'object'},
+ 'RemoteEntityArgs': {'additionalProperties': False,
+ 'properties': {'args': {'items': {'$ref': '#/definitions/RemoteEntityArg'},
+ 'type': 'array'}},
+ 'required': ['args'],
+ 'type': 'object'},
+ 'RemoteRelationChangeEvent': {'additionalProperties': False,
+ 'properties': {'application-token': {'type': 'string'},
+ 'changed-units': {'items': {'$ref': '#/definitions/RemoteRelationUnitChange'},
+ 'type': 'array'},
+ 'departed-units': {'items': {'type': 'integer'},
+ 'type': 'array'},
+ 'force-cleanup': {'type': 'boolean'},
+ 'life': {'type': 'string'},
+ 'macaroons': {'items': {'$ref': '#/definitions/Macaroon'},
+ 'type': 'array'},
+ 'relation-token': {'type': 'string'},
+ 'suspended': {'type': 'boolean'},
+ 'suspended-reason': {'type': 'string'}},
+ 'required': ['relation-token',
+ 'application-token',
+ 'life'],
+ 'type': 'object'},
+ 'RemoteRelationDetails': {'additionalProperties': False,
+ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
+ 'relation-token': {'type': 'string'}},
+ 'required': ['relation-token'],
+ 'type': 'object'},
+ 'RemoteRelationUnit': {'additionalProperties': False,
+ 'properties': {'macaroons': {'items': {'$ref': '#/definitions/Macaroon'},
+ 'type': 'array'},
+ 'relation-token': {'type': 'string'},
+ 'unit': {'type': 'string'}},
+ 'required': ['relation-token', 'unit'],
+ 'type': 'object'},
+ 'RemoteRelationUnitChange': {'additionalProperties': False,
+ 'properties': {'settings': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'unit-id': {'type': 'integer'}},
+ 'required': ['unit-id'],
+ 'type': 'object'},
+ 'RemoteRelationUnits': {'additionalProperties': False,
+ 'properties': {'relation-units': {'items': {'$ref': '#/definitions/RemoteRelationUnit'},
+ 'type': 'array'}},
+ 'required': ['relation-units'],
+ 'type': 'object'},
+ 'RemoteRelationsChanges': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'$ref': '#/definitions/RemoteRelationChangeEvent'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'RemoteSpace': {'additionalProperties': False,
+ 'properties': {'cloud-type': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'provider-attributes': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'provider-id': {'type': 'string'},
+ 'subnets': {'items': {'$ref': '#/definitions/Subnet'},
+ 'type': 'array'}},
+ 'required': ['cloud-type',
+ 'name',
+ 'provider-id',
+ 'provider-attributes',
+ 'subnets'],
+ 'type': 'object'},
+ 'SettingsResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'settings': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'}},
+ 'required': ['settings'],
+ 'type': 'object'},
+ 'SettingsResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/SettingsResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'StringsWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
+ 'type': 'object'},
+ 'StringsWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Subnet': {'additionalProperties': False,
+ 'properties': {'cidr': {'type': 'string'},
+ 'life': {'type': 'string'},
+ 'provider-id': {'type': 'string'},
+ 'provider-network-id': {'type': 'string'},
+ 'provider-space-id': {'type': 'string'},
+ 'space-tag': {'type': 'string'},
+ 'status': {'type': 'string'},
+ 'vlan-tag': {'type': 'integer'},
+ 'zones': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['cidr',
+ 'vlan-tag',
+ 'life',
+ 'space-tag',
+ 'zones'],
+ 'type': 'object'},
+ 'UnitSettings': {'additionalProperties': False,
+ 'properties': {'version': {'type': 'integer'}},
+ 'required': ['version'],
+ 'type': 'object'}},
+ 'properties': {'PublishIngressNetworkChanges': {'properties': {'Params': {'$ref': '#/definitions/IngressNetworksChanges'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'PublishRelationChanges': {'properties': {'Params': {'$ref': '#/definitions/RemoteRelationsChanges'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'RegisterRemoteRelations': {'properties': {'Params': {'$ref': '#/definitions/RegisterRemoteRelationArgs'},
+ 'Result': {'$ref': '#/definitions/RegisterRemoteRelationResults'}},
+ 'type': 'object'},
+ 'RelationUnitSettings': {'properties': {'Params': {'$ref': '#/definitions/RemoteRelationUnits'},
+ 'Result': {'$ref': '#/definitions/SettingsResults'}},
+ 'type': 'object'},
+ 'WatchEgressAddressesForRelations': {'properties': {'Params': {'$ref': '#/definitions/RemoteEntityArgs'},
+ 'Result': {'$ref': '#/definitions/StringsWatchResults'}},
+ 'type': 'object'},
+ 'WatchOfferStatus': {'properties': {'Params': {'$ref': '#/definitions/OfferArgs'},
+ 'Result': {'$ref': '#/definitions/OfferStatusWatchResults'}},
+ 'type': 'object'},
+ 'WatchRelationUnits': {'properties': {'Params': {'$ref': '#/definitions/RemoteEntityArgs'},
+ 'Result': {'$ref': '#/definitions/RelationUnitsWatchResults'}},
+ 'type': 'object'},
+ 'WatchRelationsSuspendedStatus': {'properties': {'Params': {'$ref': '#/definitions/RemoteEntityArgs'},
+ 'Result': {'$ref': '#/definitions/RelationStatusWatchResults'}},
+ 'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(ErrorResults)
+ async def PublishIngressNetworkChanges(self, changes):
'''
- params : typing.Sequence<+T_co>[~AddMachineParams]<~AddMachineParams>
- Returns -> typing.Sequence<+T_co>[~AddMachinesResult]<~AddMachinesResult>
+ changes : typing.Sequence[~IngressNetworksChangeEvent]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='AddMachinesV2', version=1, params=_params)
- _params['params'] = params
+ msg = dict(type='CrossModelRelations',
+ request='PublishIngressNetworkChanges',
+ version=1,
+ params=_params)
+ _params['changes'] = changes
reply = await self.rpc(msg)
return reply
- @ReturnMapping(AgentVersionResult)
- async def AgentVersion(self):
+ @ReturnMapping(ErrorResults)
+ async def PublishRelationChanges(self, changes):
'''
-
- Returns -> Number
+ changes : typing.Sequence[~RemoteRelationChangeEvent]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='AgentVersion', version=1, params=_params)
-
+ msg = dict(type='CrossModelRelations',
+ request='PublishRelationChanges',
+ version=1,
+ params=_params)
+ _params['changes'] = changes
reply = await self.rpc(msg)
return reply
- @ReturnMapping(BytesResult)
- async def CACert(self):
+ @ReturnMapping(RegisterRemoteRelationResults)
+ async def RegisterRemoteRelations(self, relations):
'''
-
- Returns -> typing.Sequence<+T_co>[int]
+ relations : typing.Sequence[~RegisterRemoteRelationArg]
+ Returns -> typing.Sequence[~RegisterRemoteRelationResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='CACert', version=1, params=_params)
-
+ msg = dict(type='CrossModelRelations',
+ request='RegisterRemoteRelations',
+ version=1,
+ params=_params)
+ _params['relations'] = relations
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def DestroyMachines(self, force, machine_names):
+ @ReturnMapping(SettingsResults)
+ async def RelationUnitSettings(self, relation_units):
'''
- force : bool
- machine_names : typing.Sequence<+T_co>[str]
- Returns -> None
+ relation_units : typing.Sequence[~RemoteRelationUnit]
+ Returns -> typing.Sequence[~SettingsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='DestroyMachines', version=1, params=_params)
- _params['force'] = force
- _params['machine-names'] = machine_names
+ msg = dict(type='CrossModelRelations',
+ request='RelationUnitSettings',
+ version=1,
+ params=_params)
+ _params['relation-units'] = relation_units
reply = await self.rpc(msg)
return reply
- @ReturnMapping(FindToolsResult)
- async def FindTools(self, arch, major, minor, number, series):
+ @ReturnMapping(StringsWatchResults)
+ async def WatchEgressAddressesForRelations(self, args):
'''
- arch : str
- major : int
- minor : int
- number : Number
- series : str
- Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence<+T_co>[~Tools]<~Tools>]
+ args : typing.Sequence[~RemoteEntityArg]
+ Returns -> typing.Sequence[~StringsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='FindTools', version=1, params=_params)
- _params['arch'] = arch
- _params['major'] = major
- _params['minor'] = minor
- _params['number'] = number
- _params['series'] = series
+ msg = dict(type='CrossModelRelations',
+ request='WatchEgressAddressesForRelations',
+ version=1,
+ params=_params)
+ _params['args'] = args
reply = await self.rpc(msg)
return reply
- @ReturnMapping(FullStatus)
- async def FullStatus(self, patterns):
+ @ReturnMapping(OfferStatusWatchResults)
+ async def WatchOfferStatus(self, args):
'''
- patterns : typing.Sequence<+T_co>[str]
- Returns -> typing.Union[_ForwardRef('ModelStatusInfo'), typing.Sequence<+T_co>[~RelationStatus]<~RelationStatus>, typing.Mapping<~KT, +VT_co>[str, ~RemoteApplicationStatus]<~RemoteApplicationStatus>]
+ args : typing.Sequence[~OfferArg]
+ Returns -> typing.Sequence[~OfferStatusWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='FullStatus', version=1, params=_params)
- _params['patterns'] = patterns
+ msg = dict(type='CrossModelRelations',
+ request='WatchOfferStatus',
+ version=1,
+ params=_params)
+ _params['args'] = args
reply = await self.rpc(msg)
return reply
- @ReturnMapping(BundleChangesResults)
- async def GetBundleChanges(self, yaml):
+ @ReturnMapping(RelationUnitsWatchResults)
+ async def WatchRelationUnits(self, args):
'''
- yaml : str
- Returns -> typing.Sequence<+T_co>[~BundleChange]<~BundleChange>
+ args : typing.Sequence[~RemoteEntityArg]
+ Returns -> typing.Sequence[~RelationUnitsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='GetBundleChanges', version=1, params=_params)
- _params['yaml'] = yaml
+ msg = dict(type='CrossModelRelations',
+ request='WatchRelationUnits',
+ version=1,
+ params=_params)
+ _params['args'] = args
reply = await self.rpc(msg)
return reply
- @ReturnMapping(GetConstraintsResults)
- async def GetModelConstraints(self):
+ @ReturnMapping(RelationStatusWatchResults)
+ async def WatchRelationsSuspendedStatus(self, args):
'''
-
- Returns -> Value
+ args : typing.Sequence[~RemoteEntityArg]
+ Returns -> typing.Sequence[~RelationLifeSuspendedStatusWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='GetModelConstraints', version=1, params=_params)
-
+ msg = dict(type='CrossModelRelations',
+ request='WatchRelationsSuspendedStatus',
+ version=1,
+ params=_params)
+ _params['args'] = args
reply = await self.rpc(msg)
return reply
- @ReturnMapping(AddMachinesResults)
- async def InjectMachines(self, params):
- '''
- params : typing.Sequence<+T_co>[~AddMachineParams]<~AddMachineParams>
- Returns -> typing.Sequence<+T_co>[~AddMachinesResult]<~AddMachinesResult>
- '''
- # map input types to rpc msg
- _params = dict()
- msg = dict(type='Client', request='InjectMachines', version=1, params=_params)
- _params['params'] = params
- reply = await self.rpc(msg)
- return reply
-
+class DeployerFacade(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'},
+ 'space-name': {'type': 'string'},
+ 'type': {'type': 'string'},
+ 'value': {'type': 'string'}},
+ 'required': ['value', 'type', 'scope'],
+ 'type': 'object'},
+ 'DeployerConnectionValues': {'additionalProperties': False,
+ 'properties': {'api-addresses': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['api-addresses'],
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/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'],
+ 'type': 'object'},
+ 'LifeResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ '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': ['result'],
+ 'type': 'object'},
+ 'StringsResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'StringsWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
+ 'type': 'object'},
+ 'StringsWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'}},
+ 'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}},
+ 'type': 'object'},
+ 'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}},
+ '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'},
+ 'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'UpdateStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ '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(ModelConfigResults)
- async def ModelGet(self):
+ @ReturnMapping(StringsResult)
+ async def APIAddresses(self):
'''
- Returns -> typing.Mapping<~KT, +VT_co>[str, ~ConfigValue]<~ConfigValue>
+ Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence[str]]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='ModelGet', version=1, params=_params)
+ msg = dict(type='Deployer',
+ request='APIAddresses',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ModelInfo)
- async def ModelInfo(self):
- '''
-
- Returns -> typing.Union[_ForwardRef('Number'), _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence<+T_co>[~ModelUserInfo]<~ModelUserInfo>]
+ @ReturnMapping(APIHostPortsResult)
+ async def APIHostPorts(self):
'''
- # 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<~KT, +VT_co>[str, typing.Any]
- Returns -> None
+ Returns -> typing.Sequence[~HostPort]
'''
# 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
-
+ msg = dict(type='Deployer',
+ request='APIHostPorts',
+ version=1,
+ params=_params)
-
- @ReturnMapping(None)
- async def ModelUnset(self, keys):
- '''
- keys : typing.Sequence<+T_co>[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):
+ @ReturnMapping(DeployerConnectionValues)
+ async def ConnectionInfo(self):
'''
- Returns -> typing.Sequence<+T_co>[~ModelUserInfoResult]<~ModelUserInfoResult>
+ Returns -> typing.Sequence[str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='ModelUserInfo', version=1, params=_params)
+ msg = dict(type='Deployer',
+ request='ConnectionInfo',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(PrivateAddressResults)
- async def PrivateAddress(self, target):
+ @ReturnMapping(LifeResults)
+ async def Life(self, entities):
'''
- target : str
- Returns -> str
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~LifeResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='PrivateAddress', version=1, params=_params)
- _params['target'] = target
+ msg = dict(type='Deployer',
+ request='Life',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ProvisioningScriptResult)
- async def ProvisioningScript(self, data_dir, disable_package_commands, machine_id, nonce):
+ @ReturnMapping(StringResult)
+ async def ModelUUID(self):
'''
- data_dir : str
- disable_package_commands : bool
- machine_id : str
- nonce : str
- Returns -> str
+
+ Returns -> typing.Union[_ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='ProvisioningScript', version=1, params=_params)
- _params['data-dir'] = data_dir
- _params['disable-package-commands'] = disable_package_commands
- _params['machine-id'] = machine_id
- _params['nonce'] = nonce
+ msg = dict(type='Deployer',
+ request='ModelUUID',
+ version=1,
+ params=_params)
+
reply = await self.rpc(msg)
return reply
- @ReturnMapping(PublicAddressResults)
- async def PublicAddress(self, target):
+ @ReturnMapping(ErrorResults)
+ async def Remove(self, entities):
'''
- target : str
- Returns -> str
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='PublicAddress', version=1, params=_params)
- _params['target'] = target
+ msg = dict(type='Deployer',
+ request='Remove',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ResolveCharmResults)
- async def ResolveCharms(self, references):
+ @ReturnMapping(ErrorResults)
+ async def SetPasswords(self, changes):
'''
- references : typing.Sequence<+T_co>[str]
- Returns -> typing.Sequence<+T_co>[~ResolveCharmResult]<~ResolveCharmResult>
+ changes : typing.Sequence[~EntityPassword]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='ResolveCharms', version=1, params=_params)
- _params['references'] = references
+ msg = dict(type='Deployer',
+ request='SetPasswords',
+ version=1,
+ params=_params)
+ _params['changes'] = changes
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def Resolved(self, retry, unit_name):
+ @ReturnMapping(ErrorResults)
+ async def SetStatus(self, entities):
'''
- retry : bool
- unit_name : str
- Returns -> None
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='Resolved', version=1, params=_params)
- _params['retry'] = retry
- _params['unit-name'] = unit_name
+ msg = dict(type='Deployer',
+ request='SetStatus',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
- async def RetryProvisioning(self, entities):
+ async def UpdateStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='RetryProvisioning', version=1, params=_params)
+ msg = dict(type='Deployer',
+ request='UpdateStatus',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(StringResult)
- async def SLALevel(self):
+ @ReturnMapping(NotifyWatchResult)
+ async def WatchAPIHostPorts(self):
'''
- Returns -> typing.Union[_ForwardRef('Error'), str]
+ Returns -> typing.Union[str, _ForwardRef('Error')]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='SLALevel', version=1, params=_params)
+ msg = dict(type='Deployer',
+ request='WatchAPIHostPorts',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def SetModelAgentVersion(self, version):
+ @ReturnMapping(StringsWatchResults)
+ async def WatchUnits(self, entities):
'''
- version : Number
- Returns -> None
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='SetModelAgentVersion', version=1, params=_params)
- _params['version'] = version
+ msg = dict(type='Deployer',
+ request='WatchUnits',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def SetModelConstraints(self, application, constraints):
- '''
- application : str
- constraints : Value
- Returns -> None
- '''
- # map input types to rpc msg
- _params = dict()
- msg = dict(type='Client', request='SetModelConstraints', version=1, params=_params)
- _params['application'] = application
- _params['constraints'] = constraints
- reply = await self.rpc(msg)
- return reply
-
+class ExternalControllerUpdaterFacade(Type):
+ name = 'ExternalControllerUpdater'
+ 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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'ExternalControllerInfo': {'additionalProperties': False,
+ 'properties': {'addrs': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'ca-cert': {'type': 'string'},
+ 'controller-alias': {'type': 'string'},
+ 'controller-tag': {'type': 'string'}},
+ 'required': ['controller-tag',
+ 'controller-alias',
+ 'addrs',
+ 'ca-cert'],
+ 'type': 'object'},
+ 'ExternalControllerInfoResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/ExternalControllerInfo'}},
+ 'required': ['result',
+ 'error'],
+ 'type': 'object'},
+ 'ExternalControllerInfoResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ExternalControllerInfoResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'SetExternalControllerInfoParams': {'additionalProperties': False,
+ 'properties': {'info': {'$ref': '#/definitions/ExternalControllerInfo'}},
+ 'required': ['info'],
+ 'type': 'object'},
+ 'SetExternalControllersInfoParams': {'additionalProperties': False,
+ 'properties': {'controllers': {'items': {'$ref': '#/definitions/SetExternalControllerInfoParams'},
+ 'type': 'array'}},
+ 'required': ['controllers'],
+ 'type': 'object'},
+ 'StringsWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
+ 'type': 'object'},
+ 'StringsWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'}},
+ 'properties': {'ExternalControllerInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ExternalControllerInfoResults'}},
+ 'type': 'object'},
+ 'SetExternalControllerInfo': {'properties': {'Params': {'$ref': '#/definitions/SetExternalControllersInfoParams'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'WatchExternalControllers': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResults'}},
+ 'type': 'object'}},
+ 'type': 'object'}
- @ReturnMapping(None)
- async def SetSLALevel(self, creds, level):
+ @ReturnMapping(ExternalControllerInfoResults)
+ async def ExternalControllerInfo(self, entities):
'''
- creds : typing.Sequence<+T_co>[int]
- level : str
- Returns -> None
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ExternalControllerInfoResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='SetSLALevel', version=1, params=_params)
- _params['creds'] = creds
- _params['level'] = level
+ msg = dict(type='ExternalControllerUpdater',
+ request='ExternalControllerInfo',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(StatusHistoryResults)
- async def StatusHistory(self, requests):
+ @ReturnMapping(ErrorResults)
+ async def SetExternalControllerInfo(self, controllers):
'''
- requests : typing.Sequence<+T_co>[~StatusHistoryRequest]<~StatusHistoryRequest>
- Returns -> typing.Sequence<+T_co>[~StatusHistoryResult]<~StatusHistoryResult>
+ controllers : typing.Sequence[~SetExternalControllerInfoParams]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='StatusHistory', version=1, params=_params)
- _params['requests'] = requests
+ msg = dict(type='ExternalControllerUpdater',
+ request='SetExternalControllerInfo',
+ version=1,
+ params=_params)
+ _params['controllers'] = controllers
reply = await self.rpc(msg)
return reply
- @ReturnMapping(AllWatcherId)
- async def WatchAll(self):
+ @ReturnMapping(StringsWatchResults)
+ async def WatchExternalControllers(self):
'''
- Returns -> str
+ Returns -> typing.Sequence[~StringsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Client', request='WatchAll', version=1, params=_params)
+ msg = dict(type='ExternalControllerUpdater',
+ request='WatchExternalControllers',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
-class CloudFacade(Type):
- name = 'Cloud'
+class FanConfigurerFacade(Type):
+ name = 'FanConfigurer'
version = 1
- schema = {'definitions': {'Cloud': {'additionalProperties': False,
- 'properties': {'auth-types': {'items': {'type': 'string'},
- 'type': 'array'},
- 'endpoint': {'type': 'string'},
- 'identity-endpoint': {'type': 'string'},
- 'regions': {'items': {'$ref': '#/definitions/CloudRegion'},
- 'type': 'array'},
- 'storage-endpoint': {'type': 'string'},
- 'type': {'type': 'string'}},
- 'required': ['type'],
- 'type': 'object'},
- 'CloudCredential': {'additionalProperties': False,
- 'properties': {'attrs': {'patternProperties': {'.*': {'type': 'string'}},
- 'type': 'object'},
- 'auth-type': {'type': 'string'},
- 'redacted': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'required': ['auth-type'],
- 'type': 'object'},
- 'CloudCredentialResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'},
- 'result': {'$ref': '#/definitions/CloudCredential'}},
- 'type': 'object'},
- 'CloudCredentialResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/CloudCredentialResult'},
- 'type': 'array'}},
- 'type': 'object'},
- 'CloudInstanceTypesConstraint': {'additionalProperties': False,
- 'properties': {'cloud-tag': {'type': 'string'},
- 'constraints': {'$ref': '#/definitions/Value'},
- 'region': {'type': 'string'}},
- 'required': ['cloud-tag',
- 'region'],
- 'type': 'object'},
- 'CloudInstanceTypesConstraints': {'additionalProperties': False,
- 'properties': {'constraints': {'items': {'$ref': '#/definitions/CloudInstanceTypesConstraint'},
- 'type': 'array'}},
- 'required': ['constraints'],
- 'type': 'object'},
- 'CloudRegion': {'additionalProperties': False,
- 'properties': {'endpoint': {'type': 'string'},
- 'identity-endpoint': {'type': 'string'},
- 'name': {'type': 'string'},
- 'storage-endpoint': {'type': 'string'}},
- 'required': ['name'],
- 'type': 'object'},
- 'CloudResult': {'additionalProperties': False,
- 'properties': {'cloud': {'$ref': '#/definitions/Cloud'},
- 'error': {'$ref': '#/definitions/Error'}},
- 'type': 'object'},
- 'CloudResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/CloudResult'},
- 'type': 'array'}},
- 'type': 'object'},
- 'CloudsResult': {'additionalProperties': False,
- 'properties': {'clouds': {'patternProperties': {'.*': {'$ref': '#/definitions/Cloud'}},
- 'type': 'object'}},
- 'type': 'object'},
- 'Entities': {'additionalProperties': False,
- 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
- 'type': 'array'}},
- 'required': ['entities'],
+ 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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'FanConfigEntry': {'additionalProperties': False,
+ 'properties': {'overlay': {'type': 'string'},
+ 'underlay': {'type': 'string'}},
+ 'required': ['underlay', 'overlay'],
+ 'type': 'object'},
+ 'FanConfigResult': {'additionalProperties': False,
+ 'properties': {'fans': {'items': {'$ref': '#/definitions/FanConfigEntry'},
+ 'type': 'array'}},
+ 'required': ['fans'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ 'type': 'object'}},
+ 'properties': {'FanConfig': {'properties': {'Result': {'$ref': '#/definitions/FanConfigResult'}},
'type': 'object'},
- 'Entity': {'additionalProperties': False,
- 'properties': {'tag': {'type': 'string'}},
- 'required': ['tag'],
- 'type': 'object'},
- 'Error': {'additionalProperties': False,
+ 'WatchForFanConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
+ 'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(FanConfigResult)
+ async def FanConfig(self):
+ '''
+
+ Returns -> typing.Sequence[~FanConfigEntry]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='FanConfigurer',
+ request='FanConfig',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NotifyWatchResult)
+ async def WatchForFanConfigChanges(self):
+ '''
+
+ Returns -> typing.Union[str, _ForwardRef('Error')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='FanConfigurer',
+ request='WatchForFanConfigChanges',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class FirewallRulesFacade(Type):
+ name = 'FirewallRules'
+ version = 1
+ schema = {'definitions': {'Error': {'additionalProperties': False,
'properties': {'code': {'type': 'string'},
'info': {'$ref': '#/definitions/ErrorInfo'},
'message': {'type': 'string'}},
'type': 'array'}},
'required': ['results'],
'type': 'object'},
- 'InstanceType': {'additionalProperties': False,
- 'properties': {'arches': {'items': {'type': 'string'},
- 'type': 'array'},
- 'cost': {'type': 'integer'},
- 'cpu-cores': {'type': 'integer'},
- 'deprecated': {'type': 'boolean'},
- 'memory': {'type': 'integer'},
- 'name': {'type': 'string'},
- 'root-disk': {'type': 'integer'},
- 'virt-type': {'type': 'string'}},
- 'required': ['arches', 'cpu-cores', 'memory'],
- 'type': 'object'},
- 'InstanceTypesResult': {'additionalProperties': False,
- 'properties': {'cost-currency': {'type': 'string'},
- 'cost-divisor': {'type': 'integer'},
- 'cost-unit': {'type': 'string'},
- 'error': {'$ref': '#/definitions/Error'},
- 'instance-types': {'items': {'$ref': '#/definitions/InstanceType'},
- 'type': 'array'}},
- 'type': 'object'},
- 'InstanceTypesResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/InstanceTypesResult'},
+ 'FirewallRule': {'additionalProperties': False,
+ 'properties': {'known-service': {'type': 'string'},
+ 'whitelist-cidrs': {'items': {'type': 'string'},
'type': 'array'}},
- 'required': ['results'],
- 'type': 'object'},
- 'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'StringResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'},
- 'result': {'type': 'string'}},
- 'required': ['result'],
- 'type': 'object'},
- 'StringsResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'},
- 'result': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'type': 'object'},
- 'StringsResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/StringsResult'},
- 'type': 'array'}},
- 'required': ['results'],
- 'type': 'object'},
- 'UpdateCloudCredential': {'additionalProperties': False,
- 'properties': {'credential': {'$ref': '#/definitions/CloudCredential'},
- 'tag': {'type': 'string'}},
- 'required': ['tag', 'credential'],
- 'type': 'object'},
- 'UpdateCloudCredentials': {'additionalProperties': False,
- 'properties': {'credentials': {'items': {'$ref': '#/definitions/UpdateCloudCredential'},
- 'type': 'array'}},
- 'type': 'object'},
- 'UserCloud': {'additionalProperties': False,
- 'properties': {'cloud-tag': {'type': 'string'},
- 'user-tag': {'type': 'string'}},
- 'required': ['user-tag', 'cloud-tag'],
- 'type': 'object'},
- 'UserClouds': {'additionalProperties': False,
- 'properties': {'user-clouds': {'items': {'$ref': '#/definitions/UserCloud'},
- 'type': 'array'}},
- 'type': 'object'},
- 'Value': {'additionalProperties': False,
- 'properties': {'arch': {'type': 'string'},
- 'container': {'type': 'string'},
- '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'}},
- 'properties': {'Cloud': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
- 'Result': {'$ref': '#/definitions/CloudResults'}},
- 'type': 'object'},
- 'Clouds': {'properties': {'Result': {'$ref': '#/definitions/CloudsResult'}},
- 'type': 'object'},
- 'Credential': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
- 'Result': {'$ref': '#/definitions/CloudCredentialResults'}},
- 'type': 'object'},
- 'DefaultCloud': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
- 'type': 'object'},
- 'InstanceTypes': {'properties': {'Params': {'$ref': '#/definitions/CloudInstanceTypesConstraints'},
- 'Result': {'$ref': '#/definitions/InstanceTypesResults'}},
+ 'required': ['known-service'],
'type': 'object'},
- 'RevokeCredentials': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
- 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'FirewallRuleArgs': {'additionalProperties': False,
+ 'properties': {'args': {'items': {'$ref': '#/definitions/FirewallRule'},
+ 'type': 'array'}},
+ 'required': ['args'],
'type': 'object'},
- 'UpdateCredentials': {'properties': {'Params': {'$ref': '#/definitions/UpdateCloudCredentials'},
- 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'ListFirewallRulesResults': {'additionalProperties': False,
+ 'properties': {'Rules': {'items': {'$ref': '#/definitions/FirewallRule'},
+ 'type': 'array'}},
+ 'required': ['Rules'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'}},
+ 'properties': {'ListFirewallRules': {'properties': {'Result': {'$ref': '#/definitions/ListFirewallRulesResults'}},
'type': 'object'},
- 'UserCredentials': {'properties': {'Params': {'$ref': '#/definitions/UserClouds'},
- 'Result': {'$ref': '#/definitions/StringsResults'}},
- 'type': 'object'}},
+ 'SetFirewallRules': {'properties': {'Params': {'$ref': '#/definitions/FirewallRuleArgs'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'}},
'type': 'object'}
-
-
- @ReturnMapping(CloudResults)
- async def Cloud(self, entities):
- '''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~CloudResult]<~CloudResult>
- '''
- # map input types to rpc msg
- _params = dict()
- msg = dict(type='Cloud', request='Cloud', version=1, params=_params)
- _params['entities'] = entities
- reply = await self.rpc(msg)
- return reply
-
- @ReturnMapping(CloudsResult)
- async def Clouds(self):
+ @ReturnMapping(ListFirewallRulesResults)
+ async def ListFirewallRules(self):
'''
- Returns -> typing.Mapping<~KT, +VT_co>[str, ~Cloud]<~Cloud>
+ Returns -> typing.Sequence[~FirewallRule]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Cloud', request='Clouds', version=1, params=_params)
+ msg = dict(type='FirewallRules',
+ request='ListFirewallRules',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(CloudCredentialResults)
- async def Credential(self, entities):
+ @ReturnMapping(ErrorResults)
+ async def SetFirewallRules(self, args):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~CloudCredentialResult]<~CloudCredentialResult>
+ args : typing.Sequence[~FirewallRule]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Cloud', request='Credential', version=1, params=_params)
- _params['entities'] = entities
+ msg = dict(type='FirewallRules',
+ request='SetFirewallRules',
+ version=1,
+ params=_params)
+ _params['args'] = args
reply = await self.rpc(msg)
return reply
- @ReturnMapping(StringResult)
- async def DefaultCloud(self):
- '''
+class HostKeyReporterFacade(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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, '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'}},
+ 'properties': {'ReportKeys': {'properties': {'Params': {'$ref': '#/definitions/SSHHostKeySet'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'}},
+ 'type': 'object'}
- Returns -> typing.Union[_ForwardRef('Error'), str]
+
+ @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='Cloud', request='DefaultCloud', version=1, params=_params)
-
+ msg = dict(type='HostKeyReporter',
+ request='ReportKeys',
+ version=1,
+ params=_params)
+ _params['entity-keys'] = entity_keys
reply = await self.rpc(msg)
return reply
- @ReturnMapping(InstanceTypesResults)
- async def InstanceTypes(self, constraints):
+class KeyManagerFacade(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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/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, 'type': 'object'},
+ 'ModifyUserSSHKeys': {'additionalProperties': False,
+ 'properties': {'ssh-keys': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'user': {'type': 'string'}},
+ 'required': ['user', 'ssh-keys'],
+ 'type': 'object'},
+ 'StringsResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'StringsResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ '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, ssh_keys, user):
'''
- constraints : typing.Sequence<+T_co>[~CloudInstanceTypesConstraint]<~CloudInstanceTypesConstraint>
- Returns -> typing.Sequence<+T_co>[~InstanceTypesResult]<~InstanceTypesResult>
+ ssh_keys : typing.Sequence[str]
+ user : str
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Cloud', request='InstanceTypes', version=1, params=_params)
- _params['constraints'] = constraints
+ msg = dict(type='KeyManager',
+ request='AddKeys',
+ version=1,
+ params=_params)
+ _params['ssh-keys'] = ssh_keys
+ _params['user'] = user
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
- async def RevokeCredentials(self, entities):
+ async def DeleteKeys(self, ssh_keys, user):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ ssh_keys : typing.Sequence[str]
+ user : str
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Cloud', request='RevokeCredentials', version=1, params=_params)
- _params['entities'] = entities
+ msg = dict(type='KeyManager',
+ request='DeleteKeys',
+ version=1,
+ params=_params)
+ _params['ssh-keys'] = ssh_keys
+ _params['user'] = user
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
- async def UpdateCredentials(self, credentials):
+ async def ImportKeys(self, ssh_keys, user):
'''
- credentials : typing.Sequence<+T_co>[~UpdateCloudCredential]<~UpdateCloudCredential>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ ssh_keys : typing.Sequence[str]
+ user : str
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Cloud', request='UpdateCredentials', version=1, params=_params)
- _params['credentials'] = credentials
+ msg = dict(type='KeyManager',
+ request='ImportKeys',
+ version=1,
+ params=_params)
+ _params['ssh-keys'] = ssh_keys
+ _params['user'] = user
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringsResults)
- async def UserCredentials(self, user_clouds):
+ async def ListKeys(self, entities, mode):
'''
- user_clouds : typing.Sequence<+T_co>[~UserCloud]<~UserCloud>
- Returns -> typing.Sequence<+T_co>[~StringsResult]<~StringsResult>
+ entities : Entities
+ mode : bool
+ Returns -> typing.Sequence[~StringsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Cloud', request='UserCredentials', version=1, params=_params)
- _params['user-clouds'] = user_clouds
+ msg = dict(type='KeyManager',
+ request='ListKeys',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ _params['mode'] = mode
reply = await self.rpc(msg)
return reply
-class DeployerFacade(Type):
- name = 'Deployer'
+class KeyUpdaterFacade(Type):
+ name = 'KeyUpdater'
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'},
- 'space-name': {'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': {'api-addresses': {'items': {'type': 'string'},
- 'type': 'array'},
- 'state-addresses': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'required': ['state-addresses',
- 'api-addresses'],
- 'type': 'object'},
- 'Entities': {'additionalProperties': False,
+ schema = {'definitions': {'Entities': {'additionalProperties': False,
'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
'type': 'array'}},
'required': ['entities'],
'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'},
'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
'macaroon-path': {'type': 'string'}},
'type': 'object'},
- 'ErrorResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/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'],
- 'type': 'object'},
- 'LifeResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'},
- 'type': 'array'}},
- 'required': ['results'],
- 'type': 'object'},
'Macaroon': {'additionalProperties': False, 'type': 'object'},
'NotifyWatchResult': {'additionalProperties': False,
'properties': {'NotifyWatcherId': {'type': 'string'},
'error': {'$ref': '#/definitions/Error'}},
'required': ['NotifyWatcherId'],
'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': ['result'],
- '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'}},
'type': 'object'},
- 'StringsWatchResult': {'additionalProperties': False,
- 'properties': {'changes': {'items': {'type': 'string'},
- 'type': 'array'},
- 'error': {'$ref': '#/definitions/Error'},
- 'watcher-id': {'type': 'string'}},
- 'required': ['watcher-id'],
- 'type': 'object'},
- 'StringsWatchResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/StringsWatchResult'},
- 'type': 'array'}},
- 'required': ['results'],
- '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'},
- 'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
- 'Result': {'$ref': '#/definitions/ErrorResults'}},
- 'type': 'object'},
- 'StateAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}},
+ 'StringsResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'}},
+ 'properties': {'AuthorisedKeys': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/StringsResults'}},
'type': 'object'},
- 'UpdateStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
- 'Result': {'$ref': '#/definitions/ErrorResults'}},
- 'type': 'object'},
- 'WatchAPIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
- 'type': 'object'},
- 'WatchUnits': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
- 'Result': {'$ref': '#/definitions/StringsWatchResults'}},
- 'type': 'object'}},
+ 'WatchAuthorisedKeys': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
+ 'type': 'object'}},
'type': 'object'}
-
-
- @ReturnMapping(StringsResult)
- async def APIAddresses(self):
- '''
-
- Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence<+T_co>[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):
+ @ReturnMapping(StringsResults)
+ async def AuthorisedKeys(self, entities):
'''
-
- Returns -> typing.Sequence<+T_co>[~HostPort]<~HostPort>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Deployer', request='APIHostPorts', version=1, params=_params)
-
+ msg = dict(type='KeyUpdater',
+ request='AuthorisedKeys',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(BytesResult)
- async def CACert(self):
+ @ReturnMapping(NotifyWatchResults)
+ async def WatchAuthorisedKeys(self, entities):
'''
-
- Returns -> typing.Sequence<+T_co>[int]
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Deployer', request='CACert', version=1, params=_params)
-
+ msg = dict(type='KeyUpdater',
+ request='WatchAuthorisedKeys',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(DeployerConnectionValues)
- async def ConnectionInfo(self):
- '''
-
- Returns -> typing.Sequence<+T_co>[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
-
+class LifeFlagFacade(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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'LifeResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'life': {'type': 'string'}},
+ 'required': ['life'],
+ 'type': 'object'},
+ 'LifeResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ 'type': 'object'},
+ 'NotifyWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ '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<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult>
+ 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)
+ msg = dict(type='LifeFlag',
+ request='Life',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(StringResult)
- async def ModelUUID(self):
+ @ReturnMapping(NotifyWatchResults)
+ async def Watch(self, entities):
'''
-
- Returns -> typing.Union[_ForwardRef('Error'), str]
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Deployer', request='ModelUUID', version=1, params=_params)
-
+ msg = dict(type='LifeFlag',
+ request='Watch',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ErrorResults)
- async def Remove(self, entities):
- '''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~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
-
+class LogForwardingFacade(Type):
+ name = 'LogForwarding'
+ 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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'LogForwardingGetLastSentParams': {'additionalProperties': False,
+ 'properties': {'ids': {'items': {'$ref': '#/definitions/LogForwardingID'},
+ 'type': 'array'}},
+ 'required': ['ids'],
+ 'type': 'object'},
+ 'LogForwardingGetLastSentResult': {'additionalProperties': False,
+ 'properties': {'err': {'$ref': '#/definitions/Error'},
+ 'record-id': {'type': 'integer'},
+ 'record-timestamp': {'type': 'integer'}},
+ 'required': ['record-id',
+ 'record-timestamp',
+ 'err'],
+ 'type': 'object'},
+ 'LogForwardingGetLastSentResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/LogForwardingGetLastSentResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'LogForwardingID': {'additionalProperties': False,
+ 'properties': {'model': {'type': 'string'},
+ 'sink': {'type': 'string'}},
+ 'required': ['model', 'sink'],
+ 'type': 'object'},
+ 'LogForwardingSetLastSentParam': {'additionalProperties': False,
+ 'properties': {'LogForwardingID': {'$ref': '#/definitions/LogForwardingID'},
+ 'record-id': {'type': 'integer'},
+ 'record-timestamp': {'type': 'integer'}},
+ 'required': ['LogForwardingID',
+ 'record-id',
+ 'record-timestamp'],
+ 'type': 'object'},
+ 'LogForwardingSetLastSentParams': {'additionalProperties': False,
+ 'properties': {'params': {'items': {'$ref': '#/definitions/LogForwardingSetLastSentParam'},
+ 'type': 'array'}},
+ 'required': ['params'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'}},
+ 'properties': {'GetLastSent': {'properties': {'Params': {'$ref': '#/definitions/LogForwardingGetLastSentParams'},
+ 'Result': {'$ref': '#/definitions/LogForwardingGetLastSentResults'}},
+ 'type': 'object'},
+ 'SetLastSent': {'properties': {'Params': {'$ref': '#/definitions/LogForwardingSetLastSentParams'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'}},
+ 'type': 'object'}
- @ReturnMapping(ErrorResults)
- async def SetPasswords(self, changes):
+ @ReturnMapping(LogForwardingGetLastSentResults)
+ async def GetLastSent(self, ids):
'''
- changes : typing.Sequence<+T_co>[~EntityPassword]<~EntityPassword>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ ids : typing.Sequence[~LogForwardingID]
+ Returns -> typing.Sequence[~LogForwardingGetLastSentResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Deployer', request='SetPasswords', version=1, params=_params)
- _params['changes'] = changes
+ msg = dict(type='LogForwarding',
+ request='GetLastSent',
+ version=1,
+ params=_params)
+ _params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
- async def SetStatus(self, entities):
+ async def SetLastSent(self, params):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ params : typing.Sequence[~LogForwardingSetLastSentParam]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Deployer', request='SetStatus', version=1, params=_params)
- _params['entities'] = entities
+ msg = dict(type='LogForwarding',
+ request='SetLastSent',
+ version=1,
+ 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<+T_co>[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
-
+class LoggerFacade(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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ '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': ['result'],
+ 'type': 'object'},
+ 'StringResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StringResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ '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(ErrorResults)
- async def UpdateStatus(self, entities):
+ @ReturnMapping(StringResults)
+ async def LoggingConfig(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Deployer', request='UpdateStatus', version=1, params=_params)
+ msg = dict(type='Logger',
+ request='LoggingConfig',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(NotifyWatchResult)
- async def WatchAPIHostPorts(self):
- '''
-
- Returns -> typing.Union[str, _ForwardRef('Error')]
- '''
- # 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):
+ @ReturnMapping(NotifyWatchResults)
+ async def WatchLoggingConfig(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Deployer', request='WatchUnits', version=1, params=_params)
+ msg = dict(type='Logger',
+ request='WatchLoggingConfig',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
-class HostKeyReporterFacade(Type):
- name = 'HostKeyReporter'
+class MachineActionsFacade(Type):
+ name = 'MachineActions'
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'},
- 'macaroon-path': {'type': 'string'}},
- 'type': 'object'},
- 'ErrorResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'}},
- 'type': 'object'},
- 'ErrorResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
- 'type': 'array'}},
- 'required': ['results'],
+ 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': {'action-tag': {'type': 'string'},
+ 'message': {'type': 'string'},
+ 'results': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'status': {'type': 'string'}},
+ 'required': ['action-tag', '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'},
- 'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'SSHHostKeySet': {'additionalProperties': False,
- 'properties': {'entity-keys': {'items': {'$ref': '#/definitions/SSHHostKeys'},
- 'type': 'array'}},
- 'required': ['entity-keys'],
+ 'ActionResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ActionResult'},
+ 'type': 'array'}},
'type': 'object'},
- 'SSHHostKeys': {'additionalProperties': False,
- 'properties': {'public-keys': {'items': {'type': 'string'},
- 'type': 'array'},
- 'tag': {'type': 'string'}},
- 'required': ['tag', 'public-keys'],
- '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<+T_co>[~SSHHostKeys]<~SSHHostKeys>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~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 KeyManagerFacade(Type):
- name = 'KeyManager'
- version = 1
- schema = {'definitions': {'Entities': {'additionalProperties': False,
+ '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': 'array'}},
'required': ['results'],
'type': 'object'},
- 'ListSSHKeys': {'additionalProperties': False,
- 'properties': {'entities': {'$ref': '#/definitions/Entities'},
- 'mode': {'type': 'boolean'}},
- 'required': ['entities', 'mode'],
- 'type': 'object'},
'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'ModifyUserSSHKeys': {'additionalProperties': False,
- 'properties': {'ssh-keys': {'items': {'type': 'string'},
+ 'StringsWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'type': 'string'},
'type': 'array'},
- 'user': {'type': 'string'}},
- 'required': ['user', 'ssh-keys'],
- 'type': 'object'},
- 'StringsResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'},
- 'result': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'type': 'object'},
- 'StringsResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/StringsResult'},
- 'type': 'array'}},
- 'required': ['results'],
- 'type': 'object'}},
- 'properties': {'AddKeys': {'properties': {'Params': {'$ref': '#/definitions/ModifyUserSSHKeys'},
- 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
+ 'type': 'object'},
+ 'StringsWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'}},
+ 'properties': {'Actions': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ActionResults'}},
'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'}},
+ '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(ErrorResults)
- async def AddKeys(self, ssh_keys, user):
+
+ @ReturnMapping(ActionResults)
+ async def Actions(self, entities):
'''
- ssh_keys : typing.Sequence<+T_co>[str]
- user : str
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ActionResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='KeyManager', request='AddKeys', version=1, params=_params)
- _params['ssh-keys'] = ssh_keys
- _params['user'] = user
+ msg = dict(type='MachineActions',
+ request='Actions',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
- async def DeleteKeys(self, ssh_keys, user):
+ async def BeginActions(self, entities):
'''
- ssh_keys : typing.Sequence<+T_co>[str]
- user : str
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='KeyManager', request='DeleteKeys', version=1, params=_params)
- _params['ssh-keys'] = ssh_keys
- _params['user'] = user
+ msg = dict(type='MachineActions',
+ request='BeginActions',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
- async def ImportKeys(self, ssh_keys, user):
+ async def FinishActions(self, results):
'''
- ssh_keys : typing.Sequence<+T_co>[str]
- user : str
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ results : typing.Sequence[~ActionExecutionResult]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='KeyManager', request='ImportKeys', version=1, params=_params)
- _params['ssh-keys'] = ssh_keys
- _params['user'] = user
+ msg = dict(type='MachineActions',
+ request='FinishActions',
+ version=1,
+ params=_params)
+ _params['results'] = results
reply = await self.rpc(msg)
return reply
- @ReturnMapping(StringsResults)
- async def ListKeys(self, entities, mode):
+ @ReturnMapping(ActionsByReceivers)
+ async def RunningActions(self, entities):
'''
- entities : Entities
- mode : bool
- Returns -> typing.Sequence<+T_co>[~StringsResult]<~StringsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ActionsByReceiver]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='KeyManager', request='ListKeys', version=1, params=_params)
+ msg = dict(type='MachineActions',
+ request='RunningActions',
+ version=1,
+ params=_params)
_params['entities'] = entities
- _params['mode'] = mode
reply = await self.rpc(msg)
return reply
-class KeyUpdaterFacade(Type):
- name = 'KeyUpdater'
+ @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 MachineUndertakerFacade(Type):
+ name = 'MachineUndertaker'
version = 1
schema = {'definitions': {'Entities': {'additionalProperties': False,
'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
'type': 'array'}},
'required': ['entities'],
'type': 'object'},
+ 'EntitiesResult': {'additionalProperties': False,
+ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
+ 'type': 'array'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['entities'],
+ 'type': 'object'},
+ 'EntitiesResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/EntitiesResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
'Entity': {'additionalProperties': False,
'properties': {'tag': {'type': 'string'}},
'required': ['tag'],
'type': 'array'}},
'required': ['results'],
'type': 'object'},
- 'StringsResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'},
- 'result': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'type': 'object'},
- 'StringsResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/StringsResult'},
- 'type': 'array'}},
- 'required': ['results'],
- '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'}},
+ 'ProviderInterfaceInfo': {'additionalProperties': False,
+ 'properties': {'interface-name': {'type': 'string'},
+ 'mac-address': {'type': 'string'},
+ 'provider-id': {'type': 'string'}},
+ 'required': ['interface-name',
+ 'mac-address',
+ 'provider-id'],
+ 'type': 'object'},
+ 'ProviderInterfaceInfoResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'interfaces': {'items': {'$ref': '#/definitions/ProviderInterfaceInfo'},
+ 'type': 'array'},
+ 'machine-tag': {'type': 'string'}},
+ 'required': ['machine-tag',
+ 'interfaces'],
+ 'type': 'object'},
+ 'ProviderInterfaceInfoResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ProviderInterfaceInfoResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'}},
+ 'properties': {'AllMachineRemovals': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/EntitiesResults'}},
+ 'type': 'object'},
+ 'CompleteMachineRemovals': {'properties': {'Params': {'$ref': '#/definitions/Entities'}},
+ 'type': 'object'},
+ 'GetMachineProviderInterfaceInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ProviderInterfaceInfoResults'}},
+ 'type': 'object'},
+ 'WatchMachineRemovals': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
+ 'type': 'object'}},
'type': 'object'}
-
- @ReturnMapping(StringsResults)
- async def AuthorisedKeys(self, entities):
+
+ @ReturnMapping(EntitiesResults)
+ async def AllMachineRemovals(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~EntitiesResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='MachineUndertaker',
+ request='AllMachineRemovals',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def CompleteMachineRemovals(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='MachineUndertaker',
+ request='CompleteMachineRemovals',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ProviderInterfaceInfoResults)
+ async def GetMachineProviderInterfaceInfo(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringsResult]<~StringsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ProviderInterfaceInfoResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='KeyUpdater', request='AuthorisedKeys', version=1, params=_params)
+ msg = dict(type='MachineUndertaker',
+ request='GetMachineProviderInterfaceInfo',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResults)
- async def WatchAuthorisedKeys(self, entities):
+ async def WatchMachineRemovals(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ 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)
+ msg = dict(type='MachineUndertaker',
+ request='WatchMachineRemovals',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
-class LifeFlagFacade(Type):
- name = 'LifeFlag'
+class MachinerFacade(Type):
+ name = 'Machiner'
version = 1
- schema = {'definitions': {'Entities': {'additionalProperties': False,
+ 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'},
+ 'space-name': {'type': 'string'},
+ 'type': {'type': 'string'},
+ 'value': {'type': 'string'}},
+ 'required': ['value', 'type', 'scope'],
+ 'type': 'object'},
+ 'Entities': {'additionalProperties': False,
'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
'type': 'array'}},
'required': ['entities'],
'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'},
'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
'macaroon-path': {'type': 'string'}},
'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/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'],
+ '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': ['results'],
'type': 'object'},
'Macaroon': {'additionalProperties': False, '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'},
+ 'config-type': {'type': 'string'},
+ 'device-index': {'type': 'integer'},
+ 'disabled': {'type': 'boolean'},
+ 'dns-search-domains': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'dns-servers': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'gateway-address': {'type': 'string'},
+ 'interface-name': {'type': 'string'},
+ 'interface-type': {'type': 'string'},
+ 'is-default-gateway': {'type': 'boolean'},
+ 'mac-address': {'type': 'string'},
+ 'mtu': {'type': 'integer'},
+ 'no-auto-start': {'type': 'boolean'},
+ 'parent-interface-name': {'type': 'string'},
+ 'provider-address-id': {'type': 'string'},
+ 'provider-id': {'type': 'string'},
+ 'provider-space-id': {'type': 'string'},
+ 'provider-subnet-id': {'type': 'string'},
+ 'provider-vlan-id': {'type': 'string'},
+ 'routes': {'items': {'$ref': '#/definitions/NetworkRoute'},
+ 'type': 'array'},
+ 'vlan-tag': {'type': 'integer'}},
+ 'required': ['device-index',
+ 'mac-address',
+ 'cidr',
+ 'mtu',
+ 'provider-id',
+ 'provider-subnet-id',
+ 'provider-space-id',
+ 'provider-address-id',
+ 'provider-vlan-id',
+ 'vlan-tag',
+ 'interface-name',
+ 'parent-interface-name',
+ 'interface-type',
+ 'disabled'],
+ 'type': 'object'},
+ 'NetworkRoute': {'additionalProperties': False,
+ 'properties': {'destination-cidr': {'type': 'string'},
+ 'gateway-ip': {'type': 'string'},
+ 'metric': {'type': 'integer'}},
+ 'required': ['destination-cidr',
+ 'gateway-ip',
+ 'metric'],
+ 'type': 'object'},
'NotifyWatchResult': {'additionalProperties': False,
'properties': {'NotifyWatcherId': {'type': 'string'},
'error': {'$ref': '#/definitions/Error'}},
'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
'type': 'array'}},
'required': ['results'],
- 'type': 'object'}},
- 'properties': {'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ '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': {'machine-addresses': {'items': {'$ref': '#/definitions/MachineAddresses'},
+ 'type': 'array'}},
+ 'required': ['machine-addresses'],
+ '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': ['result'],
+ 'type': 'object'},
+ 'StringsResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'}},
+ 'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}},
+ 'type': 'object'},
+ 'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}},
+ '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'}},
+ 'type': 'object'},
+ 'WatchAPIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
+ 'type': 'object'}},
'type': 'object'}
-
- @ReturnMapping(LifeResults)
- async def Life(self, entities):
+
+ @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(ErrorResults)
+ async def EnsureDead(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='LifeFlag', request='Life', version=1, params=_params)
+ msg = dict(type='Machiner',
+ request='EnsureDead',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(NotifyWatchResults)
- async def Watch(self, entities):
+ @ReturnMapping(JobsResults)
+ async def Jobs(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~JobsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='LifeFlag', request='Watch', version=1, params=_params)
+ msg = dict(type='Machiner',
+ request='Jobs',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
-class LogForwardingFacade(Type):
- name = 'LogForwarding'
- 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'},
- 'macaroon-path': {'type': 'string'}},
- 'type': 'object'},
- 'ErrorResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'}},
- 'type': 'object'},
- 'ErrorResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
- 'type': 'array'}},
- 'required': ['results'],
- 'type': 'object'},
- 'LogForwardingGetLastSentParams': {'additionalProperties': False,
- 'properties': {'ids': {'items': {'$ref': '#/definitions/LogForwardingID'},
- 'type': 'array'}},
- 'required': ['ids'],
- 'type': 'object'},
- 'LogForwardingGetLastSentResult': {'additionalProperties': False,
- 'properties': {'err': {'$ref': '#/definitions/Error'},
- 'record-id': {'type': 'integer'},
- 'record-timestamp': {'type': 'integer'}},
- 'required': ['record-id',
- 'record-timestamp',
- 'err'],
- 'type': 'object'},
- 'LogForwardingGetLastSentResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/LogForwardingGetLastSentResult'},
- 'type': 'array'}},
- 'required': ['results'],
- 'type': 'object'},
- 'LogForwardingID': {'additionalProperties': False,
- 'properties': {'model': {'type': 'string'},
- 'sink': {'type': 'string'}},
- 'required': ['model', 'sink'],
- 'type': 'object'},
- 'LogForwardingSetLastSentParam': {'additionalProperties': False,
- 'properties': {'LogForwardingID': {'$ref': '#/definitions/LogForwardingID'},
- 'record-id': {'type': 'integer'},
- 'record-timestamp': {'type': 'integer'}},
- 'required': ['LogForwardingID',
- 'record-id',
- 'record-timestamp'],
- 'type': 'object'},
- 'LogForwardingSetLastSentParams': {'additionalProperties': False,
- 'properties': {'params': {'items': {'$ref': '#/definitions/LogForwardingSetLastSentParam'},
- 'type': 'array'}},
- 'required': ['params'],
- 'type': 'object'},
- 'Macaroon': {'additionalProperties': False, 'type': 'object'}},
- 'properties': {'GetLastSent': {'properties': {'Params': {'$ref': '#/definitions/LogForwardingGetLastSentParams'},
- 'Result': {'$ref': '#/definitions/LogForwardingGetLastSentResults'}},
- 'type': 'object'},
- 'SetLastSent': {'properties': {'Params': {'$ref': '#/definitions/LogForwardingSetLastSentParams'},
- 'Result': {'$ref': '#/definitions/ErrorResults'}},
- '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='Machiner',
+ request='Life',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
- @ReturnMapping(LogForwardingGetLastSentResults)
- async def GetLastSent(self, ids):
+ @ReturnMapping(StringResult)
+ async def ModelUUID(self):
'''
- ids : typing.Sequence<+T_co>[~LogForwardingID]<~LogForwardingID>
- Returns -> typing.Sequence<+T_co>[~LogForwardingGetLastSentResult]<~LogForwardingGetLastSentResult>
+
+ Returns -> typing.Union[_ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='LogForwarding', request='GetLastSent', version=1, params=_params)
- _params['ids'] = ids
+ msg = dict(type='Machiner',
+ request='ModelUUID',
+ version=1,
+ params=_params)
+
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
- async def SetLastSent(self, params):
+ async def SetMachineAddresses(self, machine_addresses):
'''
- params : typing.Sequence<+T_co>[~LogForwardingSetLastSentParam]<~LogForwardingSetLastSentParam>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ machine_addresses : typing.Sequence[~MachineAddresses]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='LogForwarding', request='SetLastSent', version=1, params=_params)
- _params['params'] = params
+ msg = dict(type='Machiner',
+ request='SetMachineAddresses',
+ version=1,
+ params=_params)
+ _params['machine-addresses'] = machine_addresses
reply = await self.rpc(msg)
return reply
-class LoggerFacade(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'},
- 'macaroon-path': {'type': 'string'}},
- 'type': 'object'},
- 'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'NotifyWatchResult': {'additionalProperties': False,
- 'properties': {'NotifyWatcherId': {'type': 'string'},
- 'error': {'$ref': '#/definitions/Error'}},
- 'required': ['NotifyWatcherId'],
- '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': ['result'],
- 'type': 'object'},
- 'StringResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/StringResult'},
- 'type': 'array'}},
- 'required': ['results'],
- '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(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(StringResults)
- async def LoggingConfig(self, entities):
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetProviderNetworkConfig(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Logger', request='LoggingConfig', version=1, params=_params)
+ msg = dict(type='Machiner',
+ request='SetProviderNetworkConfig',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(NotifyWatchResults)
- async def WatchLoggingConfig(self, entities):
+ @ReturnMapping(ErrorResults)
+ async def SetStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Logger', request='WatchLoggingConfig', version=1, params=_params)
+ msg = dict(type='Machiner',
+ request='SetStatus',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
-class MachineActionsFacade(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': {'action-tag': {'type': 'string'},
- 'message': {'type': 'string'},
- 'results': {'patternProperties': {'.*': {'additionalProperties': True,
- 'type': 'object'}},
- 'type': 'object'},
- 'status': {'type': 'string'}},
- 'required': ['action-tag', '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'},
- 'macaroon-path': {'type': 'string'}},
- 'type': 'object'},
- 'ErrorResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'}},
- 'type': 'object'},
- 'ErrorResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
- 'type': 'array'}},
- 'required': ['results'],
- 'type': 'object'},
- 'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'StringsWatchResult': {'additionalProperties': False,
- 'properties': {'changes': {'items': {'type': 'string'},
- 'type': 'array'},
- 'error': {'$ref': '#/definitions/Error'},
- 'watcher-id': {'type': 'string'}},
- 'required': ['watcher-id'],
- 'type': 'object'},
- 'StringsWatchResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/StringsWatchResult'},
- 'type': 'array'}},
- 'required': ['results'],
- '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):
+ @ReturnMapping(ErrorResults)
+ async def UpdateStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ActionResult]<~ActionResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MachineActions', request='Actions', version=1, params=_params)
+ msg = dict(type='Machiner',
+ request='UpdateStatus',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ErrorResults)
- async def BeginActions(self, entities):
+ @ReturnMapping(NotifyWatchResults)
+ async def Watch(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MachineActions', request='BeginActions', version=1, params=_params)
+ msg = dict(type='Machiner',
+ request='Watch',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ErrorResults)
- async def FinishActions(self, results):
+ @ReturnMapping(NotifyWatchResult)
+ async def WatchAPIHostPorts(self):
'''
- results : typing.Sequence<+T_co>[~ActionExecutionResult]<~ActionExecutionResult>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+
+ Returns -> typing.Union[str, _ForwardRef('Error')]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MachineActions', request='FinishActions', version=1, params=_params)
- _params['results'] = results
+ msg = dict(type='Machiner',
+ request='WatchAPIHostPorts',
+ version=1,
+ params=_params)
+
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ActionsByReceivers)
- async def RunningActions(self, entities):
+class MeterStatusFacade(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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'MeterStatusResult': {'additionalProperties': False,
+ 'properties': {'code': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'info': {'type': 'string'}},
+ 'required': ['code', 'info'],
+ 'type': 'object'},
+ 'MeterStatusResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/MeterStatusResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ 'type': 'object'},
+ 'NotifyWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ '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<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ActionsByReceiver]<~ActionsByReceiver>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~MeterStatusResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MachineActions', request='RunningActions', version=1, params=_params)
+ msg = dict(type='MeterStatus',
+ request='GetMeterStatus',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(StringsWatchResults)
- async def WatchActionNotifications(self, entities):
+ @ReturnMapping(NotifyWatchResults)
+ async def WatchMeterStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MachineActions', request='WatchActionNotifications', version=1, params=_params)
+ msg = dict(type='MeterStatus',
+ request='WatchMeterStatus',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
-class MachineUndertakerFacade(Type):
- name = 'MachineUndertaker'
+class MetricsManagerFacade(Type):
+ name = 'MetricsManager'
version = 1
schema = {'definitions': {'Entities': {'additionalProperties': False,
'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
'type': 'array'}},
'required': ['entities'],
'type': 'object'},
- 'EntitiesResult': {'additionalProperties': False,
- 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
- 'type': 'array'},
- 'error': {'$ref': '#/definitions/Error'}},
- 'required': ['entities'],
- 'type': 'object'},
- 'EntitiesResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/EntitiesResult'},
- 'type': 'array'}},
- 'required': ['results'],
- 'type': 'object'},
'Entity': {'additionalProperties': False,
'properties': {'tag': {'type': 'string'}},
'required': ['tag'],
'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
'macaroon-path': {'type': 'string'}},
'type': 'object'},
- 'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'NotifyWatchResult': {'additionalProperties': False,
- 'properties': {'NotifyWatcherId': {'type': 'string'},
- 'error': {'$ref': '#/definitions/Error'}},
- 'required': ['NotifyWatcherId'],
- 'type': 'object'},
- 'NotifyWatchResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
- 'type': 'array'}},
- 'required': ['results'],
- 'type': 'object'},
- 'ProviderInterfaceInfo': {'additionalProperties': False,
- 'properties': {'interface-name': {'type': 'string'},
- 'mac-address': {'type': 'string'},
- 'provider-id': {'type': 'string'}},
- 'required': ['interface-name',
- 'mac-address',
- 'provider-id'],
- 'type': 'object'},
- 'ProviderInterfaceInfoResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'},
- 'interfaces': {'items': {'$ref': '#/definitions/ProviderInterfaceInfo'},
- 'type': 'array'},
- 'machine-tag': {'type': 'string'}},
- 'required': ['machine-tag',
- 'interfaces'],
- 'type': 'object'},
- 'ProviderInterfaceInfoResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/ProviderInterfaceInfoResult'},
- 'type': 'array'}},
- 'required': ['results'],
- 'type': 'object'}},
- 'properties': {'AllMachineRemovals': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
- 'Result': {'$ref': '#/definitions/EntitiesResults'}},
- 'type': 'object'},
- 'CompleteMachineRemovals': {'properties': {'Params': {'$ref': '#/definitions/Entities'}},
- 'type': 'object'},
- 'GetMachineProviderInterfaceInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
- 'Result': {'$ref': '#/definitions/ProviderInterfaceInfoResults'}},
- 'type': 'object'},
- 'WatchMachineRemovals': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
- 'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
- 'type': 'object'}},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'}},
+ 'properties': {'AddJujuMachineMetrics': {'type': 'object'},
+ '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(EntitiesResults)
- async def AllMachineRemovals(self, entities):
- '''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~EntitiesResult]<~EntitiesResult>
- '''
- # map input types to rpc msg
- _params = dict()
- msg = dict(type='MachineUndertaker', request='AllMachineRemovals', version=1, params=_params)
- _params['entities'] = entities
- reply = await self.rpc(msg)
- return reply
-
@ReturnMapping(None)
- async def CompleteMachineRemovals(self, entities):
+ async def AddJujuMachineMetrics(self):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
+
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MachineUndertaker', request='CompleteMachineRemovals', version=1, params=_params)
- _params['entities'] = entities
+ msg = dict(type='MetricsManager',
+ request='AddJujuMachineMetrics',
+ version=1,
+ params=_params)
+
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ProviderInterfaceInfoResults)
- async def GetMachineProviderInterfaceInfo(self, entities):
+ @ReturnMapping(ErrorResults)
+ async def CleanupOldMetrics(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ProviderInterfaceInfoResult]<~ProviderInterfaceInfoResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MachineUndertaker', request='GetMachineProviderInterfaceInfo', version=1, params=_params)
+ msg = dict(type='MetricsManager',
+ request='CleanupOldMetrics',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(NotifyWatchResults)
- async def WatchMachineRemovals(self, entities):
+ @ReturnMapping(ErrorResults)
+ async def SendMetrics(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MachineUndertaker', request='WatchMachineRemovals', version=1, params=_params)
+ msg = dict(type='MetricsManager',
+ request='SendMetrics',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
-class MachinerFacade(Type):
- name = 'Machiner'
+class MigrationFlagFacade(Type):
+ name = 'MigrationFlag'
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'},
- 'space-name': {'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'},
- 'macaroon-path': {'type': 'string'}},
- 'type': 'object'},
- 'ErrorResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/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'],
- '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'],
- 'type': 'object'},
- 'LifeResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'},
- 'type': 'array'}},
- 'required': ['results'],
- 'type': 'object'},
- 'Macaroon': {'additionalProperties': False, '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'},
- 'config-type': {'type': 'string'},
- 'device-index': {'type': 'integer'},
- 'disabled': {'type': 'boolean'},
- 'dns-search-domains': {'items': {'type': 'string'},
- 'type': 'array'},
- 'dns-servers': {'items': {'type': 'string'},
- 'type': 'array'},
- 'gateway-address': {'type': 'string'},
- 'interface-name': {'type': 'string'},
- 'interface-type': {'type': 'string'},
- 'mac-address': {'type': 'string'},
- 'mtu': {'type': 'integer'},
- 'no-auto-start': {'type': 'boolean'},
- 'parent-interface-name': {'type': 'string'},
- 'provider-address-id': {'type': 'string'},
- 'provider-id': {'type': 'string'},
- 'provider-space-id': {'type': 'string'},
- 'provider-subnet-id': {'type': 'string'},
- 'provider-vlan-id': {'type': 'string'},
- 'routes': {'items': {'$ref': '#/definitions/NetworkRoute'},
- 'type': 'array'},
- 'vlan-tag': {'type': 'integer'}},
- 'required': ['device-index',
- 'mac-address',
- 'cidr',
- 'mtu',
- 'provider-id',
- 'provider-subnet-id',
- 'provider-space-id',
- 'provider-address-id',
- 'provider-vlan-id',
- 'vlan-tag',
- 'interface-name',
- 'parent-interface-name',
- 'interface-type',
- 'disabled'],
- 'type': 'object'},
- 'NetworkRoute': {'additionalProperties': False,
- 'properties': {'destination-cidr': {'type': 'string'},
- 'gateway-ip': {'type': 'string'},
- 'metric': {'type': 'integer'}},
- 'required': ['destination-cidr',
- 'gateway-ip',
- 'metric'],
- 'type': 'object'},
+ 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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
'NotifyWatchResult': {'additionalProperties': False,
'properties': {'NotifyWatcherId': {'type': 'string'},
'error': {'$ref': '#/definitions/Error'}},
'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': {'machine-addresses': {'items': {'$ref': '#/definitions/MachineAddresses'},
- 'type': 'array'}},
- 'required': ['machine-addresses'],
- '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': ['result'],
- 'type': 'object'},
- 'StringsResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'},
- 'result': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'type': 'object'}},
- 'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}},
- 'type': 'object'},
- 'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}},
+ 'PhaseResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'phase': {'type': 'string'}},
'type': 'object'},
- 'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}},
+ 'PhaseResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/PhaseResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ '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 MigrationMasterFacade(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'},
- 'EnsureDead': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
- 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'ErrorInfo': {'additionalProperties': False,
+ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
+ 'macaroon-path': {'type': 'string'}},
'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'}},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'MasterMigrationStatus': {'additionalProperties': False,
+ 'properties': {'migration-id': {'type': 'string'},
+ 'phase': {'type': 'string'},
+ 'phase-changed-time': {'format': 'date-time',
+ 'type': 'string'},
+ 'spec': {'$ref': '#/definitions/MigrationSpec'}},
+ 'required': ['spec',
+ 'migration-id',
+ 'phase',
+ 'phase-changed-time'],
+ 'type': 'object'},
+ 'MigrationModelInfo': {'additionalProperties': False,
+ 'properties': {'agent-version': {'$ref': '#/definitions/Number'},
+ 'controller-agent-version': {'$ref': '#/definitions/Number'},
+ 'name': {'type': 'string'},
+ 'owner-tag': {'type': 'string'},
+ 'uuid': {'type': 'string'}},
+ 'required': ['uuid',
+ 'name',
+ 'owner-tag',
+ 'agent-version',
+ 'controller-agent-version'],
'type': 'object'},
- 'SetObservedNetworkConfig': {'properties': {'Params': {'$ref': '#/definitions/SetMachineNetworkConfig'}},
- 'type': 'object'},
- 'SetProviderNetworkConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
- 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'MigrationSpec': {'additionalProperties': False,
+ 'properties': {'model-tag': {'type': 'string'},
+ 'target-info': {'$ref': '#/definitions/MigrationTargetInfo'}},
+ 'required': ['model-tag', 'target-info'],
+ 'type': 'object'},
+ 'MigrationTargetInfo': {'additionalProperties': False,
+ 'properties': {'addrs': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'auth-tag': {'type': 'string'},
+ 'ca-cert': {'type': 'string'},
+ 'controller-tag': {'type': 'string'},
+ 'macaroons': {'type': 'string'},
+ 'password': {'type': 'string'}},
+ 'required': ['controller-tag',
+ 'addrs',
+ 'ca-cert',
+ 'auth-tag'],
+ 'type': 'object'},
+ 'MinionReports': {'additionalProperties': False,
+ 'properties': {'failed': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'migration-id': {'type': 'string'},
+ 'phase': {'type': 'string'},
+ 'success-count': {'type': 'integer'},
+ 'unknown-count': {'type': 'integer'},
+ 'unknown-sample': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['migration-id',
+ 'phase',
+ 'success-count',
+ 'unknown-count',
+ 'unknown-sample',
+ 'failed'],
+ 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ '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'},
+ 'SerializedModel': {'additionalProperties': False,
+ 'properties': {'bytes': {'items': {'type': 'integer'},
+ 'type': 'array'},
+ 'charms': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'resources': {'items': {'$ref': '#/definitions/SerializedModelResource'},
+ 'type': 'array'},
+ 'tools': {'items': {'$ref': '#/definitions/SerializedModelTools'},
+ 'type': 'array'}},
+ 'required': ['bytes',
+ 'charms',
+ 'tools',
+ 'resources'],
+ 'type': 'object'},
+ 'SerializedModelResource': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'},
+ 'application-revision': {'$ref': '#/definitions/SerializedModelResourceRevision'},
+ 'charmstore-revision': {'$ref': '#/definitions/SerializedModelResourceRevision'},
+ 'name': {'type': 'string'},
+ 'unit-revisions': {'patternProperties': {'.*': {'$ref': '#/definitions/SerializedModelResourceRevision'}},
+ 'type': 'object'}},
+ 'required': ['application',
+ 'name',
+ 'application-revision',
+ 'charmstore-revision',
+ 'unit-revisions'],
'type': 'object'},
- 'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
- 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'SerializedModelResourceRevision': {'additionalProperties': False,
+ 'properties': {'description': {'type': 'string'},
+ 'fingerprint': {'type': 'string'},
+ 'origin': {'type': 'string'},
+ 'path': {'type': 'string'},
+ 'revision': {'type': 'integer'},
+ 'size': {'type': 'integer'},
+ 'timestamp': {'format': 'date-time',
+ 'type': 'string'},
+ 'type': {'type': 'string'},
+ 'username': {'type': 'string'}},
+ 'required': ['revision',
+ 'type',
+ 'path',
+ 'description',
+ 'origin',
+ 'fingerprint',
+ 'size',
+ 'timestamp'],
+ 'type': 'object'},
+ 'SerializedModelTools': {'additionalProperties': False,
+ 'properties': {'uri': {'type': 'string'},
+ 'version': {'type': 'string'}},
+ 'required': ['version', 'uri'],
+ 'type': 'object'},
+ 'SetMigrationPhaseArgs': {'additionalProperties': False,
+ 'properties': {'phase': {'type': 'string'}},
+ 'required': ['phase'],
+ 'type': 'object'},
+ 'SetMigrationStatusMessageArgs': {'additionalProperties': False,
+ 'properties': {'message': {'type': 'string'}},
+ 'required': ['message'],
+ 'type': 'object'}},
+ 'properties': {'Export': {'properties': {'Result': {'$ref': '#/definitions/SerializedModel'}},
+ 'type': 'object'},
+ 'MigrationStatus': {'properties': {'Result': {'$ref': '#/definitions/MasterMigrationStatus'}},
+ 'type': 'object'},
+ 'MinionReports': {'properties': {'Result': {'$ref': '#/definitions/MinionReports'}},
+ 'type': 'object'},
+ 'ModelInfo': {'properties': {'Result': {'$ref': '#/definitions/MigrationModelInfo'}},
'type': 'object'},
- 'UpdateStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
- 'Result': {'$ref': '#/definitions/ErrorResults'}},
- 'type': 'object'},
- 'Watch': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
- 'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
+ 'Prechecks': {'type': 'object'},
+ 'Reap': {'type': 'object'},
+ 'SetPhase': {'properties': {'Params': {'$ref': '#/definitions/SetMigrationPhaseArgs'}},
+ 'type': 'object'},
+ 'SetStatusMessage': {'properties': {'Params': {'$ref': '#/definitions/SetMigrationStatusMessageArgs'}},
+ 'type': 'object'},
+ 'Watch': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
'type': 'object'},
- 'WatchAPIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
- 'type': 'object'}},
+ 'WatchMinionReports': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
+ 'type': 'object'}},
'type': 'object'}
-
- @ReturnMapping(StringsResult)
- async def APIAddresses(self):
+
+ @ReturnMapping(SerializedModel)
+ async def Export(self):
'''
- Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence<+T_co>[str]]
+ Returns -> typing.Union[typing.Sequence[int], typing.Sequence[str], typing.Sequence[~SerializedModelTools]]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Machiner', request='APIAddresses', version=1, params=_params)
+ msg = dict(type='MigrationMaster',
+ request='Export',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(APIHostPortsResult)
- async def APIHostPorts(self):
+ @ReturnMapping(MasterMigrationStatus)
+ async def MigrationStatus(self):
'''
- Returns -> typing.Sequence<+T_co>[~HostPort]<~HostPort>
+ Returns -> typing.Union[str, _ForwardRef('MigrationSpec')]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Machiner', request='APIHostPorts', version=1, params=_params)
+ msg = dict(type='MigrationMaster',
+ request='MigrationStatus',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(BytesResult)
- async def CACert(self):
+ @ReturnMapping(MinionReports)
+ async def MinionReports(self):
'''
- Returns -> typing.Sequence<+T_co>[int]
+ Returns -> typing.Union[typing.Sequence[str], str, int]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Machiner', request='CACert', version=1, params=_params)
+ msg = dict(type='MigrationMaster',
+ request='MinionReports',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ErrorResults)
- async def EnsureDead(self, entities):
- '''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ @ReturnMapping(MigrationModelInfo)
+ async def ModelInfo(self):
'''
- # 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<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~JobsResult]<~JobsResult>
+ Returns -> typing.Union[_ForwardRef('Number'), str]
'''
# 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
-
+ msg = dict(type='MigrationMaster',
+ request='ModelInfo',
+ version=1,
+ params=_params)
-
- @ReturnMapping(LifeResults)
- async def Life(self, entities):
- '''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~LifeResult]<~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):
+ @ReturnMapping(None)
+ async def Prechecks(self):
'''
- Returns -> typing.Union[_ForwardRef('Error'), str]
+ Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Machiner', request='ModelUUID', version=1, params=_params)
+ msg = dict(type='MigrationMaster',
+ request='Prechecks',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ErrorResults)
- async def SetMachineAddresses(self, machine_addresses):
+ @ReturnMapping(None)
+ async def Reap(self):
'''
- machine_addresses : typing.Sequence<+T_co>[~MachineAddresses]<~MachineAddresses>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+
+ Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Machiner', request='SetMachineAddresses', version=1, params=_params)
- _params['machine-addresses'] = machine_addresses
+ msg = dict(type='MigrationMaster',
+ request='Reap',
+ version=1,
+ params=_params)
+
reply = await self.rpc(msg)
return reply
@ReturnMapping(None)
- async def SetObservedNetworkConfig(self, config, tag):
+ async def SetPhase(self, phase):
'''
- config : typing.Sequence<+T_co>[~NetworkConfig]<~NetworkConfig>
- tag : str
+ phase : 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
+ msg = dict(type='MigrationMaster',
+ request='SetPhase',
+ version=1,
+ params=_params)
+ _params['phase'] = phase
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ErrorResults)
- async def SetProviderNetworkConfig(self, entities):
+ @ReturnMapping(None)
+ async def SetStatusMessage(self, message):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ message : str
+ Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Machiner', request='SetProviderNetworkConfig', version=1, params=_params)
- _params['entities'] = entities
+ msg = dict(type='MigrationMaster',
+ request='SetStatusMessage',
+ version=1,
+ params=_params)
+ _params['message'] = message
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ErrorResults)
- async def SetStatus(self, entities):
- '''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ @ReturnMapping(NotifyWatchResult)
+ async def Watch(self):
'''
- # 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<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ Returns -> typing.Union[str, _ForwardRef('Error')]
'''
# 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
-
-
+ msg = dict(type='MigrationMaster',
+ request='Watch',
+ version=1,
+ params=_params)
- @ReturnMapping(NotifyWatchResults)
- async def Watch(self, entities):
- '''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~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):
+ async def WatchMinionReports(self):
'''
Returns -> typing.Union[str, _ForwardRef('Error')]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Machiner', request='WatchAPIHostPorts', version=1, params=_params)
+ msg = dict(type='MigrationMaster',
+ request='WatchMinionReports',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
-class MeterStatusFacade(Type):
- name = 'MeterStatus'
+class MigrationMinionFacade(Type):
+ name = 'MigrationMinion'
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,
+ schema = {'definitions': {'Error': {'additionalProperties': False,
'properties': {'code': {'type': 'string'},
'info': {'$ref': '#/definitions/ErrorInfo'},
'message': {'type': 'string'}},
'macaroon-path': {'type': 'string'}},
'type': 'object'},
'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'MeterStatusResult': {'additionalProperties': False,
- 'properties': {'code': {'type': 'string'},
- 'error': {'$ref': '#/definitions/Error'},
- 'info': {'type': 'string'}},
- 'required': ['code', 'info'],
- 'type': 'object'},
- 'MeterStatusResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/MeterStatusResult'},
- 'type': 'array'}},
- 'required': ['results'],
- 'type': 'object'},
+ 'MinionReport': {'additionalProperties': False,
+ 'properties': {'migration-id': {'type': 'string'},
+ 'phase': {'type': 'string'},
+ 'success': {'type': 'boolean'}},
+ 'required': ['migration-id',
+ 'phase',
+ 'success'],
+ 'type': 'object'},
'NotifyWatchResult': {'additionalProperties': False,
'properties': {'NotifyWatcherId': {'type': 'string'},
'error': {'$ref': '#/definitions/Error'}},
'required': ['NotifyWatcherId'],
- 'type': 'object'},
- 'NotifyWatchResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
- 'type': 'array'}},
- 'required': ['results'],
- '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<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~MeterStatusResult]<~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<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~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 MetricsManagerFacade(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'}},
+ 'properties': {'Report': {'properties': {'Params': {'$ref': '#/definitions/MinionReport'}},
'type': 'object'},
- 'ErrorInfo': {'additionalProperties': False,
- 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
- 'macaroon-path': {'type': 'string'}},
- 'type': 'object'},
- 'ErrorResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'}},
- 'type': 'object'},
- 'ErrorResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
- 'type': 'array'}},
- 'required': ['results'],
- 'type': 'object'},
- 'Macaroon': {'additionalProperties': False, 'type': 'object'}},
- 'properties': {'AddJujuMachineMetrics': {'type': 'object'},
- 'CleanupOldMetrics': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
- 'Result': {'$ref': '#/definitions/ErrorResults'}},
- 'type': 'object'},
- 'SendMetrics': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
- 'Result': {'$ref': '#/definitions/ErrorResults'}},
- 'type': 'object'}},
+ 'Watch': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
+ 'type': 'object'}},
'type': 'object'}
-
+
@ReturnMapping(None)
- async def AddJujuMachineMetrics(self):
+ async def Report(self, migration_id, phase, success):
'''
-
+ migration_id : str
+ phase : str
+ success : bool
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MetricsManager', request='AddJujuMachineMetrics', version=1, params=_params)
-
- reply = await self.rpc(msg)
- return reply
-
-
-
- @ReturnMapping(ErrorResults)
- async def CleanupOldMetrics(self, entities):
- '''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
- '''
- # map input types to rpc msg
- _params = dict()
- msg = dict(type='MetricsManager', request='CleanupOldMetrics', version=1, params=_params)
- _params['entities'] = entities
+ msg = dict(type='MigrationMinion',
+ request='Report',
+ version=1,
+ params=_params)
+ _params['migration-id'] = migration_id
+ _params['phase'] = phase
+ _params['success'] = success
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ErrorResults)
- async def SendMetrics(self, entities):
+ @ReturnMapping(NotifyWatchResult)
+ async def Watch(self):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+
+ Returns -> typing.Union[str, _ForwardRef('Error')]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MetricsManager', request='SendMetrics', version=1, params=_params)
- _params['entities'] = entities
+ msg = dict(type='MigrationMinion',
+ request='Watch',
+ version=1,
+ params=_params)
+
reply = await self.rpc(msg)
return reply
-class MigrationFlagFacade(Type):
- name = 'MigrationFlag'
+class MigrationStatusWatcherFacade(Type):
+ name = 'MigrationStatusWatcher'
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'},
- 'macaroon-path': {'type': 'string'}},
- 'type': 'object'},
- 'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'NotifyWatchResult': {'additionalProperties': False,
- 'properties': {'NotifyWatcherId': {'type': 'string'},
- 'error': {'$ref': '#/definitions/Error'}},
- 'required': ['NotifyWatcherId'],
- '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'}},
- 'type': 'object'},
- 'PhaseResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/PhaseResult'},
- 'type': 'array'}},
- 'required': ['results'],
- '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'}},
+ schema = {'definitions': {'MigrationStatus': {'additionalProperties': False,
+ 'properties': {'attempt': {'type': 'integer'},
+ 'migration-id': {'type': 'string'},
+ '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': ['migration-id',
+ '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(PhaseResults)
- async def Phase(self, entities):
+
+ @ReturnMapping(MigrationStatus)
+ async def Next(self):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~PhaseResult]<~PhaseResult>
+
+ Returns -> typing.Union[int, str, typing.Sequence[str]]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationFlag', request='Phase', version=1, params=_params)
- _params['entities'] = entities
+ msg = dict(type='MigrationStatusWatcher',
+ request='Next',
+ version=1,
+ params=_params)
+
reply = await self.rpc(msg)
return reply
- @ReturnMapping(NotifyWatchResults)
- async def Watch(self, entities):
+ @ReturnMapping(None)
+ async def Stop(self):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+
+ Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationFlag', request='Watch', version=1, params=_params)
- _params['entities'] = entities
+ msg = dict(type='MigrationStatusWatcher',
+ request='Stop',
+ version=1,
+ params=_params)
+
reply = await self.rpc(msg)
return reply
-class MigrationMasterFacade(Type):
- name = 'MigrationMaster'
+class MigrationTargetFacade(Type):
+ name = 'MigrationTarget'
version = 1
- schema = {'definitions': {'Error': {'additionalProperties': False,
+ schema = {'definitions': {'AdoptResourcesArgs': {'additionalProperties': False,
+ 'properties': {'model-tag': {'type': 'string'},
+ 'source-controller-version': {'$ref': '#/definitions/Number'}},
+ 'required': ['model-tag',
+ 'source-controller-version'],
+ 'type': 'object'},
+ 'BytesResult': {'additionalProperties': False,
+ 'properties': {'result': {'items': {'type': 'integer'},
+ 'type': 'array'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'Error': {'additionalProperties': False,
'properties': {'code': {'type': 'string'},
'info': {'$ref': '#/definitions/ErrorInfo'},
'message': {'type': 'string'}},
'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
'macaroon-path': {'type': 'string'}},
'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'MasterMigrationStatus': {'additionalProperties': False,
- 'properties': {'migration-id': {'type': 'string'},
- 'phase': {'type': 'string'},
- 'phase-changed-time': {'format': 'date-time',
- 'type': 'string'},
- 'spec': {'$ref': '#/definitions/MigrationSpec'}},
- 'required': ['spec',
- 'migration-id',
- 'phase',
- 'phase-changed-time'],
- 'type': 'object'},
'MigrationModelInfo': {'additionalProperties': False,
'properties': {'agent-version': {'$ref': '#/definitions/Number'},
'controller-agent-version': {'$ref': '#/definitions/Number'},
'agent-version',
'controller-agent-version'],
'type': 'object'},
- 'MigrationSpec': {'additionalProperties': False,
- 'properties': {'model-tag': {'type': 'string'},
- 'target-info': {'$ref': '#/definitions/MigrationTargetInfo'}},
- 'required': ['model-tag', 'target-info'],
- 'type': 'object'},
- 'MigrationTargetInfo': {'additionalProperties': False,
- 'properties': {'addrs': {'items': {'type': 'string'},
- 'type': 'array'},
- 'auth-tag': {'type': 'string'},
- 'ca-cert': {'type': 'string'},
- 'controller-tag': {'type': 'string'},
- 'macaroons': {'type': 'string'},
- 'password': {'type': 'string'}},
- 'required': ['controller-tag',
- 'addrs',
- 'ca-cert',
- 'auth-tag'],
- 'type': 'object'},
- 'MinionReports': {'additionalProperties': False,
- 'properties': {'failed': {'items': {'type': 'string'},
- 'type': 'array'},
- 'migration-id': {'type': 'string'},
- 'phase': {'type': 'string'},
- 'success-count': {'type': 'integer'},
- 'unknown-count': {'type': 'integer'},
- 'unknown-sample': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'required': ['migration-id',
- 'phase',
- 'success-count',
- 'unknown-count',
- 'unknown-sample',
- 'failed'],
- 'type': 'object'},
- 'NotifyWatchResult': {'additionalProperties': False,
- 'properties': {'NotifyWatcherId': {'type': 'string'},
- 'error': {'$ref': '#/definitions/Error'}},
- 'required': ['NotifyWatcherId'],
- 'type': 'object'},
+ 'ModelArgs': {'additionalProperties': False,
+ 'properties': {'model-tag': {'type': 'string'}},
+ 'required': ['model-tag'],
+ 'type': 'object'},
'Number': {'additionalProperties': False,
'properties': {'Build': {'type': 'integer'},
'Major': {'type': 'integer'},
'properties': {'uri': {'type': 'string'},
'version': {'type': 'string'}},
'required': ['version', 'uri'],
- 'type': 'object'},
- 'SetMigrationPhaseArgs': {'additionalProperties': False,
- 'properties': {'phase': {'type': 'string'}},
- 'required': ['phase'],
- 'type': 'object'},
- 'SetMigrationStatusMessageArgs': {'additionalProperties': False,
- 'properties': {'message': {'type': 'string'}},
- 'required': ['message'],
- 'type': 'object'}},
- 'properties': {'Export': {'properties': {'Result': {'$ref': '#/definitions/SerializedModel'}},
+ 'type': 'object'}},
+ 'properties': {'Abort': {'properties': {'Params': {'$ref': '#/definitions/ModelArgs'}},
+ 'type': 'object'},
+ 'Activate': {'properties': {'Params': {'$ref': '#/definitions/ModelArgs'}},
+ 'type': 'object'},
+ 'AdoptResources': {'properties': {'Params': {'$ref': '#/definitions/AdoptResourcesArgs'}},
+ 'type': 'object'},
+ 'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}},
+ 'type': 'object'},
+ 'CheckMachines': {'properties': {'Params': {'$ref': '#/definitions/ModelArgs'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'Import': {'properties': {'Params': {'$ref': '#/definitions/SerializedModel'}},
+ 'type': 'object'},
+ 'LatestLogTime': {'properties': {'Params': {'$ref': '#/definitions/ModelArgs'},
+ 'Result': {'format': 'date-time',
+ 'type': 'string'}},
+ 'type': 'object'},
+ 'Prechecks': {'properties': {'Params': {'$ref': '#/definitions/MigrationModelInfo'}},
+ '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 AdoptResources(self, model_tag, source_controller_version):
+ '''
+ model_tag : str
+ source_controller_version : Number
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='MigrationTarget',
+ request='AdoptResources',
+ version=1,
+ params=_params)
+ _params['model-tag'] = model_tag
+ _params['source-controller-version'] = source_controller_version
+ 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='MigrationTarget',
+ request='CACert',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def CheckMachines(self, model_tag):
+ '''
+ model_tag : str
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='MigrationTarget',
+ request='CheckMachines',
+ version=1,
+ params=_params)
+ _params['model-tag'] = model_tag
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Import(self, bytes_, charms, tools):
+ '''
+ bytes_ : typing.Sequence[int]
+ charms : typing.Sequence[str]
+ tools : typing.Sequence[~SerializedModelTools]
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='MigrationTarget',
+ request='Import',
+ version=1,
+ params=_params)
+ _params['bytes'] = bytes_
+ _params['charms'] = charms
+ _params['tools'] = tools
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(str)
+ async def LatestLogTime(self, model_tag):
+ '''
+ model_tag : str
+ Returns -> str
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='MigrationTarget',
+ request='LatestLogTime',
+ version=1,
+ params=_params)
+ _params['model-tag'] = model_tag
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Prechecks(self, agent_version, name, owner_tag, uuid):
+ '''
+ agent_version : Number
+ name : str
+ owner_tag : str
+ uuid : str
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='MigrationTarget',
+ request='Prechecks',
+ version=1,
+ params=_params)
+ _params['agent-version'] = agent_version
+ _params['name'] = name
+ _params['owner-tag'] = owner_tag
+ _params['uuid'] = uuid
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class ModelConfigFacade(Type):
+ name = 'ModelConfig'
+ version = 1
+ schema = {'definitions': {'ConfigValue': {'additionalProperties': False,
+ 'properties': {'source': {'type': 'string'},
+ 'value': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'required': ['value', 'source'],
+ 'type': 'object'},
+ 'Error': {'additionalProperties': False,
+ 'properties': {'code': {'type': 'string'},
+ 'info': {'$ref': '#/definitions/ErrorInfo'},
+ 'message': {'type': 'string'}},
+ 'required': ['message', 'code'],
'type': 'object'},
- 'MigrationStatus': {'properties': {'Result': {'$ref': '#/definitions/MasterMigrationStatus'}},
- 'type': 'object'},
- 'MinionReports': {'properties': {'Result': {'$ref': '#/definitions/MinionReports'}},
+ 'ErrorInfo': {'additionalProperties': False,
+ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'ModelConfigResults': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'$ref': '#/definitions/ConfigValue'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'ModelSLA': {'additionalProperties': False,
+ 'properties': {'ModelSLAInfo': {'$ref': '#/definitions/ModelSLAInfo'},
+ 'creds': {'items': {'type': 'integer'},
+ 'type': 'array'}},
+ 'required': ['ModelSLAInfo', 'creds'],
+ 'type': 'object'},
+ 'ModelSLAInfo': {'additionalProperties': False,
+ 'properties': {'level': {'type': 'string'},
+ 'owner': {'type': 'string'}},
+ 'required': ['level', 'owner'],
'type': 'object'},
- 'ModelInfo': {'properties': {'Result': {'$ref': '#/definitions/MigrationModelInfo'}},
+ 'ModelSet': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['config'],
'type': 'object'},
- 'Prechecks': {'type': 'object'},
- 'Reap': {'type': 'object'},
- 'SetPhase': {'properties': {'Params': {'$ref': '#/definitions/SetMigrationPhaseArgs'}},
+ 'ModelUnset': {'additionalProperties': False,
+ 'properties': {'keys': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['keys'],
+ 'type': 'object'},
+ 'StringResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'string'}},
+ 'required': ['result'],
+ 'type': 'object'}},
+ 'properties': {'ModelGet': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResults'}},
'type': 'object'},
- 'SetStatusMessage': {'properties': {'Params': {'$ref': '#/definitions/SetMigrationStatusMessageArgs'}},
- 'type': 'object'},
- 'Watch': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
- 'type': 'object'},
- 'WatchMinionReports': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
- 'type': 'object'}},
+ 'ModelSet': {'properties': {'Params': {'$ref': '#/definitions/ModelSet'}},
+ 'type': 'object'},
+ 'ModelUnset': {'properties': {'Params': {'$ref': '#/definitions/ModelUnset'}},
+ 'type': 'object'},
+ 'SLALevel': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
+ 'type': 'object'},
+ 'SetSLALevel': {'properties': {'Params': {'$ref': '#/definitions/ModelSLA'}},
+ 'type': 'object'}},
'type': 'object'}
-
- @ReturnMapping(SerializedModel)
- async def Export(self):
+
+ @ReturnMapping(ModelConfigResults)
+ async def ModelGet(self):
'''
- Returns -> typing.Sequence<+T_co>[~SerializedModelTools]<~SerializedModelTools>
+ Returns -> typing.Mapping[str, ~ConfigValue]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationMaster', request='Export', version=1, params=_params)
+ msg = dict(type='ModelConfig',
+ request='ModelGet',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(MasterMigrationStatus)
- async def MigrationStatus(self):
+ @ReturnMapping(None)
+ async def ModelSet(self, config):
'''
-
- Returns -> typing.Union[str, _ForwardRef('MigrationSpec')]
+ config : typing.Mapping[str, typing.Any]
+ Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationMaster', request='MigrationStatus', version=1, params=_params)
+ msg = dict(type='ModelConfig',
+ 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='ModelConfig',
+ request='ModelUnset',
+ version=1,
+ params=_params)
+ _params['keys'] = keys
reply = await self.rpc(msg)
return reply
- @ReturnMapping(MinionReports)
- async def MinionReports(self):
+ @ReturnMapping(StringResult)
+ async def SLALevel(self):
'''
- Returns -> typing.Union[typing.Sequence<+T_co>[str], int]
+ Returns -> typing.Union[_ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationMaster', request='MinionReports', version=1, params=_params)
+ msg = dict(type='ModelConfig',
+ request='SLALevel',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(MigrationModelInfo)
- async def ModelInfo(self):
+ @ReturnMapping(None)
+ async def SetSLALevel(self, creds, level):
+ '''
+ creds : typing.Sequence[int]
+ level : str
+ Returns -> None
'''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ModelConfig',
+ request='SetSLALevel',
+ version=1,
+ params=_params)
+ _params['creds'] = creds
+ _params['level'] = level
+ reply = await self.rpc(msg)
+ return reply
- Returns -> typing.Union[_ForwardRef('Number'), str]
+
+
+class ModelUpgraderFacade(Type):
+ name = 'ModelUpgrader'
+ 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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'IntResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'integer'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'IntResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/IntResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ 'type': 'object'},
+ 'NotifyWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'SetModelEnvironVersion': {'additionalProperties': False,
+ 'properties': {'model-tag': {'type': 'string'},
+ 'version': {'type': 'integer'}},
+ 'required': ['model-tag',
+ 'version'],
+ 'type': 'object'},
+ 'SetModelEnvironVersions': {'additionalProperties': False,
+ 'properties': {'models': {'items': {'$ref': '#/definitions/SetModelEnvironVersion'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'SetStatus': {'additionalProperties': False,
+ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'},
+ 'type': 'array'}},
+ 'required': ['entities'],
+ 'type': 'object'}},
+ 'properties': {'ModelEnvironVersion': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/IntResults'}},
+ 'type': 'object'},
+ 'ModelTargetEnvironVersion': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/IntResults'}},
+ 'type': 'object'},
+ 'SetModelEnvironVersion': {'properties': {'Params': {'$ref': '#/definitions/SetModelEnvironVersions'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'SetModelStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'WatchModelEnvironVersion': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
+ 'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(IntResults)
+ async def ModelEnvironVersion(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~IntResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationMaster', request='ModelInfo', version=1, params=_params)
-
+ msg = dict(type='ModelUpgrader',
+ request='ModelEnvironVersion',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def Prechecks(self):
+ @ReturnMapping(IntResults)
+ async def ModelTargetEnvironVersion(self, entities):
'''
-
- Returns -> None
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~IntResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationMaster', request='Prechecks', version=1, params=_params)
-
+ msg = dict(type='ModelUpgrader',
+ request='ModelTargetEnvironVersion',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def Reap(self):
+ @ReturnMapping(ErrorResults)
+ async def SetModelEnvironVersion(self, models):
'''
-
- Returns -> None
+ models : typing.Sequence[~SetModelEnvironVersion]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationMaster', request='Reap', version=1, params=_params)
-
+ msg = dict(type='ModelUpgrader',
+ request='SetModelEnvironVersion',
+ version=1,
+ params=_params)
+ _params['models'] = models
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def SetPhase(self, phase):
+ @ReturnMapping(ErrorResults)
+ async def SetModelStatus(self, entities):
'''
- phase : str
- Returns -> None
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationMaster', request='SetPhase', version=1, params=_params)
- _params['phase'] = phase
+ msg = dict(type='ModelUpgrader',
+ request='SetModelStatus',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def SetStatusMessage(self, message):
+ @ReturnMapping(NotifyWatchResults)
+ async def WatchModelEnvironVersion(self, entities):
'''
- message : str
- Returns -> None
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationMaster', request='SetStatusMessage', version=1, params=_params)
- _params['message'] = message
+ msg = dict(type='ModelUpgrader',
+ request='WatchModelEnvironVersion',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(NotifyWatchResult)
- async def Watch(self):
+class NotifyWatcherFacade(Type):
+ name = 'NotifyWatcher'
+ version = 1
+ schema = {'properties': {'Next': {'type': 'object'}, 'Stop': {'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(None)
+ async def Next(self):
'''
- Returns -> typing.Union[str, _ForwardRef('Error')]
+ Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationMaster', request='Watch', version=1, params=_params)
+ msg = dict(type='NotifyWatcher',
+ request='Next',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(NotifyWatchResult)
- async def WatchMinionReports(self):
+ @ReturnMapping(None)
+ async def Stop(self):
'''
- Returns -> typing.Union[str, _ForwardRef('Error')]
+ Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationMaster', request='WatchMinionReports', version=1, params=_params)
+ msg = dict(type='NotifyWatcher',
+ request='Stop',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
-class MigrationMinionFacade(Type):
- name = 'MigrationMinion'
+class OfferStatusWatcherFacade(Type):
+ name = 'OfferStatusWatcher'
version = 1
- schema = {'definitions': {'Error': {'additionalProperties': False,
+ schema = {'definitions': {'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', 'since'],
+ 'type': 'object'},
+ 'Error': {'additionalProperties': False,
'properties': {'code': {'type': 'string'},
'info': {'$ref': '#/definitions/ErrorInfo'},
'message': {'type': 'string'}},
'macaroon-path': {'type': 'string'}},
'type': 'object'},
'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'MinionReport': {'additionalProperties': False,
- 'properties': {'migration-id': {'type': 'string'},
- 'phase': {'type': 'string'},
- 'success': {'type': 'boolean'}},
- 'required': ['migration-id',
- 'phase',
- 'success'],
- 'type': 'object'},
- 'NotifyWatchResult': {'additionalProperties': False,
- 'properties': {'NotifyWatcherId': {'type': 'string'},
- 'error': {'$ref': '#/definitions/Error'}},
- 'required': ['NotifyWatcherId'],
- 'type': 'object'}},
- 'properties': {'Report': {'properties': {'Params': {'$ref': '#/definitions/MinionReport'}},
- 'type': 'object'},
- 'Watch': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
- 'type': 'object'}},
- 'type': 'object'}
-
-
- @ReturnMapping(None)
- async def Report(self, migration_id, phase, success):
- '''
- migration_id : str
- phase : str
- success : bool
- Returns -> None
- '''
- # map input types to rpc msg
- _params = dict()
- msg = dict(type='MigrationMinion', request='Report', version=1, params=_params)
- _params['migration-id'] = migration_id
- _params['phase'] = phase
- _params['success'] = success
- reply = await self.rpc(msg)
- return reply
-
-
-
- @ReturnMapping(NotifyWatchResult)
- async def Watch(self):
- '''
-
- Returns -> typing.Union[str, _ForwardRef('Error')]
- '''
- # 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 MigrationStatusWatcherFacade(Type):
- name = 'MigrationStatusWatcher'
- version = 1
- schema = {'definitions': {'MigrationStatus': {'additionalProperties': False,
- 'properties': {'attempt': {'type': 'integer'},
- 'migration-id': {'type': 'string'},
- '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': ['migration-id',
- 'attempt',
- 'phase',
- 'source-api-addrs',
- 'source-ca-cert',
- 'target-api-addrs',
- 'target-ca-cert'],
- 'type': 'object'}},
- 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/MigrationStatus'}},
+ 'OfferStatusChange': {'additionalProperties': False,
+ 'properties': {'offer-name': {'type': 'string'},
+ 'status': {'$ref': '#/definitions/EntityStatus'}},
+ 'required': ['offer-name', 'status'],
+ 'type': 'object'},
+ 'OfferStatusWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'$ref': '#/definitions/OfferStatusChange'},
+ 'type': 'array'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id',
+ 'changes'],
+ 'type': 'object'}},
+ 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/OfferStatusWatchResult'}},
'type': 'object'},
'Stop': {'type': 'object'}},
'type': 'object'}
-
- @ReturnMapping(MigrationStatus)
+
+ @ReturnMapping(OfferStatusWatchResult)
async def Next(self):
'''
- Returns -> typing.Union[int, typing.Sequence<+T_co>[str]]
+ Returns -> typing.Union[typing.Sequence[~OfferStatusChange], _ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationStatusWatcher', request='Next', version=1, params=_params)
+ msg = dict(type='OfferStatusWatcher',
+ request='Next',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationStatusWatcher', request='Stop', version=1, params=_params)
+ msg = dict(type='OfferStatusWatcher',
+ request='Stop',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
-class MigrationTargetFacade(Type):
- name = 'MigrationTarget'
+class PayloadsFacade(Type):
+ name = 'Payloads'
version = 1
- schema = {'definitions': {'AdoptResourcesArgs': {'additionalProperties': False,
- 'properties': {'model-tag': {'type': 'string'},
- 'source-controller-version': {'$ref': '#/definitions/Number'}},
- 'required': ['model-tag',
- 'source-controller-version'],
- 'type': 'object'},
- 'BytesResult': {'additionalProperties': False,
- 'properties': {'result': {'items': {'type': 'integer'},
- 'type': 'array'}},
- 'required': ['result'],
- 'type': 'object'},
- 'MigrationModelInfo': {'additionalProperties': False,
- 'properties': {'agent-version': {'$ref': '#/definitions/Number'},
- 'controller-agent-version': {'$ref': '#/definitions/Number'},
- 'name': {'type': 'string'},
- 'owner-tag': {'type': 'string'},
- 'uuid': {'type': 'string'}},
- 'required': ['uuid',
- 'name',
- 'owner-tag',
- 'agent-version',
- 'controller-agent-version'],
- 'type': 'object'},
- 'ModelArgs': {'additionalProperties': False,
- 'properties': {'model-tag': {'type': 'string'}},
- 'required': ['model-tag'],
- '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'},
- 'SerializedModel': {'additionalProperties': False,
- 'properties': {'bytes': {'items': {'type': 'integer'},
- 'type': 'array'},
- 'charms': {'items': {'type': 'string'},
- 'type': 'array'},
- 'resources': {'items': {'$ref': '#/definitions/SerializedModelResource'},
- 'type': 'array'},
- 'tools': {'items': {'$ref': '#/definitions/SerializedModelTools'},
- 'type': 'array'}},
- 'required': ['bytes',
- 'charms',
- 'tools',
- 'resources'],
- 'type': 'object'},
- 'SerializedModelResource': {'additionalProperties': False,
- 'properties': {'application': {'type': 'string'},
- 'application-revision': {'$ref': '#/definitions/SerializedModelResourceRevision'},
- 'charmstore-revision': {'$ref': '#/definitions/SerializedModelResourceRevision'},
- 'name': {'type': 'string'},
- 'unit-revisions': {'patternProperties': {'.*': {'$ref': '#/definitions/SerializedModelResourceRevision'}},
- 'type': 'object'}},
- 'required': ['application',
- 'name',
- 'application-revision',
- 'charmstore-revision',
- 'unit-revisions'],
- 'type': 'object'},
- 'SerializedModelResourceRevision': {'additionalProperties': False,
- 'properties': {'description': {'type': 'string'},
- 'fingerprint': {'type': 'string'},
- 'origin': {'type': 'string'},
- 'path': {'type': 'string'},
- 'revision': {'type': 'integer'},
- 'size': {'type': 'integer'},
- 'timestamp': {'format': 'date-time',
- 'type': 'string'},
- 'type': {'type': 'string'},
- 'username': {'type': 'string'}},
- 'required': ['revision',
- 'type',
- 'path',
- 'description',
- 'origin',
- 'fingerprint',
- 'size',
- 'timestamp'],
- 'type': 'object'},
- 'SerializedModelTools': {'additionalProperties': False,
- 'properties': {'uri': {'type': 'string'},
- 'version': {'type': 'string'}},
- 'required': ['version', 'uri'],
- 'type': 'object'}},
- 'properties': {'Abort': {'properties': {'Params': {'$ref': '#/definitions/ModelArgs'}},
- 'type': 'object'},
- 'Activate': {'properties': {'Params': {'$ref': '#/definitions/ModelArgs'}},
- 'type': 'object'},
- 'AdoptResources': {'properties': {'Params': {'$ref': '#/definitions/AdoptResourcesArgs'}},
- 'type': 'object'},
- 'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}},
- 'type': 'object'},
- 'Import': {'properties': {'Params': {'$ref': '#/definitions/SerializedModel'}},
- 'type': 'object'},
- 'LatestLogTime': {'properties': {'Params': {'$ref': '#/definitions/ModelArgs'},
- 'Result': {'format': 'date-time',
- 'type': 'string'}},
- 'type': 'object'},
- 'Prechecks': {'properties': {'Params': {'$ref': '#/definitions/MigrationModelInfo'}},
- 'type': 'object'}},
+ schema = {'definitions': {'Payload': {'additionalProperties': False,
+ 'properties': {'class': {'type': 'string'},
+ 'id': {'type': 'string'},
+ 'labels': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'machine': {'type': 'string'},
+ 'status': {'type': 'string'},
+ 'type': {'type': 'string'},
+ 'unit': {'type': 'string'}},
+ 'required': ['class',
+ 'type',
+ 'id',
+ 'status',
+ 'labels',
+ 'unit',
+ 'machine'],
+ 'type': 'object'},
+ 'PayloadListArgs': {'additionalProperties': False,
+ 'properties': {'patterns': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['patterns'],
+ 'type': 'object'},
+ 'PayloadListResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/Payload'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'}},
+ 'properties': {'List': {'properties': {'Params': {'$ref': '#/definitions/PayloadListArgs'},
+ 'Result': {'$ref': '#/definitions/PayloadListResults'}},
+ 'type': 'object'}},
'type': 'object'}
-
- @ReturnMapping(None)
- async def Abort(self, model_tag):
+
+ @ReturnMapping(PayloadListResults)
+ async def List(self, patterns):
'''
- model_tag : str
- Returns -> None
+ patterns : typing.Sequence[str]
+ Returns -> typing.Sequence[~Payload]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationTarget', request='Abort', version=1, params=_params)
- _params['model-tag'] = model_tag
+ msg = dict(type='Payloads',
+ request='List',
+ version=1,
+ params=_params)
+ _params['patterns'] = patterns
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def Activate(self, model_tag):
+class PayloadsHookContextFacade(Type):
+ name = 'PayloadsHookContext'
+ 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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'LookUpPayloadArg': {'additionalProperties': False,
+ 'properties': {'id': {'type': 'string'},
+ 'name': {'type': 'string'}},
+ 'required': ['name', 'id'],
+ 'type': 'object'},
+ 'LookUpPayloadArgs': {'additionalProperties': False,
+ 'properties': {'args': {'items': {'$ref': '#/definitions/LookUpPayloadArg'},
+ 'type': 'array'}},
+ 'required': ['args'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'Payload': {'additionalProperties': False,
+ 'properties': {'class': {'type': 'string'},
+ 'id': {'type': 'string'},
+ 'labels': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'machine': {'type': 'string'},
+ 'status': {'type': 'string'},
+ 'type': {'type': 'string'},
+ 'unit': {'type': 'string'}},
+ 'required': ['class',
+ 'type',
+ 'id',
+ 'status',
+ 'labels',
+ 'unit',
+ 'machine'],
+ 'type': 'object'},
+ 'PayloadResult': {'additionalProperties': False,
+ 'properties': {'Entity': {'$ref': '#/definitions/Entity'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'not-found': {'type': 'boolean'},
+ 'payload': {'$ref': '#/definitions/Payload'}},
+ 'required': ['Entity',
+ 'payload',
+ 'not-found'],
+ 'type': 'object'},
+ 'PayloadResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/PayloadResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'SetPayloadStatusArg': {'additionalProperties': False,
+ 'properties': {'Entity': {'$ref': '#/definitions/Entity'},
+ 'status': {'type': 'string'}},
+ 'required': ['Entity', 'status'],
+ 'type': 'object'},
+ 'SetPayloadStatusArgs': {'additionalProperties': False,
+ 'properties': {'args': {'items': {'$ref': '#/definitions/SetPayloadStatusArg'},
+ 'type': 'array'}},
+ 'required': ['args'],
+ 'type': 'object'},
+ 'TrackPayloadArgs': {'additionalProperties': False,
+ 'properties': {'payloads': {'items': {'$ref': '#/definitions/Payload'},
+ 'type': 'array'}},
+ 'required': ['payloads'],
+ 'type': 'object'}},
+ 'properties': {'List': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/PayloadResults'}},
+ 'type': 'object'},
+ 'LookUp': {'properties': {'Params': {'$ref': '#/definitions/LookUpPayloadArgs'},
+ 'Result': {'$ref': '#/definitions/PayloadResults'}},
+ 'type': 'object'},
+ 'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetPayloadStatusArgs'},
+ 'Result': {'$ref': '#/definitions/PayloadResults'}},
+ 'type': 'object'},
+ 'Track': {'properties': {'Params': {'$ref': '#/definitions/TrackPayloadArgs'},
+ 'Result': {'$ref': '#/definitions/PayloadResults'}},
+ 'type': 'object'},
+ 'Untrack': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/PayloadResults'}},
+ 'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(PayloadResults)
+ async def List(self, entities):
'''
- model_tag : str
- Returns -> None
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~PayloadResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationTarget', request='Activate', version=1, params=_params)
- _params['model-tag'] = model_tag
+ msg = dict(type='PayloadsHookContext',
+ request='List',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def AdoptResources(self, model_tag, source_controller_version):
+ @ReturnMapping(PayloadResults)
+ async def LookUp(self, args):
'''
- model_tag : str
- source_controller_version : Number
- Returns -> None
+ args : typing.Sequence[~LookUpPayloadArg]
+ Returns -> typing.Sequence[~PayloadResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationTarget', request='AdoptResources', version=1, params=_params)
- _params['model-tag'] = model_tag
- _params['source-controller-version'] = source_controller_version
+ msg = dict(type='PayloadsHookContext',
+ request='LookUp',
+ version=1,
+ params=_params)
+ _params['args'] = args
reply = await self.rpc(msg)
return reply
- @ReturnMapping(BytesResult)
- async def CACert(self):
+ @ReturnMapping(PayloadResults)
+ async def SetStatus(self, args):
'''
-
- Returns -> typing.Sequence<+T_co>[int]
+ args : typing.Sequence[~SetPayloadStatusArg]
+ Returns -> typing.Sequence[~PayloadResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationTarget', request='CACert', version=1, params=_params)
-
+ msg = dict(type='PayloadsHookContext',
+ request='SetStatus',
+ version=1,
+ params=_params)
+ _params['args'] = args
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def Import(self, bytes_, charms, tools):
+ @ReturnMapping(PayloadResults)
+ async def Track(self, payloads):
'''
- bytes_ : typing.Sequence<+T_co>[int]
- charms : typing.Sequence<+T_co>[str]
- tools : typing.Sequence<+T_co>[~SerializedModelTools]<~SerializedModelTools>
- Returns -> None
+ payloads : typing.Sequence[~Payload]
+ Returns -> typing.Sequence[~PayloadResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationTarget', request='Import', version=1, params=_params)
- _params['bytes'] = bytes_
- _params['charms'] = charms
- _params['tools'] = tools
+ msg = dict(type='PayloadsHookContext',
+ request='Track',
+ version=1,
+ params=_params)
+ _params['payloads'] = payloads
reply = await self.rpc(msg)
return reply
- @ReturnMapping(str)
- async def LatestLogTime(self, model_tag):
+ @ReturnMapping(PayloadResults)
+ async def Untrack(self, entities):
'''
- model_tag : str
- Returns -> str
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~PayloadResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationTarget', request='LatestLogTime', version=1, params=_params)
- _params['model-tag'] = model_tag
+ msg = dict(type='PayloadsHookContext',
+ request='Untrack',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
+class PingerFacade(Type):
+ name = 'Pinger'
+ version = 1
+ schema = {'properties': {'Ping': {'type': 'object'}, 'Stop': {'type': 'object'}},
+ 'type': 'object'}
+
+
@ReturnMapping(None)
- async def Prechecks(self, agent_version, name, owner_tag, uuid):
+ async def Ping(self):
'''
- agent_version : Number
- name : str
- owner_tag : str
- uuid : str
+
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MigrationTarget', request='Prechecks', version=1, params=_params)
- _params['agent-version'] = agent_version
- _params['name'] = name
- _params['owner-tag'] = owner_tag
- _params['uuid'] = uuid
- reply = await self.rpc(msg)
- return reply
-
+ msg = dict(type='Pinger',
+ request='Ping',
+ version=1,
+ params=_params)
+ reply = await self.rpc(msg)
+ return reply
-class ModelConfigFacade(Type):
- name = 'ModelConfig'
- version = 1
- schema = {'definitions': {'ConfigValue': {'additionalProperties': False,
- 'properties': {'source': {'type': 'string'},
- 'value': {'additionalProperties': True,
- 'type': 'object'}},
- 'required': ['value', 'source'],
- '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'},
- 'macaroon-path': {'type': 'string'}},
- 'type': 'object'},
- 'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'ModelConfigResults': {'additionalProperties': False,
- 'properties': {'config': {'patternProperties': {'.*': {'$ref': '#/definitions/ConfigValue'}},
- 'type': 'object'}},
- 'required': ['config'],
- 'type': 'object'},
- 'ModelSLA': {'additionalProperties': False,
- 'properties': {'ModelSLAInfo': {'$ref': '#/definitions/ModelSLAInfo'},
- 'creds': {'items': {'type': 'integer'},
- 'type': 'array'}},
- 'required': ['ModelSLAInfo', 'creds'],
- 'type': 'object'},
- 'ModelSLAInfo': {'additionalProperties': False,
- 'properties': {'level': {'type': 'string'},
- 'owner': {'type': 'string'}},
- 'required': ['level', 'owner'],
- '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'},
- 'StringResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'},
- 'result': {'type': 'string'}},
- 'required': ['result'],
- 'type': 'object'}},
- 'properties': {'ModelGet': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResults'}},
- 'type': 'object'},
- 'ModelSet': {'properties': {'Params': {'$ref': '#/definitions/ModelSet'}},
- 'type': 'object'},
- 'ModelUnset': {'properties': {'Params': {'$ref': '#/definitions/ModelUnset'}},
- 'type': 'object'},
- 'SLALevel': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
- 'type': 'object'},
- 'SetSLALevel': {'properties': {'Params': {'$ref': '#/definitions/ModelSLA'}},
- 'type': 'object'}},
- 'type': 'object'}
-
-
- @ReturnMapping(ModelConfigResults)
- async def ModelGet(self):
+
+
+ @ReturnMapping(None)
+ async def Stop(self):
'''
- Returns -> typing.Mapping<~KT, +VT_co>[str, ~ConfigValue]<~ConfigValue>
+ Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelConfig', request='ModelGet', version=1, params=_params)
+ msg = dict(type='Pinger',
+ request='Stop',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def ModelSet(self, config):
+class ProxyUpdaterFacade(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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ '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'},
+ 'no-proxy': {'type': 'string'}},
+ 'required': ['http',
+ 'https',
+ 'ftp',
+ 'no-proxy'],
+ 'type': 'object'},
+ 'ProxyConfigResult': {'additionalProperties': False,
+ 'properties': {'apt-proxy-settings': {'$ref': '#/definitions/ProxyConfig'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'proxy-settings': {'$ref': '#/definitions/ProxyConfig'}},
+ 'required': ['proxy-settings',
+ 'apt-proxy-settings'],
+ 'type': 'object'},
+ 'ProxyConfigResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ProxyConfigResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ '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):
'''
- config : typing.Mapping<~KT, +VT_co>[str, typing.Any]
- Returns -> None
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ProxyConfigResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelConfig', request='ModelSet', version=1, params=_params)
- _params['config'] = config
+ msg = dict(type='ProxyUpdater',
+ request='ProxyConfig',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def ModelUnset(self, keys):
+ @ReturnMapping(NotifyWatchResults)
+ async def WatchForProxyConfigAndAPIHostPortChanges(self, entities):
'''
- keys : typing.Sequence<+T_co>[str]
- Returns -> None
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelConfig', request='ModelUnset', version=1, params=_params)
- _params['keys'] = keys
+ msg = dict(type='ProxyUpdater',
+ request='WatchForProxyConfigAndAPIHostPortChanges',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(StringResult)
- async def SLALevel(self):
+class RelationStatusWatcherFacade(Type):
+ name = 'RelationStatusWatcher'
+ 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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'RelationLifeSuspendedStatusChange': {'additionalProperties': False,
+ 'properties': {'key': {'type': 'string'},
+ 'life': {'type': 'string'},
+ 'suspended': {'type': 'boolean'},
+ 'suspended-reason': {'type': 'string'}},
+ 'required': ['key',
+ 'life',
+ 'suspended',
+ 'suspended-reason'],
+ 'type': 'object'},
+ 'RelationLifeSuspendedStatusWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'$ref': '#/definitions/RelationLifeSuspendedStatusChange'},
+ 'type': 'array'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id',
+ 'changes'],
+ 'type': 'object'}},
+ 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/RelationLifeSuspendedStatusWatchResult'}},
+ 'type': 'object'},
+ 'Stop': {'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(RelationLifeSuspendedStatusWatchResult)
+ async def Next(self):
'''
- Returns -> typing.Union[_ForwardRef('Error'), str]
+ Returns -> typing.Union[typing.Sequence[~RelationLifeSuspendedStatusChange], _ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelConfig', request='SLALevel', version=1, params=_params)
+ msg = dict(type='RelationStatusWatcher',
+ request='Next',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(None)
- async def SetSLALevel(self, creds, level):
+ async def Stop(self):
'''
- creds : typing.Sequence<+T_co>[int]
- level : str
+
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelConfig', request='SetSLALevel', version=1, params=_params)
- _params['creds'] = creds
- _params['level'] = level
+ msg = dict(type='RelationStatusWatcher',
+ request='Stop',
+ version=1,
+ params=_params)
+
reply = await self.rpc(msg)
return reply
-class NotifyWatcherFacade(Type):
- name = 'NotifyWatcher'
+class RelationUnitsWatcherFacade(Type):
+ name = 'RelationUnitsWatcher'
version = 1
- schema = {'properties': {'Next': {'type': 'object'}, 'Stop': {'type': 'object'}},
+ 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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'RelationUnitsChange': {'additionalProperties': False,
+ 'properties': {'changed': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitSettings'}},
+ 'type': 'object'},
+ 'departed': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['changed'],
+ 'type': 'object'},
+ 'RelationUnitsWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'$ref': '#/definitions/RelationUnitsChange'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id',
+ 'changes'],
+ 'type': 'object'},
+ 'UnitSettings': {'additionalProperties': False,
+ 'properties': {'version': {'type': 'integer'}},
+ 'required': ['version'],
+ 'type': 'object'}},
+ 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/RelationUnitsWatchResult'}},
+ 'type': 'object'},
+ 'Stop': {'type': 'object'}},
'type': 'object'}
-
- @ReturnMapping(None)
+
+ @ReturnMapping(RelationUnitsWatchResult)
async def Next(self):
'''
- Returns -> None
+ Returns -> typing.Union[_ForwardRef('RelationUnitsChange'), _ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='NotifyWatcher', request='Next', version=1, params=_params)
+ msg = dict(type='RelationUnitsWatcher',
+ request='Next',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='NotifyWatcher', request='Stop', version=1, params=_params)
+ msg = dict(type='RelationUnitsWatcher',
+ request='Stop',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
-class PayloadsFacade(Type):
- name = 'Payloads'
+class RemoteApplicationWatcherFacade(Type):
+ name = 'RemoteApplicationWatcher'
version = 1
- schema = {'definitions': {'Payload': {'additionalProperties': False,
- 'properties': {'class': {'type': 'string'},
- 'id': {'type': 'string'},
- 'labels': {'items': {'type': 'string'},
- 'type': 'array'},
- 'machine': {'type': 'string'},
- 'status': {'type': 'string'},
- 'type': {'type': 'string'},
- 'unit': {'type': 'string'}},
- 'required': ['class',
- 'type',
- 'id',
- 'status',
- 'labels',
- 'unit',
- 'machine'],
- 'type': 'object'},
- 'PayloadListArgs': {'additionalProperties': False,
- 'properties': {'patterns': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'required': ['patterns'],
- 'type': 'object'},
- 'PayloadListResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/Payload'},
- 'type': 'array'}},
- 'required': ['results'],
- 'type': 'object'}},
- 'properties': {'List': {'properties': {'Params': {'$ref': '#/definitions/PayloadListArgs'},
- 'Result': {'$ref': '#/definitions/PayloadListResults'}},
- 'type': 'object'}},
+ 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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'RemoteApplicationChange': {'additionalProperties': False,
+ 'properties': {'application-tag': {'type': 'string'},
+ 'life': {'type': 'string'},
+ 'relations': {'$ref': '#/definitions/RemoteRelationsChange'}},
+ 'required': ['application-tag',
+ 'life',
+ 'relations'],
+ 'type': 'object'},
+ 'RemoteApplicationWatchResult': {'additionalProperties': False,
+ 'properties': {'change': {'$ref': '#/definitions/RemoteApplicationChange'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'id': {'type': 'string'}},
+ 'required': ['id'],
+ 'type': 'object'},
+ 'RemoteEntityId': {'additionalProperties': False,
+ 'properties': {'model-uuid': {'type': 'string'},
+ 'token': {'type': 'string'}},
+ 'required': ['model-uuid', 'token'],
+ 'type': 'object'},
+ 'RemoteRelationChange': {'additionalProperties': False,
+ 'properties': {'changed-units': {'patternProperties': {'.*': {'$ref': '#/definitions/RemoteRelationUnitChange'}},
+ 'type': 'object'},
+ 'departed-units': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'id': {'type': 'integer'},
+ 'life': {'type': 'string'}},
+ 'required': ['id', 'life'],
+ 'type': 'object'},
+ 'RemoteRelationUnitChange': {'additionalProperties': False,
+ 'properties': {'settings': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'unit-id': {'$ref': '#/definitions/RemoteEntityId'}},
+ 'required': ['unit-id'],
+ 'type': 'object'},
+ 'RemoteRelationsChange': {'additionalProperties': False,
+ 'properties': {'changed': {'items': {'$ref': '#/definitions/RemoteRelationChange'},
+ 'type': 'array'},
+ 'initial': {'type': 'boolean'},
+ 'removed': {'items': {'type': 'integer'},
+ 'type': 'array'}},
+ 'required': ['initial'],
+ 'type': 'object'}},
+ 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/RemoteApplicationWatchResult'}},
+ 'type': 'object'},
+ 'Stop': {'type': 'object'}},
'type': 'object'}
-
- @ReturnMapping(PayloadListResults)
- async def List(self, patterns):
+
+ @ReturnMapping(RemoteApplicationWatchResult)
+ async def Next(self):
+ '''
+
+ Returns -> typing.Union[_ForwardRef('RemoteApplicationChange'), _ForwardRef('Error'), str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='RemoteApplicationWatcher',
+ request='Next',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Stop(self):
'''
- patterns : typing.Sequence<+T_co>[str]
- Returns -> typing.Sequence<+T_co>[~Payload]<~Payload>
+
+ Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Payloads', request='List', version=1, params=_params)
- _params['patterns'] = patterns
+ msg = dict(type='RemoteApplicationWatcher',
+ request='Stop',
+ version=1,
+ params=_params)
+
reply = await self.rpc(msg)
return reply
-class PayloadsHookContextFacade(Type):
- name = 'PayloadsHookContext'
+class RemoteRelationsFacade(Type):
+ name = 'RemoteRelations'
version = 1
- schema = {'definitions': {'Entities': {'additionalProperties': False,
+ schema = {'definitions': {'ControllerAPIInfoResult': {'additionalProperties': False,
+ 'properties': {'addresses': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'cacert': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['addresses',
+ 'cacert'],
+ 'type': 'object'},
+ 'ControllerAPIInfoResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ControllerAPIInfoResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'ControllerConfigResult': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'Entities': {'additionalProperties': False,
'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
'type': 'array'}},
'required': ['entities'],
'properties': {'tag': {'type': 'string'}},
'required': ['tag'],
'type': 'object'},
+ 'EntityMacaroonArg': {'additionalProperties': False,
+ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
+ 'tag': {'type': 'string'}},
+ 'required': ['macaroon', 'tag'],
+ 'type': 'object'},
+ 'EntityMacaroonArgs': {'additionalProperties': False,
+ 'properties': {'Args': {'items': {'$ref': '#/definitions/EntityMacaroonArg'},
+ 'type': 'array'}},
+ 'required': ['Args'],
+ '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'},
'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
'macaroon-path': {'type': 'string'}},
'type': 'object'},
- 'LookUpPayloadArg': {'additionalProperties': False,
- 'properties': {'id': {'type': 'string'},
- 'name': {'type': 'string'}},
- 'required': ['name', 'id'],
- 'type': 'object'},
- 'LookUpPayloadArgs': {'additionalProperties': False,
- 'properties': {'args': {'items': {'$ref': '#/definitions/LookUpPayloadArg'},
- 'type': 'array'}},
- 'required': ['args'],
- 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'GetTokenArg': {'additionalProperties': False,
+ 'properties': {'tag': {'type': 'string'}},
+ 'required': ['tag'],
+ 'type': 'object'},
+ 'GetTokenArgs': {'additionalProperties': False,
+ 'properties': {'Args': {'items': {'$ref': '#/definitions/GetTokenArg'},
+ 'type': 'array'}},
+ 'required': ['Args'],
+ 'type': 'object'},
'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'Payload': {'additionalProperties': False,
- 'properties': {'class': {'type': 'string'},
- 'id': {'type': 'string'},
- 'labels': {'items': {'type': 'string'},
- 'type': 'array'},
- 'machine': {'type': 'string'},
- 'status': {'type': 'string'},
- 'type': {'type': 'string'},
- 'unit': {'type': 'string'}},
- 'required': ['class',
- 'type',
- 'id',
- 'status',
- 'labels',
- 'unit',
- 'machine'],
- 'type': 'object'},
- 'PayloadResult': {'additionalProperties': False,
- 'properties': {'Entity': {'$ref': '#/definitions/Entity'},
- 'error': {'$ref': '#/definitions/Error'},
- 'not-found': {'type': 'boolean'},
- 'payload': {'$ref': '#/definitions/Payload'}},
- 'required': ['Entity',
- 'payload',
- 'not-found'],
+ 'RelationUnit': {'additionalProperties': False,
+ 'properties': {'relation': {'type': 'string'},
+ 'unit': {'type': 'string'}},
+ 'required': ['relation', 'unit'],
+ 'type': 'object'},
+ 'RelationUnits': {'additionalProperties': False,
+ 'properties': {'relation-units': {'items': {'$ref': '#/definitions/RelationUnit'},
+ 'type': 'array'}},
+ 'required': ['relation-units'],
'type': 'object'},
- 'PayloadResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/PayloadResult'},
- 'type': 'array'}},
- 'required': ['results'],
- 'type': 'object'},
- 'SetPayloadStatusArg': {'additionalProperties': False,
- 'properties': {'Entity': {'$ref': '#/definitions/Entity'},
- 'status': {'type': 'string'}},
- 'required': ['Entity', 'status'],
+ 'RelationUnitsChange': {'additionalProperties': False,
+ 'properties': {'changed': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitSettings'}},
+ 'type': 'object'},
+ 'departed': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['changed'],
'type': 'object'},
- 'SetPayloadStatusArgs': {'additionalProperties': False,
- 'properties': {'args': {'items': {'$ref': '#/definitions/SetPayloadStatusArg'},
- 'type': 'array'}},
- 'required': ['args'],
+ 'RelationUnitsWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'$ref': '#/definitions/RelationUnitsChange'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id',
+ 'changes'],
+ 'type': 'object'},
+ 'RelationUnitsWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/RelationUnitsWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'RemoteApplication': {'additionalProperties': False,
+ 'properties': {'is-consumer-proxy': {'type': 'boolean'},
+ 'life': {'type': 'string'},
+ 'macaroon': {'$ref': '#/definitions/Macaroon'},
+ 'model-uuid': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'offer-uuid': {'type': 'string'},
+ 'status': {'type': 'string'}},
+ 'required': ['name',
+ 'offer-uuid',
+ 'model-uuid',
+ 'is-consumer-proxy'],
+ 'type': 'object'},
+ 'RemoteApplicationResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/RemoteApplication'}},
+ 'type': 'object'},
+ 'RemoteApplicationResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/RemoteApplicationResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'RemoteEndpoint': {'additionalProperties': False,
+ 'properties': {'interface': {'type': 'string'},
+ 'limit': {'type': 'integer'},
+ 'name': {'type': 'string'},
+ 'role': {'type': 'string'}},
+ 'required': ['name',
+ 'role',
+ 'interface',
+ 'limit'],
+ 'type': 'object'},
+ 'RemoteEntityTokenArg': {'additionalProperties': False,
+ 'properties': {'tag': {'type': 'string'},
+ 'token': {'type': 'string'}},
+ 'required': ['tag'],
'type': 'object'},
- 'TrackPayloadArgs': {'additionalProperties': False,
- 'properties': {'payloads': {'items': {'$ref': '#/definitions/Payload'},
- 'type': 'array'}},
- 'required': ['payloads'],
- 'type': 'object'}},
- 'properties': {'List': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
- 'Result': {'$ref': '#/definitions/PayloadResults'}},
- 'type': 'object'},
- 'LookUp': {'properties': {'Params': {'$ref': '#/definitions/LookUpPayloadArgs'},
- 'Result': {'$ref': '#/definitions/PayloadResults'}},
- 'type': 'object'},
- 'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetPayloadStatusArgs'},
- 'Result': {'$ref': '#/definitions/PayloadResults'}},
+ 'RemoteEntityTokenArgs': {'additionalProperties': False,
+ 'properties': {'Args': {'items': {'$ref': '#/definitions/RemoteEntityTokenArg'},
+ 'type': 'array'}},
+ 'required': ['Args'],
+ 'type': 'object'},
+ 'RemoteRelation': {'additionalProperties': False,
+ 'properties': {'application-name': {'type': 'string'},
+ 'endpoint': {'$ref': '#/definitions/RemoteEndpoint'},
+ 'id': {'type': 'integer'},
+ 'key': {'type': 'string'},
+ 'life': {'type': 'string'},
+ 'remote-application-name': {'type': 'string'},
+ 'remote-endpoint-name': {'type': 'string'},
+ 'source-model-uuid': {'type': 'string'},
+ 'suspended': {'type': 'boolean'}},
+ 'required': ['life',
+ 'suspended',
+ 'id',
+ 'key',
+ 'application-name',
+ 'endpoint',
+ 'remote-application-name',
+ 'remote-endpoint-name',
+ 'source-model-uuid'],
+ 'type': 'object'},
+ 'RemoteRelationChangeEvent': {'additionalProperties': False,
+ 'properties': {'application-token': {'type': 'string'},
+ 'changed-units': {'items': {'$ref': '#/definitions/RemoteRelationUnitChange'},
+ 'type': 'array'},
+ 'departed-units': {'items': {'type': 'integer'},
+ 'type': 'array'},
+ 'force-cleanup': {'type': 'boolean'},
+ 'life': {'type': 'string'},
+ 'macaroons': {'items': {'$ref': '#/definitions/Macaroon'},
+ 'type': 'array'},
+ 'relation-token': {'type': 'string'},
+ 'suspended': {'type': 'boolean'},
+ 'suspended-reason': {'type': 'string'}},
+ 'required': ['relation-token',
+ 'application-token',
+ 'life'],
+ 'type': 'object'},
+ 'RemoteRelationResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/RemoteRelation'}},
+ 'type': 'object'},
+ 'RemoteRelationResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/RemoteRelationResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'RemoteRelationUnitChange': {'additionalProperties': False,
+ 'properties': {'settings': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'unit-id': {'type': 'integer'}},
+ 'required': ['unit-id'],
+ 'type': 'object'},
+ 'RemoteRelationsChanges': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'$ref': '#/definitions/RemoteRelationChangeEvent'},
+ 'type': 'array'}},
+ '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': ['settings'],
+ 'type': 'object'},
+ 'SettingsResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/SettingsResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'StringResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'string'}},
+ 'required': ['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'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
+ 'type': 'object'},
+ 'StringsWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'TokenResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'token': {'type': 'string'}},
+ 'type': 'object'},
+ 'TokenResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/TokenResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'UnitSettings': {'additionalProperties': False,
+ 'properties': {'version': {'type': 'integer'}},
+ 'required': ['version'],
+ 'type': 'object'}},
+ 'properties': {'ConsumeRemoteRelationChanges': {'properties': {'Params': {'$ref': '#/definitions/RemoteRelationsChanges'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'ControllerAPIInfoForModels': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ControllerAPIInfoResults'}},
+ 'type': 'object'},
+ 'ControllerConfig': {'properties': {'Result': {'$ref': '#/definitions/ControllerConfigResult'}},
+ 'type': 'object'},
+ 'ExportEntities': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/TokenResults'}},
+ 'type': 'object'},
+ 'GetTokens': {'properties': {'Params': {'$ref': '#/definitions/GetTokenArgs'},
+ 'Result': {'$ref': '#/definitions/StringResults'}},
'type': 'object'},
- 'Track': {'properties': {'Params': {'$ref': '#/definitions/TrackPayloadArgs'},
- 'Result': {'$ref': '#/definitions/PayloadResults'}},
- 'type': 'object'},
- 'Untrack': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
- 'Result': {'$ref': '#/definitions/PayloadResults'}},
- 'type': 'object'}},
+ 'ImportRemoteEntities': {'properties': {'Params': {'$ref': '#/definitions/RemoteEntityTokenArgs'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'RelationUnitSettings': {'properties': {'Params': {'$ref': '#/definitions/RelationUnits'},
+ 'Result': {'$ref': '#/definitions/SettingsResults'}},
+ 'type': 'object'},
+ 'Relations': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/RemoteRelationResults'}},
+ 'type': 'object'},
+ 'RemoteApplications': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/RemoteApplicationResults'}},
+ 'type': 'object'},
+ 'SaveMacaroons': {'properties': {'Params': {'$ref': '#/definitions/EntityMacaroonArgs'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'SetRemoteApplicationsStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'WatchLocalRelationUnits': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/RelationUnitsWatchResults'}},
+ 'type': 'object'},
+ 'WatchRemoteApplicationRelations': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/StringsWatchResults'}},
+ 'type': 'object'},
+ 'WatchRemoteApplications': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
+ 'type': 'object'},
+ 'WatchRemoteRelations': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
+ 'type': 'object'}},
'type': 'object'}
-
- @ReturnMapping(PayloadResults)
- async def List(self, entities):
+
+ @ReturnMapping(ErrorResults)
+ async def ConsumeRemoteRelationChanges(self, changes):
+ '''
+ changes : typing.Sequence[~RemoteRelationChangeEvent]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='RemoteRelations',
+ request='ConsumeRemoteRelationChanges',
+ version=1,
+ params=_params)
+ _params['changes'] = changes
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ControllerAPIInfoResults)
+ async def ControllerAPIInfoForModels(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ControllerAPIInfoResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='RemoteRelations',
+ request='ControllerAPIInfoForModels',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ControllerConfigResult)
+ async def ControllerConfig(self):
+ '''
+
+ Returns -> typing.Mapping[str, typing.Any]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='RemoteRelations',
+ request='ControllerConfig',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(TokenResults)
+ async def ExportEntities(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~TokenResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='RemoteRelations',
+ request='ExportEntities',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringResults)
+ async def GetTokens(self, args):
+ '''
+ args : typing.Sequence[~GetTokenArg]
+ Returns -> typing.Sequence[~StringResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='RemoteRelations',
+ request='GetTokens',
+ version=1,
+ params=_params)
+ _params['Args'] = args
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def ImportRemoteEntities(self, args):
+ '''
+ args : typing.Sequence[~RemoteEntityTokenArg]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='RemoteRelations',
+ request='ImportRemoteEntities',
+ version=1,
+ params=_params)
+ _params['Args'] = args
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(SettingsResults)
+ async def RelationUnitSettings(self, relation_units):
+ '''
+ relation_units : typing.Sequence[~RelationUnit]
+ Returns -> typing.Sequence[~SettingsResult]
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~PayloadResult]<~PayloadResult>
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='RemoteRelations',
+ request='RelationUnitSettings',
+ version=1,
+ params=_params)
+ _params['relation-units'] = relation_units
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(RemoteRelationResults)
+ async def Relations(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~RemoteRelationResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='PayloadsHookContext', request='List', version=1, params=_params)
+ msg = dict(type='RemoteRelations',
+ request='Relations',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(PayloadResults)
- async def LookUp(self, args):
+ @ReturnMapping(RemoteApplicationResults)
+ async def RemoteApplications(self, entities):
'''
- args : typing.Sequence<+T_co>[~LookUpPayloadArg]<~LookUpPayloadArg>
- Returns -> typing.Sequence<+T_co>[~PayloadResult]<~PayloadResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~RemoteApplicationResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='PayloadsHookContext', request='LookUp', version=1, params=_params)
- _params['args'] = args
+ msg = dict(type='RemoteRelations',
+ request='RemoteApplications',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(PayloadResults)
- async def SetStatus(self, args):
+ @ReturnMapping(ErrorResults)
+ async def SaveMacaroons(self, args):
'''
- args : typing.Sequence<+T_co>[~SetPayloadStatusArg]<~SetPayloadStatusArg>
- Returns -> typing.Sequence<+T_co>[~PayloadResult]<~PayloadResult>
+ args : typing.Sequence[~EntityMacaroonArg]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='PayloadsHookContext', request='SetStatus', version=1, params=_params)
- _params['args'] = args
+ msg = dict(type='RemoteRelations',
+ request='SaveMacaroons',
+ version=1,
+ params=_params)
+ _params['Args'] = args
reply = await self.rpc(msg)
return reply
- @ReturnMapping(PayloadResults)
- async def Track(self, payloads):
+ @ReturnMapping(ErrorResults)
+ async def SetRemoteApplicationsStatus(self, entities):
'''
- payloads : typing.Sequence<+T_co>[~Payload]<~Payload>
- Returns -> typing.Sequence<+T_co>[~PayloadResult]<~PayloadResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='PayloadsHookContext', request='Track', version=1, params=_params)
- _params['payloads'] = payloads
+ msg = dict(type='RemoteRelations',
+ request='SetRemoteApplicationsStatus',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(PayloadResults)
- async def Untrack(self, entities):
+ @ReturnMapping(RelationUnitsWatchResults)
+ async def WatchLocalRelationUnits(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~PayloadResult]<~PayloadResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~RelationUnitsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='PayloadsHookContext', request='Untrack', version=1, params=_params)
+ msg = dict(type='RemoteRelations',
+ request='WatchLocalRelationUnits',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
-class PingerFacade(Type):
- name = 'Pinger'
+ @ReturnMapping(StringsWatchResults)
+ async def WatchRemoteApplicationRelations(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='RemoteRelations',
+ request='WatchRemoteApplicationRelations',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsWatchResult)
+ async def WatchRemoteApplications(self):
+ '''
+
+ Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='RemoteRelations',
+ request='WatchRemoteApplications',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsWatchResult)
+ async def WatchRemoteRelations(self):
+ '''
+
+ Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='RemoteRelations',
+ request='WatchRemoteRelations',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class RemoteRelationsWatcherFacade(Type):
+ name = 'RemoteRelationsWatcher'
version = 1
- schema = {'properties': {'Ping': {'type': 'object'}, 'Stop': {'type': 'object'}},
+ 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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'RemoteEntityId': {'additionalProperties': False,
+ 'properties': {'model-uuid': {'type': 'string'},
+ 'token': {'type': 'string'}},
+ 'required': ['model-uuid', 'token'],
+ 'type': 'object'},
+ 'RemoteRelationChange': {'additionalProperties': False,
+ 'properties': {'changed-units': {'patternProperties': {'.*': {'$ref': '#/definitions/RemoteRelationUnitChange'}},
+ 'type': 'object'},
+ 'departed-units': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'id': {'type': 'integer'},
+ 'life': {'type': 'string'}},
+ 'required': ['id', 'life'],
+ 'type': 'object'},
+ 'RemoteRelationUnitChange': {'additionalProperties': False,
+ 'properties': {'settings': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'unit-id': {'$ref': '#/definitions/RemoteEntityId'}},
+ 'required': ['unit-id'],
+ 'type': 'object'},
+ 'RemoteRelationsChange': {'additionalProperties': False,
+ 'properties': {'changed': {'items': {'$ref': '#/definitions/RemoteRelationChange'},
+ 'type': 'array'},
+ 'initial': {'type': 'boolean'},
+ 'removed': {'items': {'type': 'integer'},
+ 'type': 'array'}},
+ 'required': ['initial'],
+ 'type': 'object'},
+ 'RemoteRelationsWatchResult': {'additionalProperties': False,
+ 'properties': {'RemoteRelationsWatcherId': {'type': 'string'},
+ 'change': {'$ref': '#/definitions/RemoteRelationsChange'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['RemoteRelationsWatcherId'],
+ 'type': 'object'}},
+ 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/RemoteRelationsWatchResult'}},
+ 'type': 'object'},
+ 'Stop': {'type': 'object'}},
'type': 'object'}
-
- @ReturnMapping(None)
- async def Ping(self):
+
+ @ReturnMapping(RemoteRelationsWatchResult)
+ async def Next(self):
'''
- Returns -> None
+ Returns -> typing.Union[str, _ForwardRef('RemoteRelationsChange'), _ForwardRef('Error')]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Pinger', request='Ping', version=1, params=_params)
+ msg = dict(type='RemoteRelationsWatcher',
+ request='Next',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Pinger', request='Stop', version=1, params=_params)
+ msg = dict(type='RemoteRelationsWatcher',
+ request='Stop',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
-class ProxyUpdaterFacade(Type):
- name = 'ProxyUpdater'
+class ResourcesFacade(Type):
+ name = 'Resources'
version = 1
- schema = {'definitions': {'Entities': {'additionalProperties': False,
- 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
- 'type': 'array'}},
- 'required': ['entities'],
- 'type': 'object'},
+ schema = {'definitions': {'AddCharmWithAuthorization': {'additionalProperties': False,
+ 'properties': {'channel': {'type': 'string'},
+ 'force': {'type': 'boolean'},
+ 'macaroon': {'$ref': '#/definitions/Macaroon'},
+ 'url': {'type': 'string'}},
+ 'required': ['url',
+ 'channel',
+ 'macaroon',
+ 'force'],
+ 'type': 'object'},
+ 'AddPendingResourcesArgs': {'additionalProperties': False,
+ 'properties': {'AddCharmWithAuthorization': {'$ref': '#/definitions/AddCharmWithAuthorization'},
+ 'Entity': {'$ref': '#/definitions/Entity'},
+ 'resources': {'items': {'$ref': '#/definitions/CharmResource'},
+ 'type': 'array'}},
+ 'required': ['Entity',
+ 'AddCharmWithAuthorization',
+ 'resources'],
+ 'type': 'object'},
+ 'AddPendingResourcesResult': {'additionalProperties': False,
+ 'properties': {'ErrorResult': {'$ref': '#/definitions/ErrorResult'},
+ 'pending-ids': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['ErrorResult',
+ 'pending-ids'],
+ 'type': 'object'},
+ 'CharmResource': {'additionalProperties': False,
+ 'properties': {'description': {'type': 'string'},
+ 'fingerprint': {'items': {'type': 'integer'},
+ 'type': 'array'},
+ 'name': {'type': 'string'},
+ 'origin': {'type': 'string'},
+ 'path': {'type': 'string'},
+ 'revision': {'type': 'integer'},
+ 'size': {'type': 'integer'},
+ 'type': {'type': 'string'}},
+ 'required': ['name',
+ 'type',
+ 'path',
+ 'origin',
+ 'revision',
+ 'fingerprint',
+ 'size'],
+ 'type': 'object'},
'Entity': {'additionalProperties': False,
'properties': {'tag': {'type': 'string'}},
'required': ['tag'],
'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
'macaroon-path': {'type': 'string'}},
'type': 'object'},
- 'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'NotifyWatchResult': {'additionalProperties': False,
- 'properties': {'NotifyWatcherId': {'type': 'string'},
- 'error': {'$ref': '#/definitions/Error'}},
- 'required': ['NotifyWatcherId'],
- 'type': 'object'},
- 'NotifyWatchResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ListResourcesArgs': {'additionalProperties': False,
+ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
'type': 'array'}},
- 'required': ['results'],
+ 'required': ['entities'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'Resource': {'additionalProperties': False,
+ 'properties': {'CharmResource': {'$ref': '#/definitions/CharmResource'},
+ 'application': {'type': 'string'},
+ 'id': {'type': 'string'},
+ 'pending-id': {'type': 'string'},
+ 'timestamp': {'format': 'date-time',
+ 'type': 'string'},
+ 'username': {'type': 'string'}},
+ 'required': ['CharmResource',
+ 'id',
+ 'pending-id',
+ 'application',
+ 'username',
+ 'timestamp'],
+ 'type': 'object'},
+ 'ResourcesResult': {'additionalProperties': False,
+ 'properties': {'ErrorResult': {'$ref': '#/definitions/ErrorResult'},
+ 'charm-store-resources': {'items': {'$ref': '#/definitions/CharmResource'},
+ 'type': 'array'},
+ 'resources': {'items': {'$ref': '#/definitions/Resource'},
+ 'type': 'array'},
+ 'unit-resources': {'items': {'$ref': '#/definitions/UnitResources'},
+ 'type': 'array'}},
+ 'required': ['ErrorResult',
+ 'resources',
+ 'charm-store-resources',
+ 'unit-resources'],
+ 'type': 'object'},
+ 'ResourcesResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ResourcesResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'UnitResources': {'additionalProperties': False,
+ 'properties': {'Entity': {'$ref': '#/definitions/Entity'},
+ 'download-progress': {'patternProperties': {'.*': {'type': 'integer'}},
+ 'type': 'object'},
+ 'resources': {'items': {'$ref': '#/definitions/Resource'},
+ 'type': 'array'}},
+ 'required': ['Entity',
+ 'resources',
+ 'download-progress'],
+ 'type': 'object'}},
+ 'properties': {'AddPendingResources': {'properties': {'Params': {'$ref': '#/definitions/AddPendingResourcesArgs'},
+ 'Result': {'$ref': '#/definitions/AddPendingResourcesResult'}},
'type': 'object'},
- 'ProxyConfig': {'additionalProperties': False,
- 'properties': {'ftp': {'type': 'string'},
- 'http': {'type': 'string'},
- 'https': {'type': 'string'},
- 'no-proxy': {'type': 'string'}},
- 'required': ['http',
- 'https',
- 'ftp',
- 'no-proxy'],
- 'type': 'object'},
- 'ProxyConfigResult': {'additionalProperties': False,
- 'properties': {'apt-proxy-settings': {'$ref': '#/definitions/ProxyConfig'},
- 'error': {'$ref': '#/definitions/Error'},
- 'proxy-settings': {'$ref': '#/definitions/ProxyConfig'}},
- 'required': ['proxy-settings',
- 'apt-proxy-settings'],
- 'type': 'object'},
- 'ProxyConfigResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/ProxyConfigResult'},
- 'type': 'array'}},
- 'required': ['results'],
- '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'}},
+ 'ListResources': {'properties': {'Params': {'$ref': '#/definitions/ListResourcesArgs'},
+ 'Result': {'$ref': '#/definitions/ResourcesResults'}},
+ 'type': 'object'}},
'type': 'object'}
-
- @ReturnMapping(ProxyConfigResults)
- async def ProxyConfig(self, entities):
+
+ @ReturnMapping(AddPendingResourcesResult)
+ async def AddPendingResources(self, addcharmwithauthorization, entity, resources):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ProxyConfigResult]<~ProxyConfigResult>
+ addcharmwithauthorization : AddCharmWithAuthorization
+ entity : Entity
+ resources : typing.Sequence[~CharmResource]
+ Returns -> typing.Union[_ForwardRef('ErrorResult'), typing.Sequence[str]]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ProxyUpdater', request='ProxyConfig', version=1, params=_params)
- _params['entities'] = entities
+ msg = dict(type='Resources',
+ request='AddPendingResources',
+ version=1,
+ params=_params)
+ _params['AddCharmWithAuthorization'] = addcharmwithauthorization
+ _params['Entity'] = entity
+ _params['Resources'] = resources
reply = await self.rpc(msg)
return reply
- @ReturnMapping(NotifyWatchResults)
- async def WatchForProxyConfigAndAPIHostPortChanges(self, entities):
+ @ReturnMapping(ResourcesResults)
+ async def ListResources(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ResourcesResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ProxyUpdater', request='WatchForProxyConfigAndAPIHostPortChanges', version=1, params=_params)
+ msg = dict(type='Resources',
+ request='ListResources',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
-class RelationUnitsWatcherFacade(Type):
- name = 'RelationUnitsWatcher'
+class ResourcesHookContextFacade(Type):
+ name = 'ResourcesHookContext'
version = 1
- schema = {'definitions': {'Error': {'additionalProperties': False,
+ schema = {'definitions': {'CharmResource': {'additionalProperties': False,
+ 'properties': {'description': {'type': 'string'},
+ 'fingerprint': {'items': {'type': 'integer'},
+ 'type': 'array'},
+ 'name': {'type': 'string'},
+ 'origin': {'type': 'string'},
+ 'path': {'type': 'string'},
+ 'revision': {'type': 'integer'},
+ 'size': {'type': 'integer'},
+ 'type': {'type': 'string'}},
+ 'required': ['name',
+ 'type',
+ 'path',
+ 'origin',
+ 'revision',
+ 'fingerprint',
+ 'size'],
+ 'type': 'object'},
+ 'Error': {'additionalProperties': False,
'properties': {'code': {'type': 'string'},
'info': {'$ref': '#/definitions/ErrorInfo'},
'message': {'type': 'string'}},
'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
'macaroon-path': {'type': 'string'}},
'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ListUnitResourcesArgs': {'additionalProperties': False,
+ 'properties': {'resource-names': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['resource-names'],
+ 'type': 'object'},
'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'RelationUnitsChange': {'additionalProperties': False,
- 'properties': {'changed': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitSettings'}},
- 'type': 'object'},
- 'departed': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'required': ['changed'],
- 'type': 'object'},
- 'RelationUnitsWatchResult': {'additionalProperties': False,
- 'properties': {'changes': {'$ref': '#/definitions/RelationUnitsChange'},
- 'error': {'$ref': '#/definitions/Error'},
- 'watcher-id': {'type': 'string'}},
- 'required': ['watcher-id',
- 'changes'],
- 'type': 'object'},
- 'UnitSettings': {'additionalProperties': False,
- 'properties': {'version': {'type': 'integer'}},
- 'required': ['version'],
- 'type': 'object'}},
- 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/RelationUnitsWatchResult'}},
- 'type': 'object'},
- 'Stop': {'type': 'object'}},
+ 'Resource': {'additionalProperties': False,
+ 'properties': {'CharmResource': {'$ref': '#/definitions/CharmResource'},
+ 'application': {'type': 'string'},
+ 'id': {'type': 'string'},
+ 'pending-id': {'type': 'string'},
+ 'timestamp': {'format': 'date-time',
+ 'type': 'string'},
+ 'username': {'type': 'string'}},
+ 'required': ['CharmResource',
+ 'id',
+ 'pending-id',
+ 'application',
+ 'username',
+ 'timestamp'],
+ 'type': 'object'},
+ 'UnitResourceResult': {'additionalProperties': False,
+ 'properties': {'ErrorResult': {'$ref': '#/definitions/ErrorResult'},
+ 'resource': {'$ref': '#/definitions/Resource'}},
+ 'required': ['ErrorResult', 'resource'],
+ 'type': 'object'},
+ 'UnitResourcesResult': {'additionalProperties': False,
+ 'properties': {'ErrorResult': {'$ref': '#/definitions/ErrorResult'},
+ 'resources': {'items': {'$ref': '#/definitions/UnitResourceResult'},
+ 'type': 'array'}},
+ 'required': ['ErrorResult',
+ 'resources'],
+ 'type': 'object'}},
+ 'properties': {'GetResourceInfo': {'properties': {'Params': {'$ref': '#/definitions/ListUnitResourcesArgs'},
+ 'Result': {'$ref': '#/definitions/UnitResourcesResult'}},
+ '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):
+ @ReturnMapping(UnitResourcesResult)
+ async def GetResourceInfo(self, resource_names):
'''
-
- Returns -> None
+ resource_names : typing.Sequence[str]
+ Returns -> typing.Union[_ForwardRef('ErrorResult'), typing.Sequence[~UnitResourceResult]]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='RelationUnitsWatcher', request='Stop', version=1, params=_params)
-
+ msg = dict(type='ResourcesHookContext',
+ request='GetResourceInfo',
+ version=1,
+ params=_params)
+ _params['resource-names'] = resource_names
reply = await self.rpc(msg)
return reply
-class RemoteApplicationWatcherFacade(Type):
- name = 'RemoteApplicationWatcher'
+class RetryStrategyFacade(Type):
+ name = 'RetryStrategy'
version = 1
- schema = {'definitions': {'Error': {'additionalProperties': False,
+ 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'}},
'macaroon-path': {'type': 'string'}},
'type': 'object'},
'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'RemoteApplicationChange': {'additionalProperties': False,
- 'properties': {'application-tag': {'type': 'string'},
- 'life': {'type': 'string'},
- 'relations': {'$ref': '#/definitions/RemoteRelationsChange'}},
- 'required': ['application-tag',
- 'life',
- 'relations'],
- 'type': 'object'},
- 'RemoteApplicationWatchResult': {'additionalProperties': False,
- 'properties': {'change': {'$ref': '#/definitions/RemoteApplicationChange'},
- 'error': {'$ref': '#/definitions/Error'},
- 'id': {'type': 'string'}},
- 'required': ['id'],
- 'type': 'object'},
- 'RemoteEntityId': {'additionalProperties': False,
- 'properties': {'model-uuid': {'type': 'string'},
- 'token': {'type': 'string'}},
- 'required': ['model-uuid', 'token'],
- 'type': 'object'},
- 'RemoteRelationChange': {'additionalProperties': False,
- 'properties': {'changed-units': {'patternProperties': {'.*': {'$ref': '#/definitions/RemoteRelationUnitChange'}},
- 'type': 'object'},
- 'departed-units': {'items': {'type': 'string'},
- 'type': 'array'},
- 'id': {'type': 'integer'},
- 'life': {'type': 'string'}},
- 'required': ['id', 'life'],
- 'type': 'object'},
- 'RemoteRelationUnitChange': {'additionalProperties': False,
- 'properties': {'settings': {'patternProperties': {'.*': {'additionalProperties': True,
- 'type': 'object'}},
- 'type': 'object'},
- 'unit-id': {'$ref': '#/definitions/RemoteEntityId'}},
- 'required': ['unit-id'],
- 'type': 'object'},
- 'RemoteRelationsChange': {'additionalProperties': False,
- 'properties': {'changed': {'items': {'$ref': '#/definitions/RemoteRelationChange'},
- 'type': 'array'},
- 'initial': {'type': 'boolean'},
- 'removed': {'items': {'type': 'integer'},
- 'type': 'array'}},
- 'required': ['initial'],
- 'type': 'object'}},
- 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/RemoteApplicationWatchResult'}},
- 'type': 'object'},
- 'Stop': {'type': 'object'}},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ 'type': 'object'},
+ 'NotifyWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'RetryStrategy': {'additionalProperties': False,
+ 'properties': {'jitter-retry-time': {'type': 'boolean'},
+ 'max-retry-time': {'type': 'integer'},
+ 'min-retry-time': {'type': 'integer'},
+ 'retry-time-factor': {'type': 'integer'},
+ 'should-retry': {'type': 'boolean'}},
+ 'required': ['should-retry',
+ 'min-retry-time',
+ 'max-retry-time',
+ 'jitter-retry-time',
+ 'retry-time-factor'],
+ 'type': 'object'},
+ 'RetryStrategyResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/RetryStrategy'}},
+ 'type': 'object'},
+ 'RetryStrategyResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/RetryStrategyResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ '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(RemoteApplicationWatchResult)
- async def Next(self):
+
+ @ReturnMapping(RetryStrategyResults)
+ async def RetryStrategy(self, entities):
'''
-
- Returns -> typing.Union[_ForwardRef('RemoteApplicationChange'), _ForwardRef('Error'), str]
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~RetryStrategyResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='RemoteApplicationWatcher', request='Next', version=1, params=_params)
-
+ msg = dict(type='RetryStrategy',
+ request='RetryStrategy',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def Stop(self):
+ @ReturnMapping(NotifyWatchResults)
+ async def WatchRetryStrategy(self, entities):
'''
-
- Returns -> None
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='RemoteApplicationWatcher', request='Stop', version=1, params=_params)
-
+ msg = dict(type='RetryStrategy',
+ request='WatchRetryStrategy',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
-class RemoteRelationsWatcherFacade(Type):
- name = 'RemoteRelationsWatcher'
+class SSHClientFacade(Type):
+ name = 'SSHClient'
version = 1
- schema = {'definitions': {'Error': {'additionalProperties': False,
+ 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'}},
'macaroon-path': {'type': 'string'}},
'type': 'object'},
'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'RemoteEntityId': {'additionalProperties': False,
- 'properties': {'model-uuid': {'type': 'string'},
- 'token': {'type': 'string'}},
- 'required': ['model-uuid', 'token'],
+ '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'},
- 'RemoteRelationChange': {'additionalProperties': False,
- 'properties': {'changed-units': {'patternProperties': {'.*': {'$ref': '#/definitions/RemoteRelationUnitChange'}},
- 'type': 'object'},
- 'departed-units': {'items': {'type': 'string'},
- 'type': 'array'},
- 'id': {'type': 'integer'},
- 'life': {'type': 'string'}},
- 'required': ['id', 'life'],
- 'type': 'object'},
- 'RemoteRelationUnitChange': {'additionalProperties': False,
- 'properties': {'settings': {'patternProperties': {'.*': {'additionalProperties': True,
- 'type': 'object'}},
- 'type': 'object'},
- 'unit-id': {'$ref': '#/definitions/RemoteEntityId'}},
- 'required': ['unit-id'],
- 'type': 'object'},
- 'RemoteRelationsChange': {'additionalProperties': False,
- 'properties': {'changed': {'items': {'$ref': '#/definitions/RemoteRelationChange'},
- 'type': 'array'},
- 'initial': {'type': 'boolean'},
- 'removed': {'items': {'type': 'integer'},
- 'type': 'array'}},
- 'required': ['initial'],
- 'type': 'object'},
- 'RemoteRelationsWatchResult': {'additionalProperties': False,
- 'properties': {'RemoteRelationsWatcherId': {'type': 'string'},
- 'change': {'$ref': '#/definitions/RemoteRelationsChange'},
- 'error': {'$ref': '#/definitions/Error'}},
- 'required': ['RemoteRelationsWatcherId'],
- 'type': 'object'}},
- 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/RemoteRelationsWatchResult'}},
- 'type': 'object'},
- 'Stop': {'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'}},
+ '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(RemoteRelationsWatchResult)
- async def Next(self):
+
+ @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 -> typing.Union[str, _ForwardRef('RemoteRelationsChange'), _ForwardRef('Error')]
+ Returns -> bool
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='RemoteRelationsWatcher', request='Next', version=1, params=_params)
+ msg = dict(type='SSHClient',
+ request='Proxy',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def Stop(self):
+ @ReturnMapping(SSHAddressResults)
+ async def PublicAddress(self, entities):
'''
-
- Returns -> None
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~SSHAddressResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='RemoteRelationsWatcher', request='Stop', version=1, params=_params)
+ 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 ResourcesFacade(Type):
- name = 'Resources'
- version = 1
- schema = {'definitions': {'AddCharmWithAuthorization': {'additionalProperties': False,
- 'properties': {'channel': {'type': 'string'},
- 'macaroon': {'$ref': '#/definitions/Macaroon'},
- 'url': {'type': 'string'}},
- 'required': ['url',
- 'channel',
- 'macaroon'],
- 'type': 'object'},
- 'AddPendingResourcesArgs': {'additionalProperties': False,
- 'properties': {'AddCharmWithAuthorization': {'$ref': '#/definitions/AddCharmWithAuthorization'},
- 'Entity': {'$ref': '#/definitions/Entity'},
- 'resources': {'items': {'$ref': '#/definitions/CharmResource'},
- 'type': 'array'}},
- 'required': ['Entity',
- 'AddCharmWithAuthorization',
- 'resources'],
- 'type': 'object'},
- 'AddPendingResourcesResult': {'additionalProperties': False,
- 'properties': {'ErrorResult': {'$ref': '#/definitions/ErrorResult'},
- 'pending-ids': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'required': ['ErrorResult',
- 'pending-ids'],
- 'type': 'object'},
- 'CharmResource': {'additionalProperties': False,
- 'properties': {'description': {'type': 'string'},
- 'fingerprint': {'items': {'type': 'integer'},
- 'type': 'array'},
- 'name': {'type': 'string'},
- 'origin': {'type': 'string'},
- 'path': {'type': 'string'},
- 'revision': {'type': 'integer'},
- 'size': {'type': 'integer'},
- 'type': {'type': 'string'}},
- 'required': ['name',
- 'type',
- 'path',
- 'origin',
- 'revision',
- 'fingerprint',
- 'size'],
- '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'},
- 'macaroon-path': {'type': 'string'}},
- 'type': 'object'},
- 'ErrorResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'}},
- 'type': 'object'},
- 'ListResourcesArgs': {'additionalProperties': False,
- 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
- 'type': 'array'}},
- 'required': ['entities'],
- 'type': 'object'},
- 'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'Resource': {'additionalProperties': False,
- 'properties': {'CharmResource': {'$ref': '#/definitions/CharmResource'},
- 'application': {'type': 'string'},
- 'id': {'type': 'string'},
- 'pending-id': {'type': 'string'},
- 'timestamp': {'format': 'date-time',
- 'type': 'string'},
- 'username': {'type': 'string'}},
- 'required': ['CharmResource',
- 'id',
- 'pending-id',
- 'application',
- 'username',
- 'timestamp'],
- 'type': 'object'},
- 'ResourcesResult': {'additionalProperties': False,
- 'properties': {'ErrorResult': {'$ref': '#/definitions/ErrorResult'},
- 'charm-store-resources': {'items': {'$ref': '#/definitions/CharmResource'},
- 'type': 'array'},
- 'resources': {'items': {'$ref': '#/definitions/Resource'},
- 'type': 'array'},
- 'unit-resources': {'items': {'$ref': '#/definitions/UnitResources'},
- 'type': 'array'}},
- 'required': ['ErrorResult',
- 'resources',
- 'charm-store-resources',
- 'unit-resources'],
- 'type': 'object'},
- 'ResourcesResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/ResourcesResult'},
- 'type': 'array'}},
- 'required': ['results'],
- 'type': 'object'},
- 'UnitResources': {'additionalProperties': False,
- 'properties': {'Entity': {'$ref': '#/definitions/Entity'},
- 'download-progress': {'patternProperties': {'.*': {'type': 'integer'}},
- 'type': 'object'},
- 'resources': {'items': {'$ref': '#/definitions/Resource'},
- 'type': 'array'}},
- 'required': ['Entity',
- 'resources',
- 'download-progress'],
- 'type': 'object'}},
- 'properties': {'AddPendingResources': {'properties': {'Params': {'$ref': '#/definitions/AddPendingResourcesArgs'},
- 'Result': {'$ref': '#/definitions/AddPendingResourcesResult'}},
- 'type': 'object'},
- 'ListResources': {'properties': {'Params': {'$ref': '#/definitions/ListResourcesArgs'},
- 'Result': {'$ref': '#/definitions/ResourcesResults'}},
- 'type': 'object'}},
+class SingularFacade(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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'SingularClaim': {'additionalProperties': False,
+ 'properties': {'controller-tag': {'type': 'string'},
+ 'duration': {'type': 'integer'},
+ 'model-tag': {'type': 'string'}},
+ 'required': ['model-tag',
+ 'controller-tag',
+ 'duration'],
+ 'type': 'object'},
+ 'SingularClaims': {'additionalProperties': False,
+ 'properties': {'claims': {'items': {'$ref': '#/definitions/SingularClaim'},
+ 'type': 'array'}},
+ 'required': ['claims'],
+ '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(AddPendingResourcesResult)
- async def AddPendingResources(self, addcharmwithauthorization, entity, resources):
+
+ @ReturnMapping(ErrorResults)
+ async def Claim(self, claims):
'''
- addcharmwithauthorization : AddCharmWithAuthorization
- entity : Entity
- resources : typing.Sequence<+T_co>[~CharmResource]<~CharmResource>
- Returns -> typing.Union[_ForwardRef('ErrorResult'), typing.Sequence<+T_co>[str]]
+ claims : typing.Sequence[~SingularClaim]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Resources', request='AddPendingResources', version=1, params=_params)
- _params['AddCharmWithAuthorization'] = addcharmwithauthorization
- _params['Entity'] = entity
- _params['Resources'] = resources
+ msg = dict(type='Singular',
+ request='Claim',
+ version=1,
+ params=_params)
+ _params['claims'] = claims
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ResourcesResults)
- async def ListResources(self, entities):
+ @ReturnMapping(ErrorResults)
+ async def Wait(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ResourcesResult]<~ResourcesResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Resources', request='ListResources', version=1, params=_params)
+ msg = dict(type='Singular',
+ request='Wait',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
-class ResourcesHookContextFacade(Type):
- name = 'ResourcesHookContext'
+class StringsWatcherFacade(Type):
+ name = 'StringsWatcher'
version = 1
- schema = {'definitions': {'CharmResource': {'additionalProperties': False,
- 'properties': {'description': {'type': 'string'},
- 'fingerprint': {'items': {'type': 'integer'},
- 'type': 'array'},
- 'name': {'type': 'string'},
- 'origin': {'type': 'string'},
- 'path': {'type': 'string'},
- 'revision': {'type': 'integer'},
- 'size': {'type': 'integer'},
- 'type': {'type': 'string'}},
- 'required': ['name',
- 'type',
- 'path',
- 'origin',
- 'revision',
- 'fingerprint',
- 'size'],
- 'type': 'object'},
- 'Error': {'additionalProperties': False,
+ schema = {'definitions': {'Error': {'additionalProperties': False,
'properties': {'code': {'type': 'string'},
'info': {'$ref': '#/definitions/ErrorInfo'},
'message': {'type': 'string'}},
'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
'macaroon-path': {'type': 'string'}},
'type': 'object'},
- 'ErrorResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'}},
- 'type': 'object'},
- 'ListUnitResourcesArgs': {'additionalProperties': False,
- 'properties': {'resource-names': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'required': ['resource-names'],
- 'type': 'object'},
'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'Resource': {'additionalProperties': False,
- 'properties': {'CharmResource': {'$ref': '#/definitions/CharmResource'},
- 'application': {'type': 'string'},
- 'id': {'type': 'string'},
- 'pending-id': {'type': 'string'},
- 'timestamp': {'format': 'date-time',
- 'type': 'string'},
- 'username': {'type': 'string'}},
- 'required': ['CharmResource',
- 'id',
- 'pending-id',
- 'application',
- 'username',
- 'timestamp'],
- 'type': 'object'},
- 'UnitResourceResult': {'additionalProperties': False,
- 'properties': {'ErrorResult': {'$ref': '#/definitions/ErrorResult'},
- 'resource': {'$ref': '#/definitions/Resource'}},
- 'required': ['ErrorResult', 'resource'],
- 'type': 'object'},
- 'UnitResourcesResult': {'additionalProperties': False,
- 'properties': {'ErrorResult': {'$ref': '#/definitions/ErrorResult'},
- 'resources': {'items': {'$ref': '#/definitions/UnitResourceResult'},
- 'type': 'array'}},
- 'required': ['ErrorResult',
- 'resources'],
- 'type': 'object'}},
- 'properties': {'GetResourceInfo': {'properties': {'Params': {'$ref': '#/definitions/ListUnitResourcesArgs'},
- 'Result': {'$ref': '#/definitions/UnitResourcesResult'}},
- 'type': 'object'}},
+ 'StringsWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
+ 'type': 'object'}},
+ 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
+ 'type': 'object'},
+ 'Stop': {'type': 'object'}},
'type': 'object'}
-
- @ReturnMapping(UnitResourcesResult)
- async def GetResourceInfo(self, resource_names):
+
+ @ReturnMapping(StringsWatchResult)
+ async def Next(self):
'''
- resource_names : typing.Sequence<+T_co>[str]
- Returns -> typing.Union[_ForwardRef('ErrorResult'), typing.Sequence<+T_co>[~UnitResourceResult]<~UnitResourceResult>]
+
+ Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ResourcesHookContext', request='GetResourceInfo', version=1, params=_params)
- _params['resource-names'] = resource_names
+ msg = dict(type='StringsWatcher',
+ request='Next',
+ version=1,
+ params=_params)
+
reply = await self.rpc(msg)
return reply
-class RetryStrategyFacade(Type):
- name = 'RetryStrategy'
+ @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 UndertakerFacade(Type):
+ name = 'Undertaker'
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'},
+ 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'},
'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
'macaroon-path': {'type': 'string'}},
'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'ModelConfigResult': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ 'type': 'object'},
'NotifyWatchResult': {'additionalProperties': False,
'properties': {'NotifyWatcherId': {'type': 'string'},
'error': {'$ref': '#/definitions/Error'}},
'type': 'array'}},
'required': ['results'],
'type': 'object'},
- 'RetryStrategy': {'additionalProperties': False,
- 'properties': {'jitter-retry-time': {'type': 'boolean'},
- 'max-retry-time': {'type': 'integer'},
- 'min-retry-time': {'type': 'integer'},
- 'retry-time-factor': {'type': 'integer'},
- 'should-retry': {'type': 'boolean'}},
- 'required': ['should-retry',
- 'min-retry-time',
- 'max-retry-time',
- 'jitter-retry-time',
- 'retry-time-factor'],
- 'type': 'object'},
- 'RetryStrategyResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'},
- 'result': {'$ref': '#/definitions/RetryStrategy'}},
+ 'SetStatus': {'additionalProperties': False,
+ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'},
+ 'type': 'array'}},
+ 'required': ['entities'],
+ 'type': 'object'},
+ 'UndertakerModelInfo': {'additionalProperties': False,
+ 'properties': {'global-name': {'type': 'string'},
+ 'is-system': {'type': 'boolean'},
+ 'life': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'uuid': {'type': 'string'}},
+ 'required': ['uuid',
+ 'name',
+ 'global-name',
+ 'is-system',
+ 'life'],
'type': 'object'},
- 'RetryStrategyResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/RetryStrategyResult'},
- 'type': 'array'}},
- 'required': ['results'],
- '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'}},
+ 'UndertakerModelInfoResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/UndertakerModelInfo'}},
+ 'required': ['result'],
+ '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(RetryStrategyResults)
- async def RetryStrategy(self, entities):
+
+ @ReturnMapping(ModelConfigResult)
+ async def ModelConfig(self):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~RetryStrategyResult]<~RetryStrategyResult>
+
+ Returns -> typing.Mapping[str, typing.Any]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='RetryStrategy', request='RetryStrategy', version=1, params=_params)
- _params['entities'] = entities
+ msg = dict(type='Undertaker',
+ request='ModelConfig',
+ version=1,
+ params=_params)
+
reply = await self.rpc(msg)
return reply
- @ReturnMapping(NotifyWatchResults)
- async def WatchRetryStrategy(self, entities):
+ @ReturnMapping(UndertakerModelInfoResult)
+ async def ModelInfo(self):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+
+ Returns -> typing.Union[_ForwardRef('Error'), _ForwardRef('UndertakerModelInfo')]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='RetryStrategy', request='WatchRetryStrategy', version=1, params=_params)
- _params['entities'] = entities
+ msg = dict(type='Undertaker',
+ request='ModelInfo',
+ version=1,
+ params=_params)
+
reply = await self.rpc(msg)
return reply
-class SSHClientFacade(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'},
- 'macaroon-path': {'type': 'string'}},
- 'type': 'object'},
- 'Macaroon': {'additionalProperties': False, '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'}},
- '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):
+ @ReturnMapping(None)
+ async def ProcessDyingModel(self):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~SSHAddressResult]<~SSHAddressResult>
+
+ Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='SSHClient', request='PrivateAddress', version=1, params=_params)
- _params['entities'] = entities
+ msg = dict(type='Undertaker',
+ request='ProcessDyingModel',
+ version=1,
+ params=_params)
+
reply = await self.rpc(msg)
return reply
- @ReturnMapping(SSHProxyResult)
- async def Proxy(self):
+ @ReturnMapping(None)
+ async def RemoveModel(self):
'''
- Returns -> bool
+ Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='SSHClient', request='Proxy', version=1, params=_params)
+ msg = dict(type='Undertaker',
+ request='RemoveModel',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(SSHAddressResults)
- async def PublicAddress(self, entities):
+ @ReturnMapping(ErrorResults)
+ async def SetStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~SSHAddressResult]<~SSHAddressResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='SSHClient', request='PublicAddress', version=1, params=_params)
+ msg = dict(type='Undertaker',
+ request='SetStatus',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(SSHPublicKeysResults)
- async def PublicKeys(self, entities):
+ @ReturnMapping(ErrorResults)
+ async def UpdateStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~SSHPublicKeysResult]<~SSHPublicKeysResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='SSHClient', request='PublicKeys', version=1, params=_params)
+ msg = dict(type='Undertaker',
+ request='UpdateStatus',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
-class SingularFacade(Type):
- name = 'Singular'
+ @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 UnitAssignerFacade(Type):
+ name = 'UnitAssigner'
version = 1
schema = {'definitions': {'Entities': {'additionalProperties': False,
'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
'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'},
'required': ['results'],
'type': 'object'},
'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'SingularClaim': {'additionalProperties': False,
- 'properties': {'controller-tag': {'type': 'string'},
- 'duration': {'type': 'integer'},
- 'model-tag': {'type': 'string'}},
- 'required': ['model-tag',
- 'controller-tag',
- 'duration'],
+ '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'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
+ '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'},
- 'SingularClaims': {'additionalProperties': False,
- 'properties': {'claims': {'items': {'$ref': '#/definitions/SingularClaim'},
- 'type': 'array'}},
- 'required': ['claims'],
- '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'}},
+ 'WatchUnitAssignments': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
+ 'type': 'object'}},
'type': 'object'}
-
+
@ReturnMapping(ErrorResults)
- async def Claim(self, claims):
+ async def AssignUnits(self, entities):
'''
- claims : typing.Sequence<+T_co>[~SingularClaim]<~SingularClaim>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ 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
+ msg = dict(type='UnitAssigner',
+ request='AssignUnits',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
- async def Wait(self, entities):
+ async def SetAgentStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Singular', request='Wait', version=1, params=_params)
+ msg = dict(type='UnitAssigner',
+ request='SetAgentStatus',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
-class StringsWatcherFacade(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'},
- 'macaroon-path': {'type': 'string'}},
- 'type': 'object'},
- 'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'StringsWatchResult': {'additionalProperties': False,
- 'properties': {'changes': {'items': {'type': 'string'},
- 'type': 'array'},
- 'error': {'$ref': '#/definitions/Error'},
- 'watcher-id': {'type': 'string'}},
- 'required': ['watcher-id'],
- '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<+T_co>[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):
+ async def WatchUnitAssignments(self):
'''
- Returns -> None
+ Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StringsWatcher', request='Stop', version=1, params=_params)
+ msg = dict(type='UnitAssigner',
+ request='WatchUnitAssignments',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
-class UndertakerFacade(Type):
- name = 'Undertaker'
+class UpgradeSeriesFacade(Type):
+ name = 'UpgradeSeries'
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'},
+ schema = {'definitions': {'Entities': {'additionalProperties': False,
+ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
+ 'type': 'array'}},
+ 'required': ['entities'],
+ 'type': 'object'},
+ 'EntitiesResult': {'additionalProperties': False,
+ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
+ 'type': 'array'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['entities'],
+ 'type': 'object'},
+ 'EntitiesResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/EntitiesResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Entity': {'additionalProperties': False,
+ 'properties': {'tag': {'type': 'string'}},
+ 'required': ['tag'],
+ 'type': 'object'},
'Error': {'additionalProperties': False,
'properties': {'code': {'type': 'string'},
'info': {'$ref': '#/definitions/ErrorInfo'},
'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
'type': 'array'}},
'required': ['results'],
- 'type': 'object'},
- 'Macaroon': {'additionalProperties': False, 'type': 'object'},
- 'ModelConfigResult': {'additionalProperties': False,
- 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
- 'type': 'object'}},
- 'type': 'object'}},
- 'required': ['config'],
- 'type': 'object'},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
'NotifyWatchResult': {'additionalProperties': False,
'properties': {'NotifyWatcherId': {'type': 'string'},
'error': {'$ref': '#/definitions/Error'}},
'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': {'global-name': {'type': 'string'},
- 'is-system': {'type': 'boolean'},
- 'life': {'type': 'string'},
- 'name': {'type': 'string'},
- 'uuid': {'type': 'string'}},
- 'required': ['uuid',
- 'name',
- 'global-name',
- 'is-system',
- 'life'],
- 'type': 'object'},
- 'UndertakerModelInfoResult': {'additionalProperties': False,
+ 'PinApplicationResult': {'additionalProperties': False,
+ 'properties': {'application-name': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['application-name'],
+ 'type': 'object'},
+ 'PinApplicationsResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/PinApplicationResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'PinnedLeadershipResult': {'additionalProperties': False,
+ 'properties': {'result': {'patternProperties': {'.*': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'StringResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'string'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'StringResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StringResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'UpdateSeriesArg': {'additionalProperties': False,
+ 'properties': {'force': {'type': 'boolean'},
+ 'series': {'type': 'string'},
+ 'tag': {'$ref': '#/definitions/Entity'}},
+ 'required': ['tag', 'force', 'series'],
+ 'type': 'object'},
+ 'UpdateSeriesArgs': {'additionalProperties': False,
+ 'properties': {'args': {'items': {'$ref': '#/definitions/UpdateSeriesArg'},
+ 'type': 'array'}},
+ 'required': ['args'],
+ 'type': 'object'},
+ 'UpgradeSeriesStartUnitCompletionParam': {'additionalProperties': False,
+ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
+ 'type': 'array'},
+ 'message': {'type': 'string'}},
+ 'required': ['entities',
+ 'message'],
+ 'type': 'object'},
+ 'UpgradeSeriesStatusParam': {'additionalProperties': False,
+ 'properties': {'entity': {'$ref': '#/definitions/Entity'},
+ 'message': {'type': 'string'},
+ 'status': {'type': 'string'}},
+ 'required': ['entity',
+ 'status',
+ 'message'],
+ 'type': 'object'},
+ 'UpgradeSeriesStatusParams': {'additionalProperties': False,
+ 'properties': {'params': {'items': {'$ref': '#/definitions/UpgradeSeriesStatusParam'},
+ 'type': 'array'}},
+ 'required': ['params'],
+ 'type': 'object'},
+ 'UpgradeSeriesStatusResult': {'additionalProperties': False,
'properties': {'error': {'$ref': '#/definitions/Error'},
- 'result': {'$ref': '#/definitions/UndertakerModelInfo'}},
- 'required': ['result'],
- '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'}},
+ 'status': {'type': 'string'}},
+ 'type': 'object'},
+ 'UpgradeSeriesStatusResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/UpgradeSeriesStatusResult'},
+ 'type': 'array'}},
+ 'type': 'object'}},
+ 'properties': {'FinishUpgradeSeries': {'properties': {'Params': {'$ref': '#/definitions/UpdateSeriesArgs'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'MachineStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/UpgradeSeriesStatusResults'}},
+ 'type': 'object'},
+ 'PinMachineApplications': {'properties': {'Result': {'$ref': '#/definitions/PinApplicationsResults'}},
+ 'type': 'object'},
+ 'PinnedLeadership': {'properties': {'Result': {'$ref': '#/definitions/PinnedLeadershipResult'}},
+ 'type': 'object'},
+ 'SetMachineStatus': {'properties': {'Params': {'$ref': '#/definitions/UpgradeSeriesStatusParams'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'SetUpgradeSeriesUnitStatus': {'properties': {'Params': {'$ref': '#/definitions/UpgradeSeriesStatusParams'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'StartUnitCompletion': {'properties': {'Params': {'$ref': '#/definitions/UpgradeSeriesStartUnitCompletionParam'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'TargetSeries': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/StringResults'}},
'type': 'object'},
- 'WatchModelResources': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
- 'type': 'object'}},
+ 'UnitsCompleted': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/EntitiesResults'}},
+ 'type': 'object'},
+ 'UnitsPrepared': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/EntitiesResults'}},
+ 'type': 'object'},
+ 'UnpinMachineApplications': {'properties': {'Result': {'$ref': '#/definitions/PinApplicationsResults'}},
+ 'type': 'object'},
+ 'UpgradeSeriesUnitStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/UpgradeSeriesStatusResults'}},
+ 'type': 'object'},
+ 'WatchUpgradeSeriesNotifications': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
+ 'type': 'object'}},
'type': 'object'}
-
- @ReturnMapping(ModelConfigResult)
- async def ModelConfig(self):
- '''
- Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ @ReturnMapping(ErrorResults)
+ async def FinishUpgradeSeries(self, args):
+ '''
+ args : typing.Sequence[~UpdateSeriesArg]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Undertaker', request='ModelConfig', version=1, params=_params)
+ msg = dict(type='UpgradeSeries',
+ request='FinishUpgradeSeries',
+ version=1,
+ params=_params)
+ _params['args'] = args
+ reply = await self.rpc(msg)
+ return reply
+
+
+ @ReturnMapping(UpgradeSeriesStatusResults)
+ async def MachineStatus(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~UpgradeSeriesStatusResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='UpgradeSeries',
+ request='MachineStatus',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(UndertakerModelInfoResult)
- async def ModelInfo(self):
+ @ReturnMapping(PinApplicationsResults)
+ async def PinMachineApplications(self):
'''
- Returns -> typing.Union[_ForwardRef('Error'), _ForwardRef('UndertakerModelInfo')]
+ Returns -> typing.Sequence[~PinApplicationResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Undertaker', request='ModelInfo', version=1, params=_params)
+ msg = dict(type='UpgradeSeries',
+ request='PinMachineApplications',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def ProcessDyingModel(self):
+ @ReturnMapping(PinnedLeadershipResult)
+ async def PinnedLeadership(self):
'''
- Returns -> None
+ Returns -> typing.Sequence[str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Undertaker', request='ProcessDyingModel', version=1, params=_params)
+ msg = dict(type='UpgradeSeries',
+ request='PinnedLeadership',
+ version=1,
+ params=_params)
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def RemoveModel(self):
+ @ReturnMapping(ErrorResults)
+ async def SetMachineStatus(self, params):
'''
-
- Returns -> None
+ params : typing.Sequence[~UpgradeSeriesStatusParam]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Undertaker', request='RemoveModel', version=1, params=_params)
-
+ msg = dict(type='UpgradeSeries',
+ request='SetMachineStatus',
+ version=1,
+ params=_params)
+ _params['params'] = params
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
- async def SetStatus(self, entities):
+ async def SetUpgradeSeriesUnitStatus(self, params):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ params : typing.Sequence[~UpgradeSeriesStatusParam]
+ 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
+ msg = dict(type='UpgradeSeries',
+ request='SetUpgradeSeriesUnitStatus',
+ version=1,
+ params=_params)
+ _params['params'] = params
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
- async def UpdateStatus(self, entities):
+ async def StartUnitCompletion(self, entities, message):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ message : str
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Undertaker', request='UpdateStatus', version=1, params=_params)
+ msg = dict(type='UpgradeSeries',
+ request='StartUnitCompletion',
+ version=1,
+ params=_params)
_params['entities'] = entities
+ _params['message'] = message
reply = await self.rpc(msg)
return reply
- @ReturnMapping(NotifyWatchResults)
- async def WatchModelResources(self):
+ @ReturnMapping(StringResults)
+ async def TargetSeries(self, entities):
'''
-
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Undertaker', request='WatchModelResources', version=1, params=_params)
-
+ msg = dict(type='UpgradeSeries',
+ request='TargetSeries',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
-class UnitAssignerFacade(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'},
- 'macaroon-path': {'type': 'string'}},
- 'type': 'object'},
- 'ErrorResult': {'additionalProperties': False,
- 'properties': {'error': {'$ref': '#/definitions/Error'}},
- 'type': 'object'},
- 'ErrorResults': {'additionalProperties': False,
- 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
- 'type': 'array'}},
- 'required': ['results'],
- 'type': 'object'},
- 'Macaroon': {'additionalProperties': False, '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'},
- 'watcher-id': {'type': 'string'}},
- 'required': ['watcher-id'],
- '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):
+ @ReturnMapping(EntitiesResults)
+ async def UnitsCompleted(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~EntitiesResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='UnitAssigner', request='AssignUnits', version=1, params=_params)
+ msg = dict(type='UpgradeSeries',
+ request='UnitsCompleted',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ErrorResults)
- async def SetAgentStatus(self, entities):
+ @ReturnMapping(EntitiesResults)
+ async def UnitsPrepared(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~EntitiesResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='UnitAssigner', request='SetAgentStatus', version=1, params=_params)
+ msg = dict(type='UpgradeSeries',
+ request='UnitsPrepared',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(StringsWatchResult)
- async def WatchUnitAssignments(self):
+ @ReturnMapping(PinApplicationsResults)
+ async def UnpinMachineApplications(self):
+ '''
+
+ Returns -> typing.Sequence[~PinApplicationResult]
'''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='UpgradeSeries',
+ request='UnpinMachineApplications',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
- Returns -> typing.Union[typing.Sequence<+T_co>[str], _ForwardRef('Error')]
+
+ @ReturnMapping(UpgradeSeriesStatusResults)
+ async def UpgradeSeriesUnitStatus(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~UpgradeSeriesStatusResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='UnitAssigner', request='WatchUnitAssignments', version=1, params=_params)
+ msg = dict(type='UpgradeSeries',
+ request='UpgradeSeriesUnitStatus',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+ @ReturnMapping(NotifyWatchResults)
+ async def WatchUpgradeSeriesNotifications(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='UpgradeSeries',
+ request='WatchUpgradeSeriesNotifications',
+ version=1,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
'type': 'object'}},
'type': 'object'}
-
+
@ReturnMapping(VersionResults)
async def DesiredVersion(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~VersionResult]<~VersionResult>
+ 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)
+ 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, agent_tools):
'''
- agent_tools : typing.Sequence<+T_co>[~EntityVersion]<~EntityVersion>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ agent_tools : 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)
+ msg = dict(type='Upgrader',
+ request='SetTools',
+ version=1,
+ params=_params)
_params['agent-tools'] = agent_tools
reply = await self.rpc(msg)
return reply
@ReturnMapping(ToolsResults)
async def Tools(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ToolsResult]<~ToolsResult>
+ 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)
+ 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<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ 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)
+ msg = dict(type='Upgrader',
+ request='WatchAPIVersion',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'Result': {'$ref': '#/definitions/UserInfoResults'}},
'type': 'object'}},
'type': 'object'}
-
+
@ReturnMapping(AddUserResults)
async def AddUser(self, users):
'''
- users : typing.Sequence<+T_co>[~AddUser]<~AddUser>
- Returns -> typing.Sequence<+T_co>[~AddUserResult]<~AddUserResult>
+ 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)
+ msg = dict(type='UserManager',
+ request='AddUser',
+ version=1,
+ params=_params)
_params['users'] = users
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def DisableUser(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ 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)
+ 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<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ 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)
+ msg = dict(type='UserManager',
+ request='EnableUser',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def RemoveUser(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='UserManager', request='RemoveUser', version=1, params=_params)
+ msg = dict(type='UserManager',
+ request='RemoveUser',
+ version=1,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetPassword(self, changes):
'''
- changes : typing.Sequence<+T_co>[~EntityPassword]<~EntityPassword>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ 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)
+ 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<+T_co>[~Entity]<~Entity>
+ entities : typing.Sequence[~Entity]
include_disabled : bool
- Returns -> typing.Sequence<+T_co>[~UserInfoResult]<~UserInfoResult>
+ Returns -> typing.Sequence[~UserInfoResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='UserManager', request='UserInfo', version=1, params=_params)
+ 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 VolumeAttachmentPlansWatcherFacade(Type):
+ name = 'VolumeAttachmentPlansWatcher'
+ 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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'MachineStorageId': {'additionalProperties': False,
+ 'properties': {'attachment-tag': {'type': 'string'},
+ 'machine-tag': {'type': 'string'}},
+ 'required': ['machine-tag',
+ 'attachment-tag'],
+ 'type': 'object'},
+ 'MachineStorageIdsWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'$ref': '#/definitions/MachineStorageId'},
+ 'type': 'array'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id',
+ 'changes'],
+ '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'), str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='VolumeAttachmentPlansWatcher',
+ 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='VolumeAttachmentPlansWatcher',
+ request='Stop',
+ version=1,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
@ReturnMapping(ActionResults)
async def Actions(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ActionResult]<~ActionResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ActionResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Action', request='Actions', version=2, params=_params)
+ msg = dict(type='Action',
+ request='Actions',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ApplicationsCharmActionsResults)
async def ApplicationsCharmsActions(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ApplicationCharmActionsResult]<~ApplicationCharmActionsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ApplicationCharmActionsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Action', request='ApplicationsCharmsActions', version=2, params=_params)
+ msg = dict(type='Action',
+ request='ApplicationsCharmsActions',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ActionResults)
async def Cancel(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ActionResult]<~ActionResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ActionResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Action', request='Cancel', version=2, params=_params)
+ msg = dict(type='Action',
+ request='Cancel',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ActionResults)
async def Enqueue(self, actions):
'''
- actions : typing.Sequence<+T_co>[~Action]<~Action>
- Returns -> typing.Sequence<+T_co>[~ActionResult]<~ActionResult>
+ actions : typing.Sequence[~Action]
+ Returns -> typing.Sequence[~ActionResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Action', request='Enqueue', version=2, params=_params)
+ msg = dict(type='Action',
+ request='Enqueue',
+ version=2,
+ params=_params)
_params['actions'] = actions
reply = await self.rpc(msg)
return reply
@ReturnMapping(FindTagsResults)
async def FindActionTagsByPrefix(self, prefixes):
'''
- prefixes : typing.Sequence<+T_co>[str]
- Returns -> typing.Sequence<+T_co>[~Entity]<~Entity>
+ prefixes : typing.Sequence[str]
+ Returns -> typing.Sequence[~Entity]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Action', request='FindActionTagsByPrefix', version=2, params=_params)
+ msg = dict(type='Action',
+ request='FindActionTagsByPrefix',
+ version=2,
+ params=_params)
_params['prefixes'] = prefixes
reply = await self.rpc(msg)
return reply
@ReturnMapping(ActionsByNames)
async def FindActionsByNames(self, names):
'''
- names : typing.Sequence<+T_co>[str]
- Returns -> typing.Sequence<+T_co>[~ActionsByName]<~ActionsByName>
+ names : typing.Sequence[str]
+ Returns -> typing.Sequence[~ActionsByName]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Action', request='FindActionsByNames', version=2, params=_params)
+ msg = dict(type='Action',
+ request='FindActionsByNames',
+ version=2,
+ params=_params)
_params['names'] = names
reply = await self.rpc(msg)
return reply
@ReturnMapping(ActionsByReceivers)
async def ListAll(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ActionsByReceiver]<~ActionsByReceiver>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ActionsByReceiver]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Action', request='ListAll', version=2, params=_params)
+ msg = dict(type='Action',
+ request='ListAll',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ActionsByReceivers)
async def ListCompleted(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ActionsByReceiver]<~ActionsByReceiver>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ActionsByReceiver]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Action', request='ListCompleted', version=2, params=_params)
+ msg = dict(type='Action',
+ request='ListCompleted',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ActionsByReceivers)
async def ListPending(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ActionsByReceiver]<~ActionsByReceiver>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ActionsByReceiver]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Action', request='ListPending', version=2, params=_params)
+ msg = dict(type='Action',
+ request='ListPending',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ActionsByReceivers)
async def ListRunning(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ActionsByReceiver]<~ActionsByReceiver>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ActionsByReceiver]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Action', request='ListRunning', version=2, params=_params)
+ msg = dict(type='Action',
+ request='ListRunning',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ActionResults)
async def Run(self, applications, commands, machines, timeout, units):
'''
- applications : typing.Sequence<+T_co>[str]
+ applications : typing.Sequence[str]
commands : str
- machines : typing.Sequence<+T_co>[str]
+ machines : typing.Sequence[str]
timeout : int
- units : typing.Sequence<+T_co>[str]
- Returns -> typing.Sequence<+T_co>[~ActionResult]<~ActionResult>
+ units : typing.Sequence[str]
+ Returns -> typing.Sequence[~ActionResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Action', request='Run', version=2, params=_params)
+ msg = dict(type='Action',
+ request='Run',
+ version=2,
+ params=_params)
_params['applications'] = applications
_params['commands'] = commands
_params['machines'] = machines
@ReturnMapping(ActionResults)
async def RunOnAllMachines(self, applications, commands, machines, timeout, units):
'''
- applications : typing.Sequence<+T_co>[str]
+ applications : typing.Sequence[str]
commands : str
- machines : typing.Sequence<+T_co>[str]
+ machines : typing.Sequence[str]
timeout : int
- units : typing.Sequence<+T_co>[str]
- Returns -> typing.Sequence<+T_co>[~ActionResult]<~ActionResult>
+ units : typing.Sequence[str]
+ Returns -> typing.Sequence[~ActionResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Action', request='RunOnAllMachines', version=2, params=_params)
+ msg = dict(type='Action',
+ request='RunOnAllMachines',
+ version=2,
+ params=_params)
_params['applications'] = applications
_params['commands'] = commands
_params['machines'] = machines
'required': ['auth-type'],
'type': 'object'},
'CloudSpec': {'additionalProperties': False,
- 'properties': {'credential': {'$ref': '#/definitions/CloudCredential'},
+ 'properties': {'cacertificates': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'credential': {'$ref': '#/definitions/CloudCredential'},
'endpoint': {'type': 'string'},
'identity-endpoint': {'type': 'string'},
'name': {'type': 'string'},
'properties': {'results': {'items': {'$ref': '#/definitions/CloudSpecResult'},
'type': 'array'}},
'type': 'object'},
+ 'ControllerAPIInfoResult': {'additionalProperties': False,
+ 'properties': {'addresses': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'cacert': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['addresses',
+ 'cacert'],
+ 'type': 'object'},
+ 'ControllerAPIInfoResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ControllerAPIInfoResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
'ControllerConfigResult': {'additionalProperties': False,
'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
'type': 'object'}},
'properties': {'api-port': {'type': 'integer'},
'ca-private-key': {'type': 'string'},
'cert': {'type': 'string'},
+ 'controller-api-port': {'type': 'integer'},
'private-key': {'type': 'string'},
'shared-secret': {'type': 'string'},
'state-port': {'type': 'integer'},
'CloudSpec': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
'Result': {'$ref': '#/definitions/CloudSpecResults'}},
'type': 'object'},
+ 'ControllerAPIInfoForModels': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ControllerAPIInfoResults'}},
+ 'type': 'object'},
'ControllerConfig': {'properties': {'Result': {'$ref': '#/definitions/ControllerConfigResult'}},
'type': 'object'},
'GetCloudSpec': {'properties': {'Params': {'$ref': '#/definitions/ModelTag'},
@ReturnMapping(ErrorResults)
async def ClearReboot(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ 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)
+ msg = dict(type='Agent',
+ request='ClearReboot',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(CloudSpecResults)
async def CloudSpec(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~CloudSpecResult]<~CloudSpecResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~CloudSpecResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Agent',
+ request='CloudSpec',
+ version=2,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ControllerAPIInfoResults)
+ async def ControllerAPIInfoForModels(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ControllerAPIInfoResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Agent', request='CloudSpec', version=2, params=_params)
+ msg = dict(type='Agent',
+ request='ControllerAPIInfoForModels',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
async def ControllerConfig(self):
'''
- Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ Returns -> typing.Mapping[str, typing.Any]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Agent', request='ControllerConfig', version=2, params=_params)
+ msg = dict(type='Agent',
+ request='ControllerConfig',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Agent', request='GetCloudSpec', version=2, params=_params)
+ msg = dict(type='Agent',
+ request='GetCloudSpec',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(AgentGetEntitiesResults)
async def GetEntities(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~AgentGetEntitiesResult]<~AgentGetEntitiesResult>
+ 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)
+ msg = dict(type='Agent',
+ request='GetEntities',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Agent', request='IsMaster', version=2, params=_params)
+ msg = dict(type='Agent',
+ request='IsMaster',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
async def ModelConfig(self):
'''
- Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ Returns -> typing.Mapping[str, typing.Any]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Agent', request='ModelConfig', version=2, params=_params)
+ 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<+T_co>[~EntityPassword]<~EntityPassword>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ 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)
+ msg = dict(type='Agent',
+ request='SetPasswords',
+ version=2,
+ params=_params)
_params['changes'] = changes
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Agent', request='StateServingInfo', version=2, params=_params)
+ msg = dict(type='Agent',
+ request='StateServingInfo',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResults)
async def WatchCredentials(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Agent', request='WatchCredentials', version=2, params=_params)
+ msg = dict(type='Agent',
+ request='WatchCredentials',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Agent', request='WatchForModelConfigChanges', version=2, params=_params)
+ msg = dict(type='Agent',
+ request='WatchForModelConfigChanges',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
async def Next(self):
'''
- Returns -> typing.Sequence<+T_co>[~Delta]<~Delta>
+ Returns -> typing.Sequence[~Delta]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='AllModelWatcher', request='Next', version=2, params=_params)
+ msg = dict(type='AllModelWatcher',
+ request='Next',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='AllModelWatcher', request='Stop', version=2, params=_params)
+ msg = dict(type='AllModelWatcher',
+ request='Stop',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(AnnotationsGetResults)
async def Get(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~AnnotationsGetResult]<~AnnotationsGetResult>
+ 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)
+ 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<+T_co>[~EntityAnnotations]<~EntityAnnotations>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ 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)
+ msg = dict(type='Annotations',
+ request='Set',
+ version=2,
+ params=_params)
_params['annotations'] = annotations
reply = await self.rpc(msg)
return reply
@ReturnMapping(AddRelationResults)
async def AddRelation(self, endpoints):
'''
- endpoints : typing.Sequence<+T_co>[str]
- Returns -> typing.Mapping<~KT, +VT_co>[str, ~CharmRelation]<~CharmRelation>
+ endpoints : typing.Sequence[str]
+ Returns -> typing.Mapping[str, ~CharmRelation]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='AddRelation', version=2, params=_params)
+ msg = dict(type='Application',
+ request='AddRelation',
+ version=2,
+ params=_params)
_params['endpoints'] = endpoints
reply = await self.rpc(msg)
return reply
'''
application : str
num_units : int
- placement : typing.Sequence<+T_co>[~Placement]<~Placement>
- Returns -> typing.Sequence<+T_co>[str]
+ placement : typing.Sequence[~Placement]
+ Returns -> typing.Sequence[str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='AddUnits', version=2, params=_params)
+ msg = dict(type='Application',
+ request='AddUnits',
+ version=2,
+ params=_params)
_params['application'] = application
_params['num-units'] = num_units
_params['placement'] = placement
async def CharmRelations(self, application):
'''
application : str
- Returns -> typing.Sequence<+T_co>[str]
+ Returns -> typing.Sequence[str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='CharmRelations', version=2, params=_params)
+ msg = dict(type='Application',
+ request='CharmRelations',
+ version=2,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def Deploy(self, applications):
'''
- applications : typing.Sequence<+T_co>[~ApplicationDeploy]<~ApplicationDeploy>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ applications : typing.Sequence[~ApplicationDeploy]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Deploy', version=2, params=_params)
+ msg = dict(type='Application',
+ request='Deploy',
+ version=2,
+ params=_params)
_params['applications'] = applications
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Destroy', version=2, params=_params)
+ msg = dict(type='Application',
+ request='Destroy',
+ version=2,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
@ReturnMapping(None)
async def DestroyRelation(self, endpoints):
'''
- endpoints : typing.Sequence<+T_co>[str]
+ endpoints : typing.Sequence[str]
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='DestroyRelation', version=2, params=_params)
+ msg = dict(type='Application',
+ request='DestroyRelation',
+ version=2,
+ params=_params)
_params['endpoints'] = endpoints
reply = await self.rpc(msg)
return reply
@ReturnMapping(None)
async def DestroyUnits(self, unit_names):
'''
- unit_names : typing.Sequence<+T_co>[str]
+ unit_names : typing.Sequence[str]
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='DestroyUnits', version=2, params=_params)
+ msg = dict(type='Application',
+ request='DestroyUnits',
+ version=2,
+ params=_params)
_params['unit-names'] = unit_names
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Expose', version=2, params=_params)
+ msg = dict(type='Application',
+ request='Expose',
+ version=2,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
async def Get(self, application):
'''
application : str
- Returns -> typing.Union[str, typing.Mapping<~KT, +VT_co>[str, typing.Any], _ForwardRef('Value')]
+ Returns -> typing.Union[str, typing.Mapping[str, typing.Any], _ForwardRef('Value')]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Get', version=2, params=_params)
+ msg = dict(type='Application',
+ request='Get',
+ version=2,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='GetCharmURL', version=2, params=_params)
+ msg = dict(type='Application',
+ request='GetCharmURL',
+ version=2,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='GetConstraints', version=2, params=_params)
+ msg = dict(type='Application',
+ request='GetConstraints',
+ version=2,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
async def Set(self, application, options):
'''
application : str
- options : typing.Mapping<~KT, +VT_co>[str, str]
+ options : typing.Mapping[str, str]
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Set', version=2, params=_params)
+ msg = dict(type='Application',
+ request='Set',
+ version=2,
+ params=_params)
_params['application'] = application
_params['options'] = options
reply = await self.rpc(msg)
application : str
channel : str
charm_url : str
- config_settings : typing.Mapping<~KT, +VT_co>[str, str]
+ config_settings : typing.Mapping[str, str]
config_settings_yaml : str
force_series : bool
force_units : bool
- resource_ids : typing.Mapping<~KT, +VT_co>[str, str]
- storage_constraints : typing.Mapping<~KT, +VT_co>[str, ~StorageConstraints]<~StorageConstraints>
+ resource_ids : typing.Mapping[str, str]
+ storage_constraints : typing.Mapping[str, ~StorageConstraints]
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='SetCharm', version=2, params=_params)
+ msg = dict(type='Application',
+ request='SetCharm',
+ version=2,
+ params=_params)
_params['application'] = application
_params['channel'] = channel
_params['charm-url'] = charm_url
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='SetConstraints', version=2, params=_params)
+ msg = dict(type='Application',
+ request='SetConstraints',
+ version=2,
+ params=_params)
_params['application'] = application
_params['constraints'] = constraints
reply = await self.rpc(msg)
@ReturnMapping(ErrorResults)
async def SetMetricCredentials(self, creds):
'''
- creds : typing.Sequence<+T_co>[~ApplicationMetricCredential]<~ApplicationMetricCredential>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ creds : typing.Sequence[~ApplicationMetricCredential]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='SetMetricCredentials', version=2, params=_params)
+ msg = dict(type='Application',
+ request='SetMetricCredentials',
+ version=2,
+ params=_params)
_params['creds'] = creds
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Unexpose', version=2, params=_params)
+ msg = dict(type='Application',
+ request='Unexpose',
+ version=2,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
async def Unset(self, application, options):
'''
application : str
- options : typing.Sequence<+T_co>[str]
+ options : typing.Sequence[str]
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Unset', version=2, params=_params)
+ msg = dict(type='Application',
+ request='Unset',
+ version=2,
+ params=_params)
_params['application'] = application
_params['options'] = options
reply = await self.rpc(msg)
force_charm_url : bool
force_series : bool
min_units : int
- settings : typing.Mapping<~KT, +VT_co>[str, str]
+ settings : typing.Mapping[str, str]
settings_yaml : str
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Update', version=2, params=_params)
+ msg = dict(type='Application',
+ request='Update',
+ version=2,
+ params=_params)
_params['application'] = application
_params['charm-url'] = charm_url
_params['constraints'] = constraints
-class BlockFacade(Type):
- name = 'Block'
+class ApplicationOffersFacade(Type):
+ name = 'ApplicationOffers'
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'}},
+ schema = {'definitions': {'AddApplicationOffer': {'additionalProperties': False,
+ 'properties': {'application-description': {'type': 'string'},
+ 'application-name': {'type': 'string'},
+ 'endpoints': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'model-tag': {'type': 'string'},
+ 'offer-name': {'type': 'string'}},
+ 'required': ['model-tag',
+ 'offer-name',
+ 'application-name',
+ 'application-description',
+ 'endpoints'],
+ 'type': 'object'},
+ 'AddApplicationOffers': {'additionalProperties': False,
+ 'properties': {'Offers': {'items': {'$ref': '#/definitions/AddApplicationOffer'},
+ 'type': 'array'}},
+ 'required': ['Offers'],
+ 'type': 'object'},
+ 'ApplicationOfferAdminDetails': {'additionalProperties': False,
+ 'properties': {'ApplicationOfferDetails': {'$ref': '#/definitions/ApplicationOfferDetails'},
+ 'application-name': {'type': 'string'},
+ 'charm-url': {'type': 'string'},
+ 'connections': {'items': {'$ref': '#/definitions/OfferConnection'},
+ 'type': 'array'}},
+ 'required': ['ApplicationOfferDetails',
+ 'application-name',
+ 'charm-url'],
+ 'type': 'object'},
+ 'ApplicationOfferDetails': {'additionalProperties': False,
+ 'properties': {'application-description': {'type': 'string'},
+ 'bindings': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'endpoints': {'items': {'$ref': '#/definitions/RemoteEndpoint'},
+ 'type': 'array'},
+ 'offer-name': {'type': 'string'},
+ 'offer-url': {'type': 'string'},
+ 'offer-uuid': {'type': 'string'},
+ 'source-model-tag': {'type': 'string'},
+ 'spaces': {'items': {'$ref': '#/definitions/RemoteSpace'},
+ 'type': 'array'},
+ 'users': {'items': {'$ref': '#/definitions/OfferUserDetails'},
+ 'type': 'array'}},
+ 'required': ['source-model-tag',
+ 'offer-uuid',
+ 'offer-url',
+ 'offer-name',
+ 'application-description'],
+ 'type': 'object'},
+ 'ApplicationOfferResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/ApplicationOfferAdminDetails'}},
+ 'type': 'object'},
+ 'ApplicationOffersResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ApplicationOfferResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'ConsumeOfferDetails': {'additionalProperties': False,
+ 'properties': {'external-controller': {'$ref': '#/definitions/ExternalControllerInfo'},
+ 'macaroon': {'$ref': '#/definitions/Macaroon'},
+ 'offer': {'$ref': '#/definitions/ApplicationOfferDetails'}},
+ 'type': 'object'},
+ 'ConsumeOfferDetailsResult': {'additionalProperties': False,
+ 'properties': {'ConsumeOfferDetails': {'$ref': '#/definitions/ConsumeOfferDetails'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['ConsumeOfferDetails'],
+ 'type': 'object'},
+ 'ConsumeOfferDetailsResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ConsumeOfferDetailsResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'DestroyApplicationOffers': {'additionalProperties': False,
+ 'properties': {'force': {'type': 'boolean'},
+ 'offer-urls': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['offer-urls'],
+ 'type': 'object'},
+ 'EndpointFilterAttributes': {'additionalProperties': False,
+ 'properties': {'interface': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'role': {'type': 'string'}},
+ 'required': ['role',
+ 'interface',
+ 'name'],
+ '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', 'since'],
'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'},
'ErrorResult': {'additionalProperties': False,
'properties': {'error': {'$ref': '#/definitions/Error'}},
'type': 'object'},
- 'Macaroon': {'additionalProperties': False, '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'}},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'ExternalControllerInfo': {'additionalProperties': False,
+ 'properties': {'addrs': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'ca-cert': {'type': 'string'},
+ 'controller-alias': {'type': 'string'},
+ 'controller-tag': {'type': 'string'}},
+ 'required': ['controller-tag',
+ 'controller-alias',
+ 'addrs',
+ 'ca-cert'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'ModifyOfferAccess': {'additionalProperties': False,
+ 'properties': {'access': {'type': 'string'},
+ 'action': {'type': 'string'},
+ 'offer-url': {'type': 'string'},
+ 'user-tag': {'type': 'string'}},
+ 'required': ['user-tag',
+ 'action',
+ 'access',
+ 'offer-url'],
+ 'type': 'object'},
+ 'ModifyOfferAccessRequest': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'$ref': '#/definitions/ModifyOfferAccess'},
+ 'type': 'array'}},
+ 'required': ['changes'],
+ 'type': 'object'},
+ 'OfferConnection': {'additionalProperties': False,
+ 'properties': {'endpoint': {'type': 'string'},
+ 'ingress-subnets': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'relation-id': {'type': 'integer'},
+ 'source-model-tag': {'type': 'string'},
+ 'status': {'$ref': '#/definitions/EntityStatus'},
+ 'username': {'type': 'string'}},
+ 'required': ['source-model-tag',
+ 'relation-id',
+ 'username',
+ 'endpoint',
+ 'status',
+ 'ingress-subnets'],
+ 'type': 'object'},
+ 'OfferFilter': {'additionalProperties': False,
+ 'properties': {'allowed-users': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'application-description': {'type': 'string'},
+ 'application-name': {'type': 'string'},
+ 'application-user': {'type': 'string'},
+ 'connected-users': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'endpoints': {'items': {'$ref': '#/definitions/EndpointFilterAttributes'},
+ 'type': 'array'},
+ 'model-name': {'type': 'string'},
+ 'offer-name': {'type': 'string'},
+ 'owner-name': {'type': 'string'}},
+ 'required': ['owner-name',
+ 'model-name',
+ 'offer-name',
+ 'application-name',
+ 'application-description',
+ 'application-user',
+ 'endpoints',
+ 'connected-users',
+ 'allowed-users'],
+ 'type': 'object'},
+ 'OfferFilters': {'additionalProperties': False,
+ 'properties': {'Filters': {'items': {'$ref': '#/definitions/OfferFilter'},
+ 'type': 'array'}},
+ 'required': ['Filters'],
+ 'type': 'object'},
+ 'OfferURLs': {'additionalProperties': False,
+ 'properties': {'offer-urls': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'OfferUserDetails': {'additionalProperties': False,
+ 'properties': {'access': {'type': 'string'},
+ 'display-name': {'type': 'string'},
+ 'user': {'type': 'string'}},
+ 'required': ['user',
+ 'display-name',
+ 'access'],
+ 'type': 'object'},
+ 'QueryApplicationOffersResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ApplicationOfferAdminDetails'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'RemoteApplicationInfo': {'additionalProperties': False,
+ 'properties': {'description': {'type': 'string'},
+ 'endpoints': {'items': {'$ref': '#/definitions/RemoteEndpoint'},
+ 'type': 'array'},
+ 'icon-url-path': {'type': 'string'},
+ 'model-tag': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'offer-url': {'type': 'string'},
+ 'source-model-label': {'type': 'string'}},
+ 'required': ['model-tag',
+ 'name',
+ 'description',
+ 'offer-url',
+ 'endpoints',
+ 'icon-url-path'],
+ 'type': 'object'},
+ 'RemoteApplicationInfoResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/RemoteApplicationInfo'}},
+ 'type': 'object'},
+ 'RemoteApplicationInfoResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/RemoteApplicationInfoResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'RemoteEndpoint': {'additionalProperties': False,
+ 'properties': {'interface': {'type': 'string'},
+ 'limit': {'type': 'integer'},
+ 'name': {'type': 'string'},
+ 'role': {'type': 'string'}},
+ 'required': ['name',
+ 'role',
+ 'interface',
+ 'limit'],
+ 'type': 'object'},
+ 'RemoteSpace': {'additionalProperties': False,
+ 'properties': {'cloud-type': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'provider-attributes': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'provider-id': {'type': 'string'},
+ 'subnets': {'items': {'$ref': '#/definitions/Subnet'},
+ 'type': 'array'}},
+ 'required': ['cloud-type',
+ 'name',
+ 'provider-id',
+ 'provider-attributes',
+ 'subnets'],
+ 'type': 'object'},
+ 'Subnet': {'additionalProperties': False,
+ 'properties': {'cidr': {'type': 'string'},
+ 'life': {'type': 'string'},
+ 'provider-id': {'type': 'string'},
+ 'provider-network-id': {'type': 'string'},
+ 'provider-space-id': {'type': 'string'},
+ 'space-tag': {'type': 'string'},
+ 'status': {'type': 'string'},
+ 'vlan-tag': {'type': 'integer'},
+ 'zones': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['cidr',
+ 'vlan-tag',
+ 'life',
+ 'space-tag',
+ 'zones'],
+ 'type': 'object'}},
+ 'properties': {'ApplicationOffers': {'properties': {'Params': {'$ref': '#/definitions/OfferURLs'},
+ 'Result': {'$ref': '#/definitions/ApplicationOffersResults'}},
+ 'type': 'object'},
+ 'DestroyOffers': {'properties': {'Params': {'$ref': '#/definitions/DestroyApplicationOffers'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'FindApplicationOffers': {'properties': {'Params': {'$ref': '#/definitions/OfferFilters'},
+ 'Result': {'$ref': '#/definitions/QueryApplicationOffersResults'}},
+ 'type': 'object'},
+ 'GetConsumeDetails': {'properties': {'Params': {'$ref': '#/definitions/OfferURLs'},
+ 'Result': {'$ref': '#/definitions/ConsumeOfferDetailsResults'}},
+ 'type': 'object'},
+ 'ListApplicationOffers': {'properties': {'Params': {'$ref': '#/definitions/OfferFilters'},
+ 'Result': {'$ref': '#/definitions/QueryApplicationOffersResults'}},
+ 'type': 'object'},
+ 'ModifyOfferAccess': {'properties': {'Params': {'$ref': '#/definitions/ModifyOfferAccessRequest'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'Offer': {'properties': {'Params': {'$ref': '#/definitions/AddApplicationOffers'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'RemoteApplicationInfo': {'properties': {'Params': {'$ref': '#/definitions/OfferURLs'},
+ 'Result': {'$ref': '#/definitions/RemoteApplicationInfoResults'}},
+ 'type': 'object'}},
'type': 'object'}
- @ReturnMapping(BlockResults)
- async def List(self):
+ @ReturnMapping(ApplicationOffersResults)
+ async def ApplicationOffers(self, offer_urls):
+ '''
+ offer_urls : typing.Sequence[str]
+ Returns -> typing.Sequence[~ApplicationOfferResult]
'''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ApplicationOffers',
+ request='ApplicationOffers',
+ version=2,
+ params=_params)
+ _params['offer-urls'] = offer_urls
+ reply = await self.rpc(msg)
+ return reply
+
+
- Returns -> typing.Sequence<+T_co>[~BlockResult]<~BlockResult>
+ @ReturnMapping(ErrorResults)
+ async def DestroyOffers(self, force, offer_urls):
+ '''
+ force : bool
+ offer_urls : typing.Sequence[str]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Block', request='List', version=2, params=_params)
+ msg = dict(type='ApplicationOffers',
+ request='DestroyOffers',
+ version=2,
+ params=_params)
+ _params['force'] = force
+ _params['offer-urls'] = offer_urls
+ reply = await self.rpc(msg)
+ return reply
+
+
+ @ReturnMapping(QueryApplicationOffersResults)
+ async def FindApplicationOffers(self, filters):
+ '''
+ filters : typing.Sequence[~OfferFilter]
+ Returns -> typing.Sequence[~ApplicationOfferAdminDetails]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ApplicationOffers',
+ request='FindApplicationOffers',
+ version=2,
+ params=_params)
+ _params['Filters'] = filters
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ErrorResult)
- async def SwitchBlockOff(self, message, type_):
+ @ReturnMapping(ConsumeOfferDetailsResults)
+ async def GetConsumeDetails(self, offer_urls):
'''
- message : str
- type_ : str
- Returns -> Error
+ offer_urls : typing.Sequence[str]
+ Returns -> typing.Sequence[~ConsumeOfferDetailsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Block', request='SwitchBlockOff', version=2, params=_params)
- _params['message'] = message
- _params['type'] = type_
+ msg = dict(type='ApplicationOffers',
+ request='GetConsumeDetails',
+ version=2,
+ params=_params)
+ _params['offer-urls'] = offer_urls
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ErrorResult)
- async def SwitchBlockOn(self, message, type_):
+ @ReturnMapping(QueryApplicationOffersResults)
+ async def ListApplicationOffers(self, filters):
'''
- message : str
- type_ : str
- Returns -> Error
+ filters : typing.Sequence[~OfferFilter]
+ Returns -> typing.Sequence[~ApplicationOfferAdminDetails]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Block', request='SwitchBlockOn', version=2, params=_params)
- _params['message'] = message
- _params['type'] = type_
+ msg = dict(type='ApplicationOffers',
+ request='ListApplicationOffers',
+ version=2,
+ params=_params)
+ _params['Filters'] = filters
reply = await self.rpc(msg)
return reply
-class CharmRevisionUpdaterFacade(Type):
- name = 'CharmRevisionUpdater'
+ @ReturnMapping(ErrorResults)
+ async def ModifyOfferAccess(self, changes):
+ '''
+ changes : typing.Sequence[~ModifyOfferAccess]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ApplicationOffers',
+ request='ModifyOfferAccess',
+ version=2,
+ params=_params)
+ _params['changes'] = changes
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def Offer(self, offers):
+ '''
+ offers : typing.Sequence[~AddApplicationOffer]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ApplicationOffers',
+ request='Offer',
+ version=2,
+ params=_params)
+ _params['Offers'] = offers
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(RemoteApplicationInfoResults)
+ async def RemoteApplicationInfo(self, offer_urls):
+ '''
+ offer_urls : typing.Sequence[str]
+ Returns -> typing.Sequence[~RemoteApplicationInfoResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ApplicationOffers',
+ request='RemoteApplicationInfo',
+ version=2,
+ params=_params)
+ _params['offer-urls'] = offer_urls
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class BackupsFacade(Type):
+ name = 'Backups'
version = 2
- schema = {'definitions': {'Error': {'additionalProperties': False,
+ schema = {'definitions': {'BackupsCreateArgs': {'additionalProperties': False,
+ 'properties': {'keep-copy': {'type': 'boolean'},
+ 'no-download': {'type': 'boolean'},
+ 'notes': {'type': 'string'}},
+ 'required': ['notes',
+ 'keep-copy',
+ 'no-download'],
+ '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': {'ca-cert': {'type': 'string'},
+ 'ca-private-key': {'type': 'string'},
+ 'checksum': {'type': 'string'},
+ 'checksum-format': {'type': 'string'},
+ 'filename': {'type': 'string'},
+ 'finished': {'format': 'date-time',
+ 'type': 'string'},
+ 'hostname': {'type': 'string'},
+ 'id': {'type': 'string'},
+ 'machine': {'type': 'string'},
+ 'model': {'type': 'string'},
+ 'notes': {'type': 'string'},
+ 'series': {'type': 'string'},
+ 'size': {'type': 'integer'},
+ 'started': {'format': 'date-time',
+ 'type': 'string'},
+ 'stored': {'format': 'date-time',
+ 'type': 'string'},
+ 'version': {'$ref': '#/definitions/Number'}},
+ 'required': ['id',
+ 'checksum',
+ 'checksum-format',
+ 'size',
+ 'stored',
+ 'started',
+ 'finished',
+ 'notes',
+ 'model',
+ 'machine',
+ 'hostname',
+ 'version',
+ 'series',
+ 'ca-cert',
+ 'ca-private-key',
+ 'filename'],
+ 'type': 'object'},
+ 'BackupsRemoveArgs': {'additionalProperties': False,
+ 'properties': {'ids': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['ids'],
+ 'type': 'object'},
+ 'Error': {'additionalProperties': False,
'properties': {'code': {'type': 'string'},
'info': {'$ref': '#/definitions/ErrorInfo'},
'message': {'type': 'string'}},
'ErrorResult': {'additionalProperties': False,
'properties': {'error': {'$ref': '#/definitions/Error'}},
'type': 'object'},
- 'Macaroon': {'additionalProperties': False, 'type': 'object'}},
- 'properties': {'UpdateLatestRevisions': {'properties': {'Result': {'$ref': '#/definitions/ErrorResult'}},
- 'type': 'object'}},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, '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': {'backup-id': {'type': 'string'}},
+ 'required': ['backup-id'],
+ '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'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'Restore': {'properties': {'Params': {'$ref': '#/definitions/RestoreArgs'}},
+ 'type': 'object'}},
'type': 'object'}
- @ReturnMapping(ErrorResult)
- async def UpdateLatestRevisions(self):
+ @ReturnMapping(BackupsMetadataResult)
+ async def Create(self, notes):
'''
-
- Returns -> Error
+ notes : str
+ Returns -> typing.Union[str, int, _ForwardRef('Number')]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='CharmRevisionUpdater', request='UpdateLatestRevisions', version=2, params=_params)
-
+ msg = dict(type='Backups',
+ request='Create',
+ version=2,
+ params=_params)
+ _params['notes'] = notes
reply = await self.rpc(msg)
return reply
-class CharmsFacade(Type):
- name = 'Charms'
- version = 2
- schema = {'definitions': {'CharmActionSpec': {'additionalProperties': False,
- 'properties': {'description': {'type': 'string'},
- 'params': {'patternProperties': {'.*': {'additionalProperties': True,
- 'type': 'object'}},
- 'type': 'object'}},
- 'required': ['description', 'params'],
- 'type': 'object'},
- 'CharmActions': {'additionalProperties': False,
- 'properties': {'specs': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmActionSpec'}},
- 'type': 'object'}},
- 'type': 'object'},
- 'CharmInfo': {'additionalProperties': False,
- 'properties': {'actions': {'$ref': '#/definitions/CharmActions'},
- 'config': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmOption'}},
- 'type': 'object'},
- 'meta': {'$ref': '#/definitions/CharmMeta'},
- 'metrics': {'$ref': '#/definitions/CharmMetrics'},
- 'revision': {'type': 'integer'},
- 'url': {'type': 'string'}},
- 'required': ['revision', 'url', 'config'],
- 'type': 'object'},
- 'CharmMeta': {'additionalProperties': False,
- 'properties': {'categories': {'items': {'type': 'string'},
- 'type': 'array'},
- 'description': {'type': 'string'},
- 'extra-bindings': {'patternProperties': {'.*': {'type': 'string'}},
- 'type': 'object'},
- 'min-juju-version': {'type': 'string'},
- 'name': {'type': 'string'},
- 'payload-classes': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmPayloadClass'}},
- 'type': 'object'},
- 'peers': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmRelation'}},
- 'type': 'object'},
- 'provides': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmRelation'}},
- 'type': 'object'},
- 'requires': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmRelation'}},
- 'type': 'object'},
- 'resources': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmResourceMeta'}},
- 'type': 'object'},
- 'series': {'items': {'type': 'string'},
- 'type': 'array'},
- 'storage': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmStorage'}},
- 'type': 'object'},
- 'subordinate': {'type': 'boolean'},
- 'summary': {'type': 'string'},
- 'tags': {'items': {'type': 'string'},
- 'type': 'array'},
- 'terms': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'required': ['name',
- 'summary',
- 'description',
- 'subordinate'],
- 'type': 'object'},
- 'CharmMetric': {'additionalProperties': False,
- 'properties': {'description': {'type': 'string'},
- 'type': {'type': 'string'}},
- 'required': ['type', 'description'],
+ @ReturnMapping(None)
+ async def FinishRestore(self):
+ '''
+
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Backups',
+ request='FinishRestore',
+ version=2,
+ 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=2,
+ 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=2,
+ 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=2,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def Remove(self, id_):
+ '''
+ id_ : str
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Backups',
+ request='Remove',
+ version=2,
+ params=_params)
+ _params['id'] = id_
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Restore(self, backup_id):
+ '''
+ backup_id : str
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Backups',
+ request='Restore',
+ version=2,
+ params=_params)
+ _params['backup-id'] = backup_id
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class BlockFacade(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'},
- 'CharmMetrics': {'additionalProperties': False,
- 'properties': {'metrics': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmMetric'}},
- 'type': 'object'},
- 'plan': {'$ref': '#/definitions/CharmPlan'}},
- 'required': ['metrics', 'plan'],
+ 'BlockResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/BlockResult'},
+ 'type': 'array'}},
'type': 'object'},
- 'CharmOption': {'additionalProperties': False,
- 'properties': {'default': {'additionalProperties': True,
- 'type': 'object'},
- 'description': {'type': 'string'},
- 'type': {'type': 'string'}},
- 'required': ['type'],
- 'type': 'object'},
- 'CharmPayloadClass': {'additionalProperties': False,
- 'properties': {'name': {'type': 'string'},
+ 'BlockSwitchParams': {'additionalProperties': False,
+ 'properties': {'message': {'type': 'string'},
'type': {'type': 'string'}},
- 'required': ['name', 'type'],
+ 'required': ['type'],
'type': 'object'},
- 'CharmPlan': {'additionalProperties': False,
- 'properties': {'required': {'type': 'boolean'}},
- 'required': ['required'],
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
'type': 'object'},
- 'CharmRelation': {'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'],
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'}},
+ 'properties': {'List': {'properties': {'Result': {'$ref': '#/definitions/BlockResults'}},
+ 'type': 'object'},
+ 'SwitchBlockOff': {'properties': {'Params': {'$ref': '#/definitions/BlockSwitchParams'},
+ 'Result': {'$ref': '#/definitions/ErrorResult'}},
'type': 'object'},
- 'CharmResourceMeta': {'additionalProperties': False,
- 'properties': {'description': {'type': 'string'},
- 'name': {'type': 'string'},
- 'path': {'type': 'string'},
- 'type': {'type': 'string'}},
- 'required': ['name',
- 'type',
- 'path',
- 'description'],
- 'type': 'object'},
- 'CharmStorage': {'additionalProperties': False,
- 'properties': {'count-max': {'type': 'integer'},
- 'count-min': {'type': 'integer'},
- 'description': {'type': 'string'},
- 'location': {'type': 'string'},
- 'minimum-size': {'type': 'integer'},
- 'name': {'type': 'string'},
- 'properties': {'items': {'type': 'string'},
- 'type': 'array'},
- 'read-only': {'type': 'boolean'},
- 'shared': {'type': 'boolean'},
- 'type': {'type': 'string'}},
- 'required': ['name',
- 'description',
- 'type',
- 'shared',
- 'read-only',
- 'count-min',
- 'count-max',
- 'minimum-size'],
- 'type': 'object'},
- 'CharmURL': {'additionalProperties': False,
- 'properties': {'url': {'type': 'string'}},
- 'required': ['url'],
- 'type': 'object'},
- 'CharmsList': {'additionalProperties': False,
- 'properties': {'names': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'required': ['names'],
- 'type': 'object'},
- 'CharmsListResult': {'additionalProperties': False,
- 'properties': {'charm-urls': {'items': {'type': 'string'},
- 'type': 'array'}},
- 'required': ['charm-urls'],
- 'type': 'object'},
- 'IsMeteredResult': {'additionalProperties': False,
- 'properties': {'metered': {'type': 'boolean'}},
- 'required': ['metered'],
- 'type': 'object'}},
- 'properties': {'CharmInfo': {'properties': {'Params': {'$ref': '#/definitions/CharmURL'},
- 'Result': {'$ref': '#/definitions/CharmInfo'}},
- 'type': 'object'},
- 'IsMetered': {'properties': {'Params': {'$ref': '#/definitions/CharmURL'},
- 'Result': {'$ref': '#/definitions/IsMeteredResult'}},
- 'type': 'object'},
- 'List': {'properties': {'Params': {'$ref': '#/definitions/CharmsList'},
- 'Result': {'$ref': '#/definitions/CharmsListResult'}},
- 'type': 'object'}},
+ 'SwitchBlockOn': {'properties': {'Params': {'$ref': '#/definitions/BlockSwitchParams'},
+ 'Result': {'$ref': '#/definitions/ErrorResult'}},
+ 'type': 'object'}},
'type': 'object'}
- @ReturnMapping(CharmInfo)
- async def CharmInfo(self, url):
+ @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 BundleFacade(Type):
+ name = 'Bundle'
+ version = 2
+ schema = {'definitions': {'BundleChange': {'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'},
+ 'BundleChangesParams': {'additionalProperties': False,
+ 'properties': {'bundleURL': {'type': 'string'},
+ 'yaml': {'type': 'string'}},
+ 'required': ['yaml', 'bundleURL'],
+ 'type': 'object'},
+ 'BundleChangesResults': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'$ref': '#/definitions/BundleChange'},
+ 'type': 'array'},
+ 'errors': {'items': {'type': 'string'},
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'StringResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'string'}},
+ 'required': ['result'],
+ 'type': 'object'}},
+ 'properties': {'ExportBundle': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
+ 'type': 'object'},
+ 'GetChanges': {'properties': {'Params': {'$ref': '#/definitions/BundleChangesParams'},
+ 'Result': {'$ref': '#/definitions/BundleChangesResults'}},
+ 'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(StringResult)
+ async def ExportBundle(self):
+ '''
+
+ Returns -> typing.Union[_ForwardRef('Error'), str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Bundle',
+ request='ExportBundle',
+ version=2,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(BundleChangesResults)
+ async def GetChanges(self, yaml):
+ '''
+ yaml : str
+ Returns -> typing.Union[typing.Sequence[~BundleChange], typing.Sequence[str]]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Bundle',
+ request='GetChanges',
+ version=2,
+ params=_params)
+ _params['yaml'] = yaml
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class CharmRevisionUpdaterFacade(Type):
+ name = 'CharmRevisionUpdater'
+ 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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, '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=2,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class CharmsFacade(Type):
+ name = 'Charms'
+ version = 2
+ schema = {'definitions': {'CharmActionSpec': {'additionalProperties': False,
+ 'properties': {'description': {'type': 'string'},
+ 'params': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['description', 'params'],
+ 'type': 'object'},
+ 'CharmActions': {'additionalProperties': False,
+ 'properties': {'specs': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmActionSpec'}},
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'CharmDevice': {'additionalProperties': False,
+ 'properties': {'CountMax': {'type': 'integer'},
+ 'CountMin': {'type': 'integer'},
+ 'Description': {'type': 'string'},
+ 'Name': {'type': 'string'},
+ 'Type': {'type': 'string'}},
+ 'required': ['Name',
+ 'Description',
+ 'Type',
+ 'CountMin',
+ 'CountMax'],
+ 'type': 'object'},
+ 'CharmInfo': {'additionalProperties': False,
+ 'properties': {'actions': {'$ref': '#/definitions/CharmActions'},
+ 'config': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmOption'}},
+ 'type': 'object'},
+ 'lxd-profile': {'$ref': '#/definitions/CharmLXDProfile'},
+ 'meta': {'$ref': '#/definitions/CharmMeta'},
+ 'metrics': {'$ref': '#/definitions/CharmMetrics'},
+ 'revision': {'type': 'integer'},
+ 'url': {'type': 'string'}},
+ 'required': ['revision', 'url', 'config'],
+ 'type': 'object'},
+ 'CharmLXDProfile': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'description': {'type': 'string'},
+ 'devices': {'patternProperties': {'.*': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['config',
+ 'description',
+ 'devices'],
+ 'type': 'object'},
+ 'CharmMeta': {'additionalProperties': False,
+ 'properties': {'categories': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'description': {'type': 'string'},
+ 'devices': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmDevice'}},
+ 'type': 'object'},
+ 'extra-bindings': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'min-juju-version': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'payload-classes': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmPayloadClass'}},
+ 'type': 'object'},
+ 'peers': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmRelation'}},
+ 'type': 'object'},
+ 'provides': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmRelation'}},
+ 'type': 'object'},
+ 'requires': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmRelation'}},
+ 'type': 'object'},
+ 'resources': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmResourceMeta'}},
+ 'type': 'object'},
+ 'series': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'storage': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmStorage'}},
+ 'type': 'object'},
+ 'subordinate': {'type': 'boolean'},
+ 'summary': {'type': 'string'},
+ 'tags': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'terms': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['name',
+ 'summary',
+ 'description',
+ 'subordinate'],
+ 'type': 'object'},
+ 'CharmMetric': {'additionalProperties': False,
+ 'properties': {'description': {'type': 'string'},
+ 'type': {'type': 'string'}},
+ 'required': ['type', 'description'],
+ 'type': 'object'},
+ 'CharmMetrics': {'additionalProperties': False,
+ 'properties': {'metrics': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmMetric'}},
+ 'type': 'object'},
+ 'plan': {'$ref': '#/definitions/CharmPlan'}},
+ 'required': ['metrics', 'plan'],
+ 'type': 'object'},
+ 'CharmOption': {'additionalProperties': False,
+ 'properties': {'default': {'additionalProperties': True,
+ 'type': 'object'},
+ 'description': {'type': 'string'},
+ 'type': {'type': 'string'}},
+ 'required': ['type'],
+ 'type': 'object'},
+ 'CharmPayloadClass': {'additionalProperties': False,
+ 'properties': {'name': {'type': 'string'},
+ 'type': {'type': 'string'}},
+ 'required': ['name', 'type'],
+ 'type': 'object'},
+ 'CharmPlan': {'additionalProperties': False,
+ 'properties': {'required': {'type': 'boolean'}},
+ 'required': ['required'],
+ 'type': 'object'},
+ 'CharmRelation': {'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'},
+ 'CharmResourceMeta': {'additionalProperties': False,
+ 'properties': {'description': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'path': {'type': 'string'},
+ 'type': {'type': 'string'}},
+ 'required': ['name',
+ 'type',
+ 'path',
+ 'description'],
+ 'type': 'object'},
+ 'CharmStorage': {'additionalProperties': False,
+ 'properties': {'count-max': {'type': 'integer'},
+ 'count-min': {'type': 'integer'},
+ 'description': {'type': 'string'},
+ 'location': {'type': 'string'},
+ 'minimum-size': {'type': 'integer'},
+ 'name': {'type': 'string'},
+ 'properties': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'read-only': {'type': 'boolean'},
+ 'shared': {'type': 'boolean'},
+ 'type': {'type': 'string'}},
+ 'required': ['name',
+ 'description',
+ 'type',
+ 'shared',
+ 'read-only',
+ 'count-min',
+ 'count-max',
+ 'minimum-size'],
+ 'type': 'object'},
+ 'CharmURL': {'additionalProperties': False,
+ 'properties': {'url': {'type': 'string'}},
+ 'required': ['url'],
+ 'type': 'object'},
+ 'CharmsList': {'additionalProperties': False,
+ 'properties': {'names': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['names'],
+ 'type': 'object'},
+ 'CharmsListResult': {'additionalProperties': False,
+ 'properties': {'charm-urls': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['charm-urls'],
+ 'type': 'object'},
+ 'IsMeteredResult': {'additionalProperties': False,
+ 'properties': {'metered': {'type': 'boolean'}},
+ 'required': ['metered'],
+ 'type': 'object'}},
+ 'properties': {'CharmInfo': {'properties': {'Params': {'$ref': '#/definitions/CharmURL'},
+ 'Result': {'$ref': '#/definitions/CharmInfo'}},
+ 'type': 'object'},
+ 'IsMetered': {'properties': {'Params': {'$ref': '#/definitions/CharmURL'},
+ '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, url):
+ '''
+ url : str
+ Returns -> typing.Union[_ForwardRef('CharmActions'), typing.Mapping[str, ~CharmOption], _ForwardRef('CharmMeta'), _ForwardRef('CharmMetrics'), int, str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Charms',
+ request='CharmInfo',
+ version=2,
+ params=_params)
+ _params['url'] = url
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(IsMeteredResult)
+ async def IsMetered(self, url):
+ '''
+ url : str
+ Returns -> bool
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Charms',
+ request='IsMetered',
+ version=2,
+ params=_params)
+ _params['url'] = url
+ 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 CleanerFacade(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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ '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[str, _ForwardRef('Error')]
+ '''
+ # 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 ClientFacade(Type):
+ name = 'Client'
+ version = 2
+ 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'},
+ 'force': {'type': 'boolean'},
+ 'url': {'type': 'string'}},
+ 'required': ['url', 'channel', 'force'],
+ 'type': 'object'},
+ 'AddCharmWithAuthorization': {'additionalProperties': False,
+ 'properties': {'channel': {'type': 'string'},
+ 'force': {'type': 'boolean'},
+ 'macaroon': {'$ref': '#/definitions/Macaroon'},
+ 'url': {'type': 'string'}},
+ 'required': ['url',
+ 'channel',
+ 'macaroon',
+ 'force'],
+ 'type': 'object'},
+ 'AddMachineParams': {'additionalProperties': False,
+ 'properties': {'addresses': {'items': {'$ref': '#/definitions/Address'},
+ 'type': 'array'},
+ 'constraints': {'$ref': '#/definitions/Value'},
+ 'container-type': {'type': 'string'},
+ 'disks': {'items': {'$ref': '#/definitions/Constraints'},
+ 'type': 'array'},
+ 'hardware-characteristics': {'$ref': '#/definitions/HardwareCharacteristics'},
+ 'instance-id': {'type': 'string'},
+ 'jobs': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'nonce': {'type': 'string'},
+ 'parent-id': {'type': 'string'},
+ 'placement': {'$ref': '#/definitions/Placement'},
+ 'series': {'type': 'string'}},
+ 'required': ['series',
+ 'constraints',
+ 'jobs',
+ 'parent-id',
+ 'container-type',
+ 'instance-id',
+ 'nonce',
+ 'hardware-characteristics',
+ 'addresses'],
+ 'type': 'object'},
+ 'AddMachines': {'additionalProperties': False,
+ 'properties': {'params': {'items': {'$ref': '#/definitions/AddMachineParams'},
+ 'type': 'array'}},
+ 'required': ['params'],
+ 'type': 'object'},
+ 'AddMachinesResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'machine': {'type': 'string'}},
+ 'required': ['machine'],
+ 'type': 'object'},
+ 'AddMachinesResults': {'additionalProperties': False,
+ 'properties': {'machines': {'items': {'$ref': '#/definitions/AddMachinesResult'},
+ 'type': 'array'}},
+ 'required': ['machines'],
+ 'type': 'object'},
+ 'Address': {'additionalProperties': False,
+ 'properties': {'scope': {'type': 'string'},
+ 'space-name': {'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': {'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
+ 'type': 'object'},
+ 'ApplicationOfferStatus': {'additionalProperties': False,
+ 'properties': {'active-connected-count': {'type': 'integer'},
+ 'application-name': {'type': 'string'},
+ 'charm': {'type': 'string'},
+ 'endpoints': {'patternProperties': {'.*': {'$ref': '#/definitions/RemoteEndpoint'}},
+ 'type': 'object'},
+ 'err': {'additionalProperties': True,
+ 'type': 'object'},
+ 'offer-name': {'type': 'string'},
+ 'total-connected-count': {'type': 'integer'}},
+ 'required': ['offer-name',
+ 'application-name',
+ 'charm',
+ 'endpoints',
+ 'active-connected-count',
+ 'total-connected-count'],
+ 'type': 'object'},
+ 'ApplicationStatus': {'additionalProperties': False,
+ 'properties': {'can-upgrade-to': {'type': 'string'},
+ 'charm': {'type': 'string'},
+ 'charm-verion': {'type': 'string'},
+ 'endpoint-bindings': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'err': {'additionalProperties': True,
+ 'type': 'object'},
+ 'exposed': {'type': 'boolean'},
+ 'int': {'type': 'integer'},
+ 'life': {'type': 'string'},
+ 'meter-statuses': {'patternProperties': {'.*': {'$ref': '#/definitions/MeterStatus'}},
+ 'type': 'object'},
+ 'provider-id': {'type': 'string'},
+ 'public-address': {'type': 'string'},
+ 'relations': {'patternProperties': {'.*': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'series': {'type': 'string'},
+ 'status': {'$ref': '#/definitions/DetailedStatus'},
+ 'string': {'type': 'string'},
+ 'subordinate-to': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'units': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitStatus'}},
+ 'type': 'object'},
+ 'workload-version': {'type': 'string'}},
+ 'required': ['charm',
+ 'series',
+ 'exposed',
+ 'life',
+ 'relations',
+ 'can-upgrade-to',
+ 'subordinate-to',
+ 'units',
+ 'meter-statuses',
+ 'status',
+ 'workload-version',
+ 'charm-verion',
+ 'endpoint-bindings',
+ 'public-address'],
+ 'type': 'object'},
+ 'Binary': {'additionalProperties': False,
+ 'properties': {'Arch': {'type': 'string'},
+ 'Number': {'$ref': '#/definitions/Number'},
+ 'Series': {'type': 'string'}},
+ 'required': ['Number', 'Series', 'Arch'],
+ 'type': 'object'},
+ 'BundleChange': {'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'},
+ 'BundleChangesParams': {'additionalProperties': False,
+ 'properties': {'bundleURL': {'type': 'string'},
+ 'yaml': {'type': 'string'}},
+ 'required': ['yaml', 'bundleURL'],
+ 'type': 'object'},
+ 'BundleChangesResults': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'$ref': '#/definitions/BundleChange'},
+ 'type': 'array'},
+ 'errors': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'BytesResult': {'additionalProperties': False,
+ 'properties': {'result': {'items': {'type': 'integer'},
+ 'type': 'array'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'ConfigValue': {'additionalProperties': False,
+ 'properties': {'source': {'type': 'string'},
+ 'value': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'required': ['value', 'source'],
+ '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'},
+ 'machine-names': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['machine-names', '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'],
+ 'type': 'object'},
+ 'EndpointStatus': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'role': {'type': 'string'},
+ 'subordinate': {'type': 'boolean'}},
+ 'required': ['application',
+ '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', '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'FindToolsParams': {'additionalProperties': False,
+ 'properties': {'agentstream': {'type': 'string'},
+ 'arch': {'type': 'string'},
+ 'major': {'type': 'integer'},
+ 'minor': {'type': 'integer'},
+ 'number': {'$ref': '#/definitions/Number'},
+ 'series': {'type': 'string'}},
+ 'required': ['number',
+ 'major',
+ 'minor',
+ 'arch',
+ 'series',
+ 'agentstream'],
+ 'type': 'object'},
+ 'FindToolsResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'list': {'items': {'$ref': '#/definitions/Tools'},
+ 'type': 'array'}},
+ 'required': ['list'],
+ 'type': 'object'},
+ 'FullStatus': {'additionalProperties': False,
+ 'properties': {'applications': {'patternProperties': {'.*': {'$ref': '#/definitions/ApplicationStatus'}},
+ 'type': 'object'},
+ 'controller-timestamp': {'format': 'date-time',
+ 'type': 'string'},
+ 'machines': {'patternProperties': {'.*': {'$ref': '#/definitions/MachineStatus'}},
+ 'type': 'object'},
+ 'model': {'$ref': '#/definitions/ModelStatusInfo'},
+ 'offers': {'patternProperties': {'.*': {'$ref': '#/definitions/ApplicationOfferStatus'}},
+ 'type': 'object'},
+ 'relations': {'items': {'$ref': '#/definitions/RelationStatus'},
+ 'type': 'array'},
+ 'remote-applications': {'patternProperties': {'.*': {'$ref': '#/definitions/RemoteApplicationStatus'}},
+ 'type': 'object'}},
+ 'required': ['model',
+ 'machines',
+ 'applications',
+ 'remote-applications',
+ 'offers',
+ 'relations',
+ 'controller-timestamp'],
+ 'type': 'object'},
+ 'GetConstraintsResults': {'additionalProperties': False,
+ 'properties': {'constraints': {'$ref': '#/definitions/Value'}},
+ 'required': ['constraints'],
+ 'type': 'object'},
+ 'HardwareCharacteristics': {'additionalProperties': False,
+ 'properties': {'arch': {'type': 'string'},
+ 'availability-zone': {'type': 'string'},
+ 'cpu-cores': {'type': 'integer'},
+ 'cpu-power': {'type': 'integer'},
+ 'mem': {'type': 'integer'},
+ 'root-disk': {'type': 'integer'},
+ 'tags': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'History': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'statuses': {'items': {'$ref': '#/definitions/DetailedStatus'},
+ 'type': 'array'}},
+ 'required': ['statuses'],
+ 'type': 'object'},
+ 'HostPort': {'additionalProperties': False,
+ 'properties': {'Address': {'$ref': '#/definitions/Address'},
+ 'port': {'type': 'integer'}},
+ 'required': ['Address', 'port'],
+ 'type': 'object'},
+ 'LXDProfile': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'description': {'type': 'string'},
+ 'devices': {'patternProperties': {'.*': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['config',
+ 'description',
+ 'devices'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'MachineHardware': {'additionalProperties': False,
+ 'properties': {'arch': {'type': 'string'},
+ 'availability-zone': {'type': 'string'},
+ 'cores': {'type': 'integer'},
+ 'cpu-power': {'type': 'integer'},
+ 'mem': {'type': 'integer'},
+ 'root-disk': {'type': 'integer'},
+ 'tags': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'MachineStatus': {'additionalProperties': False,
+ 'properties': {'agent-status': {'$ref': '#/definitions/DetailedStatus'},
+ 'constraints': {'type': 'string'},
+ 'containers': {'patternProperties': {'.*': {'$ref': '#/definitions/MachineStatus'}},
+ 'type': 'object'},
+ 'dns-name': {'type': 'string'},
+ 'hardware': {'type': 'string'},
+ 'has-vote': {'type': 'boolean'},
+ 'id': {'type': 'string'},
+ 'instance-id': {'type': 'string'},
+ 'instance-status': {'$ref': '#/definitions/DetailedStatus'},
+ 'ip-addresses': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'jobs': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'lxd-profiles': {'patternProperties': {'.*': {'$ref': '#/definitions/LXDProfile'}},
+ 'type': 'object'},
+ 'network-interfaces': {'patternProperties': {'.*': {'$ref': '#/definitions/NetworkInterface'}},
+ 'type': 'object'},
+ 'series': {'type': 'string'},
+ 'wants-vote': {'type': 'boolean'}},
+ 'required': ['agent-status',
+ 'instance-status',
+ 'dns-name',
+ 'instance-id',
+ 'series',
+ 'id',
+ 'containers',
+ 'constraints',
+ 'hardware',
+ 'jobs',
+ 'has-vote',
+ 'wants-vote'],
+ 'type': 'object'},
+ 'MeterStatus': {'additionalProperties': False,
+ 'properties': {'color': {'type': 'string'},
+ 'message': {'type': 'string'}},
+ 'required': ['color', 'message'],
+ 'type': 'object'},
+ 'ModelConfigResults': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'$ref': '#/definitions/ConfigValue'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'ModelInfo': {'additionalProperties': False,
+ 'properties': {'agent-version': {'$ref': '#/definitions/Number'},
+ 'cloud-credential-tag': {'type': 'string'},
+ 'cloud-region': {'type': 'string'},
+ 'cloud-tag': {'type': 'string'},
+ 'controller-uuid': {'type': 'string'},
+ 'default-series': {'type': 'string'},
+ 'life': {'type': 'string'},
+ 'machines': {'items': {'$ref': '#/definitions/ModelMachineInfo'},
+ 'type': 'array'},
+ 'migration': {'$ref': '#/definitions/ModelMigrationStatus'},
+ 'name': {'type': 'string'},
+ 'owner-tag': {'type': 'string'},
+ 'provider-type': {'type': 'string'},
+ 'sla': {'$ref': '#/definitions/ModelSLAInfo'},
+ 'status': {'$ref': '#/definitions/EntityStatus'},
+ 'type': {'type': 'string'},
+ 'users': {'items': {'$ref': '#/definitions/ModelUserInfo'},
+ 'type': 'array'},
+ 'uuid': {'type': 'string'}},
+ 'required': ['name',
+ 'type',
+ 'uuid',
+ 'controller-uuid',
+ 'cloud-tag',
+ 'owner-tag',
+ 'life',
+ 'users',
+ 'machines',
+ 'sla',
+ 'agent-version'],
+ 'type': 'object'},
+ 'ModelMachineInfo': {'additionalProperties': False,
+ 'properties': {'hardware': {'$ref': '#/definitions/MachineHardware'},
+ 'has-vote': {'type': 'boolean'},
+ 'id': {'type': 'string'},
+ 'instance-id': {'type': 'string'},
+ 'message': {'type': 'string'},
+ 'status': {'type': 'string'},
+ 'wants-vote': {'type': 'boolean'}},
+ 'required': ['id'],
+ 'type': 'object'},
+ 'ModelMigrationStatus': {'additionalProperties': False,
+ 'properties': {'end': {'format': 'date-time',
+ 'type': 'string'},
+ 'start': {'format': 'date-time',
+ 'type': 'string'},
+ 'status': {'type': 'string'}},
+ 'required': ['status', 'start'],
+ 'type': 'object'},
+ 'ModelSLA': {'additionalProperties': False,
+ 'properties': {'ModelSLAInfo': {'$ref': '#/definitions/ModelSLAInfo'},
+ 'creds': {'items': {'type': 'integer'},
+ 'type': 'array'}},
+ 'required': ['ModelSLAInfo', 'creds'],
+ 'type': 'object'},
+ 'ModelSLAInfo': {'additionalProperties': False,
+ 'properties': {'level': {'type': 'string'},
+ 'owner': {'type': 'string'}},
+ 'required': ['level', 'owner'],
+ 'type': 'object'},
+ 'ModelSet': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'ModelStatusInfo': {'additionalProperties': False,
+ 'properties': {'available-version': {'type': 'string'},
+ 'cloud-tag': {'type': 'string'},
+ 'meter-status': {'$ref': '#/definitions/MeterStatus'},
+ 'model-status': {'$ref': '#/definitions/DetailedStatus'},
+ 'name': {'type': 'string'},
+ 'region': {'type': 'string'},
+ 'sla': {'type': 'string'},
+ 'type': {'type': 'string'},
+ 'version': {'type': 'string'}},
+ 'required': ['name',
+ 'type',
+ 'cloud-tag',
+ 'version',
+ 'available-version',
+ 'model-status',
+ 'meter-status',
+ 'sla'],
+ 'type': 'object'},
+ 'ModelUnset': {'additionalProperties': False,
+ 'properties': {'keys': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['keys'],
+ 'type': 'object'},
+ 'ModelUserInfo': {'additionalProperties': False,
+ 'properties': {'access': {'type': 'string'},
+ 'display-name': {'type': 'string'},
+ 'last-connection': {'format': 'date-time',
+ 'type': 'string'},
+ 'user': {'type': 'string'}},
+ 'required': ['user',
+ 'display-name',
+ 'last-connection',
+ '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'},
+ 'NetworkInterface': {'additionalProperties': False,
+ 'properties': {'dns-nameservers': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'gateway': {'type': 'string'},
+ 'ip-addresses': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'is-up': {'type': 'boolean'},
+ 'mac-address': {'type': 'string'},
+ 'space': {'type': 'string'}},
+ 'required': ['ip-addresses',
+ 'mac-address',
+ 'is-up'],
+ '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': {'private-address': {'type': 'string'}},
+ 'required': ['private-address'],
+ 'type': 'object'},
+ 'ProvisioningScriptParams': {'additionalProperties': False,
+ 'properties': {'data-dir': {'type': 'string'},
+ 'disable-package-commands': {'type': 'boolean'},
+ 'machine-id': {'type': 'string'},
+ 'nonce': {'type': 'string'}},
+ 'required': ['machine-id',
+ 'nonce',
+ 'data-dir',
+ 'disable-package-commands'],
+ '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': {'public-address': {'type': 'string'}},
+ 'required': ['public-address'],
+ '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'},
+ 'status': {'$ref': '#/definitions/DetailedStatus'}},
+ 'required': ['id',
+ 'key',
+ 'interface',
+ 'scope',
+ 'endpoints',
+ 'status'],
+ 'type': 'object'},
+ 'RemoteApplicationStatus': {'additionalProperties': False,
+ 'properties': {'endpoints': {'items': {'$ref': '#/definitions/RemoteEndpoint'},
+ 'type': 'array'},
+ 'err': {'additionalProperties': True,
+ 'type': 'object'},
+ 'life': {'type': 'string'},
+ 'offer-name': {'type': 'string'},
+ 'offer-url': {'type': 'string'},
+ 'relations': {'patternProperties': {'.*': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'status': {'$ref': '#/definitions/DetailedStatus'}},
+ 'required': ['offer-url',
+ 'offer-name',
+ 'endpoints',
+ 'life',
+ 'relations',
+ 'status'],
+ 'type': 'object'},
+ 'RemoteEndpoint': {'additionalProperties': False,
+ 'properties': {'interface': {'type': 'string'},
+ 'limit': {'type': 'integer'},
+ 'name': {'type': 'string'},
+ 'role': {'type': 'string'}},
+ 'required': ['name',
+ 'role',
+ 'interface',
+ 'limit'],
+ 'type': 'object'},
+ 'ResolveCharmResult': {'additionalProperties': False,
+ 'properties': {'error': {'type': 'string'},
+ 'url': {'type': 'string'}},
+ 'type': 'object'},
+ 'ResolveCharmResults': {'additionalProperties': False,
+ 'properties': {'urls': {'items': {'$ref': '#/definitions/ResolveCharmResult'},
+ 'type': 'array'}},
+ 'required': ['urls'],
+ 'type': 'object'},
+ 'ResolveCharms': {'additionalProperties': False,
+ 'properties': {'references': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['references'],
+ 'type': 'object'},
+ 'Resolved': {'additionalProperties': False,
+ 'properties': {'retry': {'type': 'boolean'},
+ 'unit-name': {'type': 'string'}},
+ 'required': ['unit-name', 'retry'],
+ 'type': 'object'},
+ 'SetConstraints': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'},
+ 'constraints': {'$ref': '#/definitions/Value'}},
+ 'required': ['application', 'constraints'],
+ 'type': 'object'},
+ 'SetModelAgentVersion': {'additionalProperties': False,
+ 'properties': {'force': {'type': 'boolean'},
+ 'version': {'$ref': '#/definitions/Number'}},
+ 'required': ['version'],
+ 'type': 'object'},
+ 'StatusHistoryFilter': {'additionalProperties': False,
+ 'properties': {'date': {'format': 'date-time',
+ 'type': 'string'},
+ 'delta': {'type': 'integer'},
+ 'exclude': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'size': {'type': 'integer'}},
+ 'required': ['size',
+ 'date',
+ 'delta',
+ 'exclude'],
+ 'type': 'object'},
+ 'StatusHistoryRequest': {'additionalProperties': False,
+ 'properties': {'filter': {'$ref': '#/definitions/StatusHistoryFilter'},
+ 'historyKind': {'type': 'string'},
+ 'size': {'type': 'integer'},
+ 'tag': {'type': 'string'}},
+ 'required': ['historyKind',
+ 'size',
+ 'filter',
+ 'tag'],
+ 'type': 'object'},
+ 'StatusHistoryRequests': {'additionalProperties': False,
+ 'properties': {'requests': {'items': {'$ref': '#/definitions/StatusHistoryRequest'},
+ 'type': 'array'}},
+ 'required': ['requests'],
+ 'type': 'object'},
+ 'StatusHistoryResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'history': {'$ref': '#/definitions/History'}},
+ 'required': ['history'],
+ 'type': 'object'},
+ 'StatusHistoryResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StatusHistoryResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'StatusParams': {'additionalProperties': False,
+ 'properties': {'patterns': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['patterns'],
+ 'type': 'object'},
+ 'StringResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'string'}},
+ 'required': ['result'],
+ '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'},
+ 'UnitStatus': {'additionalProperties': False,
+ 'properties': {'address': {'type': 'string'},
+ 'agent-status': {'$ref': '#/definitions/DetailedStatus'},
+ 'charm': {'type': 'string'},
+ 'leader': {'type': 'boolean'},
+ 'machine': {'type': 'string'},
+ 'opened-ports': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'provider-id': {'type': 'string'},
+ 'public-address': {'type': 'string'},
+ 'subordinates': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitStatus'}},
+ 'type': 'object'},
+ 'workload-status': {'$ref': '#/definitions/DetailedStatus'},
+ 'workload-version': {'type': 'string'}},
+ 'required': ['agent-status',
+ 'workload-status',
+ 'workload-version',
+ 'machine',
+ 'opened-ports',
+ 'public-address',
+ 'charm',
+ 'subordinates'],
+ 'type': 'object'},
+ 'Value': {'additionalProperties': False,
+ 'properties': {'arch': {'type': 'string'},
+ 'container': {'type': 'string'},
+ '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'},
+ 'zones': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ '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'},
+ 'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}},
+ 'type': 'object'},
+ 'DestroyMachines': {'properties': {'Params': {'$ref': '#/definitions/DestroyMachines'}},
+ '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/BundleChangesParams'},
+ 'Result': {'$ref': '#/definitions/BundleChangesResults'}},
+ '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'},
+ 'SLALevel': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
+ 'type': 'object'},
+ 'SetModelAgentVersion': {'properties': {'Params': {'$ref': '#/definitions/SetModelAgentVersion'}},
+ 'type': 'object'},
+ 'SetModelConstraints': {'properties': {'Params': {'$ref': '#/definitions/SetConstraints'}},
+ 'type': 'object'},
+ 'SetSLALevel': {'properties': {'Params': {'$ref': '#/definitions/ModelSLA'}},
+ 'type': 'object'},
+ 'StatusHistory': {'properties': {'Params': {'$ref': '#/definitions/StatusHistoryRequests'},
+ '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=2,
+ 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=2,
+ 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=2,
+ params=_params)
+ _params['channel'] = channel
+ _params['url'] = url
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def AddCharmWithAuthorization(self, channel, macaroon, url):
+ '''
+ channel : str
+ macaroon : Macaroon
+ url : str
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='AddCharmWithAuthorization',
+ version=2,
+ params=_params)
+ _params['channel'] = channel
+ _params['macaroon'] = macaroon
+ _params['url'] = url
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(AddMachinesResults)
+ async def AddMachines(self, params):
+ '''
+ params : typing.Sequence[~AddMachineParams]
+ Returns -> typing.Sequence[~AddMachinesResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='AddMachines',
+ version=2,
+ params=_params)
+ _params['params'] = params
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(AddMachinesResults)
+ async def AddMachinesV2(self, params):
+ '''
+ params : typing.Sequence[~AddMachineParams]
+ Returns -> typing.Sequence[~AddMachinesResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='AddMachinesV2',
+ version=2,
+ params=_params)
+ _params['params'] = params
+ 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=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='Client',
+ request='CACert',
+ version=2,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def DestroyMachines(self, force, machine_names):
+ '''
+ force : bool
+ machine_names : typing.Sequence[str]
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='DestroyMachines',
+ version=2,
+ params=_params)
+ _params['force'] = force
+ _params['machine-names'] = machine_names
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(FindToolsResult)
+ async def FindTools(self, arch, major, minor, number, series):
+ '''
+ arch : str
+ major : int
+ minor : 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=2,
+ params=_params)
+ _params['arch'] = arch
+ _params['major'] = major
+ _params['minor'] = minor
+ _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.Mapping[str, ~ApplicationStatus], str, typing.Mapping[str, ~MachineStatus], _ForwardRef('ModelStatusInfo'), typing.Mapping[str, ~ApplicationOfferStatus], typing.Sequence[~RelationStatus], typing.Mapping[str, ~RemoteApplicationStatus]]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='FullStatus',
+ version=2,
+ params=_params)
+ _params['patterns'] = patterns
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(BundleChangesResults)
+ async def GetBundleChanges(self, yaml):
+ '''
+ yaml : str
+ Returns -> typing.Union[typing.Sequence[~BundleChange], typing.Sequence[str]]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='GetBundleChanges',
+ version=2,
+ 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=2,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(AddMachinesResults)
+ async def InjectMachines(self, params):
+ '''
+ params : typing.Sequence[~AddMachineParams]
+ Returns -> typing.Sequence[~AddMachinesResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='InjectMachines',
+ version=2,
+ params=_params)
+ _params['params'] = params
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ModelConfigResults)
+ async def ModelGet(self):
+ '''
+
+ Returns -> typing.Mapping[str, ~ConfigValue]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='ModelGet',
+ version=2,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ModelInfo)
+ async def ModelInfo(self):
+ '''
+
+ Returns -> typing.Union[_ForwardRef('Number'), str, typing.Sequence[~ModelMachineInfo], _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence[~ModelUserInfo]]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='ModelInfo',
+ version=2,
+ 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=2,
+ 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=2,
+ 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=2,
+ 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=2,
+ params=_params)
+ _params['target'] = target
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ProvisioningScriptResult)
+ async def ProvisioningScript(self, data_dir, disable_package_commands, machine_id, nonce):
+ '''
+ data_dir : str
+ disable_package_commands : bool
+ machine_id : str
+ nonce : str
+ Returns -> str
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='ProvisioningScript',
+ version=2,
+ params=_params)
+ _params['data-dir'] = data_dir
+ _params['disable-package-commands'] = disable_package_commands
+ _params['machine-id'] = machine_id
+ _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=2,
+ params=_params)
+ _params['target'] = target
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ResolveCharmResults)
+ async def ResolveCharms(self, references):
+ '''
+ references : typing.Sequence[str]
+ Returns -> typing.Sequence[~ResolveCharmResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='ResolveCharms',
+ version=2,
+ params=_params)
+ _params['references'] = references
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Resolved(self, retry, unit_name):
+ '''
+ retry : bool
+ unit_name : str
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='Resolved',
+ version=2,
+ params=_params)
+ _params['retry'] = retry
+ _params['unit-name'] = unit_name
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def RetryProvisioning(self, entities):
'''
- url : str
- Returns -> typing.Union[_ForwardRef('CharmActions'), typing.Mapping<~KT, +VT_co>[str, ~CharmOption]<~CharmOption>, _ForwardRef('CharmMeta'), _ForwardRef('CharmMetrics'), int, str]
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Charms', request='CharmInfo', version=2, params=_params)
- _params['url'] = url
+ msg = dict(type='Client',
+ request='RetryProvisioning',
+ version=2,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(IsMeteredResult)
- async def IsMetered(self, url):
+ @ReturnMapping(StringResult)
+ async def SLALevel(self):
'''
- url : str
- Returns -> bool
+
+ Returns -> typing.Union[_ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Charms', request='IsMetered', version=2, params=_params)
- _params['url'] = url
+ msg = dict(type='Client',
+ request='SLALevel',
+ version=2,
+ params=_params)
+
reply = await self.rpc(msg)
return reply
- @ReturnMapping(CharmsListResult)
- async def List(self, names):
+ @ReturnMapping(None)
+ async def SetModelAgentVersion(self, version):
'''
- names : typing.Sequence<+T_co>[str]
- Returns -> typing.Sequence<+T_co>[str]
+ version : Number
+ Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Charms', request='List', version=2, params=_params)
- _params['names'] = names
+ msg = dict(type='Client',
+ request='SetModelAgentVersion',
+ version=2,
+ params=_params)
+ _params['version'] = version
reply = await self.rpc(msg)
return reply
-class CleanerFacade(Type):
- name = 'Cleaner'
+ @ReturnMapping(None)
+ async def SetModelConstraints(self, application, constraints):
+ '''
+ application : str
+ constraints : Value
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='SetModelConstraints',
+ version=2,
+ params=_params)
+ _params['application'] = application
+ _params['constraints'] = constraints
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def SetSLALevel(self, creds, level):
+ '''
+ creds : typing.Sequence[int]
+ level : str
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='SetSLALevel',
+ version=2,
+ params=_params)
+ _params['creds'] = creds
+ _params['level'] = level
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StatusHistoryResults)
+ async def StatusHistory(self, requests):
+ '''
+ requests : typing.Sequence[~StatusHistoryRequest]
+ Returns -> typing.Sequence[~StatusHistoryResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Client',
+ request='StatusHistory',
+ version=2,
+ params=_params)
+ _params['requests'] = requests
+ 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=2,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class CredentialValidatorFacade(Type):
+ name = 'CredentialValidator'
version = 2
- schema = {'definitions': {'Error': {'additionalProperties': False,
+ schema = {'definitions': {'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'}},
'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
'macaroon-path': {'type': 'string'}},
'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'InvalidateCredentialArg': {'additionalProperties': False,
+ 'properties': {'reason': {'type': 'string'}},
+ 'type': 'object'},
'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'ModelCredential': {'additionalProperties': False,
+ 'properties': {'credential-tag': {'type': 'string'},
+ 'exists': {'type': 'boolean'},
+ 'model-tag': {'type': 'string'},
+ 'valid': {'type': 'boolean'}},
+ 'required': ['model-tag',
+ 'credential-tag'],
+ 'type': 'object'},
'NotifyWatchResult': {'additionalProperties': False,
'properties': {'NotifyWatcherId': {'type': 'string'},
'error': {'$ref': '#/definitions/Error'}},
'required': ['NotifyWatcherId'],
'type': 'object'}},
- 'properties': {'Cleanup': {'type': 'object'},
- 'WatchCleanups': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
- 'type': 'object'}},
+ 'properties': {'InvalidateModelCredential': {'properties': {'Params': {'$ref': '#/definitions/InvalidateCredentialArg'},
+ 'Result': {'$ref': '#/definitions/ErrorResult'}},
+ 'type': 'object'},
+ 'ModelCredential': {'properties': {'Result': {'$ref': '#/definitions/ModelCredential'}},
+ 'type': 'object'},
+ 'WatchCredential': {'properties': {'Params': {'$ref': '#/definitions/Entity'},
+ 'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
+ 'type': 'object'},
+ 'WatchModelCredential': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
+ 'type': 'object'}},
'type': 'object'}
- @ReturnMapping(None)
- async def Cleanup(self):
+ @ReturnMapping(ErrorResult)
+ async def InvalidateModelCredential(self, reason):
+ '''
+ reason : str
+ Returns -> Error
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CredentialValidator',
+ request='InvalidateModelCredential',
+ version=2,
+ params=_params)
+ _params['reason'] = reason
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ModelCredential)
+ async def ModelCredential(self):
'''
- Returns -> None
+ Returns -> typing.Union[str, bool]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Cleaner', request='Cleanup', version=2, params=_params)
+ msg = dict(type='CredentialValidator',
+ request='ModelCredential',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResult)
- async def WatchCleanups(self):
+ async def WatchCredential(self, tag):
+ '''
+ tag : str
+ Returns -> typing.Union[str, _ForwardRef('Error')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='CredentialValidator',
+ request='WatchCredential',
+ version=2,
+ params=_params)
+ _params['tag'] = tag
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NotifyWatchResult)
+ async def WatchModelCredential(self):
'''
Returns -> typing.Union[str, _ForwardRef('Error')]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Cleaner', request='WatchCleanups', version=2, params=_params)
+ msg = dict(type='CredentialValidator',
+ request='WatchModelCredential',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def AddSubnets(self, subnets):
'''
- subnets : typing.Sequence<+T_co>[~AddSubnetParams]<~AddSubnetParams>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ 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)
+ 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<+T_co>[~CreateSpaceParams]<~CreateSpaceParams>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ 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)
+ msg = dict(type='DiscoverSpaces',
+ request='CreateSpaces',
+ version=2,
+ params=_params)
_params['spaces'] = spaces
reply = await self.rpc(msg)
return reply
async def ListSpaces(self):
'''
- Returns -> typing.Sequence<+T_co>[~ProviderSpace]<~ProviderSpace>
+ Returns -> typing.Sequence[~ProviderSpace]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='DiscoverSpaces', request='ListSpaces', version=2, params=_params)
+ msg = dict(type='DiscoverSpaces',
+ request='ListSpaces',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
space_tag : str
zone : str
- Returns -> typing.Sequence<+T_co>[~Subnet]<~Subnet>
+ Returns -> typing.Sequence[~Subnet]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='DiscoverSpaces', request='ListSubnets', version=2, params=_params)
+ msg = dict(type='DiscoverSpaces',
+ request='ListSubnets',
+ version=2,
+ params=_params)
_params['space-tag'] = space_tag
_params['zone'] = zone
reply = await self.rpc(msg)
async def ModelConfig(self):
'''
- Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ Returns -> typing.Mapping[str, typing.Any]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='DiscoverSpaces', request='ModelConfig', version=2, params=_params)
+ msg = dict(type='DiscoverSpaces',
+ request='ModelConfig',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetMachineBlockDevices(self, machine_block_devices):
'''
- machine_block_devices : typing.Sequence<+T_co>[~MachineBlockDevices]<~MachineBlockDevices>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ machine_block_devices : 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)
+ msg = dict(type='DiskManager',
+ request='SetMachineBlockDevices',
+ version=2,
+ params=_params)
_params['machine-block-devices'] = machine_block_devices
reply = await self.rpc(msg)
return reply
async def Next(self):
'''
- Returns -> typing.Union[typing.Sequence<+T_co>[str], _ForwardRef('Error')]
+ Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='EntityWatcher', request='Next', version=2, params=_params)
+ msg = dict(type='EntityWatcher',
+ request='Next',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='EntityWatcher', request='Stop', version=2, params=_params)
+ msg = dict(type='EntityWatcher',
+ request='Stop',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
async def Next(self):
'''
- Returns -> typing.Union[typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId>, _ForwardRef('Error')]
+ Returns -> typing.Union[typing.Sequence[~MachineStorageId], _ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='FilesystemAttachmentsWatcher', request='Next', version=2, params=_params)
+ msg = dict(type='FilesystemAttachmentsWatcher',
+ request='Next',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='FilesystemAttachmentsWatcher', request='Stop', version=2, params=_params)
+ msg = dict(type='FilesystemAttachmentsWatcher',
+ request='Stop',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
'Macaroon': {'additionalProperties': False, '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,
'type': 'array'},
'tags': {'items': {'type': 'string'},
'type': 'array'},
- 'virt-type': {'type': 'string'}},
+ 'virt-type': {'type': 'string'},
+ 'zones': {'items': {'type': 'string'},
+ 'type': 'array'}},
'type': 'object'}},
'properties': {'EnableHA': {'properties': {'Params': {'$ref': '#/definitions/ControllersSpecs'},
'Result': {'$ref': '#/definitions/ControllersChangeResults'}},
@ReturnMapping(ControllersChangeResults)
async def EnableHA(self, specs):
'''
- specs : typing.Sequence<+T_co>[~ControllersSpec]<~ControllersSpec>
- Returns -> typing.Sequence<+T_co>[~ControllersChangeResult]<~ControllersChangeResult>
+ 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)
+ 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<+T_co>[~Member]<~Member>
+ members : typing.Sequence[~Member]
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='HighAvailability', request='ResumeHAReplicationAfterUpgrade', version=2, params=_params)
+ msg = dict(type='HighAvailability',
+ request='ResumeHAReplicationAfterUpgrade',
+ version=2,
+ params=_params)
_params['members'] = members
reply = await self.rpc(msg)
return reply
async def StopHAReplicationForUpgrade(self, target):
'''
target : MongoVersion
- Returns -> typing.Union[_ForwardRef('HAMember'), typing.Sequence<+T_co>[~Member]<~Member>]
+ Returns -> typing.Union[typing.Sequence[~HAMember], _ForwardRef('HAMember'), typing.Sequence[~Member]]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='HighAvailability', request='StopHAReplicationForUpgrade', version=2, params=_params)
+ msg = dict(type='HighAvailability',
+ request='StopHAReplicationForUpgrade',
+ version=2,
+ params=_params)
_params['target'] = target
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def DeleteImages(self, images):
'''
- images : typing.Sequence<+T_co>[~ImageSpec]<~ImageSpec>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ 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)
+ 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<+T_co>[~ImageSpec]<~ImageSpec>
- Returns -> typing.Sequence<+T_co>[~ImageMetadata]<~ImageMetadata>
+ 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)
+ msg = dict(type='ImageManager',
+ request='ListImages',
+ version=2,
+ params=_params)
_params['images'] = images
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def Delete(self, image_ids):
'''
- image_ids : typing.Sequence<+T_co>[str]
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ 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)
+ 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<+T_co>[str]
+ arches : typing.Sequence[str]
region : str
root_storage_type : str
- series : typing.Sequence<+T_co>[str]
+ series : typing.Sequence[str]
stream : str
virt_type : str
- Returns -> typing.Sequence<+T_co>[~CloudImageMetadata]<~CloudImageMetadata>
+ Returns -> typing.Sequence[~CloudImageMetadata]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ImageMetadata', request='List', version=2, params=_params)
+ msg = dict(type='ImageMetadata',
+ request='List',
+ version=2,
+ params=_params)
_params['arches'] = arches
_params['region'] = region
_params['root-storage-type'] = root_storage_type
@ReturnMapping(ErrorResults)
async def Save(self, metadata):
'''
- metadata : typing.Sequence<+T_co>[~CloudImageMetadataList]<~CloudImageMetadataList>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ 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)
+ msg = dict(type='ImageMetadata',
+ request='Save',
+ version=2,
+ params=_params)
_params['metadata'] = metadata
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ImageMetadata', request='UpdateFromPublishedImages', version=2, params=_params)
+ msg = dict(type='ImageMetadata',
+ request='UpdateFromPublishedImages',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='LeadershipService', request='BlockUntilLeadershipReleased', version=2, params=_params)
+ 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<+T_co>[~ClaimLeadershipParams]<~ClaimLeadershipParams>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ 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)
+ msg = dict(type='LeadershipService',
+ request='ClaimLeadership',
+ version=2,
+ params=_params)
_params['params'] = params
reply = await self.rpc(msg)
return reply
@ReturnMapping(AddMachinesResults)
async def AddMachines(self, params):
'''
- params : typing.Sequence<+T_co>[~AddMachineParams]<~AddMachineParams>
- Returns -> typing.Sequence<+T_co>[~AddMachinesResult]<~AddMachinesResult>
+ params : 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)
+ msg = dict(type='MachineManager',
+ request='AddMachines',
+ version=2,
+ params=_params)
_params['params'] = params
reply = await self.rpc(msg)
return reply
@ReturnMapping(InstanceTypesResults)
async def InstanceTypes(self, constraints):
'''
- constraints : typing.Sequence<+T_co>[~ModelInstanceTypesConstraint]<~ModelInstanceTypesConstraint>
- Returns -> typing.Sequence<+T_co>[~InstanceTypesResult]<~InstanceTypesResult>
+ constraints : typing.Sequence[~ModelInstanceTypesConstraint]
+ Returns -> typing.Sequence[~InstanceTypesResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MachineManager', request='InstanceTypes', version=2, params=_params)
+ msg = dict(type='MachineManager',
+ request='InstanceTypes',
+ version=2,
+ params=_params)
_params['constraints'] = constraints
reply = await self.rpc(msg)
return reply
'Macaroon': {'additionalProperties': False, 'type': 'object'},
'Metric': {'additionalProperties': False,
'properties': {'key': {'type': 'string'},
+ 'labels': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
'time': {'format': 'date-time',
'type': 'string'},
'value': {'type': 'string'}},
@ReturnMapping(ErrorResults)
async def AddMetricBatches(self, batches):
'''
- batches : typing.Sequence<+T_co>[~MetricBatchParam]<~MetricBatchParam>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ 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)
+ msg = dict(type='MetricsAdder',
+ request='AddMetricBatches',
+ version=2,
+ params=_params)
_params['batches'] = batches
reply = await self.rpc(msg)
return reply
'properties': {'code': {'type': 'string'},
'info': {'type': 'string'},
'tag': {'type': 'string'}},
- 'required': ['tag', 'code', 'info'],
+ 'required': ['tag', 'code'],
'type': 'object'},
'MeterStatusParams': {'additionalProperties': False,
'properties': {'statues': {'items': {'$ref': '#/definitions/MeterStatusParam'},
'type': 'object'},
'MetricResult': {'additionalProperties': False,
'properties': {'key': {'type': 'string'},
+ 'labels': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
'time': {'format': 'date-time',
'type': 'string'},
'unit': {'type': 'string'},
'value': {'type': 'string'}},
- 'required': ['time', 'key', 'value', 'unit'],
+ 'required': ['time',
+ 'key',
+ 'value',
+ 'unit',
+ 'labels'],
'type': 'object'},
'MetricResults': {'additionalProperties': False,
'properties': {'results': {'items': {'$ref': '#/definitions/EntityMetrics'},
@ReturnMapping(MetricResults)
async def GetMetrics(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~EntityMetrics]<~EntityMetrics>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~EntityMetrics]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MetricsDebug', request='GetMetrics', version=2, params=_params)
+ msg = dict(type='MetricsDebug',
+ request='GetMetrics',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetMeterStatus(self, statues):
'''
- statues : typing.Sequence<+T_co>[~MeterStatusParam]<~MeterStatusParam>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ statues : typing.Sequence[~MeterStatusParam]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MetricsDebug', request='SetMeterStatus', version=2, params=_params)
+ msg = dict(type='MetricsDebug',
+ request='SetMeterStatus',
+ version=2,
+ params=_params)
_params['statues'] = statues
reply = await self.rpc(msg)
return reply
+class ModelConfigFacade(Type):
+ name = 'ModelConfig'
+ version = 2
+ schema = {'definitions': {'ConfigValue': {'additionalProperties': False,
+ 'properties': {'source': {'type': 'string'},
+ 'value': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'required': ['value', 'source'],
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'ModelConfigResults': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'$ref': '#/definitions/ConfigValue'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'ModelSLA': {'additionalProperties': False,
+ 'properties': {'ModelSLAInfo': {'$ref': '#/definitions/ModelSLAInfo'},
+ 'creds': {'items': {'type': 'integer'},
+ 'type': 'array'}},
+ 'required': ['ModelSLAInfo', 'creds'],
+ 'type': 'object'},
+ 'ModelSLAInfo': {'additionalProperties': False,
+ 'properties': {'level': {'type': 'string'},
+ 'owner': {'type': 'string'}},
+ 'required': ['level', 'owner'],
+ 'type': 'object'},
+ 'ModelSequencesResult': {'additionalProperties': False,
+ 'properties': {'sequences': {'patternProperties': {'.*': {'type': 'integer'}},
+ 'type': 'object'}},
+ 'required': ['sequences'],
+ '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'},
+ 'StringResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'string'}},
+ 'required': ['result'],
+ 'type': 'object'}},
+ 'properties': {'ModelGet': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResults'}},
+ 'type': 'object'},
+ 'ModelSet': {'properties': {'Params': {'$ref': '#/definitions/ModelSet'}},
+ 'type': 'object'},
+ 'ModelUnset': {'properties': {'Params': {'$ref': '#/definitions/ModelUnset'}},
+ 'type': 'object'},
+ 'SLALevel': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
+ 'type': 'object'},
+ 'Sequences': {'properties': {'Result': {'$ref': '#/definitions/ModelSequencesResult'}},
+ 'type': 'object'},
+ 'SetSLALevel': {'properties': {'Params': {'$ref': '#/definitions/ModelSLA'}},
+ 'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(ModelConfigResults)
+ async def ModelGet(self):
+ '''
+
+ Returns -> typing.Mapping[str, ~ConfigValue]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ModelConfig',
+ request='ModelGet',
+ version=2,
+ 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='ModelConfig',
+ request='ModelSet',
+ version=2,
+ 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='ModelConfig',
+ request='ModelUnset',
+ version=2,
+ params=_params)
+ _params['keys'] = keys
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringResult)
+ async def SLALevel(self):
+ '''
+
+ Returns -> typing.Union[_ForwardRef('Error'), str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ModelConfig',
+ request='SLALevel',
+ version=2,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ModelSequencesResult)
+ async def Sequences(self):
+ '''
+
+ Returns -> typing.Mapping[str, int]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ModelConfig',
+ request='Sequences',
+ version=2,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def SetSLALevel(self, creds, level):
+ '''
+ creds : typing.Sequence[int]
+ level : str
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ModelConfig',
+ request='SetSLALevel',
+ version=2,
+ params=_params)
+ _params['creds'] = creds
+ _params['level'] = level
+ reply = await self.rpc(msg)
+ return reply
+
+
+
class ModelManagerFacade(Type):
name = 'ModelManager'
version = 2
async def CreateModel(self, cloud_tag, config, credential, name, owner_tag, region):
'''
cloud_tag : str
- config : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ config : typing.Mapping[str, typing.Any]
credential : str
name : str
owner_tag : str
region : str
- Returns -> typing.Union[_ForwardRef('Number'), _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence<+T_co>[~ModelUserInfo]<~ModelUserInfo>]
+ Returns -> typing.Union[_ForwardRef('Number'), str, typing.Sequence[~ModelMachineInfo], _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence[~ModelUserInfo]]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='CreateModel', version=2, params=_params)
+ msg = dict(type='ModelManager',
+ request='CreateModel',
+ version=2,
+ params=_params)
_params['cloud-tag'] = cloud_tag
_params['config'] = config
_params['credential'] = credential
@ReturnMapping(ErrorResults)
async def DestroyModels(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='DestroyModels', version=2, params=_params)
+ msg = dict(type='ModelManager',
+ request='DestroyModels',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(MapResults)
async def DumpModels(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~MapResult]<~MapResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~MapResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='DumpModels', version=2, params=_params)
+ msg = dict(type='ModelManager',
+ request='DumpModels',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(MapResults)
async def DumpModelsDB(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~MapResult]<~MapResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~MapResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='DumpModelsDB', version=2, params=_params)
+ msg = dict(type='ModelManager',
+ request='DumpModelsDB',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
async def ListModels(self, tag):
'''
tag : str
- Returns -> typing.Sequence<+T_co>[~UserModel]<~UserModel>
+ Returns -> typing.Sequence[~UserModel]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='ListModels', version=2, params=_params)
+ msg = dict(type='ModelManager',
+ request='ListModels',
+ version=2,
+ params=_params)
_params['tag'] = tag
reply = await self.rpc(msg)
return reply
async def ModelDefaults(self):
'''
- Returns -> typing.Mapping<~KT, +VT_co>[str, ~ModelDefaults]<~ModelDefaults>
+ Returns -> typing.Mapping[str, ~ModelDefaults]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='ModelDefaults', version=2, params=_params)
+ msg = dict(type='ModelManager',
+ request='ModelDefaults',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(ModelInfoResults)
async def ModelInfo(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ModelInfoResult]<~ModelInfoResult>
+ 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)
+ msg = dict(type='ModelManager',
+ request='ModelInfo',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ModelStatusResults)
async def ModelStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ModelStatus]<~ModelStatus>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ModelStatus]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ModelManager',
+ request='ModelStatus',
+ 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
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetModelDefaults(self, config):
+ '''
+ config : typing.Sequence[~ModelDefaultValues]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='ModelStatus', version=2, params=_params)
- _params['entities'] = entities
+ msg = dict(type='ModelManager',
+ request='SetModelDefaults',
+ version=2,
+ params=_params)
+ _params['config'] = config
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
- async def ModifyModelAccess(self, changes):
+ async def UnsetModelDefaults(self, keys):
'''
- changes : typing.Sequence<+T_co>[~ModifyModelAccess]<~ModifyModelAccess>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ keys : typing.Sequence[~ModelUnsetKeys]
+ 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
+ msg = dict(type='ModelManager',
+ request='UnsetModelDefaults',
+ version=2,
+ params=_params)
+ _params['keys'] = keys
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ErrorResults)
- async def SetModelDefaults(self, config):
+class ProxyUpdaterFacade(Type):
+ name = 'ProxyUpdater'
+ 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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ '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'},
+ 'no-proxy': {'type': 'string'}},
+ 'required': ['http',
+ 'https',
+ 'ftp',
+ 'no-proxy'],
+ 'type': 'object'},
+ 'ProxyConfigResult': {'additionalProperties': False,
+ 'properties': {'apt-proxy-settings': {'$ref': '#/definitions/ProxyConfig'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'juju-proxy-settings': {'$ref': '#/definitions/ProxyConfig'},
+ 'legacy-proxy-settings': {'$ref': '#/definitions/ProxyConfig'},
+ 'snap-proxy-settings': {'$ref': '#/definitions/ProxyConfig'},
+ 'snap-store-assertions': {'type': 'string'},
+ 'snap-store-id': {'type': 'string'}},
+ 'required': ['legacy-proxy-settings',
+ 'juju-proxy-settings'],
+ 'type': 'object'},
+ 'ProxyConfigResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ProxyConfigResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ '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):
'''
- config : typing.Sequence<+T_co>[~ModelDefaultValues]<~ModelDefaultValues>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ProxyConfigResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='SetModelDefaults', version=2, params=_params)
- _params['config'] = config
+ msg = dict(type='ProxyUpdater',
+ request='ProxyConfig',
+ version=2,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ErrorResults)
- async def UnsetModelDefaults(self, keys):
+ @ReturnMapping(NotifyWatchResults)
+ async def WatchForProxyConfigAndAPIHostPortChanges(self, entities):
'''
- keys : typing.Sequence<+T_co>[~ModelUnsetKeys]<~ModelUnsetKeys>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='UnsetModelDefaults', version=2, params=_params)
- _params['keys'] = keys
+ msg = dict(type='ProxyUpdater',
+ request='WatchForProxyConfigAndAPIHostPortChanges',
+ version=2,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def ClearReboot(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ 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)
+ 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<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~RebootActionResult]<~RebootActionResult>
+ 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)
+ 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<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ 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)
+ msg = dict(type='Reboot',
+ request='RequestReboot',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Reboot', request='WatchForRebootEvent', version=2, params=_params)
+ msg = dict(type='Reboot',
+ request='WatchForRebootEvent',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Resumer', request='ResumeTransactions', version=2, params=_params)
+ msg = dict(type='Resumer',
+ request='ResumeTransactions',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(SSHAddressesResults)
async def AllAddresses(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~SSHAddressesResult]<~SSHAddressesResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~SSHAddressesResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='SSHClient', request='AllAddresses', version=2, params=_params)
+ msg = dict(type='SSHClient',
+ request='AllAddresses',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(SSHAddressResults)
async def PrivateAddress(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~SSHAddressResult]<~SSHAddressResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~SSHAddressResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='SSHClient', request='PrivateAddress', version=2, params=_params)
+ msg = dict(type='SSHClient',
+ request='PrivateAddress',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='SSHClient', request='Proxy', version=2, params=_params)
+ msg = dict(type='SSHClient',
+ request='Proxy',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(SSHAddressResults)
async def PublicAddress(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~SSHAddressResult]<~SSHAddressResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~SSHAddressResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='SSHClient', request='PublicAddress', version=2, params=_params)
+ msg = dict(type='SSHClient',
+ request='PublicAddress',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(SSHPublicKeysResults)
async def PublicKeys(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~SSHPublicKeysResult]<~SSHPublicKeysResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~SSHPublicKeysResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='SSHClient',
+ request='PublicKeys',
+ version=2,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class SingularFacade(Type):
+ name = 'Singular'
+ 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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'SingularClaim': {'additionalProperties': False,
+ 'properties': {'claimant-tag': {'type': 'string'},
+ 'duration': {'type': 'integer'},
+ 'entity-tag': {'type': 'string'}},
+ 'required': ['entity-tag',
+ 'claimant-tag',
+ 'duration'],
+ 'type': 'object'},
+ 'SingularClaims': {'additionalProperties': False,
+ 'properties': {'claims': {'items': {'$ref': '#/definitions/SingularClaim'},
+ 'type': 'array'}},
+ 'required': ['claims'],
+ '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=2,
+ 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='SSHClient', request='PublicKeys', version=2, params=_params)
+ msg = dict(type='Singular',
+ request='Wait',
+ version=2,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def CreateSpaces(self, spaces):
'''
- spaces : typing.Sequence<+T_co>[~CreateSpaceParams]<~CreateSpaceParams>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ 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)
+ msg = dict(type='Spaces',
+ request='CreateSpaces',
+ version=2,
+ params=_params)
_params['spaces'] = spaces
reply = await self.rpc(msg)
return reply
async def ListSpaces(self):
'''
- Returns -> typing.Sequence<+T_co>[~Space]<~Space>
+ Returns -> typing.Sequence[~Space]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Spaces', request='ListSpaces', version=2, params=_params)
+ msg = dict(type='Spaces',
+ request='ListSpaces',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
async def ModelConfig(self):
'''
- Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ Returns -> typing.Mapping[str, typing.Any]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StatusHistory', request='ModelConfig', version=2, params=_params)
+ msg = dict(type='StatusHistory',
+ request='ModelConfig',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StatusHistory', request='Prune', version=2, params=_params)
+ msg = dict(type='StatusHistory',
+ request='Prune',
+ version=2,
+ params=_params)
_params['max-history-mb'] = max_history_mb
_params['max-history-time'] = max_history_time
reply = await self.rpc(msg)
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StatusHistory', request='WatchForModelConfigChanges', version=2, params=_params)
+ msg = dict(type='StatusHistory',
+ request='WatchForModelConfigChanges',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def AddSubnets(self, subnets):
'''
- subnets : typing.Sequence<+T_co>[~AddSubnetParams]<~AddSubnetParams>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ 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)
+ msg = dict(type='Subnets',
+ request='AddSubnets',
+ version=2,
+ params=_params)
_params['subnets'] = subnets
reply = await self.rpc(msg)
return reply
async def AllSpaces(self):
'''
- Returns -> typing.Sequence<+T_co>[~SpaceResult]<~SpaceResult>
+ Returns -> typing.Sequence[~SpaceResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Subnets', request='AllSpaces', version=2, params=_params)
+ msg = dict(type='Subnets',
+ request='AllSpaces',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
async def AllZones(self):
'''
- Returns -> typing.Sequence<+T_co>[~ZoneResult]<~ZoneResult>
+ Returns -> typing.Sequence[~ZoneResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Subnets', request='AllZones', version=2, params=_params)
+ msg = dict(type='Subnets',
+ request='AllZones',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
space_tag : str
zone : str
- Returns -> typing.Sequence<+T_co>[~Subnet]<~Subnet>
+ Returns -> typing.Sequence[~Subnet]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Subnets', request='ListSubnets', version=2, params=_params)
+ msg = dict(type='Subnets',
+ request='ListSubnets',
+ version=2,
+ params=_params)
_params['space-tag'] = space_tag
_params['zone'] = zone
reply = await self.rpc(msg)
+class UserManagerFacade(Type):
+ name = 'UserManager'
+ version = 2
+ schema = {'definitions': {'AddUser': {'additionalProperties': False,
+ 'properties': {'display-name': {'type': 'string'},
+ 'password': {'type': 'string'},
+ 'username': {'type': 'string'}},
+ 'required': ['username', 'display-name'],
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'UserInfo': {'additionalProperties': False,
+ 'properties': {'access': {'type': 'string'},
+ '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',
+ 'access',
+ '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'}},
+ 'properties': {'AddUser': {'properties': {'Params': {'$ref': '#/definitions/AddUsers'},
+ 'Result': {'$ref': '#/definitions/AddUserResults'}},
+ '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'},
+ 'RemoveUser': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'ResetPassword': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/AddUserResults'}},
+ '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=2,
+ params=_params)
+ _params['users'] = users
+ 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=2,
+ 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=2,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def RemoveUser(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='UserManager',
+ request='RemoveUser',
+ version=2,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(AddUserResults)
+ async def ResetPassword(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~AddUserResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='UserManager',
+ request='ResetPassword',
+ version=2,
+ 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=2,
+ 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=2,
+ params=_params)
+ _params['entities'] = entities
+ _params['include-disabled'] = include_disabled
+ reply = await self.rpc(msg)
+ return reply
+
+
+
class VolumeAttachmentsWatcherFacade(Type):
name = 'VolumeAttachmentsWatcher'
version = 2
async def Next(self):
'''
- Returns -> typing.Union[typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId>, _ForwardRef('Error')]
+ Returns -> typing.Union[typing.Sequence[~MachineStorageId], _ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='VolumeAttachmentsWatcher', request='Next', version=2, params=_params)
+ msg = dict(type='VolumeAttachmentsWatcher',
+ request='Next',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='VolumeAttachmentsWatcher', request='Stop', version=2, params=_params)
+ msg = dict(type='VolumeAttachmentsWatcher',
+ request='Stop',
+ version=2,
+ params=_params)
reply = await self.rpc(msg)
return reply
from juju.client.facade import ReturnMapping, Type
+class ActionFacade(Type):
+ name = 'Action'
+ version = 3
+ 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'},
+ 'ActionSpec': {'additionalProperties': False,
+ 'properties': {'description': {'type': 'string'},
+ 'params': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['description', 'params'],
+ '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'},
+ 'ApplicationCharmActionsResult': {'additionalProperties': False,
+ 'properties': {'actions': {'patternProperties': {'.*': {'$ref': '#/definitions/ActionSpec'}},
+ 'type': 'object'},
+ 'application-tag': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ApplicationsCharmActionsResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ApplicationCharmActionsResult'},
+ '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'},
+ 'macaroon-path': {'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, 'type': 'object'},
+ 'RunParams': {'additionalProperties': False,
+ 'properties': {'applications': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'commands': {'type': 'string'},
+ 'machines': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'timeout': {'type': 'integer'},
+ 'units': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['commands', 'timeout'],
+ 'type': 'object'}},
+ 'properties': {'Actions': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ActionResults'}},
+ 'type': 'object'},
+ 'ApplicationsCharmsActions': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ApplicationsCharmActionsResults'}},
+ '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'}},
+ '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=3,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ApplicationsCharmActionsResults)
+ async def ApplicationsCharmsActions(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ApplicationCharmActionsResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Action',
+ request='ApplicationsCharmsActions',
+ version=3,
+ 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=3,
+ 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=3,
+ 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=3,
+ 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=3,
+ 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=3,
+ 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=3,
+ 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=3,
+ 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=3,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ActionResults)
+ async def Run(self, applications, commands, machines, timeout, units):
+ '''
+ applications : typing.Sequence[str]
+ commands : str
+ machines : 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=3,
+ params=_params)
+ _params['applications'] = applications
+ _params['commands'] = commands
+ _params['machines'] = machines
+ _params['timeout'] = timeout
+ _params['units'] = units
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ActionResults)
+ async def RunOnAllMachines(self, applications, commands, machines, timeout, units):
+ '''
+ applications : typing.Sequence[str]
+ commands : str
+ machines : 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=3,
+ params=_params)
+ _params['applications'] = applications
+ _params['commands'] = commands
+ _params['machines'] = machines
+ _params['timeout'] = timeout
+ _params['units'] = units
+ reply = await self.rpc(msg)
+ return reply
+
+
+
class ApplicationFacade(Type):
name = 'Application'
version = 3
'type': 'array'},
'tags': {'items': {'type': 'string'},
'type': 'array'},
- 'virt-type': {'type': 'string'}},
+ 'virt-type': {'type': 'string'}},
+ 'type': 'object'}},
+ 'properties': {'AddRelation': {'properties': {'Params': {'$ref': '#/definitions/AddRelation'},
+ 'Result': {'$ref': '#/definitions/AddRelationResults'}},
+ 'type': 'object'},
+ 'AddUnits': {'properties': {'Params': {'$ref': '#/definitions/AddApplicationUnits'},
+ 'Result': {'$ref': '#/definitions/AddApplicationUnitsResults'}},
+ 'type': 'object'},
+ 'CharmRelations': {'properties': {'Params': {'$ref': '#/definitions/ApplicationCharmRelations'},
+ 'Result': {'$ref': '#/definitions/ApplicationCharmRelationsResults'}},
+ 'type': 'object'},
+ 'Deploy': {'properties': {'Params': {'$ref': '#/definitions/ApplicationsDeploy'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'Destroy': {'properties': {'Params': {'$ref': '#/definitions/ApplicationDestroy'}},
+ 'type': 'object'},
+ 'DestroyRelation': {'properties': {'Params': {'$ref': '#/definitions/DestroyRelation'}},
+ 'type': 'object'},
+ 'DestroyUnits': {'properties': {'Params': {'$ref': '#/definitions/DestroyApplicationUnits'}},
+ 'type': 'object'},
+ 'Expose': {'properties': {'Params': {'$ref': '#/definitions/ApplicationExpose'}},
+ 'type': 'object'},
+ 'Get': {'properties': {'Params': {'$ref': '#/definitions/ApplicationGet'},
+ 'Result': {'$ref': '#/definitions/ApplicationGetResults'}},
+ 'type': 'object'},
+ 'GetCharmURL': {'properties': {'Params': {'$ref': '#/definitions/ApplicationGet'},
+ 'Result': {'$ref': '#/definitions/StringResult'}},
+ 'type': 'object'},
+ 'GetConstraints': {'properties': {'Params': {'$ref': '#/definitions/GetApplicationConstraints'},
+ 'Result': {'$ref': '#/definitions/GetConstraintsResults'}},
+ 'type': 'object'},
+ 'Set': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSet'}},
+ 'type': 'object'},
+ 'SetCharm': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSetCharm'}},
+ 'type': 'object'},
+ 'SetConstraints': {'properties': {'Params': {'$ref': '#/definitions/SetConstraints'}},
+ 'type': 'object'},
+ 'SetMetricCredentials': {'properties': {'Params': {'$ref': '#/definitions/ApplicationMetricCredentials'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'Unexpose': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUnexpose'}},
+ 'type': 'object'},
+ 'Unset': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUnset'}},
+ 'type': 'object'},
+ 'Update': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUpdate'}},
+ 'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(AddRelationResults)
+ async def AddRelation(self, endpoints):
+ '''
+ endpoints : typing.Sequence[str]
+ Returns -> typing.Mapping[str, ~CharmRelation]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='AddRelation',
+ version=3,
+ params=_params)
+ _params['endpoints'] = endpoints
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(AddApplicationUnitsResults)
+ async def AddUnits(self, application, num_units, placement):
+ '''
+ application : str
+ num_units : int
+ placement : typing.Sequence[~Placement]
+ Returns -> typing.Sequence[str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='AddUnits',
+ version=3,
+ params=_params)
+ _params['application'] = application
+ _params['num-units'] = num_units
+ _params['placement'] = placement
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ApplicationCharmRelationsResults)
+ async def CharmRelations(self, application):
+ '''
+ application : str
+ Returns -> typing.Sequence[str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='CharmRelations',
+ version=3,
+ params=_params)
+ _params['application'] = application
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def Deploy(self, applications):
+ '''
+ applications : typing.Sequence[~ApplicationDeploy]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='Deploy',
+ version=3,
+ params=_params)
+ _params['applications'] = applications
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Destroy(self, application):
+ '''
+ application : str
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='Destroy',
+ version=3,
+ params=_params)
+ _params['application'] = application
+ 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='Application',
+ request='DestroyRelation',
+ version=3,
+ params=_params)
+ _params['endpoints'] = endpoints
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def DestroyUnits(self, unit_names):
+ '''
+ unit_names : typing.Sequence[str]
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='DestroyUnits',
+ version=3,
+ params=_params)
+ _params['unit-names'] = unit_names
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Expose(self, application):
+ '''
+ application : str
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='Expose',
+ version=3,
+ params=_params)
+ _params['application'] = application
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ApplicationGetResults)
+ async def Get(self, application):
+ '''
+ application : str
+ Returns -> typing.Union[str, typing.Mapping[str, typing.Any], _ForwardRef('Value')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='Get',
+ version=3,
+ params=_params)
+ _params['application'] = application
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringResult)
+ async def GetCharmURL(self, application):
+ '''
+ application : str
+ Returns -> typing.Union[_ForwardRef('Error'), str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='GetCharmURL',
+ version=3,
+ params=_params)
+ _params['application'] = application
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(GetConstraintsResults)
+ async def GetConstraints(self, application):
+ '''
+ application : str
+ Returns -> Value
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='GetConstraints',
+ version=3,
+ params=_params)
+ _params['application'] = application
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Set(self, application, options):
+ '''
+ application : str
+ options : typing.Mapping[str, str]
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='Set',
+ version=3,
+ params=_params)
+ _params['application'] = application
+ _params['options'] = options
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def SetCharm(self, application, channel, charm_url, config_settings, config_settings_yaml, force_series, force_units, resource_ids, storage_constraints):
+ '''
+ application : str
+ channel : str
+ charm_url : str
+ config_settings : typing.Mapping[str, str]
+ config_settings_yaml : str
+ force_series : bool
+ force_units : bool
+ resource_ids : typing.Mapping[str, str]
+ storage_constraints : typing.Mapping[str, ~StorageConstraints]
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='SetCharm',
+ version=3,
+ params=_params)
+ _params['application'] = application
+ _params['channel'] = channel
+ _params['charm-url'] = charm_url
+ _params['config-settings'] = config_settings
+ _params['config-settings-yaml'] = config_settings_yaml
+ _params['force-series'] = force_series
+ _params['force-units'] = force_units
+ _params['resource-ids'] = resource_ids
+ _params['storage-constraints'] = storage_constraints
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def SetConstraints(self, application, constraints):
+ '''
+ application : str
+ constraints : Value
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='SetConstraints',
+ version=3,
+ params=_params)
+ _params['application'] = application
+ _params['constraints'] = constraints
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetMetricCredentials(self, creds):
+ '''
+ creds : typing.Sequence[~ApplicationMetricCredential]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='SetMetricCredentials',
+ version=3,
+ params=_params)
+ _params['creds'] = creds
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Unexpose(self, application):
+ '''
+ application : str
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='Unexpose',
+ version=3,
+ params=_params)
+ _params['application'] = application
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Unset(self, application, options):
+ '''
+ application : str
+ options : typing.Sequence[str]
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='Unset',
+ version=3,
+ params=_params)
+ _params['application'] = application
+ _params['options'] = options
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Update(self, application, charm_url, constraints, force_charm_url, force_series, min_units, settings, settings_yaml):
+ '''
+ application : str
+ charm_url : str
+ constraints : Value
+ force_charm_url : bool
+ force_series : bool
+ min_units : int
+ settings : typing.Mapping[str, str]
+ settings_yaml : str
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='Update',
+ version=3,
+ params=_params)
+ _params['application'] = application
+ _params['charm-url'] = charm_url
+ _params['constraints'] = constraints
+ _params['force-charm-url'] = force_charm_url
+ _params['force-series'] = force_series
+ _params['min-units'] = min_units
+ _params['settings'] = settings
+ _params['settings-yaml'] = settings_yaml
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class CloudFacade(Type):
+ name = 'Cloud'
+ version = 3
+ schema = {'definitions': {'AddCloudArgs': {'additionalProperties': False,
+ 'properties': {'cloud': {'$ref': '#/definitions/Cloud'},
+ 'name': {'type': 'string'}},
+ 'required': ['cloud', 'name'],
+ 'type': 'object'},
+ 'Cloud': {'additionalProperties': False,
+ 'properties': {'auth-types': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'ca-certificates': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'endpoint': {'type': 'string'},
+ 'identity-endpoint': {'type': 'string'},
+ 'regions': {'items': {'$ref': '#/definitions/CloudRegion'},
+ 'type': 'array'},
+ 'storage-endpoint': {'type': 'string'},
+ 'type': {'type': 'string'}},
+ 'required': ['type'],
+ 'type': 'object'},
+ 'CloudCredential': {'additionalProperties': False,
+ 'properties': {'attrs': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'auth-type': {'type': 'string'},
+ 'redacted': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['auth-type'],
+ 'type': 'object'},
+ 'CloudCredentialArg': {'additionalProperties': False,
+ 'properties': {'cloud-name': {'type': 'string'},
+ 'credential-name': {'type': 'string'}},
+ 'required': ['cloud-name',
+ 'credential-name'],
+ 'type': 'object'},
+ 'CloudCredentialArgs': {'additionalProperties': False,
+ 'properties': {'credentials': {'items': {'$ref': '#/definitions/CloudCredentialArg'},
+ 'type': 'array'},
+ 'include-secrets': {'type': 'boolean'}},
+ 'required': ['include-secrets'],
+ 'type': 'object'},
+ 'CloudCredentialResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/CloudCredential'}},
+ 'type': 'object'},
+ 'CloudCredentialResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/CloudCredentialResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'CloudDetails': {'additionalProperties': False,
+ 'properties': {'auth-types': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'endpoint': {'type': 'string'},
+ 'identity-endpoint': {'type': 'string'},
+ 'regions': {'items': {'$ref': '#/definitions/CloudRegion'},
+ 'type': 'array'},
+ 'storage-endpoint': {'type': 'string'},
+ 'type': {'type': 'string'}},
+ 'required': ['type'],
+ 'type': 'object'},
+ 'CloudInfo': {'additionalProperties': False,
+ 'properties': {'CloudDetails': {'$ref': '#/definitions/CloudDetails'},
+ 'users': {'items': {'$ref': '#/definitions/CloudUserInfo'},
+ 'type': 'array'}},
+ 'required': ['CloudDetails', 'users'],
+ 'type': 'object'},
+ 'CloudInfoResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/CloudInfo'}},
+ 'type': 'object'},
+ 'CloudInfoResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/CloudInfoResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'CloudInstanceTypesConstraint': {'additionalProperties': False,
+ 'properties': {'cloud-tag': {'type': 'string'},
+ 'constraints': {'$ref': '#/definitions/Value'},
+ 'region': {'type': 'string'}},
+ 'required': ['cloud-tag',
+ 'region'],
+ 'type': 'object'},
+ 'CloudInstanceTypesConstraints': {'additionalProperties': False,
+ 'properties': {'constraints': {'items': {'$ref': '#/definitions/CloudInstanceTypesConstraint'},
+ 'type': 'array'}},
+ 'required': ['constraints'],
+ 'type': 'object'},
+ 'CloudRegion': {'additionalProperties': False,
+ 'properties': {'endpoint': {'type': 'string'},
+ 'identity-endpoint': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'storage-endpoint': {'type': 'string'}},
+ 'required': ['name'],
+ 'type': 'object'},
+ 'CloudResult': {'additionalProperties': False,
+ 'properties': {'cloud': {'$ref': '#/definitions/Cloud'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'CloudResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/CloudResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'CloudUserInfo': {'additionalProperties': False,
+ 'properties': {'access': {'type': 'string'},
+ 'display-name': {'type': 'string'},
+ 'user': {'type': 'string'}},
+ 'required': ['user',
+ 'display-name',
+ 'access'],
+ 'type': 'object'},
+ 'CloudsResult': {'additionalProperties': False,
+ 'properties': {'clouds': {'patternProperties': {'.*': {'$ref': '#/definitions/Cloud'}},
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'ControllerCredentialInfo': {'additionalProperties': False,
+ 'properties': {'content': {'$ref': '#/definitions/CredentialContent'},
+ 'models': {'items': {'$ref': '#/definitions/ModelAccess'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'CredentialContent': {'additionalProperties': False,
+ 'properties': {'attrs': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'auth-type': {'type': 'string'},
+ 'cloud': {'type': 'string'},
+ 'name': {'type': 'string'}},
+ 'required': ['name',
+ 'cloud',
+ 'auth-type'],
+ 'type': 'object'},
+ 'CredentialContentResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/ControllerCredentialInfo'}},
+ 'type': 'object'},
+ 'CredentialContentResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/CredentialContentResult'},
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'InstanceType': {'additionalProperties': False,
+ 'properties': {'arches': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'cost': {'type': 'integer'},
+ 'cpu-cores': {'type': 'integer'},
+ 'deprecated': {'type': 'boolean'},
+ 'memory': {'type': 'integer'},
+ 'name': {'type': 'string'},
+ 'root-disk': {'type': 'integer'},
+ 'virt-type': {'type': 'string'}},
+ 'required': ['arches', 'cpu-cores', 'memory'],
+ 'type': 'object'},
+ 'InstanceTypesResult': {'additionalProperties': False,
+ 'properties': {'cost-currency': {'type': 'string'},
+ 'cost-divisor': {'type': 'integer'},
+ 'cost-unit': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'instance-types': {'items': {'$ref': '#/definitions/InstanceType'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'InstanceTypesResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/InstanceTypesResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'ListCloudInfo': {'additionalProperties': False,
+ 'properties': {'CloudDetails': {'$ref': '#/definitions/CloudDetails'},
+ 'user-access': {'type': 'string'}},
+ 'required': ['CloudDetails', 'user-access'],
+ 'type': 'object'},
+ 'ListCloudInfoResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/ListCloudInfo'}},
+ 'type': 'object'},
+ 'ListCloudInfoResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ListCloudInfoResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'ListCloudsRequest': {'additionalProperties': False,
+ 'properties': {'all': {'type': 'boolean'},
+ 'user-tag': {'type': 'string'}},
+ 'required': ['user-tag'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'ModelAccess': {'additionalProperties': False,
+ 'properties': {'access': {'type': 'string'},
+ 'model': {'type': 'string'}},
+ 'type': 'object'},
+ 'ModifyCloudAccess': {'additionalProperties': False,
+ 'properties': {'access': {'type': 'string'},
+ 'action': {'type': 'string'},
+ 'cloud-tag': {'type': 'string'},
+ 'user-tag': {'type': 'string'}},
+ 'required': ['user-tag',
+ 'cloud-tag',
+ 'action',
+ 'access'],
+ 'type': 'object'},
+ 'ModifyCloudAccessRequest': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'$ref': '#/definitions/ModifyCloudAccess'},
+ 'type': 'array'}},
+ 'required': ['changes'],
+ 'type': 'object'},
+ 'RevokeCredentialArg': {'additionalProperties': False,
+ 'properties': {'force': {'type': 'boolean'},
+ 'tag': {'type': 'string'}},
+ 'required': ['tag', 'force'],
+ 'type': 'object'},
+ 'RevokeCredentialArgs': {'additionalProperties': False,
+ 'properties': {'credentials': {'items': {'$ref': '#/definitions/RevokeCredentialArg'},
+ 'type': 'array'}},
+ 'required': ['credentials'],
+ 'type': 'object'},
+ 'StringResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'string'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'StringsResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'StringsResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'TaggedCredential': {'additionalProperties': False,
+ 'properties': {'credential': {'$ref': '#/definitions/CloudCredential'},
+ 'tag': {'type': 'string'}},
+ 'required': ['tag', 'credential'],
+ 'type': 'object'},
+ 'TaggedCredentials': {'additionalProperties': False,
+ 'properties': {'credentials': {'items': {'$ref': '#/definitions/TaggedCredential'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'UpdateCredentialArgs': {'additionalProperties': False,
+ 'properties': {'credentials': {'items': {'$ref': '#/definitions/TaggedCredential'},
+ 'type': 'array'},
+ 'force': {'type': 'boolean'}},
+ 'required': ['credentials', 'force'],
+ 'type': 'object'},
+ 'UpdateCredentialModelResult': {'additionalProperties': False,
+ 'properties': {'errors': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'},
+ 'name': {'type': 'string'},
+ 'uuid': {'type': 'string'}},
+ 'required': ['uuid', 'name'],
+ 'type': 'object'},
+ 'UpdateCredentialResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'models': {'items': {'$ref': '#/definitions/UpdateCredentialModelResult'},
+ 'type': 'array'},
+ 'tag': {'type': 'string'}},
+ 'required': ['tag'],
+ 'type': 'object'},
+ 'UpdateCredentialResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/UpdateCredentialResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'UserCloud': {'additionalProperties': False,
+ 'properties': {'cloud-tag': {'type': 'string'},
+ 'user-tag': {'type': 'string'}},
+ 'required': ['user-tag', 'cloud-tag'],
+ 'type': 'object'},
+ 'UserClouds': {'additionalProperties': False,
+ 'properties': {'user-clouds': {'items': {'$ref': '#/definitions/UserCloud'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'Value': {'additionalProperties': False,
+ 'properties': {'arch': {'type': 'string'},
+ 'container': {'type': 'string'},
+ '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'},
+ 'zones': {'items': {'type': 'string'},
+ 'type': 'array'}},
'type': 'object'}},
- 'properties': {'AddRelation': {'properties': {'Params': {'$ref': '#/definitions/AddRelation'},
- 'Result': {'$ref': '#/definitions/AddRelationResults'}},
- 'type': 'object'},
- 'AddUnits': {'properties': {'Params': {'$ref': '#/definitions/AddApplicationUnits'},
- 'Result': {'$ref': '#/definitions/AddApplicationUnitsResults'}},
+ 'properties': {'AddCloud': {'properties': {'Params': {'$ref': '#/definitions/AddCloudArgs'}},
'type': 'object'},
- 'CharmRelations': {'properties': {'Params': {'$ref': '#/definitions/ApplicationCharmRelations'},
- 'Result': {'$ref': '#/definitions/ApplicationCharmRelationsResults'}},
+ 'AddCredentials': {'properties': {'Params': {'$ref': '#/definitions/TaggedCredentials'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
'type': 'object'},
- 'Deploy': {'properties': {'Params': {'$ref': '#/definitions/ApplicationsDeploy'},
- 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'CheckCredentialsModels': {'properties': {'Params': {'$ref': '#/definitions/TaggedCredentials'},
+ 'Result': {'$ref': '#/definitions/UpdateCredentialResults'}},
+ 'type': 'object'},
+ 'Cloud': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/CloudResults'}},
+ 'type': 'object'},
+ 'CloudInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/CloudInfoResults'}},
+ 'type': 'object'},
+ 'Clouds': {'properties': {'Result': {'$ref': '#/definitions/CloudsResult'}},
'type': 'object'},
- 'Destroy': {'properties': {'Params': {'$ref': '#/definitions/ApplicationDestroy'}},
- 'type': 'object'},
- 'DestroyRelation': {'properties': {'Params': {'$ref': '#/definitions/DestroyRelation'}},
- 'type': 'object'},
- 'DestroyUnits': {'properties': {'Params': {'$ref': '#/definitions/DestroyApplicationUnits'}},
+ 'Credential': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/CloudCredentialResults'}},
+ 'type': 'object'},
+ 'CredentialContents': {'properties': {'Params': {'$ref': '#/definitions/CloudCredentialArgs'},
+ 'Result': {'$ref': '#/definitions/CredentialContentResults'}},
+ 'type': 'object'},
+ 'DefaultCloud': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
'type': 'object'},
- 'Expose': {'properties': {'Params': {'$ref': '#/definitions/ApplicationExpose'}},
- 'type': 'object'},
- 'Get': {'properties': {'Params': {'$ref': '#/definitions/ApplicationGet'},
- 'Result': {'$ref': '#/definitions/ApplicationGetResults'}},
- 'type': 'object'},
- 'GetCharmURL': {'properties': {'Params': {'$ref': '#/definitions/ApplicationGet'},
- 'Result': {'$ref': '#/definitions/StringResult'}},
- 'type': 'object'},
- 'GetConstraints': {'properties': {'Params': {'$ref': '#/definitions/GetApplicationConstraints'},
- 'Result': {'$ref': '#/definitions/GetConstraintsResults'}},
- 'type': 'object'},
- 'Set': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSet'}},
- 'type': 'object'},
- 'SetCharm': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSetCharm'}},
- 'type': 'object'},
- 'SetConstraints': {'properties': {'Params': {'$ref': '#/definitions/SetConstraints'}},
- 'type': 'object'},
- 'SetMetricCredentials': {'properties': {'Params': {'$ref': '#/definitions/ApplicationMetricCredentials'},
- 'Result': {'$ref': '#/definitions/ErrorResults'}},
- 'type': 'object'},
- 'Unexpose': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUnexpose'}},
- 'type': 'object'},
- 'Unset': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUnset'}},
- 'type': 'object'},
- 'Update': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUpdate'}},
- 'type': 'object'}},
+ 'InstanceTypes': {'properties': {'Params': {'$ref': '#/definitions/CloudInstanceTypesConstraints'},
+ 'Result': {'$ref': '#/definitions/InstanceTypesResults'}},
+ 'type': 'object'},
+ 'ListCloudInfo': {'properties': {'Params': {'$ref': '#/definitions/ListCloudsRequest'},
+ 'Result': {'$ref': '#/definitions/ListCloudInfoResults'}},
+ 'type': 'object'},
+ 'ModifyCloudAccess': {'properties': {'Params': {'$ref': '#/definitions/ModifyCloudAccessRequest'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'RemoveClouds': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'RevokeCredentialsCheckModels': {'properties': {'Params': {'$ref': '#/definitions/RevokeCredentialArgs'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'UpdateCredentialsCheckModels': {'properties': {'Params': {'$ref': '#/definitions/UpdateCredentialArgs'},
+ 'Result': {'$ref': '#/definitions/UpdateCredentialResults'}},
+ 'type': 'object'},
+ 'UserCredentials': {'properties': {'Params': {'$ref': '#/definitions/UserClouds'},
+ 'Result': {'$ref': '#/definitions/StringsResults'}},
+ 'type': 'object'}},
'type': 'object'}
- @ReturnMapping(AddRelationResults)
- async def AddRelation(self, endpoints):
+ @ReturnMapping(None)
+ async def AddCloud(self, cloud, name):
'''
- endpoints : typing.Sequence<+T_co>[str]
- Returns -> typing.Mapping<~KT, +VT_co>[str, ~CharmRelation]<~CharmRelation>
+ cloud : Cloud
+ name : str
+ Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='AddRelation', version=3, params=_params)
- _params['endpoints'] = endpoints
+ msg = dict(type='Cloud',
+ request='AddCloud',
+ version=3,
+ params=_params)
+ _params['cloud'] = cloud
+ _params['name'] = name
reply = await self.rpc(msg)
return reply
- @ReturnMapping(AddApplicationUnitsResults)
- async def AddUnits(self, application, num_units, placement):
+ @ReturnMapping(ErrorResults)
+ async def AddCredentials(self, credentials):
'''
- application : str
- num_units : int
- placement : typing.Sequence<+T_co>[~Placement]<~Placement>
- Returns -> typing.Sequence<+T_co>[str]
+ credentials : typing.Sequence[~TaggedCredential]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='AddUnits', version=3, params=_params)
- _params['application'] = application
- _params['num-units'] = num_units
- _params['placement'] = placement
+ msg = dict(type='Cloud',
+ request='AddCredentials',
+ version=3,
+ params=_params)
+ _params['credentials'] = credentials
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ApplicationCharmRelationsResults)
- async def CharmRelations(self, application):
+ @ReturnMapping(UpdateCredentialResults)
+ async def CheckCredentialsModels(self, credentials):
'''
- application : str
- Returns -> typing.Sequence<+T_co>[str]
+ credentials : typing.Sequence[~TaggedCredential]
+ Returns -> typing.Sequence[~UpdateCredentialResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='CharmRelations', version=3, params=_params)
- _params['application'] = application
+ msg = dict(type='Cloud',
+ request='CheckCredentialsModels',
+ version=3,
+ params=_params)
+ _params['credentials'] = credentials
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ErrorResults)
- async def Deploy(self, applications):
+ @ReturnMapping(CloudResults)
+ async def Cloud(self, entities):
'''
- applications : typing.Sequence<+T_co>[~ApplicationDeploy]<~ApplicationDeploy>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~CloudResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Deploy', version=3, params=_params)
- _params['applications'] = applications
+ msg = dict(type='Cloud',
+ request='Cloud',
+ version=3,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def Destroy(self, application):
+ @ReturnMapping(CloudInfoResults)
+ async def CloudInfo(self, entities):
'''
- application : str
- Returns -> None
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~CloudInfoResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Destroy', version=3, params=_params)
- _params['application'] = application
+ msg = dict(type='Cloud',
+ request='CloudInfo',
+ version=3,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def DestroyRelation(self, endpoints):
- '''
- endpoints : typing.Sequence<+T_co>[str]
- Returns -> None
+ @ReturnMapping(CloudsResult)
+ async def Clouds(self):
'''
- # map input types to rpc msg
- _params = dict()
- msg = dict(type='Application', request='DestroyRelation', version=3, params=_params)
- _params['endpoints'] = endpoints
- reply = await self.rpc(msg)
- return reply
-
-
- @ReturnMapping(None)
- async def DestroyUnits(self, unit_names):
- '''
- unit_names : typing.Sequence<+T_co>[str]
- Returns -> None
+ Returns -> typing.Mapping[str, ~Cloud]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='DestroyUnits', version=3, params=_params)
- _params['unit-names'] = unit_names
+ msg = dict(type='Cloud',
+ request='Clouds',
+ version=3,
+ params=_params)
+
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def Expose(self, application):
+ @ReturnMapping(CloudCredentialResults)
+ async def Credential(self, entities):
'''
- application : str
- Returns -> None
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~CloudCredentialResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Expose', version=3, params=_params)
- _params['application'] = application
+ msg = dict(type='Cloud',
+ request='Credential',
+ version=3,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(ApplicationGetResults)
- async def Get(self, application):
+ @ReturnMapping(CredentialContentResults)
+ async def CredentialContents(self, credentials, include_secrets):
'''
- application : str
- Returns -> typing.Union[str, typing.Mapping<~KT, +VT_co>[str, typing.Any], _ForwardRef('Value')]
+ credentials : typing.Sequence[~CloudCredentialArg]
+ include_secrets : bool
+ Returns -> typing.Sequence[~CredentialContentResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Get', version=3, params=_params)
- _params['application'] = application
+ msg = dict(type='Cloud',
+ request='CredentialContents',
+ version=3,
+ params=_params)
+ _params['credentials'] = credentials
+ _params['include-secrets'] = include_secrets
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResult)
- async def GetCharmURL(self, application):
+ async def DefaultCloud(self):
'''
- application : str
+
Returns -> typing.Union[_ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='GetCharmURL', version=3, params=_params)
- _params['application'] = application
- reply = await self.rpc(msg)
- return reply
+ msg = dict(type='Cloud',
+ request='DefaultCloud',
+ version=3,
+ params=_params)
-
-
- @ReturnMapping(GetConstraintsResults)
- async def GetConstraints(self, application):
- '''
- application : str
- Returns -> Value
- '''
- # map input types to rpc msg
- _params = dict()
- msg = dict(type='Application', request='GetConstraints', version=3, params=_params)
- _params['application'] = application
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def Set(self, application, options):
+ @ReturnMapping(InstanceTypesResults)
+ async def InstanceTypes(self, constraints):
'''
- application : str
- options : typing.Mapping<~KT, +VT_co>[str, str]
- Returns -> None
+ constraints : typing.Sequence[~CloudInstanceTypesConstraint]
+ Returns -> typing.Sequence[~InstanceTypesResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Set', version=3, params=_params)
- _params['application'] = application
- _params['options'] = options
+ msg = dict(type='Cloud',
+ request='InstanceTypes',
+ version=3,
+ params=_params)
+ _params['constraints'] = constraints
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def SetCharm(self, application, channel, charm_url, config_settings, config_settings_yaml, force_series, force_units, resource_ids, storage_constraints):
+ @ReturnMapping(ListCloudInfoResults)
+ async def ListCloudInfo(self, all_, user_tag):
'''
- application : str
- channel : str
- charm_url : str
- config_settings : typing.Mapping<~KT, +VT_co>[str, str]
- config_settings_yaml : str
- force_series : bool
- force_units : bool
- resource_ids : typing.Mapping<~KT, +VT_co>[str, str]
- storage_constraints : typing.Mapping<~KT, +VT_co>[str, ~StorageConstraints]<~StorageConstraints>
- Returns -> None
+ all_ : bool
+ user_tag : str
+ Returns -> typing.Sequence[~ListCloudInfoResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='SetCharm', version=3, params=_params)
- _params['application'] = application
- _params['channel'] = channel
- _params['charm-url'] = charm_url
- _params['config-settings'] = config_settings
- _params['config-settings-yaml'] = config_settings_yaml
- _params['force-series'] = force_series
- _params['force-units'] = force_units
- _params['resource-ids'] = resource_ids
- _params['storage-constraints'] = storage_constraints
+ msg = dict(type='Cloud',
+ request='ListCloudInfo',
+ version=3,
+ params=_params)
+ _params['all'] = all_
+ _params['user-tag'] = user_tag
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def SetConstraints(self, application, constraints):
+ @ReturnMapping(ErrorResults)
+ async def ModifyCloudAccess(self, changes):
'''
- application : str
- constraints : Value
- Returns -> None
+ changes : typing.Sequence[~ModifyCloudAccess]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='SetConstraints', version=3, params=_params)
- _params['application'] = application
- _params['constraints'] = constraints
+ msg = dict(type='Cloud',
+ request='ModifyCloudAccess',
+ version=3,
+ params=_params)
+ _params['changes'] = changes
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
- async def SetMetricCredentials(self, creds):
+ async def RemoveClouds(self, entities):
'''
- creds : typing.Sequence<+T_co>[~ApplicationMetricCredential]<~ApplicationMetricCredential>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='SetMetricCredentials', version=3, params=_params)
- _params['creds'] = creds
+ msg = dict(type='Cloud',
+ request='RemoveClouds',
+ version=3,
+ params=_params)
+ _params['entities'] = entities
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def Unexpose(self, application):
+ @ReturnMapping(ErrorResults)
+ async def RevokeCredentialsCheckModels(self, credentials):
'''
- application : str
- Returns -> None
+ credentials : typing.Sequence[~RevokeCredentialArg]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Unexpose', version=3, params=_params)
- _params['application'] = application
+ msg = dict(type='Cloud',
+ request='RevokeCredentialsCheckModels',
+ version=3,
+ params=_params)
+ _params['credentials'] = credentials
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def Unset(self, application, options):
+ @ReturnMapping(UpdateCredentialResults)
+ async def UpdateCredentialsCheckModels(self, credentials, force):
'''
- application : str
- options : typing.Sequence<+T_co>[str]
- Returns -> None
+ credentials : typing.Sequence[~TaggedCredential]
+ force : bool
+ Returns -> typing.Sequence[~UpdateCredentialResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Unset', version=3, params=_params)
- _params['application'] = application
- _params['options'] = options
+ msg = dict(type='Cloud',
+ request='UpdateCredentialsCheckModels',
+ version=3,
+ params=_params)
+ _params['credentials'] = credentials
+ _params['force'] = force
reply = await self.rpc(msg)
return reply
- @ReturnMapping(None)
- async def Update(self, application, charm_url, constraints, force_charm_url, force_series, min_units, settings, settings_yaml):
+ @ReturnMapping(StringsResults)
+ async def UserCredentials(self, user_clouds):
'''
- application : str
- charm_url : str
- constraints : Value
- force_charm_url : bool
- force_series : bool
- min_units : int
- settings : typing.Mapping<~KT, +VT_co>[str, str]
- settings_yaml : str
- Returns -> None
+ user_clouds : typing.Sequence[~UserCloud]
+ Returns -> typing.Sequence[~StringsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Update', version=3, params=_params)
- _params['application'] = application
- _params['charm-url'] = charm_url
- _params['constraints'] = constraints
- _params['force-charm-url'] = force_charm_url
- _params['force-series'] = force_series
- _params['min-units'] = min_units
- _params['settings'] = settings
- _params['settings-yaml'] = settings_yaml
+ msg = dict(type='Cloud',
+ request='UserCredentials',
+ version=3,
+ params=_params)
+ _params['user-clouds'] = user_clouds
reply = await self.rpc(msg)
return reply
async def AllModels(self):
'''
- Returns -> typing.Sequence<+T_co>[~UserModel]<~UserModel>
+ Returns -> typing.Sequence[~UserModel]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Controller', request='AllModels', version=3, params=_params)
+ msg = dict(type='Controller',
+ request='AllModels',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(CloudSpecResults)
async def CloudSpec(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~CloudSpecResult]<~CloudSpecResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~CloudSpecResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Controller', request='CloudSpec', version=3, params=_params)
+ msg = dict(type='Controller',
+ request='CloudSpec',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
async def ControllerConfig(self):
'''
- Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ Returns -> typing.Mapping[str, typing.Any]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Controller', request='ControllerConfig', version=3, params=_params)
+ msg = dict(type='Controller',
+ request='ControllerConfig',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Controller', request='DestroyController', version=3, params=_params)
+ msg = dict(type='Controller',
+ request='DestroyController',
+ version=3,
+ params=_params)
_params['destroy-models'] = destroy_models
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Controller', request='GetCloudSpec', version=3, params=_params)
+ msg = dict(type='Controller',
+ request='GetCloudSpec',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(UserAccessResults)
async def GetControllerAccess(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~UserAccessResult]<~UserAccessResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~UserAccessResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Controller', request='GetControllerAccess', version=3, params=_params)
+ msg = dict(type='Controller',
+ request='GetControllerAccess',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
async def HostedModelConfigs(self):
'''
- Returns -> typing.Sequence<+T_co>[~HostedModelConfig]<~HostedModelConfig>
+ Returns -> typing.Sequence[~HostedModelConfig]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Controller', request='HostedModelConfigs', version=3, params=_params)
+ msg = dict(type='Controller',
+ request='HostedModelConfigs',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(InitiateMigrationResults)
async def InitiateMigration(self, specs):
'''
- specs : typing.Sequence<+T_co>[~MigrationSpec]<~MigrationSpec>
- Returns -> typing.Sequence<+T_co>[~InitiateMigrationResult]<~InitiateMigrationResult>
+ specs : typing.Sequence[~MigrationSpec]
+ Returns -> typing.Sequence[~InitiateMigrationResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Controller', request='InitiateMigration', version=3, params=_params)
+ msg = dict(type='Controller',
+ request='InitiateMigration',
+ version=3,
+ params=_params)
_params['specs'] = specs
reply = await self.rpc(msg)
return reply
async def ListBlockedModels(self):
'''
- Returns -> typing.Sequence<+T_co>[~ModelBlockInfo]<~ModelBlockInfo>
+ Returns -> typing.Sequence[~ModelBlockInfo]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Controller', request='ListBlockedModels', version=3, params=_params)
+ msg = dict(type='Controller',
+ request='ListBlockedModels',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
async def ModelConfig(self):
'''
- Returns -> typing.Mapping<~KT, +VT_co>[str, ~ConfigValue]<~ConfigValue>
+ Returns -> typing.Mapping[str, ~ConfigValue]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Controller', request='ModelConfig', version=3, params=_params)
+ msg = dict(type='Controller',
+ request='ModelConfig',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(ModelStatusResults)
async def ModelStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ModelStatus]<~ModelStatus>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ModelStatus]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Controller', request='ModelStatus', version=3, params=_params)
+ msg = dict(type='Controller',
+ request='ModelStatus',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def ModifyControllerAccess(self, changes):
'''
- changes : typing.Sequence<+T_co>[~ModifyControllerAccess]<~ModifyControllerAccess>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ changes : typing.Sequence[~ModifyControllerAccess]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Controller', request='ModifyControllerAccess', version=3, params=_params)
+ msg = dict(type='Controller',
+ request='ModifyControllerAccess',
+ version=3,
+ params=_params)
_params['changes'] = changes
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Controller', request='RemoveBlocks', version=3, params=_params)
+ msg = dict(type='Controller',
+ request='RemoveBlocks',
+ version=3,
+ params=_params)
_params['all'] = all_
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Controller', request='WatchAllModels', version=3, params=_params)
+ msg = dict(type='Controller',
+ request='WatchAllModels',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(CloudSpecResults)
async def CloudSpec(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~CloudSpecResult]<~CloudSpecResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~CloudSpecResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Firewaller', request='CloudSpec', version=3, params=_params)
+ msg = dict(type='Firewaller',
+ request='CloudSpec',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def GetAssignedMachine(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Firewaller', request='GetAssignedMachine', version=3, params=_params)
+ msg = dict(type='Firewaller',
+ request='GetAssignedMachine',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Firewaller', request='GetCloudSpec', version=3, params=_params)
+ msg = dict(type='Firewaller',
+ request='GetCloudSpec',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(BoolResults)
async def GetExposed(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~BoolResult]<~BoolResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~BoolResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Firewaller', request='GetExposed', version=3, params=_params)
+ msg = dict(type='Firewaller',
+ request='GetExposed',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringsResults)
async def GetMachineActiveSubnets(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringsResult]<~StringsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Firewaller', request='GetMachineActiveSubnets', version=3, params=_params)
+ msg = dict(type='Firewaller',
+ request='GetMachineActiveSubnets',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(MachinePortsResults)
async def GetMachinePorts(self, params):
'''
- params : typing.Sequence<+T_co>[~MachinePorts]<~MachinePorts>
- Returns -> typing.Sequence<+T_co>[~MachinePortsResult]<~MachinePortsResult>
+ params : typing.Sequence[~MachinePorts]
+ Returns -> typing.Sequence[~MachinePortsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Firewaller', request='GetMachinePorts', version=3, params=_params)
+ msg = dict(type='Firewaller',
+ request='GetMachinePorts',
+ version=3,
+ params=_params)
_params['params'] = params
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def InstanceId(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Firewaller', request='InstanceId', version=3, params=_params)
+ msg = dict(type='Firewaller',
+ request='InstanceId',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(LifeResults)
async def Life(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~LifeResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Firewaller', request='Life', version=3, params=_params)
+ msg = dict(type='Firewaller',
+ request='Life',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
async def ModelConfig(self):
'''
- Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ Returns -> typing.Mapping[str, typing.Any]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Firewaller', request='ModelConfig', version=3, params=_params)
+ msg = dict(type='Firewaller',
+ request='ModelConfig',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResults)
async def Watch(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Firewaller', request='Watch', version=3, params=_params)
+ msg = dict(type='Firewaller',
+ request='Watch',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Firewaller', request='WatchForModelConfigChanges', version=3, params=_params)
+ msg = dict(type='Firewaller',
+ request='WatchForModelConfigChanges',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
async def WatchModelMachines(self):
'''
- Returns -> typing.Union[typing.Sequence<+T_co>[str], _ForwardRef('Error')]
+ Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Firewaller', request='WatchModelMachines', version=3, params=_params)
+ msg = dict(type='Firewaller',
+ request='WatchModelMachines',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringsWatchResults)
async def WatchOpenedPorts(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Firewaller', request='WatchOpenedPorts', version=3, params=_params)
+ msg = dict(type='Firewaller',
+ request='WatchOpenedPorts',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringsWatchResults)
async def WatchUnits(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Firewaller', request='WatchUnits', version=3, params=_params)
+ msg = dict(type='Firewaller',
+ request='WatchUnits',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
+class ImageMetadataFacade(Type):
+ name = 'ImageMetadata'
+ version = 3
+ schema = {'properties': {'UpdateFromPublishedImages': {'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(None)
+ async def UpdateFromPublishedImages(self):
+ '''
+
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ImageMetadata',
+ request='UpdateFromPublishedImages',
+ version=3,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
class InstancePollerFacade(Type):
name = 'InstancePoller'
version = 3
@ReturnMapping(BoolResults)
async def AreManuallyProvisioned(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~BoolResult]<~BoolResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~BoolResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='InstancePoller', request='AreManuallyProvisioned', version=3, params=_params)
+ msg = dict(type='InstancePoller',
+ request='AreManuallyProvisioned',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def InstanceId(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='InstancePoller', request='InstanceId', version=3, params=_params)
+ msg = dict(type='InstancePoller',
+ request='InstanceId',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StatusResults)
async def InstanceStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StatusResult]<~StatusResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StatusResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='InstancePoller', request='InstanceStatus', version=3, params=_params)
+ msg = dict(type='InstancePoller',
+ request='InstanceStatus',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(LifeResults)
async def Life(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~LifeResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='InstancePoller', request='Life', version=3, params=_params)
+ msg = dict(type='InstancePoller',
+ request='Life',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
async def ModelConfig(self):
'''
- Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ Returns -> typing.Mapping[str, typing.Any]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='InstancePoller', request='ModelConfig', version=3, params=_params)
+ msg = dict(type='InstancePoller',
+ request='ModelConfig',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(MachineAddressesResults)
async def ProviderAddresses(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~MachineAddressesResult]<~MachineAddressesResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~MachineAddressesResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='InstancePoller', request='ProviderAddresses', version=3, params=_params)
+ msg = dict(type='InstancePoller',
+ request='ProviderAddresses',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetInstanceStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='InstancePoller', request='SetInstanceStatus', version=3, params=_params)
+ msg = dict(type='InstancePoller',
+ request='SetInstanceStatus',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetProviderAddresses(self, machine_addresses):
'''
- machine_addresses : typing.Sequence<+T_co>[~MachineAddresses]<~MachineAddresses>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ machine_addresses : typing.Sequence[~MachineAddresses]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='InstancePoller', request='SetProviderAddresses', version=3, params=_params)
+ msg = dict(type='InstancePoller',
+ request='SetProviderAddresses',
+ version=3,
+ params=_params)
_params['machine-addresses'] = machine_addresses
reply = await self.rpc(msg)
return reply
@ReturnMapping(StatusResults)
async def Status(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StatusResult]<~StatusResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StatusResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='InstancePoller', request='Status', version=3, params=_params)
+ msg = dict(type='InstancePoller',
+ request='Status',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='InstancePoller', request='WatchForModelConfigChanges', version=3, params=_params)
+ msg = dict(type='InstancePoller',
+ request='WatchForModelConfigChanges',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
async def WatchModelMachines(self):
'''
- Returns -> typing.Union[typing.Sequence<+T_co>[str], _ForwardRef('Error')]
+ Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='InstancePoller', request='WatchModelMachines', version=3, params=_params)
+ msg = dict(type='InstancePoller',
+ request='WatchModelMachines',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(AddMachinesResults)
async def AddMachines(self, params):
'''
- params : typing.Sequence<+T_co>[~AddMachineParams]<~AddMachineParams>
- Returns -> typing.Sequence<+T_co>[~AddMachinesResult]<~AddMachinesResult>
+ params : typing.Sequence[~AddMachineParams]
+ Returns -> typing.Sequence[~AddMachinesResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MachineManager', request='AddMachines', version=3, params=_params)
+ msg = dict(type='MachineManager',
+ request='AddMachines',
+ version=3,
+ params=_params)
_params['params'] = params
reply = await self.rpc(msg)
return reply
@ReturnMapping(DestroyMachineResults)
async def DestroyMachine(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~DestroyMachineResult]<~DestroyMachineResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~DestroyMachineResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MachineManager', request='DestroyMachine', version=3, params=_params)
+ msg = dict(type='MachineManager',
+ request='DestroyMachine',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(DestroyMachineResults)
async def ForceDestroyMachine(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~DestroyMachineResult]<~DestroyMachineResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~DestroyMachineResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MachineManager', request='ForceDestroyMachine', version=3, params=_params)
+ msg = dict(type='MachineManager',
+ request='ForceDestroyMachine',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(InstanceTypesResults)
async def InstanceTypes(self, constraints):
'''
- constraints : typing.Sequence<+T_co>[~ModelInstanceTypesConstraint]<~ModelInstanceTypesConstraint>
- Returns -> typing.Sequence<+T_co>[~InstanceTypesResult]<~InstanceTypesResult>
+ constraints : typing.Sequence[~ModelInstanceTypesConstraint]
+ Returns -> typing.Sequence[~InstanceTypesResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='MachineManager', request='InstanceTypes', version=3, params=_params)
+ msg = dict(type='MachineManager',
+ request='InstanceTypes',
+ version=3,
+ params=_params)
_params['constraints'] = constraints
reply = await self.rpc(msg)
return reply
async def CreateModel(self, cloud_tag, config, credential, name, owner_tag, region):
'''
cloud_tag : str
- config : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ config : typing.Mapping[str, typing.Any]
credential : str
name : str
owner_tag : str
region : str
- Returns -> typing.Union[_ForwardRef('Number'), _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence<+T_co>[~ModelUserInfo]<~ModelUserInfo>]
+ Returns -> typing.Union[_ForwardRef('Number'), str, typing.Sequence[~ModelMachineInfo], _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence[~ModelUserInfo]]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='CreateModel', version=3, params=_params)
+ msg = dict(type='ModelManager',
+ request='CreateModel',
+ version=3,
+ params=_params)
_params['cloud-tag'] = cloud_tag
_params['config'] = config
_params['credential'] = credential
@ReturnMapping(ErrorResults)
async def DestroyModels(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='DestroyModels', version=3, params=_params)
+ msg = dict(type='ModelManager',
+ request='DestroyModels',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def DumpModels(self, entities, simplified):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
+ entities : typing.Sequence[~Entity]
simplified : bool
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='DumpModels', version=3, params=_params)
+ msg = dict(type='ModelManager',
+ request='DumpModels',
+ version=3,
+ params=_params)
_params['entities'] = entities
_params['simplified'] = simplified
reply = await self.rpc(msg)
@ReturnMapping(MapResults)
async def DumpModelsDB(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~MapResult]<~MapResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~MapResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='DumpModelsDB', version=3, params=_params)
+ msg = dict(type='ModelManager',
+ request='DumpModelsDB',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
async def ListModels(self, tag):
'''
tag : str
- Returns -> typing.Sequence<+T_co>[~UserModel]<~UserModel>
+ Returns -> typing.Sequence[~UserModel]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='ListModels', version=3, params=_params)
+ msg = dict(type='ModelManager',
+ request='ListModels',
+ version=3,
+ params=_params)
_params['tag'] = tag
reply = await self.rpc(msg)
return reply
async def ModelDefaults(self):
'''
- Returns -> typing.Mapping<~KT, +VT_co>[str, ~ModelDefaults]<~ModelDefaults>
+ Returns -> typing.Mapping[str, ~ModelDefaults]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='ModelDefaults', version=3, params=_params)
+ msg = dict(type='ModelManager',
+ request='ModelDefaults',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(ModelInfoResults)
async def ModelInfo(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ModelInfoResult]<~ModelInfoResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ModelInfoResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='ModelInfo', version=3, params=_params)
+ msg = dict(type='ModelManager',
+ request='ModelInfo',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ModelStatusResults)
async def ModelStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ModelStatus]<~ModelStatus>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ModelStatus]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='ModelStatus', version=3, params=_params)
+ msg = dict(type='ModelManager',
+ request='ModelStatus',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def ModifyModelAccess(self, changes):
'''
- changes : typing.Sequence<+T_co>[~ModifyModelAccess]<~ModifyModelAccess>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ changes : typing.Sequence[~ModifyModelAccess]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='ModifyModelAccess', version=3, params=_params)
+ msg = dict(type='ModelManager',
+ request='ModifyModelAccess',
+ version=3,
+ params=_params)
_params['changes'] = changes
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetModelDefaults(self, config):
'''
- config : typing.Sequence<+T_co>[~ModelDefaultValues]<~ModelDefaultValues>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ config : typing.Sequence[~ModelDefaultValues]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='SetModelDefaults', version=3, params=_params)
+ msg = dict(type='ModelManager',
+ request='SetModelDefaults',
+ version=3,
+ params=_params)
_params['config'] = config
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def UnsetModelDefaults(self, keys):
'''
- keys : typing.Sequence<+T_co>[~ModelUnsetKeys]<~ModelUnsetKeys>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ keys : typing.Sequence[~ModelUnsetKeys]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='ModelManager', request='UnsetModelDefaults', version=3, params=_params)
+ msg = dict(type='ModelManager',
+ request='UnsetModelDefaults',
+ version=3,
+ params=_params)
_params['keys'] = keys
reply = await self.rpc(msg)
return reply
async def APIAddresses(self):
'''
- Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence<+T_co>[str]]
+ Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence[str]]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='APIAddresses', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='APIAddresses',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
async def APIHostPorts(self):
'''
- Returns -> typing.Sequence<+T_co>[~HostPort]<~HostPort>
+ Returns -> typing.Sequence[~HostPort]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='APIHostPorts', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='APIHostPorts',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
async def CACert(self):
'''
- Returns -> typing.Sequence<+T_co>[int]
+ Returns -> typing.Sequence[int]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='CACert', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='CACert',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(ConstraintsResults)
async def Constraints(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ConstraintsResult]<~ConstraintsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ConstraintsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='Constraints', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='Constraints',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
async def ContainerConfig(self):
'''
- Returns -> typing.Union[_ForwardRef('UpdateBehavior'), str, _ForwardRef('Settings'), _ForwardRef('Settings'), bool]
+ Returns -> typing.Union[_ForwardRef('UpdateBehavior'), str, _ForwardRef('Settings'), bool]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='ContainerConfig', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='ContainerConfig',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
async def ContainerManagerConfig(self, type_):
'''
type_ : str
- Returns -> typing.Mapping<~KT, +VT_co>[str, str]
+ Returns -> typing.Mapping[str, str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='ContainerManagerConfig', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='ContainerManagerConfig',
+ version=3,
+ params=_params)
_params['type'] = type_
reply = await self.rpc(msg)
return reply
async def ControllerConfig(self):
'''
- Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ Returns -> typing.Mapping[str, typing.Any]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='ControllerConfig', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='ControllerConfig',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(DistributionGroupResults)
async def DistributionGroup(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~DistributionGroupResult]<~DistributionGroupResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~DistributionGroupResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='DistributionGroup', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='DistributionGroup',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def EnsureDead(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='EnsureDead', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='EnsureDead',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
minor : int
number : Number
series : str
- Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence<+T_co>[~Tools]<~Tools>]
+ Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence[~Tools]]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='FindTools', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='FindTools',
+ version=3,
+ params=_params)
_params['arch'] = arch
_params['major'] = major
_params['minor'] = minor
@ReturnMapping(MachineNetworkConfigResults)
async def GetContainerInterfaceInfo(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~MachineNetworkConfigResult]<~MachineNetworkConfigResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~MachineNetworkConfigResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='GetContainerInterfaceInfo', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='GetContainerInterfaceInfo',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(HostNetworkChangeResults)
async def HostChangesForContainers(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~HostNetworkChange]<~HostNetworkChange>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~HostNetworkChange]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='HostChangesForContainers', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='HostChangesForContainers',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def InstanceId(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='InstanceId', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='InstanceId',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StatusResults)
async def InstanceStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StatusResult]<~StatusResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StatusResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='InstanceStatus', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='InstanceStatus',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(LifeResults)
async def Life(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~LifeResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='Life', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='Life',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
async def MachinesWithTransientErrors(self):
'''
- Returns -> typing.Sequence<+T_co>[~StatusResult]<~StatusResult>
+ Returns -> typing.Sequence[~StatusResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='MachinesWithTransientErrors', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='MachinesWithTransientErrors',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def MarkMachinesForRemoval(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='MarkMachinesForRemoval', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='MarkMachinesForRemoval',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
async def ModelConfig(self):
'''
- Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ Returns -> typing.Mapping[str, typing.Any]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='ModelConfig', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='ModelConfig',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='ModelUUID', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='ModelUUID',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(MachineNetworkConfigResults)
async def PrepareContainerInterfaceInfo(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~MachineNetworkConfigResult]<~MachineNetworkConfigResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~MachineNetworkConfigResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='PrepareContainerInterfaceInfo', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='PrepareContainerInterfaceInfo',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ProvisioningInfoResults)
async def ProvisioningInfo(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ProvisioningInfoResult]<~ProvisioningInfoResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ProvisioningInfoResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='ProvisioningInfo', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='ProvisioningInfo',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def ReleaseContainerAddresses(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='ReleaseContainerAddresses', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='ReleaseContainerAddresses',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def Remove(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='Remove', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='Remove',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def Series(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='Series', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='Series',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(None)
async def SetHostMachineNetworkConfig(self, config, tag):
'''
- config : typing.Sequence<+T_co>[~NetworkConfig]<~NetworkConfig>
+ config : typing.Sequence[~NetworkConfig]
tag : str
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='SetHostMachineNetworkConfig', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='SetHostMachineNetworkConfig',
+ version=3,
+ params=_params)
_params['config'] = config
_params['tag'] = tag
reply = await self.rpc(msg)
@ReturnMapping(ErrorResults)
async def SetInstanceInfo(self, machines):
'''
- machines : typing.Sequence<+T_co>[~InstanceInfo]<~InstanceInfo>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ machines : typing.Sequence[~InstanceInfo]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='SetInstanceInfo', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='SetInstanceInfo',
+ version=3,
+ params=_params)
_params['machines'] = machines
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetInstanceStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='SetInstanceStatus', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='SetInstanceStatus',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(None)
async def SetObservedNetworkConfig(self, config, tag):
'''
- config : typing.Sequence<+T_co>[~NetworkConfig]<~NetworkConfig>
+ config : typing.Sequence[~NetworkConfig]
tag : str
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='SetObservedNetworkConfig', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='SetObservedNetworkConfig',
+ version=3,
+ params=_params)
_params['config'] = config
_params['tag'] = tag
reply = await self.rpc(msg)
@ReturnMapping(ErrorResults)
async def SetPasswords(self, changes):
'''
- changes : typing.Sequence<+T_co>[~EntityPassword]<~EntityPassword>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ changes : typing.Sequence[~EntityPassword]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='SetPasswords', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='SetPasswords',
+ version=3,
+ params=_params)
_params['changes'] = changes
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetProviderNetworkConfig(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='SetProviderNetworkConfig', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='SetProviderNetworkConfig',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='SetStatus', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='SetStatus',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetSupportedContainers(self, params):
'''
- params : typing.Sequence<+T_co>[~MachineContainers]<~MachineContainers>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ params : typing.Sequence[~MachineContainers]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='SetSupportedContainers', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='SetSupportedContainers',
+ version=3,
+ params=_params)
_params['params'] = params
reply = await self.rpc(msg)
return reply
async def StateAddresses(self):
'''
- Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence<+T_co>[str]]
+ Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence[str]]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='StateAddresses', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='StateAddresses',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(StatusResults)
async def Status(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StatusResult]<~StatusResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StatusResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='Status', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='Status',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ToolsResults)
async def Tools(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ToolsResult]<~ToolsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ToolsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='Tools', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='Tools',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def UpdateStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='UpdateStatus', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='UpdateStatus',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='WatchAPIHostPorts', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='WatchAPIHostPorts',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringsWatchResults)
async def WatchAllContainers(self, params):
'''
- params : typing.Sequence<+T_co>[~WatchContainer]<~WatchContainer>
- Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
+ params : typing.Sequence[~WatchContainer]
+ Returns -> typing.Sequence[~StringsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='WatchAllContainers', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='WatchAllContainers',
+ version=3,
+ params=_params)
_params['params'] = params
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringsWatchResults)
async def WatchContainers(self, params):
'''
- params : typing.Sequence<+T_co>[~WatchContainer]<~WatchContainer>
- Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
+ params : typing.Sequence[~WatchContainer]
+ Returns -> typing.Sequence[~StringsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='WatchContainers', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='WatchContainers',
+ version=3,
+ params=_params)
_params['params'] = params
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='WatchForModelConfigChanges', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='WatchForModelConfigChanges',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='WatchMachineErrorRetry', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='WatchMachineErrorRetry',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
async def WatchModelMachines(self):
'''
- Returns -> typing.Union[typing.Sequence<+T_co>[str], _ForwardRef('Error')]
+ Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Provisioner', request='WatchModelMachines', version=3, params=_params)
+ msg = dict(type='Provisioner',
+ request='WatchModelMachines',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def CreateSpaces(self, spaces):
'''
- spaces : typing.Sequence<+T_co>[~CreateSpaceParams]<~CreateSpaceParams>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ spaces : typing.Sequence[~CreateSpaceParams]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Spaces', request='CreateSpaces', version=3, params=_params)
+ msg = dict(type='Spaces',
+ request='CreateSpaces',
+ version=3,
+ params=_params)
_params['spaces'] = spaces
reply = await self.rpc(msg)
return reply
async def ListSpaces(self):
'''
- Returns -> typing.Sequence<+T_co>[~Space]<~Space>
+ Returns -> typing.Sequence[~Space]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Spaces', request='ListSpaces', version=3, params=_params)
+ msg = dict(type='Spaces',
+ request='ListSpaces',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Spaces', request='ReloadSpaces', version=3, params=_params)
+ msg = dict(type='Spaces',
+ request='ReloadSpaces',
+ version=3,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def AddToUnit(self, storages):
'''
- storages : typing.Sequence<+T_co>[~StorageAddParams]<~StorageAddParams>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ storages : typing.Sequence[~StorageAddParams]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Storage', request='AddToUnit', version=3, params=_params)
+ msg = dict(type='Storage',
+ request='AddToUnit',
+ version=3,
+ params=_params)
_params['storages'] = storages
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def Attach(self, ids):
'''
- ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ ids : typing.Sequence[~StorageAttachmentId]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Storage', request='Attach', version=3, params=_params)
+ msg = dict(type='Storage',
+ request='Attach',
+ version=3,
+ params=_params)
_params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(None)
async def CreatePool(self, attrs, name, provider):
'''
- attrs : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ 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=3, params=_params)
+ msg = dict(type='Storage',
+ request='CreatePool',
+ version=3,
+ params=_params)
_params['attrs'] = attrs
_params['name'] = name
_params['provider'] = provider
@ReturnMapping(ErrorResults)
async def Destroy(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Storage', request='Destroy', version=3, params=_params)
+ msg = dict(type='Storage',
+ request='Destroy',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def Detach(self, ids):
'''
- ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ ids : typing.Sequence[~StorageAttachmentId]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Storage', request='Detach', version=3, params=_params)
+ msg = dict(type='Storage',
+ request='Detach',
+ version=3,
+ params=_params)
_params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(FilesystemDetailsListResults)
async def ListFilesystems(self, filters):
'''
- filters : typing.Sequence<+T_co>[~FilesystemFilter]<~FilesystemFilter>
- Returns -> typing.Sequence<+T_co>[~FilesystemDetailsListResult]<~FilesystemDetailsListResult>
+ filters : typing.Sequence[~FilesystemFilter]
+ Returns -> typing.Sequence[~FilesystemDetailsListResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Storage', request='ListFilesystems', version=3, params=_params)
+ msg = dict(type='Storage',
+ request='ListFilesystems',
+ version=3,
+ params=_params)
_params['filters'] = filters
reply = await self.rpc(msg)
return reply
@ReturnMapping(StoragePoolsResults)
async def ListPools(self, filters):
'''
- filters : typing.Sequence<+T_co>[~StoragePoolFilter]<~StoragePoolFilter>
- Returns -> typing.Sequence<+T_co>[~StoragePoolsResult]<~StoragePoolsResult>
+ filters : typing.Sequence[~StoragePoolFilter]
+ Returns -> typing.Sequence[~StoragePoolsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Storage', request='ListPools', version=3, params=_params)
+ msg = dict(type='Storage',
+ request='ListPools',
+ version=3,
+ params=_params)
_params['filters'] = filters
reply = await self.rpc(msg)
return reply
@ReturnMapping(StorageDetailsListResults)
async def ListStorageDetails(self, filters):
'''
- filters : typing.Sequence<+T_co>[~StorageFilter]<~StorageFilter>
- Returns -> typing.Sequence<+T_co>[~StorageDetailsListResult]<~StorageDetailsListResult>
+ filters : typing.Sequence[~StorageFilter]
+ Returns -> typing.Sequence[~StorageDetailsListResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Storage', request='ListStorageDetails', version=3, params=_params)
+ msg = dict(type='Storage',
+ request='ListStorageDetails',
+ version=3,
+ params=_params)
_params['filters'] = filters
reply = await self.rpc(msg)
return reply
@ReturnMapping(VolumeDetailsListResults)
async def ListVolumes(self, filters):
'''
- filters : typing.Sequence<+T_co>[~VolumeFilter]<~VolumeFilter>
- Returns -> typing.Sequence<+T_co>[~VolumeDetailsListResult]<~VolumeDetailsListResult>
+ filters : typing.Sequence[~VolumeFilter]
+ Returns -> typing.Sequence[~VolumeDetailsListResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Storage', request='ListVolumes', version=3, params=_params)
+ msg = dict(type='Storage',
+ request='ListVolumes',
+ version=3,
+ params=_params)
_params['filters'] = filters
reply = await self.rpc(msg)
return reply
@ReturnMapping(StorageDetailsResults)
async def StorageDetails(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StorageDetailsResult]<~StorageDetailsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StorageDetailsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Storage', request='StorageDetails', version=3, params=_params)
+ msg = dict(type='Storage',
+ request='StorageDetails',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(LifeResults)
async def AttachmentLife(self, ids):
'''
- ids : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId>
- Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult>
+ ids : typing.Sequence[~MachineStorageId]
+ Returns -> typing.Sequence[~LifeResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='AttachmentLife', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='AttachmentLife',
+ version=3,
+ params=_params)
_params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def EnsureDead(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='EnsureDead', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='EnsureDead',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(FilesystemAttachmentParamsResults)
async def FilesystemAttachmentParams(self, ids):
'''
- ids : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId>
- Returns -> typing.Sequence<+T_co>[~FilesystemAttachmentParamsResult]<~FilesystemAttachmentParamsResult>
+ ids : typing.Sequence[~MachineStorageId]
+ Returns -> typing.Sequence[~FilesystemAttachmentParamsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='FilesystemAttachmentParams', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='FilesystemAttachmentParams',
+ version=3,
+ params=_params)
_params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(FilesystemAttachmentResults)
async def FilesystemAttachments(self, ids):
'''
- ids : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId>
- Returns -> typing.Sequence<+T_co>[~FilesystemAttachmentResult]<~FilesystemAttachmentResult>
+ ids : typing.Sequence[~MachineStorageId]
+ Returns -> typing.Sequence[~FilesystemAttachmentResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='FilesystemAttachments', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='FilesystemAttachments',
+ version=3,
+ params=_params)
_params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(FilesystemParamsResults)
async def FilesystemParams(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~FilesystemParamsResult]<~FilesystemParamsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~FilesystemParamsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='FilesystemParams', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='FilesystemParams',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(FilesystemResults)
async def Filesystems(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~FilesystemResult]<~FilesystemResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~FilesystemResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='Filesystems', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='Filesystems',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def InstanceId(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='InstanceId', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='InstanceId',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(LifeResults)
async def Life(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~LifeResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='Life', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='Life',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def Remove(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='Remove', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='Remove',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def RemoveAttachment(self, ids):
'''
- ids : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ ids : typing.Sequence[~MachineStorageId]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='RemoveAttachment', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='RemoveAttachment',
+ version=3,
+ params=_params)
_params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetFilesystemAttachmentInfo(self, filesystem_attachments):
'''
- filesystem_attachments : typing.Sequence<+T_co>[~FilesystemAttachment]<~FilesystemAttachment>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ filesystem_attachments : typing.Sequence[~FilesystemAttachment]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='SetFilesystemAttachmentInfo', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='SetFilesystemAttachmentInfo',
+ version=3,
+ params=_params)
_params['filesystem-attachments'] = filesystem_attachments
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetFilesystemInfo(self, filesystems):
'''
- filesystems : typing.Sequence<+T_co>[~Filesystem]<~Filesystem>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ filesystems : typing.Sequence[~Filesystem]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='SetFilesystemInfo', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='SetFilesystemInfo',
+ version=3,
+ params=_params)
_params['filesystems'] = filesystems
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='SetStatus', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='SetStatus',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetVolumeAttachmentInfo(self, volume_attachments):
'''
- volume_attachments : typing.Sequence<+T_co>[~VolumeAttachment]<~VolumeAttachment>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ volume_attachments : typing.Sequence[~VolumeAttachment]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='SetVolumeAttachmentInfo', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='SetVolumeAttachmentInfo',
+ version=3,
+ params=_params)
_params['volume-attachments'] = volume_attachments
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetVolumeInfo(self, volumes):
'''
- volumes : typing.Sequence<+T_co>[~Volume]<~Volume>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ volumes : typing.Sequence[~Volume]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='SetVolumeInfo', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='SetVolumeInfo',
+ version=3,
+ params=_params)
_params['volumes'] = volumes
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def UpdateStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='UpdateStatus', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='UpdateStatus',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(VolumeAttachmentParamsResults)
async def VolumeAttachmentParams(self, ids):
'''
- ids : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId>
- Returns -> typing.Sequence<+T_co>[~VolumeAttachmentParamsResult]<~VolumeAttachmentParamsResult>
+ ids : typing.Sequence[~MachineStorageId]
+ Returns -> typing.Sequence[~VolumeAttachmentParamsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='VolumeAttachmentParams', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='VolumeAttachmentParams',
+ version=3,
+ params=_params)
_params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(VolumeAttachmentResults)
async def VolumeAttachments(self, ids):
'''
- ids : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId>
- Returns -> typing.Sequence<+T_co>[~VolumeAttachmentResult]<~VolumeAttachmentResult>
+ ids : typing.Sequence[~MachineStorageId]
+ Returns -> typing.Sequence[~VolumeAttachmentResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='VolumeAttachments', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='VolumeAttachments',
+ version=3,
+ params=_params)
_params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(BlockDeviceResults)
async def VolumeBlockDevices(self, ids):
'''
- ids : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId>
- Returns -> typing.Sequence<+T_co>[~BlockDeviceResult]<~BlockDeviceResult>
+ ids : typing.Sequence[~MachineStorageId]
+ Returns -> typing.Sequence[~BlockDeviceResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='VolumeBlockDevices', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='VolumeBlockDevices',
+ version=3,
+ params=_params)
_params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(VolumeParamsResults)
async def VolumeParams(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~VolumeParamsResult]<~VolumeParamsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~VolumeParamsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='VolumeParams', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='VolumeParams',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(VolumeResults)
async def Volumes(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~VolumeResult]<~VolumeResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~VolumeResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='Volumes', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='Volumes',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResults)
async def WatchBlockDevices(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='WatchBlockDevices', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='WatchBlockDevices',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(MachineStorageIdsWatchResults)
async def WatchFilesystemAttachments(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~MachineStorageIdsWatchResult]<~MachineStorageIdsWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~MachineStorageIdsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='WatchFilesystemAttachments', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='WatchFilesystemAttachments',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringsWatchResults)
async def WatchFilesystems(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='WatchFilesystems', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='WatchFilesystems',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResults)
async def WatchMachines(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='WatchMachines', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='WatchMachines',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(MachineStorageIdsWatchResults)
async def WatchVolumeAttachments(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~MachineStorageIdsWatchResult]<~MachineStorageIdsWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~MachineStorageIdsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='WatchVolumeAttachments', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='WatchVolumeAttachments',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringsWatchResults)
async def WatchVolumes(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='StorageProvisioner', request='WatchVolumes', version=3, params=_params)
+ msg = dict(type='StorageProvisioner',
+ request='WatchVolumes',
+ version=3,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(AddRelationResults)
async def AddRelation(self, endpoints):
'''
- endpoints : typing.Sequence<+T_co>[str]
- Returns -> typing.Mapping<~KT, +VT_co>[str, ~CharmRelation]<~CharmRelation>
+ endpoints : typing.Sequence[str]
+ Returns -> typing.Mapping[str, ~CharmRelation]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='AddRelation', version=4, params=_params)
+ msg = dict(type='Application',
+ request='AddRelation',
+ version=4,
+ params=_params)
_params['endpoints'] = endpoints
reply = await self.rpc(msg)
return reply
'''
application : str
num_units : int
- placement : typing.Sequence<+T_co>[~Placement]<~Placement>
- Returns -> typing.Sequence<+T_co>[str]
+ placement : typing.Sequence[~Placement]
+ Returns -> typing.Sequence[str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='AddUnits', version=4, params=_params)
+ msg = dict(type='Application',
+ request='AddUnits',
+ version=4,
+ params=_params)
_params['application'] = application
_params['num-units'] = num_units
_params['placement'] = placement
async def CharmRelations(self, application):
'''
application : str
- Returns -> typing.Sequence<+T_co>[str]
+ Returns -> typing.Sequence[str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='CharmRelations', version=4, params=_params)
+ msg = dict(type='Application',
+ request='CharmRelations',
+ version=4,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
@ReturnMapping(ConsumeApplicationResults)
async def Consume(self, args):
'''
- args : typing.Sequence<+T_co>[~ConsumeApplicationArg]<~ConsumeApplicationArg>
- Returns -> typing.Sequence<+T_co>[~ConsumeApplicationResult]<~ConsumeApplicationResult>
+ args : typing.Sequence[~ConsumeApplicationArg]
+ Returns -> typing.Sequence[~ConsumeApplicationResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Consume', version=4, params=_params)
+ msg = dict(type='Application',
+ request='Consume',
+ version=4,
+ params=_params)
_params['args'] = args
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def Deploy(self, applications):
'''
- applications : typing.Sequence<+T_co>[~ApplicationDeploy]<~ApplicationDeploy>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ applications : typing.Sequence[~ApplicationDeploy]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Deploy', version=4, params=_params)
+ msg = dict(type='Application',
+ request='Deploy',
+ version=4,
+ params=_params)
_params['applications'] = applications
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Destroy', version=4, params=_params)
+ msg = dict(type='Application',
+ request='Destroy',
+ version=4,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
@ReturnMapping(DestroyApplicationResults)
async def DestroyApplication(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~DestroyApplicationResult]<~DestroyApplicationResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~DestroyApplicationResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='DestroyApplication', version=4, params=_params)
+ msg = dict(type='Application',
+ request='DestroyApplication',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(None)
async def DestroyRelation(self, endpoints):
'''
- endpoints : typing.Sequence<+T_co>[str]
+ endpoints : typing.Sequence[str]
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='DestroyRelation', version=4, params=_params)
+ msg = dict(type='Application',
+ request='DestroyRelation',
+ version=4,
+ params=_params)
_params['endpoints'] = endpoints
reply = await self.rpc(msg)
return reply
@ReturnMapping(DestroyUnitResults)
async def DestroyUnit(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~DestroyUnitResult]<~DestroyUnitResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~DestroyUnitResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='DestroyUnit', version=4, params=_params)
+ msg = dict(type='Application',
+ request='DestroyUnit',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(None)
async def DestroyUnits(self, unit_names):
'''
- unit_names : typing.Sequence<+T_co>[str]
+ unit_names : typing.Sequence[str]
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='DestroyUnits', version=4, params=_params)
+ msg = dict(type='Application',
+ request='DestroyUnits',
+ version=4,
+ params=_params)
_params['unit-names'] = unit_names
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Expose', version=4, params=_params)
+ msg = dict(type='Application',
+ request='Expose',
+ version=4,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
async def Get(self, application):
'''
application : str
- Returns -> typing.Union[str, typing.Mapping<~KT, +VT_co>[str, typing.Any], _ForwardRef('Value')]
+ Returns -> typing.Union[str, typing.Mapping[str, typing.Any], _ForwardRef('Value')]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Get', version=4, params=_params)
+ msg = dict(type='Application',
+ request='Get',
+ version=4,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='GetCharmURL', version=4, params=_params)
+ msg = dict(type='Application',
+ request='GetCharmURL',
+ version=4,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='GetConstraints', version=4, params=_params)
+ msg = dict(type='Application',
+ request='GetConstraints',
+ version=4,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
@ReturnMapping(RemoteApplicationInfoResults)
async def RemoteApplicationInfo(self, application_urls):
'''
- application_urls : typing.Sequence<+T_co>[str]
- Returns -> typing.Sequence<+T_co>[~RemoteApplicationInfoResult]<~RemoteApplicationInfoResult>
+ application_urls : typing.Sequence[str]
+ Returns -> typing.Sequence[~RemoteApplicationInfoResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='RemoteApplicationInfo', version=4, params=_params)
+ msg = dict(type='Application',
+ request='RemoteApplicationInfo',
+ version=4,
+ params=_params)
_params['application-urls'] = application_urls
reply = await self.rpc(msg)
return reply
async def Set(self, application, options):
'''
application : str
- options : typing.Mapping<~KT, +VT_co>[str, str]
+ options : typing.Mapping[str, str]
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Set', version=4, params=_params)
+ msg = dict(type='Application',
+ request='Set',
+ version=4,
+ params=_params)
_params['application'] = application
_params['options'] = options
reply = await self.rpc(msg)
application : str
channel : str
charm_url : str
- config_settings : typing.Mapping<~KT, +VT_co>[str, str]
+ config_settings : typing.Mapping[str, str]
config_settings_yaml : str
force_series : bool
force_units : bool
- resource_ids : typing.Mapping<~KT, +VT_co>[str, str]
- storage_constraints : typing.Mapping<~KT, +VT_co>[str, ~StorageConstraints]<~StorageConstraints>
+ resource_ids : typing.Mapping[str, str]
+ storage_constraints : typing.Mapping[str, ~StorageConstraints]
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='SetCharm', version=4, params=_params)
+ msg = dict(type='Application',
+ request='SetCharm',
+ version=4,
+ params=_params)
_params['application'] = application
_params['channel'] = channel
_params['charm-url'] = charm_url
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='SetConstraints', version=4, params=_params)
+ msg = dict(type='Application',
+ request='SetConstraints',
+ version=4,
+ params=_params)
_params['application'] = application
_params['constraints'] = constraints
reply = await self.rpc(msg)
@ReturnMapping(ErrorResults)
async def SetMetricCredentials(self, creds):
'''
- creds : typing.Sequence<+T_co>[~ApplicationMetricCredential]<~ApplicationMetricCredential>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ creds : typing.Sequence[~ApplicationMetricCredential]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='SetMetricCredentials', version=4, params=_params)
+ msg = dict(type='Application',
+ request='SetMetricCredentials',
+ version=4,
+ params=_params)
_params['creds'] = creds
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Unexpose', version=4, params=_params)
+ msg = dict(type='Application',
+ request='Unexpose',
+ version=4,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
async def Unset(self, application, options):
'''
application : str
- options : typing.Sequence<+T_co>[str]
+ options : typing.Sequence[str]
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Unset', version=4, params=_params)
+ msg = dict(type='Application',
+ request='Unset',
+ version=4,
+ params=_params)
_params['application'] = application
_params['options'] = options
reply = await self.rpc(msg)
force_charm_url : bool
force_series : bool
min_units : int
- settings : typing.Mapping<~KT, +VT_co>[str, str]
+ settings : typing.Mapping[str, str]
settings_yaml : str
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Update', version=4, params=_params)
+ msg = dict(type='Application',
+ request='Update',
+ version=4,
+ params=_params)
_params['application'] = application
_params['charm-url'] = charm_url
_params['constraints'] = constraints
+class StorageFacade(Type):
+ name = 'Storage'
+ version = 4
+ schema = {'definitions': {'AddStorageDetails': {'additionalProperties': False,
+ 'properties': {'storage-tags': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['storage-tags'],
+ 'type': 'object'},
+ 'AddStorageResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/AddStorageDetails'}},
+ 'type': 'object'},
+ 'AddStorageResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/AddStorageResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'BulkImportStorageParams': {'additionalProperties': False,
+ 'properties': {'storage': {'items': {'$ref': '#/definitions/ImportStorageParams'},
+ 'type': 'array'}},
+ 'required': ['storage'],
+ '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', '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'FilesystemAttachmentDetails': {'additionalProperties': False,
+ 'properties': {'FilesystemAttachmentInfo': {'$ref': '#/definitions/FilesystemAttachmentInfo'},
+ 'life': {'type': 'string'}},
+ 'required': ['FilesystemAttachmentInfo'],
+ 'type': 'object'},
+ 'FilesystemAttachmentInfo': {'additionalProperties': False,
+ 'properties': {'mount-point': {'type': 'string'},
+ 'read-only': {'type': 'boolean'}},
+ 'type': 'object'},
+ 'FilesystemDetails': {'additionalProperties': False,
+ 'properties': {'filesystem-tag': {'type': 'string'},
+ 'info': {'$ref': '#/definitions/FilesystemInfo'},
+ 'life': {'type': 'string'},
+ 'machine-attachments': {'patternProperties': {'.*': {'$ref': '#/definitions/FilesystemAttachmentDetails'}},
+ 'type': 'object'},
+ 'status': {'$ref': '#/definitions/EntityStatus'},
+ 'storage': {'$ref': '#/definitions/StorageDetails'},
+ 'unit-attachments': {'patternProperties': {'.*': {'$ref': '#/definitions/FilesystemAttachmentDetails'}},
+ 'type': 'object'},
+ 'volume-tag': {'type': 'string'}},
+ 'required': ['filesystem-tag',
+ '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': {'filesystem-id': {'type': 'string'},
+ 'pool': {'type': 'string'},
+ 'size': {'type': 'integer'}},
+ 'required': ['filesystem-id',
+ 'pool',
+ 'size'],
+ 'type': 'object'},
+ 'ImportStorageDetails': {'additionalProperties': False,
+ 'properties': {'storage-tag': {'type': 'string'}},
+ 'required': ['storage-tag'],
+ 'type': 'object'},
+ 'ImportStorageParams': {'additionalProperties': False,
+ 'properties': {'kind': {'type': 'integer'},
+ 'pool': {'type': 'string'},
+ 'provider-id': {'type': 'string'},
+ 'storage-name': {'type': 'string'}},
+ 'required': ['kind',
+ 'pool',
+ 'provider-id',
+ 'storage-name'],
+ 'type': 'object'},
+ 'ImportStorageResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/ImportStorageDetails'}},
+ 'type': 'object'},
+ 'ImportStorageResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ImportStorageResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'RemoveStorage': {'additionalProperties': False,
+ 'properties': {'storage': {'items': {'$ref': '#/definitions/RemoveStorageInstance'},
+ 'type': 'array'}},
+ 'required': ['storage'],
+ 'type': 'object'},
+ 'RemoveStorageInstance': {'additionalProperties': False,
+ 'properties': {'destroy-attachments': {'type': 'boolean'},
+ 'destroy-storage': {'type': 'boolean'},
+ 'tag': {'type': 'string'}},
+ 'required': ['tag'],
+ 'type': 'object'},
+ 'StorageAddParams': {'additionalProperties': False,
+ 'properties': {'name': {'type': 'string'},
+ 'storage': {'$ref': '#/definitions/StorageConstraints'},
+ 'unit': {'type': 'string'}},
+ 'required': ['unit', 'name', 'storage'],
+ 'type': 'object'},
+ 'StorageAttachmentDetails': {'additionalProperties': False,
+ 'properties': {'life': {'type': 'string'},
+ 'location': {'type': 'string'},
+ 'machine-tag': {'type': 'string'},
+ 'storage-tag': {'type': 'string'},
+ 'unit-tag': {'type': 'string'}},
+ 'required': ['storage-tag',
+ 'unit-tag',
+ 'machine-tag'],
+ 'type': 'object'},
+ 'StorageAttachmentId': {'additionalProperties': False,
+ 'properties': {'storage-tag': {'type': 'string'},
+ 'unit-tag': {'type': 'string'}},
+ 'required': ['storage-tag',
+ 'unit-tag'],
+ 'type': 'object'},
+ 'StorageAttachmentIds': {'additionalProperties': False,
+ 'properties': {'ids': {'items': {'$ref': '#/definitions/StorageAttachmentId'},
+ 'type': 'array'}},
+ 'required': ['ids'],
+ 'type': 'object'},
+ 'StorageConstraints': {'additionalProperties': False,
+ 'properties': {'count': {'type': 'integer'},
+ 'pool': {'type': 'string'},
+ 'size': {'type': 'integer'}},
+ 'type': 'object'},
+ 'StorageDetails': {'additionalProperties': False,
+ 'properties': {'attachments': {'patternProperties': {'.*': {'$ref': '#/definitions/StorageAttachmentDetails'}},
+ 'type': 'object'},
+ 'kind': {'type': 'integer'},
+ 'life': {'type': 'string'},
+ 'owner-tag': {'type': 'string'},
+ 'persistent': {'type': 'boolean'},
+ 'status': {'$ref': '#/definitions/EntityStatus'},
+ 'storage-tag': {'type': 'string'}},
+ 'required': ['storage-tag',
+ 'owner-tag',
+ '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'},
+ 'storage-pools': {'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'},
+ 'VolumeAttachmentDetails': {'additionalProperties': False,
+ 'properties': {'VolumeAttachmentInfo': {'$ref': '#/definitions/VolumeAttachmentInfo'},
+ 'life': {'type': 'string'}},
+ 'required': ['VolumeAttachmentInfo'],
+ 'type': 'object'},
+ 'VolumeAttachmentInfo': {'additionalProperties': False,
+ 'properties': {'bus-address': {'type': 'string'},
+ 'device-link': {'type': 'string'},
+ 'device-name': {'type': 'string'},
+ 'plan-info': {'$ref': '#/definitions/VolumeAttachmentPlanInfo'},
+ 'read-only': {'type': 'boolean'}},
+ 'type': 'object'},
+ 'VolumeAttachmentPlanInfo': {'additionalProperties': False,
+ 'properties': {'device-attributes': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'device-type': {'type': 'string'}},
+ 'type': 'object'},
+ 'VolumeDetails': {'additionalProperties': False,
+ 'properties': {'info': {'$ref': '#/definitions/VolumeInfo'},
+ 'life': {'type': 'string'},
+ 'machine-attachments': {'patternProperties': {'.*': {'$ref': '#/definitions/VolumeAttachmentDetails'}},
+ 'type': 'object'},
+ 'status': {'$ref': '#/definitions/EntityStatus'},
+ 'storage': {'$ref': '#/definitions/StorageDetails'},
+ 'unit-attachments': {'patternProperties': {'.*': {'$ref': '#/definitions/VolumeAttachmentDetails'}},
+ 'type': 'object'},
+ 'volume-tag': {'type': 'string'}},
+ 'required': ['volume-tag', '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': {'hardware-id': {'type': 'string'},
+ 'persistent': {'type': 'boolean'},
+ 'pool': {'type': 'string'},
+ 'size': {'type': 'integer'},
+ 'volume-id': {'type': 'string'},
+ 'wwn': {'type': 'string'}},
+ 'required': ['volume-id', 'size', 'persistent'],
+ 'type': 'object'}},
+ 'properties': {'AddToUnit': {'properties': {'Params': {'$ref': '#/definitions/StoragesAddParams'},
+ 'Result': {'$ref': '#/definitions/AddStorageResults'}},
+ 'type': 'object'},
+ 'Attach': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'CreatePool': {'properties': {'Params': {'$ref': '#/definitions/StoragePool'}},
+ 'type': 'object'},
+ 'Detach': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'Import': {'properties': {'Params': {'$ref': '#/definitions/BulkImportStorageParams'},
+ 'Result': {'$ref': '#/definitions/ImportStorageResults'}},
+ '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'},
+ 'Remove': {'properties': {'Params': {'$ref': '#/definitions/RemoveStorage'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'StorageDetails': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/StorageDetailsResults'}},
+ 'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(AddStorageResults)
+ async def AddToUnit(self, storages):
+ '''
+ storages : typing.Sequence[~StorageAddParams]
+ Returns -> typing.Sequence[~AddStorageResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Storage',
+ request='AddToUnit',
+ version=4,
+ params=_params)
+ _params['storages'] = storages
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def Attach(self, ids):
+ '''
+ ids : typing.Sequence[~StorageAttachmentId]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Storage',
+ request='Attach',
+ version=4,
+ params=_params)
+ _params['ids'] = ids
+ 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=4,
+ params=_params)
+ _params['attrs'] = attrs
+ _params['name'] = name
+ _params['provider'] = provider
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def Detach(self, ids):
+ '''
+ ids : typing.Sequence[~StorageAttachmentId]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Storage',
+ request='Detach',
+ version=4,
+ params=_params)
+ _params['ids'] = ids
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ImportStorageResults)
+ async def Import(self, storage):
+ '''
+ storage : typing.Sequence[~ImportStorageParams]
+ Returns -> typing.Sequence[~ImportStorageResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Storage',
+ request='Import',
+ version=4,
+ params=_params)
+ _params['storage'] = storage
+ 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=4,
+ 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=4,
+ 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=4,
+ 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=4,
+ params=_params)
+ _params['filters'] = filters
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def Remove(self, storage):
+ '''
+ storage : typing.Sequence[~RemoveStorageInstance]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Storage',
+ request='Remove',
+ version=4,
+ params=_params)
+ _params['storage'] = storage
+ 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=4,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class StorageProvisionerFacade(Type):
+ name = 'StorageProvisioner'
+ version = 4
+ 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'},
+ 'WWN': {'type': 'string'}},
+ 'required': ['DeviceName',
+ 'DeviceLinks',
+ 'Label',
+ 'UUID',
+ 'HardwareId',
+ 'WWN',
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Filesystem': {'additionalProperties': False,
+ 'properties': {'filesystem-tag': {'type': 'string'},
+ 'info': {'$ref': '#/definitions/FilesystemInfo'},
+ 'volume-tag': {'type': 'string'}},
+ 'required': ['filesystem-tag', 'info'],
+ 'type': 'object'},
+ 'FilesystemAttachment': {'additionalProperties': False,
+ 'properties': {'filesystem-tag': {'type': 'string'},
+ 'info': {'$ref': '#/definitions/FilesystemAttachmentInfo'},
+ 'machine-tag': {'type': 'string'}},
+ 'required': ['filesystem-tag',
+ 'machine-tag',
+ 'info'],
+ 'type': 'object'},
+ 'FilesystemAttachmentInfo': {'additionalProperties': False,
+ 'properties': {'mount-point': {'type': 'string'},
+ 'read-only': {'type': 'boolean'}},
+ 'type': 'object'},
+ 'FilesystemAttachmentParams': {'additionalProperties': False,
+ 'properties': {'filesystem-id': {'type': 'string'},
+ 'filesystem-tag': {'type': 'string'},
+ 'instance-id': {'type': 'string'},
+ 'machine-tag': {'type': 'string'},
+ 'mount-point': {'type': 'string'},
+ 'provider': {'type': 'string'},
+ 'read-only': {'type': 'boolean'}},
+ 'required': ['filesystem-tag',
+ 'machine-tag',
+ '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': {'filesystem-attachments': {'items': {'$ref': '#/definitions/FilesystemAttachment'},
+ 'type': 'array'}},
+ 'required': ['filesystem-attachments'],
+ 'type': 'object'},
+ 'FilesystemInfo': {'additionalProperties': False,
+ 'properties': {'filesystem-id': {'type': 'string'},
+ 'pool': {'type': 'string'},
+ 'size': {'type': 'integer'}},
+ 'required': ['filesystem-id',
+ 'pool',
+ 'size'],
+ 'type': 'object'},
+ 'FilesystemParams': {'additionalProperties': False,
+ 'properties': {'attachment': {'$ref': '#/definitions/FilesystemAttachmentParams'},
+ 'attributes': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'filesystem-tag': {'type': 'string'},
+ 'provider': {'type': 'string'},
+ 'size': {'type': 'integer'},
+ 'tags': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'volume-tag': {'type': 'string'}},
+ 'required': ['filesystem-tag',
+ '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'],
+ 'type': 'object'},
+ 'LifeResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'MachineStorageId': {'additionalProperties': False,
+ 'properties': {'attachment-tag': {'type': 'string'},
+ 'machine-tag': {'type': 'string'}},
+ 'required': ['machine-tag',
+ 'attachment-tag'],
+ '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'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id',
+ 'changes'],
+ 'type': 'object'},
+ 'MachineStorageIdsWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/MachineStorageIdsWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ 'type': 'object'},
+ 'NotifyWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'RemoveFilesystemParams': {'additionalProperties': False,
+ 'properties': {'destroy': {'type': 'boolean'},
+ 'filesystem-id': {'type': 'string'},
+ 'provider': {'type': 'string'}},
+ 'required': ['provider',
+ 'filesystem-id'],
+ 'type': 'object'},
+ 'RemoveFilesystemParamsResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/RemoveFilesystemParams'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'RemoveFilesystemParamsResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/RemoveFilesystemParamsResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'RemoveVolumeParams': {'additionalProperties': False,
+ 'properties': {'destroy': {'type': 'boolean'},
+ 'provider': {'type': 'string'},
+ 'volume-id': {'type': 'string'}},
+ 'required': ['provider', 'volume-id'],
+ 'type': 'object'},
+ 'RemoveVolumeParamsResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/RemoveVolumeParams'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'RemoveVolumeParamsResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/RemoveVolumeParamsResult'},
+ 'type': 'array'}},
+ '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': ['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'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
+ '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'},
+ 'volume-tag': {'type': 'string'}},
+ 'required': ['volume-tag', 'info'],
+ 'type': 'object'},
+ 'VolumeAttachment': {'additionalProperties': False,
+ 'properties': {'info': {'$ref': '#/definitions/VolumeAttachmentInfo'},
+ 'machine-tag': {'type': 'string'},
+ 'volume-tag': {'type': 'string'}},
+ 'required': ['volume-tag',
+ 'machine-tag',
+ 'info'],
+ 'type': 'object'},
+ 'VolumeAttachmentInfo': {'additionalProperties': False,
+ 'properties': {'bus-address': {'type': 'string'},
+ 'device-link': {'type': 'string'},
+ 'device-name': {'type': 'string'},
+ 'plan-info': {'$ref': '#/definitions/VolumeAttachmentPlanInfo'},
+ 'read-only': {'type': 'boolean'}},
+ 'type': 'object'},
+ 'VolumeAttachmentParams': {'additionalProperties': False,
+ 'properties': {'instance-id': {'type': 'string'},
+ 'machine-tag': {'type': 'string'},
+ 'provider': {'type': 'string'},
+ 'read-only': {'type': 'boolean'},
+ 'volume-id': {'type': 'string'},
+ 'volume-tag': {'type': 'string'}},
+ 'required': ['volume-tag',
+ 'machine-tag',
+ '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'},
+ 'VolumeAttachmentPlan': {'additionalProperties': False,
+ 'properties': {'block-device': {'$ref': '#/definitions/BlockDevice'},
+ 'life': {'type': 'string'},
+ 'machine-tag': {'type': 'string'},
+ 'plan-info': {'$ref': '#/definitions/VolumeAttachmentPlanInfo'},
+ 'volume-tag': {'type': 'string'}},
+ 'required': ['volume-tag',
+ 'machine-tag',
+ 'plan-info'],
+ 'type': 'object'},
+ 'VolumeAttachmentPlanInfo': {'additionalProperties': False,
+ 'properties': {'device-attributes': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'device-type': {'type': 'string'}},
+ 'type': 'object'},
+ 'VolumeAttachmentPlanResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/VolumeAttachmentPlan'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'VolumeAttachmentPlanResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/VolumeAttachmentPlanResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'VolumeAttachmentPlans': {'additionalProperties': False,
+ 'properties': {'volume-plans': {'items': {'$ref': '#/definitions/VolumeAttachmentPlan'},
+ 'type': 'array'}},
+ 'required': ['volume-plans'],
+ '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': {'volume-attachments': {'items': {'$ref': '#/definitions/VolumeAttachment'},
+ 'type': 'array'}},
+ 'required': ['volume-attachments'],
+ 'type': 'object'},
+ 'VolumeInfo': {'additionalProperties': False,
+ 'properties': {'hardware-id': {'type': 'string'},
+ 'persistent': {'type': 'boolean'},
+ 'pool': {'type': 'string'},
+ 'size': {'type': 'integer'},
+ 'volume-id': {'type': 'string'},
+ 'wwn': {'type': 'string'}},
+ 'required': ['volume-id', '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'},
+ 'volume-tag': {'type': 'string'}},
+ 'required': ['volume-tag',
+ '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'}},
+ 'properties': {'AttachmentLife': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'},
+ 'Result': {'$ref': '#/definitions/LifeResults'}},
+ 'type': 'object'},
+ 'CreateVolumeAttachmentPlans': {'properties': {'Params': {'$ref': '#/definitions/VolumeAttachmentPlans'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ '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'},
+ 'Remove': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'RemoveAttachment': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'RemoveFilesystemParams': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/RemoveFilesystemParamsResults'}},
+ 'type': 'object'},
+ 'RemoveVolumeAttachmentPlan': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'RemoveVolumeParams': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/RemoveVolumeParamsResults'}},
+ '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'},
+ 'SetVolumeAttachmentPlanBlockInfo': {'properties': {'Params': {'$ref': '#/definitions/VolumeAttachmentPlans'},
+ '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'},
+ 'VolumeAttachmentPlans': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'},
+ 'Result': {'$ref': '#/definitions/VolumeAttachmentPlanResults'}},
+ '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'},
+ 'WatchApplications': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
+ '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'},
+ 'WatchMachines': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
+ 'type': 'object'},
+ 'WatchVolumeAttachmentPlans': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/MachineStorageIdsWatchResults'}},
+ '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=4,
+ params=_params)
+ _params['ids'] = ids
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def CreateVolumeAttachmentPlans(self, volume_plans):
+ '''
+ volume_plans : typing.Sequence[~VolumeAttachmentPlan]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='StorageProvisioner',
+ request='CreateVolumeAttachmentPlans',
+ version=4,
+ params=_params)
+ _params['volume-plans'] = volume_plans
+ 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=4,
+ 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=4,
+ 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=4,
+ 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=4,
+ 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=4,
+ 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=4,
+ 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=4,
+ 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='StorageProvisioner',
+ request='Remove',
+ version=4,
+ 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=4,
+ params=_params)
+ _params['ids'] = ids
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(RemoveFilesystemParamsResults)
+ async def RemoveFilesystemParams(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~RemoveFilesystemParamsResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='StorageProvisioner',
+ request='RemoveFilesystemParams',
+ version=4,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def RemoveVolumeAttachmentPlan(self, ids):
+ '''
+ ids : typing.Sequence[~MachineStorageId]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='StorageProvisioner',
+ request='RemoveVolumeAttachmentPlan',
+ version=4,
+ params=_params)
+ _params['ids'] = ids
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(RemoveVolumeParamsResults)
+ async def RemoveVolumeParams(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~RemoveVolumeParamsResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='StorageProvisioner',
+ request='RemoveVolumeParams',
+ version=4,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetFilesystemAttachmentInfo(self, filesystem_attachments):
+ '''
+ filesystem_attachments : typing.Sequence[~FilesystemAttachment]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='StorageProvisioner',
+ request='SetFilesystemAttachmentInfo',
+ version=4,
+ params=_params)
+ _params['filesystem-attachments'] = filesystem_attachments
+ 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=4,
+ 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=4,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetVolumeAttachmentInfo(self, volume_attachments):
+ '''
+ volume_attachments : typing.Sequence[~VolumeAttachment]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='StorageProvisioner',
+ request='SetVolumeAttachmentInfo',
+ version=4,
+ params=_params)
+ _params['volume-attachments'] = volume_attachments
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetVolumeAttachmentPlanBlockInfo(self, volume_plans):
+ '''
+ volume_plans : typing.Sequence[~VolumeAttachmentPlan]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='StorageProvisioner',
+ request='SetVolumeAttachmentPlanBlockInfo',
+ version=4,
+ params=_params)
+ _params['volume-plans'] = volume_plans
+ 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=4,
+ 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=4,
+ 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=4,
+ params=_params)
+ _params['ids'] = ids
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(VolumeAttachmentPlanResults)
+ async def VolumeAttachmentPlans(self, ids):
+ '''
+ ids : typing.Sequence[~MachineStorageId]
+ Returns -> typing.Sequence[~VolumeAttachmentPlanResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='StorageProvisioner',
+ request='VolumeAttachmentPlans',
+ version=4,
+ 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=4,
+ 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=4,
+ 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=4,
+ 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=4,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsWatchResult)
+ async def WatchApplications(self):
+ '''
+
+ Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='StorageProvisioner',
+ request='WatchApplications',
+ version=4,
+ params=_params)
+
+ 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=4,
+ 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=4,
+ 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=4,
+ params=_params)
+ _params['entities'] = entities
+ 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=4,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(MachineStorageIdsWatchResults)
+ async def WatchVolumeAttachmentPlans(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~MachineStorageIdsWatchResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='StorageProvisioner',
+ request='WatchVolumeAttachmentPlans',
+ version=4,
+ 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=4,
+ 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=4,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
class UniterFacade(Type):
name = 'Uniter'
version = 4
async def APIAddresses(self):
'''
- Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence<+T_co>[str]]
+ Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence[str]]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='APIAddresses', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='APIAddresses',
+ version=4,
+ params=_params)
reply = await self.rpc(msg)
return reply
async def APIHostPorts(self):
'''
- Returns -> typing.Sequence<+T_co>[~HostPort]<~HostPort>
+ Returns -> typing.Sequence[~HostPort]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='APIHostPorts', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='APIHostPorts',
+ version=4,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(ActionResults)
async def Actions(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ActionResult]<~ActionResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ActionResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='Actions', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='Actions',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def AddMetricBatches(self, batches):
'''
- batches : typing.Sequence<+T_co>[~MetricBatchParam]<~MetricBatchParam>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ batches : typing.Sequence[~MetricBatchParam]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='AddMetricBatches', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='AddMetricBatches',
+ version=4,
+ params=_params)
_params['batches'] = batches
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def AddUnitStorage(self, storages):
'''
- storages : typing.Sequence<+T_co>[~StorageAddParams]<~StorageAddParams>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ storages : typing.Sequence[~StorageAddParams]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='AddUnitStorage', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='AddUnitStorage',
+ version=4,
+ params=_params)
_params['storages'] = storages
reply = await self.rpc(msg)
return reply
@ReturnMapping(MachinePortsResults)
async def AllMachinePorts(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~MachinePortsResult]<~MachinePortsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~MachinePortsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='AllMachinePorts', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='AllMachinePorts',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ApplicationStatusResults)
async def ApplicationStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ApplicationStatusResult]<~ApplicationStatusResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ApplicationStatusResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ApplicationStatus', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='ApplicationStatus',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def AssignedMachine(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='AssignedMachine', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='AssignedMachine',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def AvailabilityZone(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='AvailabilityZone', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='AvailabilityZone',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def BeginActions(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='BeginActions', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='BeginActions',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
async def CACert(self):
'''
- Returns -> typing.Sequence<+T_co>[int]
+ Returns -> typing.Sequence[int]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='CACert', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='CACert',
+ version=4,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def CharmArchiveSha256(self, urls):
'''
- urls : typing.Sequence<+T_co>[~CharmURL]<~CharmURL>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ urls : typing.Sequence[~CharmURL]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='CharmArchiveSha256', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='CharmArchiveSha256',
+ version=4,
+ params=_params)
_params['urls'] = urls
reply = await self.rpc(msg)
return reply
@ReturnMapping(IntResults)
async def CharmModifiedVersion(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~IntResult]<~IntResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~IntResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='CharmModifiedVersion', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='CharmModifiedVersion',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringBoolResults)
async def CharmURL(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringBoolResult]<~StringBoolResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringBoolResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='CharmURL', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='CharmURL',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def ClearResolved(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ClearResolved', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='ClearResolved',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def ClosePorts(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityPortRange]<~EntityPortRange>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityPortRange]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ClosePorts', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='ClosePorts',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ConfigSettingsResults)
async def ConfigSettings(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ConfigSettingsResult]<~ConfigSettingsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ConfigSettingsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ConfigSettings', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='ConfigSettings',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='CurrentModel', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='CurrentModel',
+ version=4,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def Destroy(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='Destroy', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='Destroy',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def DestroyAllSubordinates(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='DestroyAllSubordinates', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='DestroyAllSubordinates',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def DestroyUnitStorageAttachments(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='DestroyUnitStorageAttachments', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='DestroyUnitStorageAttachments',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def EnsureDead(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='EnsureDead', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='EnsureDead',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def EnterScope(self, relation_units):
'''
- relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ relation_units : typing.Sequence[~RelationUnit]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='EnterScope', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='EnterScope',
+ version=4,
+ params=_params)
_params['relation-units'] = relation_units
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def FinishActions(self, results):
'''
- results : typing.Sequence<+T_co>[~ActionExecutionResult]<~ActionExecutionResult>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ results : typing.Sequence[~ActionExecutionResult]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='FinishActions', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='FinishActions',
+ version=4,
+ params=_params)
_params['results'] = results
reply = await self.rpc(msg)
return reply
@ReturnMapping(MeterStatusResults)
async def GetMeterStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~MeterStatusResult]<~MeterStatusResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~MeterStatusResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='GetMeterStatus', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='GetMeterStatus',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringBoolResults)
async def GetPrincipal(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringBoolResult]<~StringBoolResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringBoolResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='GetPrincipal', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='GetPrincipal',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(BoolResults)
async def HasSubordinates(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~BoolResult]<~BoolResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~BoolResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='HasSubordinates', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='HasSubordinates',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringsResults)
async def JoinedRelations(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringsResult]<~StringsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='JoinedRelations', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='JoinedRelations',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def LeaveScope(self, relation_units):
'''
- relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ relation_units : typing.Sequence[~RelationUnit]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='LeaveScope', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='LeaveScope',
+ version=4,
+ params=_params)
_params['relation-units'] = relation_units
reply = await self.rpc(msg)
return reply
@ReturnMapping(LifeResults)
async def Life(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~LifeResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='Life', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='Life',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def Merge(self, params):
'''
- params : typing.Sequence<+T_co>[~MergeLeadershipSettingsParam]<~MergeLeadershipSettingsParam>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ params : typing.Sequence[~MergeLeadershipSettingsParam]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='Merge', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='Merge',
+ version=4,
+ params=_params)
_params['params'] = params
reply = await self.rpc(msg)
return reply
async def ModelConfig(self):
'''
- Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ Returns -> typing.Mapping[str, typing.Any]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ModelConfig', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='ModelConfig',
+ version=4,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ModelUUID', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='ModelUUID',
+ version=4,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(UnitNetworkConfigResults)
async def NetworkConfig(self, args):
'''
- args : typing.Sequence<+T_co>[~UnitNetworkConfig]<~UnitNetworkConfig>
- Returns -> typing.Sequence<+T_co>[~UnitNetworkConfigResult]<~UnitNetworkConfigResult>
+ args : typing.Sequence[~UnitNetworkConfig]
+ Returns -> typing.Sequence[~UnitNetworkConfigResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='NetworkConfig', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='NetworkConfig',
+ version=4,
+ params=_params)
_params['args'] = args
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def OpenPorts(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityPortRange]<~EntityPortRange>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityPortRange]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='OpenPorts', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='OpenPorts',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def PrivateAddress(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='PrivateAddress', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='PrivateAddress',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ProviderType', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='ProviderType',
+ version=4,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def PublicAddress(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='PublicAddress', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='PublicAddress',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(GetLeadershipSettingsBulkResults)
async def Read(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~GetLeadershipSettingsResult]<~GetLeadershipSettingsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~GetLeadershipSettingsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='Read', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='Read',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(SettingsResults)
async def ReadRemoteSettings(self, relation_unit_pairs):
'''
- relation_unit_pairs : typing.Sequence<+T_co>[~RelationUnitPair]<~RelationUnitPair>
- Returns -> typing.Sequence<+T_co>[~SettingsResult]<~SettingsResult>
+ relation_unit_pairs : typing.Sequence[~RelationUnitPair]
+ Returns -> typing.Sequence[~SettingsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ReadRemoteSettings', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='ReadRemoteSettings',
+ version=4,
+ params=_params)
_params['relation-unit-pairs'] = relation_unit_pairs
reply = await self.rpc(msg)
return reply
@ReturnMapping(SettingsResults)
async def ReadSettings(self, relation_units):
'''
- relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit>
- Returns -> typing.Sequence<+T_co>[~SettingsResult]<~SettingsResult>
+ relation_units : typing.Sequence[~RelationUnit]
+ Returns -> typing.Sequence[~SettingsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ReadSettings', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='ReadSettings',
+ version=4,
+ params=_params)
_params['relation-units'] = relation_units
reply = await self.rpc(msg)
return reply
@ReturnMapping(RelationResults)
async def Relation(self, relation_units):
'''
- relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit>
- Returns -> typing.Sequence<+T_co>[~RelationResult]<~RelationResult>
+ relation_units : typing.Sequence[~RelationUnit]
+ Returns -> typing.Sequence[~RelationResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='Relation', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='Relation',
+ version=4,
+ params=_params)
_params['relation-units'] = relation_units
reply = await self.rpc(msg)
return reply
@ReturnMapping(RelationResults)
async def RelationById(self, relation_ids):
'''
- relation_ids : typing.Sequence<+T_co>[int]
- Returns -> typing.Sequence<+T_co>[~RelationResult]<~RelationResult>
+ relation_ids : typing.Sequence[int]
+ Returns -> typing.Sequence[~RelationResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='RelationById', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='RelationById',
+ version=4,
+ params=_params)
_params['relation-ids'] = relation_ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def RemoveStorageAttachments(self, ids):
'''
- ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ ids : typing.Sequence[~StorageAttachmentId]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='RemoveStorageAttachments', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='RemoveStorageAttachments',
+ version=4,
+ params=_params)
_params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def RequestReboot(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='RequestReboot', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='RequestReboot',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ResolvedModeResults)
async def Resolved(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ResolvedModeResult]<~ResolvedModeResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ResolvedModeResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='Resolved', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='Resolved',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetAgentStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='SetAgentStatus', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='SetAgentStatus',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetApplicationStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='SetApplicationStatus', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='SetApplicationStatus',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetCharmURL(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityCharmURL]<~EntityCharmURL>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityCharmURL]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='SetCharmURL', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='SetCharmURL',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='SetStatus', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='SetStatus',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetUnitStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='SetUnitStatus', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='SetUnitStatus',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetWorkloadVersion(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityWorkloadVersion]<~EntityWorkloadVersion>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityWorkloadVersion]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='SetWorkloadVersion', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='SetWorkloadVersion',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(LifeResults)
async def StorageAttachmentLife(self, ids):
'''
- ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId>
- Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult>
+ ids : typing.Sequence[~StorageAttachmentId]
+ Returns -> typing.Sequence[~LifeResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='StorageAttachmentLife', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='StorageAttachmentLife',
+ version=4,
+ params=_params)
_params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(StorageAttachmentResults)
async def StorageAttachments(self, ids):
'''
- ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId>
- Returns -> typing.Sequence<+T_co>[~StorageAttachmentResult]<~StorageAttachmentResult>
+ ids : typing.Sequence[~StorageAttachmentId]
+ Returns -> typing.Sequence[~StorageAttachmentResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='StorageAttachments', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='StorageAttachments',
+ version=4,
+ params=_params)
_params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(StatusResults)
async def UnitStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StatusResult]<~StatusResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StatusResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='UnitStatus', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='UnitStatus',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StorageAttachmentIdsResults)
async def UnitStorageAttachments(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StorageAttachmentIdsResult]<~StorageAttachmentIdsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StorageAttachmentIdsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='UnitStorageAttachments', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='UnitStorageAttachments',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def UpdateSettings(self, relation_units):
'''
- relation_units : typing.Sequence<+T_co>[~RelationUnitSettings]<~RelationUnitSettings>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ relation_units : typing.Sequence[~RelationUnitSettings]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='UpdateSettings', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='UpdateSettings',
+ version=4,
+ params=_params)
_params['relation-units'] = relation_units
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResults)
async def Watch(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='Watch', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='Watch',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchAPIHostPorts', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchAPIHostPorts',
+ version=4,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringsWatchResults)
async def WatchActionNotifications(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchActionNotifications', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchActionNotifications',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringsWatchResults)
async def WatchApplicationRelations(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchApplicationRelations', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchApplicationRelations',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResults)
async def WatchConfigSettings(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchConfigSettings', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchConfigSettings',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchForModelConfigChanges', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchForModelConfigChanges',
+ version=4,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResults)
async def WatchLeadershipSettings(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchLeadershipSettings', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchLeadershipSettings',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResults)
async def WatchMeterStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchMeterStatus', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchMeterStatus',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(RelationUnitsWatchResults)
async def WatchRelationUnits(self, relation_units):
'''
- relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit>
- Returns -> typing.Sequence<+T_co>[~RelationUnitsWatchResult]<~RelationUnitsWatchResult>
+ relation_units : typing.Sequence[~RelationUnit]
+ Returns -> typing.Sequence[~RelationUnitsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchRelationUnits', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchRelationUnits',
+ version=4,
+ params=_params)
_params['relation-units'] = relation_units
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResults)
async def WatchStorageAttachments(self, ids):
'''
- ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ ids : typing.Sequence[~StorageAttachmentId]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchStorageAttachments', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchStorageAttachments',
+ version=4,
+ params=_params)
_params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResults)
async def WatchUnitAddresses(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchUnitAddresses', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchUnitAddresses',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringsWatchResults)
async def WatchUnitStorageAttachments(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchUnitStorageAttachments', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchUnitStorageAttachments',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def WorkloadVersion(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WorkloadVersion', version=4, params=_params)
+ msg = dict(type='Uniter',
+ request='WorkloadVersion',
+ version=4,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(AddRelationResults)
async def AddRelation(self, endpoints):
'''
- endpoints : typing.Sequence<+T_co>[str]
- Returns -> typing.Mapping<~KT, +VT_co>[str, ~CharmRelation]<~CharmRelation>
+ endpoints : typing.Sequence[str]
+ Returns -> typing.Mapping[str, ~CharmRelation]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='AddRelation', version=5, params=_params)
+ msg = dict(type='Application',
+ request='AddRelation',
+ version=5,
+ params=_params)
_params['endpoints'] = endpoints
reply = await self.rpc(msg)
return reply
'''
application : str
num_units : int
- placement : typing.Sequence<+T_co>[~Placement]<~Placement>
- Returns -> typing.Sequence<+T_co>[str]
+ placement : typing.Sequence[~Placement]
+ Returns -> typing.Sequence[str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='AddUnits', version=5, params=_params)
+ msg = dict(type='Application',
+ request='AddUnits',
+ version=5,
+ params=_params)
_params['application'] = application
_params['num-units'] = num_units
_params['placement'] = placement
async def CharmRelations(self, application):
'''
application : str
- Returns -> typing.Sequence<+T_co>[str]
+ Returns -> typing.Sequence[str]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='CharmRelations', version=5, params=_params)
+ msg = dict(type='Application',
+ request='CharmRelations',
+ version=5,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def Consume(self, args):
'''
- args : typing.Sequence<+T_co>[~ConsumeApplicationArg]<~ConsumeApplicationArg>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ args : typing.Sequence[~ConsumeApplicationArg]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Consume', version=5, params=_params)
+ msg = dict(type='Application',
+ request='Consume',
+ version=5,
+ params=_params)
_params['args'] = args
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def Deploy(self, applications):
'''
- applications : typing.Sequence<+T_co>[~ApplicationDeploy]<~ApplicationDeploy>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ applications : typing.Sequence[~ApplicationDeploy]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Deploy', version=5, params=_params)
+ msg = dict(type='Application',
+ request='Deploy',
+ version=5,
+ params=_params)
_params['applications'] = applications
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Destroy', version=5, params=_params)
+ msg = dict(type='Application',
+ request='Destroy',
+ version=5,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
@ReturnMapping(DestroyApplicationResults)
async def DestroyApplication(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~DestroyApplicationResult]<~DestroyApplicationResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~DestroyApplicationResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='DestroyApplication', version=5, params=_params)
+ msg = dict(type='Application',
+ request='DestroyApplication',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(None)
async def DestroyRelation(self, endpoints):
'''
- endpoints : typing.Sequence<+T_co>[str]
+ endpoints : typing.Sequence[str]
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='DestroyRelation', version=5, params=_params)
+ msg = dict(type='Application',
+ request='DestroyRelation',
+ version=5,
+ params=_params)
_params['endpoints'] = endpoints
reply = await self.rpc(msg)
return reply
@ReturnMapping(DestroyUnitResults)
async def DestroyUnit(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~DestroyUnitResult]<~DestroyUnitResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~DestroyUnitResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='DestroyUnit', version=5, params=_params)
+ msg = dict(type='Application',
+ request='DestroyUnit',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(None)
async def DestroyUnits(self, unit_names):
'''
- unit_names : typing.Sequence<+T_co>[str]
+ unit_names : typing.Sequence[str]
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='DestroyUnits', version=5, params=_params)
+ msg = dict(type='Application',
+ request='DestroyUnits',
+ version=5,
+ params=_params)
_params['unit-names'] = unit_names
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Expose', version=5, params=_params)
+ msg = dict(type='Application',
+ request='Expose',
+ version=5,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
async def Get(self, application):
'''
application : str
- Returns -> typing.Union[str, typing.Mapping<~KT, +VT_co>[str, typing.Any], _ForwardRef('Value')]
+ Returns -> typing.Union[str, typing.Mapping[str, typing.Any], _ForwardRef('Value')]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Get', version=5, params=_params)
+ msg = dict(type='Application',
+ request='Get',
+ version=5,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='GetCharmURL', version=5, params=_params)
+ msg = dict(type='Application',
+ request='GetCharmURL',
+ version=5,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='GetConstraints', version=5, params=_params)
+ msg = dict(type='Application',
+ request='GetConstraints',
+ version=5,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
async def Set(self, application, options):
'''
application : str
- options : typing.Mapping<~KT, +VT_co>[str, str]
+ options : typing.Mapping[str, str]
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Set', version=5, params=_params)
+ msg = dict(type='Application',
+ request='Set',
+ version=5,
+ params=_params)
_params['application'] = application
_params['options'] = options
reply = await self.rpc(msg)
application : str
channel : str
charm_url : str
- config_settings : typing.Mapping<~KT, +VT_co>[str, str]
+ config_settings : typing.Mapping[str, str]
config_settings_yaml : str
force_series : bool
force_units : bool
- resource_ids : typing.Mapping<~KT, +VT_co>[str, str]
- storage_constraints : typing.Mapping<~KT, +VT_co>[str, ~StorageConstraints]<~StorageConstraints>
+ resource_ids : typing.Mapping[str, str]
+ storage_constraints : typing.Mapping[str, ~StorageConstraints]
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='SetCharm', version=5, params=_params)
+ msg = dict(type='Application',
+ request='SetCharm',
+ version=5,
+ params=_params)
_params['application'] = application
_params['channel'] = channel
_params['charm-url'] = charm_url
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='SetConstraints', version=5, params=_params)
+ msg = dict(type='Application',
+ request='SetConstraints',
+ version=5,
+ params=_params)
_params['application'] = application
_params['constraints'] = constraints
reply = await self.rpc(msg)
@ReturnMapping(ErrorResults)
async def SetMetricCredentials(self, creds):
'''
- creds : typing.Sequence<+T_co>[~ApplicationMetricCredential]<~ApplicationMetricCredential>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ creds : typing.Sequence[~ApplicationMetricCredential]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='SetMetricCredentials', version=5, params=_params)
+ msg = dict(type='Application',
+ request='SetMetricCredentials',
+ version=5,
+ params=_params)
_params['creds'] = creds
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Unexpose', version=5, params=_params)
+ msg = dict(type='Application',
+ request='Unexpose',
+ version=5,
+ params=_params)
_params['application'] = application
reply = await self.rpc(msg)
return reply
async def Unset(self, application, options):
'''
application : str
- options : typing.Sequence<+T_co>[str]
+ options : typing.Sequence[str]
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Unset', version=5, params=_params)
+ msg = dict(type='Application',
+ request='Unset',
+ version=5,
+ params=_params)
_params['application'] = application
_params['options'] = options
reply = await self.rpc(msg)
force_charm_url : bool
force_series : bool
min_units : int
- settings : typing.Mapping<~KT, +VT_co>[str, str]
+ settings : typing.Mapping[str, str]
settings_yaml : str
Returns -> None
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Application', request='Update', version=5, params=_params)
+ msg = dict(type='Application',
+ request='Update',
+ version=5,
+ params=_params)
_params['application'] = application
_params['charm-url'] = charm_url
_params['constraints'] = constraints
+class ControllerFacade(Type):
+ name = 'Controller'
+ version = 5
+ schema = {'definitions': {'AllWatcherId': {'additionalProperties': False,
+ 'properties': {'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
+ 'type': 'object'},
+ 'CloudCredential': {'additionalProperties': False,
+ 'properties': {'attrs': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'auth-type': {'type': 'string'},
+ 'redacted': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['auth-type'],
+ 'type': 'object'},
+ 'CloudSpec': {'additionalProperties': False,
+ 'properties': {'cacertificates': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'credential': {'$ref': '#/definitions/CloudCredential'},
+ 'endpoint': {'type': 'string'},
+ 'identity-endpoint': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'region': {'type': 'string'},
+ 'storage-endpoint': {'type': 'string'},
+ 'type': {'type': 'string'}},
+ 'required': ['type', 'name'],
+ 'type': 'object'},
+ 'CloudSpecResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/CloudSpec'}},
+ 'type': 'object'},
+ 'CloudSpecResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/CloudSpecResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'ConfigValue': {'additionalProperties': False,
+ 'properties': {'source': {'type': 'string'},
+ 'value': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'required': ['value', 'source'],
+ 'type': 'object'},
+ 'ControllerAPIInfoResult': {'additionalProperties': False,
+ 'properties': {'addresses': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'cacert': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['addresses',
+ 'cacert'],
+ 'type': 'object'},
+ 'ControllerAPIInfoResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ControllerAPIInfoResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'ControllerConfigResult': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'ControllerConfigSet': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'DestroyControllerArgs': {'additionalProperties': False,
+ 'properties': {'destroy-models': {'type': 'boolean'},
+ 'destroy-storage': {'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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'HostedModelConfig': {'additionalProperties': False,
+ 'properties': {'cloud-spec': {'$ref': '#/definitions/CloudSpec'},
+ 'config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'name': {'type': 'string'},
+ 'owner': {'type': 'string'}},
+ 'required': ['name', 'owner'],
+ 'type': 'object'},
+ 'HostedModelConfigsResults': {'additionalProperties': False,
+ 'properties': {'models': {'items': {'$ref': '#/definitions/HostedModelConfig'},
+ 'type': 'array'}},
+ 'required': ['models'],
+ 'type': 'object'},
+ 'InitiateMigrationArgs': {'additionalProperties': False,
+ 'properties': {'specs': {'items': {'$ref': '#/definitions/MigrationSpec'},
+ 'type': 'array'}},
+ 'required': ['specs'],
+ 'type': 'object'},
+ 'InitiateMigrationResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'migration-id': {'type': 'string'},
+ 'model-tag': {'type': 'string'}},
+ 'required': ['model-tag',
+ 'migration-id'],
+ 'type': 'object'},
+ 'InitiateMigrationResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/InitiateMigrationResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'MachineHardware': {'additionalProperties': False,
+ 'properties': {'arch': {'type': 'string'},
+ 'availability-zone': {'type': 'string'},
+ 'cores': {'type': 'integer'},
+ 'cpu-power': {'type': 'integer'},
+ 'mem': {'type': 'integer'},
+ 'root-disk': {'type': 'integer'},
+ 'tags': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'MigrationSpec': {'additionalProperties': False,
+ 'properties': {'model-tag': {'type': 'string'},
+ 'target-info': {'$ref': '#/definitions/MigrationTargetInfo'}},
+ 'required': ['model-tag', 'target-info'],
+ 'type': 'object'},
+ 'MigrationTargetInfo': {'additionalProperties': False,
+ 'properties': {'addrs': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'auth-tag': {'type': 'string'},
+ 'ca-cert': {'type': 'string'},
+ 'controller-tag': {'type': 'string'},
+ 'macaroons': {'type': 'string'},
+ 'password': {'type': 'string'}},
+ 'required': ['controller-tag',
+ 'addrs',
+ 'ca-cert',
+ 'auth-tag'],
+ 'type': 'object'},
+ 'Model': {'additionalProperties': False,
+ 'properties': {'name': {'type': 'string'},
+ 'owner-tag': {'type': 'string'},
+ 'type': {'type': 'string'},
+ 'uuid': {'type': 'string'}},
+ 'required': ['name', 'uuid', 'type', 'owner-tag'],
+ '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': {'.*': {'$ref': '#/definitions/ConfigValue'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'ModelFilesystemInfo': {'additionalProperties': False,
+ 'properties': {'detachable': {'type': 'boolean'},
+ 'id': {'type': 'string'},
+ 'message': {'type': 'string'},
+ 'provider-id': {'type': 'string'},
+ 'status': {'type': 'string'}},
+ 'required': ['id'],
+ 'type': 'object'},
+ 'ModelMachineInfo': {'additionalProperties': False,
+ 'properties': {'hardware': {'$ref': '#/definitions/MachineHardware'},
+ 'has-vote': {'type': 'boolean'},
+ 'id': {'type': 'string'},
+ 'instance-id': {'type': 'string'},
+ 'message': {'type': 'string'},
+ 'status': {'type': 'string'},
+ 'wants-vote': {'type': 'boolean'}},
+ 'required': ['id'],
+ 'type': 'object'},
+ 'ModelStatus': {'additionalProperties': False,
+ 'properties': {'application-count': {'type': 'integer'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'filesystems': {'items': {'$ref': '#/definitions/ModelFilesystemInfo'},
+ 'type': 'array'},
+ 'hosted-machine-count': {'type': 'integer'},
+ 'life': {'type': 'string'},
+ 'machines': {'items': {'$ref': '#/definitions/ModelMachineInfo'},
+ 'type': 'array'},
+ 'model-tag': {'type': 'string'},
+ 'owner-tag': {'type': 'string'},
+ 'volumes': {'items': {'$ref': '#/definitions/ModelVolumeInfo'},
+ 'type': 'array'}},
+ 'required': ['model-tag',
+ 'life',
+ 'hosted-machine-count',
+ 'application-count',
+ 'owner-tag'],
+ 'type': 'object'},
+ 'ModelStatusResults': {'additionalProperties': False,
+ 'properties': {'models': {'items': {'$ref': '#/definitions/ModelStatus'},
+ 'type': 'array'}},
+ 'required': ['models'],
+ 'type': 'object'},
+ 'ModelTag': {'additionalProperties': False, 'type': 'object'},
+ 'ModelVolumeInfo': {'additionalProperties': False,
+ 'properties': {'detachable': {'type': 'boolean'},
+ 'id': {'type': 'string'},
+ 'message': {'type': 'string'},
+ 'provider-id': {'type': 'string'},
+ 'status': {'type': 'string'}},
+ 'required': ['id'],
+ 'type': 'object'},
+ 'ModifyControllerAccess': {'additionalProperties': False,
+ 'properties': {'access': {'type': 'string'},
+ 'action': {'type': 'string'},
+ 'user-tag': {'type': 'string'}},
+ 'required': ['user-tag',
+ 'action',
+ 'access'],
+ 'type': 'object'},
+ 'ModifyControllerAccessRequest': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'$ref': '#/definitions/ModifyControllerAccess'},
+ 'type': 'array'}},
+ 'required': ['changes'],
+ 'type': 'object'},
+ 'RemoveBlocksArgs': {'additionalProperties': False,
+ 'properties': {'all': {'type': 'boolean'}},
+ 'required': ['all'],
+ 'type': 'object'},
+ 'UserAccess': {'additionalProperties': False,
+ 'properties': {'access': {'type': 'string'},
+ 'user-tag': {'type': 'string'}},
+ 'required': ['user-tag', 'access'],
+ 'type': 'object'},
+ 'UserAccessResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/UserAccess'}},
+ 'type': 'object'},
+ 'UserAccessResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/UserAccessResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'UserModel': {'additionalProperties': False,
+ 'properties': {'last-connection': {'format': 'date-time',
+ 'type': 'string'},
+ 'model': {'$ref': '#/definitions/Model'}},
+ 'required': ['model', 'last-connection'],
+ 'type': 'object'},
+ 'UserModelList': {'additionalProperties': False,
+ 'properties': {'user-models': {'items': {'$ref': '#/definitions/UserModel'},
+ 'type': 'array'}},
+ 'required': ['user-models'],
+ 'type': 'object'}},
+ 'properties': {'AllModels': {'properties': {'Result': {'$ref': '#/definitions/UserModelList'}},
+ 'type': 'object'},
+ 'CloudSpec': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/CloudSpecResults'}},
+ 'type': 'object'},
+ 'ConfigSet': {'properties': {'Params': {'$ref': '#/definitions/ControllerConfigSet'}},
+ 'type': 'object'},
+ 'ControllerAPIInfoForModels': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ControllerAPIInfoResults'}},
+ 'type': 'object'},
+ 'ControllerConfig': {'properties': {'Result': {'$ref': '#/definitions/ControllerConfigResult'}},
+ 'type': 'object'},
+ 'DestroyController': {'properties': {'Params': {'$ref': '#/definitions/DestroyControllerArgs'}},
+ 'type': 'object'},
+ 'GetCloudSpec': {'properties': {'Params': {'$ref': '#/definitions/ModelTag'},
+ 'Result': {'$ref': '#/definitions/CloudSpecResult'}},
+ 'type': 'object'},
+ 'GetControllerAccess': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/UserAccessResults'}},
+ 'type': 'object'},
+ 'HostedModelConfigs': {'properties': {'Result': {'$ref': '#/definitions/HostedModelConfigsResults'}},
+ 'type': 'object'},
+ 'InitiateMigration': {'properties': {'Params': {'$ref': '#/definitions/InitiateMigrationArgs'},
+ 'Result': {'$ref': '#/definitions/InitiateMigrationResults'}},
+ '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'},
+ 'ModifyControllerAccess': {'properties': {'Params': {'$ref': '#/definitions/ModifyControllerAccessRequest'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ '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=5,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(CloudSpecResults)
+ async def CloudSpec(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~CloudSpecResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Controller',
+ request='CloudSpec',
+ version=5,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def ConfigSet(self, config):
+ '''
+ config : typing.Mapping[str, typing.Any]
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Controller',
+ request='ConfigSet',
+ version=5,
+ params=_params)
+ _params['config'] = config
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ControllerAPIInfoResults)
+ async def ControllerAPIInfoForModels(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ControllerAPIInfoResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Controller',
+ request='ControllerAPIInfoForModels',
+ version=5,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ControllerConfigResult)
+ async def ControllerConfig(self):
+ '''
+
+ Returns -> typing.Mapping[str, typing.Any]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Controller',
+ request='ControllerConfig',
+ version=5,
+ 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=5,
+ params=_params)
+ _params['destroy-models'] = destroy_models
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(CloudSpecResult)
+ async def GetCloudSpec(self):
+ '''
+
+ Returns -> typing.Union[_ForwardRef('Error'), _ForwardRef('CloudSpec')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Controller',
+ request='GetCloudSpec',
+ version=5,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(UserAccessResults)
+ async def GetControllerAccess(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~UserAccessResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Controller',
+ request='GetControllerAccess',
+ version=5,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(HostedModelConfigsResults)
+ async def HostedModelConfigs(self):
+ '''
+
+ Returns -> typing.Sequence[~HostedModelConfig]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Controller',
+ request='HostedModelConfigs',
+ version=5,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(InitiateMigrationResults)
+ async def InitiateMigration(self, specs):
+ '''
+ specs : typing.Sequence[~MigrationSpec]
+ Returns -> typing.Sequence[~InitiateMigrationResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Controller',
+ request='InitiateMigration',
+ version=5,
+ 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=5,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ModelConfigResults)
+ async def ModelConfig(self):
+ '''
+
+ Returns -> typing.Mapping[str, ~ConfigValue]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Controller',
+ request='ModelConfig',
+ version=5,
+ 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=5,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def ModifyControllerAccess(self, changes):
+ '''
+ changes : typing.Sequence[~ModifyControllerAccess]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Controller',
+ request='ModifyControllerAccess',
+ version=5,
+ params=_params)
+ _params['changes'] = changes
+ 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=5,
+ 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=5,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class FirewallerFacade(Type):
+ name = 'Firewaller'
+ version = 5
+ schema = {'definitions': {'BoolResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'boolean'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'BoolResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/BoolResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'CloudCredential': {'additionalProperties': False,
+ 'properties': {'attrs': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'auth-type': {'type': 'string'},
+ 'redacted': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['auth-type'],
+ 'type': 'object'},
+ 'CloudSpec': {'additionalProperties': False,
+ 'properties': {'cacertificates': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'credential': {'$ref': '#/definitions/CloudCredential'},
+ 'endpoint': {'type': 'string'},
+ 'identity-endpoint': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'region': {'type': 'string'},
+ 'storage-endpoint': {'type': 'string'},
+ 'type': {'type': 'string'}},
+ 'required': ['type', 'name'],
+ 'type': 'object'},
+ 'CloudSpecResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/CloudSpec'}},
+ 'type': 'object'},
+ 'CloudSpecResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/CloudSpecResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'ControllerAPIInfoResult': {'additionalProperties': False,
+ 'properties': {'addresses': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'cacert': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['addresses',
+ 'cacert'],
+ 'type': 'object'},
+ 'ControllerAPIInfoResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ControllerAPIInfoResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'ControllerConfigResult': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'FirewallRule': {'additionalProperties': False,
+ 'properties': {'known-service': {'type': 'string'},
+ 'whitelist-cidrs': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['known-service'],
+ 'type': 'object'},
+ 'KnownServiceArgs': {'additionalProperties': False,
+ 'properties': {'known-services': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['known-services'],
+ 'type': 'object'},
+ 'LifeResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'life': {'type': 'string'}},
+ 'required': ['life'],
+ 'type': 'object'},
+ 'LifeResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'ListFirewallRulesResults': {'additionalProperties': False,
+ 'properties': {'Rules': {'items': {'$ref': '#/definitions/FirewallRule'},
+ 'type': 'array'}},
+ 'required': ['Rules'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, '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'},
+ 'MachinePortRange': {'additionalProperties': False,
+ 'properties': {'port-range': {'$ref': '#/definitions/PortRange'},
+ 'relation-tag': {'type': 'string'},
+ 'unit-tag': {'type': 'string'}},
+ 'required': ['unit-tag',
+ 'relation-tag',
+ 'port-range'],
+ 'type': 'object'},
+ 'MachinePorts': {'additionalProperties': False,
+ 'properties': {'machine-tag': {'type': 'string'},
+ 'subnet-tag': {'type': 'string'}},
+ 'required': ['machine-tag', 'subnet-tag'],
+ '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': ['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'},
+ 'ModelTag': {'additionalProperties': False, 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ 'type': 'object'},
+ 'NotifyWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'PortRange': {'additionalProperties': False,
+ 'properties': {'from-port': {'type': 'integer'},
+ 'protocol': {'type': 'string'},
+ 'to-port': {'type': 'integer'}},
+ 'required': ['from-port', 'to-port', 'protocol'],
+ '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': ['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'}},
+ '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'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
+ 'type': 'object'},
+ 'StringsWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'}},
+ 'properties': {'AreManuallyProvisioned': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/BoolResults'}},
+ 'type': 'object'},
+ 'CloudSpec': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/CloudSpecResults'}},
+ 'type': 'object'},
+ 'ControllerAPIInfoForModels': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ControllerAPIInfoResults'}},
+ 'type': 'object'},
+ 'ControllerConfig': {'properties': {'Result': {'$ref': '#/definitions/ControllerConfigResult'}},
+ 'type': 'object'},
+ 'FirewallRules': {'properties': {'Params': {'$ref': '#/definitions/KnownServiceArgs'},
+ 'Result': {'$ref': '#/definitions/ListFirewallRulesResults'}},
+ 'type': 'object'},
+ 'GetAssignedMachine': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/StringResults'}},
+ 'type': 'object'},
+ 'GetCloudSpec': {'properties': {'Params': {'$ref': '#/definitions/ModelTag'},
+ 'Result': {'$ref': '#/definitions/CloudSpecResult'}},
+ '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'},
+ 'MacaroonForRelations': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/MacaroonResults'}},
+ 'type': 'object'},
+ 'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}},
+ 'type': 'object'},
+ 'SetRelationsStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'Watch': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
+ 'type': 'object'},
+ 'WatchEgressAddressesForRelations': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/StringsWatchResults'}},
+ 'type': 'object'},
+ 'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
+ 'type': 'object'},
+ 'WatchIngressAddressesForRelations': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/StringsWatchResults'}},
+ '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(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='Firewaller',
+ request='AreManuallyProvisioned',
+ version=5,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(CloudSpecResults)
+ async def CloudSpec(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~CloudSpecResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Firewaller',
+ request='CloudSpec',
+ version=5,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ControllerAPIInfoResults)
+ async def ControllerAPIInfoForModels(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ControllerAPIInfoResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Firewaller',
+ request='ControllerAPIInfoForModels',
+ version=5,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ControllerConfigResult)
+ async def ControllerConfig(self):
+ '''
+
+ Returns -> typing.Mapping[str, typing.Any]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Firewaller',
+ request='ControllerConfig',
+ version=5,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ListFirewallRulesResults)
+ async def FirewallRules(self, known_services):
+ '''
+ known_services : typing.Sequence[str]
+ Returns -> typing.Sequence[~FirewallRule]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Firewaller',
+ request='FirewallRules',
+ version=5,
+ params=_params)
+ _params['known-services'] = known_services
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @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=5,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(CloudSpecResult)
+ async def GetCloudSpec(self):
+ '''
+
+ Returns -> typing.Union[_ForwardRef('Error'), _ForwardRef('CloudSpec')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Firewaller',
+ request='GetCloudSpec',
+ version=5,
+ params=_params)
+
+ 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=5,
+ 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=5,
+ 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=5,
+ 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=5,
+ 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=5,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(MacaroonResults)
+ async def MacaroonForRelations(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~MacaroonResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Firewaller',
+ request='MacaroonForRelations',
+ version=5,
+ 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=5,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetRelationsStatus(self, entities):
+ '''
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Firewaller',
+ request='SetRelationsStatus',
+ version=5,
+ 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='Firewaller',
+ request='Watch',
+ version=5,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsWatchResults)
+ async def WatchEgressAddressesForRelations(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Firewaller',
+ request='WatchEgressAddressesForRelations',
+ version=5,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NotifyWatchResult)
+ async def WatchForModelConfigChanges(self):
+ '''
+
+ Returns -> typing.Union[str, _ForwardRef('Error')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Firewaller',
+ request='WatchForModelConfigChanges',
+ version=5,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsWatchResults)
+ async def WatchIngressAddressesForRelations(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Firewaller',
+ request='WatchIngressAddressesForRelations',
+ version=5,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsWatchResult)
+ async def WatchModelMachines(self):
+ '''
+
+ Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Firewaller',
+ request='WatchModelMachines',
+ version=5,
+ 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=5,
+ 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=5,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class MachineManagerFacade(Type):
+ name = 'MachineManager'
+ version = 5
+ schema = {'definitions': {'AddMachineParams': {'additionalProperties': False,
+ 'properties': {'addresses': {'items': {'$ref': '#/definitions/Address'},
+ 'type': 'array'},
+ 'constraints': {'$ref': '#/definitions/Value'},
+ 'container-type': {'type': 'string'},
+ 'disks': {'items': {'$ref': '#/definitions/Constraints'},
+ 'type': 'array'},
+ 'hardware-characteristics': {'$ref': '#/definitions/HardwareCharacteristics'},
+ 'instance-id': {'type': 'string'},
+ 'jobs': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'nonce': {'type': 'string'},
+ 'parent-id': {'type': 'string'},
+ 'placement': {'$ref': '#/definitions/Placement'},
+ 'series': {'type': 'string'}},
+ 'required': ['series',
+ 'constraints',
+ 'jobs',
+ 'parent-id',
+ 'container-type',
+ 'instance-id',
+ 'nonce',
+ 'hardware-characteristics',
+ 'addresses'],
+ 'type': 'object'},
+ 'AddMachines': {'additionalProperties': False,
+ 'properties': {'params': {'items': {'$ref': '#/definitions/AddMachineParams'},
+ 'type': 'array'}},
+ 'required': ['params'],
+ 'type': 'object'},
+ 'AddMachinesResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'machine': {'type': 'string'}},
+ 'required': ['machine'],
+ 'type': 'object'},
+ 'AddMachinesResults': {'additionalProperties': False,
+ 'properties': {'machines': {'items': {'$ref': '#/definitions/AddMachinesResult'},
+ 'type': 'array'}},
+ 'required': ['machines'],
+ 'type': 'object'},
+ 'Address': {'additionalProperties': False,
+ 'properties': {'scope': {'type': 'string'},
+ 'space-name': {'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'},
+ 'DestroyMachineInfo': {'additionalProperties': False,
+ 'properties': {'destroyed-storage': {'items': {'$ref': '#/definitions/Entity'},
+ 'type': 'array'},
+ 'destroyed-units': {'items': {'$ref': '#/definitions/Entity'},
+ 'type': 'array'},
+ 'detached-storage': {'items': {'$ref': '#/definitions/Entity'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'DestroyMachineResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'info': {'$ref': '#/definitions/DestroyMachineInfo'}},
+ 'type': 'object'},
+ 'DestroyMachineResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/DestroyMachineResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'DestroyMachinesParams': {'additionalProperties': False,
+ 'properties': {'force': {'type': 'boolean'},
+ 'keep': {'type': 'boolean'},
+ 'machine-tags': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['machine-tags'],
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'HardwareCharacteristics': {'additionalProperties': False,
+ 'properties': {'arch': {'type': 'string'},
+ 'availability-zone': {'type': 'string'},
+ 'cpu-cores': {'type': 'integer'},
+ 'cpu-power': {'type': 'integer'},
+ 'mem': {'type': 'integer'},
+ 'root-disk': {'type': 'integer'},
+ 'tags': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'InstanceType': {'additionalProperties': False,
+ 'properties': {'arches': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'cost': {'type': 'integer'},
+ 'cpu-cores': {'type': 'integer'},
+ 'deprecated': {'type': 'boolean'},
+ 'memory': {'type': 'integer'},
+ 'name': {'type': 'string'},
+ 'root-disk': {'type': 'integer'},
+ 'virt-type': {'type': 'string'}},
+ 'required': ['arches', 'cpu-cores', 'memory'],
+ 'type': 'object'},
+ 'InstanceTypesResult': {'additionalProperties': False,
+ 'properties': {'cost-currency': {'type': 'string'},
+ 'cost-divisor': {'type': 'integer'},
+ 'cost-unit': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'instance-types': {'items': {'$ref': '#/definitions/InstanceType'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'InstanceTypesResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/InstanceTypesResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'ModelInstanceTypesConstraint': {'additionalProperties': False,
+ 'properties': {'value': {'$ref': '#/definitions/Value'}},
+ 'type': 'object'},
+ 'ModelInstanceTypesConstraints': {'additionalProperties': False,
+ 'properties': {'constraints': {'items': {'$ref': '#/definitions/ModelInstanceTypesConstraint'},
+ 'type': 'array'}},
+ 'required': ['constraints'],
+ 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ 'type': 'object'},
+ 'NotifyWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Placement': {'additionalProperties': False,
+ 'properties': {'directive': {'type': 'string'},
+ 'scope': {'type': 'string'}},
+ 'required': ['scope', 'directive'],
+ 'type': 'object'},
+ 'StringsResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'StringsResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'UpdateSeriesArg': {'additionalProperties': False,
+ 'properties': {'force': {'type': 'boolean'},
+ 'series': {'type': 'string'},
+ 'tag': {'$ref': '#/definitions/Entity'}},
+ 'required': ['tag', 'force', 'series'],
+ 'type': 'object'},
+ 'UpdateSeriesArgs': {'additionalProperties': False,
+ 'properties': {'args': {'items': {'$ref': '#/definitions/UpdateSeriesArg'},
+ 'type': 'array'}},
+ 'required': ['args'],
+ 'type': 'object'},
+ 'UpgradeSeriesNotificationParam': {'additionalProperties': False,
+ 'properties': {'entity': {'$ref': '#/definitions/Entity'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['entity',
+ 'watcher-id'],
+ 'type': 'object'},
+ 'UpgradeSeriesNotificationParams': {'additionalProperties': False,
+ 'properties': {'params': {'items': {'$ref': '#/definitions/UpgradeSeriesNotificationParam'},
+ 'type': 'array'}},
+ 'required': ['params'],
+ 'type': 'object'},
+ 'UpgradeSeriesUnitsResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'unit-names': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['unit-names'],
+ 'type': 'object'},
+ 'UpgradeSeriesUnitsResults': {'additionalProperties': False,
+ 'properties': {'Results': {'items': {'$ref': '#/definitions/UpgradeSeriesUnitsResult'},
+ 'type': 'array'}},
+ 'required': ['Results'],
+ 'type': 'object'},
+ 'Value': {'additionalProperties': False,
+ 'properties': {'arch': {'type': 'string'},
+ 'container': {'type': 'string'},
+ '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'},
+ 'zones': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'}},
+ 'properties': {'AddMachines': {'properties': {'Params': {'$ref': '#/definitions/AddMachines'},
+ 'Result': {'$ref': '#/definitions/AddMachinesResults'}},
+ 'type': 'object'},
+ 'DestroyMachine': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/DestroyMachineResults'}},
+ 'type': 'object'},
+ 'DestroyMachineWithParams': {'properties': {'Params': {'$ref': '#/definitions/DestroyMachinesParams'},
+ 'Result': {'$ref': '#/definitions/DestroyMachineResults'}},
+ 'type': 'object'},
+ 'ForceDestroyMachine': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/DestroyMachineResults'}},
+ 'type': 'object'},
+ 'GetUpgradeSeriesMessages': {'properties': {'Params': {'$ref': '#/definitions/UpgradeSeriesNotificationParams'},
+ 'Result': {'$ref': '#/definitions/StringsResults'}},
+ 'type': 'object'},
+ 'InstanceTypes': {'properties': {'Params': {'$ref': '#/definitions/ModelInstanceTypesConstraints'},
+ 'Result': {'$ref': '#/definitions/InstanceTypesResults'}},
+ 'type': 'object'},
+ 'UpgradeSeriesComplete': {'properties': {'Params': {'$ref': '#/definitions/UpdateSeriesArg'},
+ 'Result': {'$ref': '#/definitions/ErrorResult'}},
+ 'type': 'object'},
+ 'UpgradeSeriesPrepare': {'properties': {'Params': {'$ref': '#/definitions/UpdateSeriesArg'},
+ 'Result': {'$ref': '#/definitions/ErrorResult'}},
+ 'type': 'object'},
+ 'UpgradeSeriesValidate': {'properties': {'Params': {'$ref': '#/definitions/UpdateSeriesArgs'},
+ 'Result': {'$ref': '#/definitions/UpgradeSeriesUnitsResults'}},
+ 'type': 'object'},
+ 'WatchUpgradeSeriesNotifications': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
+ 'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(AddMachinesResults)
+ async def AddMachines(self, params):
+ '''
+ params : typing.Sequence[~AddMachineParams]
+ Returns -> typing.Sequence[~AddMachinesResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='MachineManager',
+ request='AddMachines',
+ version=5,
+ params=_params)
+ _params['params'] = params
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(DestroyMachineResults)
+ async def DestroyMachine(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~DestroyMachineResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='MachineManager',
+ request='DestroyMachine',
+ version=5,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(DestroyMachineResults)
+ async def DestroyMachineWithParams(self, force, keep, machine_tags):
+ '''
+ force : bool
+ keep : bool
+ machine_tags : typing.Sequence[str]
+ Returns -> typing.Sequence[~DestroyMachineResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='MachineManager',
+ request='DestroyMachineWithParams',
+ version=5,
+ params=_params)
+ _params['force'] = force
+ _params['keep'] = keep
+ _params['machine-tags'] = machine_tags
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(DestroyMachineResults)
+ async def ForceDestroyMachine(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~DestroyMachineResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='MachineManager',
+ request='ForceDestroyMachine',
+ version=5,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsResults)
+ async def GetUpgradeSeriesMessages(self, params):
+ '''
+ params : typing.Sequence[~UpgradeSeriesNotificationParam]
+ Returns -> typing.Sequence[~StringsResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='MachineManager',
+ request='GetUpgradeSeriesMessages',
+ version=5,
+ params=_params)
+ _params['params'] = params
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(InstanceTypesResults)
+ async def InstanceTypes(self, constraints):
+ '''
+ constraints : typing.Sequence[~ModelInstanceTypesConstraint]
+ Returns -> typing.Sequence[~InstanceTypesResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='MachineManager',
+ request='InstanceTypes',
+ version=5,
+ params=_params)
+ _params['constraints'] = constraints
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResult)
+ async def UpgradeSeriesComplete(self, force, series, tag):
+ '''
+ force : bool
+ series : str
+ tag : Entity
+ Returns -> Error
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='MachineManager',
+ request='UpgradeSeriesComplete',
+ version=5,
+ params=_params)
+ _params['force'] = force
+ _params['series'] = series
+ _params['tag'] = tag
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResult)
+ async def UpgradeSeriesPrepare(self, force, series, tag):
+ '''
+ force : bool
+ series : str
+ tag : Entity
+ Returns -> Error
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='MachineManager',
+ request='UpgradeSeriesPrepare',
+ version=5,
+ params=_params)
+ _params['force'] = force
+ _params['series'] = series
+ _params['tag'] = tag
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(UpgradeSeriesUnitsResults)
+ async def UpgradeSeriesValidate(self, args):
+ '''
+ args : typing.Sequence[~UpdateSeriesArg]
+ Returns -> typing.Sequence[~UpgradeSeriesUnitsResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='MachineManager',
+ request='UpgradeSeriesValidate',
+ version=5,
+ params=_params)
+ _params['args'] = args
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NotifyWatchResults)
+ async def WatchUpgradeSeriesNotifications(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='MachineManager',
+ request='WatchUpgradeSeriesNotifications',
+ version=5,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+class ModelManagerFacade(Type):
+ name = 'ModelManager'
+ version = 5
+ schema = {'definitions': {'ChangeModelCredentialParams': {'additionalProperties': False,
+ 'properties': {'credential-tag': {'type': 'string'},
+ 'model-tag': {'type': 'string'}},
+ 'required': ['model-tag',
+ 'credential-tag'],
+ 'type': 'object'},
+ 'ChangeModelCredentialsParams': {'additionalProperties': False,
+ 'properties': {'model-credentials': {'items': {'$ref': '#/definitions/ChangeModelCredentialParams'},
+ 'type': 'array'}},
+ 'required': ['model-credentials'],
+ 'type': 'object'},
+ 'DestroyModelParams': {'additionalProperties': False,
+ 'properties': {'destroy-storage': {'type': 'boolean'},
+ 'model-tag': {'type': 'string'}},
+ 'required': ['model-tag'],
+ 'type': 'object'},
+ 'DestroyModelsParams': {'additionalProperties': False,
+ 'properties': {'models': {'items': {'$ref': '#/definitions/DestroyModelParams'},
+ 'type': 'array'}},
+ 'required': ['models'],
+ 'type': 'object'},
+ 'DumpModelRequest': {'additionalProperties': False,
+ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
+ 'type': 'array'},
+ 'simplified': {'type': 'boolean'}},
+ 'required': ['entities', 'simplified'],
+ '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', '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'MachineHardware': {'additionalProperties': False,
+ 'properties': {'arch': {'type': 'string'},
+ 'availability-zone': {'type': 'string'},
+ 'cores': {'type': 'integer'},
+ 'cpu-power': {'type': 'integer'},
+ 'mem': {'type': 'integer'},
+ 'root-disk': {'type': 'integer'},
+ 'tags': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'MapResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'MapResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/MapResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Model': {'additionalProperties': False,
+ 'properties': {'name': {'type': 'string'},
+ 'owner-tag': {'type': 'string'},
+ 'type': {'type': 'string'},
+ 'uuid': {'type': 'string'}},
+ 'required': ['name', 'uuid', 'type', 'owner-tag'],
+ 'type': 'object'},
+ 'ModelCreateArgs': {'additionalProperties': False,
+ 'properties': {'cloud-tag': {'type': 'string'},
+ 'config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'credential': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'owner-tag': {'type': 'string'},
+ 'region': {'type': 'string'}},
+ 'required': ['name', 'owner-tag'],
+ 'type': 'object'},
+ 'ModelDefaultValues': {'additionalProperties': False,
+ 'properties': {'cloud-region': {'type': 'string'},
+ 'cloud-tag': {'type': 'string'},
+ 'config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'ModelDefaults': {'additionalProperties': False,
+ 'properties': {'controller': {'additionalProperties': True,
+ 'type': 'object'},
+ 'default': {'additionalProperties': True,
+ 'type': 'object'},
+ 'regions': {'items': {'$ref': '#/definitions/RegionDefaults'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'ModelDefaultsResult': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'$ref': '#/definitions/ModelDefaults'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'ModelEntityCount': {'additionalProperties': False,
+ 'properties': {'count': {'type': 'integer'},
+ 'entity': {'type': 'string'}},
+ 'required': ['entity', 'count'],
+ 'type': 'object'},
+ 'ModelFilesystemInfo': {'additionalProperties': False,
+ 'properties': {'detachable': {'type': 'boolean'},
+ 'id': {'type': 'string'},
+ 'message': {'type': 'string'},
+ 'provider-id': {'type': 'string'},
+ 'status': {'type': 'string'}},
+ 'required': ['id'],
+ 'type': 'object'},
+ 'ModelInfo': {'additionalProperties': False,
+ 'properties': {'agent-version': {'$ref': '#/definitions/Number'},
+ 'cloud-credential-tag': {'type': 'string'},
+ 'cloud-region': {'type': 'string'},
+ 'cloud-tag': {'type': 'string'},
+ 'controller-uuid': {'type': 'string'},
+ 'default-series': {'type': 'string'},
+ 'life': {'type': 'string'},
+ 'machines': {'items': {'$ref': '#/definitions/ModelMachineInfo'},
+ 'type': 'array'},
+ 'migration': {'$ref': '#/definitions/ModelMigrationStatus'},
+ 'name': {'type': 'string'},
+ 'owner-tag': {'type': 'string'},
+ 'provider-type': {'type': 'string'},
+ 'sla': {'$ref': '#/definitions/ModelSLAInfo'},
+ 'status': {'$ref': '#/definitions/EntityStatus'},
+ 'type': {'type': 'string'},
+ 'users': {'items': {'$ref': '#/definitions/ModelUserInfo'},
+ 'type': 'array'},
+ 'uuid': {'type': 'string'}},
+ 'required': ['name',
+ 'type',
+ 'uuid',
+ 'controller-uuid',
+ 'cloud-tag',
+ 'owner-tag',
+ 'life',
+ 'users',
+ 'machines',
+ 'sla',
+ 'agent-version'],
+ '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'},
+ 'ModelMachineInfo': {'additionalProperties': False,
+ 'properties': {'hardware': {'$ref': '#/definitions/MachineHardware'},
+ 'has-vote': {'type': 'boolean'},
+ 'id': {'type': 'string'},
+ 'instance-id': {'type': 'string'},
+ 'message': {'type': 'string'},
+ 'status': {'type': 'string'},
+ 'wants-vote': {'type': 'boolean'}},
+ 'required': ['id'],
+ 'type': 'object'},
+ 'ModelMigrationStatus': {'additionalProperties': False,
+ 'properties': {'end': {'format': 'date-time',
+ 'type': 'string'},
+ 'start': {'format': 'date-time',
+ 'type': 'string'},
+ 'status': {'type': 'string'}},
+ 'required': ['status', 'start'],
+ 'type': 'object'},
+ 'ModelSLAInfo': {'additionalProperties': False,
+ 'properties': {'level': {'type': 'string'},
+ 'owner': {'type': 'string'}},
+ 'required': ['level', 'owner'],
+ 'type': 'object'},
+ 'ModelStatus': {'additionalProperties': False,
+ 'properties': {'application-count': {'type': 'integer'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'filesystems': {'items': {'$ref': '#/definitions/ModelFilesystemInfo'},
+ 'type': 'array'},
+ 'hosted-machine-count': {'type': 'integer'},
+ 'life': {'type': 'string'},
+ 'machines': {'items': {'$ref': '#/definitions/ModelMachineInfo'},
+ 'type': 'array'},
+ 'model-tag': {'type': 'string'},
+ 'owner-tag': {'type': 'string'},
+ 'volumes': {'items': {'$ref': '#/definitions/ModelVolumeInfo'},
+ 'type': 'array'}},
+ 'required': ['model-tag',
+ 'life',
+ 'hosted-machine-count',
+ 'application-count',
+ 'owner-tag'],
+ 'type': 'object'},
+ 'ModelStatusResults': {'additionalProperties': False,
+ 'properties': {'models': {'items': {'$ref': '#/definitions/ModelStatus'},
+ 'type': 'array'}},
+ 'required': ['models'],
+ 'type': 'object'},
+ 'ModelSummariesRequest': {'additionalProperties': False,
+ 'properties': {'all': {'type': 'boolean'},
+ 'user-tag': {'type': 'string'}},
+ 'required': ['user-tag'],
+ 'type': 'object'},
+ 'ModelSummary': {'additionalProperties': False,
+ 'properties': {'agent-version': {'$ref': '#/definitions/Number'},
+ 'cloud-credential-tag': {'type': 'string'},
+ 'cloud-region': {'type': 'string'},
+ 'cloud-tag': {'type': 'string'},
+ 'controller-uuid': {'type': 'string'},
+ 'counts': {'items': {'$ref': '#/definitions/ModelEntityCount'},
+ 'type': 'array'},
+ 'default-series': {'type': 'string'},
+ 'last-connection': {'format': 'date-time',
+ 'type': 'string'},
+ 'life': {'type': 'string'},
+ 'migration': {'$ref': '#/definitions/ModelMigrationStatus'},
+ 'name': {'type': 'string'},
+ 'owner-tag': {'type': 'string'},
+ 'provider-type': {'type': 'string'},
+ 'sla': {'$ref': '#/definitions/ModelSLAInfo'},
+ 'status': {'$ref': '#/definitions/EntityStatus'},
+ 'type': {'type': 'string'},
+ 'user-access': {'type': 'string'},
+ 'uuid': {'type': 'string'}},
+ 'required': ['name',
+ 'uuid',
+ 'type',
+ 'controller-uuid',
+ 'cloud-tag',
+ 'owner-tag',
+ 'life',
+ 'user-access',
+ 'last-connection',
+ 'counts',
+ 'sla',
+ 'agent-version'],
+ 'type': 'object'},
+ 'ModelSummaryResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/ModelSummary'}},
+ 'type': 'object'},
+ 'ModelSummaryResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ModelSummaryResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'ModelUnsetKeys': {'additionalProperties': False,
+ 'properties': {'cloud-region': {'type': 'string'},
+ 'cloud-tag': {'type': 'string'},
+ 'keys': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['keys'],
+ 'type': 'object'},
+ 'ModelUserInfo': {'additionalProperties': False,
+ 'properties': {'access': {'type': 'string'},
+ 'display-name': {'type': 'string'},
+ 'last-connection': {'format': 'date-time',
+ 'type': 'string'},
+ 'user': {'type': 'string'}},
+ 'required': ['user',
+ 'display-name',
+ 'last-connection',
+ 'access'],
+ 'type': 'object'},
+ 'ModelVolumeInfo': {'additionalProperties': False,
+ 'properties': {'detachable': {'type': 'boolean'},
+ 'id': {'type': 'string'},
+ 'message': {'type': 'string'},
+ 'provider-id': {'type': 'string'},
+ 'status': {'type': 'string'}},
+ 'required': ['id'],
+ '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'},
+ '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'},
+ 'RegionDefaults': {'additionalProperties': False,
+ 'properties': {'region-name': {'type': 'string'},
+ 'value': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'required': ['region-name', 'value'],
+ 'type': 'object'},
+ 'SetModelDefaults': {'additionalProperties': False,
+ 'properties': {'config': {'items': {'$ref': '#/definitions/ModelDefaultValues'},
+ 'type': 'array'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'StringResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'string'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'StringResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StringResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'UnsetModelDefaults': {'additionalProperties': False,
+ 'properties': {'keys': {'items': {'$ref': '#/definitions/ModelUnsetKeys'},
+ 'type': 'array'}},
+ 'required': ['keys'],
+ 'type': 'object'},
+ 'UserModel': {'additionalProperties': False,
+ 'properties': {'last-connection': {'format': 'date-time',
+ 'type': 'string'},
+ 'model': {'$ref': '#/definitions/Model'}},
+ 'required': ['model', 'last-connection'],
+ 'type': 'object'},
+ 'UserModelList': {'additionalProperties': False,
+ 'properties': {'user-models': {'items': {'$ref': '#/definitions/UserModel'},
+ 'type': 'array'}},
+ 'required': ['user-models'],
+ 'type': 'object'}},
+ 'properties': {'ChangeModelCredential': {'properties': {'Params': {'$ref': '#/definitions/ChangeModelCredentialsParams'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'CreateModel': {'properties': {'Params': {'$ref': '#/definitions/ModelCreateArgs'},
+ 'Result': {'$ref': '#/definitions/ModelInfo'}},
+ 'type': 'object'},
+ 'DestroyModels': {'properties': {'Params': {'$ref': '#/definitions/DestroyModelsParams'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'DumpModels': {'properties': {'Params': {'$ref': '#/definitions/DumpModelRequest'},
+ 'Result': {'$ref': '#/definitions/StringResults'}},
+ 'type': 'object'},
+ 'DumpModelsDB': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/MapResults'}},
+ 'type': 'object'},
+ 'ListModelSummaries': {'properties': {'Params': {'$ref': '#/definitions/ModelSummariesRequest'},
+ 'Result': {'$ref': '#/definitions/ModelSummaryResults'}},
+ 'type': 'object'},
+ 'ListModels': {'properties': {'Params': {'$ref': '#/definitions/Entity'},
+ 'Result': {'$ref': '#/definitions/UserModelList'}},
+ 'type': 'object'},
+ 'ModelDefaults': {'properties': {'Result': {'$ref': '#/definitions/ModelDefaultsResult'}},
+ 'type': 'object'},
+ 'ModelInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ModelInfoResults'}},
+ 'type': 'object'},
+ 'ModelStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ModelStatusResults'}},
+ 'type': 'object'},
+ 'ModifyModelAccess': {'properties': {'Params': {'$ref': '#/definitions/ModifyModelAccessRequest'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'SetModelDefaults': {'properties': {'Params': {'$ref': '#/definitions/SetModelDefaults'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'UnsetModelDefaults': {'properties': {'Params': {'$ref': '#/definitions/UnsetModelDefaults'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(ErrorResults)
+ async def ChangeModelCredential(self, model_credentials):
+ '''
+ model_credentials : typing.Sequence[~ChangeModelCredentialParams]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ModelManager',
+ request='ChangeModelCredential',
+ version=5,
+ params=_params)
+ _params['model-credentials'] = model_credentials
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ModelInfo)
+ async def CreateModel(self, cloud_tag, config, credential, name, owner_tag, region):
+ '''
+ cloud_tag : str
+ config : typing.Mapping[str, typing.Any]
+ credential : str
+ name : str
+ owner_tag : str
+ region : str
+ Returns -> typing.Union[_ForwardRef('Number'), str, typing.Sequence[~ModelMachineInfo], _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence[~ModelUserInfo]]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ModelManager',
+ request='CreateModel',
+ version=5,
+ params=_params)
+ _params['cloud-tag'] = cloud_tag
+ _params['config'] = config
+ _params['credential'] = credential
+ _params['name'] = name
+ _params['owner-tag'] = owner_tag
+ _params['region'] = region
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def DestroyModels(self, models):
+ '''
+ models : typing.Sequence[~DestroyModelParams]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ModelManager',
+ request='DestroyModels',
+ version=5,
+ params=_params)
+ _params['models'] = models
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringResults)
+ async def DumpModels(self, entities, simplified):
+ '''
+ entities : typing.Sequence[~Entity]
+ simplified : bool
+ Returns -> typing.Sequence[~StringResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ModelManager',
+ request='DumpModels',
+ version=5,
+ params=_params)
+ _params['entities'] = entities
+ _params['simplified'] = simplified
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(MapResults)
+ async def DumpModelsDB(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~MapResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ModelManager',
+ request='DumpModelsDB',
+ version=5,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ModelSummaryResults)
+ async def ListModelSummaries(self, all_, user_tag):
+ '''
+ all_ : bool
+ user_tag : str
+ Returns -> typing.Sequence[~ModelSummaryResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ModelManager',
+ request='ListModelSummaries',
+ version=5,
+ params=_params)
+ _params['all'] = all_
+ _params['user-tag'] = user_tag
+ 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=5,
+ params=_params)
+ _params['tag'] = tag
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ModelDefaultsResult)
+ async def ModelDefaults(self):
+ '''
+
+ Returns -> typing.Mapping[str, ~ModelDefaults]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ModelManager',
+ request='ModelDefaults',
+ version=5,
+ params=_params)
+
+ 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=5,
+ params=_params)
+ _params['entities'] = entities
+ 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='ModelManager',
+ request='ModelStatus',
+ version=5,
+ 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=5,
+ params=_params)
+ _params['changes'] = changes
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetModelDefaults(self, config):
+ '''
+ config : typing.Sequence[~ModelDefaultValues]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ModelManager',
+ request='SetModelDefaults',
+ version=5,
+ params=_params)
+ _params['config'] = config
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def UnsetModelDefaults(self, keys):
+ '''
+ keys : typing.Sequence[~ModelUnsetKeys]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='ModelManager',
+ request='UnsetModelDefaults',
+ version=5,
+ params=_params)
+ _params['keys'] = keys
+ reply = await self.rpc(msg)
+ return reply
+
+
+
class UniterFacade(Type):
name = 'Uniter'
version = 5
async def APIAddresses(self):
'''
- Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence<+T_co>[str]]
+ Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence[str]]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='APIAddresses', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='APIAddresses',
+ version=5,
+ params=_params)
reply = await self.rpc(msg)
return reply
async def APIHostPorts(self):
'''
- Returns -> typing.Sequence<+T_co>[~HostPort]<~HostPort>
+ Returns -> typing.Sequence[~HostPort]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='APIHostPorts', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='APIHostPorts',
+ version=5,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(ActionResults)
async def Actions(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ActionResult]<~ActionResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ActionResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='Actions', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='Actions',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def AddMetricBatches(self, batches):
'''
- batches : typing.Sequence<+T_co>[~MetricBatchParam]<~MetricBatchParam>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ batches : typing.Sequence[~MetricBatchParam]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='AddMetricBatches', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='AddMetricBatches',
+ version=5,
+ params=_params)
_params['batches'] = batches
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def AddUnitStorage(self, storages):
'''
- storages : typing.Sequence<+T_co>[~StorageAddParams]<~StorageAddParams>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ storages : typing.Sequence[~StorageAddParams]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='AddUnitStorage', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='AddUnitStorage',
+ version=5,
+ params=_params)
_params['storages'] = storages
reply = await self.rpc(msg)
return reply
@ReturnMapping(MachinePortsResults)
async def AllMachinePorts(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~MachinePortsResult]<~MachinePortsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~MachinePortsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='AllMachinePorts', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='AllMachinePorts',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ApplicationStatusResults)
async def ApplicationStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ApplicationStatusResult]<~ApplicationStatusResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ApplicationStatusResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ApplicationStatus', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='ApplicationStatus',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def AssignedMachine(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='AssignedMachine', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='AssignedMachine',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def AvailabilityZone(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='AvailabilityZone', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='AvailabilityZone',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def BeginActions(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='BeginActions', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='BeginActions',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
async def CACert(self):
'''
- Returns -> typing.Sequence<+T_co>[int]
+ Returns -> typing.Sequence[int]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='CACert', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='CACert',
+ version=5,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def CharmArchiveSha256(self, urls):
'''
- urls : typing.Sequence<+T_co>[~CharmURL]<~CharmURL>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ urls : typing.Sequence[~CharmURL]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='CharmArchiveSha256', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='CharmArchiveSha256',
+ version=5,
+ params=_params)
_params['urls'] = urls
reply = await self.rpc(msg)
return reply
@ReturnMapping(IntResults)
async def CharmModifiedVersion(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~IntResult]<~IntResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~IntResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='CharmModifiedVersion', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='CharmModifiedVersion',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringBoolResults)
async def CharmURL(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringBoolResult]<~StringBoolResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringBoolResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='CharmURL', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='CharmURL',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def ClearResolved(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ClearResolved', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='ClearResolved',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def ClosePorts(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityPortRange]<~EntityPortRange>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityPortRange]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ClosePorts', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='ClosePorts',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ConfigSettingsResults)
async def ConfigSettings(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ConfigSettingsResult]<~ConfigSettingsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ConfigSettingsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ConfigSettings', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='ConfigSettings',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='CurrentModel', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='CurrentModel',
+ version=5,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def Destroy(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='Destroy', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='Destroy',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def DestroyAllSubordinates(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='DestroyAllSubordinates', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='DestroyAllSubordinates',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def DestroyUnitStorageAttachments(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='DestroyUnitStorageAttachments', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='DestroyUnitStorageAttachments',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def EnsureDead(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='EnsureDead', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='EnsureDead',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def EnterScope(self, relation_units):
'''
- relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ relation_units : typing.Sequence[~RelationUnit]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='EnterScope', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='EnterScope',
+ version=5,
+ params=_params)
_params['relation-units'] = relation_units
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def FinishActions(self, results):
'''
- results : typing.Sequence<+T_co>[~ActionExecutionResult]<~ActionExecutionResult>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ results : typing.Sequence[~ActionExecutionResult]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='FinishActions', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='FinishActions',
+ version=5,
+ params=_params)
_params['results'] = results
reply = await self.rpc(msg)
return reply
@ReturnMapping(MeterStatusResults)
async def GetMeterStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~MeterStatusResult]<~MeterStatusResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~MeterStatusResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='GetMeterStatus', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='GetMeterStatus',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringBoolResults)
async def GetPrincipal(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringBoolResult]<~StringBoolResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringBoolResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='GetPrincipal', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='GetPrincipal',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(BoolResults)
async def HasSubordinates(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~BoolResult]<~BoolResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~BoolResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='HasSubordinates', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='HasSubordinates',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringsResults)
async def JoinedRelations(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringsResult]<~StringsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='JoinedRelations', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='JoinedRelations',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def LeaveScope(self, relation_units):
'''
- relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ relation_units : typing.Sequence[~RelationUnit]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='LeaveScope', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='LeaveScope',
+ version=5,
+ params=_params)
_params['relation-units'] = relation_units
reply = await self.rpc(msg)
return reply
@ReturnMapping(LifeResults)
async def Life(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~LifeResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='Life', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='Life',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def Merge(self, params):
'''
- params : typing.Sequence<+T_co>[~MergeLeadershipSettingsParam]<~MergeLeadershipSettingsParam>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ params : typing.Sequence[~MergeLeadershipSettingsParam]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='Merge', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='Merge',
+ version=5,
+ params=_params)
_params['params'] = params
reply = await self.rpc(msg)
return reply
async def ModelConfig(self):
'''
- Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ Returns -> typing.Mapping[str, typing.Any]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ModelConfig', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='ModelConfig',
+ version=5,
+ params=_params)
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ModelUUID', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='ModelUUID',
+ version=5,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(NetworkInfoResults)
async def NetworkInfo(self, bindings, unit):
'''
- bindings : typing.Sequence<+T_co>[str]
+ bindings : typing.Sequence[str]
unit : str
- Returns -> typing.Mapping<~KT, +VT_co>[str, ~NetworkInfoResult]<~NetworkInfoResult>
+ Returns -> typing.Mapping[str, ~NetworkInfoResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='NetworkInfo', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='NetworkInfo',
+ version=5,
+ params=_params)
_params['bindings'] = bindings
_params['unit'] = unit
reply = await self.rpc(msg)
@ReturnMapping(ErrorResults)
async def OpenPorts(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityPortRange]<~EntityPortRange>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityPortRange]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='OpenPorts', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='OpenPorts',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def PrivateAddress(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='PrivateAddress', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='PrivateAddress',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ProviderType', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='ProviderType',
+ version=5,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def PublicAddress(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='PublicAddress', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='PublicAddress',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(GetLeadershipSettingsBulkResults)
async def Read(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~GetLeadershipSettingsResult]<~GetLeadershipSettingsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~GetLeadershipSettingsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='Read', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='Read',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(SettingsResults)
async def ReadRemoteSettings(self, relation_unit_pairs):
'''
- relation_unit_pairs : typing.Sequence<+T_co>[~RelationUnitPair]<~RelationUnitPair>
- Returns -> typing.Sequence<+T_co>[~SettingsResult]<~SettingsResult>
+ relation_unit_pairs : typing.Sequence[~RelationUnitPair]
+ Returns -> typing.Sequence[~SettingsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ReadRemoteSettings', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='ReadRemoteSettings',
+ version=5,
+ params=_params)
_params['relation-unit-pairs'] = relation_unit_pairs
reply = await self.rpc(msg)
return reply
@ReturnMapping(SettingsResults)
async def ReadSettings(self, relation_units):
'''
- relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit>
- Returns -> typing.Sequence<+T_co>[~SettingsResult]<~SettingsResult>
+ relation_units : typing.Sequence[~RelationUnit]
+ Returns -> typing.Sequence[~SettingsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='ReadSettings', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='ReadSettings',
+ version=5,
+ params=_params)
_params['relation-units'] = relation_units
reply = await self.rpc(msg)
return reply
@ReturnMapping(RelationResults)
async def Relation(self, relation_units):
'''
- relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit>
- Returns -> typing.Sequence<+T_co>[~RelationResult]<~RelationResult>
+ relation_units : typing.Sequence[~RelationUnit]
+ Returns -> typing.Sequence[~RelationResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='Relation', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='Relation',
+ version=5,
+ params=_params)
_params['relation-units'] = relation_units
reply = await self.rpc(msg)
return reply
@ReturnMapping(RelationResults)
async def RelationById(self, relation_ids):
'''
- relation_ids : typing.Sequence<+T_co>[int]
- Returns -> typing.Sequence<+T_co>[~RelationResult]<~RelationResult>
+ relation_ids : typing.Sequence[int]
+ Returns -> typing.Sequence[~RelationResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='RelationById', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='RelationById',
+ version=5,
+ params=_params)
_params['relation-ids'] = relation_ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def RemoveStorageAttachments(self, ids):
'''
- ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ ids : typing.Sequence[~StorageAttachmentId]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='RemoveStorageAttachments', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='RemoveStorageAttachments',
+ version=5,
+ params=_params)
_params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def RequestReboot(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='RequestReboot', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='RequestReboot',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ResolvedModeResults)
async def Resolved(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~ResolvedModeResult]<~ResolvedModeResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ResolvedModeResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='Resolved', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='Resolved',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='SLALevel', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='SLALevel',
+ version=5,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetAgentStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='SetAgentStatus', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='SetAgentStatus',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetApplicationStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='SetApplicationStatus', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='SetApplicationStatus',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetCharmURL(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityCharmURL]<~EntityCharmURL>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityCharmURL]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='SetCharmURL', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='SetCharmURL',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='SetStatus', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='SetStatus',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetUnitStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='SetUnitStatus', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='SetUnitStatus',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def SetWorkloadVersion(self, entities):
'''
- entities : typing.Sequence<+T_co>[~EntityWorkloadVersion]<~EntityWorkloadVersion>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ entities : typing.Sequence[~EntityWorkloadVersion]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='SetWorkloadVersion', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='SetWorkloadVersion',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(LifeResults)
async def StorageAttachmentLife(self, ids):
'''
- ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId>
- Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult>
+ ids : typing.Sequence[~StorageAttachmentId]
+ Returns -> typing.Sequence[~LifeResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='StorageAttachmentLife', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='StorageAttachmentLife',
+ version=5,
+ params=_params)
_params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(StorageAttachmentResults)
async def StorageAttachments(self, ids):
'''
- ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId>
- Returns -> typing.Sequence<+T_co>[~StorageAttachmentResult]<~StorageAttachmentResult>
+ ids : typing.Sequence[~StorageAttachmentId]
+ Returns -> typing.Sequence[~StorageAttachmentResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='StorageAttachments', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='StorageAttachments',
+ version=5,
+ params=_params)
_params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(StatusResults)
async def UnitStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StatusResult]<~StatusResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StatusResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='UnitStatus', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='UnitStatus',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StorageAttachmentIdsResults)
async def UnitStorageAttachments(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StorageAttachmentIdsResult]<~StorageAttachmentIdsResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StorageAttachmentIdsResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='UnitStorageAttachments', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='UnitStorageAttachments',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(ErrorResults)
async def UpdateSettings(self, relation_units):
'''
- relation_units : typing.Sequence<+T_co>[~RelationUnitSettings]<~RelationUnitSettings>
- Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ relation_units : typing.Sequence[~RelationUnitSettings]
+ Returns -> typing.Sequence[~ErrorResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='UpdateSettings', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='UpdateSettings',
+ version=5,
+ params=_params)
_params['relation-units'] = relation_units
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResults)
async def Watch(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='Watch', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='Watch',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchAPIHostPorts', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchAPIHostPorts',
+ version=5,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringsWatchResults)
async def WatchActionNotifications(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchActionNotifications', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchActionNotifications',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResults)
async def WatchConfigSettings(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchConfigSettings', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchConfigSettings',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchForModelConfigChanges', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchForModelConfigChanges',
+ version=5,
+ params=_params)
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResults)
async def WatchLeadershipSettings(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchLeadershipSettings', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchLeadershipSettings',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResults)
async def WatchMeterStatus(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchMeterStatus', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchMeterStatus',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(RelationUnitsWatchResults)
async def WatchRelationUnits(self, relation_units):
'''
- relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit>
- Returns -> typing.Sequence<+T_co>[~RelationUnitsWatchResult]<~RelationUnitsWatchResult>
+ relation_units : typing.Sequence[~RelationUnit]
+ Returns -> typing.Sequence[~RelationUnitsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchRelationUnits', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchRelationUnits',
+ version=5,
+ params=_params)
_params['relation-units'] = relation_units
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResults)
async def WatchStorageAttachments(self, ids):
'''
- ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ ids : typing.Sequence[~StorageAttachmentId]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchStorageAttachments', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchStorageAttachments',
+ version=5,
+ params=_params)
_params['ids'] = ids
reply = await self.rpc(msg)
return reply
@ReturnMapping(NotifyWatchResults)
async def WatchUnitAddresses(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchUnitAddresses', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchUnitAddresses',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringsWatchResults)
async def WatchUnitRelations(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchUnitRelations', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchUnitRelations',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringsWatchResults)
async def WatchUnitStorageAttachments(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WatchUnitStorageAttachments', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='WatchUnitStorageAttachments',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
@ReturnMapping(StringResults)
async def WorkloadVersion(self, entities):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
- Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
'''
# map input types to rpc msg
_params = dict()
- msg = dict(type='Uniter', request='WorkloadVersion', version=5, params=_params)
+ msg = dict(type='Uniter',
+ request='WorkloadVersion',
+ version=5,
+ params=_params)
_params['entities'] = entities
reply = await self.rpc(msg)
return reply
--- /dev/null
+# DO NOT CHANGE THIS FILE! This file is auto-generated by facade.py.
+# Changes will be overwritten/lost when the file is regenerated.
+
+from juju.client.facade import Type, ReturnMapping
+from juju.client._definitions import *
+
+
+class ProvisionerFacade(Type):
+ name = 'Provisioner'
+ version = 7
+ 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'},
+ 'space-name': {'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'},
+ 'BoolResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'boolean'}},
+ 'required': ['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'},
+ 'CharmLXDProfile': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'description': {'type': 'string'},
+ 'devices': {'patternProperties': {'.*': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['config',
+ 'description',
+ 'devices'],
+ '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': ['constraints'],
+ 'type': 'object'},
+ 'ConstraintsResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ConstraintsResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'ContainerConfig': {'additionalProperties': False,
+ 'properties': {'UpdateBehavior': {'$ref': '#/definitions/UpdateBehavior'},
+ 'apt-mirror': {'type': 'string'},
+ 'apt-proxy': {'$ref': '#/definitions/Settings'},
+ 'authorized-keys': {'type': 'string'},
+ 'cloudinit-userdata': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'container-inherit-properties': {'type': 'string'},
+ 'juju-proxy': {'$ref': '#/definitions/Settings'},
+ 'legacy-proxy': {'$ref': '#/definitions/Settings'},
+ 'provider-type': {'type': 'string'},
+ 'snap-proxy': {'$ref': '#/definitions/Settings'},
+ 'ssl-hostname-verification': {'type': 'boolean'}},
+ 'required': ['provider-type',
+ 'authorized-keys',
+ 'ssl-hostname-verification',
+ 'legacy-proxy',
+ 'juju-proxy',
+ 'apt-proxy',
+ 'snap-proxy',
+ 'apt-mirror',
+ 'UpdateBehavior'],
+ 'type': 'object'},
+ 'ContainerLXDProfile': {'additionalProperties': False,
+ 'properties': {'name': {'type': 'string'},
+ 'profile': {'$ref': '#/definitions/CharmLXDProfile'}},
+ 'required': ['profile', 'name'],
+ 'type': 'object'},
+ 'ContainerManagerConfig': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'ContainerManagerConfigParams': {'additionalProperties': False,
+ 'properties': {'type': {'type': 'string'}},
+ 'required': ['type'],
+ 'type': 'object'},
+ 'ContainerProfileResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'lxd-profiles': {'items': {'$ref': '#/definitions/ContainerLXDProfile'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'ContainerProfileResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ContainerProfileResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'ControllerAPIInfoResult': {'additionalProperties': False,
+ 'properties': {'addresses': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'cacert': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['addresses',
+ 'cacert'],
+ 'type': 'object'},
+ 'ControllerAPIInfoResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ControllerAPIInfoResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'ControllerConfigResult': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'DeviceBridgeInfo': {'additionalProperties': False,
+ 'properties': {'bridge-name': {'type': 'string'},
+ 'host-device-name': {'type': 'string'},
+ 'mac-address': {'type': 'string'}},
+ 'required': ['host-device-name',
+ 'bridge-name',
+ 'mac-address'],
+ 'type': 'object'},
+ 'DistributionGroupResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'FindToolsParams': {'additionalProperties': False,
+ 'properties': {'agentstream': {'type': 'string'},
+ 'arch': {'type': 'string'},
+ 'major': {'type': 'integer'},
+ 'minor': {'type': 'integer'},
+ 'number': {'$ref': '#/definitions/Number'},
+ 'series': {'type': 'string'}},
+ 'required': ['number',
+ 'major',
+ 'minor',
+ 'arch',
+ 'series',
+ 'agentstream'],
+ 'type': 'object'},
+ 'FindToolsResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'list': {'items': {'$ref': '#/definitions/Tools'},
+ 'type': 'array'}},
+ 'required': ['list'],
+ 'type': 'object'},
+ 'HardwareCharacteristics': {'additionalProperties': False,
+ 'properties': {'arch': {'type': 'string'},
+ 'availability-zone': {'type': 'string'},
+ 'cpu-cores': {'type': 'integer'},
+ 'cpu-power': {'type': 'integer'},
+ 'mem': {'type': 'integer'},
+ 'root-disk': {'type': 'integer'},
+ 'tags': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'HostNetworkChange': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'new-bridges': {'items': {'$ref': '#/definitions/DeviceBridgeInfo'},
+ 'type': 'array'},
+ 'reconfigure-delay': {'type': 'integer'}},
+ 'required': ['new-bridges',
+ 'reconfigure-delay'],
+ 'type': 'object'},
+ 'HostNetworkChangeResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/HostNetworkChange'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ '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'},
+ 'charm-profiles': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'instance-id': {'type': 'string'},
+ 'network-config': {'items': {'$ref': '#/definitions/NetworkConfig'},
+ 'type': 'array'},
+ 'nonce': {'type': 'string'},
+ 'tag': {'type': 'string'},
+ 'volume-attachments': {'patternProperties': {'.*': {'$ref': '#/definitions/VolumeAttachmentInfo'}},
+ 'type': 'object'},
+ 'volumes': {'items': {'$ref': '#/definitions/Volume'},
+ 'type': 'array'}},
+ 'required': ['tag',
+ 'instance-id',
+ 'nonce',
+ 'characteristics',
+ 'volumes',
+ 'volume-attachments',
+ 'network-config',
+ 'charm-profiles'],
+ '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'],
+ 'type': 'object'},
+ 'LifeResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'MachineContainers': {'additionalProperties': False,
+ 'properties': {'container-types': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'machine-tag': {'type': 'string'}},
+ 'required': ['machine-tag',
+ 'container-types'],
+ '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': ['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'},
+ 'config-type': {'type': 'string'},
+ 'device-index': {'type': 'integer'},
+ 'disabled': {'type': 'boolean'},
+ 'dns-search-domains': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'dns-servers': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'gateway-address': {'type': 'string'},
+ 'interface-name': {'type': 'string'},
+ 'interface-type': {'type': 'string'},
+ 'is-default-gateway': {'type': 'boolean'},
+ 'mac-address': {'type': 'string'},
+ 'mtu': {'type': 'integer'},
+ 'no-auto-start': {'type': 'boolean'},
+ 'parent-interface-name': {'type': 'string'},
+ 'provider-address-id': {'type': 'string'},
+ 'provider-id': {'type': 'string'},
+ 'provider-space-id': {'type': 'string'},
+ 'provider-subnet-id': {'type': 'string'},
+ 'provider-vlan-id': {'type': 'string'},
+ 'routes': {'items': {'$ref': '#/definitions/NetworkRoute'},
+ 'type': 'array'},
+ 'vlan-tag': {'type': 'integer'}},
+ 'required': ['device-index',
+ 'mac-address',
+ 'cidr',
+ 'mtu',
+ 'provider-id',
+ 'provider-subnet-id',
+ 'provider-space-id',
+ 'provider-address-id',
+ 'provider-vlan-id',
+ 'vlan-tag',
+ 'interface-name',
+ 'parent-interface-name',
+ 'interface-type',
+ 'disabled'],
+ 'type': 'object'},
+ 'NetworkRoute': {'additionalProperties': False,
+ 'properties': {'destination-cidr': {'type': 'string'},
+ 'gateway-ip': {'type': 'string'},
+ 'metric': {'type': 'integer'}},
+ 'required': ['destination-cidr',
+ 'gateway-ip',
+ 'metric'],
+ 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ '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'},
+ 'ProfileChangeResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'new-profile-name': {'type': 'string'},
+ 'old-profile-name': {'type': 'string'},
+ 'profile': {'$ref': '#/definitions/CharmLXDProfile'},
+ 'subordinate': {'type': 'boolean'}},
+ 'type': 'object'},
+ 'ProfileChangeResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ProfileChangeResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'ProvisioningInfo': {'additionalProperties': False,
+ 'properties': {'charm-lxd-profiles': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'cloudinit-userdata': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'constraints': {'$ref': '#/definitions/Value'},
+ 'controller-config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'endpoint-bindings': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'image-metadata': {'items': {'$ref': '#/definitions/CloudImageMetadata'},
+ 'type': 'array'},
+ 'jobs': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'placement': {'type': 'string'},
+ 'series': {'type': 'string'},
+ 'subnets-to-zones': {'patternProperties': {'.*': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'tags': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'volume-attachments': {'items': {'$ref': '#/definitions/VolumeAttachmentParams'},
+ 'type': 'array'},
+ 'volumes': {'items': {'$ref': '#/definitions/VolumeParams'},
+ 'type': 'array'}},
+ 'required': ['constraints',
+ 'series',
+ 'placement',
+ 'jobs'],
+ 'type': 'object'},
+ 'ProvisioningInfoResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/ProvisioningInfo'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'ProvisioningInfoResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ProvisioningInfoResult'},
+ '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'},
+ 'SetProfileArg': {'additionalProperties': False,
+ 'properties': {'entity': {'$ref': '#/definitions/Entity'},
+ 'profiles': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['entity', 'profiles'],
+ 'type': 'object'},
+ 'SetProfileArgs': {'additionalProperties': False,
+ 'properties': {'args': {'items': {'$ref': '#/definitions/SetProfileArg'},
+ 'type': 'array'}},
+ 'required': ['args'],
+ 'type': 'object'},
+ 'SetProfileUpgradeCompleteArg': {'additionalProperties': False,
+ 'properties': {'entity': {'$ref': '#/definitions/Entity'},
+ 'message': {'type': 'string'}},
+ 'required': ['entity',
+ 'message'],
+ 'type': 'object'},
+ 'SetProfileUpgradeCompleteArgs': {'additionalProperties': False,
+ 'properties': {'args': {'items': {'$ref': '#/definitions/SetProfileUpgradeCompleteArg'},
+ 'type': 'array'}},
+ 'required': ['args'],
+ 'type': 'object'},
+ 'SetStatus': {'additionalProperties': False,
+ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'},
+ 'type': 'array'}},
+ 'required': ['entities'],
+ 'type': 'object'},
+ 'Settings': {'additionalProperties': False,
+ 'properties': {'AutoNoProxy': {'type': 'string'},
+ 'Ftp': {'type': 'string'},
+ 'Http': {'type': 'string'},
+ 'Https': {'type': 'string'},
+ 'NoProxy': {'type': 'string'}},
+ 'required': ['Http',
+ 'Https',
+ 'Ftp',
+ 'NoProxy',
+ 'AutoNoProxy'],
+ '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': ['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': ['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'}},
+ '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'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
+ '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': {'disable-ssl-hostname-verification': {'type': 'boolean'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'tools': {'items': {'$ref': '#/definitions/Tools'},
+ 'type': 'array'}},
+ 'required': ['tools',
+ 'disable-ssl-hostname-verification'],
+ 'type': 'object'},
+ 'ToolsResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ToolsResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'UpdateBehavior': {'additionalProperties': False,
+ 'properties': {'enable-os-refresh-update': {'type': 'boolean'},
+ 'enable-os-upgrade': {'type': 'boolean'}},
+ 'required': ['enable-os-refresh-update',
+ 'enable-os-upgrade'],
+ 'type': 'object'},
+ 'Value': {'additionalProperties': False,
+ 'properties': {'arch': {'type': 'string'},
+ 'container': {'type': 'string'},
+ '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'},
+ 'zones': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'Volume': {'additionalProperties': False,
+ 'properties': {'info': {'$ref': '#/definitions/VolumeInfo'},
+ 'volume-tag': {'type': 'string'}},
+ 'required': ['volume-tag', 'info'],
+ 'type': 'object'},
+ 'VolumeAttachmentInfo': {'additionalProperties': False,
+ 'properties': {'bus-address': {'type': 'string'},
+ 'device-link': {'type': 'string'},
+ 'device-name': {'type': 'string'},
+ 'plan-info': {'$ref': '#/definitions/VolumeAttachmentPlanInfo'},
+ 'read-only': {'type': 'boolean'}},
+ 'type': 'object'},
+ 'VolumeAttachmentParams': {'additionalProperties': False,
+ 'properties': {'instance-id': {'type': 'string'},
+ 'machine-tag': {'type': 'string'},
+ 'provider': {'type': 'string'},
+ 'read-only': {'type': 'boolean'},
+ 'volume-id': {'type': 'string'},
+ 'volume-tag': {'type': 'string'}},
+ 'required': ['volume-tag',
+ 'machine-tag',
+ 'provider'],
+ 'type': 'object'},
+ 'VolumeAttachmentPlanInfo': {'additionalProperties': False,
+ 'properties': {'device-attributes': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'device-type': {'type': 'string'}},
+ 'type': 'object'},
+ 'VolumeInfo': {'additionalProperties': False,
+ 'properties': {'hardware-id': {'type': 'string'},
+ 'persistent': {'type': 'boolean'},
+ 'pool': {'type': 'string'},
+ 'size': {'type': 'integer'},
+ 'volume-id': {'type': 'string'},
+ 'wwn': {'type': 'string'}},
+ 'required': ['volume-id', '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'},
+ 'volume-tag': {'type': 'string'}},
+ 'required': ['volume-tag',
+ 'size',
+ 'provider'],
+ 'type': 'object'},
+ 'WatchContainer': {'additionalProperties': False,
+ 'properties': {'container-type': {'type': 'string'},
+ 'machine-tag': {'type': 'string'}},
+ 'required': ['machine-tag',
+ 'container-type'],
+ 'type': 'object'},
+ 'WatchContainers': {'additionalProperties': False,
+ 'properties': {'params': {'items': {'$ref': '#/definitions/WatchContainer'},
+ 'type': 'array'}},
+ 'required': ['params'],
+ 'type': 'object'}},
+ 'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}},
+ 'type': 'object'},
+ 'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}},
+ 'type': 'object'},
+ 'AvailabilityZone': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/StringResults'}},
+ 'type': 'object'},
+ 'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}},
+ 'type': 'object'},
+ 'CharmProfileChangeInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ProfileChangeResults'}},
+ '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'},
+ 'ControllerAPIInfoForModels': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ControllerAPIInfoResults'}},
+ 'type': 'object'},
+ 'ControllerConfig': {'properties': {'Result': {'$ref': '#/definitions/ControllerConfigResult'}},
+ 'type': 'object'},
+ 'DistributionGroup': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/DistributionGroupResults'}},
+ 'type': 'object'},
+ 'DistributionGroupByMachineId': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/StringsResults'}},
+ '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'},
+ 'GetContainerProfileInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ContainerProfileResults'}},
+ 'type': 'object'},
+ 'HostChangesForContainers': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/HostNetworkChangeResults'}},
+ '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'},
+ 'KeepInstance': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/BoolResults'}},
+ 'type': 'object'},
+ 'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/LifeResults'}},
+ 'type': 'object'},
+ 'MachinesWithTransientErrors': {'properties': {'Result': {'$ref': '#/definitions/StatusResults'}},
+ 'type': 'object'},
+ 'MarkMachinesForRemoval': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ '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'},
+ 'RemoveUpgradeCharmProfileData': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'Series': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/StringResults'}},
+ 'type': 'object'},
+ 'SetCharmProfiles': {'properties': {'Params': {'$ref': '#/definitions/SetProfileArgs'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'SetHostMachineNetworkConfig': {'properties': {'Params': {'$ref': '#/definitions/SetMachineNetworkConfig'}},
+ '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'},
+ 'SetObservedNetworkConfig': {'properties': {'Params': {'$ref': '#/definitions/SetMachineNetworkConfig'}},
+ 'type': 'object'},
+ 'SetPasswords': {'properties': {'Params': {'$ref': '#/definitions/EntityPasswords'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ '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'},
+ 'SetSupportedContainers': {'properties': {'Params': {'$ref': '#/definitions/MachineContainersParams'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'SetUpgradeCharmProfileComplete': {'properties': {'Params': {'$ref': '#/definitions/SetProfileUpgradeCompleteArgs'},
+ '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'},
+ 'WatchContainersCharmProfiles': {'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'},
+ 'WatchModelMachinesCharmProfiles': {'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=7,
+ 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=7,
+ params=_params)
+
+ 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='Provisioner',
+ request='AvailabilityZone',
+ version=7,
+ 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='Provisioner',
+ request='CACert',
+ version=7,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ProfileChangeResults)
+ async def CharmProfileChangeInfo(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ProfileChangeResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='CharmProfileChangeInfo',
+ version=7,
+ params=_params)
+ _params['entities'] = entities
+ 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=7,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ContainerConfig)
+ async def ContainerConfig(self):
+ '''
+
+ Returns -> typing.Union[_ForwardRef('UpdateBehavior'), str, _ForwardRef('Settings'), bool]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='ContainerConfig',
+ version=7,
+ 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=7,
+ params=_params)
+ _params['type'] = type_
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ControllerAPIInfoResults)
+ async def ControllerAPIInfoForModels(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ControllerAPIInfoResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='ControllerAPIInfoForModels',
+ version=7,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ControllerConfigResult)
+ async def ControllerConfig(self):
+ '''
+
+ Returns -> typing.Mapping[str, typing.Any]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='ControllerConfig',
+ version=7,
+ params=_params)
+
+ 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=7,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsResults)
+ async def DistributionGroupByMachineId(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='DistributionGroupByMachineId',
+ version=7,
+ 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=7,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(FindToolsResult)
+ async def FindTools(self, arch, major, minor, number, series):
+ '''
+ arch : str
+ major : int
+ minor : 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=7,
+ params=_params)
+ _params['arch'] = arch
+ _params['major'] = major
+ _params['minor'] = minor
+ _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=7,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ContainerProfileResults)
+ async def GetContainerProfileInfo(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ContainerProfileResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='GetContainerProfileInfo',
+ version=7,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(HostNetworkChangeResults)
+ async def HostChangesForContainers(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~HostNetworkChange]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='HostChangesForContainers',
+ version=7,
+ 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=7,
+ 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=7,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(BoolResults)
+ async def KeepInstance(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~BoolResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='KeepInstance',
+ version=7,
+ 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=7,
+ 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=7,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def MarkMachinesForRemoval(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='MarkMachinesForRemoval',
+ version=7,
+ 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='Provisioner',
+ request='ModelConfig',
+ version=7,
+ 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=7,
+ 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=7,
+ 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=7,
+ 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=7,
+ 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=7,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def RemoveUpgradeCharmProfileData(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='RemoveUpgradeCharmProfileData',
+ version=7,
+ 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=7,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetCharmProfiles(self, args):
+ '''
+ args : typing.Sequence[~SetProfileArg]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='SetCharmProfiles',
+ version=7,
+ params=_params)
+ _params['args'] = args
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def SetHostMachineNetworkConfig(self, config, tag):
+ '''
+ config : typing.Sequence[~NetworkConfig]
+ tag : str
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='SetHostMachineNetworkConfig',
+ version=7,
+ params=_params)
+ _params['config'] = config
+ _params['tag'] = tag
+ 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=7,
+ 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=7,
+ params=_params)
+ _params['entities'] = entities
+ 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='Provisioner',
+ request='SetObservedNetworkConfig',
+ version=7,
+ params=_params)
+ _params['config'] = config
+ _params['tag'] = tag
+ 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=7,
+ params=_params)
+ _params['changes'] = changes
+ 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='Provisioner',
+ request='SetProviderNetworkConfig',
+ version=7,
+ 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='Provisioner',
+ request='SetStatus',
+ version=7,
+ 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=7,
+ params=_params)
+ _params['params'] = params
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetUpgradeCharmProfileComplete(self, args):
+ '''
+ args : typing.Sequence[~SetProfileUpgradeCompleteArg]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='SetUpgradeCharmProfileComplete',
+ version=7,
+ params=_params)
+ _params['args'] = args
+ 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=7,
+ 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=7,
+ 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=7,
+ 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=7,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NotifyWatchResult)
+ async def WatchAPIHostPorts(self):
+ '''
+
+ Returns -> typing.Union[str, _ForwardRef('Error')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='WatchAPIHostPorts',
+ version=7,
+ 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=7,
+ 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=7,
+ params=_params)
+ _params['params'] = params
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsWatchResults)
+ async def WatchContainersCharmProfiles(self, params):
+ '''
+ params : typing.Sequence[~WatchContainer]
+ Returns -> typing.Sequence[~StringsWatchResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='WatchContainersCharmProfiles',
+ version=7,
+ params=_params)
+ _params['params'] = params
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NotifyWatchResult)
+ async def WatchForModelConfigChanges(self):
+ '''
+
+ Returns -> typing.Union[str, _ForwardRef('Error')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='WatchForModelConfigChanges',
+ version=7,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NotifyWatchResult)
+ async def WatchMachineErrorRetry(self):
+ '''
+
+ Returns -> typing.Union[str, _ForwardRef('Error')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='WatchMachineErrorRetry',
+ version=7,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsWatchResult)
+ async def WatchModelMachines(self):
+ '''
+
+ Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='WatchModelMachines',
+ version=7,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsWatchResult)
+ async def WatchModelMachinesCharmProfiles(self):
+ '''
+
+ Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Provisioner',
+ request='WatchModelMachinesCharmProfiles',
+ version=7,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
--- /dev/null
+# DO NOT CHANGE THIS FILE! This file is auto-generated by facade.py.
+# Changes will be overwritten/lost when the file is regenerated.
+
+from juju.client.facade import Type, ReturnMapping
+from juju.client._definitions import *
+
+
+class ApplicationFacade(Type):
+ name = 'Application'
+ version = 8
+ schema = {'definitions': {'AddApplicationUnits': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'},
+ 'attach-storage': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'num-units': {'type': 'integer'},
+ 'placement': {'items': {'$ref': '#/definitions/Placement'},
+ 'type': 'array'},
+ 'policy': {'type': 'string'}},
+ 'required': ['application',
+ 'num-units',
+ 'placement'],
+ 'type': 'object'},
+ 'AddApplicationUnitsResults': {'additionalProperties': False,
+ 'properties': {'units': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['units'],
+ 'type': 'object'},
+ 'AddRelation': {'additionalProperties': False,
+ 'properties': {'endpoints': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'via-cidrs': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['endpoints'],
+ 'type': 'object'},
+ 'AddRelationResults': {'additionalProperties': False,
+ 'properties': {'endpoints': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmRelation'}},
+ 'type': 'object'}},
+ 'required': ['endpoints'],
+ 'type': 'object'},
+ 'ApplicationCharmRelations': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'}},
+ 'required': ['application'],
+ 'type': 'object'},
+ 'ApplicationCharmRelationsResults': {'additionalProperties': False,
+ 'properties': {'charm-relations': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['charm-relations'],
+ 'type': 'object'},
+ 'ApplicationConfigSet': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'},
+ 'config': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'}},
+ 'required': ['application', 'config'],
+ 'type': 'object'},
+ 'ApplicationConfigSetArgs': {'additionalProperties': False,
+ 'properties': {'Args': {'items': {'$ref': '#/definitions/ApplicationConfigSet'},
+ 'type': 'array'}},
+ 'required': ['Args'],
+ 'type': 'object'},
+ 'ApplicationConfigUnsetArgs': {'additionalProperties': False,
+ 'properties': {'Args': {'items': {'$ref': '#/definitions/ApplicationUnset'},
+ 'type': 'array'}},
+ 'required': ['Args'],
+ 'type': 'object'},
+ 'ApplicationConstraint': {'additionalProperties': False,
+ 'properties': {'constraints': {'$ref': '#/definitions/Value'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['constraints'],
+ 'type': 'object'},
+ 'ApplicationDeploy': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'},
+ 'attach-storage': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'channel': {'type': 'string'},
+ 'charm-url': {'type': 'string'},
+ 'config': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'config-yaml': {'type': 'string'},
+ 'constraints': {'$ref': '#/definitions/Value'},
+ 'devices': {'patternProperties': {'.*': {'$ref': '#/definitions/Constraints'}},
+ 'type': 'object'},
+ 'endpoint-bindings': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'num-units': {'type': 'integer'},
+ 'placement': {'items': {'$ref': '#/definitions/Placement'},
+ 'type': 'array'},
+ 'policy': {'type': 'string'},
+ 'resources': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'series': {'type': 'string'},
+ 'storage': {'patternProperties': {'.*': {'$ref': '#/definitions/Constraints'}},
+ 'type': 'object'}},
+ 'required': ['application',
+ 'series',
+ 'charm-url',
+ 'channel',
+ 'num-units',
+ 'config-yaml',
+ 'constraints'],
+ 'type': 'object'},
+ 'ApplicationDestroy': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'}},
+ 'required': ['application'],
+ 'type': 'object'},
+ 'ApplicationExpose': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'}},
+ 'required': ['application'],
+ 'type': 'object'},
+ 'ApplicationGet': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'}},
+ 'required': ['application'],
+ 'type': 'object'},
+ 'ApplicationGetConfigResults': {'additionalProperties': False,
+ 'properties': {'Results': {'items': {'$ref': '#/definitions/ConfigResult'},
+ 'type': 'array'}},
+ 'required': ['Results'],
+ 'type': 'object'},
+ 'ApplicationGetConstraintsResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ApplicationConstraint'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'ApplicationGetResults': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'},
+ 'application-config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'charm': {'type': 'string'},
+ 'config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'constraints': {'$ref': '#/definitions/Value'},
+ 'series': {'type': 'string'}},
+ 'required': ['application',
+ 'charm',
+ 'config',
+ 'constraints',
+ 'series'],
+ 'type': 'object'},
+ 'ApplicationMetricCredential': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'},
+ 'metrics-credentials': {'items': {'type': 'integer'},
+ 'type': 'array'}},
+ 'required': ['application',
+ 'metrics-credentials'],
+ 'type': 'object'},
+ 'ApplicationMetricCredentials': {'additionalProperties': False,
+ 'properties': {'creds': {'items': {'$ref': '#/definitions/ApplicationMetricCredential'},
+ 'type': 'array'}},
+ 'required': ['creds'],
+ 'type': 'object'},
+ 'ApplicationOfferDetails': {'additionalProperties': False,
+ 'properties': {'application-description': {'type': 'string'},
+ 'bindings': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'endpoints': {'items': {'$ref': '#/definitions/RemoteEndpoint'},
+ 'type': 'array'},
+ 'offer-name': {'type': 'string'},
+ 'offer-url': {'type': 'string'},
+ 'offer-uuid': {'type': 'string'},
+ 'source-model-tag': {'type': 'string'},
+ 'spaces': {'items': {'$ref': '#/definitions/RemoteSpace'},
+ 'type': 'array'},
+ 'users': {'items': {'$ref': '#/definitions/OfferUserDetails'},
+ 'type': 'array'}},
+ 'required': ['source-model-tag',
+ 'offer-uuid',
+ 'offer-url',
+ 'offer-name',
+ 'application-description'],
+ 'type': 'object'},
+ 'ApplicationSet': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'},
+ 'options': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'}},
+ 'required': ['application', 'options'],
+ 'type': 'object'},
+ 'ApplicationSetCharm': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'},
+ 'channel': {'type': 'string'},
+ 'charm-url': {'type': 'string'},
+ 'config-settings': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'config-settings-yaml': {'type': 'string'},
+ 'force': {'type': 'boolean'},
+ 'force-series': {'type': 'boolean'},
+ 'force-units': {'type': 'boolean'},
+ 'resource-ids': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'storage-constraints': {'patternProperties': {'.*': {'$ref': '#/definitions/StorageConstraints'}},
+ 'type': 'object'}},
+ 'required': ['application',
+ 'charm-url',
+ 'channel',
+ 'force',
+ 'force-units',
+ 'force-series'],
+ 'type': 'object'},
+ 'ApplicationSetCharmProfile': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'},
+ 'charm-url': {'type': 'string'}},
+ 'required': ['application',
+ 'charm-url'],
+ 'type': 'object'},
+ 'ApplicationUnexpose': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'}},
+ 'required': ['application'],
+ 'type': 'object'},
+ 'ApplicationUnset': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'},
+ 'options': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['application', 'options'],
+ 'type': 'object'},
+ 'ApplicationUpdate': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'},
+ 'charm-url': {'type': 'string'},
+ 'constraints': {'$ref': '#/definitions/Value'},
+ 'force': {'type': 'boolean'},
+ 'force-charm-url': {'type': 'boolean'},
+ 'force-series': {'type': 'boolean'},
+ 'min-units': {'type': 'integer'},
+ 'settings': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'settings-yaml': {'type': 'string'}},
+ 'required': ['application',
+ 'charm-url',
+ 'force-charm-url',
+ 'force-series',
+ 'force',
+ 'settings-yaml'],
+ 'type': 'object'},
+ 'ApplicationsDeploy': {'additionalProperties': False,
+ 'properties': {'applications': {'items': {'$ref': '#/definitions/ApplicationDeploy'},
+ 'type': 'array'}},
+ 'required': ['applications'],
+ 'type': 'object'},
+ 'CharmRelation': {'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'},
+ 'ConfigResult': {'additionalProperties': False,
+ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['config'],
+ 'type': 'object'},
+ 'Constraints': {'additionalProperties': False,
+ 'properties': {'Count': {'type': 'integer'},
+ 'Pool': {'type': 'string'},
+ 'Size': {'type': 'integer'}},
+ 'required': ['Pool', 'Size', 'Count'],
+ 'type': 'object'},
+ 'ConsumeApplicationArg': {'additionalProperties': False,
+ 'properties': {'ApplicationOfferDetails': {'$ref': '#/definitions/ApplicationOfferDetails'},
+ 'application-alias': {'type': 'string'},
+ 'external-controller': {'$ref': '#/definitions/ExternalControllerInfo'},
+ 'macaroon': {'$ref': '#/definitions/Macaroon'}},
+ 'required': ['ApplicationOfferDetails'],
+ 'type': 'object'},
+ 'ConsumeApplicationArgs': {'additionalProperties': False,
+ 'properties': {'args': {'items': {'$ref': '#/definitions/ConsumeApplicationArg'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'DestroyApplicationInfo': {'additionalProperties': False,
+ 'properties': {'destroyed-storage': {'items': {'$ref': '#/definitions/Entity'},
+ 'type': 'array'},
+ 'destroyed-units': {'items': {'$ref': '#/definitions/Entity'},
+ 'type': 'array'},
+ 'detached-storage': {'items': {'$ref': '#/definitions/Entity'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'DestroyApplicationParams': {'additionalProperties': False,
+ 'properties': {'application-tag': {'type': 'string'},
+ 'destroy-storage': {'type': 'boolean'}},
+ 'required': ['application-tag'],
+ 'type': 'object'},
+ 'DestroyApplicationResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'info': {'$ref': '#/definitions/DestroyApplicationInfo'}},
+ 'type': 'object'},
+ 'DestroyApplicationResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/DestroyApplicationResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'DestroyApplicationUnits': {'additionalProperties': False,
+ 'properties': {'unit-names': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['unit-names'],
+ 'type': 'object'},
+ 'DestroyApplicationsParams': {'additionalProperties': False,
+ 'properties': {'applications': {'items': {'$ref': '#/definitions/DestroyApplicationParams'},
+ 'type': 'array'}},
+ 'required': ['applications'],
+ 'type': 'object'},
+ 'DestroyConsumedApplicationParams': {'additionalProperties': False,
+ 'properties': {'application-tag': {'type': 'string'}},
+ 'required': ['application-tag'],
+ 'type': 'object'},
+ 'DestroyConsumedApplicationsParams': {'additionalProperties': False,
+ 'properties': {'applications': {'items': {'$ref': '#/definitions/DestroyConsumedApplicationParams'},
+ 'type': 'array'}},
+ 'required': ['applications'],
+ 'type': 'object'},
+ 'DestroyRelation': {'additionalProperties': False,
+ 'properties': {'endpoints': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'relation-id': {'type': 'integer'}},
+ 'required': ['relation-id'],
+ 'type': 'object'},
+ 'DestroyUnitInfo': {'additionalProperties': False,
+ 'properties': {'destroyed-storage': {'items': {'$ref': '#/definitions/Entity'},
+ 'type': 'array'},
+ 'detached-storage': {'items': {'$ref': '#/definitions/Entity'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'DestroyUnitParams': {'additionalProperties': False,
+ 'properties': {'destroy-storage': {'type': 'boolean'},
+ 'unit-tag': {'type': 'string'}},
+ 'required': ['unit-tag'],
+ 'type': 'object'},
+ 'DestroyUnitResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'info': {'$ref': '#/definitions/DestroyUnitInfo'}},
+ 'type': 'object'},
+ 'DestroyUnitResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/DestroyUnitResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'DestroyUnitsParams': {'additionalProperties': False,
+ 'properties': {'units': {'items': {'$ref': '#/definitions/DestroyUnitParams'},
+ 'type': 'array'}},
+ 'required': ['units'],
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'}},
+ 'type': 'object'},
+ 'ErrorResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'ExternalControllerInfo': {'additionalProperties': False,
+ 'properties': {'addrs': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'ca-cert': {'type': 'string'},
+ 'controller-alias': {'type': 'string'},
+ 'controller-tag': {'type': 'string'}},
+ 'required': ['controller-tag',
+ 'controller-alias',
+ 'addrs',
+ 'ca-cert'],
+ 'type': 'object'},
+ 'LXDProfileUpgradeMessages': {'additionalProperties': False,
+ 'properties': {'application': {'$ref': '#/definitions/Entity'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['application',
+ 'watcher-id'],
+ 'type': 'object'},
+ 'LXDProfileUpgradeMessagesResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'message': {'type': 'string'},
+ 'unit-name': {'type': 'string'}},
+ 'required': ['unit-name',
+ 'message'],
+ 'type': 'object'},
+ 'LXDProfileUpgradeMessagesResults': {'additionalProperties': False,
+ 'properties': {'args': {'items': {'$ref': '#/definitions/LXDProfileUpgradeMessagesResult'},
+ 'type': 'array'}},
+ 'required': ['args'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ 'type': 'object'},
+ 'OfferUserDetails': {'additionalProperties': False,
+ 'properties': {'access': {'type': 'string'},
+ 'display-name': {'type': 'string'},
+ 'user': {'type': 'string'}},
+ 'required': ['user',
+ 'display-name',
+ 'access'],
+ 'type': 'object'},
+ 'Placement': {'additionalProperties': False,
+ 'properties': {'directive': {'type': 'string'},
+ 'scope': {'type': 'string'}},
+ 'required': ['scope', 'directive'],
+ 'type': 'object'},
+ 'RelationSuspendedArg': {'additionalProperties': False,
+ 'properties': {'message': {'type': 'string'},
+ 'relation-id': {'type': 'integer'},
+ 'suspended': {'type': 'boolean'}},
+ 'required': ['relation-id',
+ 'message',
+ 'suspended'],
+ 'type': 'object'},
+ 'RelationSuspendedArgs': {'additionalProperties': False,
+ 'properties': {'args': {'items': {'$ref': '#/definitions/RelationSuspendedArg'},
+ 'type': 'array'}},
+ 'required': ['args'],
+ 'type': 'object'},
+ 'RemoteEndpoint': {'additionalProperties': False,
+ 'properties': {'interface': {'type': 'string'},
+ 'limit': {'type': 'integer'},
+ 'name': {'type': 'string'},
+ 'role': {'type': 'string'}},
+ 'required': ['name',
+ 'role',
+ 'interface',
+ 'limit'],
+ 'type': 'object'},
+ 'RemoteSpace': {'additionalProperties': False,
+ 'properties': {'cloud-type': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'provider-attributes': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'provider-id': {'type': 'string'},
+ 'subnets': {'items': {'$ref': '#/definitions/Subnet'},
+ 'type': 'array'}},
+ 'required': ['cloud-type',
+ 'name',
+ 'provider-id',
+ 'provider-attributes',
+ 'subnets'],
+ 'type': 'object'},
+ 'ScaleApplicationInfo': {'additionalProperties': False,
+ 'properties': {'num-units': {'type': 'integer'}},
+ 'required': ['num-units'],
+ 'type': 'object'},
+ 'ScaleApplicationParams': {'additionalProperties': False,
+ 'properties': {'application-tag': {'type': 'string'},
+ 'scale': {'type': 'integer'},
+ 'scale-change': {'type': 'integer'}},
+ 'required': ['application-tag',
+ 'scale'],
+ 'type': 'object'},
+ 'ScaleApplicationResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'info': {'$ref': '#/definitions/ScaleApplicationInfo'}},
+ 'type': 'object'},
+ 'ScaleApplicationResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ScaleApplicationResult'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'ScaleApplicationsParams': {'additionalProperties': False,
+ 'properties': {'applications': {'items': {'$ref': '#/definitions/ScaleApplicationParams'},
+ 'type': 'array'}},
+ 'required': ['applications'],
+ 'type': 'object'},
+ 'SetConstraints': {'additionalProperties': False,
+ 'properties': {'application': {'type': 'string'},
+ 'constraints': {'$ref': '#/definitions/Value'}},
+ 'required': ['application', 'constraints'],
+ 'type': 'object'},
+ 'StorageConstraints': {'additionalProperties': False,
+ 'properties': {'count': {'type': 'integer'},
+ 'pool': {'type': 'string'},
+ 'size': {'type': 'integer'}},
+ 'type': 'object'},
+ 'StringResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'string'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'Subnet': {'additionalProperties': False,
+ 'properties': {'cidr': {'type': 'string'},
+ 'life': {'type': 'string'},
+ 'provider-id': {'type': 'string'},
+ 'provider-network-id': {'type': 'string'},
+ 'provider-space-id': {'type': 'string'},
+ 'space-tag': {'type': 'string'},
+ 'status': {'type': 'string'},
+ 'vlan-tag': {'type': 'integer'},
+ 'zones': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['cidr',
+ 'vlan-tag',
+ 'life',
+ 'space-tag',
+ 'zones'],
+ 'type': 'object'},
+ 'UnitsResolved': {'additionalProperties': False,
+ 'properties': {'all': {'type': 'boolean'},
+ 'retry': {'type': 'boolean'},
+ 'tags': {'$ref': '#/definitions/Entities'}},
+ 'type': 'object'},
+ 'UpdateSeriesArg': {'additionalProperties': False,
+ 'properties': {'force': {'type': 'boolean'},
+ 'series': {'type': 'string'},
+ 'tag': {'$ref': '#/definitions/Entity'}},
+ 'required': ['tag', 'force', 'series'],
+ 'type': 'object'},
+ 'UpdateSeriesArgs': {'additionalProperties': False,
+ 'properties': {'args': {'items': {'$ref': '#/definitions/UpdateSeriesArg'},
+ 'type': 'array'}},
+ 'required': ['args'],
+ 'type': 'object'},
+ 'Value': {'additionalProperties': False,
+ 'properties': {'arch': {'type': 'string'},
+ 'container': {'type': 'string'},
+ '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'},
+ 'zones': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'}},
+ 'properties': {'AddRelation': {'properties': {'Params': {'$ref': '#/definitions/AddRelation'},
+ 'Result': {'$ref': '#/definitions/AddRelationResults'}},
+ 'type': 'object'},
+ 'AddUnits': {'properties': {'Params': {'$ref': '#/definitions/AddApplicationUnits'},
+ 'Result': {'$ref': '#/definitions/AddApplicationUnitsResults'}},
+ 'type': 'object'},
+ 'CharmConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ApplicationGetConfigResults'}},
+ 'type': 'object'},
+ 'CharmRelations': {'properties': {'Params': {'$ref': '#/definitions/ApplicationCharmRelations'},
+ 'Result': {'$ref': '#/definitions/ApplicationCharmRelationsResults'}},
+ 'type': 'object'},
+ 'Consume': {'properties': {'Params': {'$ref': '#/definitions/ConsumeApplicationArgs'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'Deploy': {'properties': {'Params': {'$ref': '#/definitions/ApplicationsDeploy'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'Destroy': {'properties': {'Params': {'$ref': '#/definitions/ApplicationDestroy'}},
+ 'type': 'object'},
+ 'DestroyApplication': {'properties': {'Params': {'$ref': '#/definitions/DestroyApplicationsParams'},
+ 'Result': {'$ref': '#/definitions/DestroyApplicationResults'}},
+ 'type': 'object'},
+ 'DestroyConsumedApplications': {'properties': {'Params': {'$ref': '#/definitions/DestroyConsumedApplicationsParams'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'DestroyRelation': {'properties': {'Params': {'$ref': '#/definitions/DestroyRelation'}},
+ 'type': 'object'},
+ 'DestroyUnit': {'properties': {'Params': {'$ref': '#/definitions/DestroyUnitsParams'},
+ 'Result': {'$ref': '#/definitions/DestroyUnitResults'}},
+ 'type': 'object'},
+ 'DestroyUnits': {'properties': {'Params': {'$ref': '#/definitions/DestroyApplicationUnits'}},
+ 'type': 'object'},
+ 'Expose': {'properties': {'Params': {'$ref': '#/definitions/ApplicationExpose'}},
+ 'type': 'object'},
+ 'Get': {'properties': {'Params': {'$ref': '#/definitions/ApplicationGet'},
+ 'Result': {'$ref': '#/definitions/ApplicationGetResults'}},
+ 'type': 'object'},
+ 'GetCharmURL': {'properties': {'Params': {'$ref': '#/definitions/ApplicationGet'},
+ 'Result': {'$ref': '#/definitions/StringResult'}},
+ 'type': 'object'},
+ 'GetConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ApplicationGetConfigResults'}},
+ 'type': 'object'},
+ 'GetConstraints': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ApplicationGetConstraintsResults'}},
+ 'type': 'object'},
+ 'GetLXDProfileUpgradeMessages': {'properties': {'Params': {'$ref': '#/definitions/LXDProfileUpgradeMessages'},
+ 'Result': {'$ref': '#/definitions/LXDProfileUpgradeMessagesResults'}},
+ 'type': 'object'},
+ 'ResolveUnitErrors': {'properties': {'Params': {'$ref': '#/definitions/UnitsResolved'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'ScaleApplications': {'properties': {'Params': {'$ref': '#/definitions/ScaleApplicationsParams'},
+ 'Result': {'$ref': '#/definitions/ScaleApplicationResults'}},
+ 'type': 'object'},
+ 'Set': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSet'}},
+ 'type': 'object'},
+ 'SetApplicationsConfig': {'properties': {'Params': {'$ref': '#/definitions/ApplicationConfigSetArgs'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'SetCharm': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSetCharm'}},
+ 'type': 'object'},
+ 'SetCharmProfile': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSetCharmProfile'}},
+ 'type': 'object'},
+ 'SetConstraints': {'properties': {'Params': {'$ref': '#/definitions/SetConstraints'}},
+ 'type': 'object'},
+ 'SetMetricCredentials': {'properties': {'Params': {'$ref': '#/definitions/ApplicationMetricCredentials'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'SetRelationsSuspended': {'properties': {'Params': {'$ref': '#/definitions/RelationSuspendedArgs'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'Unexpose': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUnexpose'}},
+ 'type': 'object'},
+ 'Unset': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUnset'}},
+ 'type': 'object'},
+ 'UnsetApplicationsConfig': {'properties': {'Params': {'$ref': '#/definitions/ApplicationConfigUnsetArgs'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'Update': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUpdate'}},
+ 'type': 'object'},
+ 'UpdateApplicationSeries': {'properties': {'Params': {'$ref': '#/definitions/UpdateSeriesArgs'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'WatchLXDProfileUpgradeNotifications': {'properties': {'Params': {'$ref': '#/definitions/Entity'},
+ 'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
+ 'type': 'object'}},
+ 'type': 'object'}
+
+
+ @ReturnMapping(AddRelationResults)
+ async def AddRelation(self, endpoints):
+ '''
+ endpoints : typing.Sequence[str]
+ Returns -> typing.Mapping[str, ~CharmRelation]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='AddRelation',
+ version=8,
+ params=_params)
+ _params['endpoints'] = endpoints
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(AddApplicationUnitsResults)
+ async def AddUnits(self, application, num_units, placement):
+ '''
+ application : str
+ num_units : int
+ placement : typing.Sequence[~Placement]
+ Returns -> typing.Sequence[str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='AddUnits',
+ version=8,
+ params=_params)
+ _params['application'] = application
+ _params['num-units'] = num_units
+ _params['placement'] = placement
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ApplicationGetConfigResults)
+ async def CharmConfig(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ConfigResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='CharmConfig',
+ version=8,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ApplicationCharmRelationsResults)
+ async def CharmRelations(self, application):
+ '''
+ application : str
+ Returns -> typing.Sequence[str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='CharmRelations',
+ version=8,
+ params=_params)
+ _params['application'] = application
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def Consume(self, args):
+ '''
+ args : typing.Sequence[~ConsumeApplicationArg]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='Consume',
+ version=8,
+ params=_params)
+ _params['args'] = args
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def Deploy(self, applications):
+ '''
+ applications : typing.Sequence[~ApplicationDeploy]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='Deploy',
+ version=8,
+ params=_params)
+ _params['applications'] = applications
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Destroy(self, application):
+ '''
+ application : str
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='Destroy',
+ version=8,
+ params=_params)
+ _params['application'] = application
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(DestroyApplicationResults)
+ async def DestroyApplication(self, applications):
+ '''
+ applications : typing.Sequence[~DestroyApplicationParams]
+ Returns -> typing.Sequence[~DestroyApplicationResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='DestroyApplication',
+ version=8,
+ params=_params)
+ _params['applications'] = applications
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def DestroyConsumedApplications(self, applications):
+ '''
+ applications : typing.Sequence[~DestroyConsumedApplicationParams]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='DestroyConsumedApplications',
+ version=8,
+ params=_params)
+ _params['applications'] = applications
+ 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='Application',
+ request='DestroyRelation',
+ version=8,
+ params=_params)
+ _params['endpoints'] = endpoints
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(DestroyUnitResults)
+ async def DestroyUnit(self, units):
+ '''
+ units : typing.Sequence[~DestroyUnitParams]
+ Returns -> typing.Sequence[~DestroyUnitResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='DestroyUnit',
+ version=8,
+ params=_params)
+ _params['units'] = units
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def DestroyUnits(self, unit_names):
+ '''
+ unit_names : typing.Sequence[str]
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='DestroyUnits',
+ version=8,
+ params=_params)
+ _params['unit-names'] = unit_names
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Expose(self, application):
+ '''
+ application : str
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='Expose',
+ version=8,
+ params=_params)
+ _params['application'] = application
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ApplicationGetResults)
+ async def Get(self, application):
+ '''
+ application : str
+ Returns -> typing.Union[str, typing.Mapping[str, typing.Any], _ForwardRef('Value')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='Get',
+ version=8,
+ params=_params)
+ _params['application'] = application
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringResult)
+ async def GetCharmURL(self, application):
+ '''
+ application : str
+ Returns -> typing.Union[_ForwardRef('Error'), str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='GetCharmURL',
+ version=8,
+ params=_params)
+ _params['application'] = application
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ApplicationGetConfigResults)
+ async def GetConfig(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ConfigResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='GetConfig',
+ version=8,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ApplicationGetConstraintsResults)
+ async def GetConstraints(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ApplicationConstraint]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='GetConstraints',
+ version=8,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(LXDProfileUpgradeMessagesResults)
+ async def GetLXDProfileUpgradeMessages(self, application, watcher_id):
+ '''
+ application : Entity
+ watcher_id : str
+ Returns -> typing.Sequence[~LXDProfileUpgradeMessagesResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='GetLXDProfileUpgradeMessages',
+ version=8,
+ params=_params)
+ _params['application'] = application
+ _params['watcher-id'] = watcher_id
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def ResolveUnitErrors(self, all_, retry, tags):
+ '''
+ all_ : bool
+ retry : bool
+ tags : Entities
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='ResolveUnitErrors',
+ version=8,
+ params=_params)
+ _params['all'] = all_
+ _params['retry'] = retry
+ _params['tags'] = tags
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ScaleApplicationResults)
+ async def ScaleApplications(self, applications):
+ '''
+ applications : typing.Sequence[~ScaleApplicationParams]
+ Returns -> typing.Sequence[~ScaleApplicationResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='ScaleApplications',
+ version=8,
+ params=_params)
+ _params['applications'] = applications
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Set(self, application, options):
+ '''
+ application : str
+ options : typing.Mapping[str, str]
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='Set',
+ version=8,
+ params=_params)
+ _params['application'] = application
+ _params['options'] = options
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetApplicationsConfig(self, args):
+ '''
+ args : typing.Sequence[~ApplicationConfigSet]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='SetApplicationsConfig',
+ version=8,
+ params=_params)
+ _params['Args'] = args
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def SetCharm(self, application, channel, charm_url, config_settings, config_settings_yaml, force_series, force_units, resource_ids, storage_constraints):
+ '''
+ application : str
+ channel : str
+ charm_url : str
+ config_settings : typing.Mapping[str, str]
+ config_settings_yaml : str
+ force_series : bool
+ force_units : bool
+ resource_ids : typing.Mapping[str, str]
+ storage_constraints : typing.Mapping[str, ~StorageConstraints]
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='SetCharm',
+ version=8,
+ params=_params)
+ _params['application'] = application
+ _params['channel'] = channel
+ _params['charm-url'] = charm_url
+ _params['config-settings'] = config_settings
+ _params['config-settings-yaml'] = config_settings_yaml
+ _params['force-series'] = force_series
+ _params['force-units'] = force_units
+ _params['resource-ids'] = resource_ids
+ _params['storage-constraints'] = storage_constraints
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def SetCharmProfile(self, application, charm_url):
+ '''
+ application : str
+ charm_url : str
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='SetCharmProfile',
+ version=8,
+ params=_params)
+ _params['application'] = application
+ _params['charm-url'] = charm_url
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def SetConstraints(self, application, constraints):
+ '''
+ application : str
+ constraints : Value
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='SetConstraints',
+ version=8,
+ params=_params)
+ _params['application'] = application
+ _params['constraints'] = constraints
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetMetricCredentials(self, creds):
+ '''
+ creds : typing.Sequence[~ApplicationMetricCredential]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='SetMetricCredentials',
+ version=8,
+ params=_params)
+ _params['creds'] = creds
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetRelationsSuspended(self, args):
+ '''
+ args : typing.Sequence[~RelationSuspendedArg]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='SetRelationsSuspended',
+ version=8,
+ params=_params)
+ _params['args'] = args
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Unexpose(self, application):
+ '''
+ application : str
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='Unexpose',
+ version=8,
+ params=_params)
+ _params['application'] = application
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Unset(self, application, options):
+ '''
+ application : str
+ options : typing.Sequence[str]
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='Unset',
+ version=8,
+ params=_params)
+ _params['application'] = application
+ _params['options'] = options
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def UnsetApplicationsConfig(self, args):
+ '''
+ args : typing.Sequence[~ApplicationUnset]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='UnsetApplicationsConfig',
+ version=8,
+ params=_params)
+ _params['Args'] = args
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(None)
+ async def Update(self, application, charm_url, constraints, force_charm_url, force_series, min_units, settings, settings_yaml):
+ '''
+ application : str
+ charm_url : str
+ constraints : Value
+ force_charm_url : bool
+ force_series : bool
+ min_units : int
+ settings : typing.Mapping[str, str]
+ settings_yaml : str
+ Returns -> None
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='Update',
+ version=8,
+ params=_params)
+ _params['application'] = application
+ _params['charm-url'] = charm_url
+ _params['constraints'] = constraints
+ _params['force-charm-url'] = force_charm_url
+ _params['force-series'] = force_series
+ _params['min-units'] = min_units
+ _params['settings'] = settings
+ _params['settings-yaml'] = settings_yaml
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def UpdateApplicationSeries(self, args):
+ '''
+ args : typing.Sequence[~UpdateSeriesArg]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='UpdateApplicationSeries',
+ version=8,
+ params=_params)
+ _params['args'] = args
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NotifyWatchResult)
+ async def WatchLXDProfileUpgradeNotifications(self, tag):
+ '''
+ tag : str
+ Returns -> typing.Union[str, _ForwardRef('Error')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Application',
+ request='WatchLXDProfileUpgradeNotifications',
+ version=8,
+ params=_params)
+ _params['tag'] = tag
+ reply = await self.rpc(msg)
+ return reply
+
+
--- /dev/null
+# DO NOT CHANGE THIS FILE! This file is auto-generated by facade.py.
+# Changes will be overwritten/lost when the file is regenerated.
+
+from juju.client.facade import Type, ReturnMapping
+from juju.client._definitions import *
+
+
+class UniterFacade(Type):
+ name = 'Uniter'
+ version = 9
+ 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': {'action-tag': {'type': 'string'},
+ 'message': {'type': 'string'},
+ 'results': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'status': {'type': 'string'}},
+ 'required': ['action-tag', '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'},
+ 'space-name': {'type': 'string'},
+ 'type': {'type': 'string'},
+ 'value': {'type': 'string'}},
+ 'required': ['value', 'type', 'scope'],
+ 'type': 'object'},
+ 'ApplicationStatusResult': {'additionalProperties': False,
+ 'properties': {'application': {'$ref': '#/definitions/StatusResult'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'units': {'patternProperties': {'.*': {'$ref': '#/definitions/StatusResult'}},
+ 'type': 'object'}},
+ 'required': ['application',
+ 'units'],
+ 'type': 'object'},
+ 'ApplicationStatusResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ApplicationStatusResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'BoolResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'type': 'boolean'}},
+ 'required': ['result'],
+ 'type': 'object'},
+ 'BoolResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/BoolResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'CharmRelation': {'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'},
+ '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'},
+ 'CloudCredential': {'additionalProperties': False,
+ 'properties': {'attrs': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'auth-type': {'type': 'string'},
+ 'redacted': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['auth-type'],
+ 'type': 'object'},
+ 'CloudSpec': {'additionalProperties': False,
+ 'properties': {'cacertificates': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'credential': {'$ref': '#/definitions/CloudCredential'},
+ 'endpoint': {'type': 'string'},
+ 'identity-endpoint': {'type': 'string'},
+ 'name': {'type': 'string'},
+ 'region': {'type': 'string'},
+ 'storage-endpoint': {'type': 'string'},
+ 'type': {'type': 'string'}},
+ 'required': ['type', 'name'],
+ 'type': 'object'},
+ 'CloudSpecResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/CloudSpec'}},
+ 'type': 'object'},
+ 'ConfigSettingsResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'settings': {'patternProperties': {'.*': {'additionalProperties': True,
+ 'type': 'object'}},
+ 'type': 'object'}},
+ 'required': ['settings'],
+ 'type': 'object'},
+ 'ConfigSettingsResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ConfigSettingsResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Endpoint': {'additionalProperties': False,
+ 'properties': {'application-name': {'type': 'string'},
+ 'relation': {'$ref': '#/definitions/CharmRelation'}},
+ 'required': ['application-name', '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': {'charm-url': {'type': 'string'},
+ 'tag': {'type': 'string'}},
+ 'required': ['tag', 'charm-url'],
+ 'type': 'object'},
+ 'EntityPortRange': {'additionalProperties': False,
+ 'properties': {'from-port': {'type': 'integer'},
+ 'protocol': {'type': 'string'},
+ 'tag': {'type': 'string'},
+ 'to-port': {'type': 'integer'}},
+ 'required': ['tag',
+ 'protocol',
+ 'from-port',
+ 'to-port'],
+ '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'},
+ 'EntityString': {'additionalProperties': False,
+ 'properties': {'tag': {'type': 'string'},
+ 'value': {'type': 'string'}},
+ 'required': ['tag', 'value'],
+ 'type': 'object'},
+ 'EntityWorkloadVersion': {'additionalProperties': False,
+ 'properties': {'tag': {'type': 'string'},
+ 'workload-version': {'type': 'string'}},
+ 'required': ['tag',
+ 'workload-version'],
+ 'type': 'object'},
+ 'EntityWorkloadVersions': {'additionalProperties': False,
+ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityWorkloadVersion'},
+ 'type': 'array'}},
+ 'required': ['entities'],
+ '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'},
+ 'macaroon-path': {'type': 'string'}},
+ 'type': 'object'},
+ 'ErrorResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/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'],
+ 'type': 'object'},
+ 'GoalState': {'additionalProperties': False,
+ 'properties': {'relations': {'patternProperties': {'.*': {'patternProperties': {'.*': {'$ref': '#/definitions/GoalStateStatus'}},
+ 'type': 'object'}},
+ 'type': 'object'},
+ 'units': {'patternProperties': {'.*': {'$ref': '#/definitions/GoalStateStatus'}},
+ 'type': 'object'}},
+ 'required': ['units', 'relations'],
+ 'type': 'object'},
+ 'GoalStateResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'result': {'$ref': '#/definitions/GoalState'}},
+ 'required': ['result', 'error'],
+ 'type': 'object'},
+ 'GoalStateResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/GoalStateResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'GoalStateStatus': {'additionalProperties': False,
+ 'properties': {'since': {'format': 'date-time',
+ 'type': 'string'},
+ 'status': {'type': 'string'}},
+ 'required': ['status', 'since'],
+ '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': ['result'],
+ 'type': 'object'},
+ 'IntResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/IntResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'InterfaceAddress': {'additionalProperties': False,
+ 'properties': {'cidr': {'type': 'string'},
+ 'hostname': {'type': 'string'},
+ 'value': {'type': 'string'}},
+ 'required': ['hostname', 'value', 'cidr'],
+ 'type': 'object'},
+ 'LifeResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'life': {'type': 'string'}},
+ 'required': ['life'],
+ 'type': 'object'},
+ 'LifeResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Macaroon': {'additionalProperties': False, 'type': 'object'},
+ 'MachinePortRange': {'additionalProperties': False,
+ 'properties': {'port-range': {'$ref': '#/definitions/PortRange'},
+ 'relation-tag': {'type': 'string'},
+ 'unit-tag': {'type': 'string'}},
+ 'required': ['unit-tag',
+ 'relation-tag',
+ 'port-range'],
+ 'type': 'object'},
+ 'MachinePortsResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'ports': {'items': {'$ref': '#/definitions/MachinePortRange'},
+ 'type': 'array'}},
+ 'required': ['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': {'application-tag': {'type': 'string'},
+ 'settings': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'unit-tag': {'type': 'string'}},
+ 'required': ['settings'],
+ 'type': 'object'},
+ 'MeterStatusResult': {'additionalProperties': False,
+ 'properties': {'code': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'info': {'type': 'string'}},
+ 'required': ['code', 'info'],
+ 'type': 'object'},
+ 'MeterStatusResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/MeterStatusResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'Metric': {'additionalProperties': False,
+ 'properties': {'key': {'type': 'string'},
+ 'labels': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'time': {'format': 'date-time',
+ 'type': 'string'},
+ 'value': {'type': 'string'}},
+ 'required': ['key', 'value', 'time'],
+ 'type': 'object'},
+ 'MetricBatch': {'additionalProperties': False,
+ 'properties': {'charm-url': {'type': 'string'},
+ 'created': {'format': 'date-time',
+ 'type': 'string'},
+ 'metrics': {'items': {'$ref': '#/definitions/Metric'},
+ 'type': 'array'},
+ 'uuid': {'type': 'string'}},
+ 'required': ['uuid',
+ 'charm-url',
+ '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'},
+ 'type': {'type': 'string'},
+ 'uuid': {'type': 'string'}},
+ 'required': ['name', 'uuid', 'type'],
+ 'type': 'object'},
+ 'NetworkInfo': {'additionalProperties': False,
+ 'properties': {'addresses': {'items': {'$ref': '#/definitions/InterfaceAddress'},
+ 'type': 'array'},
+ 'interface-name': {'type': 'string'},
+ 'mac-address': {'type': 'string'}},
+ 'required': ['mac-address',
+ 'interface-name',
+ 'addresses'],
+ 'type': 'object'},
+ 'NetworkInfoParams': {'additionalProperties': False,
+ 'properties': {'bindings': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'relation-id': {'type': 'integer'},
+ 'unit': {'type': 'string'}},
+ 'required': ['unit', 'bindings'],
+ 'type': 'object'},
+ 'NetworkInfoResult': {'additionalProperties': False,
+ 'properties': {'bind-addresses': {'items': {'$ref': '#/definitions/NetworkInfo'},
+ 'type': 'array'},
+ 'egress-subnets': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'ingress-addresses': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'type': 'object'},
+ 'NetworkInfoResults': {'additionalProperties': False,
+ 'properties': {'results': {'patternProperties': {'.*': {'$ref': '#/definitions/NetworkInfoResult'}},
+ 'type': 'object'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'NotifyWatchResult': {'additionalProperties': False,
+ 'properties': {'NotifyWatcherId': {'type': 'string'},
+ 'error': {'$ref': '#/definitions/Error'}},
+ 'required': ['NotifyWatcherId'],
+ 'type': 'object'},
+ 'NotifyWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'PortRange': {'additionalProperties': False,
+ 'properties': {'from-port': {'type': 'integer'},
+ 'protocol': {'type': 'string'},
+ 'to-port': {'type': 'integer'}},
+ 'required': ['from-port', 'to-port', 'protocol'],
+ 'type': 'object'},
+ 'RelationIds': {'additionalProperties': False,
+ 'properties': {'relation-ids': {'items': {'type': 'integer'},
+ 'type': 'array'}},
+ 'required': ['relation-ids'],
+ 'type': 'object'},
+ 'RelationResult': {'additionalProperties': False,
+ 'properties': {'bool': {'type': 'boolean'},
+ 'endpoint': {'$ref': '#/definitions/Endpoint'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'id': {'type': 'integer'},
+ 'key': {'type': 'string'},
+ 'life': {'type': 'string'},
+ 'other-application': {'type': 'string'}},
+ 'required': ['life',
+ 'id',
+ 'key',
+ 'endpoint'],
+ 'type': 'object'},
+ 'RelationResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/RelationResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'RelationStatusArg': {'additionalProperties': False,
+ 'properties': {'message': {'type': 'string'},
+ 'relation-id': {'type': 'integer'},
+ 'status': {'type': 'string'},
+ 'unit-tag': {'type': 'string'}},
+ 'required': ['unit-tag',
+ 'relation-id',
+ 'status',
+ 'message'],
+ 'type': 'object'},
+ 'RelationStatusArgs': {'additionalProperties': False,
+ 'properties': {'args': {'items': {'$ref': '#/definitions/RelationStatusArg'},
+ 'type': 'array'}},
+ 'required': ['args'],
+ 'type': 'object'},
+ 'RelationUnit': {'additionalProperties': False,
+ 'properties': {'relation': {'type': 'string'},
+ 'unit': {'type': 'string'}},
+ 'required': ['relation', 'unit'],
+ 'type': 'object'},
+ 'RelationUnitPair': {'additionalProperties': False,
+ 'properties': {'local-unit': {'type': 'string'},
+ 'relation': {'type': 'string'},
+ 'remote-unit': {'type': 'string'}},
+ 'required': ['relation',
+ 'local-unit',
+ 'remote-unit'],
+ 'type': 'object'},
+ 'RelationUnitPairs': {'additionalProperties': False,
+ 'properties': {'relation-unit-pairs': {'items': {'$ref': '#/definitions/RelationUnitPair'},
+ 'type': 'array'}},
+ 'required': ['relation-unit-pairs'],
+ 'type': 'object'},
+ 'RelationUnitSettings': {'additionalProperties': False,
+ 'properties': {'relation': {'type': 'string'},
+ 'settings': {'patternProperties': {'.*': {'type': 'string'}},
+ 'type': 'object'},
+ 'unit': {'type': 'string'}},
+ 'required': ['relation',
+ 'unit',
+ 'settings'],
+ 'type': 'object'},
+ 'RelationUnitStatus': {'additionalProperties': False,
+ 'properties': {'in-scope': {'type': 'boolean'},
+ 'relation-tag': {'type': 'string'},
+ 'suspended': {'type': 'boolean'}},
+ 'required': ['relation-tag',
+ 'in-scope',
+ 'suspended'],
+ 'type': 'object'},
+ 'RelationUnitStatusResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'results': {'items': {'$ref': '#/definitions/RelationUnitStatus'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'RelationUnitStatusResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/RelationUnitStatusResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'RelationUnits': {'additionalProperties': False,
+ 'properties': {'relation-units': {'items': {'$ref': '#/definitions/RelationUnit'},
+ 'type': 'array'}},
+ 'required': ['relation-units'],
+ 'type': 'object'},
+ 'RelationUnitsChange': {'additionalProperties': False,
+ 'properties': {'changed': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitSettings'}},
+ 'type': 'object'},
+ 'departed': {'items': {'type': 'string'},
+ 'type': 'array'}},
+ 'required': ['changed'],
+ 'type': 'object'},
+ 'RelationUnitsSettings': {'additionalProperties': False,
+ 'properties': {'relation-units': {'items': {'$ref': '#/definitions/RelationUnitSettings'},
+ 'type': 'array'}},
+ 'required': ['relation-units'],
+ 'type': 'object'},
+ 'RelationUnitsWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'$ref': '#/definitions/RelationUnitsChange'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id',
+ 'changes'],
+ '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': ['mode'],
+ 'type': 'object'},
+ 'ResolvedModeResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/ResolvedModeResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'SetPodSpecParams': {'additionalProperties': False,
+ 'properties': {'specs': {'items': {'$ref': '#/definitions/EntityString'},
+ 'type': 'array'}},
+ 'required': ['specs'],
+ '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': ['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': ['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': {'name': {'type': 'string'},
+ 'storage': {'$ref': '#/definitions/StorageConstraints'},
+ 'unit': {'type': 'string'}},
+ 'required': ['unit', 'name', 'storage'],
+ 'type': 'object'},
+ 'StorageAttachment': {'additionalProperties': False,
+ 'properties': {'kind': {'type': 'integer'},
+ 'life': {'type': 'string'},
+ 'location': {'type': 'string'},
+ 'owner-tag': {'type': 'string'},
+ 'storage-tag': {'type': 'string'},
+ 'unit-tag': {'type': 'string'}},
+ 'required': ['storage-tag',
+ 'owner-tag',
+ 'unit-tag',
+ 'kind',
+ 'location',
+ 'life'],
+ 'type': 'object'},
+ 'StorageAttachmentId': {'additionalProperties': False,
+ 'properties': {'storage-tag': {'type': 'string'},
+ 'unit-tag': {'type': 'string'}},
+ 'required': ['storage-tag',
+ 'unit-tag'],
+ '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'}},
+ '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': ['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': ['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'}},
+ 'type': 'object'},
+ 'StringsWatchResult': {'additionalProperties': False,
+ 'properties': {'changes': {'items': {'type': 'string'},
+ 'type': 'array'},
+ 'error': {'$ref': '#/definitions/Error'},
+ 'watcher-id': {'type': 'string'}},
+ 'required': ['watcher-id'],
+ 'type': 'object'},
+ 'StringsWatchResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsWatchResult'},
+ 'type': 'array'}},
+ 'required': ['results'],
+ 'type': 'object'},
+ 'UnitRefreshResult': {'additionalProperties': False,
+ 'properties': {'Error': {'$ref': '#/definitions/Error'},
+ 'Life': {'type': 'string'},
+ 'Resolved': {'type': 'string'}},
+ 'required': ['Life',
+ 'Resolved',
+ 'Error'],
+ 'type': 'object'},
+ 'UnitRefreshResults': {'additionalProperties': False,
+ 'properties': {'Results': {'items': {'$ref': '#/definitions/UnitRefreshResult'},
+ 'type': 'array'}},
+ 'required': ['Results'],
+ 'type': 'object'},
+ 'UnitSettings': {'additionalProperties': False,
+ 'properties': {'version': {'type': 'integer'}},
+ 'required': ['version'],
+ 'type': 'object'},
+ 'UpgradeSeriesStatusParam': {'additionalProperties': False,
+ 'properties': {'entity': {'$ref': '#/definitions/Entity'},
+ 'message': {'type': 'string'},
+ 'status': {'type': 'string'}},
+ 'required': ['entity',
+ 'status',
+ 'message'],
+ 'type': 'object'},
+ 'UpgradeSeriesStatusParams': {'additionalProperties': False,
+ 'properties': {'params': {'items': {'$ref': '#/definitions/UpgradeSeriesStatusParam'},
+ 'type': 'array'}},
+ 'required': ['params'],
+ 'type': 'object'},
+ 'UpgradeSeriesStatusResult': {'additionalProperties': False,
+ 'properties': {'error': {'$ref': '#/definitions/Error'},
+ 'status': {'type': 'string'}},
+ 'type': 'object'},
+ 'UpgradeSeriesStatusResults': {'additionalProperties': False,
+ 'properties': {'results': {'items': {'$ref': '#/definitions/UpgradeSeriesStatusResult'},
+ 'type': 'array'}},
+ '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'},
+ 'ApplicationStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/ApplicationStatusResults'}},
+ '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'},
+ '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'},
+ 'CloudSpec': {'properties': {'Result': {'$ref': '#/definitions/CloudSpecResult'}},
+ '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'},
+ 'GoalStates': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/GoalStateResults'}},
+ 'type': 'object'},
+ 'HasSubordinates': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/BoolResults'}},
+ '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'},
+ 'NetworkInfo': {'properties': {'Params': {'$ref': '#/definitions/NetworkInfoParams'},
+ 'Result': {'$ref': '#/definitions/NetworkInfoResults'}},
+ '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'},
+ 'Refresh': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/UnitRefreshResults'}},
+ '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'},
+ 'RelationsStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/RelationUnitStatusResults'}},
+ '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'},
+ 'SLALevel': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
+ 'type': 'object'},
+ 'SetAgentStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'SetApplicationStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'SetCharmURL': {'properties': {'Params': {'$ref': '#/definitions/EntitiesCharmURL'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'SetPodSpec': {'properties': {'Params': {'$ref': '#/definitions/SetPodSpecParams'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'SetRelationStatus': {'properties': {'Params': {'$ref': '#/definitions/RelationStatusArgs'},
+ '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'},
+ 'SetUpgradeSeriesUnitStatus': {'properties': {'Params': {'$ref': '#/definitions/UpgradeSeriesStatusParams'},
+ 'Result': {'$ref': '#/definitions/ErrorResults'}},
+ 'type': 'object'},
+ 'SetWorkloadVersion': {'properties': {'Params': {'$ref': '#/definitions/EntityWorkloadVersions'},
+ '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'},
+ 'UpgradeSeriesUnitStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/UpgradeSeriesStatusResults'}},
+ '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'},
+ 'WatchConfigSettingsHash': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/StringsWatchResults'}},
+ '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'},
+ 'WatchStorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'},
+ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
+ 'type': 'object'},
+ 'WatchTrustConfigSettingsHash': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/StringsWatchResults'}},
+ 'type': 'object'},
+ 'WatchUnitAddressesHash': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/StringsWatchResults'}},
+ 'type': 'object'},
+ 'WatchUnitRelations': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/StringsWatchResults'}},
+ 'type': 'object'},
+ 'WatchUnitStorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/StringsWatchResults'}},
+ 'type': 'object'},
+ 'WatchUpgradeSeriesNotifications': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
+ 'type': 'object'},
+ 'WorkloadVersion': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
+ 'Result': {'$ref': '#/definitions/StringResults'}},
+ '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=9,
+ 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=9,
+ 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=9,
+ 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=9,
+ 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=9,
+ 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=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ApplicationStatusResults)
+ async def ApplicationStatus(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~ApplicationStatusResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='ApplicationStatus',
+ version=9,
+ 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=9,
+ 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=9,
+ 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=9,
+ params=_params)
+ _params['entities'] = entities
+ 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=9,
+ 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=9,
+ 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=9,
+ 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=9,
+ 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=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(CloudSpecResult)
+ async def CloudSpec(self):
+ '''
+
+ Returns -> typing.Union[_ForwardRef('Error'), _ForwardRef('CloudSpec')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='CloudSpec',
+ version=9,
+ params=_params)
+
+ 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=9,
+ 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=9,
+ 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=9,
+ 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=9,
+ 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=9,
+ 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=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def EnterScope(self, relation_units):
+ '''
+ relation_units : typing.Sequence[~RelationUnit]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='EnterScope',
+ version=9,
+ params=_params)
+ _params['relation-units'] = relation_units
+ 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=9,
+ 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=9,
+ 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=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(GoalStateResults)
+ async def GoalStates(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~GoalStateResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='GoalStates',
+ version=9,
+ 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=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def LeaveScope(self, relation_units):
+ '''
+ relation_units : typing.Sequence[~RelationUnit]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='LeaveScope',
+ version=9,
+ params=_params)
+ _params['relation-units'] = relation_units
+ 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=9,
+ 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=9,
+ 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=9,
+ 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=9,
+ params=_params)
+
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NetworkInfoResults)
+ async def NetworkInfo(self, bindings, unit):
+ '''
+ bindings : typing.Sequence[str]
+ unit : str
+ Returns -> typing.Mapping[str, ~NetworkInfoResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='NetworkInfo',
+ version=9,
+ params=_params)
+ _params['bindings'] = bindings
+ _params['unit'] = unit
+ 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=9,
+ 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=9,
+ 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=9,
+ 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=9,
+ 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=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(SettingsResults)
+ async def ReadRemoteSettings(self, relation_unit_pairs):
+ '''
+ relation_unit_pairs : typing.Sequence[~RelationUnitPair]
+ Returns -> typing.Sequence[~SettingsResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='ReadRemoteSettings',
+ version=9,
+ params=_params)
+ _params['relation-unit-pairs'] = relation_unit_pairs
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(SettingsResults)
+ async def ReadSettings(self, relation_units):
+ '''
+ relation_units : typing.Sequence[~RelationUnit]
+ Returns -> typing.Sequence[~SettingsResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='ReadSettings',
+ version=9,
+ params=_params)
+ _params['relation-units'] = relation_units
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(UnitRefreshResults)
+ async def Refresh(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~UnitRefreshResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='Refresh',
+ version=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(RelationResults)
+ async def Relation(self, relation_units):
+ '''
+ relation_units : typing.Sequence[~RelationUnit]
+ Returns -> typing.Sequence[~RelationResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='Relation',
+ version=9,
+ params=_params)
+ _params['relation-units'] = relation_units
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(RelationResults)
+ async def RelationById(self, relation_ids):
+ '''
+ relation_ids : typing.Sequence[int]
+ Returns -> typing.Sequence[~RelationResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='RelationById',
+ version=9,
+ params=_params)
+ _params['relation-ids'] = relation_ids
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(RelationUnitStatusResults)
+ async def RelationsStatus(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~RelationUnitStatusResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='RelationsStatus',
+ version=9,
+ params=_params)
+ _params['entities'] = entities
+ 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=9,
+ 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=9,
+ 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=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringResult)
+ async def SLALevel(self):
+ '''
+
+ Returns -> typing.Union[_ForwardRef('Error'), str]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='SLALevel',
+ version=9,
+ params=_params)
+
+ 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=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetApplicationStatus(self, entities):
+ '''
+ entities : typing.Sequence[~EntityStatusArgs]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='SetApplicationStatus',
+ version=9,
+ 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=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetPodSpec(self, specs):
+ '''
+ specs : typing.Sequence[~EntityString]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='SetPodSpec',
+ version=9,
+ params=_params)
+ _params['specs'] = specs
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetRelationStatus(self, args):
+ '''
+ args : typing.Sequence[~RelationStatusArg]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='SetRelationStatus',
+ version=9,
+ params=_params)
+ _params['args'] = args
+ 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=9,
+ 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=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetUpgradeSeriesUnitStatus(self, params):
+ '''
+ params : typing.Sequence[~UpgradeSeriesStatusParam]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='SetUpgradeSeriesUnitStatus',
+ version=9,
+ params=_params)
+ _params['params'] = params
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def SetWorkloadVersion(self, entities):
+ '''
+ entities : typing.Sequence[~EntityWorkloadVersion]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='SetWorkloadVersion',
+ version=9,
+ 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=9,
+ 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=9,
+ 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=9,
+ 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=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(ErrorResults)
+ async def UpdateSettings(self, relation_units):
+ '''
+ relation_units : typing.Sequence[~RelationUnitSettings]
+ Returns -> typing.Sequence[~ErrorResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='UpdateSettings',
+ version=9,
+ params=_params)
+ _params['relation-units'] = relation_units
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(UpgradeSeriesStatusResults)
+ async def UpgradeSeriesUnitStatus(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~UpgradeSeriesStatusResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='UpgradeSeriesUnitStatus',
+ version=9,
+ 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='Uniter',
+ request='Watch',
+ version=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NotifyWatchResult)
+ async def WatchAPIHostPorts(self):
+ '''
+
+ Returns -> typing.Union[str, _ForwardRef('Error')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='WatchAPIHostPorts',
+ version=9,
+ 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=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsWatchResults)
+ async def WatchConfigSettingsHash(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='WatchConfigSettingsHash',
+ version=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NotifyWatchResult)
+ async def WatchForModelConfigChanges(self):
+ '''
+
+ Returns -> typing.Union[str, _ForwardRef('Error')]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='WatchForModelConfigChanges',
+ version=9,
+ 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=9,
+ 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=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(RelationUnitsWatchResults)
+ async def WatchRelationUnits(self, relation_units):
+ '''
+ relation_units : typing.Sequence[~RelationUnit]
+ Returns -> typing.Sequence[~RelationUnitsWatchResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='WatchRelationUnits',
+ version=9,
+ params=_params)
+ _params['relation-units'] = relation_units
+ 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=9,
+ params=_params)
+ _params['ids'] = ids
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsWatchResults)
+ async def WatchTrustConfigSettingsHash(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='WatchTrustConfigSettingsHash',
+ version=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsWatchResults)
+ async def WatchUnitAddressesHash(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='WatchUnitAddressesHash',
+ version=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringsWatchResults)
+ async def WatchUnitRelations(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringsWatchResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='WatchUnitRelations',
+ version=9,
+ 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=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(NotifyWatchResults)
+ async def WatchUpgradeSeriesNotifications(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~NotifyWatchResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='WatchUpgradeSeriesNotifications',
+ version=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
+
+ @ReturnMapping(StringResults)
+ async def WorkloadVersion(self, entities):
+ '''
+ entities : typing.Sequence[~Entity]
+ Returns -> typing.Sequence[~StringResult]
+ '''
+ # map input types to rpc msg
+ _params = dict()
+ msg = dict(type='Uniter',
+ request='WorkloadVersion',
+ version=9,
+ params=_params)
+ _params['entities'] = entities
+ reply = await self.rpc(msg)
+ return reply
+
+
_toPy = {'servers': 'servers'}
def __init__(self, servers=None, **unknown_fields):
'''
- servers : typing.Sequence<+T_co>[~HostPort]<~HostPort>
+ servers : typing.Sequence[~HostPort]
'''
self.servers = [HostPort.from_json(o) for o in servers or []]
def __init__(self, name=None, parameters=None, receiver=None, tag=None, **unknown_fields):
'''
name : str
- parameters : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ parameters : typing.Mapping[str, typing.Any]
receiver : str
tag : str
'''
'''
action_tag : str
message : str
- results : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ results : typing.Mapping[str, typing.Any]
status : str
'''
self.action_tag = action_tag
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ActionExecutionResult]<~ActionExecutionResult>
+ results : typing.Sequence[~ActionExecutionResult]
'''
self.results = [ActionExecutionResult.from_json(o) for o in results or []]
+class ActionPruneArgs(Type):
+ _toSchema = {'max_history_mb': 'max-history-mb', 'max_history_time': 'max-history-time'}
+ _toPy = {'max-history-mb': 'max_history_mb', 'max-history-time': 'max_history_time'}
+ def __init__(self, max_history_mb=None, max_history_time=None, **unknown_fields):
+ '''
+ max_history_mb : int
+ max_history_time : int
+ '''
+ self.max_history_mb = max_history_mb
+ self.max_history_time = max_history_time
+
+
+
class ActionResult(Type):
_toSchema = {'action': 'action', 'completed': 'completed', 'enqueued': 'enqueued', 'error': 'error', 'message': 'message', 'output': 'output', 'started': 'started', 'status': 'status'}
_toPy = {'action': 'action', 'completed': 'completed', 'enqueued': 'enqueued', 'error': 'error', 'message': 'message', 'output': 'output', 'started': 'started', 'status': 'status'}
enqueued : str
error : Error
message : str
- output : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ output : typing.Mapping[str, typing.Any]
started : str
status : str
'''
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ActionResult]<~ActionResult>
+ results : typing.Sequence[~ActionResult]
'''
self.results = [ActionResult.from_json(o) for o in results or []]
def __init__(self, description=None, params=None, **unknown_fields):
'''
description : str
- params : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ params : typing.Mapping[str, typing.Any]
'''
self.description = description
self.params = params
_toPy = {'actions': 'actions'}
def __init__(self, actions=None, **unknown_fields):
'''
- actions : typing.Sequence<+T_co>[~Action]<~Action>
+ actions : typing.Sequence[~Action]
'''
self.actions = [Action.from_json(o) for o in actions or []]
_toPy = {'actions': 'actions', 'error': 'error', 'name': 'name'}
def __init__(self, actions=None, error=None, name=None, **unknown_fields):
'''
- actions : typing.Sequence<+T_co>[~ActionResult]<~ActionResult>
+ actions : typing.Sequence[~ActionResult]
error : Error
name : str
'''
_toPy = {'actions': 'actions'}
def __init__(self, actions=None, **unknown_fields):
'''
- actions : typing.Sequence<+T_co>[~ActionsByName]<~ActionsByName>
+ actions : typing.Sequence[~ActionsByName]
'''
self.actions = [ActionsByName.from_json(o) for o in actions or []]
_toPy = {'actions': 'actions', 'error': 'error', 'receiver': 'receiver'}
def __init__(self, actions=None, error=None, receiver=None, **unknown_fields):
'''
- actions : typing.Sequence<+T_co>[~ActionResult]<~ActionResult>
+ actions : typing.Sequence[~ActionResult]
error : Error
receiver : str
'''
_toPy = {'actions': 'actions'}
def __init__(self, actions=None, **unknown_fields):
'''
- actions : typing.Sequence<+T_co>[~ActionsByReceiver]<~ActionsByReceiver>
+ actions : typing.Sequence[~ActionsByReceiver]
'''
self.actions = [ActionsByReceiver.from_json(o) for o in actions or []]
+class AddApplicationOffer(Type):
+ _toSchema = {'application_description': 'application-description', 'application_name': 'application-name', 'endpoints': 'endpoints', 'model_tag': 'model-tag', 'offer_name': 'offer-name'}
+ _toPy = {'application-description': 'application_description', 'application-name': 'application_name', 'endpoints': 'endpoints', 'model-tag': 'model_tag', 'offer-name': 'offer_name'}
+ def __init__(self, application_description=None, application_name=None, endpoints=None, model_tag=None, offer_name=None, **unknown_fields):
+ '''
+ application_description : str
+ application_name : str
+ endpoints : typing.Mapping[str, str]
+ model_tag : str
+ offer_name : str
+ '''
+ self.application_description = application_description
+ self.application_name = application_name
+ self.endpoints = endpoints
+ self.model_tag = model_tag
+ self.offer_name = offer_name
+
+
+
+class AddApplicationOffers(Type):
+ _toSchema = {'offers': 'Offers'}
+ _toPy = {'Offers': 'offers'}
+ def __init__(self, offers=None, **unknown_fields):
+ '''
+ offers : typing.Sequence[~AddApplicationOffer]
+ '''
+ self.offers = [AddApplicationOffer.from_json(o) for o in offers or []]
+
+
+
class AddApplicationUnits(Type):
_toSchema = {'application': 'application', 'num_units': 'num-units', 'placement': 'placement'}
_toPy = {'application': 'application', 'num-units': 'num_units', 'placement': 'placement'}
'''
application : str
num_units : int
- placement : typing.Sequence<+T_co>[~Placement]<~Placement>
+ placement : typing.Sequence[~Placement]
'''
self.application = application
self.num_units = num_units
_toPy = {'units': 'units'}
def __init__(self, units=None, **unknown_fields):
'''
- units : typing.Sequence<+T_co>[str]
+ units : typing.Sequence[str]
'''
self.units = units
+class AddCloudArgs(Type):
+ _toSchema = {'cloud': 'cloud', 'name': 'name'}
+ _toPy = {'cloud': 'cloud', 'name': 'name'}
+ def __init__(self, cloud=None, name=None, **unknown_fields):
+ '''
+ cloud : Cloud
+ name : str
+ '''
+ self.cloud = Cloud.from_json(cloud) if cloud else None
+ self.name = name
+
+
+
class AddMachineParams(Type):
_toSchema = {'addresses': 'addresses', 'constraints': 'constraints', 'container_type': 'container-type', 'disks': 'disks', 'hardware_characteristics': 'hardware-characteristics', 'instance_id': 'instance-id', 'jobs': 'jobs', 'nonce': 'nonce', 'parent_id': 'parent-id', 'placement': 'placement', 'series': 'series'}
_toPy = {'addresses': 'addresses', 'constraints': 'constraints', 'container-type': 'container_type', 'disks': 'disks', 'hardware-characteristics': 'hardware_characteristics', 'instance-id': 'instance_id', 'jobs': 'jobs', 'nonce': 'nonce', 'parent-id': 'parent_id', 'placement': 'placement', 'series': 'series'}
def __init__(self, addresses=None, constraints=None, container_type=None, disks=None, hardware_characteristics=None, instance_id=None, jobs=None, nonce=None, parent_id=None, placement=None, series=None, **unknown_fields):
'''
- addresses : typing.Sequence<+T_co>[~Address]<~Address>
+ addresses : typing.Sequence[~Address]
constraints : Value
container_type : str
- disks : typing.Sequence<+T_co>[~Constraints]<~Constraints>
+ disks : typing.Sequence[~Constraints]
hardware_characteristics : HardwareCharacteristics
instance_id : str
- jobs : typing.Sequence<+T_co>[str]
+ jobs : typing.Sequence[str]
nonce : str
parent_id : str
placement : Placement
_toPy = {'params': 'params'}
def __init__(self, params=None, **unknown_fields):
'''
- params : typing.Sequence<+T_co>[~AddMachineParams]<~AddMachineParams>
+ params : typing.Sequence[~AddMachineParams]
'''
self.params = [AddMachineParams.from_json(o) for o in params or []]
_toPy = {'machines': 'machines'}
def __init__(self, machines=None, **unknown_fields):
'''
- machines : typing.Sequence<+T_co>[~AddMachinesResult]<~AddMachinesResult>
+ machines : typing.Sequence[~AddMachinesResult]
'''
self.machines = [AddMachinesResult.from_json(o) for o in machines or []]
'''
addcharmwithauthorization : AddCharmWithAuthorization
entity : Entity
- resources : typing.Sequence<+T_co>[~CharmResource]<~CharmResource>
+ resources : typing.Sequence[~CharmResource]
'''
self.addcharmwithauthorization = AddCharmWithAuthorization.from_json(addcharmwithauthorization) if addcharmwithauthorization else None
self.entity = Entity.from_json(entity) if entity else None
def __init__(self, errorresult=None, pending_ids=None, **unknown_fields):
'''
errorresult : ErrorResult
- pending_ids : typing.Sequence<+T_co>[str]
+ pending_ids : typing.Sequence[str]
'''
self.errorresult = ErrorResult.from_json(errorresult) if errorresult else None
self.pending_ids = pending_ids
_toPy = {'endpoints': 'endpoints'}
def __init__(self, endpoints=None, **unknown_fields):
'''
- endpoints : typing.Sequence<+T_co>[str]
+ endpoints : typing.Sequence[str]
'''
self.endpoints = endpoints
_toPy = {'endpoints': 'endpoints'}
def __init__(self, endpoints=None, **unknown_fields):
'''
- endpoints : typing.Mapping<~KT, +VT_co>[str, ~CharmRelation]<~CharmRelation>
+ endpoints : typing.Mapping[str, ~CharmRelation]
'''
self.endpoints = endpoints
+class AddStorageDetails(Type):
+ _toSchema = {'storage_tags': 'storage-tags'}
+ _toPy = {'storage-tags': 'storage_tags'}
+ def __init__(self, storage_tags=None, **unknown_fields):
+ '''
+ storage_tags : typing.Sequence[str]
+ '''
+ self.storage_tags = storage_tags
+
+
+
+class AddStorageResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : AddStorageDetails
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = AddStorageDetails.from_json(result) if result else None
+
+
+
+class AddStorageResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~AddStorageResult]
+ '''
+ self.results = [AddStorageResult.from_json(o) for o in results or []]
+
+
+
class AddSubnetParams(Type):
_toSchema = {'space_tag': 'space-tag', 'subnet_provider_id': 'subnet-provider-id', 'subnet_tag': 'subnet-tag', 'zones': 'zones'}
_toPy = {'space-tag': 'space_tag', 'subnet-provider-id': 'subnet_provider_id', 'subnet-tag': 'subnet_tag', 'zones': 'zones'}
space_tag : str
subnet_provider_id : str
subnet_tag : str
- zones : typing.Sequence<+T_co>[str]
+ zones : typing.Sequence[str]
'''
self.space_tag = space_tag
self.subnet_provider_id = subnet_provider_id
_toPy = {'subnets': 'subnets'}
def __init__(self, subnets=None, **unknown_fields):
'''
- subnets : typing.Sequence<+T_co>[~AddSubnetParams]<~AddSubnetParams>
+ subnets : typing.Sequence[~AddSubnetParams]
'''
self.subnets = [AddSubnetParams.from_json(o) for o in subnets or []]
def __init__(self, error=None, secret_key=None, tag=None, **unknown_fields):
'''
error : Error
- secret_key : typing.Sequence<+T_co>[int]
+ secret_key : typing.Sequence[int]
tag : str
'''
self.error = Error.from_json(error) if error else None
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~AddUserResult]<~AddUserResult>
+ results : typing.Sequence[~AddUserResult]
'''
self.results = [AddUserResult.from_json(o) for o in results or []]
_toPy = {'users': 'users'}
def __init__(self, users=None, **unknown_fields):
'''
- users : typing.Sequence<+T_co>[~AddUser]<~AddUser>
+ users : typing.Sequence[~AddUser]
'''
self.users = [AddUser.from_json(o) for o in users or []]
'''
container_type : str
error : Error
- jobs : typing.Sequence<+T_co>[str]
+ jobs : typing.Sequence[str]
life : str
'''
self.container_type = container_type
_toPy = {'entities': 'entities'}
def __init__(self, entities=None, **unknown_fields):
'''
- entities : typing.Sequence<+T_co>[~AgentGetEntitiesResult]<~AgentGetEntitiesResult>
+ entities : typing.Sequence[~AgentGetEntitiesResult]
'''
self.entities = [AgentGetEntitiesResult.from_json(o) for o in entities or []]
_toPy = {'deltas': 'deltas'}
def __init__(self, deltas=None, **unknown_fields):
'''
- deltas : typing.Sequence<+T_co>[~Delta]<~Delta>
+ deltas : typing.Sequence[~Delta]
'''
self.deltas = [Delta.from_json(o) for o in deltas or []]
_toPy = {'annotations': 'annotations', 'entity': 'entity', 'error': 'error'}
def __init__(self, annotations=None, entity=None, error=None, **unknown_fields):
'''
- annotations : typing.Mapping<~KT, +VT_co>[str, str]
+ annotations : typing.Mapping[str, str]
entity : str
error : ErrorResult
'''
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~AnnotationsGetResult]<~AnnotationsGetResult>
+ results : typing.Sequence[~AnnotationsGetResult]
'''
self.results = [AnnotationsGetResult.from_json(o) for o in results or []]
_toPy = {'annotations': 'annotations'}
def __init__(self, annotations=None, **unknown_fields):
'''
- annotations : typing.Sequence<+T_co>[~EntityAnnotations]<~EntityAnnotations>
+ annotations : typing.Sequence[~EntityAnnotations]
'''
self.annotations = [EntityAnnotations.from_json(o) for o in annotations or []]
+class ApplicationCharm(Type):
+ _toSchema = {'charm_modified_version': 'charm-modified-version', 'force_upgrade': 'force-upgrade', 'sha256': 'sha256', 'url': 'url'}
+ _toPy = {'charm-modified-version': 'charm_modified_version', 'force-upgrade': 'force_upgrade', 'sha256': 'sha256', 'url': 'url'}
+ def __init__(self, charm_modified_version=None, force_upgrade=None, sha256=None, url=None, **unknown_fields):
+ '''
+ charm_modified_version : int
+ force_upgrade : bool
+ sha256 : str
+ url : str
+ '''
+ self.charm_modified_version = charm_modified_version
+ self.force_upgrade = force_upgrade
+ self.sha256 = sha256
+ self.url = url
+
+
+
class ApplicationCharmActionsResult(Type):
_toSchema = {'actions': 'actions', 'application_tag': 'application-tag', 'error': 'error'}
_toPy = {'actions': 'actions', 'application-tag': 'application_tag', 'error': 'error'}
def __init__(self, actions=None, application_tag=None, error=None, **unknown_fields):
'''
- actions : typing.Mapping<~KT, +VT_co>[str, ~ActionSpec]<~ActionSpec>
+ actions : typing.Mapping[str, ~ActionSpec]
application_tag : str
error : Error
'''
_toPy = {'charm-relations': 'charm_relations'}
def __init__(self, charm_relations=None, **unknown_fields):
'''
- charm_relations : typing.Sequence<+T_co>[str]
+ charm_relations : typing.Sequence[str]
'''
self.charm_relations = charm_relations
+class ApplicationCharmResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : ApplicationCharm
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = ApplicationCharm.from_json(result) if result else None
+
+
+
+class ApplicationCharmResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~ApplicationCharmResult]
+ '''
+ self.results = [ApplicationCharmResult.from_json(o) for o in results or []]
+
+
+
+class ApplicationConfigSet(Type):
+ _toSchema = {'application': 'application', 'config': 'config'}
+ _toPy = {'application': 'application', 'config': 'config'}
+ def __init__(self, application=None, config=None, **unknown_fields):
+ '''
+ application : str
+ config : typing.Mapping[str, str]
+ '''
+ self.application = application
+ self.config = config
+
+
+
+class ApplicationConfigSetArgs(Type):
+ _toSchema = {'args': 'Args'}
+ _toPy = {'Args': 'args'}
+ def __init__(self, args=None, **unknown_fields):
+ '''
+ args : typing.Sequence[~ApplicationConfigSet]
+ '''
+ self.args = [ApplicationConfigSet.from_json(o) for o in args or []]
+
+
+
+class ApplicationConfigUnsetArgs(Type):
+ _toSchema = {'args': 'Args'}
+ _toPy = {'Args': 'args'}
+ def __init__(self, args=None, **unknown_fields):
+ '''
+ args : typing.Sequence[~ApplicationUnset]
+ '''
+ self.args = [ApplicationUnset.from_json(o) for o in args or []]
+
+
+
+class ApplicationConstraint(Type):
+ _toSchema = {'constraints': 'constraints', 'error': 'error'}
+ _toPy = {'constraints': 'constraints', 'error': 'error'}
+ def __init__(self, constraints=None, error=None, **unknown_fields):
+ '''
+ constraints : Value
+ error : Error
+ '''
+ self.constraints = Value.from_json(constraints) if constraints else None
+ self.error = Error.from_json(error) if error else None
+
+
+
class ApplicationDeploy(Type):
- _toSchema = {'application': 'application', 'channel': 'channel', 'charm_url': 'charm-url', 'config': 'config', 'config_yaml': 'config-yaml', 'constraints': 'constraints', 'endpoint_bindings': 'endpoint-bindings', 'num_units': 'num-units', 'placement': 'placement', 'resources': 'resources', 'series': 'series', 'storage': 'storage'}
- _toPy = {'application': 'application', 'channel': 'channel', 'charm-url': 'charm_url', 'config': 'config', 'config-yaml': 'config_yaml', 'constraints': 'constraints', 'endpoint-bindings': 'endpoint_bindings', 'num-units': 'num_units', 'placement': 'placement', 'resources': 'resources', 'series': 'series', 'storage': 'storage'}
- def __init__(self, application=None, channel=None, charm_url=None, config=None, config_yaml=None, constraints=None, endpoint_bindings=None, num_units=None, placement=None, resources=None, series=None, storage=None, **unknown_fields):
+ _toSchema = {'application': 'application', 'attach_storage': 'attach-storage', 'channel': 'channel', 'charm_url': 'charm-url', 'config': 'config', 'config_yaml': 'config-yaml', 'constraints': 'constraints', 'devices': 'devices', 'endpoint_bindings': 'endpoint-bindings', 'num_units': 'num-units', 'placement': 'placement', 'policy': 'policy', 'resources': 'resources', 'series': 'series', 'storage': 'storage'}
+ _toPy = {'application': 'application', 'attach-storage': 'attach_storage', 'channel': 'channel', 'charm-url': 'charm_url', 'config': 'config', 'config-yaml': 'config_yaml', 'constraints': 'constraints', 'devices': 'devices', 'endpoint-bindings': 'endpoint_bindings', 'num-units': 'num_units', 'placement': 'placement', 'policy': 'policy', 'resources': 'resources', 'series': 'series', 'storage': 'storage'}
+ def __init__(self, application=None, attach_storage=None, channel=None, charm_url=None, config=None, config_yaml=None, constraints=None, devices=None, endpoint_bindings=None, num_units=None, placement=None, policy=None, resources=None, series=None, storage=None, **unknown_fields):
'''
application : str
+ attach_storage : typing.Sequence[str]
channel : str
charm_url : str
- config : typing.Mapping<~KT, +VT_co>[str, str]
+ config : typing.Mapping[str, str]
config_yaml : str
constraints : Value
- endpoint_bindings : typing.Mapping<~KT, +VT_co>[str, str]
+ devices : typing.Mapping[str, ~Constraints]
+ endpoint_bindings : typing.Mapping[str, str]
num_units : int
- placement : typing.Sequence<+T_co>[~Placement]<~Placement>
- resources : typing.Mapping<~KT, +VT_co>[str, str]
+ placement : typing.Sequence[~Placement]
+ policy : str
+ resources : typing.Mapping[str, str]
series : str
- storage : typing.Mapping<~KT, +VT_co>[str, ~Constraints]<~Constraints>
+ storage : typing.Mapping[str, ~Constraints]
'''
self.application = application
+ self.attach_storage = attach_storage
self.channel = channel
self.charm_url = charm_url
self.config = config
self.config_yaml = config_yaml
self.constraints = Value.from_json(constraints) if constraints else None
+ self.devices = devices
self.endpoint_bindings = endpoint_bindings
self.num_units = num_units
self.placement = [Placement.from_json(o) for o in placement or []]
+ self.policy = policy
self.resources = resources
self.series = series
self.storage = storage
+class ApplicationGetConfigResults(Type):
+ _toSchema = {'results': 'Results'}
+ _toPy = {'Results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~ConfigResult]
+ '''
+ self.results = [ConfigResult.from_json(o) for o in results or []]
+
+
+
+class ApplicationGetConstraintsResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~ApplicationConstraint]
+ '''
+ self.results = [ApplicationConstraint.from_json(o) for o in results or []]
+
+
+
class ApplicationGetResults(Type):
_toSchema = {'application': 'application', 'charm': 'charm', 'config': 'config', 'constraints': 'constraints', 'series': 'series'}
_toPy = {'application': 'application', 'charm': 'charm', 'config': 'config', 'constraints': 'constraints', 'series': 'series'}
'''
application : str
charm : str
- config : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ config : typing.Mapping[str, typing.Any]
constraints : Value
series : str
'''
def __init__(self, application=None, metrics_credentials=None, **unknown_fields):
'''
application : str
- metrics_credentials : typing.Sequence<+T_co>[int]
+ metrics_credentials : typing.Sequence[int]
'''
self.application = application
self.metrics_credentials = metrics_credentials
_toPy = {'creds': 'creds'}
def __init__(self, creds=None, **unknown_fields):
'''
- creds : typing.Sequence<+T_co>[~ApplicationMetricCredential]<~ApplicationMetricCredential>
+ creds : typing.Sequence[~ApplicationMetricCredential]
'''
self.creds = [ApplicationMetricCredential.from_json(o) for o in creds or []]
'''
access : str
application_description : str
- bindings : typing.Mapping<~KT, +VT_co>[str, str]
- endpoints : typing.Sequence<+T_co>[~RemoteEndpoint]<~RemoteEndpoint>
+ bindings : typing.Mapping[str, str]
+ endpoints : typing.Sequence[~RemoteEndpoint]
offer_name : str
offer_url : str
source_model_tag : str
- spaces : typing.Sequence<+T_co>[~RemoteSpace]<~RemoteSpace>
+ spaces : typing.Sequence[~RemoteSpace]
'''
self.access = access
self.application_description = application_description
+class ApplicationOfferAdminDetails(Type):
+ _toSchema = {'application_name': 'application-name', 'applicationofferdetails': 'ApplicationOfferDetails', 'charm_url': 'charm-url', 'connections': 'connections'}
+ _toPy = {'ApplicationOfferDetails': 'applicationofferdetails', 'application-name': 'application_name', 'charm-url': 'charm_url', 'connections': 'connections'}
+ def __init__(self, applicationofferdetails=None, application_name=None, charm_url=None, connections=None, **unknown_fields):
+ '''
+ applicationofferdetails : ApplicationOfferDetails
+ application_name : str
+ charm_url : str
+ connections : typing.Sequence[~OfferConnection]
+ '''
+ self.applicationofferdetails = ApplicationOfferDetails.from_json(applicationofferdetails) if applicationofferdetails else None
+ self.application_name = application_name
+ self.charm_url = charm_url
+ self.connections = [OfferConnection.from_json(o) for o in connections or []]
+
+
+
+class ApplicationOfferDetails(Type):
+ _toSchema = {'application_description': 'application-description', 'bindings': 'bindings', 'endpoints': 'endpoints', 'offer_name': 'offer-name', 'offer_url': 'offer-url', 'offer_uuid': 'offer-uuid', 'source_model_tag': 'source-model-tag', 'spaces': 'spaces', 'users': 'users'}
+ _toPy = {'application-description': 'application_description', 'bindings': 'bindings', 'endpoints': 'endpoints', 'offer-name': 'offer_name', 'offer-url': 'offer_url', 'offer-uuid': 'offer_uuid', 'source-model-tag': 'source_model_tag', 'spaces': 'spaces', 'users': 'users'}
+ def __init__(self, application_description=None, bindings=None, endpoints=None, offer_name=None, offer_url=None, offer_uuid=None, source_model_tag=None, spaces=None, users=None, **unknown_fields):
+ '''
+ application_description : str
+ bindings : typing.Mapping[str, str]
+ endpoints : typing.Sequence[~RemoteEndpoint]
+ offer_name : str
+ offer_url : str
+ offer_uuid : str
+ source_model_tag : str
+ spaces : typing.Sequence[~RemoteSpace]
+ users : typing.Sequence[~OfferUserDetails]
+ '''
+ self.application_description = application_description
+ self.bindings = bindings
+ self.endpoints = [RemoteEndpoint.from_json(o) for o in endpoints or []]
+ self.offer_name = offer_name
+ self.offer_url = offer_url
+ self.offer_uuid = offer_uuid
+ self.source_model_tag = source_model_tag
+ self.spaces = [RemoteSpace.from_json(o) for o in spaces or []]
+ self.users = [OfferUserDetails.from_json(o) for o in users or []]
+
+
+
+class ApplicationOfferResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : ApplicationOfferAdminDetails
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = ApplicationOfferAdminDetails.from_json(result) if result else None
+
+
+
+class ApplicationOfferStatus(Type):
+ _toSchema = {'active_connected_count': 'active-connected-count', 'application_name': 'application-name', 'charm': 'charm', 'endpoints': 'endpoints', 'err': 'err', 'offer_name': 'offer-name', 'total_connected_count': 'total-connected-count'}
+ _toPy = {'active-connected-count': 'active_connected_count', 'application-name': 'application_name', 'charm': 'charm', 'endpoints': 'endpoints', 'err': 'err', 'offer-name': 'offer_name', 'total-connected-count': 'total_connected_count'}
+ def __init__(self, active_connected_count=None, application_name=None, charm=None, endpoints=None, err=None, offer_name=None, total_connected_count=None, **unknown_fields):
+ '''
+ active_connected_count : int
+ application_name : str
+ charm : str
+ endpoints : typing.Mapping[str, ~RemoteEndpoint]
+ err : typing.Mapping[str, typing.Any]
+ offer_name : str
+ total_connected_count : int
+ '''
+ self.active_connected_count = active_connected_count
+ self.application_name = application_name
+ self.charm = charm
+ self.endpoints = endpoints
+ self.err = err
+ self.offer_name = offer_name
+ self.total_connected_count = total_connected_count
+
+
+
+class ApplicationOffersResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~ApplicationOfferResult]
+ '''
+ self.results = [ApplicationOfferResult.from_json(o) for o in results or []]
+
+
+
class ApplicationRelationsChange(Type):
_toSchema = {'changed': 'changed', 'removed': 'removed'}
_toPy = {'changed': 'changed', 'removed': 'removed'}
def __init__(self, changed=None, removed=None, **unknown_fields):
'''
- changed : typing.Sequence<+T_co>[~RelationChange]<~RelationChange>
- removed : typing.Sequence<+T_co>[int]
+ changed : typing.Sequence[~RelationChange]
+ removed : typing.Sequence[int]
'''
self.changed = [RelationChange.from_json(o) for o in changed or []]
self.removed = removed
def __init__(self, application=None, options=None, **unknown_fields):
'''
application : str
- options : typing.Mapping<~KT, +VT_co>[str, str]
+ options : typing.Mapping[str, str]
'''
self.application = application
self.options = options
application : str
channel : str
charm_url : str
- config_settings : typing.Mapping<~KT, +VT_co>[str, str]
+ config_settings : typing.Mapping[str, str]
config_settings_yaml : str
force_series : bool
force_units : bool
- resource_ids : typing.Mapping<~KT, +VT_co>[str, str]
- storage_constraints : typing.Mapping<~KT, +VT_co>[str, ~StorageConstraints]<~StorageConstraints>
+ resource_ids : typing.Mapping[str, str]
+ storage_constraints : typing.Mapping[str, ~StorageConstraints]
'''
self.application = application
self.channel = channel
+class ApplicationSetCharmProfile(Type):
+ _toSchema = {'application': 'application', 'charm_url': 'charm-url'}
+ _toPy = {'application': 'application', 'charm-url': 'charm_url'}
+ def __init__(self, application=None, charm_url=None, **unknown_fields):
+ '''
+ application : str
+ charm_url : str
+ '''
+ self.application = application
+ self.charm_url = charm_url
+
+
+
class ApplicationStatus(Type):
_toSchema = {'can_upgrade_to': 'can-upgrade-to', 'charm': 'charm', 'err': 'err', 'exposed': 'exposed', 'life': 'life', 'meter_statuses': 'meter-statuses', 'relations': 'relations', 'series': 'series', 'status': 'status', 'subordinate_to': 'subordinate-to', 'units': 'units', 'workload_version': 'workload-version'}
_toPy = {'can-upgrade-to': 'can_upgrade_to', 'charm': 'charm', 'err': 'err', 'exposed': 'exposed', 'life': 'life', 'meter-statuses': 'meter_statuses', 'relations': 'relations', 'series': 'series', 'status': 'status', 'subordinate-to': 'subordinate_to', 'units': 'units', 'workload-version': 'workload_version'}
'''
can_upgrade_to : str
charm : str
- err : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ err : typing.Mapping[str, typing.Any]
exposed : bool
life : str
- meter_statuses : typing.Mapping<~KT, +VT_co>[str, ~MeterStatus]<~MeterStatus>
- relations : typing.Sequence<+T_co>[str]
+ meter_statuses : typing.Mapping[str, ~MeterStatus]
+ relations : typing.Sequence[str]
series : str
status : DetailedStatus
- subordinate_to : typing.Sequence<+T_co>[str]
- units : typing.Mapping<~KT, +VT_co>[str, ~UnitStatus]<~UnitStatus>
+ subordinate_to : typing.Sequence[str]
+ units : typing.Mapping[str, ~UnitStatus]
workload_version : str
'''
self.can_upgrade_to = can_upgrade_to
'''
application : StatusResult
error : Error
- units : typing.Mapping<~KT, +VT_co>[str, ~StatusResult]<~StatusResult>
+ units : typing.Mapping[str, ~StatusResult]
'''
self.application = StatusResult.from_json(application) if application else None
self.error = Error.from_json(error) if error else None
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ApplicationStatusResult]<~ApplicationStatusResult>
+ results : typing.Sequence[~ApplicationStatusResult]
'''
self.results = [ApplicationStatusResult.from_json(o) for o in results or []]
_toPy = {'application-urls': 'application_urls'}
def __init__(self, application_urls=None, **unknown_fields):
'''
- application_urls : typing.Sequence<+T_co>[str]
+ application_urls : typing.Sequence[str]
'''
self.application_urls = application_urls
+class ApplicationUnitParams(Type):
+ _toSchema = {'address': 'address', 'data': 'data', 'filesystem_info': 'filesystem-info', 'info': 'info', 'ports': 'ports', 'provider_id': 'provider-id', 'status': 'status', 'unit_tag': 'unit-tag'}
+ _toPy = {'address': 'address', 'data': 'data', 'filesystem-info': 'filesystem_info', 'info': 'info', 'ports': 'ports', 'provider-id': 'provider_id', 'status': 'status', 'unit-tag': 'unit_tag'}
+ def __init__(self, address=None, data=None, filesystem_info=None, info=None, ports=None, provider_id=None, status=None, unit_tag=None, **unknown_fields):
+ '''
+ address : str
+ data : typing.Mapping[str, typing.Any]
+ filesystem_info : typing.Sequence[~KubernetesFilesystemInfo]
+ info : str
+ ports : typing.Sequence[str]
+ provider_id : str
+ status : str
+ unit_tag : str
+ '''
+ self.address = address
+ self.data = data
+ self.filesystem_info = [KubernetesFilesystemInfo.from_json(o) for o in filesystem_info or []]
+ self.info = info
+ self.ports = ports
+ self.provider_id = provider_id
+ self.status = status
+ self.unit_tag = unit_tag
+
+
+
class ApplicationUnset(Type):
_toSchema = {'application': 'application', 'options': 'options'}
_toPy = {'application': 'application', 'options': 'options'}
def __init__(self, application=None, options=None, **unknown_fields):
'''
application : str
- options : typing.Sequence<+T_co>[str]
+ options : typing.Sequence[str]
'''
self.application = application
self.options = options
force_charm_url : bool
force_series : bool
min_units : int
- settings : typing.Mapping<~KT, +VT_co>[str, str]
+ settings : typing.Mapping[str, str]
settings_yaml : str
'''
self.application = application
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ApplicationCharmActionsResult]<~ApplicationCharmActionsResult>
+ results : typing.Sequence[~ApplicationCharmActionsResult]
'''
self.results = [ApplicationCharmActionsResult.from_json(o) for o in results or []]
_toPy = {'applications': 'applications'}
def __init__(self, applications=None, **unknown_fields):
'''
- applications : typing.Sequence<+T_co>[~ApplicationDeploy]<~ApplicationDeploy>
+ applications : typing.Sequence[~ApplicationDeploy]
'''
self.applications = [ApplicationDeploy.from_json(o) for o in applications or []]
_toPy = {'list': 'list_'}
def __init__(self, list_=None, **unknown_fields):
'''
- list_ : typing.Sequence<+T_co>[~BackupsMetadataResult]<~BackupsMetadataResult>
+ list_ : typing.Sequence[~BackupsMetadataResult]
'''
self.list_ = [BackupsMetadataResult.from_json(o) for o in list_ or []]
def __init__(self, busaddress=None, devicelinks=None, devicename=None, filesystemtype=None, hardwareid=None, inuse=None, label=None, mountpoint=None, size=None, uuid=None, **unknown_fields):
'''
busaddress : str
- devicelinks : typing.Sequence<+T_co>[str]
+ devicelinks : typing.Sequence[str]
devicename : str
filesystemtype : str
hardwareid : str
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~BlockDeviceResult]<~BlockDeviceResult>
+ results : typing.Sequence[~BlockDeviceResult]
'''
self.results = [BlockDeviceResult.from_json(o) for o in results or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~BlockResult]<~BlockResult>
+ results : typing.Sequence[~BlockResult]
'''
self.results = [BlockResult.from_json(o) for o in results or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~BoolResult]<~BoolResult>
+ results : typing.Sequence[~BoolResult]
'''
self.results = [BoolResult.from_json(o) for o in results or []]
+class BulkImportStorageParams(Type):
+ _toSchema = {'storage': 'storage'}
+ _toPy = {'storage': 'storage'}
+ def __init__(self, storage=None, **unknown_fields):
+ '''
+ storage : typing.Sequence[~ImportStorageParams]
+ '''
+ self.storage = [ImportStorageParams.from_json(o) for o in storage or []]
+
+
+
class BundleChange(Type):
_toSchema = {'args': 'args', 'id_': 'id', 'method': 'method', 'requires': 'requires'}
_toPy = {'args': 'args', 'id': 'id_', 'method': 'method', 'requires': 'requires'}
def __init__(self, args=None, id_=None, method=None, requires=None, **unknown_fields):
'''
- args : typing.Sequence<+T_co>[typing.Any]
+ args : typing.Sequence[typing.Any]
id_ : str
method : str
- requires : typing.Sequence<+T_co>[str]
+ requires : typing.Sequence[str]
'''
self.args = args
self.id_ = id_
_toPy = {'changes': 'changes', 'errors': 'errors'}
def __init__(self, changes=None, errors=None, **unknown_fields):
'''
- changes : typing.Sequence<+T_co>[~BundleChange]<~BundleChange>
- errors : typing.Sequence<+T_co>[str]
+ changes : typing.Sequence[~BundleChange]
+ errors : typing.Sequence[str]
'''
self.changes = [BundleChange.from_json(o) for o in changes or []]
self.errors = errors
_toPy = {'result': 'result'}
def __init__(self, result=None, **unknown_fields):
'''
- result : typing.Sequence<+T_co>[int]
+ result : typing.Sequence[int]
'''
self.result = result
+class ChangeModelCredentialParams(Type):
+ _toSchema = {'credential_tag': 'credential-tag', 'model_tag': 'model-tag'}
+ _toPy = {'credential-tag': 'credential_tag', 'model-tag': 'model_tag'}
+ def __init__(self, credential_tag=None, model_tag=None, **unknown_fields):
+ '''
+ credential_tag : str
+ model_tag : str
+ '''
+ self.credential_tag = credential_tag
+ self.model_tag = model_tag
+
+
+
+class ChangeModelCredentialsParams(Type):
+ _toSchema = {'model_credentials': 'model-credentials'}
+ _toPy = {'model-credentials': 'model_credentials'}
+ def __init__(self, model_credentials=None, **unknown_fields):
+ '''
+ model_credentials : typing.Sequence[~ChangeModelCredentialParams]
+ '''
+ self.model_credentials = [ChangeModelCredentialParams.from_json(o) for o in model_credentials or []]
+
+
+
class CharmActionSpec(Type):
_toSchema = {'description': 'description', 'params': 'params'}
_toPy = {'description': 'description', 'params': 'params'}
def __init__(self, description=None, params=None, **unknown_fields):
'''
description : str
- params : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ params : typing.Mapping[str, typing.Any]
'''
self.description = description
self.params = params
_toPy = {'specs': 'specs'}
def __init__(self, specs=None, **unknown_fields):
'''
- specs : typing.Mapping<~KT, +VT_co>[str, ~CharmActionSpec]<~CharmActionSpec>
+ specs : typing.Mapping[str, ~CharmActionSpec]
'''
self.specs = specs
+class CharmDevice(Type):
+ _toSchema = {'countmax': 'CountMax', 'countmin': 'CountMin', 'description': 'Description', 'name': 'Name', 'type_': 'Type'}
+ _toPy = {'CountMax': 'countmax', 'CountMin': 'countmin', 'Description': 'description', 'Name': 'name', 'Type': 'type_'}
+ def __init__(self, countmax=None, countmin=None, description=None, name=None, type_=None, **unknown_fields):
+ '''
+ countmax : int
+ countmin : int
+ description : str
+ name : str
+ type_ : str
+ '''
+ self.countmax = countmax
+ self.countmin = countmin
+ self.description = description
+ self.name = name
+ self.type_ = type_
+
+
+
class CharmInfo(Type):
_toSchema = {'actions': 'actions', 'config': 'config', 'meta': 'meta', 'metrics': 'metrics', 'revision': 'revision', 'url': 'url'}
_toPy = {'actions': 'actions', 'config': 'config', 'meta': 'meta', 'metrics': 'metrics', 'revision': 'revision', 'url': 'url'}
def __init__(self, actions=None, config=None, meta=None, metrics=None, revision=None, url=None, **unknown_fields):
'''
actions : CharmActions
- config : typing.Mapping<~KT, +VT_co>[str, ~CharmOption]<~CharmOption>
+ config : typing.Mapping[str, ~CharmOption]
meta : CharmMeta
metrics : CharmMetrics
revision : int
+class CharmLXDProfile(Type):
+ _toSchema = {'config': 'config', 'description': 'description', 'devices': 'devices'}
+ _toPy = {'config': 'config', 'description': 'description', 'devices': 'devices'}
+ def __init__(self, config=None, description=None, devices=None, **unknown_fields):
+ '''
+ config : typing.Mapping[str, str]
+ description : str
+ devices : typing.Mapping[str, typing.Any]
+ '''
+ self.config = config
+ self.description = description
+ self.devices = devices
+
+
+
class CharmMeta(Type):
_toSchema = {'categories': 'categories', 'description': 'description', 'extra_bindings': 'extra-bindings', 'min_juju_version': 'min-juju-version', 'name': 'name', 'payload_classes': 'payload-classes', 'peers': 'peers', 'provides': 'provides', 'requires': 'requires', 'resources': 'resources', 'series': 'series', 'storage': 'storage', 'subordinate': 'subordinate', 'summary': 'summary', 'tags': 'tags', 'terms': 'terms'}
_toPy = {'categories': 'categories', 'description': 'description', 'extra-bindings': 'extra_bindings', 'min-juju-version': 'min_juju_version', 'name': 'name', 'payload-classes': 'payload_classes', 'peers': 'peers', 'provides': 'provides', 'requires': 'requires', 'resources': 'resources', 'series': 'series', 'storage': 'storage', 'subordinate': 'subordinate', 'summary': 'summary', 'tags': 'tags', 'terms': 'terms'}
def __init__(self, categories=None, description=None, extra_bindings=None, min_juju_version=None, name=None, payload_classes=None, peers=None, provides=None, requires=None, resources=None, series=None, storage=None, subordinate=None, summary=None, tags=None, terms=None, **unknown_fields):
'''
- categories : typing.Sequence<+T_co>[str]
+ categories : typing.Sequence[str]
description : str
- extra_bindings : typing.Mapping<~KT, +VT_co>[str, str]
+ extra_bindings : typing.Mapping[str, str]
min_juju_version : str
name : str
- payload_classes : typing.Mapping<~KT, +VT_co>[str, ~CharmPayloadClass]<~CharmPayloadClass>
- peers : typing.Mapping<~KT, +VT_co>[str, ~CharmRelation]<~CharmRelation>
- provides : typing.Mapping<~KT, +VT_co>[str, ~CharmRelation]<~CharmRelation>
- requires : typing.Mapping<~KT, +VT_co>[str, ~CharmRelation]<~CharmRelation>
- resources : typing.Mapping<~KT, +VT_co>[str, ~CharmResourceMeta]<~CharmResourceMeta>
- series : typing.Sequence<+T_co>[str]
- storage : typing.Mapping<~KT, +VT_co>[str, ~CharmStorage]<~CharmStorage>
+ payload_classes : typing.Mapping[str, ~CharmPayloadClass]
+ peers : typing.Mapping[str, ~CharmRelation]
+ provides : typing.Mapping[str, ~CharmRelation]
+ requires : typing.Mapping[str, ~CharmRelation]
+ resources : typing.Mapping[str, ~CharmResourceMeta]
+ series : typing.Sequence[str]
+ storage : typing.Mapping[str, ~CharmStorage]
subordinate : bool
summary : str
- tags : typing.Sequence<+T_co>[str]
- terms : typing.Sequence<+T_co>[str]
+ tags : typing.Sequence[str]
+ terms : typing.Sequence[str]
'''
self.categories = categories
self.description = description
_toPy = {'metrics': 'metrics', 'plan': 'plan'}
def __init__(self, metrics=None, plan=None, **unknown_fields):
'''
- metrics : typing.Mapping<~KT, +VT_co>[str, ~CharmMetric]<~CharmMetric>
+ metrics : typing.Mapping[str, ~CharmMetric]
plan : CharmPlan
'''
self.metrics = metrics
_toPy = {'default': 'default', 'description': 'description', 'type': 'type_'}
def __init__(self, default=None, description=None, type_=None, **unknown_fields):
'''
- default : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ default : typing.Mapping[str, typing.Any]
description : str
type_ : str
'''
def __init__(self, description=None, fingerprint=None, name=None, origin=None, path=None, revision=None, size=None, type_=None, **unknown_fields):
'''
description : str
- fingerprint : typing.Sequence<+T_co>[int]
+ fingerprint : typing.Sequence[int]
name : str
origin : str
path : str
location : str
minimum_size : int
name : str
- properties : typing.Sequence<+T_co>[str]
+ properties : typing.Sequence[str]
read_only : bool
shared : bool
type_ : str
_toPy = {'urls': 'urls'}
def __init__(self, urls=None, **unknown_fields):
'''
- urls : typing.Sequence<+T_co>[~CharmURL]<~CharmURL>
+ urls : typing.Sequence[~CharmURL]
'''
self.urls = [CharmURL.from_json(o) for o in urls or []]
_toPy = {'names': 'names'}
def __init__(self, names=None, **unknown_fields):
'''
- names : typing.Sequence<+T_co>[str]
+ names : typing.Sequence[str]
'''
self.names = names
_toPy = {'charm-urls': 'charm_urls'}
def __init__(self, charm_urls=None, **unknown_fields):
'''
- charm_urls : typing.Sequence<+T_co>[str]
+ charm_urls : typing.Sequence[str]
'''
self.charm_urls = charm_urls
_toPy = {'params': 'params'}
def __init__(self, params=None, **unknown_fields):
'''
- params : typing.Sequence<+T_co>[~ClaimLeadershipParams]<~ClaimLeadershipParams>
+ params : typing.Sequence[~ClaimLeadershipParams]
'''
self.params = [ClaimLeadershipParams.from_json(o) for o in params or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ results : typing.Sequence[~ErrorResult]
'''
self.results = [ErrorResult.from_json(o) for o in results or []]
_toPy = {'auth-types': 'auth_types', 'endpoint': 'endpoint', 'identity-endpoint': 'identity_endpoint', 'regions': 'regions', 'storage-endpoint': 'storage_endpoint', 'type': 'type_'}
def __init__(self, auth_types=None, endpoint=None, identity_endpoint=None, regions=None, storage_endpoint=None, type_=None, **unknown_fields):
'''
- auth_types : typing.Sequence<+T_co>[str]
+ auth_types : typing.Sequence[str]
endpoint : str
identity_endpoint : str
- regions : typing.Sequence<+T_co>[~CloudRegion]<~CloudRegion>
+ regions : typing.Sequence[~CloudRegion]
storage_endpoint : str
type_ : str
'''
_toPy = {'attrs': 'attrs', 'auth-type': 'auth_type', 'redacted': 'redacted'}
def __init__(self, attrs=None, auth_type=None, redacted=None, **unknown_fields):
'''
- attrs : typing.Mapping<~KT, +VT_co>[str, str]
+ attrs : typing.Mapping[str, str]
auth_type : str
- redacted : typing.Sequence<+T_co>[str]
+ redacted : typing.Sequence[str]
'''
self.attrs = attrs
self.auth_type = auth_type
-class CloudCredentialResult(Type):
- _toSchema = {'error': 'error', 'result': 'result'}
- _toPy = {'error': 'error', 'result': 'result'}
+class CloudCredentialArg(Type):
+ _toSchema = {'cloud_name': 'cloud-name', 'credential_name': 'credential-name'}
+ _toPy = {'cloud-name': 'cloud_name', 'credential-name': 'credential_name'}
+ def __init__(self, cloud_name=None, credential_name=None, **unknown_fields):
+ '''
+ cloud_name : str
+ credential_name : str
+ '''
+ self.cloud_name = cloud_name
+ self.credential_name = credential_name
+
+
+
+class CloudCredentialArgs(Type):
+ _toSchema = {'credentials': 'credentials', 'include_secrets': 'include-secrets'}
+ _toPy = {'credentials': 'credentials', 'include-secrets': 'include_secrets'}
+ def __init__(self, credentials=None, include_secrets=None, **unknown_fields):
+ '''
+ credentials : typing.Sequence[~CloudCredentialArg]
+ include_secrets : bool
+ '''
+ self.credentials = [CloudCredentialArg.from_json(o) for o in credentials or []]
+ self.include_secrets = include_secrets
+
+
+
+class CloudCredentialResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
def __init__(self, error=None, result=None, **unknown_fields):
'''
error : Error
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~CloudCredentialResult]<~CloudCredentialResult>
+ results : typing.Sequence[~CloudCredentialResult]
'''
self.results = [CloudCredentialResult.from_json(o) for o in results or []]
+class CloudDetails(Type):
+ _toSchema = {'auth_types': 'auth-types', 'endpoint': 'endpoint', 'identity_endpoint': 'identity-endpoint', 'regions': 'regions', 'storage_endpoint': 'storage-endpoint', 'type_': 'type'}
+ _toPy = {'auth-types': 'auth_types', 'endpoint': 'endpoint', 'identity-endpoint': 'identity_endpoint', 'regions': 'regions', 'storage-endpoint': 'storage_endpoint', 'type': 'type_'}
+ def __init__(self, auth_types=None, endpoint=None, identity_endpoint=None, regions=None, storage_endpoint=None, type_=None, **unknown_fields):
+ '''
+ auth_types : typing.Sequence[str]
+ endpoint : str
+ identity_endpoint : str
+ regions : typing.Sequence[~CloudRegion]
+ storage_endpoint : str
+ type_ : str
+ '''
+ self.auth_types = auth_types
+ self.endpoint = endpoint
+ self.identity_endpoint = identity_endpoint
+ self.regions = [CloudRegion.from_json(o) for o in regions or []]
+ self.storage_endpoint = storage_endpoint
+ self.type_ = type_
+
+
+
class CloudImageMetadata(Type):
_toSchema = {'arch': 'arch', 'image_id': 'image-id', 'priority': 'priority', 'region': 'region', 'root_storage_size': 'root-storage-size', 'root_storage_type': 'root-storage-type', 'series': 'series', 'source': 'source', 'stream': 'stream', 'version': 'version', 'virt_type': 'virt-type'}
_toPy = {'arch': 'arch', 'image-id': 'image_id', 'priority': 'priority', 'region': 'region', 'root-storage-size': 'root_storage_size', 'root-storage-type': 'root_storage_type', 'series': 'series', 'source': 'source', 'stream': 'stream', 'version': 'version', 'virt-type': 'virt_type'}
_toPy = {'metadata': 'metadata'}
def __init__(self, metadata=None, **unknown_fields):
'''
- metadata : typing.Sequence<+T_co>[~CloudImageMetadata]<~CloudImageMetadata>
+ metadata : typing.Sequence[~CloudImageMetadata]
'''
self.metadata = [CloudImageMetadata.from_json(o) for o in metadata or []]
+class CloudInfo(Type):
+ _toSchema = {'clouddetails': 'CloudDetails', 'users': 'users'}
+ _toPy = {'CloudDetails': 'clouddetails', 'users': 'users'}
+ def __init__(self, clouddetails=None, users=None, **unknown_fields):
+ '''
+ clouddetails : CloudDetails
+ users : typing.Sequence[~CloudUserInfo]
+ '''
+ self.clouddetails = CloudDetails.from_json(clouddetails) if clouddetails else None
+ self.users = [CloudUserInfo.from_json(o) for o in users or []]
+
+
+
+class CloudInfoResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : CloudInfo
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = CloudInfo.from_json(result) if result else None
+
+
+
+class CloudInfoResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~CloudInfoResult]
+ '''
+ self.results = [CloudInfoResult.from_json(o) for o in results or []]
+
+
+
class CloudInstanceTypesConstraint(Type):
_toSchema = {'cloud_tag': 'cloud-tag', 'constraints': 'constraints', 'region': 'region'}
_toPy = {'cloud-tag': 'cloud_tag', 'constraints': 'constraints', 'region': 'region'}
_toPy = {'constraints': 'constraints'}
def __init__(self, constraints=None, **unknown_fields):
'''
- constraints : typing.Sequence<+T_co>[~CloudInstanceTypesConstraint]<~CloudInstanceTypesConstraint>
+ constraints : typing.Sequence[~CloudInstanceTypesConstraint]
'''
self.constraints = [CloudInstanceTypesConstraint.from_json(o) for o in constraints or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~CloudResult]<~CloudResult>
+ results : typing.Sequence[~CloudResult]
'''
self.results = [CloudResult.from_json(o) for o in results or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~CloudSpecResult]<~CloudSpecResult>
+ results : typing.Sequence[~CloudSpecResult]
'''
self.results = [CloudSpecResult.from_json(o) for o in results or []]
+class CloudUserInfo(Type):
+ _toSchema = {'access': 'access', 'display_name': 'display-name', 'user': 'user'}
+ _toPy = {'access': 'access', 'display-name': 'display_name', 'user': 'user'}
+ def __init__(self, access=None, display_name=None, user=None, **unknown_fields):
+ '''
+ access : str
+ display_name : str
+ user : str
+ '''
+ self.access = access
+ self.display_name = display_name
+ self.user = user
+
+
+
class CloudsResult(Type):
_toSchema = {'clouds': 'clouds'}
_toPy = {'clouds': 'clouds'}
def __init__(self, clouds=None, **unknown_fields):
'''
- clouds : typing.Mapping<~KT, +VT_co>[str, ~Cloud]<~Cloud>
+ clouds : typing.Mapping[str, ~Cloud]
'''
self.clouds = clouds
+class ConfigResult(Type):
+ _toSchema = {'config': 'config', 'error': 'error'}
+ _toPy = {'config': 'config', 'error': 'error'}
+ def __init__(self, config=None, error=None, **unknown_fields):
+ '''
+ config : typing.Mapping[str, typing.Any]
+ error : Error
+ '''
+ self.config = config
+ self.error = Error.from_json(error) if error else None
+
+
+
class ConfigSettingsResult(Type):
_toSchema = {'error': 'error', 'settings': 'settings'}
_toPy = {'error': 'error', 'settings': 'settings'}
def __init__(self, error=None, settings=None, **unknown_fields):
'''
error : Error
- settings : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ settings : typing.Mapping[str, typing.Any]
'''
self.error = Error.from_json(error) if error else None
self.settings = settings
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ConfigSettingsResult]<~ConfigSettingsResult>
+ results : typing.Sequence[~ConfigSettingsResult]
'''
self.results = [ConfigSettingsResult.from_json(o) for o in results or []]
def __init__(self, source=None, value=None, **unknown_fields):
'''
source : str
- value : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ value : typing.Mapping[str, typing.Any]
'''
self.source = source
self.value = value
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ConstraintsResult]<~ConstraintsResult>
+ results : typing.Sequence[~ConstraintsResult]
'''
self.results = [ConstraintsResult.from_json(o) for o in results or []]
_toPy = {'args': 'args'}
def __init__(self, args=None, **unknown_fields):
'''
- args : typing.Sequence<+T_co>[~ConsumeApplicationArg]<~ConsumeApplicationArg>
+ args : typing.Sequence[~ConsumeApplicationArg]
'''
self.args = [ConsumeApplicationArg.from_json(o) for o in args or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ConsumeApplicationResult]<~ConsumeApplicationResult>
+ results : typing.Sequence[~ConsumeApplicationResult]
'''
self.results = [ConsumeApplicationResult.from_json(o) for o in results or []]
+class ConsumeOfferDetails(Type):
+ _toSchema = {'external_controller': 'external-controller', 'macaroon': 'macaroon', 'offer': 'offer'}
+ _toPy = {'external-controller': 'external_controller', 'macaroon': 'macaroon', 'offer': 'offer'}
+ def __init__(self, external_controller=None, macaroon=None, offer=None, **unknown_fields):
+ '''
+ external_controller : ExternalControllerInfo
+ macaroon : Macaroon
+ offer : ApplicationOfferDetails
+ '''
+ self.external_controller = ExternalControllerInfo.from_json(external_controller) if external_controller else None
+ self.macaroon = Macaroon.from_json(macaroon) if macaroon else None
+ self.offer = ApplicationOfferDetails.from_json(offer) if offer else None
+
+
+
+class ConsumeOfferDetailsResult(Type):
+ _toSchema = {'consumeofferdetails': 'ConsumeOfferDetails', 'error': 'error'}
+ _toPy = {'ConsumeOfferDetails': 'consumeofferdetails', 'error': 'error'}
+ def __init__(self, consumeofferdetails=None, error=None, **unknown_fields):
+ '''
+ consumeofferdetails : ConsumeOfferDetails
+ error : Error
+ '''
+ self.consumeofferdetails = ConsumeOfferDetails.from_json(consumeofferdetails) if consumeofferdetails else None
+ self.error = Error.from_json(error) if error else None
+
+
+
+class ConsumeOfferDetailsResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~ConsumeOfferDetailsResult]
+ '''
+ self.results = [ConsumeOfferDetailsResult.from_json(o) for o in results or []]
+
+
+
class ContainerConfig(Type):
_toSchema = {'apt_mirror': 'apt-mirror', 'apt_proxy': 'apt-proxy', 'authorized_keys': 'authorized-keys', 'provider_type': 'provider-type', 'proxy': 'proxy', 'ssl_hostname_verification': 'ssl-hostname-verification', 'updatebehavior': 'UpdateBehavior'}
_toPy = {'UpdateBehavior': 'updatebehavior', 'apt-mirror': 'apt_mirror', 'apt-proxy': 'apt_proxy', 'authorized-keys': 'authorized_keys', 'provider-type': 'provider_type', 'proxy': 'proxy', 'ssl-hostname-verification': 'ssl_hostname_verification'}
+class ContainerLXDProfile(Type):
+ _toSchema = {'name': 'name', 'profile': 'profile'}
+ _toPy = {'name': 'name', 'profile': 'profile'}
+ def __init__(self, name=None, profile=None, **unknown_fields):
+ '''
+ name : str
+ profile : CharmLXDProfile
+ '''
+ self.name = name
+ self.profile = CharmLXDProfile.from_json(profile) if profile else None
+
+
+
class ContainerManagerConfig(Type):
_toSchema = {'config': 'config'}
_toPy = {'config': 'config'}
def __init__(self, config=None, **unknown_fields):
'''
- config : typing.Mapping<~KT, +VT_co>[str, str]
+ config : typing.Mapping[str, str]
'''
self.config = config
+class ContainerProfileResult(Type):
+ _toSchema = {'error': 'error', 'lxd_profiles': 'lxd-profiles'}
+ _toPy = {'error': 'error', 'lxd-profiles': 'lxd_profiles'}
+ def __init__(self, error=None, lxd_profiles=None, **unknown_fields):
+ '''
+ error : Error
+ lxd_profiles : typing.Sequence[~ContainerLXDProfile]
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.lxd_profiles = [ContainerLXDProfile.from_json(o) for o in lxd_profiles or []]
+
+
+
+class ContainerProfileResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~ContainerProfileResult]
+ '''
+ self.results = [ContainerProfileResult.from_json(o) for o in results or []]
+
+
+
+class ControllerAPIInfoResult(Type):
+ _toSchema = {'addresses': 'addresses', 'cacert': 'cacert', 'error': 'error'}
+ _toPy = {'addresses': 'addresses', 'cacert': 'cacert', 'error': 'error'}
+ def __init__(self, addresses=None, cacert=None, error=None, **unknown_fields):
+ '''
+ addresses : typing.Sequence[str]
+ cacert : str
+ error : Error
+ '''
+ self.addresses = addresses
+ self.cacert = cacert
+ self.error = Error.from_json(error) if error else None
+
+
+
+class ControllerAPIInfoResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~ControllerAPIInfoResult]
+ '''
+ self.results = [ControllerAPIInfoResult.from_json(o) for o in results or []]
+
+
+
class ControllerConfigResult(Type):
_toSchema = {'config': 'config'}
_toPy = {'config': 'config'}
def __init__(self, config=None, **unknown_fields):
'''
- config : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ config : typing.Mapping[str, typing.Any]
+ '''
+ self.config = config
+
+
+
+class ControllerConfigSet(Type):
+ _toSchema = {'config': 'config'}
+ _toPy = {'config': 'config'}
+ def __init__(self, config=None, **unknown_fields):
+ '''
+ config : typing.Mapping[str, typing.Any]
'''
self.config = config
+class ControllerCredentialInfo(Type):
+ _toSchema = {'content': 'content', 'models': 'models'}
+ _toPy = {'content': 'content', 'models': 'models'}
+ def __init__(self, content=None, models=None, **unknown_fields):
+ '''
+ content : CredentialContent
+ models : typing.Sequence[~ModelAccess]
+ '''
+ self.content = CredentialContent.from_json(content) if content else None
+ self.models = [ModelAccess.from_json(o) for o in models or []]
+
+
+
class ControllersChangeResult(Type):
_toSchema = {'error': 'error', 'result': 'result'}
_toPy = {'error': 'error', 'result': 'result'}
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ControllersChangeResult]<~ControllersChangeResult>
+ results : typing.Sequence[~ControllersChangeResult]
'''
self.results = [ControllersChangeResult.from_json(o) for o in results or []]
_toPy = {'added': 'added', 'converted': 'converted', 'demoted': 'demoted', 'maintained': 'maintained', 'promoted': 'promoted', 'removed': 'removed'}
def __init__(self, added=None, converted=None, demoted=None, maintained=None, promoted=None, removed=None, **unknown_fields):
'''
- added : typing.Sequence<+T_co>[str]
- converted : typing.Sequence<+T_co>[str]
- demoted : typing.Sequence<+T_co>[str]
- maintained : typing.Sequence<+T_co>[str]
- promoted : typing.Sequence<+T_co>[str]
- removed : typing.Sequence<+T_co>[str]
+ 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
'''
constraints : Value
num_controllers : int
- placement : typing.Sequence<+T_co>[str]
+ placement : typing.Sequence[str]
series : str
'''
self.constraints = Value.from_json(constraints) if constraints else None
_toPy = {'specs': 'specs'}
def __init__(self, specs=None, **unknown_fields):
'''
- specs : typing.Sequence<+T_co>[~ControllersSpec]<~ControllersSpec>
+ specs : typing.Sequence[~ControllersSpec]
'''
self.specs = [ControllersSpec.from_json(o) for o in specs or []]
provider_id : str
public : bool
space_tag : str
- subnet_tags : typing.Sequence<+T_co>[str]
+ subnet_tags : typing.Sequence[str]
'''
self.provider_id = provider_id
self.public = public
_toPy = {'spaces': 'spaces'}
def __init__(self, spaces=None, **unknown_fields):
'''
- spaces : typing.Sequence<+T_co>[~CreateSpaceParams]<~CreateSpaceParams>
+ spaces : typing.Sequence[~CreateSpaceParams]
'''
self.spaces = [CreateSpaceParams.from_json(o) for o in spaces or []]
+class CredentialContent(Type):
+ _toSchema = {'attrs': 'attrs', 'auth_type': 'auth-type', 'cloud': 'cloud', 'name': 'name'}
+ _toPy = {'attrs': 'attrs', 'auth-type': 'auth_type', 'cloud': 'cloud', 'name': 'name'}
+ def __init__(self, attrs=None, auth_type=None, cloud=None, name=None, **unknown_fields):
+ '''
+ attrs : typing.Mapping[str, str]
+ auth_type : str
+ cloud : str
+ name : str
+ '''
+ self.attrs = attrs
+ self.auth_type = auth_type
+ self.cloud = cloud
+ self.name = name
+
+
+
+class CredentialContentResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : ControllerCredentialInfo
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = ControllerCredentialInfo.from_json(result) if result else None
+
+
+
+class CredentialContentResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~CredentialContentResult]
+ '''
+ self.results = [CredentialContentResult.from_json(o) for o in results or []]
+
+
+
class Delta(Type):
_toSchema = {'entity': 'entity', 'removed': 'removed'}
_toPy = {'entity': 'entity', 'removed': 'removed'}
def __init__(self, entity=None, removed=None, **unknown_fields):
'''
- entity : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ entity : typing.Mapping[str, typing.Any]
removed : bool
'''
self.entity = entity
_toPy = {'api-addresses': 'api_addresses', 'state-addresses': 'state_addresses'}
def __init__(self, api_addresses=None, state_addresses=None, **unknown_fields):
'''
- api_addresses : typing.Sequence<+T_co>[str]
- state_addresses : typing.Sequence<+T_co>[str]
+ api_addresses : typing.Sequence[str]
+ state_addresses : typing.Sequence[str]
'''
self.api_addresses = api_addresses
self.state_addresses = state_addresses
_toPy = {'destroyed-storage': 'destroyed_storage', 'destroyed-units': 'destroyed_units', 'detached-storage': 'detached_storage'}
def __init__(self, destroyed_storage=None, destroyed_units=None, detached_storage=None, **unknown_fields):
'''
- destroyed_storage : typing.Sequence<+T_co>[~Entity]<~Entity>
- destroyed_units : typing.Sequence<+T_co>[~Entity]<~Entity>
- detached_storage : typing.Sequence<+T_co>[~Entity]<~Entity>
+ destroyed_storage : typing.Sequence[~Entity]
+ destroyed_units : typing.Sequence[~Entity]
+ detached_storage : typing.Sequence[~Entity]
'''
self.destroyed_storage = [Entity.from_json(o) for o in destroyed_storage or []]
self.destroyed_units = [Entity.from_json(o) for o in destroyed_units or []]
+class DestroyApplicationOffers(Type):
+ _toSchema = {'force': 'force', 'offer_urls': 'offer-urls'}
+ _toPy = {'force': 'force', 'offer-urls': 'offer_urls'}
+ def __init__(self, force=None, offer_urls=None, **unknown_fields):
+ '''
+ force : bool
+ offer_urls : typing.Sequence[str]
+ '''
+ self.force = force
+ self.offer_urls = offer_urls
+
+
+
+class DestroyApplicationParams(Type):
+ _toSchema = {'application_tag': 'application-tag', 'destroy_storage': 'destroy-storage'}
+ _toPy = {'application-tag': 'application_tag', 'destroy-storage': 'destroy_storage'}
+ def __init__(self, application_tag=None, destroy_storage=None, **unknown_fields):
+ '''
+ application_tag : str
+ destroy_storage : bool
+ '''
+ self.application_tag = application_tag
+ self.destroy_storage = destroy_storage
+
+
+
class DestroyApplicationResult(Type):
_toSchema = {'error': 'error', 'info': 'info'}
_toPy = {'error': 'error', 'info': 'info'}
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~DestroyApplicationResult]<~DestroyApplicationResult>
+ results : typing.Sequence[~DestroyApplicationResult]
'''
self.results = [DestroyApplicationResult.from_json(o) for o in results or []]
_toPy = {'unit-names': 'unit_names'}
def __init__(self, unit_names=None, **unknown_fields):
'''
- unit_names : typing.Sequence<+T_co>[str]
+ unit_names : typing.Sequence[str]
'''
self.unit_names = unit_names
+class DestroyApplicationsParams(Type):
+ _toSchema = {'applications': 'applications'}
+ _toPy = {'applications': 'applications'}
+ def __init__(self, applications=None, **unknown_fields):
+ '''
+ applications : typing.Sequence[~DestroyApplicationParams]
+ '''
+ self.applications = [DestroyApplicationParams.from_json(o) for o in applications or []]
+
+
+
+class DestroyConsumedApplicationParams(Type):
+ _toSchema = {'application_tag': 'application-tag'}
+ _toPy = {'application-tag': 'application_tag'}
+ def __init__(self, application_tag=None, **unknown_fields):
+ '''
+ application_tag : str
+ '''
+ self.application_tag = application_tag
+
+
+
+class DestroyConsumedApplicationsParams(Type):
+ _toSchema = {'applications': 'applications'}
+ _toPy = {'applications': 'applications'}
+ def __init__(self, applications=None, **unknown_fields):
+ '''
+ applications : typing.Sequence[~DestroyConsumedApplicationParams]
+ '''
+ self.applications = [DestroyConsumedApplicationParams.from_json(o) for o in applications or []]
+
+
+
class DestroyControllerArgs(Type):
_toSchema = {'destroy_models': 'destroy-models'}
_toPy = {'destroy-models': 'destroy_models'}
_toPy = {'destroyed-storage': 'destroyed_storage', 'destroyed-units': 'destroyed_units', 'detached-storage': 'detached_storage'}
def __init__(self, destroyed_storage=None, destroyed_units=None, detached_storage=None, **unknown_fields):
'''
- destroyed_storage : typing.Sequence<+T_co>[~Entity]<~Entity>
- destroyed_units : typing.Sequence<+T_co>[~Entity]<~Entity>
- detached_storage : typing.Sequence<+T_co>[~Entity]<~Entity>
+ destroyed_storage : typing.Sequence[~Entity]
+ destroyed_units : typing.Sequence[~Entity]
+ detached_storage : typing.Sequence[~Entity]
'''
self.destroyed_storage = [Entity.from_json(o) for o in destroyed_storage or []]
self.destroyed_units = [Entity.from_json(o) for o in destroyed_units or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~DestroyMachineResult]<~DestroyMachineResult>
+ results : typing.Sequence[~DestroyMachineResult]
'''
self.results = [DestroyMachineResult.from_json(o) for o in results or []]
def __init__(self, force=None, machine_names=None, **unknown_fields):
'''
force : bool
- machine_names : typing.Sequence<+T_co>[str]
+ machine_names : typing.Sequence[str]
'''
self.force = force
self.machine_names = machine_names
+class DestroyMachinesParams(Type):
+ _toSchema = {'force': 'force', 'keep': 'keep', 'machine_tags': 'machine-tags'}
+ _toPy = {'force': 'force', 'keep': 'keep', 'machine-tags': 'machine_tags'}
+ def __init__(self, force=None, keep=None, machine_tags=None, **unknown_fields):
+ '''
+ force : bool
+ keep : bool
+ machine_tags : typing.Sequence[str]
+ '''
+ self.force = force
+ self.keep = keep
+ self.machine_tags = machine_tags
+
+
+
+class DestroyModelParams(Type):
+ _toSchema = {'destroy_storage': 'destroy-storage', 'model_tag': 'model-tag'}
+ _toPy = {'destroy-storage': 'destroy_storage', 'model-tag': 'model_tag'}
+ def __init__(self, destroy_storage=None, model_tag=None, **unknown_fields):
+ '''
+ destroy_storage : bool
+ model_tag : str
+ '''
+ self.destroy_storage = destroy_storage
+ self.model_tag = model_tag
+
+
+
+class DestroyModelsParams(Type):
+ _toSchema = {'models': 'models'}
+ _toPy = {'models': 'models'}
+ def __init__(self, models=None, **unknown_fields):
+ '''
+ models : typing.Sequence[~DestroyModelParams]
+ '''
+ self.models = [DestroyModelParams.from_json(o) for o in models or []]
+
+
+
class DestroyRelation(Type):
_toSchema = {'endpoints': 'endpoints'}
_toPy = {'endpoints': 'endpoints'}
def __init__(self, endpoints=None, **unknown_fields):
'''
- endpoints : typing.Sequence<+T_co>[str]
+ endpoints : typing.Sequence[str]
'''
self.endpoints = endpoints
_toPy = {'destroyed-storage': 'destroyed_storage', 'detached-storage': 'detached_storage'}
def __init__(self, destroyed_storage=None, detached_storage=None, **unknown_fields):
'''
- destroyed_storage : typing.Sequence<+T_co>[~Entity]<~Entity>
- detached_storage : typing.Sequence<+T_co>[~Entity]<~Entity>
+ destroyed_storage : typing.Sequence[~Entity]
+ detached_storage : typing.Sequence[~Entity]
'''
self.destroyed_storage = [Entity.from_json(o) for o in destroyed_storage or []]
self.detached_storage = [Entity.from_json(o) for o in detached_storage or []]
+class DestroyUnitParams(Type):
+ _toSchema = {'destroy_storage': 'destroy-storage', 'unit_tag': 'unit-tag'}
+ _toPy = {'destroy-storage': 'destroy_storage', 'unit-tag': 'unit_tag'}
+ def __init__(self, destroy_storage=None, unit_tag=None, **unknown_fields):
+ '''
+ destroy_storage : bool
+ unit_tag : str
+ '''
+ self.destroy_storage = destroy_storage
+ self.unit_tag = unit_tag
+
+
+
class DestroyUnitResult(Type):
_toSchema = {'error': 'error', 'info': 'info'}
_toPy = {'error': 'error', 'info': 'info'}
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~DestroyUnitResult]<~DestroyUnitResult>
+ results : typing.Sequence[~DestroyUnitResult]
'''
self.results = [DestroyUnitResult.from_json(o) for o in results or []]
+class DestroyUnitsParams(Type):
+ _toSchema = {'units': 'units'}
+ _toPy = {'units': 'units'}
+ def __init__(self, units=None, **unknown_fields):
+ '''
+ units : typing.Sequence[~DestroyUnitParams]
+ '''
+ self.units = [DestroyUnitParams.from_json(o) for o in units or []]
+
+
+
class DetailedStatus(Type):
_toSchema = {'data': 'data', 'err': 'err', 'info': 'info', 'kind': 'kind', 'life': 'life', 'since': 'since', 'status': 'status', 'version': 'version'}
_toPy = {'data': 'data', 'err': 'err', 'info': 'info', 'kind': 'kind', 'life': 'life', 'since': 'since', 'status': 'status', 'version': 'version'}
def __init__(self, data=None, err=None, info=None, kind=None, life=None, since=None, status=None, version=None, **unknown_fields):
'''
- data : typing.Mapping<~KT, +VT_co>[str, typing.Any]
- err : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ data : typing.Mapping[str, typing.Any]
+ err : typing.Mapping[str, typing.Any]
info : str
kind : str
life : str
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ProviderSpace]<~ProviderSpace>
+ results : typing.Sequence[~ProviderSpace]
'''
self.results = [ProviderSpace.from_json(o) for o in results or []]
def __init__(self, error=None, result=None, **unknown_fields):
'''
error : Error
- result : typing.Sequence<+T_co>[str]
+ result : typing.Sequence[str]
'''
self.error = Error.from_json(error) if error else None
self.result = result
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~DistributionGroupResult]<~DistributionGroupResult>
+ results : typing.Sequence[~DistributionGroupResult]
'''
self.results = [DistributionGroupResult.from_json(o) for o in results or []]
_toPy = {'entities': 'entities', 'simplified': 'simplified'}
def __init__(self, entities=None, simplified=None, **unknown_fields):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
+ entities : typing.Sequence[~Entity]
simplified : bool
'''
self.entities = [Entity.from_json(o) for o in entities or []]
-class EndpointStatus(Type):
- _toSchema = {'application': 'application', 'name': 'name', 'role': 'role', 'subordinate': 'subordinate'}
- _toPy = {'application': 'application', 'name': 'name', 'role': 'role', 'subordinate': 'subordinate'}
- def __init__(self, application=None, name=None, role=None, subordinate=None, **unknown_fields):
+class EndpointFilterAttributes(Type):
+ _toSchema = {'interface': 'interface', 'name': 'name', 'role': 'role'}
+ _toPy = {'interface': 'interface', 'name': 'name', 'role': 'role'}
+ def __init__(self, interface=None, name=None, role=None, **unknown_fields):
'''
- application : str
+ interface : str
name : str
role : str
- subordinate : bool
+ '''
+ self.interface = interface
+ self.name = name
+ self.role = role
+
+
+
+class EndpointStatus(Type):
+ _toSchema = {'application': 'application', 'name': 'name', 'role': 'role', 'subordinate': 'subordinate'}
+ _toPy = {'application': 'application', 'name': 'name', 'role': 'role', 'subordinate': 'subordinate'}
+ def __init__(self, application=None, name=None, role=None, subordinate=None, **unknown_fields):
+ '''
+ application : str
+ name : str
+ role : str
+ subordinate : bool
'''
self.application = application
self.name = name
_toPy = {'entities': 'entities'}
def __init__(self, entities=None, **unknown_fields):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
+ entities : typing.Sequence[~Entity]
'''
self.entities = [Entity.from_json(o) for o in entities or []]
_toPy = {'entities': 'entities'}
def __init__(self, entities=None, **unknown_fields):
'''
- entities : typing.Sequence<+T_co>[~EntityCharmURL]<~EntityCharmURL>
+ entities : typing.Sequence[~EntityCharmURL]
'''
self.entities = [EntityCharmURL.from_json(o) for o in entities or []]
_toPy = {'entities': 'entities'}
def __init__(self, entities=None, **unknown_fields):
'''
- entities : typing.Sequence<+T_co>[~EntityPortRange]<~EntityPortRange>
+ entities : typing.Sequence[~EntityPortRange]
'''
self.entities = [EntityPortRange.from_json(o) for o in entities or []]
_toPy = {'entities': 'entities', 'error': 'error'}
def __init__(self, entities=None, error=None, **unknown_fields):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
+ entities : typing.Sequence[~Entity]
error : Error
'''
self.entities = [Entity.from_json(o) for o in entities or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~EntitiesResult]<~EntitiesResult>
+ results : typing.Sequence[~EntitiesResult]
'''
self.results = [EntitiesResult.from_json(o) for o in results or []]
_toPy = {'agent-tools': 'agent_tools'}
def __init__(self, agent_tools=None, **unknown_fields):
'''
- agent_tools : typing.Sequence<+T_co>[~EntityVersion]<~EntityVersion>
+ agent_tools : typing.Sequence[~EntityVersion]
'''
self.agent_tools = [EntityVersion.from_json(o) for o in agent_tools or []]
_toPy = {'changes': 'changes', 'error': 'error', 'watcher-id': 'watcher_id'}
def __init__(self, changes=None, error=None, watcher_id=None, **unknown_fields):
'''
- changes : typing.Sequence<+T_co>[str]
+ changes : typing.Sequence[str]
error : Error
watcher_id : str
'''
_toPy = {'annotations': 'annotations', 'entity': 'entity'}
def __init__(self, annotations=None, entity=None, **unknown_fields):
'''
- annotations : typing.Mapping<~KT, +VT_co>[str, str]
+ annotations : typing.Mapping[str, str]
entity : str
'''
self.annotations = annotations
+class EntityMacaroonArg(Type):
+ _toSchema = {'macaroon': 'macaroon', 'tag': 'tag'}
+ _toPy = {'macaroon': 'macaroon', 'tag': 'tag'}
+ def __init__(self, macaroon=None, tag=None, **unknown_fields):
+ '''
+ macaroon : Macaroon
+ tag : str
+ '''
+ self.macaroon = Macaroon.from_json(macaroon) if macaroon else None
+ self.tag = tag
+
+
+
+class EntityMacaroonArgs(Type):
+ _toSchema = {'args': 'Args'}
+ _toPy = {'Args': 'args'}
+ def __init__(self, args=None, **unknown_fields):
+ '''
+ args : typing.Sequence[~EntityMacaroonArg]
+ '''
+ self.args = [EntityMacaroonArg.from_json(o) for o in args or []]
+
+
+
class EntityMetrics(Type):
_toSchema = {'error': 'error', 'metrics': 'metrics'}
_toPy = {'error': 'error', 'metrics': 'metrics'}
def __init__(self, error=None, metrics=None, **unknown_fields):
'''
error : Error
- metrics : typing.Sequence<+T_co>[~MetricResult]<~MetricResult>
+ metrics : typing.Sequence[~MetricResult]
'''
self.error = Error.from_json(error) if error else None
self.metrics = [MetricResult.from_json(o) for o in metrics or []]
_toPy = {'changes': 'changes'}
def __init__(self, changes=None, **unknown_fields):
'''
- changes : typing.Sequence<+T_co>[~EntityPassword]<~EntityPassword>
+ changes : typing.Sequence[~EntityPassword]
'''
self.changes = [EntityPassword.from_json(o) for o in changes or []]
_toPy = {'data': 'data', 'info': 'info', 'since': 'since', 'status': 'status'}
def __init__(self, data=None, info=None, since=None, status=None, **unknown_fields):
'''
- data : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ data : typing.Mapping[str, typing.Any]
info : str
since : str
status : str
_toPy = {'data': 'data', 'info': 'info', 'status': 'status', 'tag': 'tag'}
def __init__(self, data=None, info=None, status=None, tag=None, **unknown_fields):
'''
- data : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ data : typing.Mapping[str, typing.Any]
info : str
status : str
tag : str
+class EntityString(Type):
+ _toSchema = {'tag': 'tag', 'value': 'value'}
+ _toPy = {'tag': 'tag', 'value': 'value'}
+ def __init__(self, tag=None, value=None, **unknown_fields):
+ '''
+ tag : str
+ value : str
+ '''
+ self.tag = tag
+ self.value = value
+
+
+
class EntityVersion(Type):
_toSchema = {'tag': 'tag', 'tools': 'tools'}
_toPy = {'tag': 'tag', 'tools': 'tools'}
_toPy = {'entities': 'entities'}
def __init__(self, entities=None, **unknown_fields):
'''
- entities : typing.Sequence<+T_co>[~EntityWorkloadVersion]<~EntityWorkloadVersion>
+ entities : typing.Sequence[~EntityWorkloadVersion]
'''
self.entities = [EntityWorkloadVersion.from_json(o) for o in entities or []]
_toPy = {'patterns': 'patterns'}
def __init__(self, patterns=None, **unknown_fields):
'''
- patterns : typing.Sequence<+T_co>[str]
+ patterns : typing.Sequence[str]
'''
self.patterns = patterns
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~Payload]<~Payload>
+ results : typing.Sequence[~Payload]
'''
self.results = [Payload.from_json(o) for o in results or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
+ results : typing.Sequence[~ErrorResult]
'''
self.results = [ErrorResult.from_json(o) for o in results or []]
+class ExternalControllerInfo(Type):
+ _toSchema = {'addrs': 'addrs', 'ca_cert': 'ca-cert', 'controller_alias': 'controller-alias', 'controller_tag': 'controller-tag'}
+ _toPy = {'addrs': 'addrs', 'ca-cert': 'ca_cert', 'controller-alias': 'controller_alias', 'controller-tag': 'controller_tag'}
+ def __init__(self, addrs=None, ca_cert=None, controller_alias=None, controller_tag=None, **unknown_fields):
+ '''
+ addrs : typing.Sequence[str]
+ ca_cert : str
+ controller_alias : str
+ controller_tag : str
+ '''
+ self.addrs = addrs
+ self.ca_cert = ca_cert
+ self.controller_alias = controller_alias
+ self.controller_tag = controller_tag
+
+
+
+class ExternalControllerInfoResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : ExternalControllerInfo
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = ExternalControllerInfo.from_json(result) if result else None
+
+
+
+class ExternalControllerInfoResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~ExternalControllerInfoResult]
+ '''
+ self.results = [ExternalControllerInfoResult.from_json(o) for o in results or []]
+
+
+
+class FanConfigEntry(Type):
+ _toSchema = {'overlay': 'overlay', 'underlay': 'underlay'}
+ _toPy = {'overlay': 'overlay', 'underlay': 'underlay'}
+ def __init__(self, overlay=None, underlay=None, **unknown_fields):
+ '''
+ overlay : str
+ underlay : str
+ '''
+ self.overlay = overlay
+ self.underlay = underlay
+
+
+
+class FanConfigResult(Type):
+ _toSchema = {'fans': 'fans'}
+ _toPy = {'fans': 'fans'}
+ def __init__(self, fans=None, **unknown_fields):
+ '''
+ fans : typing.Sequence[~FanConfigEntry]
+ '''
+ self.fans = [FanConfigEntry.from_json(o) for o in fans or []]
+
+
+
class Filesystem(Type):
_toSchema = {'filesystem_tag': 'filesystem-tag', 'info': 'info', 'volume_tag': 'volume-tag'}
_toPy = {'filesystem-tag': 'filesystem_tag', 'info': 'info', 'volume-tag': 'volume_tag'}
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~FilesystemAttachmentParamsResult]<~FilesystemAttachmentParamsResult>
+ results : typing.Sequence[~FilesystemAttachmentParamsResult]
'''
self.results = [FilesystemAttachmentParamsResult.from_json(o) for o in results or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~FilesystemAttachmentResult]<~FilesystemAttachmentResult>
+ results : typing.Sequence[~FilesystemAttachmentResult]
'''
self.results = [FilesystemAttachmentResult.from_json(o) for o in results or []]
_toPy = {'filesystem-attachments': 'filesystem_attachments'}
def __init__(self, filesystem_attachments=None, **unknown_fields):
'''
- filesystem_attachments : typing.Sequence<+T_co>[~FilesystemAttachment]<~FilesystemAttachment>
+ filesystem_attachments : typing.Sequence[~FilesystemAttachment]
'''
self.filesystem_attachments = [FilesystemAttachment.from_json(o) for o in filesystem_attachments or []]
'''
filesystem_tag : str
info : FilesystemInfo
- machine_attachments : typing.Mapping<~KT, +VT_co>[str, ~FilesystemAttachmentInfo]<~FilesystemAttachmentInfo>
+ machine_attachments : typing.Mapping[str, ~FilesystemAttachmentInfo]
status : EntityStatus
storage : StorageDetails
volume_tag : str
def __init__(self, error=None, result=None, **unknown_fields):
'''
error : Error
- result : typing.Sequence<+T_co>[~FilesystemDetails]<~FilesystemDetails>
+ result : typing.Sequence[~FilesystemDetails]
'''
self.error = Error.from_json(error) if error else None
self.result = [FilesystemDetails.from_json(o) for o in result or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~FilesystemDetailsListResult]<~FilesystemDetailsListResult>
+ results : typing.Sequence[~FilesystemDetailsListResult]
'''
self.results = [FilesystemDetailsListResult.from_json(o) for o in results or []]
_toPy = {'machines': 'machines'}
def __init__(self, machines=None, **unknown_fields):
'''
- machines : typing.Sequence<+T_co>[str]
+ machines : typing.Sequence[str]
'''
self.machines = machines
_toPy = {'filters': 'filters'}
def __init__(self, filters=None, **unknown_fields):
'''
- filters : typing.Sequence<+T_co>[~FilesystemFilter]<~FilesystemFilter>
+ filters : typing.Sequence[~FilesystemFilter]
'''
self.filters = [FilesystemFilter.from_json(o) for o in filters or []]
def __init__(self, attachment=None, attributes=None, filesystem_tag=None, provider=None, size=None, tags=None, volume_tag=None, **unknown_fields):
'''
attachment : FilesystemAttachmentParams
- attributes : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ attributes : typing.Mapping[str, typing.Any]
filesystem_tag : str
provider : str
size : int
- tags : typing.Mapping<~KT, +VT_co>[str, str]
+ tags : typing.Mapping[str, str]
volume_tag : str
'''
self.attachment = FilesystemAttachmentParams.from_json(attachment) if attachment else None
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~FilesystemParamsResult]<~FilesystemParamsResult>
+ results : typing.Sequence[~FilesystemParamsResult]
'''
self.results = [FilesystemParamsResult.from_json(o) for o in results or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~FilesystemResult]<~FilesystemResult>
+ results : typing.Sequence[~FilesystemResult]
'''
self.results = [FilesystemResult.from_json(o) for o in results or []]
_toPy = {'filesystems': 'filesystems'}
def __init__(self, filesystems=None, **unknown_fields):
'''
- filesystems : typing.Sequence<+T_co>[~Filesystem]<~Filesystem>
+ filesystems : typing.Sequence[~Filesystem]
'''
self.filesystems = [Filesystem.from_json(o) for o in filesystems or []]
_toPy = {'names': 'names'}
def __init__(self, names=None, **unknown_fields):
'''
- names : typing.Sequence<+T_co>[str]
+ names : typing.Sequence[str]
'''
self.names = names
_toPy = {'prefixes': 'prefixes'}
def __init__(self, prefixes=None, **unknown_fields):
'''
- prefixes : typing.Sequence<+T_co>[str]
+ prefixes : typing.Sequence[str]
'''
self.prefixes = prefixes
_toPy = {'matches': 'matches'}
def __init__(self, matches=None, **unknown_fields):
'''
- matches : typing.Sequence<+T_co>[~Entity]<~Entity>
+ matches : typing.Sequence[~Entity]
'''
self.matches = [Entity.from_json(o) for o in matches or []]
def __init__(self, error=None, list_=None, **unknown_fields):
'''
error : Error
- list_ : typing.Sequence<+T_co>[~Tools]<~Tools>
+ list_ : typing.Sequence[~Tools]
'''
self.error = Error.from_json(error) if error else None
self.list_ = [Tools.from_json(o) for o in list_ or []]
+class FirewallRule(Type):
+ _toSchema = {'known_service': 'known-service', 'whitelist_cidrs': 'whitelist-cidrs'}
+ _toPy = {'known-service': 'known_service', 'whitelist-cidrs': 'whitelist_cidrs'}
+ def __init__(self, known_service=None, whitelist_cidrs=None, **unknown_fields):
+ '''
+ known_service : str
+ whitelist_cidrs : typing.Sequence[str]
+ '''
+ self.known_service = known_service
+ self.whitelist_cidrs = whitelist_cidrs
+
+
+
+class FirewallRuleArgs(Type):
+ _toSchema = {'args': 'args'}
+ _toPy = {'args': 'args'}
+ def __init__(self, args=None, **unknown_fields):
+ '''
+ args : typing.Sequence[~FirewallRule]
+ '''
+ self.args = [FirewallRule.from_json(o) for o in args or []]
+
+
+
class FullStatus(Type):
- _toSchema = {'applications': 'applications', 'machines': 'machines', 'model': 'model', 'relations': 'relations', 'remote_applications': 'remote-applications'}
- _toPy = {'applications': 'applications', 'machines': 'machines', 'model': 'model', 'relations': 'relations', 'remote-applications': 'remote_applications'}
- def __init__(self, applications=None, machines=None, model=None, relations=None, remote_applications=None, **unknown_fields):
+ _toSchema = {'applications': 'applications', 'controller_timestamp': 'controller-timestamp', 'machines': 'machines', 'model': 'model', 'offers': 'offers', 'relations': 'relations', 'remote_applications': 'remote-applications'}
+ _toPy = {'applications': 'applications', 'controller-timestamp': 'controller_timestamp', 'machines': 'machines', 'model': 'model', 'offers': 'offers', 'relations': 'relations', 'remote-applications': 'remote_applications'}
+ def __init__(self, applications=None, controller_timestamp=None, machines=None, model=None, offers=None, relations=None, remote_applications=None, **unknown_fields):
'''
- applications : typing.Mapping<~KT, +VT_co>[str, ~ApplicationStatus]<~ApplicationStatus>
- machines : typing.Mapping<~KT, +VT_co>[str, ~MachineStatus]<~MachineStatus>
+ applications : typing.Mapping[str, ~ApplicationStatus]
+ controller_timestamp : str
+ machines : typing.Mapping[str, ~MachineStatus]
model : ModelStatusInfo
- relations : typing.Sequence<+T_co>[~RelationStatus]<~RelationStatus>
- remote_applications : typing.Mapping<~KT, +VT_co>[str, ~RemoteApplicationStatus]<~RemoteApplicationStatus>
+ offers : typing.Mapping[str, ~ApplicationOfferStatus]
+ relations : typing.Sequence[~RelationStatus]
+ remote_applications : typing.Mapping[str, ~RemoteApplicationStatus]
'''
self.applications = applications
+ self.controller_timestamp = controller_timestamp
self.machines = machines
self.model = ModelStatusInfo.from_json(model) if model else None
+ self.offers = offers
self.relations = [RelationStatus.from_json(o) for o in relations or []]
self.remote_applications = remote_applications
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~GetLeadershipSettingsResult]<~GetLeadershipSettingsResult>
+ results : typing.Sequence[~GetLeadershipSettingsResult]
'''
self.results = [GetLeadershipSettingsResult.from_json(o) for o in results or []]
def __init__(self, error=None, settings=None, **unknown_fields):
'''
error : Error
- settings : typing.Mapping<~KT, +VT_co>[str, str]
+ settings : typing.Mapping[str, str]
'''
self.error = Error.from_json(error) if error else None
self.settings = settings
+class GetTokenArg(Type):
+ _toSchema = {'tag': 'tag'}
+ _toPy = {'tag': 'tag'}
+ def __init__(self, tag=None, **unknown_fields):
+ '''
+ tag : str
+ '''
+ self.tag = tag
+
+
+
+class GetTokenArgs(Type):
+ _toSchema = {'args': 'Args'}
+ _toPy = {'Args': 'args'}
+ def __init__(self, args=None, **unknown_fields):
+ '''
+ args : typing.Sequence[~GetTokenArg]
+ '''
+ self.args = [GetTokenArg.from_json(o) for o in args or []]
+
+
+
+class GoalState(Type):
+ _toSchema = {'relations': 'relations', 'units': 'units'}
+ _toPy = {'relations': 'relations', 'units': 'units'}
+ def __init__(self, relations=None, units=None, **unknown_fields):
+ '''
+ relations : typing.Mapping[str, typing.Any]
+ units : typing.Mapping[str, ~GoalStateStatus]
+ '''
+ self.relations = relations
+ self.units = units
+
+
+
+class GoalStateResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : GoalState
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = GoalState.from_json(result) if result else None
+
+
+
+class GoalStateResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~GoalStateResult]
+ '''
+ self.results = [GoalStateResult.from_json(o) for o in results or []]
+
+
+
+class GoalStateStatus(Type):
+ _toSchema = {'since': 'since', 'status': 'status'}
+ _toPy = {'since': 'since', 'status': 'status'}
+ def __init__(self, since=None, status=None, **unknown_fields):
+ '''
+ since : str
+ status : str
+ '''
+ self.since = since
+ self.status = status
+
+
+
class HAMember(Type):
_toSchema = {'public_address': 'public-address', 'series': 'series', 'tag': 'tag'}
_toPy = {'public-address': 'public_address', 'series': 'series', 'tag': 'tag'}
cpu_power : int
mem : int
root_disk : int
- tags : typing.Sequence<+T_co>[str]
+ tags : typing.Sequence[str]
'''
self.arch = arch
self.availability_zone = availability_zone
def __init__(self, error=None, statuses=None, **unknown_fields):
'''
error : Error
- statuses : typing.Sequence<+T_co>[~DetailedStatus]<~DetailedStatus>
+ statuses : typing.Sequence[~DetailedStatus]
'''
self.error = Error.from_json(error) if error else None
self.statuses = [DetailedStatus.from_json(o) for o in statuses or []]
def __init__(self, error=None, new_bridges=None, reconfigure_delay=None, **unknown_fields):
'''
error : Error
- new_bridges : typing.Sequence<+T_co>[~DeviceBridgeInfo]<~DeviceBridgeInfo>
+ new_bridges : typing.Sequence[~DeviceBridgeInfo]
reconfigure_delay : int
'''
self.error = Error.from_json(error) if error else None
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~HostNetworkChange]<~HostNetworkChange>
+ results : typing.Sequence[~HostNetworkChange]
'''
self.results = [HostNetworkChange.from_json(o) for o in results or []]
def __init__(self, cloud_spec=None, config=None, error=None, name=None, owner=None, **unknown_fields):
'''
cloud_spec : CloudSpec
- config : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ config : typing.Mapping[str, typing.Any]
error : Error
name : str
owner : str
_toPy = {'models': 'models'}
def __init__(self, models=None, **unknown_fields):
'''
- models : typing.Sequence<+T_co>[~HostedModelConfig]<~HostedModelConfig>
+ models : typing.Sequence[~HostedModelConfig]
'''
self.models = [HostedModelConfig.from_json(o) for o in models or []]
_toPy = {'images': 'images'}
def __init__(self, images=None, **unknown_fields):
'''
- images : typing.Sequence<+T_co>[~ImageSpec]<~ImageSpec>
+ images : typing.Sequence[~ImageSpec]
'''
self.images = [ImageSpec.from_json(o) for o in images or []]
_toPy = {'arches': 'arches', 'region': 'region', 'root-storage-type': 'root_storage_type', 'series': 'series', 'stream': 'stream', 'virt-type': 'virt_type'}
def __init__(self, arches=None, region=None, root_storage_type=None, series=None, stream=None, virt_type=None, **unknown_fields):
'''
- arches : typing.Sequence<+T_co>[str]
+ arches : typing.Sequence[str]
region : str
root_storage_type : str
- series : typing.Sequence<+T_co>[str]
+ series : typing.Sequence[str]
stream : str
virt_type : str
'''
+class ImportStorageDetails(Type):
+ _toSchema = {'storage_tag': 'storage-tag'}
+ _toPy = {'storage-tag': 'storage_tag'}
+ def __init__(self, storage_tag=None, **unknown_fields):
+ '''
+ storage_tag : str
+ '''
+ self.storage_tag = storage_tag
+
+
+
+class ImportStorageParams(Type):
+ _toSchema = {'kind': 'kind', 'pool': 'pool', 'provider_id': 'provider-id', 'storage_name': 'storage-name'}
+ _toPy = {'kind': 'kind', 'pool': 'pool', 'provider-id': 'provider_id', 'storage-name': 'storage_name'}
+ def __init__(self, kind=None, pool=None, provider_id=None, storage_name=None, **unknown_fields):
+ '''
+ kind : int
+ pool : str
+ provider_id : str
+ storage_name : str
+ '''
+ self.kind = kind
+ self.pool = pool
+ self.provider_id = provider_id
+ self.storage_name = storage_name
+
+
+
+class ImportStorageResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : ImportStorageDetails
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = ImportStorageDetails.from_json(result) if result else None
+
+
+
+class ImportStorageResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~ImportStorageResult]
+ '''
+ self.results = [ImportStorageResult.from_json(o) for o in results or []]
+
+
+
+class IngressNetworksChangeEvent(Type):
+ _toSchema = {'application_token': 'application-token', 'ingress_required': 'ingress-required', 'macaroons': 'macaroons', 'networks': 'networks', 'relation_token': 'relation-token'}
+ _toPy = {'application-token': 'application_token', 'ingress-required': 'ingress_required', 'macaroons': 'macaroons', 'networks': 'networks', 'relation-token': 'relation_token'}
+ def __init__(self, application_token=None, ingress_required=None, macaroons=None, networks=None, relation_token=None, **unknown_fields):
+ '''
+ application_token : str
+ ingress_required : bool
+ macaroons : typing.Sequence[~Macaroon]
+ networks : typing.Sequence[str]
+ relation_token : str
+ '''
+ self.application_token = application_token
+ self.ingress_required = ingress_required
+ self.macaroons = [Macaroon.from_json(o) for o in macaroons or []]
+ self.networks = networks
+ self.relation_token = relation_token
+
+
+
+class IngressNetworksChanges(Type):
+ _toSchema = {'changes': 'changes'}
+ _toPy = {'changes': 'changes'}
+ def __init__(self, changes=None, **unknown_fields):
+ '''
+ changes : typing.Sequence[~IngressNetworksChangeEvent]
+ '''
+ self.changes = [IngressNetworksChangeEvent.from_json(o) for o in changes or []]
+
+
+
class InitiateMigrationArgs(Type):
_toSchema = {'specs': 'specs'}
_toPy = {'specs': 'specs'}
def __init__(self, specs=None, **unknown_fields):
'''
- specs : typing.Sequence<+T_co>[~MigrationSpec]<~MigrationSpec>
+ specs : typing.Sequence[~MigrationSpec]
'''
self.specs = [MigrationSpec.from_json(o) for o in specs or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~InitiateMigrationResult]<~InitiateMigrationResult>
+ results : typing.Sequence[~InitiateMigrationResult]
'''
self.results = [InitiateMigrationResult.from_json(o) for o in results or []]
'''
characteristics : HardwareCharacteristics
instance_id : str
- network_config : typing.Sequence<+T_co>[~NetworkConfig]<~NetworkConfig>
+ network_config : typing.Sequence[~NetworkConfig]
nonce : str
tag : str
- volume_attachments : typing.Mapping<~KT, +VT_co>[str, ~VolumeAttachmentInfo]<~VolumeAttachmentInfo>
- volumes : typing.Sequence<+T_co>[~Volume]<~Volume>
+ volume_attachments : typing.Mapping[str, ~VolumeAttachmentInfo]
+ volumes : typing.Sequence[~Volume]
'''
self.characteristics = HardwareCharacteristics.from_json(characteristics) if characteristics else None
self.instance_id = instance_id
_toPy = {'arches': 'arches', 'cost': 'cost', 'cpu-cores': 'cpu_cores', 'deprecated': 'deprecated', 'memory': 'memory', 'name': 'name', 'root-disk': 'root_disk', 'virt-type': 'virt_type'}
def __init__(self, arches=None, cost=None, cpu_cores=None, deprecated=None, memory=None, name=None, root_disk=None, virt_type=None, **unknown_fields):
'''
- arches : typing.Sequence<+T_co>[str]
+ arches : typing.Sequence[str]
cost : int
cpu_cores : int
deprecated : bool
cost_divisor : int
cost_unit : str
error : Error
- instance_types : typing.Sequence<+T_co>[~InstanceType]<~InstanceType>
+ instance_types : typing.Sequence[~InstanceType]
'''
self.cost_currency = cost_currency
self.cost_divisor = cost_divisor
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~InstanceTypesResult]<~InstanceTypesResult>
+ results : typing.Sequence[~InstanceTypesResult]
'''
self.results = [InstanceTypesResult.from_json(o) for o in results or []]
_toPy = {'machines': 'machines'}
def __init__(self, machines=None, **unknown_fields):
'''
- machines : typing.Sequence<+T_co>[~InstanceInfo]<~InstanceInfo>
+ machines : typing.Sequence[~InstanceInfo]
'''
self.machines = [InstanceInfo.from_json(o) for o in machines or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~IntResult]<~IntResult>
+ results : typing.Sequence[~IntResult]
'''
self.results = [IntResult.from_json(o) for o in results or []]
+class InvalidateCredentialArg(Type):
+ _toSchema = {'reason': 'reason'}
+ _toPy = {'reason': 'reason'}
+ def __init__(self, reason=None, **unknown_fields):
+ '''
+ reason : str
+ '''
+ self.reason = reason
+
+
+
class IsMasterResult(Type):
_toSchema = {'master': 'master'}
_toPy = {'master': 'master'}
def __init__(self, error=None, jobs=None, **unknown_fields):
'''
error : Error
- jobs : typing.Sequence<+T_co>[str]
+ jobs : typing.Sequence[str]
'''
self.error = Error.from_json(error) if error else None
self.jobs = jobs
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~JobsResult]<~JobsResult>
+ results : typing.Sequence[~JobsResult]
'''
self.results = [JobsResult.from_json(o) for o in results or []]
-class LifeResult(Type):
- _toSchema = {'error': 'error', 'life': 'life'}
- _toPy = {'error': 'error', 'life': 'life'}
- def __init__(self, error=None, life=None, **unknown_fields):
+class KnownServiceArgs(Type):
+ _toSchema = {'known_services': 'known-services'}
+ _toPy = {'known-services': 'known_services'}
+ def __init__(self, known_services=None, **unknown_fields):
'''
- error : Error
- life : str
+ known_services : typing.Sequence[str]
'''
- self.error = Error.from_json(error) if error else None
- self.life = life
+ self.known_services = known_services
-class LifeResults(Type):
- _toSchema = {'results': 'results'}
- _toPy = {'results': 'results'}
- def __init__(self, results=None, **unknown_fields):
+class KubernetesDeviceParams(Type):
+ _toSchema = {'attributes': 'Attributes', 'count': 'Count', 'type_': 'Type'}
+ _toPy = {'Attributes': 'attributes', 'Count': 'count', 'Type': 'type_'}
+ def __init__(self, attributes=None, count=None, type_=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~LifeResult]<~LifeResult>
+ attributes : typing.Mapping[str, str]
+ count : int
+ type_ : str
'''
- self.results = [LifeResult.from_json(o) for o in results or []]
+ self.attributes = attributes
+ self.count = count
+ self.type_ = type_
-class ListCloudImageMetadataResult(Type):
- _toSchema = {'result': 'result'}
- _toPy = {'result': 'result'}
- def __init__(self, result=None, **unknown_fields):
+class KubernetesFilesystemAttachmentParams(Type):
+ _toSchema = {'mount_point': 'mount-point', 'provider': 'provider', 'read_only': 'read-only'}
+ _toPy = {'mount-point': 'mount_point', 'provider': 'provider', 'read-only': 'read_only'}
+ def __init__(self, mount_point=None, provider=None, read_only=None, **unknown_fields):
'''
- result : typing.Sequence<+T_co>[~CloudImageMetadata]<~CloudImageMetadata>
+ mount_point : str
+ provider : str
+ read_only : bool
'''
- self.result = [CloudImageMetadata.from_json(o) for o in result or []]
+ self.mount_point = mount_point
+ self.provider = provider
+ self.read_only = read_only
-class ListImageResult(Type):
- _toSchema = {'result': 'result'}
- _toPy = {'result': 'result'}
- def __init__(self, result=None, **unknown_fields):
+class KubernetesFilesystemInfo(Type):
+ _toSchema = {'data': 'data', 'filesystem_id': 'filesystem-id', 'info': 'info', 'mount_point': 'mount-point', 'pool': 'pool', 'read_only': 'read-only', 'size': 'size', 'status': 'status', 'storagename': 'storagename', 'volume': 'volume'}
+ _toPy = {'data': 'data', 'filesystem-id': 'filesystem_id', 'info': 'info', 'mount-point': 'mount_point', 'pool': 'pool', 'read-only': 'read_only', 'size': 'size', 'status': 'status', 'storagename': 'storagename', 'volume': 'volume'}
+ def __init__(self, data=None, filesystem_id=None, info=None, mount_point=None, pool=None, read_only=None, size=None, status=None, storagename=None, volume=None, **unknown_fields):
'''
- result : typing.Sequence<+T_co>[~ImageMetadata]<~ImageMetadata>
+ data : typing.Mapping[str, typing.Any]
+ filesystem_id : str
+ info : str
+ mount_point : str
+ pool : str
+ read_only : bool
+ size : int
+ status : str
+ storagename : str
+ volume : KubernetesVolumeInfo
'''
- self.result = [ImageMetadata.from_json(o) for o in result or []]
+ self.data = data
+ self.filesystem_id = filesystem_id
+ self.info = info
+ self.mount_point = mount_point
+ self.pool = pool
+ self.read_only = read_only
+ self.size = size
+ self.status = status
+ self.storagename = storagename
+ self.volume = KubernetesVolumeInfo.from_json(volume) if volume else None
-class ListResourcesArgs(Type):
- _toSchema = {'entities': 'entities'}
- _toPy = {'entities': 'entities'}
- def __init__(self, entities=None, **unknown_fields):
+class KubernetesFilesystemParams(Type):
+ _toSchema = {'attachment': 'attachment', 'attributes': 'attributes', 'provider': 'provider', 'size': 'size', 'storagename': 'storagename', 'tags': 'tags'}
+ _toPy = {'attachment': 'attachment', 'attributes': 'attributes', 'provider': 'provider', 'size': 'size', 'storagename': 'storagename', 'tags': 'tags'}
+ def __init__(self, attachment=None, attributes=None, provider=None, size=None, storagename=None, tags=None, **unknown_fields):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
+ attachment : KubernetesFilesystemAttachmentParams
+ attributes : typing.Mapping[str, typing.Any]
+ provider : str
+ size : int
+ storagename : str
+ tags : typing.Mapping[str, str]
'''
- self.entities = [Entity.from_json(o) for o in entities or []]
+ self.attachment = KubernetesFilesystemAttachmentParams.from_json(attachment) if attachment else None
+ self.attributes = attributes
+ self.provider = provider
+ self.size = size
+ self.storagename = storagename
+ self.tags = tags
-class ListSSHKeys(Type):
+class KubernetesProvisioningInfo(Type):
+ _toSchema = {'constraints': 'constraints', 'devices': 'devices', 'filesystems': 'filesystems', 'placement': 'placement', 'pod_spec': 'pod-spec', 'tags': 'tags', 'volumes': 'volumes'}
+ _toPy = {'constraints': 'constraints', 'devices': 'devices', 'filesystems': 'filesystems', 'placement': 'placement', 'pod-spec': 'pod_spec', 'tags': 'tags', 'volumes': 'volumes'}
+ def __init__(self, constraints=None, devices=None, filesystems=None, placement=None, pod_spec=None, tags=None, volumes=None, **unknown_fields):
+ '''
+ constraints : Value
+ devices : typing.Sequence[~KubernetesDeviceParams]
+ filesystems : typing.Sequence[~KubernetesFilesystemParams]
+ placement : str
+ pod_spec : str
+ tags : typing.Mapping[str, str]
+ volumes : typing.Sequence[~KubernetesVolumeParams]
+ '''
+ self.constraints = Value.from_json(constraints) if constraints else None
+ self.devices = [KubernetesDeviceParams.from_json(o) for o in devices or []]
+ self.filesystems = [KubernetesFilesystemParams.from_json(o) for o in filesystems or []]
+ self.placement = placement
+ self.pod_spec = pod_spec
+ self.tags = tags
+ self.volumes = [KubernetesVolumeParams.from_json(o) for o in volumes or []]
+
+
+
+class KubernetesProvisioningInfoResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : KubernetesProvisioningInfo
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = KubernetesProvisioningInfo.from_json(result) if result else None
+
+
+
+class KubernetesProvisioningInfoResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~KubernetesProvisioningInfoResult]
+ '''
+ self.results = [KubernetesProvisioningInfoResult.from_json(o) for o in results or []]
+
+
+
+class KubernetesVolumeAttachmentParams(Type):
+ _toSchema = {'provider': 'provider', 'read_only': 'read-only'}
+ _toPy = {'provider': 'provider', 'read-only': 'read_only'}
+ def __init__(self, provider=None, read_only=None, **unknown_fields):
+ '''
+ provider : str
+ read_only : bool
+ '''
+ self.provider = provider
+ self.read_only = read_only
+
+
+
+class KubernetesVolumeInfo(Type):
+ _toSchema = {'data': 'data', 'info': 'info', 'persistent': 'persistent', 'pool': 'pool', 'size': 'size', 'status': 'status', 'volume_id': 'volume-id'}
+ _toPy = {'data': 'data', 'info': 'info', 'persistent': 'persistent', 'pool': 'pool', 'size': 'size', 'status': 'status', 'volume-id': 'volume_id'}
+ def __init__(self, data=None, info=None, persistent=None, pool=None, size=None, status=None, volume_id=None, **unknown_fields):
+ '''
+ data : typing.Mapping[str, typing.Any]
+ info : str
+ persistent : bool
+ pool : str
+ size : int
+ status : str
+ volume_id : str
+ '''
+ self.data = data
+ self.info = info
+ self.persistent = persistent
+ self.pool = pool
+ self.size = size
+ self.status = status
+ self.volume_id = volume_id
+
+
+
+class KubernetesVolumeParams(Type):
+ _toSchema = {'attachment': 'attachment', 'attributes': 'attributes', 'provider': 'provider', 'size': 'size', 'storagename': 'storagename', 'tags': 'tags'}
+ _toPy = {'attachment': 'attachment', 'attributes': 'attributes', 'provider': 'provider', 'size': 'size', 'storagename': 'storagename', 'tags': 'tags'}
+ def __init__(self, attachment=None, attributes=None, provider=None, size=None, storagename=None, tags=None, **unknown_fields):
+ '''
+ attachment : KubernetesVolumeAttachmentParams
+ attributes : typing.Mapping[str, typing.Any]
+ provider : str
+ size : int
+ storagename : str
+ tags : typing.Mapping[str, str]
+ '''
+ self.attachment = KubernetesVolumeAttachmentParams.from_json(attachment) if attachment else None
+ self.attributes = attributes
+ self.provider = provider
+ self.size = size
+ self.storagename = storagename
+ self.tags = tags
+
+
+
+class LXDProfile(Type):
+ _toSchema = {'config': 'config', 'description': 'description', 'devices': 'devices'}
+ _toPy = {'config': 'config', 'description': 'description', 'devices': 'devices'}
+ def __init__(self, config=None, description=None, devices=None, **unknown_fields):
+ '''
+ config : typing.Mapping[str, str]
+ description : str
+ devices : typing.Mapping[str, typing.Any]
+ '''
+ self.config = config
+ self.description = description
+ self.devices = devices
+
+
+
+class LXDProfileUpgradeMessages(Type):
+ _toSchema = {'application': 'application', 'watcher_id': 'watcher-id'}
+ _toPy = {'application': 'application', 'watcher-id': 'watcher_id'}
+ def __init__(self, application=None, watcher_id=None, **unknown_fields):
+ '''
+ application : Entity
+ watcher_id : str
+ '''
+ self.application = Entity.from_json(application) if application else None
+ self.watcher_id = watcher_id
+
+
+
+class LXDProfileUpgradeMessagesResult(Type):
+ _toSchema = {'error': 'error', 'message': 'message', 'unit_name': 'unit-name'}
+ _toPy = {'error': 'error', 'message': 'message', 'unit-name': 'unit_name'}
+ def __init__(self, error=None, message=None, unit_name=None, **unknown_fields):
+ '''
+ error : Error
+ message : str
+ unit_name : str
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.message = message
+ self.unit_name = unit_name
+
+
+
+class LXDProfileUpgradeMessagesResults(Type):
+ _toSchema = {'args': 'args'}
+ _toPy = {'args': 'args'}
+ def __init__(self, args=None, **unknown_fields):
+ '''
+ args : typing.Sequence[~LXDProfileUpgradeMessagesResult]
+ '''
+ self.args = [LXDProfileUpgradeMessagesResult.from_json(o) for o in args or []]
+
+
+
+class LifeResult(Type):
+ _toSchema = {'error': 'error', 'life': 'life'}
+ _toPy = {'error': 'error', 'life': 'life'}
+ def __init__(self, error=None, life=None, **unknown_fields):
+ '''
+ error : Error
+ life : str
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.life = life
+
+
+
+class LifeResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~LifeResult]
+ '''
+ self.results = [LifeResult.from_json(o) for o in results or []]
+
+
+
+class ListCloudImageMetadataResult(Type):
+ _toSchema = {'result': 'result'}
+ _toPy = {'result': 'result'}
+ def __init__(self, result=None, **unknown_fields):
+ '''
+ result : typing.Sequence[~CloudImageMetadata]
+ '''
+ self.result = [CloudImageMetadata.from_json(o) for o in result or []]
+
+
+
+class ListCloudInfo(Type):
+ _toSchema = {'clouddetails': 'CloudDetails', 'user_access': 'user-access'}
+ _toPy = {'CloudDetails': 'clouddetails', 'user-access': 'user_access'}
+ def __init__(self, clouddetails=None, user_access=None, **unknown_fields):
+ '''
+ clouddetails : CloudDetails
+ user_access : str
+ '''
+ self.clouddetails = CloudDetails.from_json(clouddetails) if clouddetails else None
+ self.user_access = user_access
+
+
+
+class ListCloudInfoResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : ListCloudInfo
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = ListCloudInfo.from_json(result) if result else None
+
+
+
+class ListCloudInfoResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~ListCloudInfoResult]
+ '''
+ self.results = [ListCloudInfoResult.from_json(o) for o in results or []]
+
+
+
+class ListCloudsRequest(Type):
+ _toSchema = {'all_': 'all', 'user_tag': 'user-tag'}
+ _toPy = {'all': 'all_', 'user-tag': 'user_tag'}
+ def __init__(self, all_=None, user_tag=None, **unknown_fields):
+ '''
+ all_ : bool
+ user_tag : str
+ '''
+ self.all_ = all_
+ self.user_tag = user_tag
+
+
+
+class ListFirewallRulesResults(Type):
+ _toSchema = {'rules': 'Rules'}
+ _toPy = {'Rules': 'rules'}
+ def __init__(self, rules=None, **unknown_fields):
+ '''
+ rules : typing.Sequence[~FirewallRule]
+ '''
+ self.rules = [FirewallRule.from_json(o) for o in rules or []]
+
+
+
+class ListImageResult(Type):
+ _toSchema = {'result': 'result'}
+ _toPy = {'result': 'result'}
+ def __init__(self, result=None, **unknown_fields):
+ '''
+ result : typing.Sequence[~ImageMetadata]
+ '''
+ self.result = [ImageMetadata.from_json(o) for o in result or []]
+
+
+
+class ListResourcesArgs(Type):
+ _toSchema = {'entities': 'entities'}
+ _toPy = {'entities': 'entities'}
+ def __init__(self, entities=None, **unknown_fields):
+ '''
+ entities : typing.Sequence[~Entity]
+ '''
+ self.entities = [Entity.from_json(o) for o in entities or []]
+
+
+
+class ListSSHKeys(Type):
_toSchema = {'entities': 'entities', 'mode': 'mode'}
_toPy = {'entities': 'entities', 'mode': 'mode'}
def __init__(self, entities=None, mode=None, **unknown_fields):
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~Space]<~Space>
+ results : typing.Sequence[~Space]
'''
self.results = [Space.from_json(o) for o in results or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~Subnet]<~Subnet>
+ results : typing.Sequence[~Subnet]
'''
self.results = [Subnet.from_json(o) for o in results or []]
_toPy = {'resource-names': 'resource_names'}
def __init__(self, resource_names=None, **unknown_fields):
'''
- resource_names : typing.Sequence<+T_co>[str]
+ resource_names : typing.Sequence[str]
'''
self.resource_names = resource_names
_toPy = {'ids': 'ids'}
def __init__(self, ids=None, **unknown_fields):
'''
- ids : typing.Sequence<+T_co>[~LogForwardingID]<~LogForwardingID>
+ ids : typing.Sequence[~LogForwardingID]
'''
self.ids = [LogForwardingID.from_json(o) for o in ids or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~LogForwardingGetLastSentResult]<~LogForwardingGetLastSentResult>
+ results : typing.Sequence[~LogForwardingGetLastSentResult]
'''
self.results = [LogForwardingGetLastSentResult.from_json(o) for o in results or []]
_toPy = {'params': 'params'}
def __init__(self, params=None, **unknown_fields):
'''
- params : typing.Sequence<+T_co>[~LogForwardingSetLastSentParam]<~LogForwardingSetLastSentParam>
+ params : typing.Sequence[~LogForwardingSetLastSentParam]
'''
self.params = [LogForwardingSetLastSentParam.from_json(o) for o in params or []]
_toPy = {'args': 'args'}
def __init__(self, args=None, **unknown_fields):
'''
- args : typing.Sequence<+T_co>[~LookUpArg]<~LookUpArg>
+ args : typing.Sequence[~LookUpArg]
'''
self.args = [LookUpArg.from_json(o) for o in args or []]
_toPy = {'args': 'args'}
def __init__(self, args=None, **unknown_fields):
'''
- args : typing.Sequence<+T_co>[~LookUpPayloadArg]<~LookUpPayloadArg>
+ args : typing.Sequence[~LookUpPayloadArg]
'''
self.args = [LookUpPayloadArg.from_json(o) for o in args or []]
+class MacaroonResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : Macaroon
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = Macaroon.from_json(result) if result else None
+
+
+
+class MacaroonResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~MacaroonResult]
+ '''
+ self.results = [MacaroonResult.from_json(o) for o in results or []]
+
+
+
class MachineAddresses(Type):
_toSchema = {'addresses': 'addresses', 'tag': 'tag'}
_toPy = {'addresses': 'addresses', 'tag': 'tag'}
def __init__(self, addresses=None, tag=None, **unknown_fields):
'''
- addresses : typing.Sequence<+T_co>[~Address]<~Address>
+ addresses : typing.Sequence[~Address]
tag : str
'''
self.addresses = [Address.from_json(o) for o in addresses or []]
_toPy = {'addresses': 'addresses', 'error': 'error'}
def __init__(self, addresses=None, error=None, **unknown_fields):
'''
- addresses : typing.Sequence<+T_co>[~Address]<~Address>
+ addresses : typing.Sequence[~Address]
error : Error
'''
self.addresses = [Address.from_json(o) for o in addresses or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~MachineAddressesResult]<~MachineAddressesResult>
+ results : typing.Sequence[~MachineAddressesResult]
'''
self.results = [MachineAddressesResult.from_json(o) for o in results or []]
_toPy = {'block-devices': 'block_devices', 'machine': 'machine'}
def __init__(self, block_devices=None, machine=None, **unknown_fields):
'''
- block_devices : typing.Sequence<+T_co>[~BlockDevice]<~BlockDevice>
+ block_devices : typing.Sequence[~BlockDevice]
machine : str
'''
self.block_devices = [BlockDevice.from_json(o) for o in block_devices or []]
_toPy = {'container-types': 'container_types', 'machine-tag': 'machine_tag'}
def __init__(self, container_types=None, machine_tag=None, **unknown_fields):
'''
- container_types : typing.Sequence<+T_co>[str]
+ container_types : typing.Sequence[str]
machine_tag : str
'''
self.container_types = container_types
_toPy = {'params': 'params'}
def __init__(self, params=None, **unknown_fields):
'''
- params : typing.Sequence<+T_co>[~MachineContainers]<~MachineContainers>
+ params : typing.Sequence[~MachineContainers]
'''
self.params = [MachineContainers.from_json(o) for o in params or []]
cpu_power : int
mem : int
root_disk : int
- tags : typing.Sequence<+T_co>[str]
+ tags : typing.Sequence[str]
'''
self.arch = arch
self.availability_zone = availability_zone
def __init__(self, error=None, info=None, **unknown_fields):
'''
error : Error
- info : typing.Sequence<+T_co>[~NetworkConfig]<~NetworkConfig>
+ info : typing.Sequence[~NetworkConfig]
'''
self.error = Error.from_json(error) if error else None
self.info = [NetworkConfig.from_json(o) for o in info or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~MachineNetworkConfigResult]<~MachineNetworkConfigResult>
+ results : typing.Sequence[~MachineNetworkConfigResult]
'''
self.results = [MachineNetworkConfigResult.from_json(o) for o in results or []]
_toPy = {'params': 'params'}
def __init__(self, params=None, **unknown_fields):
'''
- params : typing.Sequence<+T_co>[~MachinePorts]<~MachinePorts>
+ params : typing.Sequence[~MachinePorts]
'''
self.params = [MachinePorts.from_json(o) for o in params or []]
def __init__(self, error=None, ports=None, **unknown_fields):
'''
error : Error
- ports : typing.Sequence<+T_co>[~MachinePortRange]<~MachinePortRange>
+ ports : typing.Sequence[~MachinePortRange]
'''
self.error = Error.from_json(error) if error else None
self.ports = [MachinePortRange.from_json(o) for o in ports or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~MachinePortsResult]<~MachinePortsResult>
+ results : typing.Sequence[~MachinePortsResult]
'''
self.results = [MachinePortsResult.from_json(o) for o in results or []]
def __init__(self, agent_status=None, containers=None, dns_name=None, hardware=None, has_vote=None, id_=None, instance_id=None, instance_status=None, ip_addresses=None, jobs=None, series=None, wants_vote=None, **unknown_fields):
'''
agent_status : DetailedStatus
- containers : typing.Mapping<~KT, +VT_co>[str, ~MachineStatus]<~MachineStatus>
+ containers : typing.Mapping[str, ~MachineStatus]
dns_name : str
hardware : str
has_vote : bool
id_ : str
instance_id : str
instance_status : DetailedStatus
- ip_addresses : typing.Sequence<+T_co>[str]
- jobs : typing.Sequence<+T_co>[str]
+ ip_addresses : typing.Sequence[str]
+ jobs : typing.Sequence[str]
series : str
wants_vote : bool
'''
_toPy = {'ids': 'ids'}
def __init__(self, ids=None, **unknown_fields):
'''
- ids : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId>
+ ids : typing.Sequence[~MachineStorageId]
'''
self.ids = [MachineStorageId.from_json(o) for o in ids or []]
_toPy = {'changes': 'changes', 'error': 'error', 'watcher-id': 'watcher_id'}
def __init__(self, changes=None, error=None, watcher_id=None, **unknown_fields):
'''
- changes : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId>
+ changes : typing.Sequence[~MachineStorageId]
error : Error
watcher_id : str
'''
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~MachineStorageIdsWatchResult]<~MachineStorageIdsWatchResult>
+ results : typing.Sequence[~MachineStorageIdsWatchResult]
'''
self.results = [MachineStorageIdsWatchResult.from_json(o) for o in results or []]
def __init__(self, error=None, result=None, **unknown_fields):
'''
error : Error
- result : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ result : typing.Mapping[str, typing.Any]
'''
self.error = Error.from_json(error) if error else None
self.result = result
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~MapResult]<~MapResult>
+ results : typing.Sequence[~MapResult]
'''
self.results = [MapResult.from_json(o) for o in results or []]
id_ : int
priority : float
slavedelay : int
- tags : typing.Mapping<~KT, +VT_co>[str, str]
+ tags : typing.Mapping[str, str]
votes : int
'''
self.address = address
_toPy = {'params': 'params'}
def __init__(self, params=None, **unknown_fields):
'''
- params : typing.Sequence<+T_co>[~MergeLeadershipSettingsParam]<~MergeLeadershipSettingsParam>
+ params : typing.Sequence[~MergeLeadershipSettingsParam]
'''
self.params = [MergeLeadershipSettingsParam.from_json(o) for o in params or []]
def __init__(self, application_tag=None, settings=None, **unknown_fields):
'''
application_tag : str
- settings : typing.Mapping<~KT, +VT_co>[str, str]
+ settings : typing.Mapping[str, str]
'''
self.application_tag = application_tag
self.settings = settings
_toPy = {'image-ids': 'image_ids'}
def __init__(self, image_ids=None, **unknown_fields):
'''
- image_ids : typing.Sequence<+T_co>[str]
+ image_ids : typing.Sequence[str]
'''
self.image_ids = image_ids
_toPy = {'metadata': 'metadata'}
def __init__(self, metadata=None, **unknown_fields):
'''
- metadata : typing.Sequence<+T_co>[~CloudImageMetadataList]<~CloudImageMetadataList>
+ metadata : typing.Sequence[~CloudImageMetadataList]
'''
self.metadata = [CloudImageMetadataList.from_json(o) for o in metadata or []]
_toPy = {'statues': 'statues'}
def __init__(self, statues=None, **unknown_fields):
'''
- statues : typing.Sequence<+T_co>[~MeterStatusParam]<~MeterStatusParam>
+ statues : typing.Sequence[~MeterStatusParam]
'''
self.statues = [MeterStatusParam.from_json(o) for o in statues or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~MeterStatusResult]<~MeterStatusResult>
+ results : typing.Sequence[~MeterStatusResult]
'''
self.results = [MeterStatusResult.from_json(o) for o in results or []]
'''
charm_url : str
created : str
- metrics : typing.Sequence<+T_co>[~Metric]<~Metric>
+ metrics : typing.Sequence[~Metric]
uuid : str
'''
self.charm_url = charm_url
_toPy = {'batches': 'batches'}
def __init__(self, batches=None, **unknown_fields):
'''
- batches : typing.Sequence<+T_co>[~MetricBatchParam]<~MetricBatchParam>
+ batches : typing.Sequence[~MetricBatchParam]
'''
self.batches = [MetricBatchParam.from_json(o) for o in batches or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~EntityMetrics]<~EntityMetrics>
+ results : typing.Sequence[~EntityMetrics]
'''
self.results = [EntityMetrics.from_json(o) for o in results or []]
external_control : bool
migration_id : str
phase : str
- source_api_addrs : typing.Sequence<+T_co>[str]
+ source_api_addrs : typing.Sequence[str]
source_ca_cert : str
- target_api_addrs : typing.Sequence<+T_co>[str]
+ target_api_addrs : typing.Sequence[str]
target_ca_cert : str
'''
self.attempt = attempt
_toPy = {'addrs': 'addrs', 'auth-tag': 'auth_tag', 'ca-cert': 'ca_cert', 'controller-tag': 'controller_tag', 'macaroons': 'macaroons', 'password': 'password'}
def __init__(self, addrs=None, auth_tag=None, ca_cert=None, controller_tag=None, macaroons=None, password=None, **unknown_fields):
'''
- addrs : typing.Sequence<+T_co>[str]
+ addrs : typing.Sequence[str]
auth_tag : str
ca_cert : str
controller_tag : str
_toPy = {'failed': 'failed', 'migration-id': 'migration_id', 'phase': 'phase', 'success-count': 'success_count', 'unknown-count': 'unknown_count', 'unknown-sample': 'unknown_sample'}
def __init__(self, failed=None, migration_id=None, phase=None, success_count=None, unknown_count=None, unknown_sample=None, **unknown_fields):
'''
- failed : typing.Sequence<+T_co>[str]
+ failed : typing.Sequence[str]
migration_id : str
phase : str
success_count : int
unknown_count : int
- unknown_sample : typing.Sequence<+T_co>[str]
+ unknown_sample : typing.Sequence[str]
'''
self.failed = failed
self.migration_id = migration_id
+class ModelAccess(Type):
+ _toSchema = {'access': 'access', 'model': 'model'}
+ _toPy = {'access': 'access', 'model': 'model'}
+ def __init__(self, access=None, model=None, **unknown_fields):
+ '''
+ access : str
+ model : str
+ '''
+ self.access = access
+ self.model = model
+
+
+
class ModelArgs(Type):
_toSchema = {'model_tag': 'model-tag'}
_toPy = {'model-tag': 'model_tag'}
_toPy = {'blocks': 'blocks', 'model-uuid': 'model_uuid', 'name': 'name', 'owner-tag': 'owner_tag'}
def __init__(self, blocks=None, model_uuid=None, name=None, owner_tag=None, **unknown_fields):
'''
- blocks : typing.Sequence<+T_co>[str]
+ blocks : typing.Sequence[str]
model_uuid : str
name : str
owner_tag : str
_toPy = {'models': 'models'}
def __init__(self, models=None, **unknown_fields):
'''
- models : typing.Sequence<+T_co>[~ModelBlockInfo]<~ModelBlockInfo>
+ models : typing.Sequence[~ModelBlockInfo]
'''
self.models = [ModelBlockInfo.from_json(o) for o in models or []]
_toPy = {'config': 'config'}
def __init__(self, config=None, **unknown_fields):
'''
- config : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ config : typing.Mapping[str, typing.Any]
'''
self.config = config
_toPy = {'config': 'config'}
def __init__(self, config=None, **unknown_fields):
'''
- config : typing.Mapping<~KT, +VT_co>[str, ~ConfigValue]<~ConfigValue>
+ config : typing.Mapping[str, ~ConfigValue]
'''
self.config = config
def __init__(self, cloud_tag=None, config=None, credential=None, name=None, owner_tag=None, region=None, **unknown_fields):
'''
cloud_tag : str
- config : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ config : typing.Mapping[str, typing.Any]
credential : str
name : str
owner_tag : str
+class ModelCredential(Type):
+ _toSchema = {'credential_tag': 'credential-tag', 'exists': 'exists', 'model_tag': 'model-tag', 'valid': 'valid'}
+ _toPy = {'credential-tag': 'credential_tag', 'exists': 'exists', 'model-tag': 'model_tag', 'valid': 'valid'}
+ def __init__(self, credential_tag=None, exists=None, model_tag=None, valid=None, **unknown_fields):
+ '''
+ credential_tag : str
+ exists : bool
+ model_tag : str
+ valid : bool
+ '''
+ self.credential_tag = credential_tag
+ self.exists = exists
+ self.model_tag = model_tag
+ self.valid = valid
+
+
+
class ModelDefaultValues(Type):
_toSchema = {'cloud_region': 'cloud-region', 'cloud_tag': 'cloud-tag', 'config': 'config'}
_toPy = {'cloud-region': 'cloud_region', 'cloud-tag': 'cloud_tag', 'config': 'config'}
'''
cloud_region : str
cloud_tag : str
- config : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ config : typing.Mapping[str, typing.Any]
'''
self.cloud_region = cloud_region
self.cloud_tag = cloud_tag
_toPy = {'controller': 'controller', 'default': 'default', 'regions': 'regions'}
def __init__(self, controller=None, default=None, regions=None, **unknown_fields):
'''
- controller : typing.Mapping<~KT, +VT_co>[str, typing.Any]
- default : typing.Mapping<~KT, +VT_co>[str, typing.Any]
- regions : typing.Sequence<+T_co>[~RegionDefaults]<~RegionDefaults>
+ controller : typing.Mapping[str, typing.Any]
+ default : typing.Mapping[str, typing.Any]
+ regions : typing.Sequence[~RegionDefaults]
'''
self.controller = controller
self.default = default
_toPy = {'config': 'config'}
def __init__(self, config=None, **unknown_fields):
'''
- config : typing.Mapping<~KT, +VT_co>[str, ~ModelDefaults]<~ModelDefaults>
+ config : typing.Mapping[str, ~ModelDefaults]
'''
self.config = config
+class ModelEntityCount(Type):
+ _toSchema = {'count': 'count', 'entity': 'entity'}
+ _toPy = {'count': 'count', 'entity': 'entity'}
+ def __init__(self, count=None, entity=None, **unknown_fields):
+ '''
+ count : int
+ entity : str
+ '''
+ self.count = count
+ self.entity = entity
+
+
+
+class ModelFilesystemInfo(Type):
+ _toSchema = {'detachable': 'detachable', 'id_': 'id', 'message': 'message', 'provider_id': 'provider-id', 'status': 'status'}
+ _toPy = {'detachable': 'detachable', 'id': 'id_', 'message': 'message', 'provider-id': 'provider_id', 'status': 'status'}
+ def __init__(self, detachable=None, id_=None, message=None, provider_id=None, status=None, **unknown_fields):
+ '''
+ detachable : bool
+ id_ : str
+ message : str
+ provider_id : str
+ status : str
+ '''
+ self.detachable = detachable
+ self.id_ = id_
+ self.message = message
+ self.provider_id = provider_id
+ self.status = status
+
+
+
class ModelInfo(Type):
- _toSchema = {'agent_version': 'agent-version', 'cloud_credential_tag': 'cloud-credential-tag', 'cloud_region': 'cloud-region', 'cloud_tag': 'cloud-tag', 'controller_uuid': 'controller-uuid', 'default_series': 'default-series', 'life': 'life', 'machines': 'machines', 'migration': 'migration', 'name': 'name', 'owner_tag': 'owner-tag', 'provider_type': 'provider-type', 'sla': 'sla', 'status': 'status', 'users': 'users', 'uuid': 'uuid'}
- _toPy = {'agent-version': 'agent_version', 'cloud-credential-tag': 'cloud_credential_tag', 'cloud-region': 'cloud_region', 'cloud-tag': 'cloud_tag', 'controller-uuid': 'controller_uuid', 'default-series': 'default_series', 'life': 'life', 'machines': 'machines', 'migration': 'migration', 'name': 'name', 'owner-tag': 'owner_tag', 'provider-type': 'provider_type', 'sla': 'sla', 'status': 'status', 'users': 'users', 'uuid': 'uuid'}
- def __init__(self, agent_version=None, cloud_credential_tag=None, cloud_region=None, cloud_tag=None, controller_uuid=None, default_series=None, life=None, machines=None, migration=None, name=None, owner_tag=None, provider_type=None, sla=None, status=None, users=None, uuid=None, **unknown_fields):
+ _toSchema = {'agent_version': 'agent-version', 'cloud_credential_tag': 'cloud-credential-tag', 'cloud_region': 'cloud-region', 'cloud_tag': 'cloud-tag', 'controller_uuid': 'controller-uuid', 'default_series': 'default-series', 'life': 'life', 'machines': 'machines', 'migration': 'migration', 'name': 'name', 'owner_tag': 'owner-tag', 'provider_type': 'provider-type', 'sla': 'sla', 'status': 'status', 'type_': 'type', 'users': 'users', 'uuid': 'uuid'}
+ _toPy = {'agent-version': 'agent_version', 'cloud-credential-tag': 'cloud_credential_tag', 'cloud-region': 'cloud_region', 'cloud-tag': 'cloud_tag', 'controller-uuid': 'controller_uuid', 'default-series': 'default_series', 'life': 'life', 'machines': 'machines', 'migration': 'migration', 'name': 'name', 'owner-tag': 'owner_tag', 'provider-type': 'provider_type', 'sla': 'sla', 'status': 'status', 'type': 'type_', 'users': 'users', 'uuid': 'uuid'}
+ def __init__(self, agent_version=None, cloud_credential_tag=None, cloud_region=None, cloud_tag=None, controller_uuid=None, default_series=None, life=None, machines=None, migration=None, name=None, owner_tag=None, provider_type=None, sla=None, status=None, type_=None, users=None, uuid=None, **unknown_fields):
'''
agent_version : Number
cloud_credential_tag : str
controller_uuid : str
default_series : str
life : str
- machines : typing.Sequence<+T_co>[~ModelMachineInfo]<~ModelMachineInfo>
+ machines : typing.Sequence[~ModelMachineInfo]
migration : ModelMigrationStatus
name : str
owner_tag : str
provider_type : str
sla : ModelSLAInfo
status : EntityStatus
- users : typing.Sequence<+T_co>[~ModelUserInfo]<~ModelUserInfo>
+ type_ : str
+ users : typing.Sequence[~ModelUserInfo]
uuid : str
'''
self.agent_version = Number.from_json(agent_version) if agent_version else None
self.provider_type = provider_type
self.sla = ModelSLAInfo.from_json(sla) if sla else None
self.status = EntityStatus.from_json(status) if status else None
+ self.type_ = type_
self.users = [ModelUserInfo.from_json(o) for o in users or []]
self.uuid = uuid
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ModelInfoResult]<~ModelInfoResult>
+ results : typing.Sequence[~ModelInfoResult]
'''
self.results = [ModelInfoResult.from_json(o) for o in results or []]
_toPy = {'constraints': 'constraints'}
def __init__(self, constraints=None, **unknown_fields):
'''
- constraints : typing.Sequence<+T_co>[~ModelInstanceTypesConstraint]<~ModelInstanceTypesConstraint>
+ constraints : typing.Sequence[~ModelInstanceTypesConstraint]
'''
self.constraints = [ModelInstanceTypesConstraint.from_json(o) for o in constraints or []]
_toPy = {'creds': 'creds', 'level': 'level'}
def __init__(self, creds=None, level=None, **unknown_fields):
'''
- creds : typing.Sequence<+T_co>[int]
+ creds : typing.Sequence[int]
level : str
'''
self.creds = creds
+class ModelSequencesResult(Type):
+ _toSchema = {'sequences': 'sequences'}
+ _toPy = {'sequences': 'sequences'}
+ def __init__(self, sequences=None, **unknown_fields):
+ '''
+ sequences : typing.Mapping[str, int]
+ '''
+ self.sequences = sequences
+
+
+
class ModelSet(Type):
_toSchema = {'config': 'config'}
_toPy = {'config': 'config'}
def __init__(self, config=None, **unknown_fields):
'''
- config : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ config : typing.Mapping[str, typing.Any]
'''
self.config = config
application_count : int
hosted_machine_count : int
life : str
- machines : typing.Sequence<+T_co>[~ModelMachineInfo]<~ModelMachineInfo>
+ machines : typing.Sequence[~ModelMachineInfo]
model_tag : str
owner_tag : str
'''
class ModelStatusInfo(Type):
- _toSchema = {'available_version': 'available-version', 'cloud_tag': 'cloud-tag', 'meter_status': 'meter-status', 'model_status': 'model-status', 'name': 'name', 'region': 'region', 'sla': 'sla', 'version': 'version'}
- _toPy = {'available-version': 'available_version', 'cloud-tag': 'cloud_tag', 'meter-status': 'meter_status', 'model-status': 'model_status', 'name': 'name', 'region': 'region', 'sla': 'sla', 'version': 'version'}
- def __init__(self, available_version=None, cloud_tag=None, meter_status=None, model_status=None, name=None, region=None, sla=None, version=None, **unknown_fields):
+ _toSchema = {'available_version': 'available-version', 'cloud_tag': 'cloud-tag', 'meter_status': 'meter-status', 'model_status': 'model-status', 'name': 'name', 'region': 'region', 'sla': 'sla', 'type_': 'type', 'version': 'version'}
+ _toPy = {'available-version': 'available_version', 'cloud-tag': 'cloud_tag', 'meter-status': 'meter_status', 'model-status': 'model_status', 'name': 'name', 'region': 'region', 'sla': 'sla', 'type': 'type_', 'version': 'version'}
+ def __init__(self, available_version=None, cloud_tag=None, meter_status=None, model_status=None, name=None, region=None, sla=None, type_=None, version=None, **unknown_fields):
'''
available_version : str
cloud_tag : str
name : str
region : str
sla : str
+ type_ : str
version : str
'''
self.available_version = available_version
self.name = name
self.region = region
self.sla = sla
+ self.type_ = type_
self.version = version
_toPy = {'models': 'models'}
def __init__(self, models=None, **unknown_fields):
'''
- models : typing.Sequence<+T_co>[~ModelStatus]<~ModelStatus>
+ models : typing.Sequence[~ModelStatus]
'''
self.models = [ModelStatus.from_json(o) for o in models or []]
+class ModelSummariesRequest(Type):
+ _toSchema = {'all_': 'all', 'user_tag': 'user-tag'}
+ _toPy = {'all': 'all_', 'user-tag': 'user_tag'}
+ def __init__(self, all_=None, user_tag=None, **unknown_fields):
+ '''
+ all_ : bool
+ user_tag : str
+ '''
+ self.all_ = all_
+ self.user_tag = user_tag
+
+
+
+class ModelSummary(Type):
+ _toSchema = {'agent_version': 'agent-version', 'cloud_credential_tag': 'cloud-credential-tag', 'cloud_region': 'cloud-region', 'cloud_tag': 'cloud-tag', 'controller_uuid': 'controller-uuid', 'counts': 'counts', 'default_series': 'default-series', 'last_connection': 'last-connection', 'life': 'life', 'migration': 'migration', 'name': 'name', 'owner_tag': 'owner-tag', 'provider_type': 'provider-type', 'sla': 'sla', 'status': 'status', 'type_': 'type', 'user_access': 'user-access', 'uuid': 'uuid'}
+ _toPy = {'agent-version': 'agent_version', 'cloud-credential-tag': 'cloud_credential_tag', 'cloud-region': 'cloud_region', 'cloud-tag': 'cloud_tag', 'controller-uuid': 'controller_uuid', 'counts': 'counts', 'default-series': 'default_series', 'last-connection': 'last_connection', 'life': 'life', 'migration': 'migration', 'name': 'name', 'owner-tag': 'owner_tag', 'provider-type': 'provider_type', 'sla': 'sla', 'status': 'status', 'type': 'type_', 'user-access': 'user_access', 'uuid': 'uuid'}
+ def __init__(self, agent_version=None, cloud_credential_tag=None, cloud_region=None, cloud_tag=None, controller_uuid=None, counts=None, default_series=None, last_connection=None, life=None, migration=None, name=None, owner_tag=None, provider_type=None, sla=None, status=None, type_=None, user_access=None, uuid=None, **unknown_fields):
+ '''
+ agent_version : Number
+ cloud_credential_tag : str
+ cloud_region : str
+ cloud_tag : str
+ controller_uuid : str
+ counts : typing.Sequence[~ModelEntityCount]
+ default_series : str
+ last_connection : str
+ life : str
+ migration : ModelMigrationStatus
+ name : str
+ owner_tag : str
+ provider_type : str
+ sla : ModelSLAInfo
+ status : EntityStatus
+ type_ : str
+ user_access : str
+ uuid : str
+ '''
+ self.agent_version = Number.from_json(agent_version) if agent_version else None
+ self.cloud_credential_tag = cloud_credential_tag
+ self.cloud_region = cloud_region
+ self.cloud_tag = cloud_tag
+ self.controller_uuid = controller_uuid
+ self.counts = [ModelEntityCount.from_json(o) for o in counts or []]
+ self.default_series = default_series
+ self.last_connection = last_connection
+ self.life = life
+ self.migration = ModelMigrationStatus.from_json(migration) if migration else None
+ self.name = name
+ self.owner_tag = owner_tag
+ self.provider_type = provider_type
+ self.sla = ModelSLAInfo.from_json(sla) if sla else None
+ self.status = EntityStatus.from_json(status) if status else None
+ self.type_ = type_
+ self.user_access = user_access
+ self.uuid = uuid
+
+
+
+class ModelSummaryResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : ModelSummary
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = ModelSummary.from_json(result) if result else None
+
+
+
+class ModelSummaryResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~ModelSummaryResult]
+ '''
+ self.results = [ModelSummaryResult.from_json(o) for o in results or []]
+
+
+
class ModelTag(Type):
_toSchema = {}
_toPy = {}
_toPy = {'keys': 'keys'}
def __init__(self, keys=None, **unknown_fields):
'''
- keys : typing.Sequence<+T_co>[str]
+ keys : typing.Sequence[str]
'''
self.keys = keys
'''
cloud_region : str
cloud_tag : str
- keys : typing.Sequence<+T_co>[str]
+ keys : typing.Sequence[str]
'''
self.cloud_region = cloud_region
self.cloud_tag = cloud_tag
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ModelUserInfoResult]<~ModelUserInfoResult>
+ results : typing.Sequence[~ModelUserInfoResult]
'''
self.results = [ModelUserInfoResult.from_json(o) for o in results or []]
+class ModelVolumeInfo(Type):
+ _toSchema = {'detachable': 'detachable', 'id_': 'id', 'message': 'message', 'provider_id': 'provider-id', 'status': 'status'}
+ _toPy = {'detachable': 'detachable', 'id': 'id_', 'message': 'message', 'provider-id': 'provider_id', 'status': 'status'}
+ def __init__(self, detachable=None, id_=None, message=None, provider_id=None, status=None, **unknown_fields):
+ '''
+ detachable : bool
+ id_ : str
+ message : str
+ provider_id : str
+ status : str
+ '''
+ self.detachable = detachable
+ self.id_ = id_
+ self.message = message
+ self.provider_id = provider_id
+ self.status = status
+
+
+
+class ModifyCloudAccess(Type):
+ _toSchema = {'access': 'access', 'action': 'action', 'cloud_tag': 'cloud-tag', 'user_tag': 'user-tag'}
+ _toPy = {'access': 'access', 'action': 'action', 'cloud-tag': 'cloud_tag', 'user-tag': 'user_tag'}
+ def __init__(self, access=None, action=None, cloud_tag=None, user_tag=None, **unknown_fields):
+ '''
+ access : str
+ action : str
+ cloud_tag : str
+ user_tag : str
+ '''
+ self.access = access
+ self.action = action
+ self.cloud_tag = cloud_tag
+ self.user_tag = user_tag
+
+
+
+class ModifyCloudAccessRequest(Type):
+ _toSchema = {'changes': 'changes'}
+ _toPy = {'changes': 'changes'}
+ def __init__(self, changes=None, **unknown_fields):
+ '''
+ changes : typing.Sequence[~ModifyCloudAccess]
+ '''
+ self.changes = [ModifyCloudAccess.from_json(o) for o in changes or []]
+
+
+
class ModifyControllerAccess(Type):
_toSchema = {'access': 'access', 'action': 'action', 'user_tag': 'user-tag'}
_toPy = {'access': 'access', 'action': 'action', 'user-tag': 'user_tag'}
_toPy = {'changes': 'changes'}
def __init__(self, changes=None, **unknown_fields):
'''
- changes : typing.Sequence<+T_co>[~ModifyControllerAccess]<~ModifyControllerAccess>
+ changes : typing.Sequence[~ModifyControllerAccess]
'''
self.changes = [ModifyControllerAccess.from_json(o) for o in changes or []]
_toPy = {'changes': 'changes'}
def __init__(self, changes=None, **unknown_fields):
'''
- changes : typing.Sequence<+T_co>[~ModifyModelAccess]<~ModifyModelAccess>
+ changes : typing.Sequence[~ModifyModelAccess]
'''
self.changes = [ModifyModelAccess.from_json(o) for o in changes or []]
+class ModifyOfferAccess(Type):
+ _toSchema = {'access': 'access', 'action': 'action', 'offer_url': 'offer-url', 'user_tag': 'user-tag'}
+ _toPy = {'access': 'access', 'action': 'action', 'offer-url': 'offer_url', 'user-tag': 'user_tag'}
+ def __init__(self, access=None, action=None, offer_url=None, user_tag=None, **unknown_fields):
+ '''
+ access : str
+ action : str
+ offer_url : str
+ user_tag : str
+ '''
+ self.access = access
+ self.action = action
+ self.offer_url = offer_url
+ self.user_tag = user_tag
+
+
+
+class ModifyOfferAccessRequest(Type):
+ _toSchema = {'changes': 'changes'}
+ _toPy = {'changes': 'changes'}
+ def __init__(self, changes=None, **unknown_fields):
+ '''
+ changes : typing.Sequence[~ModifyOfferAccess]
+ '''
+ self.changes = [ModifyOfferAccess.from_json(o) for o in changes or []]
+
+
+
class ModifyUserSSHKeys(Type):
_toSchema = {'ssh_keys': 'ssh-keys', 'user': 'user'}
_toPy = {'ssh-keys': 'ssh_keys', 'user': 'user'}
def __init__(self, ssh_keys=None, user=None, **unknown_fields):
'''
- ssh_keys : typing.Sequence<+T_co>[str]
+ ssh_keys : typing.Sequence[str]
user : str
'''
self.ssh_keys = ssh_keys
_toPy = {'ha-members': 'ha_members', 'master': 'master', 'rs-members': 'rs_members'}
def __init__(self, ha_members=None, master=None, rs_members=None, **unknown_fields):
'''
- ha_members : typing.Sequence<+T_co>[~HAMember]<~HAMember>
+ ha_members : typing.Sequence[~HAMember]
master : HAMember
- rs_members : typing.Sequence<+T_co>[~Member]<~Member>
+ rs_members : typing.Sequence[~Member]
'''
self.ha_members = [HAMember.from_json(o) for o in ha_members or []]
self.master = HAMember.from_json(master) if master else None
config_type : str
device_index : int
disabled : bool
- dns_search_domains : typing.Sequence<+T_co>[str]
- dns_servers : typing.Sequence<+T_co>[str]
+ dns_search_domains : typing.Sequence[str]
+ dns_servers : typing.Sequence[str]
gateway_address : str
interface_name : str
interface_type : str
_toPy = {'addresses': 'addresses', 'interface-name': 'interface_name', 'mac-address': 'mac_address'}
def __init__(self, addresses=None, interface_name=None, mac_address=None, **unknown_fields):
'''
- addresses : typing.Sequence<+T_co>[~InterfaceAddress]<~InterfaceAddress>
+ addresses : typing.Sequence[~InterfaceAddress]
interface_name : str
mac_address : str
'''
_toPy = {'bindings': 'bindings', 'unit': 'unit'}
def __init__(self, bindings=None, unit=None, **unknown_fields):
'''
- bindings : typing.Sequence<+T_co>[str]
+ bindings : typing.Sequence[str]
unit : str
'''
self.bindings = bindings
def __init__(self, error=None, network_info=None, **unknown_fields):
'''
error : Error
- network_info : typing.Sequence<+T_co>[~NetworkInfo]<~NetworkInfo>
+ network_info : typing.Sequence[~NetworkInfo]
'''
self.error = Error.from_json(error) if error else None
self.network_info = [NetworkInfo.from_json(o) for o in network_info or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Mapping<~KT, +VT_co>[str, ~NetworkInfoResult]<~NetworkInfoResult>
+ results : typing.Mapping[str, ~NetworkInfoResult]
'''
self.results = results
_toPy = {'dns-nameservers': 'dns_nameservers', 'gateway': 'gateway', 'ip-addresses': 'ip_addresses', 'is-up': 'is_up', 'mac-address': 'mac_address', 'space': 'space'}
def __init__(self, dns_nameservers=None, gateway=None, ip_addresses=None, is_up=None, mac_address=None, space=None, **unknown_fields):
'''
- dns_nameservers : typing.Sequence<+T_co>[str]
+ dns_nameservers : typing.Sequence[str]
gateway : str
- ip_addresses : typing.Sequence<+T_co>[str]
+ ip_addresses : typing.Sequence[str]
is_up : bool
mac_address : str
space : str
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
+ results : typing.Sequence[~NotifyWatchResult]
'''
self.results = [NotifyWatchResult.from_json(o) for o in results or []]
+class OfferArg(Type):
+ _toSchema = {'macaroons': 'macaroons', 'offer_uuid': 'offer-uuid'}
+ _toPy = {'macaroons': 'macaroons', 'offer-uuid': 'offer_uuid'}
+ def __init__(self, macaroons=None, offer_uuid=None, **unknown_fields):
+ '''
+ macaroons : typing.Sequence[~Macaroon]
+ offer_uuid : str
+ '''
+ self.macaroons = [Macaroon.from_json(o) for o in macaroons or []]
+ self.offer_uuid = offer_uuid
+
+
+
+class OfferArgs(Type):
+ _toSchema = {'args': 'args'}
+ _toPy = {'args': 'args'}
+ def __init__(self, args=None, **unknown_fields):
+ '''
+ args : typing.Sequence[~OfferArg]
+ '''
+ self.args = [OfferArg.from_json(o) for o in args or []]
+
+
+
+class OfferConnection(Type):
+ _toSchema = {'endpoint': 'endpoint', 'ingress_subnets': 'ingress-subnets', 'relation_id': 'relation-id', 'source_model_tag': 'source-model-tag', 'status': 'status', 'username': 'username'}
+ _toPy = {'endpoint': 'endpoint', 'ingress-subnets': 'ingress_subnets', 'relation-id': 'relation_id', 'source-model-tag': 'source_model_tag', 'status': 'status', 'username': 'username'}
+ def __init__(self, endpoint=None, ingress_subnets=None, relation_id=None, source_model_tag=None, status=None, username=None, **unknown_fields):
+ '''
+ endpoint : str
+ ingress_subnets : typing.Sequence[str]
+ relation_id : int
+ source_model_tag : str
+ status : EntityStatus
+ username : str
+ '''
+ self.endpoint = endpoint
+ self.ingress_subnets = ingress_subnets
+ self.relation_id = relation_id
+ self.source_model_tag = source_model_tag
+ self.status = EntityStatus.from_json(status) if status else None
+ self.username = username
+
+
+
+class OfferFilter(Type):
+ _toSchema = {'allowed_users': 'allowed-users', 'application_description': 'application-description', 'application_name': 'application-name', 'application_user': 'application-user', 'connected_users': 'connected-users', 'endpoints': 'endpoints', 'model_name': 'model-name', 'offer_name': 'offer-name', 'owner_name': 'owner-name'}
+ _toPy = {'allowed-users': 'allowed_users', 'application-description': 'application_description', 'application-name': 'application_name', 'application-user': 'application_user', 'connected-users': 'connected_users', 'endpoints': 'endpoints', 'model-name': 'model_name', 'offer-name': 'offer_name', 'owner-name': 'owner_name'}
+ def __init__(self, allowed_users=None, application_description=None, application_name=None, application_user=None, connected_users=None, endpoints=None, model_name=None, offer_name=None, owner_name=None, **unknown_fields):
+ '''
+ allowed_users : typing.Sequence[str]
+ application_description : str
+ application_name : str
+ application_user : str
+ connected_users : typing.Sequence[str]
+ endpoints : typing.Sequence[~EndpointFilterAttributes]
+ model_name : str
+ offer_name : str
+ owner_name : str
+ '''
+ self.allowed_users = allowed_users
+ self.application_description = application_description
+ self.application_name = application_name
+ self.application_user = application_user
+ self.connected_users = connected_users
+ self.endpoints = [EndpointFilterAttributes.from_json(o) for o in endpoints or []]
+ self.model_name = model_name
+ self.offer_name = offer_name
+ self.owner_name = owner_name
+
+
+
+class OfferFilters(Type):
+ _toSchema = {'filters': 'Filters'}
+ _toPy = {'Filters': 'filters'}
+ def __init__(self, filters=None, **unknown_fields):
+ '''
+ filters : typing.Sequence[~OfferFilter]
+ '''
+ self.filters = [OfferFilter.from_json(o) for o in filters or []]
+
+
+
+class OfferStatusChange(Type):
+ _toSchema = {'offer_name': 'offer-name', 'status': 'status'}
+ _toPy = {'offer-name': 'offer_name', 'status': 'status'}
+ def __init__(self, offer_name=None, status=None, **unknown_fields):
+ '''
+ offer_name : str
+ status : EntityStatus
+ '''
+ self.offer_name = offer_name
+ self.status = EntityStatus.from_json(status) if status else None
+
+
+
+class OfferStatusWatchResult(Type):
+ _toSchema = {'changes': 'changes', 'error': 'error', 'watcher_id': 'watcher-id'}
+ _toPy = {'changes': 'changes', 'error': 'error', 'watcher-id': 'watcher_id'}
+ def __init__(self, changes=None, error=None, watcher_id=None, **unknown_fields):
+ '''
+ changes : typing.Sequence[~OfferStatusChange]
+ error : Error
+ watcher_id : str
+ '''
+ self.changes = [OfferStatusChange.from_json(o) for o in changes or []]
+ self.error = Error.from_json(error) if error else None
+ self.watcher_id = watcher_id
+
+
+
+class OfferStatusWatchResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~OfferStatusWatchResult]
+ '''
+ self.results = [OfferStatusWatchResult.from_json(o) for o in results or []]
+
+
+
+class OfferURLs(Type):
+ _toSchema = {'offer_urls': 'offer-urls'}
+ _toPy = {'offer-urls': 'offer_urls'}
+ def __init__(self, offer_urls=None, **unknown_fields):
+ '''
+ offer_urls : typing.Sequence[str]
+ '''
+ self.offer_urls = offer_urls
+
+
+
+class OfferUserDetails(Type):
+ _toSchema = {'access': 'access', 'display_name': 'display-name', 'user': 'user'}
+ _toPy = {'access': 'access', 'display-name': 'display_name', 'user': 'user'}
+ def __init__(self, access=None, display_name=None, user=None, **unknown_fields):
+ '''
+ access : str
+ display_name : str
+ user : str
+ '''
+ self.access = access
+ self.display_name = display_name
+ self.user = user
+
+
+
+class OperatorProvisioningInfo(Type):
+ _toSchema = {'api_addresses': 'api-addresses', 'charm_storage': 'charm-storage', 'image_path': 'image-path', 'tags': 'tags', 'version': 'version'}
+ _toPy = {'api-addresses': 'api_addresses', 'charm-storage': 'charm_storage', 'image-path': 'image_path', 'tags': 'tags', 'version': 'version'}
+ def __init__(self, api_addresses=None, charm_storage=None, image_path=None, tags=None, version=None, **unknown_fields):
+ '''
+ api_addresses : typing.Sequence[str]
+ charm_storage : KubernetesFilesystemParams
+ image_path : str
+ tags : typing.Mapping[str, str]
+ version : Number
+ '''
+ self.api_addresses = api_addresses
+ self.charm_storage = KubernetesFilesystemParams.from_json(charm_storage) if charm_storage else None
+ self.image_path = image_path
+ self.tags = tags
+ self.version = Number.from_json(version) if version else None
+
+
+
class Payload(Type):
_toSchema = {'class_': 'class', 'id_': 'id', 'labels': 'labels', 'machine': 'machine', 'status': 'status', 'type_': 'type', 'unit': 'unit'}
_toPy = {'class': 'class_', 'id': 'id_', 'labels': 'labels', 'machine': 'machine', 'status': 'status', 'type': 'type_', 'unit': 'unit'}
'''
class_ : str
id_ : str
- labels : typing.Sequence<+T_co>[str]
+ labels : typing.Sequence[str]
machine : str
status : str
type_ : str
_toPy = {'patterns': 'patterns'}
def __init__(self, patterns=None, **unknown_fields):
'''
- patterns : typing.Sequence<+T_co>[str]
+ patterns : typing.Sequence[str]
'''
self.patterns = patterns
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~Payload]<~Payload>
+ results : typing.Sequence[~Payload]
'''
self.results = [Payload.from_json(o) for o in results or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~PayloadResult]<~PayloadResult>
+ results : typing.Sequence[~PayloadResult]
'''
self.results = [PayloadResult.from_json(o) for o in results or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~PhaseResult]<~PhaseResult>
+ results : typing.Sequence[~PhaseResult]
'''
self.results = [PhaseResult.from_json(o) for o in results or []]
+class PinApplicationResult(Type):
+ _toSchema = {'application_name': 'application-name', 'error': 'error'}
+ _toPy = {'application-name': 'application_name', 'error': 'error'}
+ def __init__(self, application_name=None, error=None, **unknown_fields):
+ '''
+ application_name : str
+ error : Error
+ '''
+ self.application_name = application_name
+ self.error = Error.from_json(error) if error else None
+
+
+
+class PinApplicationsResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~PinApplicationResult]
+ '''
+ self.results = [PinApplicationResult.from_json(o) for o in results or []]
+
+
+
+class PinnedLeadershipResult(Type):
+ _toSchema = {'result': 'result'}
+ _toPy = {'result': 'result'}
+ def __init__(self, result=None, **unknown_fields):
+ '''
+ result : typing.Sequence[str]
+ '''
+ self.result = result
+
+
+
class Placement(Type):
_toSchema = {'directive': 'directive', 'scope': 'scope'}
_toPy = {'directive': 'directive', 'scope': 'scope'}
+class ProfileChangeResult(Type):
+ _toSchema = {'error': 'error', 'new_profile_name': 'new-profile-name', 'old_profile_name': 'old-profile-name', 'profile': 'profile', 'subordinate': 'subordinate'}
+ _toPy = {'error': 'error', 'new-profile-name': 'new_profile_name', 'old-profile-name': 'old_profile_name', 'profile': 'profile', 'subordinate': 'subordinate'}
+ def __init__(self, error=None, new_profile_name=None, old_profile_name=None, profile=None, subordinate=None, **unknown_fields):
+ '''
+ error : Error
+ new_profile_name : str
+ old_profile_name : str
+ profile : CharmLXDProfile
+ subordinate : bool
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.new_profile_name = new_profile_name
+ self.old_profile_name = old_profile_name
+ self.profile = CharmLXDProfile.from_json(profile) if profile else None
+ self.subordinate = subordinate
+
+
+
+class ProfileChangeResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~ProfileChangeResult]
+ '''
+ self.results = [ProfileChangeResult.from_json(o) for o in results or []]
+
+
+
class ProviderInterfaceInfo(Type):
_toSchema = {'interface_name': 'interface-name', 'mac_address': 'mac-address', 'provider_id': 'provider-id'}
_toPy = {'interface-name': 'interface_name', 'mac-address': 'mac_address', 'provider-id': 'provider_id'}
def __init__(self, error=None, interfaces=None, machine_tag=None, **unknown_fields):
'''
error : Error
- interfaces : typing.Sequence<+T_co>[~ProviderInterfaceInfo]<~ProviderInterfaceInfo>
+ interfaces : typing.Sequence[~ProviderInterfaceInfo]
machine_tag : str
'''
self.error = Error.from_json(error) if error else None
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ProviderInterfaceInfoResult]<~ProviderInterfaceInfoResult>
+ results : typing.Sequence[~ProviderInterfaceInfoResult]
'''
self.results = [ProviderInterfaceInfoResult.from_json(o) for o in results or []]
error : Error
name : str
provider_id : str
- subnets : typing.Sequence<+T_co>[~Subnet]<~Subnet>
+ subnets : typing.Sequence[~Subnet]
'''
self.error = Error.from_json(error) if error else None
self.name = name
def __init__(self, constraints=None, controller_config=None, endpoint_bindings=None, image_metadata=None, jobs=None, placement=None, series=None, subnets_to_zones=None, tags=None, volumes=None, **unknown_fields):
'''
constraints : Value
- controller_config : typing.Mapping<~KT, +VT_co>[str, typing.Any]
- endpoint_bindings : typing.Mapping<~KT, +VT_co>[str, str]
- image_metadata : typing.Sequence<+T_co>[~CloudImageMetadata]<~CloudImageMetadata>
- jobs : typing.Sequence<+T_co>[str]
+ controller_config : typing.Mapping[str, typing.Any]
+ endpoint_bindings : typing.Mapping[str, str]
+ image_metadata : typing.Sequence[~CloudImageMetadata]
+ jobs : typing.Sequence[str]
placement : str
series : str
- subnets_to_zones : typing.Sequence<+T_co>[str]
- tags : typing.Mapping<~KT, +VT_co>[str, str]
- volumes : typing.Sequence<+T_co>[~VolumeParams]<~VolumeParams>
+ subnets_to_zones : typing.Sequence[str]
+ tags : typing.Mapping[str, str]
+ volumes : typing.Sequence[~VolumeParams]
'''
self.constraints = Value.from_json(constraints) if constraints else None
self.controller_config = controller_config
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ProvisioningInfoResult]<~ProvisioningInfoResult>
+ results : typing.Sequence[~ProvisioningInfoResult]
'''
self.results = [ProvisioningInfoResult.from_json(o) for o in results or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ProxyConfigResult]<~ProxyConfigResult>
+ results : typing.Sequence[~ProxyConfigResult]
'''
self.results = [ProxyConfigResult.from_json(o) for o in results or []]
+class QueryApplicationOffersResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~ApplicationOfferAdminDetails]
+ '''
+ self.results = [ApplicationOfferAdminDetails.from_json(o) for o in results or []]
+
+
+
class RebootActionResult(Type):
_toSchema = {'error': 'error', 'result': 'result'}
_toPy = {'error': 'error', 'result': 'result'}
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~RebootActionResult]<~RebootActionResult>
+ results : typing.Sequence[~RebootActionResult]
'''
self.results = [RebootActionResult.from_json(o) for o in results or []]
def __init__(self, region_name=None, value=None, **unknown_fields):
'''
region_name : str
- value : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ value : typing.Mapping[str, typing.Any]
'''
self.region_name = region_name
self.value = value
+class RegisterRemoteRelationArg(Type):
+ _toSchema = {'application_token': 'application-token', 'local_endpoint_name': 'local-endpoint-name', 'macaroons': 'macaroons', 'offer_uuid': 'offer-uuid', 'relation_token': 'relation-token', 'remote_endpoint': 'remote-endpoint', 'remote_space': 'remote-space', 'source_model_tag': 'source-model-tag'}
+ _toPy = {'application-token': 'application_token', 'local-endpoint-name': 'local_endpoint_name', 'macaroons': 'macaroons', 'offer-uuid': 'offer_uuid', 'relation-token': 'relation_token', 'remote-endpoint': 'remote_endpoint', 'remote-space': 'remote_space', 'source-model-tag': 'source_model_tag'}
+ def __init__(self, application_token=None, local_endpoint_name=None, macaroons=None, offer_uuid=None, relation_token=None, remote_endpoint=None, remote_space=None, source_model_tag=None, **unknown_fields):
+ '''
+ application_token : str
+ local_endpoint_name : str
+ macaroons : typing.Sequence[~Macaroon]
+ offer_uuid : str
+ relation_token : str
+ remote_endpoint : RemoteEndpoint
+ remote_space : RemoteSpace
+ source_model_tag : str
+ '''
+ self.application_token = application_token
+ self.local_endpoint_name = local_endpoint_name
+ self.macaroons = [Macaroon.from_json(o) for o in macaroons or []]
+ self.offer_uuid = offer_uuid
+ self.relation_token = relation_token
+ self.remote_endpoint = RemoteEndpoint.from_json(remote_endpoint) if remote_endpoint else None
+ self.remote_space = RemoteSpace.from_json(remote_space) if remote_space else None
+ self.source_model_tag = source_model_tag
+
+
+
+class RegisterRemoteRelationArgs(Type):
+ _toSchema = {'relations': 'relations'}
+ _toPy = {'relations': 'relations'}
+ def __init__(self, relations=None, **unknown_fields):
+ '''
+ relations : typing.Sequence[~RegisterRemoteRelationArg]
+ '''
+ self.relations = [RegisterRemoteRelationArg.from_json(o) for o in relations or []]
+
+
+
+class RegisterRemoteRelationResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : RemoteRelationDetails
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = RemoteRelationDetails.from_json(result) if result else None
+
+
+
+class RegisterRemoteRelationResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~RegisterRemoteRelationResult]
+ '''
+ self.results = [RegisterRemoteRelationResult.from_json(o) for o in results or []]
+
+
+
class RelationChange(Type):
_toSchema = {'changedunits': 'changedunits', 'departedunits': 'departedunits', 'id_': 'id', 'life': 'life'}
_toPy = {'changedunits': 'changedunits', 'departedunits': 'departedunits', 'id': 'id_', 'life': 'life'}
def __init__(self, changedunits=None, departedunits=None, id_=None, life=None, **unknown_fields):
'''
- changedunits : typing.Mapping<~KT, +VT_co>[str, ~RelationUnitChange]<~RelationUnitChange>
- departedunits : typing.Sequence<+T_co>[str]
+ changedunits : typing.Mapping[str, ~RelationUnitChange]
+ departedunits : typing.Sequence[str]
id_ : int
life : str
'''
_toPy = {'relation-ids': 'relation_ids'}
def __init__(self, relation_ids=None, **unknown_fields):
'''
- relation_ids : typing.Sequence<+T_co>[int]
+ relation_ids : typing.Sequence[int]
'''
self.relation_ids = relation_ids
+class RelationLifeSuspendedStatusChange(Type):
+ _toSchema = {'key': 'key', 'life': 'life', 'suspended': 'suspended', 'suspended_reason': 'suspended-reason'}
+ _toPy = {'key': 'key', 'life': 'life', 'suspended': 'suspended', 'suspended-reason': 'suspended_reason'}
+ def __init__(self, key=None, life=None, suspended=None, suspended_reason=None, **unknown_fields):
+ '''
+ key : str
+ life : str
+ suspended : bool
+ suspended_reason : str
+ '''
+ self.key = key
+ self.life = life
+ self.suspended = suspended
+ self.suspended_reason = suspended_reason
+
+
+
+class RelationLifeSuspendedStatusWatchResult(Type):
+ _toSchema = {'changes': 'changes', 'error': 'error', 'watcher_id': 'watcher-id'}
+ _toPy = {'changes': 'changes', 'error': 'error', 'watcher-id': 'watcher_id'}
+ def __init__(self, changes=None, error=None, watcher_id=None, **unknown_fields):
+ '''
+ changes : typing.Sequence[~RelationLifeSuspendedStatusChange]
+ error : Error
+ watcher_id : str
+ '''
+ self.changes = [RelationLifeSuspendedStatusChange.from_json(o) for o in changes or []]
+ self.error = Error.from_json(error) if error else None
+ self.watcher_id = watcher_id
+
+
+
class RelationResult(Type):
_toSchema = {'endpoint': 'endpoint', 'error': 'error', 'id_': 'id', 'key': 'key', 'life': 'life'}
_toPy = {'endpoint': 'endpoint', 'error': 'error', 'id': 'id_', 'key': 'key', 'life': 'life'}
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~RelationResult]<~RelationResult>
+ results : typing.Sequence[~RelationResult]
'''
self.results = [RelationResult.from_json(o) for o in results or []]
_toPy = {'endpoints': 'endpoints', 'id': 'id_', 'interface': 'interface', 'key': 'key', 'scope': 'scope'}
def __init__(self, endpoints=None, id_=None, interface=None, key=None, scope=None, **unknown_fields):
'''
- endpoints : typing.Sequence<+T_co>[~EndpointStatus]<~EndpointStatus>
+ endpoints : typing.Sequence[~EndpointStatus]
id_ : int
interface : str
key : str
+class RelationStatusArg(Type):
+ _toSchema = {'message': 'message', 'relation_id': 'relation-id', 'status': 'status', 'unit_tag': 'unit-tag'}
+ _toPy = {'message': 'message', 'relation-id': 'relation_id', 'status': 'status', 'unit-tag': 'unit_tag'}
+ def __init__(self, message=None, relation_id=None, status=None, unit_tag=None, **unknown_fields):
+ '''
+ message : str
+ relation_id : int
+ status : str
+ unit_tag : str
+ '''
+ self.message = message
+ self.relation_id = relation_id
+ self.status = status
+ self.unit_tag = unit_tag
+
+
+
+class RelationStatusArgs(Type):
+ _toSchema = {'args': 'args'}
+ _toPy = {'args': 'args'}
+ def __init__(self, args=None, **unknown_fields):
+ '''
+ args : typing.Sequence[~RelationStatusArg]
+ '''
+ self.args = [RelationStatusArg.from_json(o) for o in args or []]
+
+
+
+class RelationStatusWatchResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~RelationLifeSuspendedStatusWatchResult]
+ '''
+ self.results = [RelationLifeSuspendedStatusWatchResult.from_json(o) for o in results or []]
+
+
+
+class RelationSuspendedArg(Type):
+ _toSchema = {'message': 'message', 'relation_id': 'relation-id', 'suspended': 'suspended'}
+ _toPy = {'message': 'message', 'relation-id': 'relation_id', 'suspended': 'suspended'}
+ def __init__(self, message=None, relation_id=None, suspended=None, **unknown_fields):
+ '''
+ message : str
+ relation_id : int
+ suspended : bool
+ '''
+ self.message = message
+ self.relation_id = relation_id
+ self.suspended = suspended
+
+
+
+class RelationSuspendedArgs(Type):
+ _toSchema = {'args': 'args'}
+ _toPy = {'args': 'args'}
+ def __init__(self, args=None, **unknown_fields):
+ '''
+ args : typing.Sequence[~RelationSuspendedArg]
+ '''
+ self.args = [RelationSuspendedArg.from_json(o) for o in args or []]
+
+
+
class RelationUnit(Type):
_toSchema = {'relation': 'relation', 'unit': 'unit'}
_toPy = {'relation': 'relation', 'unit': 'unit'}
_toPy = {'settings': 'settings'}
def __init__(self, settings=None, **unknown_fields):
'''
- settings : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ settings : typing.Mapping[str, typing.Any]
'''
self.settings = settings
_toPy = {'relation-unit-pairs': 'relation_unit_pairs'}
def __init__(self, relation_unit_pairs=None, **unknown_fields):
'''
- relation_unit_pairs : typing.Sequence<+T_co>[~RelationUnitPair]<~RelationUnitPair>
+ relation_unit_pairs : typing.Sequence[~RelationUnitPair]
'''
self.relation_unit_pairs = [RelationUnitPair.from_json(o) for o in relation_unit_pairs or []]
def __init__(self, relation=None, settings=None, unit=None, **unknown_fields):
'''
relation : str
- settings : typing.Mapping<~KT, +VT_co>[str, str]
+ settings : typing.Mapping[str, str]
unit : str
'''
self.relation = relation
+class RelationUnitStatus(Type):
+ _toSchema = {'in_scope': 'in-scope', 'relation_tag': 'relation-tag', 'suspended': 'suspended'}
+ _toPy = {'in-scope': 'in_scope', 'relation-tag': 'relation_tag', 'suspended': 'suspended'}
+ def __init__(self, in_scope=None, relation_tag=None, suspended=None, **unknown_fields):
+ '''
+ in_scope : bool
+ relation_tag : str
+ suspended : bool
+ '''
+ self.in_scope = in_scope
+ self.relation_tag = relation_tag
+ self.suspended = suspended
+
+
+
+class RelationUnitStatusResult(Type):
+ _toSchema = {'error': 'error', 'results': 'results'}
+ _toPy = {'error': 'error', 'results': 'results'}
+ def __init__(self, error=None, results=None, **unknown_fields):
+ '''
+ error : Error
+ results : typing.Sequence[~RelationUnitStatus]
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.results = [RelationUnitStatus.from_json(o) for o in results or []]
+
+
+
+class RelationUnitStatusResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~RelationUnitStatusResult]
+ '''
+ self.results = [RelationUnitStatusResult.from_json(o) for o in results or []]
+
+
+
class RelationUnits(Type):
_toSchema = {'relation_units': 'relation-units'}
_toPy = {'relation-units': 'relation_units'}
def __init__(self, relation_units=None, **unknown_fields):
'''
- relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit>
+ relation_units : typing.Sequence[~RelationUnit]
'''
self.relation_units = [RelationUnit.from_json(o) for o in relation_units or []]
_toPy = {'changed': 'changed', 'departed': 'departed'}
def __init__(self, changed=None, departed=None, **unknown_fields):
'''
- changed : typing.Mapping<~KT, +VT_co>[str, ~UnitSettings]<~UnitSettings>
- departed : typing.Sequence<+T_co>[str]
+ changed : typing.Mapping[str, ~UnitSettings]
+ departed : typing.Sequence[str]
'''
self.changed = changed
self.departed = departed
_toPy = {'relation-units': 'relation_units'}
def __init__(self, relation_units=None, **unknown_fields):
'''
- relation_units : typing.Sequence<+T_co>[~RelationUnitSettings]<~RelationUnitSettings>
+ relation_units : typing.Sequence[~RelationUnitSettings]
'''
self.relation_units = [RelationUnitSettings.from_json(o) for o in relation_units or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~RelationUnitsWatchResult]<~RelationUnitsWatchResult>
+ results : typing.Sequence[~RelationUnitsWatchResult]
'''
self.results = [RelationUnitsWatchResult.from_json(o) for o in results or []]
+class RemoteApplication(Type):
+ _toSchema = {'is_consumer_proxy': 'is-consumer-proxy', 'life': 'life', 'macaroon': 'macaroon', 'model_uuid': 'model-uuid', 'name': 'name', 'offer_uuid': 'offer-uuid', 'status': 'status'}
+ _toPy = {'is-consumer-proxy': 'is_consumer_proxy', 'life': 'life', 'macaroon': 'macaroon', 'model-uuid': 'model_uuid', 'name': 'name', 'offer-uuid': 'offer_uuid', 'status': 'status'}
+ def __init__(self, is_consumer_proxy=None, life=None, macaroon=None, model_uuid=None, name=None, offer_uuid=None, status=None, **unknown_fields):
+ '''
+ is_consumer_proxy : bool
+ life : str
+ macaroon : Macaroon
+ model_uuid : str
+ name : str
+ offer_uuid : str
+ status : str
+ '''
+ self.is_consumer_proxy = is_consumer_proxy
+ self.life = life
+ self.macaroon = Macaroon.from_json(macaroon) if macaroon else None
+ self.model_uuid = model_uuid
+ self.name = name
+ self.offer_uuid = offer_uuid
+ self.status = status
+
+
+
class RemoteApplicationChange(Type):
_toSchema = {'application_tag': 'application-tag', 'life': 'life', 'relations': 'relations'}
_toPy = {'application-tag': 'application_tag', 'life': 'life', 'relations': 'relations'}
'''
application_url : str
description : str
- endpoints : typing.Sequence<+T_co>[~RemoteEndpoint]<~RemoteEndpoint>
+ endpoints : typing.Sequence[~RemoteEndpoint]
icon_url_path : str
model_tag : str
name : str
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~RemoteApplicationInfoResult]<~RemoteApplicationInfoResult>
+ results : typing.Sequence[~RemoteApplicationInfoResult]
'''
self.results = [RemoteApplicationInfoResult.from_json(o) for o in results or []]
+class RemoteApplicationResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : RemoteApplication
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = RemoteApplication.from_json(result) if result else None
+
+
+
+class RemoteApplicationResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~RemoteApplicationResult]
+ '''
+ self.results = [RemoteApplicationResult.from_json(o) for o in results or []]
+
+
+
class RemoteApplicationStatus(Type):
_toSchema = {'application_name': 'application-name', 'application_url': 'application-url', 'endpoints': 'endpoints', 'err': 'err', 'life': 'life', 'relations': 'relations', 'status': 'status'}
_toPy = {'application-name': 'application_name', 'application-url': 'application_url', 'endpoints': 'endpoints', 'err': 'err', 'life': 'life', 'relations': 'relations', 'status': 'status'}
'''
application_name : str
application_url : str
- endpoints : typing.Sequence<+T_co>[~RemoteEndpoint]<~RemoteEndpoint>
- err : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ endpoints : typing.Sequence[~RemoteEndpoint]
+ err : typing.Mapping[str, typing.Any]
life : str
- relations : typing.Sequence<+T_co>[str]
+ relations : typing.Sequence[str]
status : DetailedStatus
'''
self.application_name = application_name
+class RemoteEntityArg(Type):
+ _toSchema = {'macaroons': 'macaroons', 'relation_token': 'relation-token'}
+ _toPy = {'macaroons': 'macaroons', 'relation-token': 'relation_token'}
+ def __init__(self, macaroons=None, relation_token=None, **unknown_fields):
+ '''
+ macaroons : typing.Sequence[~Macaroon]
+ relation_token : str
+ '''
+ self.macaroons = [Macaroon.from_json(o) for o in macaroons or []]
+ self.relation_token = relation_token
+
+
+
+class RemoteEntityArgs(Type):
+ _toSchema = {'args': 'args'}
+ _toPy = {'args': 'args'}
+ def __init__(self, args=None, **unknown_fields):
+ '''
+ args : typing.Sequence[~RemoteEntityArg]
+ '''
+ self.args = [RemoteEntityArg.from_json(o) for o in args or []]
+
+
+
class RemoteEntityId(Type):
_toSchema = {'model_uuid': 'model-uuid', 'token': 'token'}
_toPy = {'model-uuid': 'model_uuid', 'token': 'token'}
+class RemoteEntityTokenArg(Type):
+ _toSchema = {'tag': 'tag', 'token': 'token'}
+ _toPy = {'tag': 'tag', 'token': 'token'}
+ def __init__(self, tag=None, token=None, **unknown_fields):
+ '''
+ tag : str
+ token : str
+ '''
+ self.tag = tag
+ self.token = token
+
+
+
+class RemoteEntityTokenArgs(Type):
+ _toSchema = {'args': 'Args'}
+ _toPy = {'Args': 'args'}
+ def __init__(self, args=None, **unknown_fields):
+ '''
+ args : typing.Sequence[~RemoteEntityTokenArg]
+ '''
+ self.args = [RemoteEntityTokenArg.from_json(o) for o in args or []]
+
+
+
+class RemoteRelation(Type):
+ _toSchema = {'application_name': 'application-name', 'endpoint': 'endpoint', 'id_': 'id', 'key': 'key', 'life': 'life', 'remote_application_name': 'remote-application-name', 'remote_endpoint_name': 'remote-endpoint-name', 'source_model_uuid': 'source-model-uuid', 'suspended': 'suspended'}
+ _toPy = {'application-name': 'application_name', 'endpoint': 'endpoint', 'id': 'id_', 'key': 'key', 'life': 'life', 'remote-application-name': 'remote_application_name', 'remote-endpoint-name': 'remote_endpoint_name', 'source-model-uuid': 'source_model_uuid', 'suspended': 'suspended'}
+ def __init__(self, application_name=None, endpoint=None, id_=None, key=None, life=None, remote_application_name=None, remote_endpoint_name=None, source_model_uuid=None, suspended=None, **unknown_fields):
+ '''
+ application_name : str
+ endpoint : RemoteEndpoint
+ id_ : int
+ key : str
+ life : str
+ remote_application_name : str
+ remote_endpoint_name : str
+ source_model_uuid : str
+ suspended : bool
+ '''
+ self.application_name = application_name
+ self.endpoint = RemoteEndpoint.from_json(endpoint) if endpoint else None
+ self.id_ = id_
+ self.key = key
+ self.life = life
+ self.remote_application_name = remote_application_name
+ self.remote_endpoint_name = remote_endpoint_name
+ self.source_model_uuid = source_model_uuid
+ self.suspended = suspended
+
+
+
class RemoteRelationChange(Type):
_toSchema = {'changed_units': 'changed-units', 'departed_units': 'departed-units', 'id_': 'id', 'life': 'life'}
_toPy = {'changed-units': 'changed_units', 'departed-units': 'departed_units', 'id': 'id_', 'life': 'life'}
def __init__(self, changed_units=None, departed_units=None, id_=None, life=None, **unknown_fields):
'''
- changed_units : typing.Mapping<~KT, +VT_co>[str, ~RemoteRelationUnitChange]<~RemoteRelationUnitChange>
- departed_units : typing.Sequence<+T_co>[str]
+ changed_units : typing.Mapping[str, ~RemoteRelationUnitChange]
+ departed_units : typing.Sequence[str]
id_ : int
life : str
'''
+class RemoteRelationChangeEvent(Type):
+ _toSchema = {'application_token': 'application-token', 'changed_units': 'changed-units', 'departed_units': 'departed-units', 'force_cleanup': 'force-cleanup', 'life': 'life', 'macaroons': 'macaroons', 'relation_token': 'relation-token', 'suspended': 'suspended', 'suspended_reason': 'suspended-reason'}
+ _toPy = {'application-token': 'application_token', 'changed-units': 'changed_units', 'departed-units': 'departed_units', 'force-cleanup': 'force_cleanup', 'life': 'life', 'macaroons': 'macaroons', 'relation-token': 'relation_token', 'suspended': 'suspended', 'suspended-reason': 'suspended_reason'}
+ def __init__(self, application_token=None, changed_units=None, departed_units=None, force_cleanup=None, life=None, macaroons=None, relation_token=None, suspended=None, suspended_reason=None, **unknown_fields):
+ '''
+ application_token : str
+ changed_units : typing.Sequence[~RemoteRelationUnitChange]
+ departed_units : typing.Sequence[int]
+ force_cleanup : bool
+ life : str
+ macaroons : typing.Sequence[~Macaroon]
+ relation_token : str
+ suspended : bool
+ suspended_reason : str
+ '''
+ self.application_token = application_token
+ self.changed_units = [RemoteRelationUnitChange.from_json(o) for o in changed_units or []]
+ self.departed_units = departed_units
+ self.force_cleanup = force_cleanup
+ self.life = life
+ self.macaroons = [Macaroon.from_json(o) for o in macaroons or []]
+ self.relation_token = relation_token
+ self.suspended = suspended
+ self.suspended_reason = suspended_reason
+
+
+
+class RemoteRelationDetails(Type):
+ _toSchema = {'macaroon': 'macaroon', 'relation_token': 'relation-token'}
+ _toPy = {'macaroon': 'macaroon', 'relation-token': 'relation_token'}
+ def __init__(self, macaroon=None, relation_token=None, **unknown_fields):
+ '''
+ macaroon : Macaroon
+ relation_token : str
+ '''
+ self.macaroon = Macaroon.from_json(macaroon) if macaroon else None
+ self.relation_token = relation_token
+
+
+
+class RemoteRelationResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : RemoteRelation
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = RemoteRelation.from_json(result) if result else None
+
+
+
+class RemoteRelationResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~RemoteRelationResult]
+ '''
+ self.results = [RemoteRelationResult.from_json(o) for o in results or []]
+
+
+
+class RemoteRelationUnit(Type):
+ _toSchema = {'macaroons': 'macaroons', 'relation_token': 'relation-token', 'unit': 'unit'}
+ _toPy = {'macaroons': 'macaroons', 'relation-token': 'relation_token', 'unit': 'unit'}
+ def __init__(self, macaroons=None, relation_token=None, unit=None, **unknown_fields):
+ '''
+ macaroons : typing.Sequence[~Macaroon]
+ relation_token : str
+ unit : str
+ '''
+ self.macaroons = [Macaroon.from_json(o) for o in macaroons or []]
+ self.relation_token = relation_token
+ self.unit = unit
+
+
+
class RemoteRelationUnitChange(Type):
_toSchema = {'settings': 'settings', 'unit_id': 'unit-id'}
_toPy = {'settings': 'settings', 'unit-id': 'unit_id'}
def __init__(self, settings=None, unit_id=None, **unknown_fields):
'''
- settings : typing.Mapping<~KT, +VT_co>[str, typing.Any]
- unit_id : RemoteEntityId
+ settings : typing.Mapping[str, typing.Any]
+ unit_id : RemoteEntityId
+ '''
+ self.settings = settings
+ self.unit_id = RemoteEntityId.from_json(unit_id) if unit_id else None
+
+
+
+class RemoteRelationUnits(Type):
+ _toSchema = {'relation_units': 'relation-units'}
+ _toPy = {'relation-units': 'relation_units'}
+ def __init__(self, relation_units=None, **unknown_fields):
+ '''
+ relation_units : typing.Sequence[~RemoteRelationUnit]
'''
- self.settings = settings
- self.unit_id = RemoteEntityId.from_json(unit_id) if unit_id else None
+ self.relation_units = [RemoteRelationUnit.from_json(o) for o in relation_units or []]
_toPy = {'changed': 'changed', 'initial': 'initial', 'removed': 'removed'}
def __init__(self, changed=None, initial=None, removed=None, **unknown_fields):
'''
- changed : typing.Sequence<+T_co>[~RemoteRelationChange]<~RemoteRelationChange>
+ changed : typing.Sequence[~RemoteRelationChange]
initial : bool
- removed : typing.Sequence<+T_co>[int]
+ removed : typing.Sequence[int]
'''
self.changed = [RemoteRelationChange.from_json(o) for o in changed or []]
self.initial = initial
+class RemoteRelationsChanges(Type):
+ _toSchema = {'changes': 'changes'}
+ _toPy = {'changes': 'changes'}
+ def __init__(self, changes=None, **unknown_fields):
+ '''
+ changes : typing.Sequence[~RemoteRelationChangeEvent]
+ '''
+ self.changes = [RemoteRelationChangeEvent.from_json(o) for o in changes or []]
+
+
+
class RemoteRelationsWatchResult(Type):
_toSchema = {'change': 'change', 'error': 'error', 'remoterelationswatcherid': 'RemoteRelationsWatcherId'}
_toPy = {'RemoteRelationsWatcherId': 'remoterelationswatcherid', 'change': 'change', 'error': 'error'}
'''
cloud_type : str
name : str
- provider_attributes : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ provider_attributes : typing.Mapping[str, typing.Any]
provider_id : str
- subnets : typing.Sequence<+T_co>[~Subnet]<~Subnet>
+ subnets : typing.Sequence[~Subnet]
'''
self.cloud_type = cloud_type
self.name = name
+class RemoveFilesystemParams(Type):
+ _toSchema = {'destroy': 'destroy', 'filesystem_id': 'filesystem-id', 'provider': 'provider'}
+ _toPy = {'destroy': 'destroy', 'filesystem-id': 'filesystem_id', 'provider': 'provider'}
+ def __init__(self, destroy=None, filesystem_id=None, provider=None, **unknown_fields):
+ '''
+ destroy : bool
+ filesystem_id : str
+ provider : str
+ '''
+ self.destroy = destroy
+ self.filesystem_id = filesystem_id
+ self.provider = provider
+
+
+
+class RemoveFilesystemParamsResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : RemoveFilesystemParams
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = RemoveFilesystemParams.from_json(result) if result else None
+
+
+
+class RemoveFilesystemParamsResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~RemoveFilesystemParamsResult]
+ '''
+ self.results = [RemoveFilesystemParamsResult.from_json(o) for o in results or []]
+
+
+
+class RemoveStorage(Type):
+ _toSchema = {'storage': 'storage'}
+ _toPy = {'storage': 'storage'}
+ def __init__(self, storage=None, **unknown_fields):
+ '''
+ storage : typing.Sequence[~RemoveStorageInstance]
+ '''
+ self.storage = [RemoveStorageInstance.from_json(o) for o in storage or []]
+
+
+
+class RemoveStorageInstance(Type):
+ _toSchema = {'destroy_attachments': 'destroy-attachments', 'destroy_storage': 'destroy-storage', 'tag': 'tag'}
+ _toPy = {'destroy-attachments': 'destroy_attachments', 'destroy-storage': 'destroy_storage', 'tag': 'tag'}
+ def __init__(self, destroy_attachments=None, destroy_storage=None, tag=None, **unknown_fields):
+ '''
+ destroy_attachments : bool
+ destroy_storage : bool
+ tag : str
+ '''
+ self.destroy_attachments = destroy_attachments
+ self.destroy_storage = destroy_storage
+ self.tag = tag
+
+
+
+class RemoveVolumeParams(Type):
+ _toSchema = {'destroy': 'destroy', 'provider': 'provider', 'volume_id': 'volume-id'}
+ _toPy = {'destroy': 'destroy', 'provider': 'provider', 'volume-id': 'volume_id'}
+ def __init__(self, destroy=None, provider=None, volume_id=None, **unknown_fields):
+ '''
+ destroy : bool
+ provider : str
+ volume_id : str
+ '''
+ self.destroy = destroy
+ self.provider = provider
+ self.volume_id = volume_id
+
+
+
+class RemoveVolumeParamsResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : RemoveVolumeParams
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = RemoveVolumeParams.from_json(result) if result else None
+
+
+
+class RemoveVolumeParamsResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~RemoveVolumeParamsResult]
+ '''
+ self.results = [RemoveVolumeParamsResult.from_json(o) for o in results or []]
+
+
+
class ResolveCharmResult(Type):
_toSchema = {'error': 'error', 'url': 'url'}
_toPy = {'error': 'error', 'url': 'url'}
_toPy = {'urls': 'urls'}
def __init__(self, urls=None, **unknown_fields):
'''
- urls : typing.Sequence<+T_co>[~ResolveCharmResult]<~ResolveCharmResult>
+ urls : typing.Sequence[~ResolveCharmResult]
'''
self.urls = [ResolveCharmResult.from_json(o) for o in urls or []]
_toPy = {'references': 'references'}
def __init__(self, references=None, **unknown_fields):
'''
- references : typing.Sequence<+T_co>[str]
+ references : typing.Sequence[str]
'''
self.references = references
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ResolvedModeResult]<~ResolvedModeResult>
+ results : typing.Sequence[~ResolvedModeResult]
'''
self.results = [ResolvedModeResult.from_json(o) for o in results or []]
def __init__(self, errorresult=None, charm_store_resources=None, resources=None, unit_resources=None, **unknown_fields):
'''
errorresult : ErrorResult
- charm_store_resources : typing.Sequence<+T_co>[~CharmResource]<~CharmResource>
- resources : typing.Sequence<+T_co>[~Resource]<~Resource>
- unit_resources : typing.Sequence<+T_co>[~UnitResources]<~UnitResources>
+ charm_store_resources : typing.Sequence[~CharmResource]
+ resources : typing.Sequence[~Resource]
+ unit_resources : typing.Sequence[~UnitResources]
'''
self.errorresult = ErrorResult.from_json(errorresult) if errorresult else None
self.charm_store_resources = [CharmResource.from_json(o) for o in charm_store_resources or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ResourcesResult]<~ResourcesResult>
+ results : typing.Sequence[~ResourcesResult]
'''
self.results = [ResourcesResult.from_json(o) for o in results or []]
_toPy = {'members': 'members'}
def __init__(self, members=None, **unknown_fields):
'''
- members : typing.Sequence<+T_co>[~Member]<~Member>
+ members : typing.Sequence[~Member]
'''
self.members = [Member.from_json(o) for o in members or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~RetryStrategyResult]<~RetryStrategyResult>
+ results : typing.Sequence[~RetryStrategyResult]
'''
self.results = [RetryStrategyResult.from_json(o) for o in results or []]
+class RevokeCredentialArg(Type):
+ _toSchema = {'force': 'force', 'tag': 'tag'}
+ _toPy = {'force': 'force', 'tag': 'tag'}
+ def __init__(self, force=None, tag=None, **unknown_fields):
+ '''
+ force : bool
+ tag : str
+ '''
+ self.force = force
+ self.tag = tag
+
+
+
+class RevokeCredentialArgs(Type):
+ _toSchema = {'credentials': 'credentials'}
+ _toPy = {'credentials': 'credentials'}
+ def __init__(self, credentials=None, **unknown_fields):
+ '''
+ credentials : typing.Sequence[~RevokeCredentialArg]
+ '''
+ self.credentials = [RevokeCredentialArg.from_json(o) for o in credentials or []]
+
+
+
class RunParams(Type):
_toSchema = {'applications': 'applications', 'commands': 'commands', 'machines': 'machines', 'timeout': 'timeout', 'units': 'units'}
_toPy = {'applications': 'applications', 'commands': 'commands', 'machines': 'machines', 'timeout': 'timeout', 'units': 'units'}
def __init__(self, applications=None, commands=None, machines=None, timeout=None, units=None, **unknown_fields):
'''
- applications : typing.Sequence<+T_co>[str]
+ applications : typing.Sequence[str]
commands : str
- machines : typing.Sequence<+T_co>[str]
+ machines : typing.Sequence[str]
timeout : int
- units : typing.Sequence<+T_co>[str]
+ units : typing.Sequence[str]
'''
self.applications = applications
self.commands = commands
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~SSHAddressResult]<~SSHAddressResult>
+ results : typing.Sequence[~SSHAddressResult]
'''
self.results = [SSHAddressResult.from_json(o) for o in results or []]
_toPy = {'addresses': 'addresses', 'error': 'error'}
def __init__(self, addresses=None, error=None, **unknown_fields):
'''
- addresses : typing.Sequence<+T_co>[str]
+ addresses : typing.Sequence[str]
error : Error
'''
self.addresses = addresses
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~SSHAddressesResult]<~SSHAddressesResult>
+ results : typing.Sequence[~SSHAddressesResult]
'''
self.results = [SSHAddressesResult.from_json(o) for o in results or []]
_toPy = {'entity-keys': 'entity_keys'}
def __init__(self, entity_keys=None, **unknown_fields):
'''
- entity_keys : typing.Sequence<+T_co>[~SSHHostKeys]<~SSHHostKeys>
+ entity_keys : typing.Sequence[~SSHHostKeys]
'''
self.entity_keys = [SSHHostKeys.from_json(o) for o in entity_keys or []]
_toPy = {'public-keys': 'public_keys', 'tag': 'tag'}
def __init__(self, public_keys=None, tag=None, **unknown_fields):
'''
- public_keys : typing.Sequence<+T_co>[str]
+ public_keys : typing.Sequence[str]
tag : str
'''
self.public_keys = public_keys
def __init__(self, error=None, public_keys=None, **unknown_fields):
'''
error : Error
- public_keys : typing.Sequence<+T_co>[str]
+ public_keys : typing.Sequence[str]
'''
self.error = Error.from_json(error) if error else None
self.public_keys = public_keys
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~SSHPublicKeysResult]<~SSHPublicKeysResult>
+ results : typing.Sequence[~SSHPublicKeysResult]
'''
self.results = [SSHPublicKeysResult.from_json(o) for o in results or []]
+class ScaleApplicationInfo(Type):
+ _toSchema = {'num_units': 'num-units'}
+ _toPy = {'num-units': 'num_units'}
+ def __init__(self, num_units=None, **unknown_fields):
+ '''
+ num_units : int
+ '''
+ self.num_units = num_units
+
+
+
+class ScaleApplicationParams(Type):
+ _toSchema = {'application_tag': 'application-tag', 'scale': 'scale', 'scale_change': 'scale-change'}
+ _toPy = {'application-tag': 'application_tag', 'scale': 'scale', 'scale-change': 'scale_change'}
+ def __init__(self, application_tag=None, scale=None, scale_change=None, **unknown_fields):
+ '''
+ application_tag : str
+ scale : int
+ scale_change : int
+ '''
+ self.application_tag = application_tag
+ self.scale = scale
+ self.scale_change = scale_change
+
+
+
+class ScaleApplicationResult(Type):
+ _toSchema = {'error': 'error', 'info': 'info'}
+ _toPy = {'error': 'error', 'info': 'info'}
+ def __init__(self, error=None, info=None, **unknown_fields):
+ '''
+ error : Error
+ info : ScaleApplicationInfo
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.info = ScaleApplicationInfo.from_json(info) if info else None
+
+
+
+class ScaleApplicationResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~ScaleApplicationResult]
+ '''
+ self.results = [ScaleApplicationResult.from_json(o) for o in results or []]
+
+
+
+class ScaleApplicationsParams(Type):
+ _toSchema = {'applications': 'applications'}
+ _toPy = {'applications': 'applications'}
+ def __init__(self, applications=None, **unknown_fields):
+ '''
+ applications : typing.Sequence[~ScaleApplicationParams]
+ '''
+ self.applications = [ScaleApplicationParams.from_json(o) for o in applications or []]
+
+
+
class SerializedModel(Type):
_toSchema = {'bytes_': 'bytes', 'charms': 'charms', 'tools': 'tools'}
_toPy = {'bytes': 'bytes_', 'charms': 'charms', 'tools': 'tools'}
def __init__(self, bytes_=None, charms=None, tools=None, **unknown_fields):
'''
- bytes_ : typing.Sequence<+T_co>[int]
- charms : typing.Sequence<+T_co>[str]
- tools : typing.Sequence<+T_co>[~SerializedModelTools]<~SerializedModelTools>
+ bytes_ : typing.Sequence[int]
+ charms : typing.Sequence[str]
+ tools : typing.Sequence[~SerializedModelTools]
'''
self.bytes_ = bytes_
self.charms = charms
application_revision : SerializedModelResourceRevision
charmstore_revision : SerializedModelResourceRevision
name : str
- unit_revisions : typing.Mapping<~KT, +VT_co>[str, ~SerializedModelResourceRevision]<~SerializedModelResourceRevision>
+ unit_revisions : typing.Mapping[str, ~SerializedModelResourceRevision]
'''
self.application = application
self.application_revision = SerializedModelResourceRevision.from_json(application_revision) if application_revision else None
+class SetExternalControllerInfoParams(Type):
+ _toSchema = {'info': 'info'}
+ _toPy = {'info': 'info'}
+ def __init__(self, info=None, **unknown_fields):
+ '''
+ info : ExternalControllerInfo
+ '''
+ self.info = ExternalControllerInfo.from_json(info) if info else None
+
+
+
+class SetExternalControllersInfoParams(Type):
+ _toSchema = {'controllers': 'controllers'}
+ _toPy = {'controllers': 'controllers'}
+ def __init__(self, controllers=None, **unknown_fields):
+ '''
+ controllers : typing.Sequence[~SetExternalControllerInfoParams]
+ '''
+ self.controllers = [SetExternalControllerInfoParams.from_json(o) for o in controllers or []]
+
+
+
class SetMachineBlockDevices(Type):
_toSchema = {'machine_block_devices': 'machine-block-devices'}
_toPy = {'machine-block-devices': 'machine_block_devices'}
def __init__(self, machine_block_devices=None, **unknown_fields):
'''
- machine_block_devices : typing.Sequence<+T_co>[~MachineBlockDevices]<~MachineBlockDevices>
+ machine_block_devices : typing.Sequence[~MachineBlockDevices]
'''
self.machine_block_devices = [MachineBlockDevices.from_json(o) for o in machine_block_devices or []]
_toPy = {'config': 'config', 'tag': 'tag'}
def __init__(self, config=None, tag=None, **unknown_fields):
'''
- config : typing.Sequence<+T_co>[~NetworkConfig]<~NetworkConfig>
+ config : typing.Sequence[~NetworkConfig]
tag : str
'''
self.config = [NetworkConfig.from_json(o) for o in config or []]
_toPy = {'machine-addresses': 'machine_addresses'}
def __init__(self, machine_addresses=None, **unknown_fields):
'''
- machine_addresses : typing.Sequence<+T_co>[~MachineAddresses]<~MachineAddresses>
+ machine_addresses : typing.Sequence[~MachineAddresses]
'''
self.machine_addresses = [MachineAddresses.from_json(o) for o in machine_addresses or []]
_toPy = {'config': 'config'}
def __init__(self, config=None, **unknown_fields):
'''
- config : typing.Sequence<+T_co>[~ModelDefaultValues]<~ModelDefaultValues>
+ config : typing.Sequence[~ModelDefaultValues]
'''
self.config = [ModelDefaultValues.from_json(o) for o in config or []]
+class SetModelEnvironVersion(Type):
+ _toSchema = {'model_tag': 'model-tag', 'version': 'version'}
+ _toPy = {'model-tag': 'model_tag', 'version': 'version'}
+ def __init__(self, model_tag=None, version=None, **unknown_fields):
+ '''
+ model_tag : str
+ version : int
+ '''
+ self.model_tag = model_tag
+ self.version = version
+
+
+
+class SetModelEnvironVersions(Type):
+ _toSchema = {'models': 'models'}
+ _toPy = {'models': 'models'}
+ def __init__(self, models=None, **unknown_fields):
+ '''
+ models : typing.Sequence[~SetModelEnvironVersion]
+ '''
+ self.models = [SetModelEnvironVersion.from_json(o) for o in models or []]
+
+
+
class SetPayloadStatusArg(Type):
_toSchema = {'entity': 'Entity', 'status': 'status'}
_toPy = {'Entity': 'entity', 'status': 'status'}
_toPy = {'args': 'args'}
def __init__(self, args=None, **unknown_fields):
'''
- args : typing.Sequence<+T_co>[~SetPayloadStatusArg]<~SetPayloadStatusArg>
+ args : typing.Sequence[~SetPayloadStatusArg]
'''
self.args = [SetPayloadStatusArg.from_json(o) for o in args or []]
+class SetPodSpecParams(Type):
+ _toSchema = {'specs': 'specs'}
+ _toPy = {'specs': 'specs'}
+ def __init__(self, specs=None, **unknown_fields):
+ '''
+ specs : typing.Sequence[~EntityString]
+ '''
+ self.specs = [EntityString.from_json(o) for o in specs or []]
+
+
+
+class SetProfileArg(Type):
+ _toSchema = {'entity': 'entity', 'profiles': 'profiles'}
+ _toPy = {'entity': 'entity', 'profiles': 'profiles'}
+ def __init__(self, entity=None, profiles=None, **unknown_fields):
+ '''
+ entity : Entity
+ profiles : typing.Sequence[str]
+ '''
+ self.entity = Entity.from_json(entity) if entity else None
+ self.profiles = profiles
+
+
+
+class SetProfileArgs(Type):
+ _toSchema = {'args': 'args'}
+ _toPy = {'args': 'args'}
+ def __init__(self, args=None, **unknown_fields):
+ '''
+ args : typing.Sequence[~SetProfileArg]
+ '''
+ self.args = [SetProfileArg.from_json(o) for o in args or []]
+
+
+
+class SetProfileUpgradeCompleteArg(Type):
+ _toSchema = {'entity': 'entity', 'message': 'message'}
+ _toPy = {'entity': 'entity', 'message': 'message'}
+ def __init__(self, entity=None, message=None, **unknown_fields):
+ '''
+ entity : Entity
+ message : str
+ '''
+ self.entity = Entity.from_json(entity) if entity else None
+ self.message = message
+
+
+
+class SetProfileUpgradeCompleteArgs(Type):
+ _toSchema = {'args': 'args'}
+ _toPy = {'args': 'args'}
+ def __init__(self, args=None, **unknown_fields):
+ '''
+ args : typing.Sequence[~SetProfileUpgradeCompleteArg]
+ '''
+ self.args = [SetProfileUpgradeCompleteArg.from_json(o) for o in args or []]
+
+
+
class SetStatus(Type):
_toSchema = {'entities': 'entities'}
_toPy = {'entities': 'entities'}
def __init__(self, entities=None, **unknown_fields):
'''
- entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
+ entities : typing.Sequence[~EntityStatusArgs]
'''
self.entities = [EntityStatusArgs.from_json(o) for o in entities or []]
_toPy = {'args': 'args'}
def __init__(self, args=None, **unknown_fields):
'''
- args : typing.Sequence<+T_co>[~SetStatusArg]<~SetStatusArg>
+ args : typing.Sequence[~SetStatusArg]
'''
self.args = [SetStatusArg.from_json(o) for o in args or []]
def __init__(self, error=None, settings=None, **unknown_fields):
'''
error : Error
- settings : typing.Mapping<~KT, +VT_co>[str, str]
+ settings : typing.Mapping[str, str]
'''
self.error = Error.from_json(error) if error else None
self.settings = settings
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~SettingsResult]<~SettingsResult>
+ results : typing.Sequence[~SettingsResult]
'''
self.results = [SettingsResult.from_json(o) for o in results or []]
_toPy = {'claims': 'claims'}
def __init__(self, claims=None, **unknown_fields):
'''
- claims : typing.Sequence<+T_co>[~SingularClaim]<~SingularClaim>
+ claims : typing.Sequence[~SingularClaim]
'''
self.claims = [SingularClaim.from_json(o) for o in claims or []]
'''
error : Error
name : str
- subnets : typing.Sequence<+T_co>[~Subnet]<~Subnet>
+ subnets : typing.Sequence[~Subnet]
'''
self.error = Error.from_json(error) if error else None
self.name = name
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~SpaceResult]<~SpaceResult>
+ results : typing.Sequence[~SpaceResult]
'''
self.results = [SpaceResult.from_json(o) for o in results or []]
_toPy = {'requests': 'requests'}
def __init__(self, requests=None, **unknown_fields):
'''
- requests : typing.Sequence<+T_co>[~StatusHistoryRequest]<~StatusHistoryRequest>
+ requests : typing.Sequence[~StatusHistoryRequest]
'''
self.requests = [StatusHistoryRequest.from_json(o) for o in requests or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~StatusHistoryResult]<~StatusHistoryResult>
+ results : typing.Sequence[~StatusHistoryResult]
'''
self.results = [StatusHistoryResult.from_json(o) for o in results or []]
_toPy = {'patterns': 'patterns'}
def __init__(self, patterns=None, **unknown_fields):
'''
- patterns : typing.Sequence<+T_co>[str]
+ patterns : typing.Sequence[str]
'''
self.patterns = patterns
_toPy = {'data': 'data', 'error': 'error', 'id': 'id_', 'info': 'info', 'life': 'life', 'since': 'since', 'status': 'status'}
def __init__(self, data=None, error=None, id_=None, info=None, life=None, since=None, status=None, **unknown_fields):
'''
- data : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ data : typing.Mapping[str, typing.Any]
error : Error
id_ : str
info : str
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~StatusResult]<~StatusResult>
+ results : typing.Sequence[~StatusResult]
'''
self.results = [StatusResult.from_json(o) for o in results or []]
_toPy = {'ids': 'ids'}
def __init__(self, ids=None, **unknown_fields):
'''
- ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId>
+ ids : typing.Sequence[~StorageAttachmentId]
'''
self.ids = [StorageAttachmentId.from_json(o) for o in ids or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~StorageAttachmentIdsResult]<~StorageAttachmentIdsResult>
+ results : typing.Sequence[~StorageAttachmentIdsResult]
'''
self.results = [StorageAttachmentIdsResult.from_json(o) for o in results or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~StorageAttachmentResult]<~StorageAttachmentResult>
+ results : typing.Sequence[~StorageAttachmentResult]
'''
self.results = [StorageAttachmentResult.from_json(o) for o in results or []]
_toPy = {'attachments': 'attachments', 'kind': 'kind', 'owner-tag': 'owner_tag', 'persistent': 'persistent', 'status': 'status', 'storage-tag': 'storage_tag'}
def __init__(self, attachments=None, kind=None, owner_tag=None, persistent=None, status=None, storage_tag=None, **unknown_fields):
'''
- attachments : typing.Mapping<~KT, +VT_co>[str, ~StorageAttachmentDetails]<~StorageAttachmentDetails>
+ attachments : typing.Mapping[str, ~StorageAttachmentDetails]
kind : int
owner_tag : str
persistent : bool
def __init__(self, error=None, result=None, **unknown_fields):
'''
error : Error
- result : typing.Sequence<+T_co>[~StorageDetails]<~StorageDetails>
+ result : typing.Sequence[~StorageDetails]
'''
self.error = Error.from_json(error) if error else None
self.result = [StorageDetails.from_json(o) for o in result or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~StorageDetailsListResult]<~StorageDetailsListResult>
+ results : typing.Sequence[~StorageDetailsListResult]
'''
self.results = [StorageDetailsListResult.from_json(o) for o in results or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~StorageDetailsResult]<~StorageDetailsResult>
+ results : typing.Sequence[~StorageDetailsResult]
'''
self.results = [StorageDetailsResult.from_json(o) for o in results or []]
_toPy = {'filters': 'filters'}
def __init__(self, filters=None, **unknown_fields):
'''
- filters : typing.Sequence<+T_co>[~StorageFilter]<~StorageFilter>
+ filters : typing.Sequence[~StorageFilter]
'''
self.filters = [StorageFilter.from_json(o) for o in filters or []]
_toPy = {'attrs': 'attrs', 'name': 'name', 'provider': 'provider'}
def __init__(self, attrs=None, name=None, provider=None, **unknown_fields):
'''
- attrs : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ attrs : typing.Mapping[str, typing.Any]
name : str
provider : str
'''
_toPy = {'names': 'names', 'providers': 'providers'}
def __init__(self, names=None, providers=None, **unknown_fields):
'''
- names : typing.Sequence<+T_co>[str]
- providers : typing.Sequence<+T_co>[str]
+ names : typing.Sequence[str]
+ providers : typing.Sequence[str]
'''
self.names = names
self.providers = providers
_toPy = {'filters': 'filters'}
def __init__(self, filters=None, **unknown_fields):
'''
- filters : typing.Sequence<+T_co>[~StoragePoolFilter]<~StoragePoolFilter>
+ filters : typing.Sequence[~StoragePoolFilter]
'''
self.filters = [StoragePoolFilter.from_json(o) for o in filters or []]
def __init__(self, error=None, storage_pools=None, **unknown_fields):
'''
error : Error
- storage_pools : typing.Sequence<+T_co>[~StoragePool]<~StoragePool>
+ storage_pools : typing.Sequence[~StoragePool]
'''
self.error = Error.from_json(error) if error else None
self.storage_pools = [StoragePool.from_json(o) for o in storage_pools or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~StoragePoolsResult]<~StoragePoolsResult>
+ results : typing.Sequence[~StoragePoolsResult]
'''
self.results = [StoragePoolsResult.from_json(o) for o in results or []]
_toPy = {'storages': 'storages'}
def __init__(self, storages=None, **unknown_fields):
'''
- storages : typing.Sequence<+T_co>[~StorageAddParams]<~StorageAddParams>
+ storages : typing.Sequence[~StorageAddParams]
'''
self.storages = [StorageAddParams.from_json(o) for o in storages or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~StringBoolResult]<~StringBoolResult>
+ results : typing.Sequence[~StringBoolResult]
'''
self.results = [StringBoolResult.from_json(o) for o in results or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~StringResult]<~StringResult>
+ results : typing.Sequence[~StringResult]
'''
self.results = [StringResult.from_json(o) for o in results or []]
def __init__(self, error=None, result=None, **unknown_fields):
'''
error : Error
- result : typing.Sequence<+T_co>[str]
+ result : typing.Sequence[str]
'''
self.error = Error.from_json(error) if error else None
self.result = result
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~StringsResult]<~StringsResult>
+ results : typing.Sequence[~StringsResult]
'''
self.results = [StringsResult.from_json(o) for o in results or []]
_toPy = {'changes': 'changes', 'error': 'error', 'watcher-id': 'watcher_id'}
def __init__(self, changes=None, error=None, watcher_id=None, **unknown_fields):
'''
- changes : typing.Sequence<+T_co>[str]
+ changes : typing.Sequence[str]
error : Error
watcher_id : str
'''
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
+ results : typing.Sequence[~StringsWatchResult]
+ '''
+ self.results = [StringsWatchResult.from_json(o) for o in results or []]
+
+
+
+class Subnet(Type):
+ _toSchema = {'cidr': 'cidr', 'life': 'life', 'provider_id': 'provider-id', 'space_tag': 'space-tag', 'status': 'status', 'vlan_tag': 'vlan-tag', 'zones': 'zones'}
+ _toPy = {'cidr': 'cidr', 'life': 'life', 'provider-id': 'provider_id', 'space-tag': 'space_tag', 'status': 'status', 'vlan-tag': 'vlan_tag', 'zones': 'zones'}
+ def __init__(self, cidr=None, life=None, provider_id=None, space_tag=None, status=None, vlan_tag=None, zones=None, **unknown_fields):
+ '''
+ cidr : str
+ life : str
+ provider_id : str
+ space_tag : str
+ status : str
+ vlan_tag : int
+ zones : typing.Sequence[str]
+ '''
+ self.cidr = cidr
+ self.life = life
+ self.provider_id = provider_id
+ self.space_tag = space_tag
+ self.status = status
+ self.vlan_tag = vlan_tag
+ self.zones = zones
+
+
+
+class SubnetsFilters(Type):
+ _toSchema = {'space_tag': 'space-tag', 'zone': 'zone'}
+ _toPy = {'space-tag': 'space_tag', 'zone': 'zone'}
+ def __init__(self, space_tag=None, zone=None, **unknown_fields):
+ '''
+ space_tag : str
+ zone : str
+ '''
+ self.space_tag = space_tag
+ self.zone = zone
+
+
+
+class TaggedCredential(Type):
+ _toSchema = {'credential': 'credential', 'tag': 'tag'}
+ _toPy = {'credential': 'credential', 'tag': 'tag'}
+ def __init__(self, credential=None, tag=None, **unknown_fields):
+ '''
+ credential : CloudCredential
+ tag : str
+ '''
+ self.credential = CloudCredential.from_json(credential) if credential else None
+ self.tag = tag
+
+
+
+class TaggedCredentials(Type):
+ _toSchema = {'credentials': 'credentials'}
+ _toPy = {'credentials': 'credentials'}
+ def __init__(self, credentials=None, **unknown_fields):
+ '''
+ credentials : typing.Sequence[~TaggedCredential]
'''
- self.results = [StringsWatchResult.from_json(o) for o in results or []]
+ self.credentials = [TaggedCredential.from_json(o) for o in credentials or []]
-class Subnet(Type):
- _toSchema = {'cidr': 'cidr', 'life': 'life', 'provider_id': 'provider-id', 'space_tag': 'space-tag', 'status': 'status', 'vlan_tag': 'vlan-tag', 'zones': 'zones'}
- _toPy = {'cidr': 'cidr', 'life': 'life', 'provider-id': 'provider_id', 'space-tag': 'space_tag', 'status': 'status', 'vlan-tag': 'vlan_tag', 'zones': 'zones'}
- def __init__(self, cidr=None, life=None, provider_id=None, space_tag=None, status=None, vlan_tag=None, zones=None, **unknown_fields):
+class TokenResult(Type):
+ _toSchema = {'error': 'error', 'token': 'token'}
+ _toPy = {'error': 'error', 'token': 'token'}
+ def __init__(self, error=None, token=None, **unknown_fields):
'''
- cidr : str
- life : str
- provider_id : str
- space_tag : str
- status : str
- vlan_tag : int
- zones : typing.Sequence<+T_co>[str]
+ error : Error
+ token : str
'''
- self.cidr = cidr
- self.life = life
- self.provider_id = provider_id
- self.space_tag = space_tag
- self.status = status
- self.vlan_tag = vlan_tag
- self.zones = zones
+ self.error = Error.from_json(error) if error else None
+ self.token = token
-class SubnetsFilters(Type):
- _toSchema = {'space_tag': 'space-tag', 'zone': 'zone'}
- _toPy = {'space-tag': 'space_tag', 'zone': 'zone'}
- def __init__(self, space_tag=None, zone=None, **unknown_fields):
+class TokenResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
'''
- space_tag : str
- zone : str
+ results : typing.Sequence[~TokenResult]
'''
- self.space_tag = space_tag
- self.zone = zone
+ self.results = [TokenResult.from_json(o) for o in results or []]
'''
disable_ssl_hostname_verification : bool
error : Error
- tools : typing.Sequence<+T_co>[~Tools]<~Tools>
+ tools : typing.Sequence[~Tools]
'''
self.disable_ssl_hostname_verification = disable_ssl_hostname_verification
self.error = Error.from_json(error) if error else None
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ToolsResult]<~ToolsResult>
+ results : typing.Sequence[~ToolsResult]
'''
self.results = [ToolsResult.from_json(o) for o in results or []]
_toPy = {'payloads': 'payloads'}
def __init__(self, payloads=None, **unknown_fields):
'''
- payloads : typing.Sequence<+T_co>[~Payload]<~Payload>
+ payloads : typing.Sequence[~Payload]
'''
self.payloads = [Payload.from_json(o) for o in payloads or []]
_toPy = {'payloads': 'payloads'}
def __init__(self, payloads=None, **unknown_fields):
'''
- payloads : typing.Sequence<+T_co>[~Payload]<~Payload>
+ payloads : typing.Sequence[~Payload]
'''
self.payloads = [Payload.from_json(o) for o in payloads or []]
def __init__(self, error=None, info=None, **unknown_fields):
'''
error : Error
- info : typing.Sequence<+T_co>[~NetworkConfig]<~NetworkConfig>
+ info : typing.Sequence[~NetworkConfig]
'''
self.error = Error.from_json(error) if error else None
self.info = [NetworkConfig.from_json(o) for o in info or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~UnitNetworkConfigResult]<~UnitNetworkConfigResult>
+ results : typing.Sequence[~UnitNetworkConfigResult]
'''
self.results = [UnitNetworkConfigResult.from_json(o) for o in results or []]
+class UnitRefreshResult(Type):
+ _toSchema = {'error': 'Error', 'life': 'Life', 'resolved': 'Resolved'}
+ _toPy = {'Error': 'error', 'Life': 'life', 'Resolved': 'resolved'}
+ def __init__(self, error=None, life=None, resolved=None, **unknown_fields):
+ '''
+ error : Error
+ life : str
+ resolved : str
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.life = life
+ self.resolved = resolved
+
+
+
+class UnitRefreshResults(Type):
+ _toSchema = {'results': 'Results'}
+ _toPy = {'Results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~UnitRefreshResult]
+ '''
+ self.results = [UnitRefreshResult.from_json(o) for o in results or []]
+
+
+
class UnitResourceResult(Type):
_toSchema = {'errorresult': 'ErrorResult', 'resource': 'resource'}
_toPy = {'ErrorResult': 'errorresult', 'resource': 'resource'}
def __init__(self, entity=None, download_progress=None, resources=None, **unknown_fields):
'''
entity : Entity
- download_progress : typing.Mapping<~KT, +VT_co>[str, int]
- resources : typing.Sequence<+T_co>[~Resource]<~Resource>
+ download_progress : typing.Mapping[str, int]
+ resources : typing.Sequence[~Resource]
'''
self.entity = Entity.from_json(entity) if entity else None
self.download_progress = download_progress
def __init__(self, errorresult=None, resources=None, **unknown_fields):
'''
errorresult : ErrorResult
- resources : typing.Sequence<+T_co>[~UnitResourceResult]<~UnitResourceResult>
+ resources : typing.Sequence[~UnitResourceResult]
'''
self.errorresult = ErrorResult.from_json(errorresult) if errorresult else None
self.resources = [UnitResourceResult.from_json(o) for o in resources or []]
charm : str
leader : bool
machine : str
- opened_ports : typing.Sequence<+T_co>[str]
+ opened_ports : typing.Sequence[str]
public_address : str
- subordinates : typing.Mapping<~KT, +VT_co>[str, ~UnitStatus]<~UnitStatus>
+ subordinates : typing.Mapping[str, ~UnitStatus]
workload_status : DetailedStatus
workload_version : str
'''
_toPy = {'args': 'args'}
def __init__(self, args=None, **unknown_fields):
'''
- args : typing.Sequence<+T_co>[~UnitNetworkConfig]<~UnitNetworkConfig>
+ args : typing.Sequence[~UnitNetworkConfig]
'''
self.args = [UnitNetworkConfig.from_json(o) for o in args or []]
+class UnitsResolved(Type):
+ _toSchema = {'all_': 'all', 'retry': 'retry', 'tags': 'tags'}
+ _toPy = {'all': 'all_', 'retry': 'retry', 'tags': 'tags'}
+ def __init__(self, all_=None, retry=None, tags=None, **unknown_fields):
+ '''
+ all_ : bool
+ retry : bool
+ tags : Entities
+ '''
+ self.all_ = all_
+ self.retry = retry
+ self.tags = Entities.from_json(tags) if tags else None
+
+
+
class UnsetModelDefaults(Type):
_toSchema = {'keys': 'keys'}
_toPy = {'keys': 'keys'}
def __init__(self, keys=None, **unknown_fields):
'''
- keys : typing.Sequence<+T_co>[~ModelUnsetKeys]<~ModelUnsetKeys>
+ keys : typing.Sequence[~ModelUnsetKeys]
'''
self.keys = [ModelUnsetKeys.from_json(o) for o in keys or []]
+class UpdateApplicationServiceArg(Type):
+ _toSchema = {'addresses': 'addresses', 'application_tag': 'application-tag', 'provider_id': 'provider-id'}
+ _toPy = {'addresses': 'addresses', 'application-tag': 'application_tag', 'provider-id': 'provider_id'}
+ def __init__(self, addresses=None, application_tag=None, provider_id=None, **unknown_fields):
+ '''
+ addresses : typing.Sequence[~Address]
+ application_tag : str
+ provider_id : str
+ '''
+ self.addresses = [Address.from_json(o) for o in addresses or []]
+ self.application_tag = application_tag
+ self.provider_id = provider_id
+
+
+
+class UpdateApplicationServiceArgs(Type):
+ _toSchema = {'args': 'args'}
+ _toPy = {'args': 'args'}
+ def __init__(self, args=None, **unknown_fields):
+ '''
+ args : typing.Sequence[~UpdateApplicationServiceArg]
+ '''
+ self.args = [UpdateApplicationServiceArg.from_json(o) for o in args or []]
+
+
+
+class UpdateApplicationUnitArgs(Type):
+ _toSchema = {'args': 'args'}
+ _toPy = {'args': 'args'}
+ def __init__(self, args=None, **unknown_fields):
+ '''
+ args : typing.Sequence[~UpdateApplicationUnits]
+ '''
+ self.args = [UpdateApplicationUnits.from_json(o) for o in args or []]
+
+
+
+class UpdateApplicationUnits(Type):
+ _toSchema = {'application_tag': 'application-tag', 'units': 'units'}
+ _toPy = {'application-tag': 'application_tag', 'units': 'units'}
+ def __init__(self, application_tag=None, units=None, **unknown_fields):
+ '''
+ application_tag : str
+ units : typing.Sequence[~ApplicationUnitParams]
+ '''
+ self.application_tag = application_tag
+ self.units = [ApplicationUnitParams.from_json(o) for o in units or []]
+
+
+
class UpdateBehavior(Type):
_toSchema = {'enable_os_refresh_update': 'enable-os-refresh-update', 'enable_os_upgrade': 'enable-os-upgrade'}
_toPy = {'enable-os-refresh-update': 'enable_os_refresh_update', 'enable-os-upgrade': 'enable_os_upgrade'}
_toPy = {'credentials': 'credentials'}
def __init__(self, credentials=None, **unknown_fields):
'''
- credentials : typing.Sequence<+T_co>[~UpdateCloudCredential]<~UpdateCloudCredential>
+ credentials : typing.Sequence[~UpdateCloudCredential]
'''
self.credentials = [UpdateCloudCredential.from_json(o) for o in credentials or []]
+class UpdateCredentialArgs(Type):
+ _toSchema = {'credentials': 'credentials', 'force': 'force'}
+ _toPy = {'credentials': 'credentials', 'force': 'force'}
+ def __init__(self, credentials=None, force=None, **unknown_fields):
+ '''
+ credentials : typing.Sequence[~TaggedCredential]
+ force : bool
+ '''
+ self.credentials = [TaggedCredential.from_json(o) for o in credentials or []]
+ self.force = force
+
+
+
+class UpdateCredentialModelResult(Type):
+ _toSchema = {'errors': 'errors', 'name': 'name', 'uuid': 'uuid'}
+ _toPy = {'errors': 'errors', 'name': 'name', 'uuid': 'uuid'}
+ def __init__(self, errors=None, name=None, uuid=None, **unknown_fields):
+ '''
+ errors : typing.Sequence[~ErrorResult]
+ name : str
+ uuid : str
+ '''
+ self.errors = [ErrorResult.from_json(o) for o in errors or []]
+ self.name = name
+ self.uuid = uuid
+
+
+
+class UpdateCredentialResult(Type):
+ _toSchema = {'error': 'error', 'models': 'models', 'tag': 'tag'}
+ _toPy = {'error': 'error', 'models': 'models', 'tag': 'tag'}
+ def __init__(self, error=None, models=None, tag=None, **unknown_fields):
+ '''
+ error : Error
+ models : typing.Sequence[~UpdateCredentialModelResult]
+ tag : str
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.models = [UpdateCredentialModelResult.from_json(o) for o in models or []]
+ self.tag = tag
+
+
+
+class UpdateCredentialResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~UpdateCredentialResult]
+ '''
+ self.results = [UpdateCredentialResult.from_json(o) for o in results or []]
+
+
+
+class UpdateSeriesArg(Type):
+ _toSchema = {'force': 'force', 'series': 'series', 'tag': 'tag'}
+ _toPy = {'force': 'force', 'series': 'series', 'tag': 'tag'}
+ def __init__(self, force=None, series=None, tag=None, **unknown_fields):
+ '''
+ force : bool
+ series : str
+ tag : Entity
+ '''
+ self.force = force
+ self.series = series
+ self.tag = Entity.from_json(tag) if tag else None
+
+
+
+class UpdateSeriesArgs(Type):
+ _toSchema = {'args': 'args'}
+ _toPy = {'args': 'args'}
+ def __init__(self, args=None, **unknown_fields):
+ '''
+ args : typing.Sequence[~UpdateSeriesArg]
+ '''
+ self.args = [UpdateSeriesArg.from_json(o) for o in args or []]
+
+
+
class UpgradeMongoParams(Type):
_toSchema = {'target': 'target'}
_toPy = {'target': 'target'}
+class UpgradeSeriesNotificationParam(Type):
+ _toSchema = {'entity': 'entity', 'watcher_id': 'watcher-id'}
+ _toPy = {'entity': 'entity', 'watcher-id': 'watcher_id'}
+ def __init__(self, entity=None, watcher_id=None, **unknown_fields):
+ '''
+ entity : Entity
+ watcher_id : str
+ '''
+ self.entity = Entity.from_json(entity) if entity else None
+ self.watcher_id = watcher_id
+
+
+
+class UpgradeSeriesNotificationParams(Type):
+ _toSchema = {'params': 'params'}
+ _toPy = {'params': 'params'}
+ def __init__(self, params=None, **unknown_fields):
+ '''
+ params : typing.Sequence[~UpgradeSeriesNotificationParam]
+ '''
+ self.params = [UpgradeSeriesNotificationParam.from_json(o) for o in params or []]
+
+
+
+class UpgradeSeriesStartUnitCompletionParam(Type):
+ _toSchema = {'entities': 'entities', 'message': 'message'}
+ _toPy = {'entities': 'entities', 'message': 'message'}
+ def __init__(self, entities=None, message=None, **unknown_fields):
+ '''
+ entities : typing.Sequence[~Entity]
+ message : str
+ '''
+ self.entities = [Entity.from_json(o) for o in entities or []]
+ self.message = message
+
+
+
+class UpgradeSeriesStatusParam(Type):
+ _toSchema = {'entity': 'entity', 'message': 'message', 'status': 'status'}
+ _toPy = {'entity': 'entity', 'message': 'message', 'status': 'status'}
+ def __init__(self, entity=None, message=None, status=None, **unknown_fields):
+ '''
+ entity : Entity
+ message : str
+ status : str
+ '''
+ self.entity = Entity.from_json(entity) if entity else None
+ self.message = message
+ self.status = status
+
+
+
+class UpgradeSeriesStatusParams(Type):
+ _toSchema = {'params': 'params'}
+ _toPy = {'params': 'params'}
+ def __init__(self, params=None, **unknown_fields):
+ '''
+ params : typing.Sequence[~UpgradeSeriesStatusParam]
+ '''
+ self.params = [UpgradeSeriesStatusParam.from_json(o) for o in params or []]
+
+
+
+class UpgradeSeriesStatusResult(Type):
+ _toSchema = {'error': 'error', 'status': 'status'}
+ _toPy = {'error': 'error', 'status': 'status'}
+ def __init__(self, error=None, status=None, **unknown_fields):
+ '''
+ error : Error
+ status : str
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.status = status
+
+
+
+class UpgradeSeriesStatusResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~UpgradeSeriesStatusResult]
+ '''
+ self.results = [UpgradeSeriesStatusResult.from_json(o) for o in results or []]
+
+
+
+class UpgradeSeriesUnitsResult(Type):
+ _toSchema = {'error': 'error', 'unit_names': 'unit-names'}
+ _toPy = {'error': 'error', 'unit-names': 'unit_names'}
+ def __init__(self, error=None, unit_names=None, **unknown_fields):
+ '''
+ error : Error
+ unit_names : typing.Sequence[str]
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.unit_names = unit_names
+
+
+
+class UpgradeSeriesUnitsResults(Type):
+ _toSchema = {'results': 'Results'}
+ _toPy = {'Results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~UpgradeSeriesUnitsResult]
+ '''
+ self.results = [UpgradeSeriesUnitsResult.from_json(o) for o in results or []]
+
+
+
class UserAccess(Type):
_toSchema = {'access': 'access', 'user_tag': 'user-tag'}
_toPy = {'access': 'access', 'user-tag': 'user_tag'}
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~UserAccessResult]<~UserAccessResult>
+ results : typing.Sequence[~UserAccessResult]
'''
self.results = [UserAccessResult.from_json(o) for o in results or []]
_toPy = {'user-clouds': 'user_clouds'}
def __init__(self, user_clouds=None, **unknown_fields):
'''
- user_clouds : typing.Sequence<+T_co>[~UserCloud]<~UserCloud>
+ user_clouds : typing.Sequence[~UserCloud]
'''
self.user_clouds = [UserCloud.from_json(o) for o in user_clouds or []]
_toPy = {'entities': 'entities', 'include-disabled': 'include_disabled'}
def __init__(self, entities=None, include_disabled=None, **unknown_fields):
'''
- entities : typing.Sequence<+T_co>[~Entity]<~Entity>
+ entities : typing.Sequence[~Entity]
include_disabled : bool
'''
self.entities = [Entity.from_json(o) for o in entities or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~UserInfoResult]<~UserInfoResult>
+ results : typing.Sequence[~UserInfoResult]
'''
self.results = [UserInfoResult.from_json(o) for o in results or []]
_toPy = {'user-models': 'user_models'}
def __init__(self, user_models=None, **unknown_fields):
'''
- user_models : typing.Sequence<+T_co>[~UserModel]<~UserModel>
+ user_models : typing.Sequence[~UserModel]
'''
self.user_models = [UserModel.from_json(o) for o in user_models or []]
instance_type : str
mem : int
root_disk : int
- spaces : typing.Sequence<+T_co>[str]
- tags : typing.Sequence<+T_co>[str]
+ spaces : typing.Sequence[str]
+ tags : typing.Sequence[str]
virt_type : str
'''
self.arch = arch
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~VersionResult]<~VersionResult>
+ results : typing.Sequence[~VersionResult]
'''
self.results = [VersionResult.from_json(o) for o in results or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~VolumeAttachmentParamsResult]<~VolumeAttachmentParamsResult>
+ results : typing.Sequence[~VolumeAttachmentParamsResult]
'''
self.results = [VolumeAttachmentParamsResult.from_json(o) for o in results or []]
+class VolumeAttachmentPlan(Type):
+ _toSchema = {'block_device': 'block-device', 'life': 'life', 'machine_tag': 'machine-tag', 'plan_info': 'plan-info', 'volume_tag': 'volume-tag'}
+ _toPy = {'block-device': 'block_device', 'life': 'life', 'machine-tag': 'machine_tag', 'plan-info': 'plan_info', 'volume-tag': 'volume_tag'}
+ def __init__(self, block_device=None, life=None, machine_tag=None, plan_info=None, volume_tag=None, **unknown_fields):
+ '''
+ block_device : BlockDevice
+ life : str
+ machine_tag : str
+ plan_info : VolumeAttachmentPlanInfo
+ volume_tag : str
+ '''
+ self.block_device = BlockDevice.from_json(block_device) if block_device else None
+ self.life = life
+ self.machine_tag = machine_tag
+ self.plan_info = VolumeAttachmentPlanInfo.from_json(plan_info) if plan_info else None
+ self.volume_tag = volume_tag
+
+
+
+class VolumeAttachmentPlanInfo(Type):
+ _toSchema = {'device_attributes': 'device-attributes', 'device_type': 'device-type'}
+ _toPy = {'device-attributes': 'device_attributes', 'device-type': 'device_type'}
+ def __init__(self, device_attributes=None, device_type=None, **unknown_fields):
+ '''
+ device_attributes : typing.Mapping[str, str]
+ device_type : str
+ '''
+ self.device_attributes = device_attributes
+ self.device_type = device_type
+
+
+
+class VolumeAttachmentPlanResult(Type):
+ _toSchema = {'error': 'error', 'result': 'result'}
+ _toPy = {'error': 'error', 'result': 'result'}
+ def __init__(self, error=None, result=None, **unknown_fields):
+ '''
+ error : Error
+ result : VolumeAttachmentPlan
+ '''
+ self.error = Error.from_json(error) if error else None
+ self.result = VolumeAttachmentPlan.from_json(result) if result else None
+
+
+
+class VolumeAttachmentPlanResults(Type):
+ _toSchema = {'results': 'results'}
+ _toPy = {'results': 'results'}
+ def __init__(self, results=None, **unknown_fields):
+ '''
+ results : typing.Sequence[~VolumeAttachmentPlanResult]
+ '''
+ self.results = [VolumeAttachmentPlanResult.from_json(o) for o in results or []]
+
+
+
+class VolumeAttachmentPlans(Type):
+ _toSchema = {'volume_plans': 'volume-plans'}
+ _toPy = {'volume-plans': 'volume_plans'}
+ def __init__(self, volume_plans=None, **unknown_fields):
+ '''
+ volume_plans : typing.Sequence[~VolumeAttachmentPlan]
+ '''
+ self.volume_plans = [VolumeAttachmentPlan.from_json(o) for o in volume_plans or []]
+
+
+
class VolumeAttachmentResult(Type):
_toSchema = {'error': 'error', 'result': 'result'}
_toPy = {'error': 'error', 'result': 'result'}
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~VolumeAttachmentResult]<~VolumeAttachmentResult>
+ results : typing.Sequence[~VolumeAttachmentResult]
'''
self.results = [VolumeAttachmentResult.from_json(o) for o in results or []]
_toPy = {'volume-attachments': 'volume_attachments'}
def __init__(self, volume_attachments=None, **unknown_fields):
'''
- volume_attachments : typing.Sequence<+T_co>[~VolumeAttachment]<~VolumeAttachment>
+ volume_attachments : typing.Sequence[~VolumeAttachment]
'''
self.volume_attachments = [VolumeAttachment.from_json(o) for o in volume_attachments or []]
def __init__(self, info=None, machine_attachments=None, status=None, storage=None, volume_tag=None, **unknown_fields):
'''
info : VolumeInfo
- machine_attachments : typing.Mapping<~KT, +VT_co>[str, ~VolumeAttachmentInfo]<~VolumeAttachmentInfo>
+ machine_attachments : typing.Mapping[str, ~VolumeAttachmentInfo]
status : EntityStatus
storage : StorageDetails
volume_tag : str
def __init__(self, error=None, result=None, **unknown_fields):
'''
error : Error
- result : typing.Sequence<+T_co>[~VolumeDetails]<~VolumeDetails>
+ result : typing.Sequence[~VolumeDetails]
'''
self.error = Error.from_json(error) if error else None
self.result = [VolumeDetails.from_json(o) for o in result or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~VolumeDetailsListResult]<~VolumeDetailsListResult>
+ results : typing.Sequence[~VolumeDetailsListResult]
'''
self.results = [VolumeDetailsListResult.from_json(o) for o in results or []]
_toPy = {'machines': 'machines'}
def __init__(self, machines=None, **unknown_fields):
'''
- machines : typing.Sequence<+T_co>[str]
+ machines : typing.Sequence[str]
'''
self.machines = machines
_toPy = {'filters': 'filters'}
def __init__(self, filters=None, **unknown_fields):
'''
- filters : typing.Sequence<+T_co>[~VolumeFilter]<~VolumeFilter>
+ filters : typing.Sequence[~VolumeFilter]
'''
self.filters = [VolumeFilter.from_json(o) for o in filters or []]
def __init__(self, attachment=None, attributes=None, provider=None, size=None, tags=None, volume_tag=None, **unknown_fields):
'''
attachment : VolumeAttachmentParams
- attributes : typing.Mapping<~KT, +VT_co>[str, typing.Any]
+ attributes : typing.Mapping[str, typing.Any]
provider : str
size : int
- tags : typing.Mapping<~KT, +VT_co>[str, str]
+ tags : typing.Mapping[str, str]
volume_tag : str
'''
self.attachment = VolumeAttachmentParams.from_json(attachment) if attachment else None
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~VolumeParamsResult]<~VolumeParamsResult>
+ results : typing.Sequence[~VolumeParamsResult]
'''
self.results = [VolumeParamsResult.from_json(o) for o in results or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~VolumeResult]<~VolumeResult>
+ results : typing.Sequence[~VolumeResult]
'''
self.results = [VolumeResult.from_json(o) for o in results or []]
_toPy = {'volumes': 'volumes'}
def __init__(self, volumes=None, **unknown_fields):
'''
- volumes : typing.Sequence<+T_co>[~Volume]<~Volume>
+ volumes : typing.Sequence[~Volume]
'''
self.volumes = [Volume.from_json(o) for o in volumes or []]
_toPy = {'params': 'params'}
def __init__(self, params=None, **unknown_fields):
'''
- params : typing.Sequence<+T_co>[~WatchContainer]<~WatchContainer>
+ params : typing.Sequence[~WatchContainer]
'''
self.params = [WatchContainer.from_json(o) for o in params or []]
_toPy = {'results': 'results'}
def __init__(self, results=None, **unknown_fields):
'''
- results : typing.Sequence<+T_co>[~ZoneResult]<~ZoneResult>
+ results : typing.Sequence[~ZoneResult]
'''
self.results = [ZoneResult.from_json(o) for o in results or []]
bakery_client=None,
loop=None,
max_frame_size=None,
+ retries=3,
+ retry_backoff=10,
):
"""Connect to the websocket.
:param asyncio.BaseEventLoop loop: The event loop to use for async
operations.
:param int max_frame_size: The maximum websocket frame size to allow.
+ :param int retries: When connecting or reconnecting, and all endpoints
+ fail, how many times to retry the connection before giving up.
+ :param int retry_backoff: Number of seconds to increase the wait
+ between connection retry attempts (a backoff of 10 with 3 retries
+ would wait 10s, 20s, and 30s).
"""
self = cls()
if endpoint is None:
self._pinger_task = _Task(self._pinger, self.loop)
self._receiver_task = _Task(self._receiver, self.loop)
+ self._retries = retries
+ self._retry_backoff = retry_backoff
+
self.facades = {}
self.messages = IdQueue(loop=self.loop)
self.monitor = Monitor(connection=self)
tasks = [self.loop.create_task(_try_endpoint(endpoint, cacert,
0.1 * i))
for i, (endpoint, cacert) in enumerate(endpoints)]
- for task in asyncio.as_completed(tasks, loop=self.loop):
- try:
- result = await task
- break
- except ConnectionError:
- continue # ignore; try another endpoint
- else:
- raise errors.JujuConnectionError(
- 'Unable to connect to any endpoint: {}'.format(', '.join([
- endpoint for endpoint, cacert in endpoints])))
+ for attempt in range(self._retries + 1):
+ for task in asyncio.as_completed(tasks, loop=self.loop):
+ try:
+ result = await task
+ break
+ except ConnectionError:
+ continue # ignore; try another endpoint
+ else:
+ _endpoints_str = ', '.join([endpoint
+ for endpoint, cacert in endpoints])
+ if attempt < self._retries:
+ log.debug('Retrying connection to endpoints: {}; '
+ 'attempt {} of {}'.format(_endpoints_str,
+ attempt + 1,
+ self._retries + 1))
+ await asyncio.sleep((attempt + 1) * self._retry_backoff)
+ continue
+ else:
+ raise errors.JujuConnectionError(
+ 'Unable to connect to any endpoint: '
+ '{}'.format(_endpoints_str))
+ # only executed if inner loop's else did not continue
+ # (i.e., inner loop did break due to successful connection)
+ break
for task in tasks:
task.cancel()
self.ws = result[0]
self.endpoint = result[2]
self.cacert = result[3]
self._receiver_task.start()
- log.info("Driver connected to juju %s", self.addr)
+ log.debug("Driver connected to juju %s", self.addr)
self.monitor.close_called.clear()
async def _connect_with_login(self, endpoints):
def start(self):
async def run():
try:
- return await(self.task())
+ return await self.task()
finally:
self.stopped.set()
self.stopped.clear()
_marker = object()
-JUJU_VERSION = re.compile('[0-9]+\.[0-9-]+[\.\-][0-9a-z]+(\.[0-9]+)?')
+JUJU_VERSION = re.compile(r'[0-9]+\.[0-9-]+[\.\-][0-9a-z]+(\.[0-9]+)?')
# Workaround for https://bugs.launchpad.net/juju/+bug/1683906
NAUGHTY_CLASSES = ['ClientFacade', 'Client', 'FullStatus', 'ModelStatusInfo',
- 'ModelInfo']
+ 'ModelInfo', 'ApplicationDeploy']
# Map basic types to Python's typing with a callable
of the correct client<version>.py file.
"""
- try:
- facade = getattr(CLIENTS[str(version)], name)
- except KeyError:
- raise ImportError("No facades found for version {}".format(version))
- except AttributeError:
- raise ImportError(
- "No facade with name '{}' in version {}".format(name, version))
- return facade
+ for _version in range(int(version), 0, -1):
+ try:
+ facade = getattr(CLIENTS[str(_version)], name)
+ return facade
+ except (KeyError, AttributeError):
+ continue
+ else:
+ raise ImportError("No supported version for facade: "
+ "{}".format(name))
'''
@param connection: initialized Connection object.
"""
- version = connection.facades[cls.__name__[:-6]]
+ facade_name = cls.__name__
+ if not facade_name.endswith('Facade'):
+ raise TypeError('Unexpected class name: {}'.format(facade_name))
+ facade_name = facade_name[:-len('Facade')]
+ version = connection.facades.get(facade_name)
+ if version is None:
+ raise Exception('No facade {} in facades {}'.format(facade_name,
+ connection.facades))
c = lookup_facade(cls.__name__, version)
c = c()
--- /dev/null
+[
+ {
+ "Name": "Action",
+ "Version": 3,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Actions": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ActionResults"
+ }
+ }
+ },
+ "ApplicationsCharmsActions": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ApplicationsCharmActionsResults"
+ }
+ }
+ },
+ "Cancel": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ActionResults"
+ }
+ }
+ },
+ "Enqueue": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Actions"
+ },
+ "Result": {
+ "$ref": "#/definitions/ActionResults"
+ }
+ }
+ },
+ "FindActionTagsByPrefix": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/FindTags"
+ },
+ "Result": {
+ "$ref": "#/definitions/FindTagsResults"
+ }
+ }
+ },
+ "FindActionsByNames": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/FindActionsByNames"
+ },
+ "Result": {
+ "$ref": "#/definitions/ActionsByNames"
+ }
+ }
+ },
+ "ListAll": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ActionsByReceivers"
+ }
+ }
+ },
+ "ListCompleted": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ActionsByReceivers"
+ }
+ }
+ },
+ "ListPending": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ActionsByReceivers"
+ }
+ }
+ },
+ "ListRunning": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ActionsByReceivers"
+ }
+ }
+ },
+ "Run": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RunParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ActionResults"
+ }
+ }
+ },
+ "RunOnAllMachines": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RunParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ActionResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Action": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "parameters": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "receiver": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "receiver",
+ "name"
+ ]
+ },
+ "ActionResult": {
+ "type": "object",
+ "properties": {
+ "action": {
+ "$ref": "#/definitions/Action"
+ },
+ "completed": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "enqueued": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "message": {
+ "type": "string"
+ },
+ "output": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "started": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ActionResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ActionResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "ActionSpec": {
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "params": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "description",
+ "params"
+ ]
+ },
+ "Actions": {
+ "type": "object",
+ "properties": {
+ "actions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Action"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "ActionsByName": {
+ "type": "object",
+ "properties": {
+ "actions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ActionResult"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "name": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ActionsByNames": {
+ "type": "object",
+ "properties": {
+ "actions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ActionsByName"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "ActionsByReceiver": {
+ "type": "object",
+ "properties": {
+ "actions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ActionResult"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "receiver": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ActionsByReceivers": {
+ "type": "object",
+ "properties": {
+ "actions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ActionsByReceiver"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "ApplicationCharmActionsResult": {
+ "type": "object",
+ "properties": {
+ "actions": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/ActionSpec"
+ }
+ }
+ },
+ "application-tag": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ApplicationsCharmActionsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ApplicationCharmActionsResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "FindActionsByNames": {
+ "type": "object",
+ "properties": {
+ "names": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "FindTags": {
+ "type": "object",
+ "properties": {
+ "prefixes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "prefixes"
+ ]
+ },
+ "FindTagsResults": {
+ "type": "object",
+ "properties": {
+ "matches": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "matches"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "RunParams": {
+ "type": "object",
+ "properties": {
+ "applications": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "commands": {
+ "type": "string"
+ },
+ "machines": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "timeout": {
+ "type": "integer"
+ },
+ "units": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "commands",
+ "timeout"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "ActionPruner",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ModelConfig": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelConfigResult"
+ }
+ }
+ },
+ "Prune": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ActionPruneArgs"
+ }
+ }
+ },
+ "WatchForModelConfigChanges": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "ActionPruneArgs": {
+ "type": "object",
+ "properties": {
+ "max-history-mb": {
+ "type": "integer"
+ },
+ "max-history-time": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "max-history-time",
+ "max-history-mb"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "ModelConfigResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Agent",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ClearReboot": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "CloudSpec": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/CloudSpecResults"
+ }
+ }
+ },
+ "ControllerAPIInfoForModels": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ControllerAPIInfoResults"
+ }
+ }
+ },
+ "ControllerConfig": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ControllerConfigResult"
+ }
+ }
+ },
+ "GetCloudSpec": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModelTag"
+ },
+ "Result": {
+ "$ref": "#/definitions/CloudSpecResult"
+ }
+ }
+ },
+ "GetEntities": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/AgentGetEntitiesResults"
+ }
+ }
+ },
+ "IsMaster": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/IsMasterResult"
+ }
+ }
+ },
+ "ModelConfig": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelConfigResult"
+ }
+ }
+ },
+ "SetPasswords": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/EntityPasswords"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "StateServingInfo": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StateServingInfo"
+ }
+ }
+ },
+ "WatchCredentials": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ },
+ "WatchForModelConfigChanges": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "AgentGetEntitiesResult": {
+ "type": "object",
+ "properties": {
+ "container-type": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "jobs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "life": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "life",
+ "jobs",
+ "container-type"
+ ]
+ },
+ "AgentGetEntitiesResults": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AgentGetEntitiesResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "CloudCredential": {
+ "type": "object",
+ "properties": {
+ "attrs": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "auth-type": {
+ "type": "string"
+ },
+ "redacted": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "auth-type"
+ ]
+ },
+ "CloudSpec": {
+ "type": "object",
+ "properties": {
+ "cacertificates": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "credential": {
+ "$ref": "#/definitions/CloudCredential"
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "identity-endpoint": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "storage-endpoint": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "type",
+ "name"
+ ]
+ },
+ "CloudSpecResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/CloudSpec"
+ }
+ },
+ "additionalProperties": false
+ },
+ "CloudSpecResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CloudSpecResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "ControllerAPIInfoResult": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "cacert": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "addresses",
+ "cacert"
+ ]
+ },
+ "ControllerAPIInfoResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ControllerAPIInfoResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ControllerConfigResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityPassword": {
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "password"
+ ]
+ },
+ "EntityPasswords": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityPassword"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "changes"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "IsMasterResult": {
+ "type": "object",
+ "properties": {
+ "master": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "master"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "ModelConfigResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "ModelTag": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StateServingInfo": {
+ "type": "object",
+ "properties": {
+ "api-port": {
+ "type": "integer"
+ },
+ "ca-private-key": {
+ "type": "string"
+ },
+ "cert": {
+ "type": "string"
+ },
+ "controller-api-port": {
+ "type": "integer"
+ },
+ "private-key": {
+ "type": "string"
+ },
+ "shared-secret": {
+ "type": "string"
+ },
+ "state-port": {
+ "type": "integer"
+ },
+ "system-identity": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "api-port",
+ "state-port",
+ "cert",
+ "private-key",
+ "ca-private-key",
+ "shared-secret",
+ "system-identity"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "AgentTools",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "UpdateToolsAvailable": {
+ "type": "object"
+ }
+ }
+ }
+ },
+ {
+ "Name": "AllModelWatcher",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Next": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/AllWatcherNextResults"
+ }
+ }
+ },
+ "Stop": {
+ "type": "object"
+ }
+ },
+ "definitions": {
+ "AllWatcherNextResults": {
+ "type": "object",
+ "properties": {
+ "deltas": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Delta"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "deltas"
+ ]
+ },
+ "Delta": {
+ "type": "object",
+ "properties": {
+ "entity": {
+ "type": "object",
+ "additionalProperties": true
+ },
+ "removed": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "removed",
+ "entity"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "AllWatcher",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Next": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/AllWatcherNextResults"
+ }
+ }
+ },
+ "Stop": {
+ "type": "object"
+ }
+ },
+ "definitions": {
+ "AllWatcherNextResults": {
+ "type": "object",
+ "properties": {
+ "deltas": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Delta"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "deltas"
+ ]
+ },
+ "Delta": {
+ "type": "object",
+ "properties": {
+ "entity": {
+ "type": "object",
+ "additionalProperties": true
+ },
+ "removed": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "removed",
+ "entity"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Annotations",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Get": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/AnnotationsGetResults"
+ }
+ }
+ },
+ "Set": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/AnnotationsSet"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "AnnotationsGetResult": {
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "entity": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entity",
+ "annotations"
+ ]
+ },
+ "AnnotationsGetResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AnnotationsGetResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "AnnotationsSet": {
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityAnnotations"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "annotations"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityAnnotations": {
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "entity": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entity",
+ "annotations"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "Application",
+ "Version": 8,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AddRelation": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/AddRelation"
+ },
+ "Result": {
+ "$ref": "#/definitions/AddRelationResults"
+ }
+ }
+ },
+ "AddUnits": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/AddApplicationUnits"
+ },
+ "Result": {
+ "$ref": "#/definitions/AddApplicationUnitsResults"
+ }
+ }
+ },
+ "CharmConfig": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ApplicationGetConfigResults"
+ }
+ }
+ },
+ "CharmRelations": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ApplicationCharmRelations"
+ },
+ "Result": {
+ "$ref": "#/definitions/ApplicationCharmRelationsResults"
+ }
+ }
+ },
+ "Consume": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ConsumeApplicationArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Deploy": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ApplicationsDeploy"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Destroy": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ApplicationDestroy"
+ }
+ }
+ },
+ "DestroyApplication": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/DestroyApplicationsParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/DestroyApplicationResults"
+ }
+ }
+ },
+ "DestroyConsumedApplications": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/DestroyConsumedApplicationsParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "DestroyRelation": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/DestroyRelation"
+ }
+ }
+ },
+ "DestroyUnit": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/DestroyUnitsParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/DestroyUnitResults"
+ }
+ }
+ },
+ "DestroyUnits": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/DestroyApplicationUnits"
+ }
+ }
+ },
+ "Expose": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ApplicationExpose"
+ }
+ }
+ },
+ "Get": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ApplicationGet"
+ },
+ "Result": {
+ "$ref": "#/definitions/ApplicationGetResults"
+ }
+ }
+ },
+ "GetCharmURL": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ApplicationGet"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "GetConfig": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ApplicationGetConfigResults"
+ }
+ }
+ },
+ "GetConstraints": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ApplicationGetConstraintsResults"
+ }
+ }
+ },
+ "GetLXDProfileUpgradeMessages": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/LXDProfileUpgradeMessages"
+ },
+ "Result": {
+ "$ref": "#/definitions/LXDProfileUpgradeMessagesResults"
+ }
+ }
+ },
+ "ResolveUnitErrors": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UnitsResolved"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "ScaleApplications": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ScaleApplicationsParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ScaleApplicationResults"
+ }
+ }
+ },
+ "Set": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ApplicationSet"
+ }
+ }
+ },
+ "SetApplicationsConfig": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ApplicationConfigSetArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetCharm": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ApplicationSetCharm"
+ }
+ }
+ },
+ "SetCharmProfile": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ApplicationSetCharmProfile"
+ }
+ }
+ },
+ "SetConstraints": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetConstraints"
+ }
+ }
+ },
+ "SetMetricCredentials": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ApplicationMetricCredentials"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetRelationsSuspended": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RelationSuspendedArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Unexpose": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ApplicationUnexpose"
+ }
+ }
+ },
+ "Unset": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ApplicationUnset"
+ }
+ }
+ },
+ "UnsetApplicationsConfig": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ApplicationConfigUnsetArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Update": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ApplicationUpdate"
+ }
+ }
+ },
+ "UpdateApplicationSeries": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UpdateSeriesArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "WatchLXDProfileUpgradeNotifications": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entity"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "AddApplicationUnits": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ },
+ "attach-storage": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "num-units": {
+ "type": "integer"
+ },
+ "placement": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Placement"
+ }
+ },
+ "policy": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application",
+ "num-units",
+ "placement"
+ ]
+ },
+ "AddApplicationUnitsResults": {
+ "type": "object",
+ "properties": {
+ "units": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "units"
+ ]
+ },
+ "AddRelation": {
+ "type": "object",
+ "properties": {
+ "endpoints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "via-cidrs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "endpoints"
+ ]
+ },
+ "AddRelationResults": {
+ "type": "object",
+ "properties": {
+ "endpoints": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/CharmRelation"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "endpoints"
+ ]
+ },
+ "ApplicationCharmRelations": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application"
+ ]
+ },
+ "ApplicationCharmRelationsResults": {
+ "type": "object",
+ "properties": {
+ "charm-relations": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "charm-relations"
+ ]
+ },
+ "ApplicationConfigSet": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ },
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application",
+ "config"
+ ]
+ },
+ "ApplicationConfigSetArgs": {
+ "type": "object",
+ "properties": {
+ "Args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ApplicationConfigSet"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Args"
+ ]
+ },
+ "ApplicationConfigUnsetArgs": {
+ "type": "object",
+ "properties": {
+ "Args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ApplicationUnset"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Args"
+ ]
+ },
+ "ApplicationConstraint": {
+ "type": "object",
+ "properties": {
+ "constraints": {
+ "$ref": "#/definitions/Value"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "constraints"
+ ]
+ },
+ "ApplicationDeploy": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ },
+ "attach-storage": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "channel": {
+ "type": "string"
+ },
+ "charm-url": {
+ "type": "string"
+ },
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "config-yaml": {
+ "type": "string"
+ },
+ "constraints": {
+ "$ref": "#/definitions/Value"
+ },
+ "devices": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/Constraints"
+ }
+ }
+ },
+ "endpoint-bindings": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "num-units": {
+ "type": "integer"
+ },
+ "placement": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Placement"
+ }
+ },
+ "policy": {
+ "type": "string"
+ },
+ "resources": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "series": {
+ "type": "string"
+ },
+ "storage": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/Constraints"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application",
+ "series",
+ "charm-url",
+ "channel",
+ "num-units",
+ "config-yaml",
+ "constraints"
+ ]
+ },
+ "ApplicationDestroy": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application"
+ ]
+ },
+ "ApplicationExpose": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application"
+ ]
+ },
+ "ApplicationGet": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application"
+ ]
+ },
+ "ApplicationGetConfigResults": {
+ "type": "object",
+ "properties": {
+ "Results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ConfigResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Results"
+ ]
+ },
+ "ApplicationGetConstraintsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ApplicationConstraint"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ApplicationGetResults": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ },
+ "application-config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "charm": {
+ "type": "string"
+ },
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "constraints": {
+ "$ref": "#/definitions/Value"
+ },
+ "series": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application",
+ "charm",
+ "config",
+ "constraints",
+ "series"
+ ]
+ },
+ "ApplicationMetricCredential": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ },
+ "metrics-credentials": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application",
+ "metrics-credentials"
+ ]
+ },
+ "ApplicationMetricCredentials": {
+ "type": "object",
+ "properties": {
+ "creds": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ApplicationMetricCredential"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "creds"
+ ]
+ },
+ "ApplicationOfferDetails": {
+ "type": "object",
+ "properties": {
+ "application-description": {
+ "type": "string"
+ },
+ "bindings": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "endpoints": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoteEndpoint"
+ }
+ },
+ "offer-name": {
+ "type": "string"
+ },
+ "offer-url": {
+ "type": "string"
+ },
+ "offer-uuid": {
+ "type": "string"
+ },
+ "source-model-tag": {
+ "type": "string"
+ },
+ "spaces": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoteSpace"
+ }
+ },
+ "users": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/OfferUserDetails"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "source-model-tag",
+ "offer-uuid",
+ "offer-url",
+ "offer-name",
+ "application-description"
+ ]
+ },
+ "ApplicationSet": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ },
+ "options": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application",
+ "options"
+ ]
+ },
+ "ApplicationSetCharm": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ },
+ "channel": {
+ "type": "string"
+ },
+ "charm-url": {
+ "type": "string"
+ },
+ "config-settings": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "config-settings-yaml": {
+ "type": "string"
+ },
+ "force": {
+ "type": "boolean"
+ },
+ "force-series": {
+ "type": "boolean"
+ },
+ "force-units": {
+ "type": "boolean"
+ },
+ "resource-ids": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "storage-constraints": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/StorageConstraints"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application",
+ "charm-url",
+ "channel",
+ "force",
+ "force-units",
+ "force-series"
+ ]
+ },
+ "ApplicationSetCharmProfile": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ },
+ "charm-url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application",
+ "charm-url"
+ ]
+ },
+ "ApplicationUnexpose": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application"
+ ]
+ },
+ "ApplicationUnset": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ },
+ "options": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application",
+ "options"
+ ]
+ },
+ "ApplicationUpdate": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ },
+ "charm-url": {
+ "type": "string"
+ },
+ "constraints": {
+ "$ref": "#/definitions/Value"
+ },
+ "force": {
+ "type": "boolean"
+ },
+ "force-charm-url": {
+ "type": "boolean"
+ },
+ "force-series": {
+ "type": "boolean"
+ },
+ "min-units": {
+ "type": "integer"
+ },
+ "settings": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "settings-yaml": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application",
+ "charm-url",
+ "force-charm-url",
+ "force-series",
+ "force",
+ "settings-yaml"
+ ]
+ },
+ "ApplicationsDeploy": {
+ "type": "object",
+ "properties": {
+ "applications": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ApplicationDeploy"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "applications"
+ ]
+ },
+ "CharmRelation": {
+ "type": "object",
+ "properties": {
+ "interface": {
+ "type": "string"
+ },
+ "limit": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "optional": {
+ "type": "boolean"
+ },
+ "role": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "role",
+ "interface",
+ "optional",
+ "limit",
+ "scope"
+ ]
+ },
+ "ConfigResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "Constraints": {
+ "type": "object",
+ "properties": {
+ "Count": {
+ "type": "integer"
+ },
+ "Pool": {
+ "type": "string"
+ },
+ "Size": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Pool",
+ "Size",
+ "Count"
+ ]
+ },
+ "ConsumeApplicationArg": {
+ "type": "object",
+ "properties": {
+ "ApplicationOfferDetails": {
+ "$ref": "#/definitions/ApplicationOfferDetails"
+ },
+ "application-alias": {
+ "type": "string"
+ },
+ "external-controller": {
+ "$ref": "#/definitions/ExternalControllerInfo"
+ },
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ApplicationOfferDetails"
+ ]
+ },
+ "ConsumeApplicationArgs": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ConsumeApplicationArg"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "DestroyApplicationInfo": {
+ "type": "object",
+ "properties": {
+ "destroyed-storage": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ },
+ "destroyed-units": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ },
+ "detached-storage": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "DestroyApplicationParams": {
+ "type": "object",
+ "properties": {
+ "application-tag": {
+ "type": "string"
+ },
+ "destroy-storage": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application-tag"
+ ]
+ },
+ "DestroyApplicationResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "info": {
+ "$ref": "#/definitions/DestroyApplicationInfo"
+ }
+ },
+ "additionalProperties": false
+ },
+ "DestroyApplicationResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DestroyApplicationResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "DestroyApplicationUnits": {
+ "type": "object",
+ "properties": {
+ "unit-names": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "unit-names"
+ ]
+ },
+ "DestroyApplicationsParams": {
+ "type": "object",
+ "properties": {
+ "applications": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DestroyApplicationParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "applications"
+ ]
+ },
+ "DestroyConsumedApplicationParams": {
+ "type": "object",
+ "properties": {
+ "application-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application-tag"
+ ]
+ },
+ "DestroyConsumedApplicationsParams": {
+ "type": "object",
+ "properties": {
+ "applications": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DestroyConsumedApplicationParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "applications"
+ ]
+ },
+ "DestroyRelation": {
+ "type": "object",
+ "properties": {
+ "endpoints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "relation-id": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation-id"
+ ]
+ },
+ "DestroyUnitInfo": {
+ "type": "object",
+ "properties": {
+ "destroyed-storage": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ },
+ "detached-storage": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "DestroyUnitParams": {
+ "type": "object",
+ "properties": {
+ "destroy-storage": {
+ "type": "boolean"
+ },
+ "unit-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "unit-tag"
+ ]
+ },
+ "DestroyUnitResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "info": {
+ "$ref": "#/definitions/DestroyUnitInfo"
+ }
+ },
+ "additionalProperties": false
+ },
+ "DestroyUnitResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DestroyUnitResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "DestroyUnitsParams": {
+ "type": "object",
+ "properties": {
+ "units": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DestroyUnitParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "units"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ExternalControllerInfo": {
+ "type": "object",
+ "properties": {
+ "addrs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "ca-cert": {
+ "type": "string"
+ },
+ "controller-alias": {
+ "type": "string"
+ },
+ "controller-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "controller-tag",
+ "controller-alias",
+ "addrs",
+ "ca-cert"
+ ]
+ },
+ "LXDProfileUpgradeMessages": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "$ref": "#/definitions/Entity"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application",
+ "watcher-id"
+ ]
+ },
+ "LXDProfileUpgradeMessagesResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "message": {
+ "type": "string"
+ },
+ "unit-name": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "unit-name",
+ "message"
+ ]
+ },
+ "LXDProfileUpgradeMessagesResults": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/LXDProfileUpgradeMessagesResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "args"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "OfferUserDetails": {
+ "type": "object",
+ "properties": {
+ "access": {
+ "type": "string"
+ },
+ "display-name": {
+ "type": "string"
+ },
+ "user": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "user",
+ "display-name",
+ "access"
+ ]
+ },
+ "Placement": {
+ "type": "object",
+ "properties": {
+ "directive": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "scope",
+ "directive"
+ ]
+ },
+ "RelationSuspendedArg": {
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "relation-id": {
+ "type": "integer"
+ },
+ "suspended": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation-id",
+ "message",
+ "suspended"
+ ]
+ },
+ "RelationSuspendedArgs": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelationSuspendedArg"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "args"
+ ]
+ },
+ "RemoteEndpoint": {
+ "type": "object",
+ "properties": {
+ "interface": {
+ "type": "string"
+ },
+ "limit": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "role": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "role",
+ "interface",
+ "limit"
+ ]
+ },
+ "RemoteSpace": {
+ "type": "object",
+ "properties": {
+ "cloud-type": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "provider-attributes": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Subnet"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "cloud-type",
+ "name",
+ "provider-id",
+ "provider-attributes",
+ "subnets"
+ ]
+ },
+ "ScaleApplicationInfo": {
+ "type": "object",
+ "properties": {
+ "num-units": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "num-units"
+ ]
+ },
+ "ScaleApplicationParams": {
+ "type": "object",
+ "properties": {
+ "application-tag": {
+ "type": "string"
+ },
+ "scale": {
+ "type": "integer"
+ },
+ "scale-change": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application-tag",
+ "scale"
+ ]
+ },
+ "ScaleApplicationResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "info": {
+ "$ref": "#/definitions/ScaleApplicationInfo"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ScaleApplicationResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ScaleApplicationResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "ScaleApplicationsParams": {
+ "type": "object",
+ "properties": {
+ "applications": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ScaleApplicationParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "applications"
+ ]
+ },
+ "SetConstraints": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ },
+ "constraints": {
+ "$ref": "#/definitions/Value"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application",
+ "constraints"
+ ]
+ },
+ "StorageConstraints": {
+ "type": "object",
+ "properties": {
+ "count": {
+ "type": "integer"
+ },
+ "pool": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "Subnet": {
+ "type": "object",
+ "properties": {
+ "cidr": {
+ "type": "string"
+ },
+ "life": {
+ "type": "string"
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "provider-network-id": {
+ "type": "string"
+ },
+ "provider-space-id": {
+ "type": "string"
+ },
+ "space-tag": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "vlan-tag": {
+ "type": "integer"
+ },
+ "zones": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "cidr",
+ "vlan-tag",
+ "life",
+ "space-tag",
+ "zones"
+ ]
+ },
+ "UnitsResolved": {
+ "type": "object",
+ "properties": {
+ "all": {
+ "type": "boolean"
+ },
+ "retry": {
+ "type": "boolean"
+ },
+ "tags": {
+ "$ref": "#/definitions/Entities"
+ }
+ },
+ "additionalProperties": false
+ },
+ "UpdateSeriesArg": {
+ "type": "object",
+ "properties": {
+ "force": {
+ "type": "boolean"
+ },
+ "series": {
+ "type": "string"
+ },
+ "tag": {
+ "$ref": "#/definitions/Entity"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "force",
+ "series"
+ ]
+ },
+ "UpdateSeriesArgs": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UpdateSeriesArg"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "args"
+ ]
+ },
+ "Value": {
+ "type": "object",
+ "properties": {
+ "arch": {
+ "type": "string"
+ },
+ "container": {
+ "type": "string"
+ },
+ "cores": {
+ "type": "integer"
+ },
+ "cpu-power": {
+ "type": "integer"
+ },
+ "instance-type": {
+ "type": "string"
+ },
+ "mem": {
+ "type": "integer"
+ },
+ "root-disk": {
+ "type": "integer"
+ },
+ "spaces": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "virt-type": {
+ "type": "string"
+ },
+ "zones": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "ApplicationOffers",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ApplicationOffers": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/OfferURLs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ApplicationOffersResults"
+ }
+ }
+ },
+ "DestroyOffers": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/DestroyApplicationOffers"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "FindApplicationOffers": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/OfferFilters"
+ },
+ "Result": {
+ "$ref": "#/definitions/QueryApplicationOffersResults"
+ }
+ }
+ },
+ "GetConsumeDetails": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/OfferURLs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ConsumeOfferDetailsResults"
+ }
+ }
+ },
+ "ListApplicationOffers": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/OfferFilters"
+ },
+ "Result": {
+ "$ref": "#/definitions/QueryApplicationOffersResults"
+ }
+ }
+ },
+ "ModifyOfferAccess": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModifyOfferAccessRequest"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Offer": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/AddApplicationOffers"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "RemoteApplicationInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/OfferURLs"
+ },
+ "Result": {
+ "$ref": "#/definitions/RemoteApplicationInfoResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "AddApplicationOffer": {
+ "type": "object",
+ "properties": {
+ "application-description": {
+ "type": "string"
+ },
+ "application-name": {
+ "type": "string"
+ },
+ "endpoints": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "model-tag": {
+ "type": "string"
+ },
+ "offer-name": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model-tag",
+ "offer-name",
+ "application-name",
+ "application-description",
+ "endpoints"
+ ]
+ },
+ "AddApplicationOffers": {
+ "type": "object",
+ "properties": {
+ "Offers": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AddApplicationOffer"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Offers"
+ ]
+ },
+ "ApplicationOfferAdminDetails": {
+ "type": "object",
+ "properties": {
+ "ApplicationOfferDetails": {
+ "$ref": "#/definitions/ApplicationOfferDetails"
+ },
+ "application-name": {
+ "type": "string"
+ },
+ "charm-url": {
+ "type": "string"
+ },
+ "connections": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/OfferConnection"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ApplicationOfferDetails",
+ "application-name",
+ "charm-url"
+ ]
+ },
+ "ApplicationOfferDetails": {
+ "type": "object",
+ "properties": {
+ "application-description": {
+ "type": "string"
+ },
+ "bindings": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "endpoints": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoteEndpoint"
+ }
+ },
+ "offer-name": {
+ "type": "string"
+ },
+ "offer-url": {
+ "type": "string"
+ },
+ "offer-uuid": {
+ "type": "string"
+ },
+ "source-model-tag": {
+ "type": "string"
+ },
+ "spaces": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoteSpace"
+ }
+ },
+ "users": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/OfferUserDetails"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "source-model-tag",
+ "offer-uuid",
+ "offer-url",
+ "offer-name",
+ "application-description"
+ ]
+ },
+ "ApplicationOfferResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/ApplicationOfferAdminDetails"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ApplicationOffersResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ApplicationOfferResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "ConsumeOfferDetails": {
+ "type": "object",
+ "properties": {
+ "external-controller": {
+ "$ref": "#/definitions/ExternalControllerInfo"
+ },
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "offer": {
+ "$ref": "#/definitions/ApplicationOfferDetails"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ConsumeOfferDetailsResult": {
+ "type": "object",
+ "properties": {
+ "ConsumeOfferDetails": {
+ "$ref": "#/definitions/ConsumeOfferDetails"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ConsumeOfferDetails"
+ ]
+ },
+ "ConsumeOfferDetailsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ConsumeOfferDetailsResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "DestroyApplicationOffers": {
+ "type": "object",
+ "properties": {
+ "force": {
+ "type": "boolean"
+ },
+ "offer-urls": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "offer-urls"
+ ]
+ },
+ "EndpointFilterAttributes": {
+ "type": "object",
+ "properties": {
+ "interface": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "role": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "role",
+ "interface",
+ "name"
+ ]
+ },
+ "EntityStatus": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "since": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "status",
+ "info",
+ "since"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ExternalControllerInfo": {
+ "type": "object",
+ "properties": {
+ "addrs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "ca-cert": {
+ "type": "string"
+ },
+ "controller-alias": {
+ "type": "string"
+ },
+ "controller-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "controller-tag",
+ "controller-alias",
+ "addrs",
+ "ca-cert"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "ModifyOfferAccess": {
+ "type": "object",
+ "properties": {
+ "access": {
+ "type": "string"
+ },
+ "action": {
+ "type": "string"
+ },
+ "offer-url": {
+ "type": "string"
+ },
+ "user-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "user-tag",
+ "action",
+ "access",
+ "offer-url"
+ ]
+ },
+ "ModifyOfferAccessRequest": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModifyOfferAccess"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "changes"
+ ]
+ },
+ "OfferConnection": {
+ "type": "object",
+ "properties": {
+ "endpoint": {
+ "type": "string"
+ },
+ "ingress-subnets": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "relation-id": {
+ "type": "integer"
+ },
+ "source-model-tag": {
+ "type": "string"
+ },
+ "status": {
+ "$ref": "#/definitions/EntityStatus"
+ },
+ "username": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "source-model-tag",
+ "relation-id",
+ "username",
+ "endpoint",
+ "status",
+ "ingress-subnets"
+ ]
+ },
+ "OfferFilter": {
+ "type": "object",
+ "properties": {
+ "allowed-users": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "application-description": {
+ "type": "string"
+ },
+ "application-name": {
+ "type": "string"
+ },
+ "application-user": {
+ "type": "string"
+ },
+ "connected-users": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "endpoints": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EndpointFilterAttributes"
+ }
+ },
+ "model-name": {
+ "type": "string"
+ },
+ "offer-name": {
+ "type": "string"
+ },
+ "owner-name": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "owner-name",
+ "model-name",
+ "offer-name",
+ "application-name",
+ "application-description",
+ "application-user",
+ "endpoints",
+ "connected-users",
+ "allowed-users"
+ ]
+ },
+ "OfferFilters": {
+ "type": "object",
+ "properties": {
+ "Filters": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/OfferFilter"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Filters"
+ ]
+ },
+ "OfferURLs": {
+ "type": "object",
+ "properties": {
+ "offer-urls": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "OfferUserDetails": {
+ "type": "object",
+ "properties": {
+ "access": {
+ "type": "string"
+ },
+ "display-name": {
+ "type": "string"
+ },
+ "user": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "user",
+ "display-name",
+ "access"
+ ]
+ },
+ "QueryApplicationOffersResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ApplicationOfferAdminDetails"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "RemoteApplicationInfo": {
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "endpoints": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoteEndpoint"
+ }
+ },
+ "icon-url-path": {
+ "type": "string"
+ },
+ "model-tag": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "offer-url": {
+ "type": "string"
+ },
+ "source-model-label": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model-tag",
+ "name",
+ "description",
+ "offer-url",
+ "endpoints",
+ "icon-url-path"
+ ]
+ },
+ "RemoteApplicationInfoResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/RemoteApplicationInfo"
+ }
+ },
+ "additionalProperties": false
+ },
+ "RemoteApplicationInfoResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoteApplicationInfoResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "RemoteEndpoint": {
+ "type": "object",
+ "properties": {
+ "interface": {
+ "type": "string"
+ },
+ "limit": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "role": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "role",
+ "interface",
+ "limit"
+ ]
+ },
+ "RemoteSpace": {
+ "type": "object",
+ "properties": {
+ "cloud-type": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "provider-attributes": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Subnet"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "cloud-type",
+ "name",
+ "provider-id",
+ "provider-attributes",
+ "subnets"
+ ]
+ },
+ "Subnet": {
+ "type": "object",
+ "properties": {
+ "cidr": {
+ "type": "string"
+ },
+ "life": {
+ "type": "string"
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "provider-network-id": {
+ "type": "string"
+ },
+ "provider-space-id": {
+ "type": "string"
+ },
+ "space-tag": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "vlan-tag": {
+ "type": "integer"
+ },
+ "zones": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "cidr",
+ "vlan-tag",
+ "life",
+ "space-tag",
+ "zones"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "ApplicationScaler",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Rescale": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Watch": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "StringsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Backups",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Create": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/BackupsCreateArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/BackupsMetadataResult"
+ }
+ }
+ },
+ "FinishRestore": {
+ "type": "object"
+ },
+ "Info": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/BackupsInfoArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/BackupsMetadataResult"
+ }
+ }
+ },
+ "List": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/BackupsListArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/BackupsListResult"
+ }
+ }
+ },
+ "PrepareRestore": {
+ "type": "object"
+ },
+ "Remove": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/BackupsRemoveArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Restore": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RestoreArgs"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "BackupsCreateArgs": {
+ "type": "object",
+ "properties": {
+ "keep-copy": {
+ "type": "boolean"
+ },
+ "no-download": {
+ "type": "boolean"
+ },
+ "notes": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "notes",
+ "keep-copy",
+ "no-download"
+ ]
+ },
+ "BackupsInfoArgs": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ]
+ },
+ "BackupsListArgs": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "BackupsListResult": {
+ "type": "object",
+ "properties": {
+ "list": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/BackupsMetadataResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "list"
+ ]
+ },
+ "BackupsMetadataResult": {
+ "type": "object",
+ "properties": {
+ "ca-cert": {
+ "type": "string"
+ },
+ "ca-private-key": {
+ "type": "string"
+ },
+ "checksum": {
+ "type": "string"
+ },
+ "checksum-format": {
+ "type": "string"
+ },
+ "filename": {
+ "type": "string"
+ },
+ "finished": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "hostname": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ },
+ "machine": {
+ "type": "string"
+ },
+ "model": {
+ "type": "string"
+ },
+ "notes": {
+ "type": "string"
+ },
+ "series": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "started": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "stored": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "version": {
+ "$ref": "#/definitions/Number"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "checksum",
+ "checksum-format",
+ "size",
+ "stored",
+ "started",
+ "finished",
+ "notes",
+ "model",
+ "machine",
+ "hostname",
+ "version",
+ "series",
+ "ca-cert",
+ "ca-private-key",
+ "filename"
+ ]
+ },
+ "BackupsRemoveArgs": {
+ "type": "object",
+ "properties": {
+ "ids": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ids"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "Number": {
+ "type": "object",
+ "properties": {
+ "Build": {
+ "type": "integer"
+ },
+ "Major": {
+ "type": "integer"
+ },
+ "Minor": {
+ "type": "integer"
+ },
+ "Patch": {
+ "type": "integer"
+ },
+ "Tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Major",
+ "Minor",
+ "Tag",
+ "Patch",
+ "Build"
+ ]
+ },
+ "RestoreArgs": {
+ "type": "object",
+ "properties": {
+ "backup-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "backup-id"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Block",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "List": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/BlockResults"
+ }
+ }
+ },
+ "SwitchBlockOff": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/BlockSwitchParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "SwitchBlockOn": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/BlockSwitchParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Block": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "tag",
+ "type"
+ ]
+ },
+ "BlockResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/Block"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "BlockResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/BlockResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "BlockSwitchParams": {
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "type"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "Bundle",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ExportBundle": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "GetChanges": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/BundleChangesParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/BundleChangesResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "BundleChange": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ },
+ "id": {
+ "type": "string"
+ },
+ "method": {
+ "type": "string"
+ },
+ "requires": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "method",
+ "args",
+ "requires"
+ ]
+ },
+ "BundleChangesParams": {
+ "type": "object",
+ "properties": {
+ "bundleURL": {
+ "type": "string"
+ },
+ "yaml": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "yaml",
+ "bundleURL"
+ ]
+ },
+ "BundleChangesResults": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/BundleChange"
+ }
+ },
+ "errors": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "CAASAgent",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "CloudSpec": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/CloudSpecResults"
+ }
+ }
+ },
+ "GetCloudSpec": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModelTag"
+ },
+ "Result": {
+ "$ref": "#/definitions/CloudSpecResult"
+ }
+ }
+ },
+ "ModelConfig": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelConfigResult"
+ }
+ }
+ },
+ "WatchForModelConfigChanges": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "CloudCredential": {
+ "type": "object",
+ "properties": {
+ "attrs": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "auth-type": {
+ "type": "string"
+ },
+ "redacted": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "auth-type"
+ ]
+ },
+ "CloudSpec": {
+ "type": "object",
+ "properties": {
+ "cacertificates": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "credential": {
+ "$ref": "#/definitions/CloudCredential"
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "identity-endpoint": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "storage-endpoint": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "type",
+ "name"
+ ]
+ },
+ "CloudSpecResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/CloudSpec"
+ }
+ },
+ "additionalProperties": false
+ },
+ "CloudSpecResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CloudSpecResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "ModelConfigResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "ModelTag": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "CAASFirewaller",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ApplicationsConfig": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ApplicationGetConfigResults"
+ }
+ }
+ },
+ "IsExposed": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/BoolResults"
+ }
+ }
+ },
+ "Life": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/LifeResults"
+ }
+ }
+ },
+ "Watch": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ },
+ "WatchApplications": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "ApplicationGetConfigResults": {
+ "type": "object",
+ "properties": {
+ "Results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ConfigResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Results"
+ ]
+ },
+ "BoolResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "BoolResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/BoolResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ConfigResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "LifeResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "life": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "life"
+ ]
+ },
+ "LifeResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/LifeResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StringsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "CAASOperator",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "APIAddresses": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsResult"
+ }
+ }
+ },
+ "APIHostPorts": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/APIHostPortsResult"
+ }
+ }
+ },
+ "Charm": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ApplicationCharmResults"
+ }
+ }
+ },
+ "CurrentModel": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelResult"
+ }
+ }
+ },
+ "Life": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/LifeResults"
+ }
+ }
+ },
+ "ModelUUID": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "Remove": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetPodSpec": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetPodSpecParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetTools": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/EntitiesVersion"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Watch": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ },
+ "WatchAPIHostPorts": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "WatchUnits": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "APIHostPortsResult": {
+ "type": "object",
+ "properties": {
+ "servers": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/HostPort"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "servers"
+ ]
+ },
+ "Address": {
+ "type": "object",
+ "properties": {
+ "scope": {
+ "type": "string"
+ },
+ "space-name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "value",
+ "type",
+ "scope"
+ ]
+ },
+ "ApplicationCharm": {
+ "type": "object",
+ "properties": {
+ "charm-modified-version": {
+ "type": "integer"
+ },
+ "force-upgrade": {
+ "type": "boolean"
+ },
+ "sha256": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "url",
+ "sha256",
+ "charm-modified-version"
+ ]
+ },
+ "ApplicationCharmResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/ApplicationCharm"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ApplicationCharmResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ApplicationCharmResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Binary": {
+ "type": "object",
+ "properties": {
+ "Arch": {
+ "type": "string"
+ },
+ "Number": {
+ "$ref": "#/definitions/Number"
+ },
+ "Series": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Number",
+ "Series",
+ "Arch"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "EntitiesVersion": {
+ "type": "object",
+ "properties": {
+ "agent-tools": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityVersion"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "agent-tools"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityStatusArgs": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "status",
+ "info",
+ "data"
+ ]
+ },
+ "EntityString": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "value"
+ ]
+ },
+ "EntityVersion": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ },
+ "tools": {
+ "$ref": "#/definitions/Version"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "tools"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "HostPort": {
+ "type": "object",
+ "properties": {
+ "Address": {
+ "$ref": "#/definitions/Address"
+ },
+ "port": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Address",
+ "port"
+ ]
+ },
+ "LifeResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "life": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "life"
+ ]
+ },
+ "LifeResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/LifeResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "ModelResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "uuid": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "uuid",
+ "type"
+ ]
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Number": {
+ "type": "object",
+ "properties": {
+ "Build": {
+ "type": "integer"
+ },
+ "Major": {
+ "type": "integer"
+ },
+ "Minor": {
+ "type": "integer"
+ },
+ "Patch": {
+ "type": "integer"
+ },
+ "Tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Major",
+ "Minor",
+ "Tag",
+ "Patch",
+ "Build"
+ ]
+ },
+ "SetPodSpecParams": {
+ "type": "object",
+ "properties": {
+ "specs": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityString"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "specs"
+ ]
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityStatusArgs"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "StringsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StringsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ },
+ "StringsWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Version": {
+ "type": "object",
+ "properties": {
+ "version": {
+ "$ref": "#/definitions/Binary"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "version"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "CAASOperatorProvisioner",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "APIAddresses": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsResult"
+ }
+ }
+ },
+ "APIHostPorts": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/APIHostPortsResult"
+ }
+ }
+ },
+ "Life": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/LifeResults"
+ }
+ }
+ },
+ "ModelUUID": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "OperatorProvisioningInfo": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/OperatorProvisioningInfo"
+ }
+ }
+ },
+ "SetPasswords": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/EntityPasswords"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "WatchAPIHostPorts": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "WatchApplications": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "APIHostPortsResult": {
+ "type": "object",
+ "properties": {
+ "servers": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/HostPort"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "servers"
+ ]
+ },
+ "Address": {
+ "type": "object",
+ "properties": {
+ "scope": {
+ "type": "string"
+ },
+ "space-name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "value",
+ "type",
+ "scope"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityPassword": {
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "password"
+ ]
+ },
+ "EntityPasswords": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityPassword"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "changes"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "HostPort": {
+ "type": "object",
+ "properties": {
+ "Address": {
+ "$ref": "#/definitions/Address"
+ },
+ "port": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Address",
+ "port"
+ ]
+ },
+ "KubernetesFilesystemAttachmentParams": {
+ "type": "object",
+ "properties": {
+ "mount-point": {
+ "type": "string"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "read-only": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "provider"
+ ]
+ },
+ "KubernetesFilesystemParams": {
+ "type": "object",
+ "properties": {
+ "attachment": {
+ "$ref": "#/definitions/KubernetesFilesystemAttachmentParams"
+ },
+ "attributes": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "provider": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "storagename": {
+ "type": "string"
+ },
+ "tags": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "storagename",
+ "size",
+ "provider"
+ ]
+ },
+ "LifeResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "life": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "life"
+ ]
+ },
+ "LifeResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/LifeResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "Number": {
+ "type": "object",
+ "properties": {
+ "Build": {
+ "type": "integer"
+ },
+ "Major": {
+ "type": "integer"
+ },
+ "Minor": {
+ "type": "integer"
+ },
+ "Patch": {
+ "type": "integer"
+ },
+ "Tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Major",
+ "Minor",
+ "Tag",
+ "Patch",
+ "Build"
+ ]
+ },
+ "OperatorProvisioningInfo": {
+ "type": "object",
+ "properties": {
+ "api-addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "charm-storage": {
+ "$ref": "#/definitions/KubernetesFilesystemParams"
+ },
+ "image-path": {
+ "type": "string"
+ },
+ "tags": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "version": {
+ "$ref": "#/definitions/Number"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "image-path",
+ "version",
+ "api-addresses",
+ "charm-storage"
+ ]
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "StringsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StringsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "CAASUnitProvisioner",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ApplicationsConfig": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ApplicationGetConfigResults"
+ }
+ }
+ },
+ "ApplicationsScale": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/IntResults"
+ }
+ }
+ },
+ "Life": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/LifeResults"
+ }
+ }
+ },
+ "ProvisioningInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/KubernetesProvisioningInfoResults"
+ }
+ }
+ },
+ "SetOperatorStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "UpdateApplicationsService": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UpdateApplicationServiceArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "UpdateApplicationsUnits": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UpdateApplicationUnitArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "WatchApplications": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ },
+ "WatchApplicationsScale": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ },
+ "WatchPodSpec": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Address": {
+ "type": "object",
+ "properties": {
+ "scope": {
+ "type": "string"
+ },
+ "space-name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "value",
+ "type",
+ "scope"
+ ]
+ },
+ "ApplicationGetConfigResults": {
+ "type": "object",
+ "properties": {
+ "Results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ConfigResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Results"
+ ]
+ },
+ "ApplicationUnitParams": {
+ "type": "object",
+ "properties": {
+ "address": {
+ "type": "string"
+ },
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "filesystem-info": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/KubernetesFilesystemInfo"
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "ports": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "unit-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "provider-id",
+ "unit-tag",
+ "address",
+ "ports",
+ "status",
+ "info"
+ ]
+ },
+ "ConfigResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityStatusArgs": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "status",
+ "info",
+ "data"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "IntResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "IntResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/IntResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "KubernetesDeviceParams": {
+ "type": "object",
+ "properties": {
+ "Attributes": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "Count": {
+ "type": "integer"
+ },
+ "Type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Type",
+ "Count",
+ "Attributes"
+ ]
+ },
+ "KubernetesFilesystemAttachmentParams": {
+ "type": "object",
+ "properties": {
+ "mount-point": {
+ "type": "string"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "read-only": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "provider"
+ ]
+ },
+ "KubernetesFilesystemInfo": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "filesystem-id": {
+ "type": "string"
+ },
+ "info": {
+ "type": "string"
+ },
+ "mount-point": {
+ "type": "string"
+ },
+ "pool": {
+ "type": "string"
+ },
+ "read-only": {
+ "type": "boolean"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "status": {
+ "type": "string"
+ },
+ "storagename": {
+ "type": "string"
+ },
+ "volume": {
+ "$ref": "#/definitions/KubernetesVolumeInfo"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "storagename",
+ "pool",
+ "size",
+ "filesystem-id",
+ "status",
+ "info",
+ "volume"
+ ]
+ },
+ "KubernetesFilesystemParams": {
+ "type": "object",
+ "properties": {
+ "attachment": {
+ "$ref": "#/definitions/KubernetesFilesystemAttachmentParams"
+ },
+ "attributes": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "provider": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "storagename": {
+ "type": "string"
+ },
+ "tags": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "storagename",
+ "size",
+ "provider"
+ ]
+ },
+ "KubernetesProvisioningInfo": {
+ "type": "object",
+ "properties": {
+ "constraints": {
+ "$ref": "#/definitions/Value"
+ },
+ "devices": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/KubernetesDeviceParams"
+ }
+ },
+ "filesystems": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/KubernetesFilesystemParams"
+ }
+ },
+ "placement": {
+ "type": "string"
+ },
+ "pod-spec": {
+ "type": "string"
+ },
+ "tags": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "volumes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/KubernetesVolumeParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "pod-spec",
+ "constraints"
+ ]
+ },
+ "KubernetesProvisioningInfoResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/KubernetesProvisioningInfo"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "KubernetesProvisioningInfoResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/KubernetesProvisioningInfoResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "KubernetesVolumeAttachmentParams": {
+ "type": "object",
+ "properties": {
+ "provider": {
+ "type": "string"
+ },
+ "read-only": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "provider"
+ ]
+ },
+ "KubernetesVolumeInfo": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "persistent": {
+ "type": "boolean"
+ },
+ "pool": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "status": {
+ "type": "string"
+ },
+ "volume-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "volume-id",
+ "size",
+ "persistent",
+ "status",
+ "info"
+ ]
+ },
+ "KubernetesVolumeParams": {
+ "type": "object",
+ "properties": {
+ "attachment": {
+ "$ref": "#/definitions/KubernetesVolumeAttachmentParams"
+ },
+ "attributes": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "provider": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "storagename": {
+ "type": "string"
+ },
+ "tags": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "storagename",
+ "size",
+ "provider"
+ ]
+ },
+ "LifeResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "life": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "life"
+ ]
+ },
+ "LifeResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/LifeResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityStatusArgs"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "StringsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ },
+ "UpdateApplicationServiceArg": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Address"
+ }
+ },
+ "application-tag": {
+ "type": "string"
+ },
+ "provider-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application-tag",
+ "provider-id",
+ "addresses"
+ ]
+ },
+ "UpdateApplicationServiceArgs": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UpdateApplicationServiceArg"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "args"
+ ]
+ },
+ "UpdateApplicationUnitArgs": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UpdateApplicationUnits"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "args"
+ ]
+ },
+ "UpdateApplicationUnits": {
+ "type": "object",
+ "properties": {
+ "application-tag": {
+ "type": "string"
+ },
+ "units": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ApplicationUnitParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application-tag",
+ "units"
+ ]
+ },
+ "Value": {
+ "type": "object",
+ "properties": {
+ "arch": {
+ "type": "string"
+ },
+ "container": {
+ "type": "string"
+ },
+ "cores": {
+ "type": "integer"
+ },
+ "cpu-power": {
+ "type": "integer"
+ },
+ "instance-type": {
+ "type": "string"
+ },
+ "mem": {
+ "type": "integer"
+ },
+ "root-disk": {
+ "type": "integer"
+ },
+ "spaces": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "virt-type": {
+ "type": "string"
+ },
+ "zones": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "CharmRevisionUpdater",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "UpdateLatestRevisions": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "Charms",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "CharmInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/CharmURL"
+ },
+ "Result": {
+ "$ref": "#/definitions/CharmInfo"
+ }
+ }
+ },
+ "IsMetered": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/CharmURL"
+ },
+ "Result": {
+ "$ref": "#/definitions/IsMeteredResult"
+ }
+ }
+ },
+ "List": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/CharmsList"
+ },
+ "Result": {
+ "$ref": "#/definitions/CharmsListResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "CharmActionSpec": {
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "params": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "description",
+ "params"
+ ]
+ },
+ "CharmActions": {
+ "type": "object",
+ "properties": {
+ "specs": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/CharmActionSpec"
+ }
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "CharmDevice": {
+ "type": "object",
+ "properties": {
+ "CountMax": {
+ "type": "integer"
+ },
+ "CountMin": {
+ "type": "integer"
+ },
+ "Description": {
+ "type": "string"
+ },
+ "Name": {
+ "type": "string"
+ },
+ "Type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Name",
+ "Description",
+ "Type",
+ "CountMin",
+ "CountMax"
+ ]
+ },
+ "CharmInfo": {
+ "type": "object",
+ "properties": {
+ "actions": {
+ "$ref": "#/definitions/CharmActions"
+ },
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/CharmOption"
+ }
+ }
+ },
+ "lxd-profile": {
+ "$ref": "#/definitions/CharmLXDProfile"
+ },
+ "meta": {
+ "$ref": "#/definitions/CharmMeta"
+ },
+ "metrics": {
+ "$ref": "#/definitions/CharmMetrics"
+ },
+ "revision": {
+ "type": "integer"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "revision",
+ "url",
+ "config"
+ ]
+ },
+ "CharmLXDProfile": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "description": {
+ "type": "string"
+ },
+ "devices": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config",
+ "description",
+ "devices"
+ ]
+ },
+ "CharmMeta": {
+ "type": "object",
+ "properties": {
+ "categories": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "description": {
+ "type": "string"
+ },
+ "devices": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/CharmDevice"
+ }
+ }
+ },
+ "extra-bindings": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "min-juju-version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "payload-classes": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/CharmPayloadClass"
+ }
+ }
+ },
+ "peers": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/CharmRelation"
+ }
+ }
+ },
+ "provides": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/CharmRelation"
+ }
+ }
+ },
+ "requires": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/CharmRelation"
+ }
+ }
+ },
+ "resources": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/CharmResourceMeta"
+ }
+ }
+ },
+ "series": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "storage": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/CharmStorage"
+ }
+ }
+ },
+ "subordinate": {
+ "type": "boolean"
+ },
+ "summary": {
+ "type": "string"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "terms": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "summary",
+ "description",
+ "subordinate"
+ ]
+ },
+ "CharmMetric": {
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "type",
+ "description"
+ ]
+ },
+ "CharmMetrics": {
+ "type": "object",
+ "properties": {
+ "metrics": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/CharmMetric"
+ }
+ }
+ },
+ "plan": {
+ "$ref": "#/definitions/CharmPlan"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "metrics",
+ "plan"
+ ]
+ },
+ "CharmOption": {
+ "type": "object",
+ "properties": {
+ "default": {
+ "type": "object",
+ "additionalProperties": true
+ },
+ "description": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "type"
+ ]
+ },
+ "CharmPayloadClass": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "type"
+ ]
+ },
+ "CharmPlan": {
+ "type": "object",
+ "properties": {
+ "required": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "required"
+ ]
+ },
+ "CharmRelation": {
+ "type": "object",
+ "properties": {
+ "interface": {
+ "type": "string"
+ },
+ "limit": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "optional": {
+ "type": "boolean"
+ },
+ "role": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "role",
+ "interface",
+ "optional",
+ "limit",
+ "scope"
+ ]
+ },
+ "CharmResourceMeta": {
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "type",
+ "path",
+ "description"
+ ]
+ },
+ "CharmStorage": {
+ "type": "object",
+ "properties": {
+ "count-max": {
+ "type": "integer"
+ },
+ "count-min": {
+ "type": "integer"
+ },
+ "description": {
+ "type": "string"
+ },
+ "location": {
+ "type": "string"
+ },
+ "minimum-size": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "properties": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "read-only": {
+ "type": "boolean"
+ },
+ "shared": {
+ "type": "boolean"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "description",
+ "type",
+ "shared",
+ "read-only",
+ "count-min",
+ "count-max",
+ "minimum-size"
+ ]
+ },
+ "CharmURL": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "url"
+ ]
+ },
+ "CharmsList": {
+ "type": "object",
+ "properties": {
+ "names": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "names"
+ ]
+ },
+ "CharmsListResult": {
+ "type": "object",
+ "properties": {
+ "charm-urls": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "charm-urls"
+ ]
+ },
+ "IsMeteredResult": {
+ "type": "object",
+ "properties": {
+ "metered": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "metered"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Cleaner",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Cleanup": {
+ "type": "object"
+ },
+ "WatchCleanups": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Client",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "APIHostPorts": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/APIHostPortsResult"
+ }
+ }
+ },
+ "AbortCurrentUpgrade": {
+ "type": "object"
+ },
+ "AddCharm": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/AddCharm"
+ }
+ }
+ },
+ "AddCharmWithAuthorization": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/AddCharmWithAuthorization"
+ }
+ }
+ },
+ "AddMachines": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/AddMachines"
+ },
+ "Result": {
+ "$ref": "#/definitions/AddMachinesResults"
+ }
+ }
+ },
+ "AddMachinesV2": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/AddMachines"
+ },
+ "Result": {
+ "$ref": "#/definitions/AddMachinesResults"
+ }
+ }
+ },
+ "AgentVersion": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/AgentVersionResult"
+ }
+ }
+ },
+ "CACert": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/BytesResult"
+ }
+ }
+ },
+ "DestroyMachines": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/DestroyMachines"
+ }
+ }
+ },
+ "FindTools": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/FindToolsParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/FindToolsResult"
+ }
+ }
+ },
+ "FullStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/StatusParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/FullStatus"
+ }
+ }
+ },
+ "GetBundleChanges": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/BundleChangesParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/BundleChangesResults"
+ }
+ }
+ },
+ "GetModelConstraints": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/GetConstraintsResults"
+ }
+ }
+ },
+ "InjectMachines": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/AddMachines"
+ },
+ "Result": {
+ "$ref": "#/definitions/AddMachinesResults"
+ }
+ }
+ },
+ "ModelGet": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelConfigResults"
+ }
+ }
+ },
+ "ModelInfo": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelInfo"
+ }
+ }
+ },
+ "ModelSet": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModelSet"
+ }
+ }
+ },
+ "ModelUnset": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModelUnset"
+ }
+ }
+ },
+ "ModelUserInfo": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelUserInfoResults"
+ }
+ }
+ },
+ "PrivateAddress": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/PrivateAddress"
+ },
+ "Result": {
+ "$ref": "#/definitions/PrivateAddressResults"
+ }
+ }
+ },
+ "ProvisioningScript": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ProvisioningScriptParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ProvisioningScriptResult"
+ }
+ }
+ },
+ "PublicAddress": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/PublicAddress"
+ },
+ "Result": {
+ "$ref": "#/definitions/PublicAddressResults"
+ }
+ }
+ },
+ "ResolveCharms": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ResolveCharms"
+ },
+ "Result": {
+ "$ref": "#/definitions/ResolveCharmResults"
+ }
+ }
+ },
+ "Resolved": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Resolved"
+ }
+ }
+ },
+ "RetryProvisioning": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SLALevel": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "SetModelAgentVersion": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetModelAgentVersion"
+ }
+ }
+ },
+ "SetModelConstraints": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetConstraints"
+ }
+ }
+ },
+ "SetSLALevel": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModelSLA"
+ }
+ }
+ },
+ "StatusHistory": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/StatusHistoryRequests"
+ },
+ "Result": {
+ "$ref": "#/definitions/StatusHistoryResults"
+ }
+ }
+ },
+ "WatchAll": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/AllWatcherId"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "APIHostPortsResult": {
+ "type": "object",
+ "properties": {
+ "servers": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/HostPort"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "servers"
+ ]
+ },
+ "AddCharm": {
+ "type": "object",
+ "properties": {
+ "channel": {
+ "type": "string"
+ },
+ "force": {
+ "type": "boolean"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "url",
+ "channel",
+ "force"
+ ]
+ },
+ "AddCharmWithAuthorization": {
+ "type": "object",
+ "properties": {
+ "channel": {
+ "type": "string"
+ },
+ "force": {
+ "type": "boolean"
+ },
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "url",
+ "channel",
+ "macaroon",
+ "force"
+ ]
+ },
+ "AddMachineParams": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Address"
+ }
+ },
+ "constraints": {
+ "$ref": "#/definitions/Value"
+ },
+ "container-type": {
+ "type": "string"
+ },
+ "disks": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Constraints"
+ }
+ },
+ "hardware-characteristics": {
+ "$ref": "#/definitions/HardwareCharacteristics"
+ },
+ "instance-id": {
+ "type": "string"
+ },
+ "jobs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "nonce": {
+ "type": "string"
+ },
+ "parent-id": {
+ "type": "string"
+ },
+ "placement": {
+ "$ref": "#/definitions/Placement"
+ },
+ "series": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "series",
+ "constraints",
+ "jobs",
+ "parent-id",
+ "container-type",
+ "instance-id",
+ "nonce",
+ "hardware-characteristics",
+ "addresses"
+ ]
+ },
+ "AddMachines": {
+ "type": "object",
+ "properties": {
+ "params": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AddMachineParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "params"
+ ]
+ },
+ "AddMachinesResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "machine": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machine"
+ ]
+ },
+ "AddMachinesResults": {
+ "type": "object",
+ "properties": {
+ "machines": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AddMachinesResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machines"
+ ]
+ },
+ "Address": {
+ "type": "object",
+ "properties": {
+ "scope": {
+ "type": "string"
+ },
+ "space-name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "value",
+ "type",
+ "scope"
+ ]
+ },
+ "AgentVersionResult": {
+ "type": "object",
+ "properties": {
+ "version": {
+ "$ref": "#/definitions/Number"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "version"
+ ]
+ },
+ "AllWatcherId": {
+ "type": "object",
+ "properties": {
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ },
+ "ApplicationOfferStatus": {
+ "type": "object",
+ "properties": {
+ "active-connected-count": {
+ "type": "integer"
+ },
+ "application-name": {
+ "type": "string"
+ },
+ "charm": {
+ "type": "string"
+ },
+ "endpoints": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/RemoteEndpoint"
+ }
+ }
+ },
+ "err": {
+ "type": "object",
+ "additionalProperties": true
+ },
+ "offer-name": {
+ "type": "string"
+ },
+ "total-connected-count": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "offer-name",
+ "application-name",
+ "charm",
+ "endpoints",
+ "active-connected-count",
+ "total-connected-count"
+ ]
+ },
+ "ApplicationStatus": {
+ "type": "object",
+ "properties": {
+ "can-upgrade-to": {
+ "type": "string"
+ },
+ "charm": {
+ "type": "string"
+ },
+ "charm-verion": {
+ "type": "string"
+ },
+ "endpoint-bindings": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "err": {
+ "type": "object",
+ "additionalProperties": true
+ },
+ "exposed": {
+ "type": "boolean"
+ },
+ "int": {
+ "type": "integer"
+ },
+ "life": {
+ "type": "string"
+ },
+ "meter-statuses": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/MeterStatus"
+ }
+ }
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "public-address": {
+ "type": "string"
+ },
+ "relations": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "series": {
+ "type": "string"
+ },
+ "status": {
+ "$ref": "#/definitions/DetailedStatus"
+ },
+ "string": {
+ "type": "string"
+ },
+ "subordinate-to": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "units": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/UnitStatus"
+ }
+ }
+ },
+ "workload-version": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "charm",
+ "series",
+ "exposed",
+ "life",
+ "relations",
+ "can-upgrade-to",
+ "subordinate-to",
+ "units",
+ "meter-statuses",
+ "status",
+ "workload-version",
+ "charm-verion",
+ "endpoint-bindings",
+ "public-address"
+ ]
+ },
+ "Binary": {
+ "type": "object",
+ "properties": {
+ "Arch": {
+ "type": "string"
+ },
+ "Number": {
+ "$ref": "#/definitions/Number"
+ },
+ "Series": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Number",
+ "Series",
+ "Arch"
+ ]
+ },
+ "BundleChange": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ },
+ "id": {
+ "type": "string"
+ },
+ "method": {
+ "type": "string"
+ },
+ "requires": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "method",
+ "args",
+ "requires"
+ ]
+ },
+ "BundleChangesParams": {
+ "type": "object",
+ "properties": {
+ "bundleURL": {
+ "type": "string"
+ },
+ "yaml": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "yaml",
+ "bundleURL"
+ ]
+ },
+ "BundleChangesResults": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/BundleChange"
+ }
+ },
+ "errors": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "BytesResult": {
+ "type": "object",
+ "properties": {
+ "result": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "ConfigValue": {
+ "type": "object",
+ "properties": {
+ "source": {
+ "type": "string"
+ },
+ "value": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "value",
+ "source"
+ ]
+ },
+ "Constraints": {
+ "type": "object",
+ "properties": {
+ "Count": {
+ "type": "integer"
+ },
+ "Pool": {
+ "type": "string"
+ },
+ "Size": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Pool",
+ "Size",
+ "Count"
+ ]
+ },
+ "DestroyMachines": {
+ "type": "object",
+ "properties": {
+ "force": {
+ "type": "boolean"
+ },
+ "machine-names": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machine-names",
+ "force"
+ ]
+ },
+ "DetailedStatus": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "err": {
+ "type": "object",
+ "additionalProperties": true
+ },
+ "info": {
+ "type": "string"
+ },
+ "kind": {
+ "type": "string"
+ },
+ "life": {
+ "type": "string"
+ },
+ "since": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "status",
+ "info",
+ "data",
+ "since",
+ "kind",
+ "version",
+ "life"
+ ]
+ },
+ "EndpointStatus": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "role": {
+ "type": "string"
+ },
+ "subordinate": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application",
+ "name",
+ "role",
+ "subordinate"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityStatus": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "since": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "status",
+ "info",
+ "since"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "FindToolsParams": {
+ "type": "object",
+ "properties": {
+ "agentstream": {
+ "type": "string"
+ },
+ "arch": {
+ "type": "string"
+ },
+ "major": {
+ "type": "integer"
+ },
+ "minor": {
+ "type": "integer"
+ },
+ "number": {
+ "$ref": "#/definitions/Number"
+ },
+ "series": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "number",
+ "major",
+ "minor",
+ "arch",
+ "series",
+ "agentstream"
+ ]
+ },
+ "FindToolsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "list": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Tools"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "list"
+ ]
+ },
+ "FullStatus": {
+ "type": "object",
+ "properties": {
+ "applications": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/ApplicationStatus"
+ }
+ }
+ },
+ "controller-timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "machines": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/MachineStatus"
+ }
+ }
+ },
+ "model": {
+ "$ref": "#/definitions/ModelStatusInfo"
+ },
+ "offers": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/ApplicationOfferStatus"
+ }
+ }
+ },
+ "relations": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelationStatus"
+ }
+ },
+ "remote-applications": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/RemoteApplicationStatus"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model",
+ "machines",
+ "applications",
+ "remote-applications",
+ "offers",
+ "relations",
+ "controller-timestamp"
+ ]
+ },
+ "GetConstraintsResults": {
+ "type": "object",
+ "properties": {
+ "constraints": {
+ "$ref": "#/definitions/Value"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "constraints"
+ ]
+ },
+ "HardwareCharacteristics": {
+ "type": "object",
+ "properties": {
+ "arch": {
+ "type": "string"
+ },
+ "availability-zone": {
+ "type": "string"
+ },
+ "cpu-cores": {
+ "type": "integer"
+ },
+ "cpu-power": {
+ "type": "integer"
+ },
+ "mem": {
+ "type": "integer"
+ },
+ "root-disk": {
+ "type": "integer"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "History": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "statuses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DetailedStatus"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "statuses"
+ ]
+ },
+ "HostPort": {
+ "type": "object",
+ "properties": {
+ "Address": {
+ "$ref": "#/definitions/Address"
+ },
+ "port": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Address",
+ "port"
+ ]
+ },
+ "LXDProfile": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "description": {
+ "type": "string"
+ },
+ "devices": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config",
+ "description",
+ "devices"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MachineHardware": {
+ "type": "object",
+ "properties": {
+ "arch": {
+ "type": "string"
+ },
+ "availability-zone": {
+ "type": "string"
+ },
+ "cores": {
+ "type": "integer"
+ },
+ "cpu-power": {
+ "type": "integer"
+ },
+ "mem": {
+ "type": "integer"
+ },
+ "root-disk": {
+ "type": "integer"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "MachineStatus": {
+ "type": "object",
+ "properties": {
+ "agent-status": {
+ "$ref": "#/definitions/DetailedStatus"
+ },
+ "constraints": {
+ "type": "string"
+ },
+ "containers": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/MachineStatus"
+ }
+ }
+ },
+ "dns-name": {
+ "type": "string"
+ },
+ "hardware": {
+ "type": "string"
+ },
+ "has-vote": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string"
+ },
+ "instance-id": {
+ "type": "string"
+ },
+ "instance-status": {
+ "$ref": "#/definitions/DetailedStatus"
+ },
+ "ip-addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "jobs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "lxd-profiles": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/LXDProfile"
+ }
+ }
+ },
+ "network-interfaces": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/NetworkInterface"
+ }
+ }
+ },
+ "series": {
+ "type": "string"
+ },
+ "wants-vote": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "agent-status",
+ "instance-status",
+ "dns-name",
+ "instance-id",
+ "series",
+ "id",
+ "containers",
+ "constraints",
+ "hardware",
+ "jobs",
+ "has-vote",
+ "wants-vote"
+ ]
+ },
+ "MeterStatus": {
+ "type": "object",
+ "properties": {
+ "color": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "color",
+ "message"
+ ]
+ },
+ "ModelConfigResults": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/ConfigValue"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "ModelInfo": {
+ "type": "object",
+ "properties": {
+ "agent-version": {
+ "$ref": "#/definitions/Number"
+ },
+ "cloud-credential-tag": {
+ "type": "string"
+ },
+ "cloud-region": {
+ "type": "string"
+ },
+ "cloud-tag": {
+ "type": "string"
+ },
+ "controller-uuid": {
+ "type": "string"
+ },
+ "default-series": {
+ "type": "string"
+ },
+ "life": {
+ "type": "string"
+ },
+ "machines": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelMachineInfo"
+ }
+ },
+ "migration": {
+ "$ref": "#/definitions/ModelMigrationStatus"
+ },
+ "name": {
+ "type": "string"
+ },
+ "owner-tag": {
+ "type": "string"
+ },
+ "provider-type": {
+ "type": "string"
+ },
+ "sla": {
+ "$ref": "#/definitions/ModelSLAInfo"
+ },
+ "status": {
+ "$ref": "#/definitions/EntityStatus"
+ },
+ "type": {
+ "type": "string"
+ },
+ "users": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelUserInfo"
+ }
+ },
+ "uuid": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "type",
+ "uuid",
+ "controller-uuid",
+ "cloud-tag",
+ "owner-tag",
+ "life",
+ "users",
+ "machines",
+ "sla",
+ "agent-version"
+ ]
+ },
+ "ModelMachineInfo": {
+ "type": "object",
+ "properties": {
+ "hardware": {
+ "$ref": "#/definitions/MachineHardware"
+ },
+ "has-vote": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string"
+ },
+ "instance-id": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "wants-vote": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ]
+ },
+ "ModelMigrationStatus": {
+ "type": "object",
+ "properties": {
+ "end": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "start": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "status",
+ "start"
+ ]
+ },
+ "ModelSLA": {
+ "type": "object",
+ "properties": {
+ "ModelSLAInfo": {
+ "$ref": "#/definitions/ModelSLAInfo"
+ },
+ "creds": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ModelSLAInfo",
+ "creds"
+ ]
+ },
+ "ModelSLAInfo": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string"
+ },
+ "owner": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "level",
+ "owner"
+ ]
+ },
+ "ModelSet": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "ModelStatusInfo": {
+ "type": "object",
+ "properties": {
+ "available-version": {
+ "type": "string"
+ },
+ "cloud-tag": {
+ "type": "string"
+ },
+ "meter-status": {
+ "$ref": "#/definitions/MeterStatus"
+ },
+ "model-status": {
+ "$ref": "#/definitions/DetailedStatus"
+ },
+ "name": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "sla": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "type",
+ "cloud-tag",
+ "version",
+ "available-version",
+ "model-status",
+ "meter-status",
+ "sla"
+ ]
+ },
+ "ModelUnset": {
+ "type": "object",
+ "properties": {
+ "keys": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "keys"
+ ]
+ },
+ "ModelUserInfo": {
+ "type": "object",
+ "properties": {
+ "access": {
+ "type": "string"
+ },
+ "display-name": {
+ "type": "string"
+ },
+ "last-connection": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "user": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "user",
+ "display-name",
+ "last-connection",
+ "access"
+ ]
+ },
+ "ModelUserInfoResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/ModelUserInfo"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ModelUserInfoResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelUserInfoResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "NetworkInterface": {
+ "type": "object",
+ "properties": {
+ "dns-nameservers": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip-addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "is-up": {
+ "type": "boolean"
+ },
+ "mac-address": {
+ "type": "string"
+ },
+ "space": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ip-addresses",
+ "mac-address",
+ "is-up"
+ ]
+ },
+ "Number": {
+ "type": "object",
+ "properties": {
+ "Build": {
+ "type": "integer"
+ },
+ "Major": {
+ "type": "integer"
+ },
+ "Minor": {
+ "type": "integer"
+ },
+ "Patch": {
+ "type": "integer"
+ },
+ "Tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Major",
+ "Minor",
+ "Tag",
+ "Patch",
+ "Build"
+ ]
+ },
+ "Placement": {
+ "type": "object",
+ "properties": {
+ "directive": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "scope",
+ "directive"
+ ]
+ },
+ "PrivateAddress": {
+ "type": "object",
+ "properties": {
+ "target": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "target"
+ ]
+ },
+ "PrivateAddressResults": {
+ "type": "object",
+ "properties": {
+ "private-address": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "private-address"
+ ]
+ },
+ "ProvisioningScriptParams": {
+ "type": "object",
+ "properties": {
+ "data-dir": {
+ "type": "string"
+ },
+ "disable-package-commands": {
+ "type": "boolean"
+ },
+ "machine-id": {
+ "type": "string"
+ },
+ "nonce": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machine-id",
+ "nonce",
+ "data-dir",
+ "disable-package-commands"
+ ]
+ },
+ "ProvisioningScriptResult": {
+ "type": "object",
+ "properties": {
+ "script": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "script"
+ ]
+ },
+ "PublicAddress": {
+ "type": "object",
+ "properties": {
+ "target": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "target"
+ ]
+ },
+ "PublicAddressResults": {
+ "type": "object",
+ "properties": {
+ "public-address": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "public-address"
+ ]
+ },
+ "RelationStatus": {
+ "type": "object",
+ "properties": {
+ "endpoints": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EndpointStatus"
+ }
+ },
+ "id": {
+ "type": "integer"
+ },
+ "interface": {
+ "type": "string"
+ },
+ "key": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ },
+ "status": {
+ "$ref": "#/definitions/DetailedStatus"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "key",
+ "interface",
+ "scope",
+ "endpoints",
+ "status"
+ ]
+ },
+ "RemoteApplicationStatus": {
+ "type": "object",
+ "properties": {
+ "endpoints": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoteEndpoint"
+ }
+ },
+ "err": {
+ "type": "object",
+ "additionalProperties": true
+ },
+ "life": {
+ "type": "string"
+ },
+ "offer-name": {
+ "type": "string"
+ },
+ "offer-url": {
+ "type": "string"
+ },
+ "relations": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "status": {
+ "$ref": "#/definitions/DetailedStatus"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "offer-url",
+ "offer-name",
+ "endpoints",
+ "life",
+ "relations",
+ "status"
+ ]
+ },
+ "RemoteEndpoint": {
+ "type": "object",
+ "properties": {
+ "interface": {
+ "type": "string"
+ },
+ "limit": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "role": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "role",
+ "interface",
+ "limit"
+ ]
+ },
+ "ResolveCharmResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ResolveCharmResults": {
+ "type": "object",
+ "properties": {
+ "urls": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ResolveCharmResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "urls"
+ ]
+ },
+ "ResolveCharms": {
+ "type": "object",
+ "properties": {
+ "references": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "references"
+ ]
+ },
+ "Resolved": {
+ "type": "object",
+ "properties": {
+ "retry": {
+ "type": "boolean"
+ },
+ "unit-name": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "unit-name",
+ "retry"
+ ]
+ },
+ "SetConstraints": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ },
+ "constraints": {
+ "$ref": "#/definitions/Value"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application",
+ "constraints"
+ ]
+ },
+ "SetModelAgentVersion": {
+ "type": "object",
+ "properties": {
+ "force": {
+ "type": "boolean"
+ },
+ "version": {
+ "$ref": "#/definitions/Number"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "version"
+ ]
+ },
+ "StatusHistoryFilter": {
+ "type": "object",
+ "properties": {
+ "date": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "delta": {
+ "type": "integer"
+ },
+ "exclude": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "size": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "size",
+ "date",
+ "delta",
+ "exclude"
+ ]
+ },
+ "StatusHistoryRequest": {
+ "type": "object",
+ "properties": {
+ "filter": {
+ "$ref": "#/definitions/StatusHistoryFilter"
+ },
+ "historyKind": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "historyKind",
+ "size",
+ "filter",
+ "tag"
+ ]
+ },
+ "StatusHistoryRequests": {
+ "type": "object",
+ "properties": {
+ "requests": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StatusHistoryRequest"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "requests"
+ ]
+ },
+ "StatusHistoryResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "history": {
+ "$ref": "#/definitions/History"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "history"
+ ]
+ },
+ "StatusHistoryResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StatusHistoryResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StatusParams": {
+ "type": "object",
+ "properties": {
+ "patterns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "patterns"
+ ]
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "Tools": {
+ "type": "object",
+ "properties": {
+ "sha256": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "url": {
+ "type": "string"
+ },
+ "version": {
+ "$ref": "#/definitions/Binary"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "version",
+ "url",
+ "size"
+ ]
+ },
+ "UnitStatus": {
+ "type": "object",
+ "properties": {
+ "address": {
+ "type": "string"
+ },
+ "agent-status": {
+ "$ref": "#/definitions/DetailedStatus"
+ },
+ "charm": {
+ "type": "string"
+ },
+ "leader": {
+ "type": "boolean"
+ },
+ "machine": {
+ "type": "string"
+ },
+ "opened-ports": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "public-address": {
+ "type": "string"
+ },
+ "subordinates": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/UnitStatus"
+ }
+ }
+ },
+ "workload-status": {
+ "$ref": "#/definitions/DetailedStatus"
+ },
+ "workload-version": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "agent-status",
+ "workload-status",
+ "workload-version",
+ "machine",
+ "opened-ports",
+ "public-address",
+ "charm",
+ "subordinates"
+ ]
+ },
+ "Value": {
+ "type": "object",
+ "properties": {
+ "arch": {
+ "type": "string"
+ },
+ "container": {
+ "type": "string"
+ },
+ "cores": {
+ "type": "integer"
+ },
+ "cpu-power": {
+ "type": "integer"
+ },
+ "instance-type": {
+ "type": "string"
+ },
+ "mem": {
+ "type": "integer"
+ },
+ "root-disk": {
+ "type": "integer"
+ },
+ "spaces": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "virt-type": {
+ "type": "string"
+ },
+ "zones": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "Cloud",
+ "Version": 3,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AddCloud": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/AddCloudArgs"
+ }
+ }
+ },
+ "AddCredentials": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/TaggedCredentials"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "CheckCredentialsModels": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/TaggedCredentials"
+ },
+ "Result": {
+ "$ref": "#/definitions/UpdateCredentialResults"
+ }
+ }
+ },
+ "Cloud": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/CloudResults"
+ }
+ }
+ },
+ "CloudInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/CloudInfoResults"
+ }
+ }
+ },
+ "Clouds": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/CloudsResult"
+ }
+ }
+ },
+ "Credential": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/CloudCredentialResults"
+ }
+ }
+ },
+ "CredentialContents": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/CloudCredentialArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/CredentialContentResults"
+ }
+ }
+ },
+ "DefaultCloud": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "InstanceTypes": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/CloudInstanceTypesConstraints"
+ },
+ "Result": {
+ "$ref": "#/definitions/InstanceTypesResults"
+ }
+ }
+ },
+ "ListCloudInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ListCloudsRequest"
+ },
+ "Result": {
+ "$ref": "#/definitions/ListCloudInfoResults"
+ }
+ }
+ },
+ "ModifyCloudAccess": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModifyCloudAccessRequest"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "RemoveClouds": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "RevokeCredentialsCheckModels": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RevokeCredentialArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "UpdateCredentialsCheckModels": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UpdateCredentialArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/UpdateCredentialResults"
+ }
+ }
+ },
+ "UserCredentials": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UserClouds"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "AddCloudArgs": {
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "$ref": "#/definitions/Cloud"
+ },
+ "name": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "cloud",
+ "name"
+ ]
+ },
+ "Cloud": {
+ "type": "object",
+ "properties": {
+ "auth-types": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "ca-certificates": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "identity-endpoint": {
+ "type": "string"
+ },
+ "regions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CloudRegion"
+ }
+ },
+ "storage-endpoint": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "type"
+ ]
+ },
+ "CloudCredential": {
+ "type": "object",
+ "properties": {
+ "attrs": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "auth-type": {
+ "type": "string"
+ },
+ "redacted": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "auth-type"
+ ]
+ },
+ "CloudCredentialArg": {
+ "type": "object",
+ "properties": {
+ "cloud-name": {
+ "type": "string"
+ },
+ "credential-name": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "cloud-name",
+ "credential-name"
+ ]
+ },
+ "CloudCredentialArgs": {
+ "type": "object",
+ "properties": {
+ "credentials": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CloudCredentialArg"
+ }
+ },
+ "include-secrets": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "include-secrets"
+ ]
+ },
+ "CloudCredentialResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/CloudCredential"
+ }
+ },
+ "additionalProperties": false
+ },
+ "CloudCredentialResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CloudCredentialResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "CloudDetails": {
+ "type": "object",
+ "properties": {
+ "auth-types": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "identity-endpoint": {
+ "type": "string"
+ },
+ "regions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CloudRegion"
+ }
+ },
+ "storage-endpoint": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "type"
+ ]
+ },
+ "CloudInfo": {
+ "type": "object",
+ "properties": {
+ "CloudDetails": {
+ "$ref": "#/definitions/CloudDetails"
+ },
+ "users": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CloudUserInfo"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "CloudDetails",
+ "users"
+ ]
+ },
+ "CloudInfoResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/CloudInfo"
+ }
+ },
+ "additionalProperties": false
+ },
+ "CloudInfoResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CloudInfoResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "CloudInstanceTypesConstraint": {
+ "type": "object",
+ "properties": {
+ "cloud-tag": {
+ "type": "string"
+ },
+ "constraints": {
+ "$ref": "#/definitions/Value"
+ },
+ "region": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "cloud-tag",
+ "region"
+ ]
+ },
+ "CloudInstanceTypesConstraints": {
+ "type": "object",
+ "properties": {
+ "constraints": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CloudInstanceTypesConstraint"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "constraints"
+ ]
+ },
+ "CloudRegion": {
+ "type": "object",
+ "properties": {
+ "endpoint": {
+ "type": "string"
+ },
+ "identity-endpoint": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "storage-endpoint": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name"
+ ]
+ },
+ "CloudResult": {
+ "type": "object",
+ "properties": {
+ "cloud": {
+ "$ref": "#/definitions/Cloud"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "CloudResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CloudResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "CloudUserInfo": {
+ "type": "object",
+ "properties": {
+ "access": {
+ "type": "string"
+ },
+ "display-name": {
+ "type": "string"
+ },
+ "user": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "user",
+ "display-name",
+ "access"
+ ]
+ },
+ "CloudsResult": {
+ "type": "object",
+ "properties": {
+ "clouds": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/Cloud"
+ }
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "ControllerCredentialInfo": {
+ "type": "object",
+ "properties": {
+ "content": {
+ "$ref": "#/definitions/CredentialContent"
+ },
+ "models": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelAccess"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "CredentialContent": {
+ "type": "object",
+ "properties": {
+ "attrs": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "auth-type": {
+ "type": "string"
+ },
+ "cloud": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "cloud",
+ "auth-type"
+ ]
+ },
+ "CredentialContentResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/ControllerCredentialInfo"
+ }
+ },
+ "additionalProperties": false
+ },
+ "CredentialContentResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CredentialContentResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "InstanceType": {
+ "type": "object",
+ "properties": {
+ "arches": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "cost": {
+ "type": "integer"
+ },
+ "cpu-cores": {
+ "type": "integer"
+ },
+ "deprecated": {
+ "type": "boolean"
+ },
+ "memory": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "root-disk": {
+ "type": "integer"
+ },
+ "virt-type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "arches",
+ "cpu-cores",
+ "memory"
+ ]
+ },
+ "InstanceTypesResult": {
+ "type": "object",
+ "properties": {
+ "cost-currency": {
+ "type": "string"
+ },
+ "cost-divisor": {
+ "type": "integer"
+ },
+ "cost-unit": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "instance-types": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/InstanceType"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "InstanceTypesResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/InstanceTypesResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ListCloudInfo": {
+ "type": "object",
+ "properties": {
+ "CloudDetails": {
+ "$ref": "#/definitions/CloudDetails"
+ },
+ "user-access": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "CloudDetails",
+ "user-access"
+ ]
+ },
+ "ListCloudInfoResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/ListCloudInfo"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ListCloudInfoResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ListCloudInfoResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ListCloudsRequest": {
+ "type": "object",
+ "properties": {
+ "all": {
+ "type": "boolean"
+ },
+ "user-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "user-tag"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "ModelAccess": {
+ "type": "object",
+ "properties": {
+ "access": {
+ "type": "string"
+ },
+ "model": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ModifyCloudAccess": {
+ "type": "object",
+ "properties": {
+ "access": {
+ "type": "string"
+ },
+ "action": {
+ "type": "string"
+ },
+ "cloud-tag": {
+ "type": "string"
+ },
+ "user-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "user-tag",
+ "cloud-tag",
+ "action",
+ "access"
+ ]
+ },
+ "ModifyCloudAccessRequest": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModifyCloudAccess"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "changes"
+ ]
+ },
+ "RevokeCredentialArg": {
+ "type": "object",
+ "properties": {
+ "force": {
+ "type": "boolean"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "force"
+ ]
+ },
+ "RevokeCredentialArgs": {
+ "type": "object",
+ "properties": {
+ "credentials": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RevokeCredentialArg"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "credentials"
+ ]
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "StringsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StringsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "TaggedCredential": {
+ "type": "object",
+ "properties": {
+ "credential": {
+ "$ref": "#/definitions/CloudCredential"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "credential"
+ ]
+ },
+ "TaggedCredentials": {
+ "type": "object",
+ "properties": {
+ "credentials": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/TaggedCredential"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "UpdateCredentialArgs": {
+ "type": "object",
+ "properties": {
+ "credentials": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/TaggedCredential"
+ }
+ },
+ "force": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "credentials",
+ "force"
+ ]
+ },
+ "UpdateCredentialModelResult": {
+ "type": "object",
+ "properties": {
+ "errors": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uuid": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "uuid",
+ "name"
+ ]
+ },
+ "UpdateCredentialResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "models": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UpdateCredentialModelResult"
+ }
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "UpdateCredentialResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UpdateCredentialResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "UserCloud": {
+ "type": "object",
+ "properties": {
+ "cloud-tag": {
+ "type": "string"
+ },
+ "user-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "user-tag",
+ "cloud-tag"
+ ]
+ },
+ "UserClouds": {
+ "type": "object",
+ "properties": {
+ "user-clouds": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UserCloud"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "Value": {
+ "type": "object",
+ "properties": {
+ "arch": {
+ "type": "string"
+ },
+ "container": {
+ "type": "string"
+ },
+ "cores": {
+ "type": "integer"
+ },
+ "cpu-power": {
+ "type": "integer"
+ },
+ "instance-type": {
+ "type": "string"
+ },
+ "mem": {
+ "type": "integer"
+ },
+ "root-disk": {
+ "type": "integer"
+ },
+ "spaces": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "virt-type": {
+ "type": "string"
+ },
+ "zones": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "Controller",
+ "Version": 5,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AllModels": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/UserModelList"
+ }
+ }
+ },
+ "CloudSpec": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/CloudSpecResults"
+ }
+ }
+ },
+ "ConfigSet": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ControllerConfigSet"
+ }
+ }
+ },
+ "ControllerAPIInfoForModels": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ControllerAPIInfoResults"
+ }
+ }
+ },
+ "ControllerConfig": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ControllerConfigResult"
+ }
+ }
+ },
+ "DestroyController": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/DestroyControllerArgs"
+ }
+ }
+ },
+ "GetCloudSpec": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModelTag"
+ },
+ "Result": {
+ "$ref": "#/definitions/CloudSpecResult"
+ }
+ }
+ },
+ "GetControllerAccess": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/UserAccessResults"
+ }
+ }
+ },
+ "HostedModelConfigs": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/HostedModelConfigsResults"
+ }
+ }
+ },
+ "InitiateMigration": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/InitiateMigrationArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/InitiateMigrationResults"
+ }
+ }
+ },
+ "ListBlockedModels": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelBlockInfoList"
+ }
+ }
+ },
+ "ModelConfig": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelConfigResults"
+ }
+ }
+ },
+ "ModelStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ModelStatusResults"
+ }
+ }
+ },
+ "ModifyControllerAccess": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModifyControllerAccessRequest"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "RemoveBlocks": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RemoveBlocksArgs"
+ }
+ }
+ },
+ "WatchAllModels": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/AllWatcherId"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "AllWatcherId": {
+ "type": "object",
+ "properties": {
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ },
+ "CloudCredential": {
+ "type": "object",
+ "properties": {
+ "attrs": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "auth-type": {
+ "type": "string"
+ },
+ "redacted": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "auth-type"
+ ]
+ },
+ "CloudSpec": {
+ "type": "object",
+ "properties": {
+ "cacertificates": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "credential": {
+ "$ref": "#/definitions/CloudCredential"
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "identity-endpoint": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "storage-endpoint": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "type",
+ "name"
+ ]
+ },
+ "CloudSpecResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/CloudSpec"
+ }
+ },
+ "additionalProperties": false
+ },
+ "CloudSpecResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CloudSpecResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "ConfigValue": {
+ "type": "object",
+ "properties": {
+ "source": {
+ "type": "string"
+ },
+ "value": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "value",
+ "source"
+ ]
+ },
+ "ControllerAPIInfoResult": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "cacert": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "addresses",
+ "cacert"
+ ]
+ },
+ "ControllerAPIInfoResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ControllerAPIInfoResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ControllerConfigResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "ControllerConfigSet": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "DestroyControllerArgs": {
+ "type": "object",
+ "properties": {
+ "destroy-models": {
+ "type": "boolean"
+ },
+ "destroy-storage": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "destroy-models"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "HostedModelConfig": {
+ "type": "object",
+ "properties": {
+ "cloud-spec": {
+ "$ref": "#/definitions/CloudSpec"
+ },
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "name": {
+ "type": "string"
+ },
+ "owner": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "owner"
+ ]
+ },
+ "HostedModelConfigsResults": {
+ "type": "object",
+ "properties": {
+ "models": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/HostedModelConfig"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "models"
+ ]
+ },
+ "InitiateMigrationArgs": {
+ "type": "object",
+ "properties": {
+ "specs": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MigrationSpec"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "specs"
+ ]
+ },
+ "InitiateMigrationResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "migration-id": {
+ "type": "string"
+ },
+ "model-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model-tag",
+ "migration-id"
+ ]
+ },
+ "InitiateMigrationResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/InitiateMigrationResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MachineHardware": {
+ "type": "object",
+ "properties": {
+ "arch": {
+ "type": "string"
+ },
+ "availability-zone": {
+ "type": "string"
+ },
+ "cores": {
+ "type": "integer"
+ },
+ "cpu-power": {
+ "type": "integer"
+ },
+ "mem": {
+ "type": "integer"
+ },
+ "root-disk": {
+ "type": "integer"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "MigrationSpec": {
+ "type": "object",
+ "properties": {
+ "model-tag": {
+ "type": "string"
+ },
+ "target-info": {
+ "$ref": "#/definitions/MigrationTargetInfo"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model-tag",
+ "target-info"
+ ]
+ },
+ "MigrationTargetInfo": {
+ "type": "object",
+ "properties": {
+ "addrs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "auth-tag": {
+ "type": "string"
+ },
+ "ca-cert": {
+ "type": "string"
+ },
+ "controller-tag": {
+ "type": "string"
+ },
+ "macaroons": {
+ "type": "string"
+ },
+ "password": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "controller-tag",
+ "addrs",
+ "ca-cert",
+ "auth-tag"
+ ]
+ },
+ "Model": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "owner-tag": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "uuid": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "uuid",
+ "type",
+ "owner-tag"
+ ]
+ },
+ "ModelBlockInfo": {
+ "type": "object",
+ "properties": {
+ "blocks": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "model-uuid": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "owner-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "model-uuid",
+ "owner-tag",
+ "blocks"
+ ]
+ },
+ "ModelBlockInfoList": {
+ "type": "object",
+ "properties": {
+ "models": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelBlockInfo"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "ModelConfigResults": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/ConfigValue"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "ModelFilesystemInfo": {
+ "type": "object",
+ "properties": {
+ "detachable": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ]
+ },
+ "ModelMachineInfo": {
+ "type": "object",
+ "properties": {
+ "hardware": {
+ "$ref": "#/definitions/MachineHardware"
+ },
+ "has-vote": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string"
+ },
+ "instance-id": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "wants-vote": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ]
+ },
+ "ModelStatus": {
+ "type": "object",
+ "properties": {
+ "application-count": {
+ "type": "integer"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "filesystems": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelFilesystemInfo"
+ }
+ },
+ "hosted-machine-count": {
+ "type": "integer"
+ },
+ "life": {
+ "type": "string"
+ },
+ "machines": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelMachineInfo"
+ }
+ },
+ "model-tag": {
+ "type": "string"
+ },
+ "owner-tag": {
+ "type": "string"
+ },
+ "volumes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelVolumeInfo"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model-tag",
+ "life",
+ "hosted-machine-count",
+ "application-count",
+ "owner-tag"
+ ]
+ },
+ "ModelStatusResults": {
+ "type": "object",
+ "properties": {
+ "models": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelStatus"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "models"
+ ]
+ },
+ "ModelTag": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "ModelVolumeInfo": {
+ "type": "object",
+ "properties": {
+ "detachable": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ]
+ },
+ "ModifyControllerAccess": {
+ "type": "object",
+ "properties": {
+ "access": {
+ "type": "string"
+ },
+ "action": {
+ "type": "string"
+ },
+ "user-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "user-tag",
+ "action",
+ "access"
+ ]
+ },
+ "ModifyControllerAccessRequest": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModifyControllerAccess"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "changes"
+ ]
+ },
+ "RemoveBlocksArgs": {
+ "type": "object",
+ "properties": {
+ "all": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "all"
+ ]
+ },
+ "UserAccess": {
+ "type": "object",
+ "properties": {
+ "access": {
+ "type": "string"
+ },
+ "user-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "user-tag",
+ "access"
+ ]
+ },
+ "UserAccessResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/UserAccess"
+ }
+ },
+ "additionalProperties": false
+ },
+ "UserAccessResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UserAccessResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "UserModel": {
+ "type": "object",
+ "properties": {
+ "last-connection": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "model": {
+ "$ref": "#/definitions/Model"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model",
+ "last-connection"
+ ]
+ },
+ "UserModelList": {
+ "type": "object",
+ "properties": {
+ "user-models": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UserModel"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "user-models"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "CredentialManager",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "InvalidateModelCredential": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/InvalidateCredentialArg"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "InvalidateCredentialArg": {
+ "type": "object",
+ "properties": {
+ "reason": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "CredentialValidator",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "InvalidateModelCredential": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/InvalidateCredentialArg"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "ModelCredential": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelCredential"
+ }
+ }
+ },
+ "WatchCredential": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entity"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "WatchModelCredential": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "InvalidateCredentialArg": {
+ "type": "object",
+ "properties": {
+ "reason": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "ModelCredential": {
+ "type": "object",
+ "properties": {
+ "credential-tag": {
+ "type": "string"
+ },
+ "exists": {
+ "type": "boolean"
+ },
+ "model-tag": {
+ "type": "string"
+ },
+ "valid": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model-tag",
+ "credential-tag"
+ ]
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "CrossController",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ControllerInfo": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ControllerAPIInfoResults"
+ }
+ }
+ },
+ "WatchControllerInfo": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "ControllerAPIInfoResult": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "cacert": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "addresses",
+ "cacert"
+ ]
+ },
+ "ControllerAPIInfoResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ControllerAPIInfoResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "CrossModelRelations",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "PublishIngressNetworkChanges": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/IngressNetworksChanges"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "PublishRelationChanges": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RemoteRelationsChanges"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "RegisterRemoteRelations": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RegisterRemoteRelationArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/RegisterRemoteRelationResults"
+ }
+ }
+ },
+ "RelationUnitSettings": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RemoteRelationUnits"
+ },
+ "Result": {
+ "$ref": "#/definitions/SettingsResults"
+ }
+ }
+ },
+ "WatchEgressAddressesForRelations": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RemoteEntityArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ },
+ "WatchOfferStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/OfferArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/OfferStatusWatchResults"
+ }
+ }
+ },
+ "WatchRelationUnits": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RemoteEntityArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/RelationUnitsWatchResults"
+ }
+ }
+ },
+ "WatchRelationsSuspendedStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RemoteEntityArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/RelationStatusWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "EntityStatus": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "since": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "status",
+ "info",
+ "since"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "IngressNetworksChangeEvent": {
+ "type": "object",
+ "properties": {
+ "application-token": {
+ "type": "string"
+ },
+ "ingress-required": {
+ "type": "boolean"
+ },
+ "macaroons": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Macaroon"
+ }
+ },
+ "networks": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "relation-token": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation-token",
+ "application-token",
+ "ingress-required"
+ ]
+ },
+ "IngressNetworksChanges": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/IngressNetworksChangeEvent"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "OfferArg": {
+ "type": "object",
+ "properties": {
+ "macaroons": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Macaroon"
+ }
+ },
+ "offer-uuid": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "offer-uuid"
+ ]
+ },
+ "OfferArgs": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/OfferArg"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "args"
+ ]
+ },
+ "OfferStatusChange": {
+ "type": "object",
+ "properties": {
+ "offer-name": {
+ "type": "string"
+ },
+ "status": {
+ "$ref": "#/definitions/EntityStatus"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "offer-name",
+ "status"
+ ]
+ },
+ "OfferStatusWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/OfferStatusChange"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id",
+ "changes"
+ ]
+ },
+ "OfferStatusWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/OfferStatusWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "RegisterRemoteRelationArg": {
+ "type": "object",
+ "properties": {
+ "application-token": {
+ "type": "string"
+ },
+ "local-endpoint-name": {
+ "type": "string"
+ },
+ "macaroons": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Macaroon"
+ }
+ },
+ "offer-uuid": {
+ "type": "string"
+ },
+ "relation-token": {
+ "type": "string"
+ },
+ "remote-endpoint": {
+ "$ref": "#/definitions/RemoteEndpoint"
+ },
+ "remote-space": {
+ "$ref": "#/definitions/RemoteSpace"
+ },
+ "source-model-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application-token",
+ "source-model-tag",
+ "relation-token",
+ "remote-endpoint",
+ "remote-space",
+ "offer-uuid",
+ "local-endpoint-name"
+ ]
+ },
+ "RegisterRemoteRelationArgs": {
+ "type": "object",
+ "properties": {
+ "relations": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RegisterRemoteRelationArg"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relations"
+ ]
+ },
+ "RegisterRemoteRelationResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/RemoteRelationDetails"
+ }
+ },
+ "additionalProperties": false
+ },
+ "RegisterRemoteRelationResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RegisterRemoteRelationResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "RelationLifeSuspendedStatusChange": {
+ "type": "object",
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "life": {
+ "type": "string"
+ },
+ "suspended": {
+ "type": "boolean"
+ },
+ "suspended-reason": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "key",
+ "life",
+ "suspended",
+ "suspended-reason"
+ ]
+ },
+ "RelationLifeSuspendedStatusWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelationLifeSuspendedStatusChange"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id",
+ "changes"
+ ]
+ },
+ "RelationStatusWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelationLifeSuspendedStatusWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "RelationUnitsChange": {
+ "type": "object",
+ "properties": {
+ "changed": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/UnitSettings"
+ }
+ }
+ },
+ "departed": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "changed"
+ ]
+ },
+ "RelationUnitsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "$ref": "#/definitions/RelationUnitsChange"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id",
+ "changes"
+ ]
+ },
+ "RelationUnitsWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelationUnitsWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "RemoteEndpoint": {
+ "type": "object",
+ "properties": {
+ "interface": {
+ "type": "string"
+ },
+ "limit": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "role": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "role",
+ "interface",
+ "limit"
+ ]
+ },
+ "RemoteEntityArg": {
+ "type": "object",
+ "properties": {
+ "macaroons": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Macaroon"
+ }
+ },
+ "relation-token": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation-token"
+ ]
+ },
+ "RemoteEntityArgs": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoteEntityArg"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "args"
+ ]
+ },
+ "RemoteRelationChangeEvent": {
+ "type": "object",
+ "properties": {
+ "application-token": {
+ "type": "string"
+ },
+ "changed-units": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoteRelationUnitChange"
+ }
+ },
+ "departed-units": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ }
+ },
+ "force-cleanup": {
+ "type": "boolean"
+ },
+ "life": {
+ "type": "string"
+ },
+ "macaroons": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Macaroon"
+ }
+ },
+ "relation-token": {
+ "type": "string"
+ },
+ "suspended": {
+ "type": "boolean"
+ },
+ "suspended-reason": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation-token",
+ "application-token",
+ "life"
+ ]
+ },
+ "RemoteRelationDetails": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "relation-token": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation-token"
+ ]
+ },
+ "RemoteRelationUnit": {
+ "type": "object",
+ "properties": {
+ "macaroons": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Macaroon"
+ }
+ },
+ "relation-token": {
+ "type": "string"
+ },
+ "unit": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation-token",
+ "unit"
+ ]
+ },
+ "RemoteRelationUnitChange": {
+ "type": "object",
+ "properties": {
+ "settings": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "unit-id": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "unit-id"
+ ]
+ },
+ "RemoteRelationUnits": {
+ "type": "object",
+ "properties": {
+ "relation-units": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoteRelationUnit"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation-units"
+ ]
+ },
+ "RemoteRelationsChanges": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoteRelationChangeEvent"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "RemoteSpace": {
+ "type": "object",
+ "properties": {
+ "cloud-type": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "provider-attributes": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Subnet"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "cloud-type",
+ "name",
+ "provider-id",
+ "provider-attributes",
+ "subnets"
+ ]
+ },
+ "SettingsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "settings": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "settings"
+ ]
+ },
+ "SettingsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SettingsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StringsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ },
+ "StringsWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Subnet": {
+ "type": "object",
+ "properties": {
+ "cidr": {
+ "type": "string"
+ },
+ "life": {
+ "type": "string"
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "provider-network-id": {
+ "type": "string"
+ },
+ "provider-space-id": {
+ "type": "string"
+ },
+ "space-tag": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "vlan-tag": {
+ "type": "integer"
+ },
+ "zones": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "cidr",
+ "vlan-tag",
+ "life",
+ "space-tag",
+ "zones"
+ ]
+ },
+ "UnitSettings": {
+ "type": "object",
+ "properties": {
+ "version": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "version"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Deployer",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "APIAddresses": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsResult"
+ }
+ }
+ },
+ "APIHostPorts": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/APIHostPortsResult"
+ }
+ }
+ },
+ "ConnectionInfo": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/DeployerConnectionValues"
+ }
+ }
+ },
+ "Life": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/LifeResults"
+ }
+ }
+ },
+ "ModelUUID": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "Remove": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetPasswords": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/EntityPasswords"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "UpdateStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "WatchAPIHostPorts": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "WatchUnits": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "APIHostPortsResult": {
+ "type": "object",
+ "properties": {
+ "servers": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/HostPort"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "servers"
+ ]
+ },
+ "Address": {
+ "type": "object",
+ "properties": {
+ "scope": {
+ "type": "string"
+ },
+ "space-name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "value",
+ "type",
+ "scope"
+ ]
+ },
+ "DeployerConnectionValues": {
+ "type": "object",
+ "properties": {
+ "api-addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "api-addresses"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityPassword": {
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "password"
+ ]
+ },
+ "EntityPasswords": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityPassword"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "changes"
+ ]
+ },
+ "EntityStatusArgs": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "status",
+ "info",
+ "data"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "HostPort": {
+ "type": "object",
+ "properties": {
+ "Address": {
+ "$ref": "#/definitions/Address"
+ },
+ "port": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Address",
+ "port"
+ ]
+ },
+ "LifeResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "life": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "life"
+ ]
+ },
+ "LifeResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/LifeResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityStatusArgs"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "StringsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StringsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ },
+ "StringsWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "DiskManager",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "SetMachineBlockDevices": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetMachineBlockDevices"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "BlockDevice": {
+ "type": "object",
+ "properties": {
+ "BusAddress": {
+ "type": "string"
+ },
+ "DeviceLinks": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "DeviceName": {
+ "type": "string"
+ },
+ "FilesystemType": {
+ "type": "string"
+ },
+ "HardwareId": {
+ "type": "string"
+ },
+ "InUse": {
+ "type": "boolean"
+ },
+ "Label": {
+ "type": "string"
+ },
+ "MountPoint": {
+ "type": "string"
+ },
+ "Size": {
+ "type": "integer"
+ },
+ "UUID": {
+ "type": "string"
+ },
+ "WWN": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "DeviceName",
+ "DeviceLinks",
+ "Label",
+ "UUID",
+ "HardwareId",
+ "WWN",
+ "BusAddress",
+ "Size",
+ "FilesystemType",
+ "InUse",
+ "MountPoint"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MachineBlockDevices": {
+ "type": "object",
+ "properties": {
+ "block-devices": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/BlockDevice"
+ }
+ },
+ "machine": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machine"
+ ]
+ },
+ "SetMachineBlockDevices": {
+ "type": "object",
+ "properties": {
+ "machine-block-devices": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MachineBlockDevices"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machine-block-devices"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "EntityWatcher",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Next": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/EntitiesWatchResult"
+ }
+ }
+ },
+ "Stop": {
+ "type": "object"
+ }
+ },
+ "definitions": {
+ "EntitiesWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "ExternalControllerUpdater",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ExternalControllerInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ExternalControllerInfoResults"
+ }
+ }
+ },
+ "SetExternalControllerInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetExternalControllersInfoParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "WatchExternalControllers": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ExternalControllerInfo": {
+ "type": "object",
+ "properties": {
+ "addrs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "ca-cert": {
+ "type": "string"
+ },
+ "controller-alias": {
+ "type": "string"
+ },
+ "controller-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "controller-tag",
+ "controller-alias",
+ "addrs",
+ "ca-cert"
+ ]
+ },
+ "ExternalControllerInfoResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/ExternalControllerInfo"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result",
+ "error"
+ ]
+ },
+ "ExternalControllerInfoResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ExternalControllerInfoResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "SetExternalControllerInfoParams": {
+ "type": "object",
+ "properties": {
+ "info": {
+ "$ref": "#/definitions/ExternalControllerInfo"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "info"
+ ]
+ },
+ "SetExternalControllersInfoParams": {
+ "type": "object",
+ "properties": {
+ "controllers": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SetExternalControllerInfoParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "controllers"
+ ]
+ },
+ "StringsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ },
+ "StringsWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "FanConfigurer",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "FanConfig": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/FanConfigResult"
+ }
+ }
+ },
+ "WatchForFanConfigChanges": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "FanConfigEntry": {
+ "type": "object",
+ "properties": {
+ "overlay": {
+ "type": "string"
+ },
+ "underlay": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "underlay",
+ "overlay"
+ ]
+ },
+ "FanConfigResult": {
+ "type": "object",
+ "properties": {
+ "fans": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/FanConfigEntry"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "fans"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "FilesystemAttachmentsWatcher",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Next": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/MachineStorageIdsWatchResult"
+ }
+ }
+ },
+ "Stop": {
+ "type": "object"
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MachineStorageId": {
+ "type": "object",
+ "properties": {
+ "attachment-tag": {
+ "type": "string"
+ },
+ "machine-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machine-tag",
+ "attachment-tag"
+ ]
+ },
+ "MachineStorageIdsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MachineStorageId"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id",
+ "changes"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "FirewallRules",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ListFirewallRules": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ListFirewallRulesResults"
+ }
+ }
+ },
+ "SetFirewallRules": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/FirewallRuleArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "FirewallRule": {
+ "type": "object",
+ "properties": {
+ "known-service": {
+ "type": "string"
+ },
+ "whitelist-cidrs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "known-service"
+ ]
+ },
+ "FirewallRuleArgs": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/FirewallRule"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "args"
+ ]
+ },
+ "ListFirewallRulesResults": {
+ "type": "object",
+ "properties": {
+ "Rules": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/FirewallRule"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Rules"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "Firewaller",
+ "Version": 5,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AreManuallyProvisioned": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/BoolResults"
+ }
+ }
+ },
+ "CloudSpec": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/CloudSpecResults"
+ }
+ }
+ },
+ "ControllerAPIInfoForModels": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ControllerAPIInfoResults"
+ }
+ }
+ },
+ "ControllerConfig": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ControllerConfigResult"
+ }
+ }
+ },
+ "FirewallRules": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/KnownServiceArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ListFirewallRulesResults"
+ }
+ }
+ },
+ "GetAssignedMachine": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResults"
+ }
+ }
+ },
+ "GetCloudSpec": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModelTag"
+ },
+ "Result": {
+ "$ref": "#/definitions/CloudSpecResult"
+ }
+ }
+ },
+ "GetExposed": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/BoolResults"
+ }
+ }
+ },
+ "GetMachineActiveSubnets": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsResults"
+ }
+ }
+ },
+ "GetMachinePorts": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/MachinePortsParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/MachinePortsResults"
+ }
+ }
+ },
+ "InstanceId": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResults"
+ }
+ }
+ },
+ "Life": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/LifeResults"
+ }
+ }
+ },
+ "MacaroonForRelations": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/MacaroonResults"
+ }
+ }
+ },
+ "ModelConfig": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelConfigResult"
+ }
+ }
+ },
+ "SetRelationsStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Watch": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ },
+ "WatchEgressAddressesForRelations": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ },
+ "WatchForModelConfigChanges": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "WatchIngressAddressesForRelations": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ },
+ "WatchModelMachines": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ },
+ "WatchOpenedPorts": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ },
+ "WatchUnits": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "BoolResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "BoolResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/BoolResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "CloudCredential": {
+ "type": "object",
+ "properties": {
+ "attrs": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "auth-type": {
+ "type": "string"
+ },
+ "redacted": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "auth-type"
+ ]
+ },
+ "CloudSpec": {
+ "type": "object",
+ "properties": {
+ "cacertificates": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "credential": {
+ "$ref": "#/definitions/CloudCredential"
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "identity-endpoint": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "storage-endpoint": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "type",
+ "name"
+ ]
+ },
+ "CloudSpecResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/CloudSpec"
+ }
+ },
+ "additionalProperties": false
+ },
+ "CloudSpecResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CloudSpecResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "ControllerAPIInfoResult": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "cacert": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "addresses",
+ "cacert"
+ ]
+ },
+ "ControllerAPIInfoResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ControllerAPIInfoResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ControllerConfigResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityStatusArgs": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "status",
+ "info",
+ "data"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "FirewallRule": {
+ "type": "object",
+ "properties": {
+ "known-service": {
+ "type": "string"
+ },
+ "whitelist-cidrs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "known-service"
+ ]
+ },
+ "KnownServiceArgs": {
+ "type": "object",
+ "properties": {
+ "known-services": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "known-services"
+ ]
+ },
+ "LifeResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "life": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "life"
+ ]
+ },
+ "LifeResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/LifeResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ListFirewallRulesResults": {
+ "type": "object",
+ "properties": {
+ "Rules": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/FirewallRule"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Rules"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MacaroonResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/Macaroon"
+ }
+ },
+ "additionalProperties": false
+ },
+ "MacaroonResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MacaroonResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "MachinePortRange": {
+ "type": "object",
+ "properties": {
+ "port-range": {
+ "$ref": "#/definitions/PortRange"
+ },
+ "relation-tag": {
+ "type": "string"
+ },
+ "unit-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "unit-tag",
+ "relation-tag",
+ "port-range"
+ ]
+ },
+ "MachinePorts": {
+ "type": "object",
+ "properties": {
+ "machine-tag": {
+ "type": "string"
+ },
+ "subnet-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machine-tag",
+ "subnet-tag"
+ ]
+ },
+ "MachinePortsParams": {
+ "type": "object",
+ "properties": {
+ "params": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MachinePorts"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "params"
+ ]
+ },
+ "MachinePortsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "ports": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MachinePortRange"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ports"
+ ]
+ },
+ "MachinePortsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MachinePortsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ModelConfigResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "ModelTag": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "PortRange": {
+ "type": "object",
+ "properties": {
+ "from-port": {
+ "type": "integer"
+ },
+ "protocol": {
+ "type": "string"
+ },
+ "to-port": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "from-port",
+ "to-port",
+ "protocol"
+ ]
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityStatusArgs"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "StringResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StringsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StringsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StringsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ },
+ "StringsWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "HighAvailability",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "EnableHA": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ControllersSpecs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ControllersChangeResults"
+ }
+ }
+ },
+ "ResumeHAReplicationAfterUpgrade": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ResumeReplicationParams"
+ }
+ }
+ },
+ "StopHAReplicationForUpgrade": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UpgradeMongoParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/MongoUpgradeResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Address": {
+ "type": "object",
+ "properties": {
+ "Scope": {
+ "type": "string"
+ },
+ "SpaceName": {
+ "type": "string"
+ },
+ "SpaceProviderId": {
+ "type": "string"
+ },
+ "Type": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Value",
+ "Type",
+ "Scope",
+ "SpaceName",
+ "SpaceProviderId"
+ ]
+ },
+ "ControllersChangeResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/ControllersChanges"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "ControllersChangeResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ControllersChangeResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ControllersChanges": {
+ "type": "object",
+ "properties": {
+ "added": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "converted": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "demoted": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintained": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "promoted": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "removed": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "ControllersSpec": {
+ "type": "object",
+ "properties": {
+ "constraints": {
+ "$ref": "#/definitions/Value"
+ },
+ "num-controllers": {
+ "type": "integer"
+ },
+ "placement": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "series": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "num-controllers"
+ ]
+ },
+ "ControllersSpecs": {
+ "type": "object",
+ "properties": {
+ "specs": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ControllersSpec"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "specs"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "HAMember": {
+ "type": "object",
+ "properties": {
+ "public-address": {
+ "$ref": "#/definitions/Address"
+ },
+ "series": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "public-address",
+ "series"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "Member": {
+ "type": "object",
+ "properties": {
+ "Address": {
+ "type": "string"
+ },
+ "Id": {
+ "type": "integer"
+ },
+ "Priority": {
+ "type": "number"
+ },
+ "Tags": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "Votes": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Id",
+ "Address",
+ "Priority",
+ "Tags",
+ "Votes"
+ ]
+ },
+ "MongoUpgradeResults": {
+ "type": "object",
+ "properties": {
+ "ha-members": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/HAMember"
+ }
+ },
+ "master": {
+ "$ref": "#/definitions/HAMember"
+ },
+ "rs-members": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Member"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "rs-members",
+ "master",
+ "ha-members"
+ ]
+ },
+ "MongoVersion": {
+ "type": "object",
+ "properties": {
+ "engine": {
+ "type": "string"
+ },
+ "major": {
+ "type": "integer"
+ },
+ "minor": {
+ "type": "integer"
+ },
+ "patch": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "major",
+ "minor",
+ "patch",
+ "engine"
+ ]
+ },
+ "ResumeReplicationParams": {
+ "type": "object",
+ "properties": {
+ "members": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Member"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "members"
+ ]
+ },
+ "UpgradeMongoParams": {
+ "type": "object",
+ "properties": {
+ "target": {
+ "$ref": "#/definitions/MongoVersion"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "target"
+ ]
+ },
+ "Value": {
+ "type": "object",
+ "properties": {
+ "arch": {
+ "type": "string"
+ },
+ "container": {
+ "type": "string"
+ },
+ "cores": {
+ "type": "integer"
+ },
+ "cpu-power": {
+ "type": "integer"
+ },
+ "instance-type": {
+ "type": "string"
+ },
+ "mem": {
+ "type": "integer"
+ },
+ "root-disk": {
+ "type": "integer"
+ },
+ "spaces": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "virt-type": {
+ "type": "string"
+ },
+ "zones": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "HostKeyReporter",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ReportKeys": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SSHHostKeySet"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "SSHHostKeySet": {
+ "type": "object",
+ "properties": {
+ "entity-keys": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SSHHostKeys"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entity-keys"
+ ]
+ },
+ "SSHHostKeys": {
+ "type": "object",
+ "properties": {
+ "public-keys": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "public-keys"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "ImageManager",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "DeleteImages": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ImageFilterParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "ListImages": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ImageFilterParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ListImageResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ImageFilterParams": {
+ "type": "object",
+ "properties": {
+ "images": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ImageSpec"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "images"
+ ]
+ },
+ "ImageMetadata": {
+ "type": "object",
+ "properties": {
+ "arch": {
+ "type": "string"
+ },
+ "created": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "kind": {
+ "type": "string"
+ },
+ "series": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "kind",
+ "arch",
+ "series",
+ "url",
+ "created"
+ ]
+ },
+ "ImageSpec": {
+ "type": "object",
+ "properties": {
+ "arch": {
+ "type": "string"
+ },
+ "kind": {
+ "type": "string"
+ },
+ "series": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "kind",
+ "arch",
+ "series"
+ ]
+ },
+ "ListImageResult": {
+ "type": "object",
+ "properties": {
+ "result": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ImageMetadata"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "ImageMetadata",
+ "Version": 3,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "UpdateFromPublishedImages": {
+ "type": "object"
+ }
+ }
+ }
+ },
+ {
+ "Name": "InstancePoller",
+ "Version": 3,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AreManuallyProvisioned": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/BoolResults"
+ }
+ }
+ },
+ "InstanceId": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResults"
+ }
+ }
+ },
+ "InstanceStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StatusResults"
+ }
+ }
+ },
+ "Life": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/LifeResults"
+ }
+ }
+ },
+ "ModelConfig": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelConfigResult"
+ }
+ }
+ },
+ "ProviderAddresses": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/MachineAddressesResults"
+ }
+ }
+ },
+ "SetInstanceStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetProviderAddresses": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetMachinesAddresses"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Status": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StatusResults"
+ }
+ }
+ },
+ "WatchForModelConfigChanges": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "WatchModelMachines": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Address": {
+ "type": "object",
+ "properties": {
+ "scope": {
+ "type": "string"
+ },
+ "space-name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "value",
+ "type",
+ "scope"
+ ]
+ },
+ "BoolResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "BoolResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/BoolResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityStatusArgs": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "status",
+ "info",
+ "data"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "LifeResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "life": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "life"
+ ]
+ },
+ "LifeResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/LifeResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MachineAddresses": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Address"
+ }
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "addresses"
+ ]
+ },
+ "MachineAddressesResult": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Address"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "addresses"
+ ]
+ },
+ "MachineAddressesResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MachineAddressesResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ModelConfigResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "SetMachinesAddresses": {
+ "type": "object",
+ "properties": {
+ "machine-addresses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MachineAddresses"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machine-addresses"
+ ]
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityStatusArgs"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "StatusResult": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "id": {
+ "type": "string"
+ },
+ "info": {
+ "type": "string"
+ },
+ "life": {
+ "type": "string"
+ },
+ "since": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "life",
+ "status",
+ "info",
+ "data",
+ "since"
+ ]
+ },
+ "StatusResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StatusResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "StringResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StringsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "KeyManager",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AddKeys": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModifyUserSSHKeys"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "DeleteKeys": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModifyUserSSHKeys"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "ImportKeys": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModifyUserSSHKeys"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "ListKeys": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ListSSHKeys"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ListSSHKeys": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "$ref": "#/definitions/Entities"
+ },
+ "mode": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities",
+ "mode"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "ModifyUserSSHKeys": {
+ "type": "object",
+ "properties": {
+ "ssh-keys": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "user": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "user",
+ "ssh-keys"
+ ]
+ },
+ "StringsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StringsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "KeyUpdater",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AuthorisedKeys": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsResults"
+ }
+ }
+ },
+ "WatchAuthorisedKeys": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StringsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StringsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "LeadershipService",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "BlockUntilLeadershipReleased": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ApplicationTag"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "ClaimLeadership": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ClaimLeadershipBulkParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ClaimLeadershipBulkResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "ApplicationTag": {
+ "type": "object",
+ "properties": {
+ "Name": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Name"
+ ]
+ },
+ "ClaimLeadershipBulkParams": {
+ "type": "object",
+ "properties": {
+ "params": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ClaimLeadershipParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "params"
+ ]
+ },
+ "ClaimLeadershipBulkResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ClaimLeadershipParams": {
+ "type": "object",
+ "properties": {
+ "application-tag": {
+ "type": "string"
+ },
+ "duration": {
+ "type": "number"
+ },
+ "unit-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application-tag",
+ "unit-tag",
+ "duration"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "LifeFlag",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Life": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/LifeResults"
+ }
+ }
+ },
+ "Watch": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "LifeResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "life": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "life"
+ ]
+ },
+ "LifeResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/LifeResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "LogForwarding",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "GetLastSent": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/LogForwardingGetLastSentParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/LogForwardingGetLastSentResults"
+ }
+ }
+ },
+ "SetLastSent": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/LogForwardingSetLastSentParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "LogForwardingGetLastSentParams": {
+ "type": "object",
+ "properties": {
+ "ids": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/LogForwardingID"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ids"
+ ]
+ },
+ "LogForwardingGetLastSentResult": {
+ "type": "object",
+ "properties": {
+ "err": {
+ "$ref": "#/definitions/Error"
+ },
+ "record-id": {
+ "type": "integer"
+ },
+ "record-timestamp": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "record-id",
+ "record-timestamp",
+ "err"
+ ]
+ },
+ "LogForwardingGetLastSentResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/LogForwardingGetLastSentResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "LogForwardingID": {
+ "type": "object",
+ "properties": {
+ "model": {
+ "type": "string"
+ },
+ "sink": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model",
+ "sink"
+ ]
+ },
+ "LogForwardingSetLastSentParam": {
+ "type": "object",
+ "properties": {
+ "LogForwardingID": {
+ "$ref": "#/definitions/LogForwardingID"
+ },
+ "record-id": {
+ "type": "integer"
+ },
+ "record-timestamp": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "LogForwardingID",
+ "record-id",
+ "record-timestamp"
+ ]
+ },
+ "LogForwardingSetLastSentParams": {
+ "type": "object",
+ "properties": {
+ "params": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/LogForwardingSetLastSentParam"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "params"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "Logger",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "LoggingConfig": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResults"
+ }
+ }
+ },
+ "WatchLoggingConfig": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "StringResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "MachineActions",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Actions": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ActionResults"
+ }
+ }
+ },
+ "BeginActions": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "FinishActions": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ActionExecutionResults"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "RunningActions": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ActionsByReceivers"
+ }
+ }
+ },
+ "WatchActionNotifications": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Action": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "parameters": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "receiver": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "receiver",
+ "name"
+ ]
+ },
+ "ActionExecutionResult": {
+ "type": "object",
+ "properties": {
+ "action-tag": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "results": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "action-tag",
+ "status"
+ ]
+ },
+ "ActionExecutionResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ActionExecutionResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "ActionResult": {
+ "type": "object",
+ "properties": {
+ "action": {
+ "$ref": "#/definitions/Action"
+ },
+ "completed": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "enqueued": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "message": {
+ "type": "string"
+ },
+ "output": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "started": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ActionResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ActionResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "ActionsByReceiver": {
+ "type": "object",
+ "properties": {
+ "actions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ActionResult"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "receiver": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ActionsByReceivers": {
+ "type": "object",
+ "properties": {
+ "actions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ActionsByReceiver"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "StringsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ },
+ "StringsWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "MachineManager",
+ "Version": 5,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AddMachines": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/AddMachines"
+ },
+ "Result": {
+ "$ref": "#/definitions/AddMachinesResults"
+ }
+ }
+ },
+ "DestroyMachine": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/DestroyMachineResults"
+ }
+ }
+ },
+ "DestroyMachineWithParams": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/DestroyMachinesParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/DestroyMachineResults"
+ }
+ }
+ },
+ "ForceDestroyMachine": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/DestroyMachineResults"
+ }
+ }
+ },
+ "GetUpgradeSeriesMessages": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UpgradeSeriesNotificationParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsResults"
+ }
+ }
+ },
+ "InstanceTypes": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModelInstanceTypesConstraints"
+ },
+ "Result": {
+ "$ref": "#/definitions/InstanceTypesResults"
+ }
+ }
+ },
+ "UpgradeSeriesComplete": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UpdateSeriesArg"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "UpgradeSeriesPrepare": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UpdateSeriesArg"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "UpgradeSeriesValidate": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UpdateSeriesArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/UpgradeSeriesUnitsResults"
+ }
+ }
+ },
+ "WatchUpgradeSeriesNotifications": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "AddMachineParams": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Address"
+ }
+ },
+ "constraints": {
+ "$ref": "#/definitions/Value"
+ },
+ "container-type": {
+ "type": "string"
+ },
+ "disks": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Constraints"
+ }
+ },
+ "hardware-characteristics": {
+ "$ref": "#/definitions/HardwareCharacteristics"
+ },
+ "instance-id": {
+ "type": "string"
+ },
+ "jobs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "nonce": {
+ "type": "string"
+ },
+ "parent-id": {
+ "type": "string"
+ },
+ "placement": {
+ "$ref": "#/definitions/Placement"
+ },
+ "series": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "series",
+ "constraints",
+ "jobs",
+ "parent-id",
+ "container-type",
+ "instance-id",
+ "nonce",
+ "hardware-characteristics",
+ "addresses"
+ ]
+ },
+ "AddMachines": {
+ "type": "object",
+ "properties": {
+ "params": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AddMachineParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "params"
+ ]
+ },
+ "AddMachinesResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "machine": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machine"
+ ]
+ },
+ "AddMachinesResults": {
+ "type": "object",
+ "properties": {
+ "machines": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AddMachinesResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machines"
+ ]
+ },
+ "Address": {
+ "type": "object",
+ "properties": {
+ "scope": {
+ "type": "string"
+ },
+ "space-name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "value",
+ "type",
+ "scope"
+ ]
+ },
+ "Constraints": {
+ "type": "object",
+ "properties": {
+ "Count": {
+ "type": "integer"
+ },
+ "Pool": {
+ "type": "string"
+ },
+ "Size": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Pool",
+ "Size",
+ "Count"
+ ]
+ },
+ "DestroyMachineInfo": {
+ "type": "object",
+ "properties": {
+ "destroyed-storage": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ },
+ "destroyed-units": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ },
+ "detached-storage": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "DestroyMachineResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "info": {
+ "$ref": "#/definitions/DestroyMachineInfo"
+ }
+ },
+ "additionalProperties": false
+ },
+ "DestroyMachineResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DestroyMachineResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "DestroyMachinesParams": {
+ "type": "object",
+ "properties": {
+ "force": {
+ "type": "boolean"
+ },
+ "keep": {
+ "type": "boolean"
+ },
+ "machine-tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machine-tags"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "HardwareCharacteristics": {
+ "type": "object",
+ "properties": {
+ "arch": {
+ "type": "string"
+ },
+ "availability-zone": {
+ "type": "string"
+ },
+ "cpu-cores": {
+ "type": "integer"
+ },
+ "cpu-power": {
+ "type": "integer"
+ },
+ "mem": {
+ "type": "integer"
+ },
+ "root-disk": {
+ "type": "integer"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "InstanceType": {
+ "type": "object",
+ "properties": {
+ "arches": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "cost": {
+ "type": "integer"
+ },
+ "cpu-cores": {
+ "type": "integer"
+ },
+ "deprecated": {
+ "type": "boolean"
+ },
+ "memory": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "root-disk": {
+ "type": "integer"
+ },
+ "virt-type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "arches",
+ "cpu-cores",
+ "memory"
+ ]
+ },
+ "InstanceTypesResult": {
+ "type": "object",
+ "properties": {
+ "cost-currency": {
+ "type": "string"
+ },
+ "cost-divisor": {
+ "type": "integer"
+ },
+ "cost-unit": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "instance-types": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/InstanceType"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "InstanceTypesResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/InstanceTypesResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "ModelInstanceTypesConstraint": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "$ref": "#/definitions/Value"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ModelInstanceTypesConstraints": {
+ "type": "object",
+ "properties": {
+ "constraints": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelInstanceTypesConstraint"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "constraints"
+ ]
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Placement": {
+ "type": "object",
+ "properties": {
+ "directive": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "scope",
+ "directive"
+ ]
+ },
+ "StringsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StringsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "UpdateSeriesArg": {
+ "type": "object",
+ "properties": {
+ "force": {
+ "type": "boolean"
+ },
+ "series": {
+ "type": "string"
+ },
+ "tag": {
+ "$ref": "#/definitions/Entity"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "force",
+ "series"
+ ]
+ },
+ "UpdateSeriesArgs": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UpdateSeriesArg"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "args"
+ ]
+ },
+ "UpgradeSeriesNotificationParam": {
+ "type": "object",
+ "properties": {
+ "entity": {
+ "$ref": "#/definitions/Entity"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entity",
+ "watcher-id"
+ ]
+ },
+ "UpgradeSeriesNotificationParams": {
+ "type": "object",
+ "properties": {
+ "params": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UpgradeSeriesNotificationParam"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "params"
+ ]
+ },
+ "UpgradeSeriesUnitsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "unit-names": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "unit-names"
+ ]
+ },
+ "UpgradeSeriesUnitsResults": {
+ "type": "object",
+ "properties": {
+ "Results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UpgradeSeriesUnitsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Results"
+ ]
+ },
+ "Value": {
+ "type": "object",
+ "properties": {
+ "arch": {
+ "type": "string"
+ },
+ "container": {
+ "type": "string"
+ },
+ "cores": {
+ "type": "integer"
+ },
+ "cpu-power": {
+ "type": "integer"
+ },
+ "instance-type": {
+ "type": "string"
+ },
+ "mem": {
+ "type": "integer"
+ },
+ "root-disk": {
+ "type": "integer"
+ },
+ "spaces": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "virt-type": {
+ "type": "string"
+ },
+ "zones": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "MachineUndertaker",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AllMachineRemovals": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/EntitiesResults"
+ }
+ }
+ },
+ "CompleteMachineRemovals": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ }
+ }
+ },
+ "GetMachineProviderInterfaceInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ProviderInterfaceInfoResults"
+ }
+ }
+ },
+ "WatchMachineRemovals": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "EntitiesResult": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "EntitiesResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntitiesResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ProviderInterfaceInfo": {
+ "type": "object",
+ "properties": {
+ "interface-name": {
+ "type": "string"
+ },
+ "mac-address": {
+ "type": "string"
+ },
+ "provider-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "interface-name",
+ "mac-address",
+ "provider-id"
+ ]
+ },
+ "ProviderInterfaceInfoResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "interfaces": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ProviderInterfaceInfo"
+ }
+ },
+ "machine-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machine-tag",
+ "interfaces"
+ ]
+ },
+ "ProviderInterfaceInfoResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ProviderInterfaceInfoResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Machiner",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "APIAddresses": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsResult"
+ }
+ }
+ },
+ "APIHostPorts": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/APIHostPortsResult"
+ }
+ }
+ },
+ "EnsureDead": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Jobs": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/JobsResults"
+ }
+ }
+ },
+ "Life": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/LifeResults"
+ }
+ }
+ },
+ "ModelUUID": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "SetMachineAddresses": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetMachinesAddresses"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetObservedNetworkConfig": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetMachineNetworkConfig"
+ }
+ }
+ },
+ "SetProviderNetworkConfig": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "UpdateStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Watch": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ },
+ "WatchAPIHostPorts": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "APIHostPortsResult": {
+ "type": "object",
+ "properties": {
+ "servers": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/HostPort"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "servers"
+ ]
+ },
+ "Address": {
+ "type": "object",
+ "properties": {
+ "scope": {
+ "type": "string"
+ },
+ "space-name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "value",
+ "type",
+ "scope"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityStatusArgs": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "status",
+ "info",
+ "data"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "HostPort": {
+ "type": "object",
+ "properties": {
+ "Address": {
+ "$ref": "#/definitions/Address"
+ },
+ "port": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Address",
+ "port"
+ ]
+ },
+ "JobsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "jobs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "jobs"
+ ]
+ },
+ "JobsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/JobsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "LifeResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "life": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "life"
+ ]
+ },
+ "LifeResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/LifeResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MachineAddresses": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Address"
+ }
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "addresses"
+ ]
+ },
+ "NetworkConfig": {
+ "type": "object",
+ "properties": {
+ "address": {
+ "type": "string"
+ },
+ "cidr": {
+ "type": "string"
+ },
+ "config-type": {
+ "type": "string"
+ },
+ "device-index": {
+ "type": "integer"
+ },
+ "disabled": {
+ "type": "boolean"
+ },
+ "dns-search-domains": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "dns-servers": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway-address": {
+ "type": "string"
+ },
+ "interface-name": {
+ "type": "string"
+ },
+ "interface-type": {
+ "type": "string"
+ },
+ "is-default-gateway": {
+ "type": "boolean"
+ },
+ "mac-address": {
+ "type": "string"
+ },
+ "mtu": {
+ "type": "integer"
+ },
+ "no-auto-start": {
+ "type": "boolean"
+ },
+ "parent-interface-name": {
+ "type": "string"
+ },
+ "provider-address-id": {
+ "type": "string"
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "provider-space-id": {
+ "type": "string"
+ },
+ "provider-subnet-id": {
+ "type": "string"
+ },
+ "provider-vlan-id": {
+ "type": "string"
+ },
+ "routes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NetworkRoute"
+ }
+ },
+ "vlan-tag": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "device-index",
+ "mac-address",
+ "cidr",
+ "mtu",
+ "provider-id",
+ "provider-subnet-id",
+ "provider-space-id",
+ "provider-address-id",
+ "provider-vlan-id",
+ "vlan-tag",
+ "interface-name",
+ "parent-interface-name",
+ "interface-type",
+ "disabled"
+ ]
+ },
+ "NetworkRoute": {
+ "type": "object",
+ "properties": {
+ "destination-cidr": {
+ "type": "string"
+ },
+ "gateway-ip": {
+ "type": "string"
+ },
+ "metric": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "destination-cidr",
+ "gateway-ip",
+ "metric"
+ ]
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "SetMachineNetworkConfig": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NetworkConfig"
+ }
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "config"
+ ]
+ },
+ "SetMachinesAddresses": {
+ "type": "object",
+ "properties": {
+ "machine-addresses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MachineAddresses"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machine-addresses"
+ ]
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityStatusArgs"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "StringsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "MeterStatus",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "GetMeterStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/MeterStatusResults"
+ }
+ }
+ },
+ "WatchMeterStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MeterStatusResult": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "info": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "code",
+ "info"
+ ]
+ },
+ "MeterStatusResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MeterStatusResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "MetricsAdder",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AddMetricBatches": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/MetricBatchParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "Metric": {
+ "type": "object",
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "labels": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "time": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "key",
+ "value",
+ "time"
+ ]
+ },
+ "MetricBatch": {
+ "type": "object",
+ "properties": {
+ "charm-url": {
+ "type": "string"
+ },
+ "created": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "metrics": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Metric"
+ }
+ },
+ "uuid": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "uuid",
+ "charm-url",
+ "created",
+ "metrics"
+ ]
+ },
+ "MetricBatchParam": {
+ "type": "object",
+ "properties": {
+ "batch": {
+ "$ref": "#/definitions/MetricBatch"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "batch"
+ ]
+ },
+ "MetricBatchParams": {
+ "type": "object",
+ "properties": {
+ "batches": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MetricBatchParam"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "batches"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "MetricsDebug",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "GetMetrics": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/MetricResults"
+ }
+ }
+ },
+ "SetMeterStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/MeterStatusParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityMetrics": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "metrics": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MetricResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MeterStatusParam": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "code"
+ ]
+ },
+ "MeterStatusParams": {
+ "type": "object",
+ "properties": {
+ "statues": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MeterStatusParam"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "statues"
+ ]
+ },
+ "MetricResult": {
+ "type": "object",
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "labels": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "time": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "unit": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "time",
+ "key",
+ "value",
+ "unit",
+ "labels"
+ ]
+ },
+ "MetricResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityMetrics"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "MetricsManager",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AddJujuMachineMetrics": {
+ "type": "object"
+ },
+ "CleanupOldMetrics": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SendMetrics": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "MigrationFlag",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Phase": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/PhaseResults"
+ }
+ }
+ },
+ "Watch": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "PhaseResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "phase": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "PhaseResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/PhaseResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "MigrationMaster",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Export": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/SerializedModel"
+ }
+ }
+ },
+ "MigrationStatus": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/MasterMigrationStatus"
+ }
+ }
+ },
+ "MinionReports": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/MinionReports"
+ }
+ }
+ },
+ "ModelInfo": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/MigrationModelInfo"
+ }
+ }
+ },
+ "Prechecks": {
+ "type": "object"
+ },
+ "Reap": {
+ "type": "object"
+ },
+ "SetPhase": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetMigrationPhaseArgs"
+ }
+ }
+ },
+ "SetStatusMessage": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetMigrationStatusMessageArgs"
+ }
+ }
+ },
+ "Watch": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "WatchMinionReports": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MasterMigrationStatus": {
+ "type": "object",
+ "properties": {
+ "migration-id": {
+ "type": "string"
+ },
+ "phase": {
+ "type": "string"
+ },
+ "phase-changed-time": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "spec": {
+ "$ref": "#/definitions/MigrationSpec"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "spec",
+ "migration-id",
+ "phase",
+ "phase-changed-time"
+ ]
+ },
+ "MigrationModelInfo": {
+ "type": "object",
+ "properties": {
+ "agent-version": {
+ "$ref": "#/definitions/Number"
+ },
+ "controller-agent-version": {
+ "$ref": "#/definitions/Number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "owner-tag": {
+ "type": "string"
+ },
+ "uuid": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "uuid",
+ "name",
+ "owner-tag",
+ "agent-version",
+ "controller-agent-version"
+ ]
+ },
+ "MigrationSpec": {
+ "type": "object",
+ "properties": {
+ "model-tag": {
+ "type": "string"
+ },
+ "target-info": {
+ "$ref": "#/definitions/MigrationTargetInfo"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model-tag",
+ "target-info"
+ ]
+ },
+ "MigrationTargetInfo": {
+ "type": "object",
+ "properties": {
+ "addrs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "auth-tag": {
+ "type": "string"
+ },
+ "ca-cert": {
+ "type": "string"
+ },
+ "controller-tag": {
+ "type": "string"
+ },
+ "macaroons": {
+ "type": "string"
+ },
+ "password": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "controller-tag",
+ "addrs",
+ "ca-cert",
+ "auth-tag"
+ ]
+ },
+ "MinionReports": {
+ "type": "object",
+ "properties": {
+ "failed": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "migration-id": {
+ "type": "string"
+ },
+ "phase": {
+ "type": "string"
+ },
+ "success-count": {
+ "type": "integer"
+ },
+ "unknown-count": {
+ "type": "integer"
+ },
+ "unknown-sample": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "migration-id",
+ "phase",
+ "success-count",
+ "unknown-count",
+ "unknown-sample",
+ "failed"
+ ]
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "Number": {
+ "type": "object",
+ "properties": {
+ "Build": {
+ "type": "integer"
+ },
+ "Major": {
+ "type": "integer"
+ },
+ "Minor": {
+ "type": "integer"
+ },
+ "Patch": {
+ "type": "integer"
+ },
+ "Tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Major",
+ "Minor",
+ "Tag",
+ "Patch",
+ "Build"
+ ]
+ },
+ "SerializedModel": {
+ "type": "object",
+ "properties": {
+ "bytes": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ }
+ },
+ "charms": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "resources": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SerializedModelResource"
+ }
+ },
+ "tools": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SerializedModelTools"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "bytes",
+ "charms",
+ "tools",
+ "resources"
+ ]
+ },
+ "SerializedModelResource": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ },
+ "application-revision": {
+ "$ref": "#/definitions/SerializedModelResourceRevision"
+ },
+ "charmstore-revision": {
+ "$ref": "#/definitions/SerializedModelResourceRevision"
+ },
+ "name": {
+ "type": "string"
+ },
+ "unit-revisions": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/SerializedModelResourceRevision"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application",
+ "name",
+ "application-revision",
+ "charmstore-revision",
+ "unit-revisions"
+ ]
+ },
+ "SerializedModelResourceRevision": {
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "fingerprint": {
+ "type": "string"
+ },
+ "origin": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "revision": {
+ "type": "integer"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "username": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "revision",
+ "type",
+ "path",
+ "description",
+ "origin",
+ "fingerprint",
+ "size",
+ "timestamp"
+ ]
+ },
+ "SerializedModelTools": {
+ "type": "object",
+ "properties": {
+ "uri": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "version",
+ "uri"
+ ]
+ },
+ "SetMigrationPhaseArgs": {
+ "type": "object",
+ "properties": {
+ "phase": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "phase"
+ ]
+ },
+ "SetMigrationStatusMessageArgs": {
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "MigrationMinion",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Report": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/MinionReport"
+ }
+ }
+ },
+ "Watch": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MinionReport": {
+ "type": "object",
+ "properties": {
+ "migration-id": {
+ "type": "string"
+ },
+ "phase": {
+ "type": "string"
+ },
+ "success": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "migration-id",
+ "phase",
+ "success"
+ ]
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "MigrationStatusWatcher",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Next": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/MigrationStatus"
+ }
+ }
+ },
+ "Stop": {
+ "type": "object"
+ }
+ },
+ "definitions": {
+ "MigrationStatus": {
+ "type": "object",
+ "properties": {
+ "attempt": {
+ "type": "integer"
+ },
+ "migration-id": {
+ "type": "string"
+ },
+ "phase": {
+ "type": "string"
+ },
+ "source-api-addrs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "source-ca-cert": {
+ "type": "string"
+ },
+ "target-api-addrs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "target-ca-cert": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "migration-id",
+ "attempt",
+ "phase",
+ "source-api-addrs",
+ "source-ca-cert",
+ "target-api-addrs",
+ "target-ca-cert"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "MigrationTarget",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Abort": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModelArgs"
+ }
+ }
+ },
+ "Activate": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModelArgs"
+ }
+ }
+ },
+ "AdoptResources": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/AdoptResourcesArgs"
+ }
+ }
+ },
+ "CACert": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/BytesResult"
+ }
+ }
+ },
+ "CheckMachines": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModelArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Import": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SerializedModel"
+ }
+ }
+ },
+ "LatestLogTime": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModelArgs"
+ },
+ "Result": {
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "Prechecks": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/MigrationModelInfo"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "AdoptResourcesArgs": {
+ "type": "object",
+ "properties": {
+ "model-tag": {
+ "type": "string"
+ },
+ "source-controller-version": {
+ "$ref": "#/definitions/Number"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model-tag",
+ "source-controller-version"
+ ]
+ },
+ "BytesResult": {
+ "type": "object",
+ "properties": {
+ "result": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MigrationModelInfo": {
+ "type": "object",
+ "properties": {
+ "agent-version": {
+ "$ref": "#/definitions/Number"
+ },
+ "controller-agent-version": {
+ "$ref": "#/definitions/Number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "owner-tag": {
+ "type": "string"
+ },
+ "uuid": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "uuid",
+ "name",
+ "owner-tag",
+ "agent-version",
+ "controller-agent-version"
+ ]
+ },
+ "ModelArgs": {
+ "type": "object",
+ "properties": {
+ "model-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model-tag"
+ ]
+ },
+ "Number": {
+ "type": "object",
+ "properties": {
+ "Build": {
+ "type": "integer"
+ },
+ "Major": {
+ "type": "integer"
+ },
+ "Minor": {
+ "type": "integer"
+ },
+ "Patch": {
+ "type": "integer"
+ },
+ "Tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Major",
+ "Minor",
+ "Tag",
+ "Patch",
+ "Build"
+ ]
+ },
+ "SerializedModel": {
+ "type": "object",
+ "properties": {
+ "bytes": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ }
+ },
+ "charms": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "resources": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SerializedModelResource"
+ }
+ },
+ "tools": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SerializedModelTools"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "bytes",
+ "charms",
+ "tools",
+ "resources"
+ ]
+ },
+ "SerializedModelResource": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "type": "string"
+ },
+ "application-revision": {
+ "$ref": "#/definitions/SerializedModelResourceRevision"
+ },
+ "charmstore-revision": {
+ "$ref": "#/definitions/SerializedModelResourceRevision"
+ },
+ "name": {
+ "type": "string"
+ },
+ "unit-revisions": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/SerializedModelResourceRevision"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application",
+ "name",
+ "application-revision",
+ "charmstore-revision",
+ "unit-revisions"
+ ]
+ },
+ "SerializedModelResourceRevision": {
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "fingerprint": {
+ "type": "string"
+ },
+ "origin": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "revision": {
+ "type": "integer"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "username": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "revision",
+ "type",
+ "path",
+ "description",
+ "origin",
+ "fingerprint",
+ "size",
+ "timestamp"
+ ]
+ },
+ "SerializedModelTools": {
+ "type": "object",
+ "properties": {
+ "uri": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "version",
+ "uri"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "ModelConfig",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ModelGet": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelConfigResults"
+ }
+ }
+ },
+ "ModelSet": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModelSet"
+ }
+ }
+ },
+ "ModelUnset": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModelUnset"
+ }
+ }
+ },
+ "SLALevel": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "Sequences": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelSequencesResult"
+ }
+ }
+ },
+ "SetSLALevel": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModelSLA"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "ConfigValue": {
+ "type": "object",
+ "properties": {
+ "source": {
+ "type": "string"
+ },
+ "value": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "value",
+ "source"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "ModelConfigResults": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/ConfigValue"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "ModelSLA": {
+ "type": "object",
+ "properties": {
+ "ModelSLAInfo": {
+ "$ref": "#/definitions/ModelSLAInfo"
+ },
+ "creds": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ModelSLAInfo",
+ "creds"
+ ]
+ },
+ "ModelSLAInfo": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string"
+ },
+ "owner": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "level",
+ "owner"
+ ]
+ },
+ "ModelSequencesResult": {
+ "type": "object",
+ "properties": {
+ "sequences": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "integer"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "sequences"
+ ]
+ },
+ "ModelSet": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "ModelUnset": {
+ "type": "object",
+ "properties": {
+ "keys": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "keys"
+ ]
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "ModelManager",
+ "Version": 5,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ChangeModelCredential": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ChangeModelCredentialsParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "CreateModel": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModelCreateArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ModelInfo"
+ }
+ }
+ },
+ "DestroyModels": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/DestroyModelsParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "DumpModels": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/DumpModelRequest"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResults"
+ }
+ }
+ },
+ "DumpModelsDB": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/MapResults"
+ }
+ }
+ },
+ "ListModelSummaries": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModelSummariesRequest"
+ },
+ "Result": {
+ "$ref": "#/definitions/ModelSummaryResults"
+ }
+ }
+ },
+ "ListModels": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entity"
+ },
+ "Result": {
+ "$ref": "#/definitions/UserModelList"
+ }
+ }
+ },
+ "ModelDefaults": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelDefaultsResult"
+ }
+ }
+ },
+ "ModelInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ModelInfoResults"
+ }
+ }
+ },
+ "ModelStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ModelStatusResults"
+ }
+ }
+ },
+ "ModifyModelAccess": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ModifyModelAccessRequest"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetModelDefaults": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetModelDefaults"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "UnsetModelDefaults": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UnsetModelDefaults"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "ChangeModelCredentialParams": {
+ "type": "object",
+ "properties": {
+ "credential-tag": {
+ "type": "string"
+ },
+ "model-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model-tag",
+ "credential-tag"
+ ]
+ },
+ "ChangeModelCredentialsParams": {
+ "type": "object",
+ "properties": {
+ "model-credentials": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ChangeModelCredentialParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model-credentials"
+ ]
+ },
+ "DestroyModelParams": {
+ "type": "object",
+ "properties": {
+ "destroy-storage": {
+ "type": "boolean"
+ },
+ "model-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model-tag"
+ ]
+ },
+ "DestroyModelsParams": {
+ "type": "object",
+ "properties": {
+ "models": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DestroyModelParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "models"
+ ]
+ },
+ "DumpModelRequest": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ },
+ "simplified": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities",
+ "simplified"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityStatus": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "since": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "status",
+ "info",
+ "since"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MachineHardware": {
+ "type": "object",
+ "properties": {
+ "arch": {
+ "type": "string"
+ },
+ "availability-zone": {
+ "type": "string"
+ },
+ "cores": {
+ "type": "integer"
+ },
+ "cpu-power": {
+ "type": "integer"
+ },
+ "mem": {
+ "type": "integer"
+ },
+ "root-disk": {
+ "type": "integer"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "MapResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "MapResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MapResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Model": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "owner-tag": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "uuid": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "uuid",
+ "type",
+ "owner-tag"
+ ]
+ },
+ "ModelCreateArgs": {
+ "type": "object",
+ "properties": {
+ "cloud-tag": {
+ "type": "string"
+ },
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "credential": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "owner-tag": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "owner-tag"
+ ]
+ },
+ "ModelDefaultValues": {
+ "type": "object",
+ "properties": {
+ "cloud-region": {
+ "type": "string"
+ },
+ "cloud-tag": {
+ "type": "string"
+ },
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "ModelDefaults": {
+ "type": "object",
+ "properties": {
+ "controller": {
+ "type": "object",
+ "additionalProperties": true
+ },
+ "default": {
+ "type": "object",
+ "additionalProperties": true
+ },
+ "regions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RegionDefaults"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "ModelDefaultsResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/ModelDefaults"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "ModelEntityCount": {
+ "type": "object",
+ "properties": {
+ "count": {
+ "type": "integer"
+ },
+ "entity": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entity",
+ "count"
+ ]
+ },
+ "ModelFilesystemInfo": {
+ "type": "object",
+ "properties": {
+ "detachable": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ]
+ },
+ "ModelInfo": {
+ "type": "object",
+ "properties": {
+ "agent-version": {
+ "$ref": "#/definitions/Number"
+ },
+ "cloud-credential-tag": {
+ "type": "string"
+ },
+ "cloud-region": {
+ "type": "string"
+ },
+ "cloud-tag": {
+ "type": "string"
+ },
+ "controller-uuid": {
+ "type": "string"
+ },
+ "default-series": {
+ "type": "string"
+ },
+ "life": {
+ "type": "string"
+ },
+ "machines": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelMachineInfo"
+ }
+ },
+ "migration": {
+ "$ref": "#/definitions/ModelMigrationStatus"
+ },
+ "name": {
+ "type": "string"
+ },
+ "owner-tag": {
+ "type": "string"
+ },
+ "provider-type": {
+ "type": "string"
+ },
+ "sla": {
+ "$ref": "#/definitions/ModelSLAInfo"
+ },
+ "status": {
+ "$ref": "#/definitions/EntityStatus"
+ },
+ "type": {
+ "type": "string"
+ },
+ "users": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelUserInfo"
+ }
+ },
+ "uuid": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "type",
+ "uuid",
+ "controller-uuid",
+ "cloud-tag",
+ "owner-tag",
+ "life",
+ "users",
+ "machines",
+ "sla",
+ "agent-version"
+ ]
+ },
+ "ModelInfoResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/ModelInfo"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ModelInfoResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelInfoResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ModelMachineInfo": {
+ "type": "object",
+ "properties": {
+ "hardware": {
+ "$ref": "#/definitions/MachineHardware"
+ },
+ "has-vote": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string"
+ },
+ "instance-id": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "wants-vote": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ]
+ },
+ "ModelMigrationStatus": {
+ "type": "object",
+ "properties": {
+ "end": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "start": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "status",
+ "start"
+ ]
+ },
+ "ModelSLAInfo": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string"
+ },
+ "owner": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "level",
+ "owner"
+ ]
+ },
+ "ModelStatus": {
+ "type": "object",
+ "properties": {
+ "application-count": {
+ "type": "integer"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "filesystems": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelFilesystemInfo"
+ }
+ },
+ "hosted-machine-count": {
+ "type": "integer"
+ },
+ "life": {
+ "type": "string"
+ },
+ "machines": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelMachineInfo"
+ }
+ },
+ "model-tag": {
+ "type": "string"
+ },
+ "owner-tag": {
+ "type": "string"
+ },
+ "volumes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelVolumeInfo"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model-tag",
+ "life",
+ "hosted-machine-count",
+ "application-count",
+ "owner-tag"
+ ]
+ },
+ "ModelStatusResults": {
+ "type": "object",
+ "properties": {
+ "models": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelStatus"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "models"
+ ]
+ },
+ "ModelSummariesRequest": {
+ "type": "object",
+ "properties": {
+ "all": {
+ "type": "boolean"
+ },
+ "user-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "user-tag"
+ ]
+ },
+ "ModelSummary": {
+ "type": "object",
+ "properties": {
+ "agent-version": {
+ "$ref": "#/definitions/Number"
+ },
+ "cloud-credential-tag": {
+ "type": "string"
+ },
+ "cloud-region": {
+ "type": "string"
+ },
+ "cloud-tag": {
+ "type": "string"
+ },
+ "controller-uuid": {
+ "type": "string"
+ },
+ "counts": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelEntityCount"
+ }
+ },
+ "default-series": {
+ "type": "string"
+ },
+ "last-connection": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "life": {
+ "type": "string"
+ },
+ "migration": {
+ "$ref": "#/definitions/ModelMigrationStatus"
+ },
+ "name": {
+ "type": "string"
+ },
+ "owner-tag": {
+ "type": "string"
+ },
+ "provider-type": {
+ "type": "string"
+ },
+ "sla": {
+ "$ref": "#/definitions/ModelSLAInfo"
+ },
+ "status": {
+ "$ref": "#/definitions/EntityStatus"
+ },
+ "type": {
+ "type": "string"
+ },
+ "user-access": {
+ "type": "string"
+ },
+ "uuid": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "uuid",
+ "type",
+ "controller-uuid",
+ "cloud-tag",
+ "owner-tag",
+ "life",
+ "user-access",
+ "last-connection",
+ "counts",
+ "sla",
+ "agent-version"
+ ]
+ },
+ "ModelSummaryResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/ModelSummary"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ModelSummaryResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelSummaryResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ModelUnsetKeys": {
+ "type": "object",
+ "properties": {
+ "cloud-region": {
+ "type": "string"
+ },
+ "cloud-tag": {
+ "type": "string"
+ },
+ "keys": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "keys"
+ ]
+ },
+ "ModelUserInfo": {
+ "type": "object",
+ "properties": {
+ "access": {
+ "type": "string"
+ },
+ "display-name": {
+ "type": "string"
+ },
+ "last-connection": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "user": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "user",
+ "display-name",
+ "last-connection",
+ "access"
+ ]
+ },
+ "ModelVolumeInfo": {
+ "type": "object",
+ "properties": {
+ "detachable": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ]
+ },
+ "ModifyModelAccess": {
+ "type": "object",
+ "properties": {
+ "access": {
+ "type": "string"
+ },
+ "action": {
+ "type": "string"
+ },
+ "model-tag": {
+ "type": "string"
+ },
+ "user-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "user-tag",
+ "action",
+ "access",
+ "model-tag"
+ ]
+ },
+ "ModifyModelAccessRequest": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModifyModelAccess"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "changes"
+ ]
+ },
+ "Number": {
+ "type": "object",
+ "properties": {
+ "Build": {
+ "type": "integer"
+ },
+ "Major": {
+ "type": "integer"
+ },
+ "Minor": {
+ "type": "integer"
+ },
+ "Patch": {
+ "type": "integer"
+ },
+ "Tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Major",
+ "Minor",
+ "Tag",
+ "Patch",
+ "Build"
+ ]
+ },
+ "RegionDefaults": {
+ "type": "object",
+ "properties": {
+ "region-name": {
+ "type": "string"
+ },
+ "value": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "region-name",
+ "value"
+ ]
+ },
+ "SetModelDefaults": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelDefaultValues"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "StringResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "UnsetModelDefaults": {
+ "type": "object",
+ "properties": {
+ "keys": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ModelUnsetKeys"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "keys"
+ ]
+ },
+ "UserModel": {
+ "type": "object",
+ "properties": {
+ "last-connection": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "model": {
+ "$ref": "#/definitions/Model"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model",
+ "last-connection"
+ ]
+ },
+ "UserModelList": {
+ "type": "object",
+ "properties": {
+ "user-models": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UserModel"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "user-models"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "ModelUpgrader",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ModelEnvironVersion": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/IntResults"
+ }
+ }
+ },
+ "ModelTargetEnvironVersion": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/IntResults"
+ }
+ }
+ },
+ "SetModelEnvironVersion": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetModelEnvironVersions"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetModelStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "WatchModelEnvironVersion": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityStatusArgs": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "status",
+ "info",
+ "data"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "IntResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "IntResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/IntResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "SetModelEnvironVersion": {
+ "type": "object",
+ "properties": {
+ "model-tag": {
+ "type": "string"
+ },
+ "version": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "model-tag",
+ "version"
+ ]
+ },
+ "SetModelEnvironVersions": {
+ "type": "object",
+ "properties": {
+ "models": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SetModelEnvironVersion"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityStatusArgs"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "NotifyWatcher",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Next": {
+ "type": "object"
+ },
+ "Stop": {
+ "type": "object"
+ }
+ }
+ }
+ },
+ {
+ "Name": "OfferStatusWatcher",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Next": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/OfferStatusWatchResult"
+ }
+ }
+ },
+ "Stop": {
+ "type": "object"
+ }
+ },
+ "definitions": {
+ "EntityStatus": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "since": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "status",
+ "info",
+ "since"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "OfferStatusChange": {
+ "type": "object",
+ "properties": {
+ "offer-name": {
+ "type": "string"
+ },
+ "status": {
+ "$ref": "#/definitions/EntityStatus"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "offer-name",
+ "status"
+ ]
+ },
+ "OfferStatusWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/OfferStatusChange"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id",
+ "changes"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Payloads",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "List": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/PayloadListArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/PayloadListResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Payload": {
+ "type": "object",
+ "properties": {
+ "class": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ },
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machine": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "unit": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "class",
+ "type",
+ "id",
+ "status",
+ "labels",
+ "unit",
+ "machine"
+ ]
+ },
+ "PayloadListArgs": {
+ "type": "object",
+ "properties": {
+ "patterns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "patterns"
+ ]
+ },
+ "PayloadListResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Payload"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "PayloadsHookContext",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "List": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/PayloadResults"
+ }
+ }
+ },
+ "LookUp": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/LookUpPayloadArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/PayloadResults"
+ }
+ }
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetPayloadStatusArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/PayloadResults"
+ }
+ }
+ },
+ "Track": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/TrackPayloadArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/PayloadResults"
+ }
+ }
+ },
+ "Untrack": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/PayloadResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "LookUpPayloadArg": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "id"
+ ]
+ },
+ "LookUpPayloadArgs": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/LookUpPayloadArg"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "args"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "Payload": {
+ "type": "object",
+ "properties": {
+ "class": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ },
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machine": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "unit": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "class",
+ "type",
+ "id",
+ "status",
+ "labels",
+ "unit",
+ "machine"
+ ]
+ },
+ "PayloadResult": {
+ "type": "object",
+ "properties": {
+ "Entity": {
+ "$ref": "#/definitions/Entity"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "not-found": {
+ "type": "boolean"
+ },
+ "payload": {
+ "$ref": "#/definitions/Payload"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Entity",
+ "payload",
+ "not-found"
+ ]
+ },
+ "PayloadResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/PayloadResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "SetPayloadStatusArg": {
+ "type": "object",
+ "properties": {
+ "Entity": {
+ "$ref": "#/definitions/Entity"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Entity",
+ "status"
+ ]
+ },
+ "SetPayloadStatusArgs": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SetPayloadStatusArg"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "args"
+ ]
+ },
+ "TrackPayloadArgs": {
+ "type": "object",
+ "properties": {
+ "payloads": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Payload"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "payloads"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Pinger",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Ping": {
+ "type": "object"
+ },
+ "Stop": {
+ "type": "object"
+ }
+ }
+ }
+ },
+ {
+ "Name": "Provisioner",
+ "Version": 7,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "APIAddresses": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsResult"
+ }
+ }
+ },
+ "APIHostPorts": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/APIHostPortsResult"
+ }
+ }
+ },
+ "AvailabilityZone": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResults"
+ }
+ }
+ },
+ "CACert": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/BytesResult"
+ }
+ }
+ },
+ "CharmProfileChangeInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ProfileChangeResults"
+ }
+ }
+ },
+ "Constraints": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ConstraintsResults"
+ }
+ }
+ },
+ "ContainerConfig": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ContainerConfig"
+ }
+ }
+ },
+ "ContainerManagerConfig": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ContainerManagerConfigParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ContainerManagerConfig"
+ }
+ }
+ },
+ "ControllerAPIInfoForModels": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ControllerAPIInfoResults"
+ }
+ }
+ },
+ "ControllerConfig": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ControllerConfigResult"
+ }
+ }
+ },
+ "DistributionGroup": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/DistributionGroupResults"
+ }
+ }
+ },
+ "DistributionGroupByMachineId": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsResults"
+ }
+ }
+ },
+ "EnsureDead": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "FindTools": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/FindToolsParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/FindToolsResult"
+ }
+ }
+ },
+ "GetContainerInterfaceInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/MachineNetworkConfigResults"
+ }
+ }
+ },
+ "GetContainerProfileInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ContainerProfileResults"
+ }
+ }
+ },
+ "HostChangesForContainers": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/HostNetworkChangeResults"
+ }
+ }
+ },
+ "InstanceId": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResults"
+ }
+ }
+ },
+ "InstanceStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StatusResults"
+ }
+ }
+ },
+ "KeepInstance": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/BoolResults"
+ }
+ }
+ },
+ "Life": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/LifeResults"
+ }
+ }
+ },
+ "MachinesWithTransientErrors": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StatusResults"
+ }
+ }
+ },
+ "MarkMachinesForRemoval": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "ModelConfig": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelConfigResult"
+ }
+ }
+ },
+ "ModelUUID": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "PrepareContainerInterfaceInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/MachineNetworkConfigResults"
+ }
+ }
+ },
+ "ProvisioningInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ProvisioningInfoResults"
+ }
+ }
+ },
+ "ReleaseContainerAddresses": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Remove": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "RemoveUpgradeCharmProfileData": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Series": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResults"
+ }
+ }
+ },
+ "SetCharmProfiles": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetProfileArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetHostMachineNetworkConfig": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetMachineNetworkConfig"
+ }
+ }
+ },
+ "SetInstanceInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/InstancesInfo"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetInstanceStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetObservedNetworkConfig": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetMachineNetworkConfig"
+ }
+ }
+ },
+ "SetPasswords": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/EntityPasswords"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetProviderNetworkConfig": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetSupportedContainers": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/MachineContainersParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetUpgradeCharmProfileComplete": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetProfileUpgradeCompleteArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "StateAddresses": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsResult"
+ }
+ }
+ },
+ "Status": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StatusResults"
+ }
+ }
+ },
+ "Tools": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ToolsResults"
+ }
+ }
+ },
+ "UpdateStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "WatchAPIHostPorts": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "WatchAllContainers": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/WatchContainers"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ },
+ "WatchContainers": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/WatchContainers"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ },
+ "WatchContainersCharmProfiles": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/WatchContainers"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ },
+ "WatchForModelConfigChanges": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "WatchMachineErrorRetry": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "WatchModelMachines": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ },
+ "WatchModelMachinesCharmProfiles": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "APIHostPortsResult": {
+ "type": "object",
+ "properties": {
+ "servers": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/HostPort"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "servers"
+ ]
+ },
+ "Address": {
+ "type": "object",
+ "properties": {
+ "scope": {
+ "type": "string"
+ },
+ "space-name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "value",
+ "type",
+ "scope"
+ ]
+ },
+ "Binary": {
+ "type": "object",
+ "properties": {
+ "Arch": {
+ "type": "string"
+ },
+ "Number": {
+ "$ref": "#/definitions/Number"
+ },
+ "Series": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Number",
+ "Series",
+ "Arch"
+ ]
+ },
+ "BoolResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "BoolResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/BoolResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "BytesResult": {
+ "type": "object",
+ "properties": {
+ "result": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "CharmLXDProfile": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "description": {
+ "type": "string"
+ },
+ "devices": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config",
+ "description",
+ "devices"
+ ]
+ },
+ "CloudImageMetadata": {
+ "type": "object",
+ "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"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "image-id",
+ "region",
+ "version",
+ "series",
+ "arch",
+ "source",
+ "priority"
+ ]
+ },
+ "ConstraintsResult": {
+ "type": "object",
+ "properties": {
+ "constraints": {
+ "$ref": "#/definitions/Value"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "constraints"
+ ]
+ },
+ "ConstraintsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ConstraintsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ContainerConfig": {
+ "type": "object",
+ "properties": {
+ "UpdateBehavior": {
+ "$ref": "#/definitions/UpdateBehavior"
+ },
+ "apt-mirror": {
+ "type": "string"
+ },
+ "apt-proxy": {
+ "$ref": "#/definitions/Settings"
+ },
+ "authorized-keys": {
+ "type": "string"
+ },
+ "cloudinit-userdata": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "container-inherit-properties": {
+ "type": "string"
+ },
+ "juju-proxy": {
+ "$ref": "#/definitions/Settings"
+ },
+ "legacy-proxy": {
+ "$ref": "#/definitions/Settings"
+ },
+ "provider-type": {
+ "type": "string"
+ },
+ "snap-proxy": {
+ "$ref": "#/definitions/Settings"
+ },
+ "ssl-hostname-verification": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "provider-type",
+ "authorized-keys",
+ "ssl-hostname-verification",
+ "legacy-proxy",
+ "juju-proxy",
+ "apt-proxy",
+ "snap-proxy",
+ "apt-mirror",
+ "UpdateBehavior"
+ ]
+ },
+ "ContainerLXDProfile": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "profile": {
+ "$ref": "#/definitions/CharmLXDProfile"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "profile",
+ "name"
+ ]
+ },
+ "ContainerManagerConfig": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "ContainerManagerConfigParams": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "type"
+ ]
+ },
+ "ContainerProfileResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "lxd-profiles": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ContainerLXDProfile"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "ContainerProfileResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ContainerProfileResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ControllerAPIInfoResult": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "cacert": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "addresses",
+ "cacert"
+ ]
+ },
+ "ControllerAPIInfoResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ControllerAPIInfoResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ControllerConfigResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "DeviceBridgeInfo": {
+ "type": "object",
+ "properties": {
+ "bridge-name": {
+ "type": "string"
+ },
+ "host-device-name": {
+ "type": "string"
+ },
+ "mac-address": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "host-device-name",
+ "bridge-name",
+ "mac-address"
+ ]
+ },
+ "DistributionGroupResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "DistributionGroupResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DistributionGroupResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityPassword": {
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "password"
+ ]
+ },
+ "EntityPasswords": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityPassword"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "changes"
+ ]
+ },
+ "EntityStatusArgs": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "status",
+ "info",
+ "data"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "FindToolsParams": {
+ "type": "object",
+ "properties": {
+ "agentstream": {
+ "type": "string"
+ },
+ "arch": {
+ "type": "string"
+ },
+ "major": {
+ "type": "integer"
+ },
+ "minor": {
+ "type": "integer"
+ },
+ "number": {
+ "$ref": "#/definitions/Number"
+ },
+ "series": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "number",
+ "major",
+ "minor",
+ "arch",
+ "series",
+ "agentstream"
+ ]
+ },
+ "FindToolsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "list": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Tools"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "list"
+ ]
+ },
+ "HardwareCharacteristics": {
+ "type": "object",
+ "properties": {
+ "arch": {
+ "type": "string"
+ },
+ "availability-zone": {
+ "type": "string"
+ },
+ "cpu-cores": {
+ "type": "integer"
+ },
+ "cpu-power": {
+ "type": "integer"
+ },
+ "mem": {
+ "type": "integer"
+ },
+ "root-disk": {
+ "type": "integer"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "HostNetworkChange": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "new-bridges": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DeviceBridgeInfo"
+ }
+ },
+ "reconfigure-delay": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "new-bridges",
+ "reconfigure-delay"
+ ]
+ },
+ "HostNetworkChangeResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/HostNetworkChange"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "HostPort": {
+ "type": "object",
+ "properties": {
+ "Address": {
+ "$ref": "#/definitions/Address"
+ },
+ "port": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Address",
+ "port"
+ ]
+ },
+ "InstanceInfo": {
+ "type": "object",
+ "properties": {
+ "characteristics": {
+ "$ref": "#/definitions/HardwareCharacteristics"
+ },
+ "charm-profiles": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "instance-id": {
+ "type": "string"
+ },
+ "network-config": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NetworkConfig"
+ }
+ },
+ "nonce": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ },
+ "volume-attachments": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/VolumeAttachmentInfo"
+ }
+ }
+ },
+ "volumes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Volume"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "instance-id",
+ "nonce",
+ "characteristics",
+ "volumes",
+ "volume-attachments",
+ "network-config",
+ "charm-profiles"
+ ]
+ },
+ "InstancesInfo": {
+ "type": "object",
+ "properties": {
+ "machines": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/InstanceInfo"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machines"
+ ]
+ },
+ "LifeResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "life": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "life"
+ ]
+ },
+ "LifeResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/LifeResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MachineContainers": {
+ "type": "object",
+ "properties": {
+ "container-types": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machine-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machine-tag",
+ "container-types"
+ ]
+ },
+ "MachineContainersParams": {
+ "type": "object",
+ "properties": {
+ "params": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MachineContainers"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "params"
+ ]
+ },
+ "MachineNetworkConfigResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "info": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NetworkConfig"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "info"
+ ]
+ },
+ "MachineNetworkConfigResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MachineNetworkConfigResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ModelConfigResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "NetworkConfig": {
+ "type": "object",
+ "properties": {
+ "address": {
+ "type": "string"
+ },
+ "cidr": {
+ "type": "string"
+ },
+ "config-type": {
+ "type": "string"
+ },
+ "device-index": {
+ "type": "integer"
+ },
+ "disabled": {
+ "type": "boolean"
+ },
+ "dns-search-domains": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "dns-servers": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway-address": {
+ "type": "string"
+ },
+ "interface-name": {
+ "type": "string"
+ },
+ "interface-type": {
+ "type": "string"
+ },
+ "is-default-gateway": {
+ "type": "boolean"
+ },
+ "mac-address": {
+ "type": "string"
+ },
+ "mtu": {
+ "type": "integer"
+ },
+ "no-auto-start": {
+ "type": "boolean"
+ },
+ "parent-interface-name": {
+ "type": "string"
+ },
+ "provider-address-id": {
+ "type": "string"
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "provider-space-id": {
+ "type": "string"
+ },
+ "provider-subnet-id": {
+ "type": "string"
+ },
+ "provider-vlan-id": {
+ "type": "string"
+ },
+ "routes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NetworkRoute"
+ }
+ },
+ "vlan-tag": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "device-index",
+ "mac-address",
+ "cidr",
+ "mtu",
+ "provider-id",
+ "provider-subnet-id",
+ "provider-space-id",
+ "provider-address-id",
+ "provider-vlan-id",
+ "vlan-tag",
+ "interface-name",
+ "parent-interface-name",
+ "interface-type",
+ "disabled"
+ ]
+ },
+ "NetworkRoute": {
+ "type": "object",
+ "properties": {
+ "destination-cidr": {
+ "type": "string"
+ },
+ "gateway-ip": {
+ "type": "string"
+ },
+ "metric": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "destination-cidr",
+ "gateway-ip",
+ "metric"
+ ]
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "Number": {
+ "type": "object",
+ "properties": {
+ "Build": {
+ "type": "integer"
+ },
+ "Major": {
+ "type": "integer"
+ },
+ "Minor": {
+ "type": "integer"
+ },
+ "Patch": {
+ "type": "integer"
+ },
+ "Tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Major",
+ "Minor",
+ "Tag",
+ "Patch",
+ "Build"
+ ]
+ },
+ "ProfileChangeResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "new-profile-name": {
+ "type": "string"
+ },
+ "old-profile-name": {
+ "type": "string"
+ },
+ "profile": {
+ "$ref": "#/definitions/CharmLXDProfile"
+ },
+ "subordinate": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ProfileChangeResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ProfileChangeResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ProvisioningInfo": {
+ "type": "object",
+ "properties": {
+ "charm-lxd-profiles": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "cloudinit-userdata": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "constraints": {
+ "$ref": "#/definitions/Value"
+ },
+ "controller-config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "endpoint-bindings": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "image-metadata": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CloudImageMetadata"
+ }
+ },
+ "jobs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "placement": {
+ "type": "string"
+ },
+ "series": {
+ "type": "string"
+ },
+ "subnets-to-zones": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "tags": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "volume-attachments": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/VolumeAttachmentParams"
+ }
+ },
+ "volumes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/VolumeParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "constraints",
+ "series",
+ "placement",
+ "jobs"
+ ]
+ },
+ "ProvisioningInfoResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/ProvisioningInfo"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "ProvisioningInfoResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ProvisioningInfoResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "SetMachineNetworkConfig": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NetworkConfig"
+ }
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "config"
+ ]
+ },
+ "SetProfileArg": {
+ "type": "object",
+ "properties": {
+ "entity": {
+ "$ref": "#/definitions/Entity"
+ },
+ "profiles": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entity",
+ "profiles"
+ ]
+ },
+ "SetProfileArgs": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SetProfileArg"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "args"
+ ]
+ },
+ "SetProfileUpgradeCompleteArg": {
+ "type": "object",
+ "properties": {
+ "entity": {
+ "$ref": "#/definitions/Entity"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entity",
+ "message"
+ ]
+ },
+ "SetProfileUpgradeCompleteArgs": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SetProfileUpgradeCompleteArg"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "args"
+ ]
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityStatusArgs"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Settings": {
+ "type": "object",
+ "properties": {
+ "AutoNoProxy": {
+ "type": "string"
+ },
+ "Ftp": {
+ "type": "string"
+ },
+ "Http": {
+ "type": "string"
+ },
+ "Https": {
+ "type": "string"
+ },
+ "NoProxy": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Http",
+ "Https",
+ "Ftp",
+ "NoProxy",
+ "AutoNoProxy"
+ ]
+ },
+ "StatusResult": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "id": {
+ "type": "string"
+ },
+ "info": {
+ "type": "string"
+ },
+ "life": {
+ "type": "string"
+ },
+ "since": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "life",
+ "status",
+ "info",
+ "data",
+ "since"
+ ]
+ },
+ "StatusResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StatusResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "StringResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StringsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StringsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StringsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ },
+ "StringsWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Tools": {
+ "type": "object",
+ "properties": {
+ "sha256": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "url": {
+ "type": "string"
+ },
+ "version": {
+ "$ref": "#/definitions/Binary"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "version",
+ "url",
+ "size"
+ ]
+ },
+ "ToolsResult": {
+ "type": "object",
+ "properties": {
+ "disable-ssl-hostname-verification": {
+ "type": "boolean"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "tools": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Tools"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tools",
+ "disable-ssl-hostname-verification"
+ ]
+ },
+ "ToolsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ToolsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "UpdateBehavior": {
+ "type": "object",
+ "properties": {
+ "enable-os-refresh-update": {
+ "type": "boolean"
+ },
+ "enable-os-upgrade": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "enable-os-refresh-update",
+ "enable-os-upgrade"
+ ]
+ },
+ "Value": {
+ "type": "object",
+ "properties": {
+ "arch": {
+ "type": "string"
+ },
+ "container": {
+ "type": "string"
+ },
+ "cores": {
+ "type": "integer"
+ },
+ "cpu-power": {
+ "type": "integer"
+ },
+ "instance-type": {
+ "type": "string"
+ },
+ "mem": {
+ "type": "integer"
+ },
+ "root-disk": {
+ "type": "integer"
+ },
+ "spaces": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "virt-type": {
+ "type": "string"
+ },
+ "zones": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "Volume": {
+ "type": "object",
+ "properties": {
+ "info": {
+ "$ref": "#/definitions/VolumeInfo"
+ },
+ "volume-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "volume-tag",
+ "info"
+ ]
+ },
+ "VolumeAttachmentInfo": {
+ "type": "object",
+ "properties": {
+ "bus-address": {
+ "type": "string"
+ },
+ "device-link": {
+ "type": "string"
+ },
+ "device-name": {
+ "type": "string"
+ },
+ "plan-info": {
+ "$ref": "#/definitions/VolumeAttachmentPlanInfo"
+ },
+ "read-only": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false
+ },
+ "VolumeAttachmentParams": {
+ "type": "object",
+ "properties": {
+ "instance-id": {
+ "type": "string"
+ },
+ "machine-tag": {
+ "type": "string"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "read-only": {
+ "type": "boolean"
+ },
+ "volume-id": {
+ "type": "string"
+ },
+ "volume-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "volume-tag",
+ "machine-tag",
+ "provider"
+ ]
+ },
+ "VolumeAttachmentPlanInfo": {
+ "type": "object",
+ "properties": {
+ "device-attributes": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "device-type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "VolumeInfo": {
+ "type": "object",
+ "properties": {
+ "hardware-id": {
+ "type": "string"
+ },
+ "persistent": {
+ "type": "boolean"
+ },
+ "pool": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "volume-id": {
+ "type": "string"
+ },
+ "wwn": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "volume-id",
+ "size",
+ "persistent"
+ ]
+ },
+ "VolumeParams": {
+ "type": "object",
+ "properties": {
+ "attachment": {
+ "$ref": "#/definitions/VolumeAttachmentParams"
+ },
+ "attributes": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "provider": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "tags": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "volume-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "volume-tag",
+ "size",
+ "provider"
+ ]
+ },
+ "WatchContainer": {
+ "type": "object",
+ "properties": {
+ "container-type": {
+ "type": "string"
+ },
+ "machine-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machine-tag",
+ "container-type"
+ ]
+ },
+ "WatchContainers": {
+ "type": "object",
+ "properties": {
+ "params": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/WatchContainer"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "params"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "ProxyUpdater",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ProxyConfig": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ProxyConfigResults"
+ }
+ }
+ },
+ "WatchForProxyConfigAndAPIHostPortChanges": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ProxyConfig": {
+ "type": "object",
+ "properties": {
+ "ftp": {
+ "type": "string"
+ },
+ "http": {
+ "type": "string"
+ },
+ "https": {
+ "type": "string"
+ },
+ "no-proxy": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "http",
+ "https",
+ "ftp",
+ "no-proxy"
+ ]
+ },
+ "ProxyConfigResult": {
+ "type": "object",
+ "properties": {
+ "apt-proxy-settings": {
+ "$ref": "#/definitions/ProxyConfig"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "juju-proxy-settings": {
+ "$ref": "#/definitions/ProxyConfig"
+ },
+ "legacy-proxy-settings": {
+ "$ref": "#/definitions/ProxyConfig"
+ },
+ "snap-proxy-settings": {
+ "$ref": "#/definitions/ProxyConfig"
+ },
+ "snap-store-assertions": {
+ "type": "string"
+ },
+ "snap-store-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "legacy-proxy-settings",
+ "juju-proxy-settings"
+ ]
+ },
+ "ProxyConfigResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ProxyConfigResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Reboot",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ClearReboot": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "GetRebootAction": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/RebootActionResults"
+ }
+ }
+ },
+ "RequestReboot": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "WatchForRebootEvent": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "RebootActionResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "RebootActionResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RebootActionResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "RelationStatusWatcher",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Next": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/RelationLifeSuspendedStatusWatchResult"
+ }
+ }
+ },
+ "Stop": {
+ "type": "object"
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "RelationLifeSuspendedStatusChange": {
+ "type": "object",
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "life": {
+ "type": "string"
+ },
+ "suspended": {
+ "type": "boolean"
+ },
+ "suspended-reason": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "key",
+ "life",
+ "suspended",
+ "suspended-reason"
+ ]
+ },
+ "RelationLifeSuspendedStatusWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelationLifeSuspendedStatusChange"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id",
+ "changes"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "RelationUnitsWatcher",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Next": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/RelationUnitsWatchResult"
+ }
+ }
+ },
+ "Stop": {
+ "type": "object"
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "RelationUnitsChange": {
+ "type": "object",
+ "properties": {
+ "changed": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/UnitSettings"
+ }
+ }
+ },
+ "departed": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "changed"
+ ]
+ },
+ "RelationUnitsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "$ref": "#/definitions/RelationUnitsChange"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id",
+ "changes"
+ ]
+ },
+ "UnitSettings": {
+ "type": "object",
+ "properties": {
+ "version": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "version"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "RemoteRelations",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ConsumeRemoteRelationChanges": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RemoteRelationsChanges"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "ControllerAPIInfoForModels": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ControllerAPIInfoResults"
+ }
+ }
+ },
+ "ControllerConfig": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ControllerConfigResult"
+ }
+ }
+ },
+ "ExportEntities": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/TokenResults"
+ }
+ }
+ },
+ "GetTokens": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/GetTokenArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResults"
+ }
+ }
+ },
+ "ImportRemoteEntities": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RemoteEntityTokenArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "RelationUnitSettings": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RelationUnits"
+ },
+ "Result": {
+ "$ref": "#/definitions/SettingsResults"
+ }
+ }
+ },
+ "Relations": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/RemoteRelationResults"
+ }
+ }
+ },
+ "RemoteApplications": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/RemoteApplicationResults"
+ }
+ }
+ },
+ "SaveMacaroons": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/EntityMacaroonArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetRemoteApplicationsStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "WatchLocalRelationUnits": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/RelationUnitsWatchResults"
+ }
+ }
+ },
+ "WatchRemoteApplicationRelations": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ },
+ "WatchRemoteApplications": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ },
+ "WatchRemoteRelations": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "ControllerAPIInfoResult": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "cacert": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "addresses",
+ "cacert"
+ ]
+ },
+ "ControllerAPIInfoResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ControllerAPIInfoResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ControllerConfigResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityMacaroonArg": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "macaroon",
+ "tag"
+ ]
+ },
+ "EntityMacaroonArgs": {
+ "type": "object",
+ "properties": {
+ "Args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityMacaroonArg"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Args"
+ ]
+ },
+ "EntityStatusArgs": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "status",
+ "info",
+ "data"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "GetTokenArg": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "GetTokenArgs": {
+ "type": "object",
+ "properties": {
+ "Args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/GetTokenArg"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Args"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "RelationUnit": {
+ "type": "object",
+ "properties": {
+ "relation": {
+ "type": "string"
+ },
+ "unit": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation",
+ "unit"
+ ]
+ },
+ "RelationUnits": {
+ "type": "object",
+ "properties": {
+ "relation-units": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelationUnit"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation-units"
+ ]
+ },
+ "RelationUnitsChange": {
+ "type": "object",
+ "properties": {
+ "changed": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/UnitSettings"
+ }
+ }
+ },
+ "departed": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "changed"
+ ]
+ },
+ "RelationUnitsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "$ref": "#/definitions/RelationUnitsChange"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id",
+ "changes"
+ ]
+ },
+ "RelationUnitsWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelationUnitsWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "RemoteApplication": {
+ "type": "object",
+ "properties": {
+ "is-consumer-proxy": {
+ "type": "boolean"
+ },
+ "life": {
+ "type": "string"
+ },
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "model-uuid": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "offer-uuid": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "offer-uuid",
+ "model-uuid",
+ "is-consumer-proxy"
+ ]
+ },
+ "RemoteApplicationResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/RemoteApplication"
+ }
+ },
+ "additionalProperties": false
+ },
+ "RemoteApplicationResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoteApplicationResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "RemoteEndpoint": {
+ "type": "object",
+ "properties": {
+ "interface": {
+ "type": "string"
+ },
+ "limit": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "role": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "role",
+ "interface",
+ "limit"
+ ]
+ },
+ "RemoteEntityTokenArg": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ },
+ "token": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "RemoteEntityTokenArgs": {
+ "type": "object",
+ "properties": {
+ "Args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoteEntityTokenArg"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Args"
+ ]
+ },
+ "RemoteRelation": {
+ "type": "object",
+ "properties": {
+ "application-name": {
+ "type": "string"
+ },
+ "endpoint": {
+ "$ref": "#/definitions/RemoteEndpoint"
+ },
+ "id": {
+ "type": "integer"
+ },
+ "key": {
+ "type": "string"
+ },
+ "life": {
+ "type": "string"
+ },
+ "remote-application-name": {
+ "type": "string"
+ },
+ "remote-endpoint-name": {
+ "type": "string"
+ },
+ "source-model-uuid": {
+ "type": "string"
+ },
+ "suspended": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "life",
+ "suspended",
+ "id",
+ "key",
+ "application-name",
+ "endpoint",
+ "remote-application-name",
+ "remote-endpoint-name",
+ "source-model-uuid"
+ ]
+ },
+ "RemoteRelationChangeEvent": {
+ "type": "object",
+ "properties": {
+ "application-token": {
+ "type": "string"
+ },
+ "changed-units": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoteRelationUnitChange"
+ }
+ },
+ "departed-units": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ }
+ },
+ "force-cleanup": {
+ "type": "boolean"
+ },
+ "life": {
+ "type": "string"
+ },
+ "macaroons": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Macaroon"
+ }
+ },
+ "relation-token": {
+ "type": "string"
+ },
+ "suspended": {
+ "type": "boolean"
+ },
+ "suspended-reason": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation-token",
+ "application-token",
+ "life"
+ ]
+ },
+ "RemoteRelationResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/RemoteRelation"
+ }
+ },
+ "additionalProperties": false
+ },
+ "RemoteRelationResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoteRelationResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "RemoteRelationUnitChange": {
+ "type": "object",
+ "properties": {
+ "settings": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "unit-id": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "unit-id"
+ ]
+ },
+ "RemoteRelationsChanges": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoteRelationChangeEvent"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityStatusArgs"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "SettingsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "settings": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "settings"
+ ]
+ },
+ "SettingsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SettingsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "StringResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StringsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ },
+ "StringsWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "TokenResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "token": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "TokenResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/TokenResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "UnitSettings": {
+ "type": "object",
+ "properties": {
+ "version": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "version"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Resources",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AddPendingResources": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/AddPendingResourcesArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/AddPendingResourcesResult"
+ }
+ }
+ },
+ "ListResources": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ListResourcesArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ResourcesResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "AddCharmWithAuthorization": {
+ "type": "object",
+ "properties": {
+ "channel": {
+ "type": "string"
+ },
+ "force": {
+ "type": "boolean"
+ },
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "url",
+ "channel",
+ "macaroon",
+ "force"
+ ]
+ },
+ "AddPendingResourcesArgs": {
+ "type": "object",
+ "properties": {
+ "AddCharmWithAuthorization": {
+ "$ref": "#/definitions/AddCharmWithAuthorization"
+ },
+ "Entity": {
+ "$ref": "#/definitions/Entity"
+ },
+ "resources": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CharmResource"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Entity",
+ "AddCharmWithAuthorization",
+ "resources"
+ ]
+ },
+ "AddPendingResourcesResult": {
+ "type": "object",
+ "properties": {
+ "ErrorResult": {
+ "$ref": "#/definitions/ErrorResult"
+ },
+ "pending-ids": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ErrorResult",
+ "pending-ids"
+ ]
+ },
+ "CharmResource": {
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "fingerprint": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "origin": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "revision": {
+ "type": "integer"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "type",
+ "path",
+ "origin",
+ "revision",
+ "fingerprint",
+ "size"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ListResourcesArgs": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "Resource": {
+ "type": "object",
+ "properties": {
+ "CharmResource": {
+ "$ref": "#/definitions/CharmResource"
+ },
+ "application": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ },
+ "pending-id": {
+ "type": "string"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "username": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "CharmResource",
+ "id",
+ "pending-id",
+ "application",
+ "username",
+ "timestamp"
+ ]
+ },
+ "ResourcesResult": {
+ "type": "object",
+ "properties": {
+ "ErrorResult": {
+ "$ref": "#/definitions/ErrorResult"
+ },
+ "charm-store-resources": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CharmResource"
+ }
+ },
+ "resources": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Resource"
+ }
+ },
+ "unit-resources": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UnitResources"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ErrorResult",
+ "resources",
+ "charm-store-resources",
+ "unit-resources"
+ ]
+ },
+ "ResourcesResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ResourcesResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "UnitResources": {
+ "type": "object",
+ "properties": {
+ "Entity": {
+ "$ref": "#/definitions/Entity"
+ },
+ "download-progress": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "integer"
+ }
+ }
+ },
+ "resources": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Resource"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Entity",
+ "resources",
+ "download-progress"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "ResourcesHookContext",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "GetResourceInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ListUnitResourcesArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/UnitResourcesResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "CharmResource": {
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "fingerprint": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "origin": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "revision": {
+ "type": "integer"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "type",
+ "path",
+ "origin",
+ "revision",
+ "fingerprint",
+ "size"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ListUnitResourcesArgs": {
+ "type": "object",
+ "properties": {
+ "resource-names": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "resource-names"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "Resource": {
+ "type": "object",
+ "properties": {
+ "CharmResource": {
+ "$ref": "#/definitions/CharmResource"
+ },
+ "application": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ },
+ "pending-id": {
+ "type": "string"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "username": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "CharmResource",
+ "id",
+ "pending-id",
+ "application",
+ "username",
+ "timestamp"
+ ]
+ },
+ "UnitResourceResult": {
+ "type": "object",
+ "properties": {
+ "ErrorResult": {
+ "$ref": "#/definitions/ErrorResult"
+ },
+ "resource": {
+ "$ref": "#/definitions/Resource"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ErrorResult",
+ "resource"
+ ]
+ },
+ "UnitResourcesResult": {
+ "type": "object",
+ "properties": {
+ "ErrorResult": {
+ "$ref": "#/definitions/ErrorResult"
+ },
+ "resources": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UnitResourceResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ErrorResult",
+ "resources"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Resumer",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ResumeTransactions": {
+ "type": "object"
+ }
+ }
+ }
+ },
+ {
+ "Name": "RetryStrategy",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "RetryStrategy": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/RetryStrategyResults"
+ }
+ }
+ },
+ "WatchRetryStrategy": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "RetryStrategy": {
+ "type": "object",
+ "properties": {
+ "jitter-retry-time": {
+ "type": "boolean"
+ },
+ "max-retry-time": {
+ "type": "integer"
+ },
+ "min-retry-time": {
+ "type": "integer"
+ },
+ "retry-time-factor": {
+ "type": "integer"
+ },
+ "should-retry": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "should-retry",
+ "min-retry-time",
+ "max-retry-time",
+ "jitter-retry-time",
+ "retry-time-factor"
+ ]
+ },
+ "RetryStrategyResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/RetryStrategy"
+ }
+ },
+ "additionalProperties": false
+ },
+ "RetryStrategyResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RetryStrategyResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "SSHClient",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AllAddresses": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/SSHAddressesResults"
+ }
+ }
+ },
+ "PrivateAddress": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/SSHAddressResults"
+ }
+ }
+ },
+ "Proxy": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/SSHProxyResult"
+ }
+ }
+ },
+ "PublicAddress": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/SSHAddressResults"
+ }
+ }
+ },
+ "PublicKeys": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/SSHPublicKeysResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "SSHAddressResult": {
+ "type": "object",
+ "properties": {
+ "address": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "SSHAddressResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SSHAddressResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "SSHAddressesResult": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "addresses"
+ ]
+ },
+ "SSHAddressesResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SSHAddressesResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "SSHProxyResult": {
+ "type": "object",
+ "properties": {
+ "use-proxy": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "use-proxy"
+ ]
+ },
+ "SSHPublicKeysResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "public-keys": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "SSHPublicKeysResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SSHPublicKeysResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Singular",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Claim": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SingularClaims"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Wait": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "SingularClaim": {
+ "type": "object",
+ "properties": {
+ "claimant-tag": {
+ "type": "string"
+ },
+ "duration": {
+ "type": "integer"
+ },
+ "entity-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entity-tag",
+ "claimant-tag",
+ "duration"
+ ]
+ },
+ "SingularClaims": {
+ "type": "object",
+ "properties": {
+ "claims": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SingularClaim"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "claims"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Spaces",
+ "Version": 3,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "CreateSpaces": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/CreateSpacesParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "ListSpaces": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ListSpacesResults"
+ }
+ }
+ },
+ "ReloadSpaces": {
+ "type": "object"
+ }
+ },
+ "definitions": {
+ "CreateSpaceParams": {
+ "type": "object",
+ "properties": {
+ "provider-id": {
+ "type": "string"
+ },
+ "public": {
+ "type": "boolean"
+ },
+ "space-tag": {
+ "type": "string"
+ },
+ "subnet-tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "subnet-tags",
+ "space-tag",
+ "public"
+ ]
+ },
+ "CreateSpacesParams": {
+ "type": "object",
+ "properties": {
+ "spaces": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CreateSpaceParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "spaces"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ListSpacesResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Space"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "Space": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "name": {
+ "type": "string"
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Subnet"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "subnets"
+ ]
+ },
+ "Subnet": {
+ "type": "object",
+ "properties": {
+ "cidr": {
+ "type": "string"
+ },
+ "life": {
+ "type": "string"
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "provider-network-id": {
+ "type": "string"
+ },
+ "provider-space-id": {
+ "type": "string"
+ },
+ "space-tag": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "vlan-tag": {
+ "type": "integer"
+ },
+ "zones": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "cidr",
+ "vlan-tag",
+ "life",
+ "space-tag",
+ "zones"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "StatusHistory",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ModelConfig": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelConfigResult"
+ }
+ }
+ },
+ "Prune": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/StatusHistoryPruneArgs"
+ }
+ }
+ },
+ "WatchForModelConfigChanges": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "ModelConfigResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "StatusHistoryPruneArgs": {
+ "type": "object",
+ "properties": {
+ "max-history-mb": {
+ "type": "integer"
+ },
+ "max-history-time": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "max-history-time",
+ "max-history-mb"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Storage",
+ "Version": 4,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AddToUnit": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/StoragesAddParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/AddStorageResults"
+ }
+ }
+ },
+ "Attach": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/StorageAttachmentIds"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "CreatePool": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/StoragePool"
+ }
+ }
+ },
+ "Detach": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/StorageAttachmentIds"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Import": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/BulkImportStorageParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ImportStorageResults"
+ }
+ }
+ },
+ "ListFilesystems": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/FilesystemFilters"
+ },
+ "Result": {
+ "$ref": "#/definitions/FilesystemDetailsListResults"
+ }
+ }
+ },
+ "ListPools": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/StoragePoolFilters"
+ },
+ "Result": {
+ "$ref": "#/definitions/StoragePoolsResults"
+ }
+ }
+ },
+ "ListStorageDetails": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/StorageFilters"
+ },
+ "Result": {
+ "$ref": "#/definitions/StorageDetailsListResults"
+ }
+ }
+ },
+ "ListVolumes": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/VolumeFilters"
+ },
+ "Result": {
+ "$ref": "#/definitions/VolumeDetailsListResults"
+ }
+ }
+ },
+ "Remove": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RemoveStorage"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "StorageDetails": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StorageDetailsResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "AddStorageDetails": {
+ "type": "object",
+ "properties": {
+ "storage-tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "storage-tags"
+ ]
+ },
+ "AddStorageResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/AddStorageDetails"
+ }
+ },
+ "additionalProperties": false
+ },
+ "AddStorageResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AddStorageResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "BulkImportStorageParams": {
+ "type": "object",
+ "properties": {
+ "storage": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ImportStorageParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "storage"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityStatus": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "since": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "status",
+ "info",
+ "since"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "FilesystemAttachmentDetails": {
+ "type": "object",
+ "properties": {
+ "FilesystemAttachmentInfo": {
+ "$ref": "#/definitions/FilesystemAttachmentInfo"
+ },
+ "life": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "FilesystemAttachmentInfo"
+ ]
+ },
+ "FilesystemAttachmentInfo": {
+ "type": "object",
+ "properties": {
+ "mount-point": {
+ "type": "string"
+ },
+ "read-only": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false
+ },
+ "FilesystemDetails": {
+ "type": "object",
+ "properties": {
+ "filesystem-tag": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/FilesystemInfo"
+ },
+ "life": {
+ "type": "string"
+ },
+ "machine-attachments": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/FilesystemAttachmentDetails"
+ }
+ }
+ },
+ "status": {
+ "$ref": "#/definitions/EntityStatus"
+ },
+ "storage": {
+ "$ref": "#/definitions/StorageDetails"
+ },
+ "unit-attachments": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/FilesystemAttachmentDetails"
+ }
+ }
+ },
+ "volume-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "filesystem-tag",
+ "info",
+ "status"
+ ]
+ },
+ "FilesystemDetailsListResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/FilesystemDetails"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "FilesystemDetailsListResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/FilesystemDetailsListResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "FilesystemFilter": {
+ "type": "object",
+ "properties": {
+ "machines": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "FilesystemFilters": {
+ "type": "object",
+ "properties": {
+ "filters": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/FilesystemFilter"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "FilesystemInfo": {
+ "type": "object",
+ "properties": {
+ "filesystem-id": {
+ "type": "string"
+ },
+ "pool": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "filesystem-id",
+ "pool",
+ "size"
+ ]
+ },
+ "ImportStorageDetails": {
+ "type": "object",
+ "properties": {
+ "storage-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "storage-tag"
+ ]
+ },
+ "ImportStorageParams": {
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "integer"
+ },
+ "pool": {
+ "type": "string"
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "storage-name": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "kind",
+ "pool",
+ "provider-id",
+ "storage-name"
+ ]
+ },
+ "ImportStorageResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/ImportStorageDetails"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ImportStorageResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ImportStorageResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "RemoveStorage": {
+ "type": "object",
+ "properties": {
+ "storage": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoveStorageInstance"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "storage"
+ ]
+ },
+ "RemoveStorageInstance": {
+ "type": "object",
+ "properties": {
+ "destroy-attachments": {
+ "type": "boolean"
+ },
+ "destroy-storage": {
+ "type": "boolean"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "StorageAddParams": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "storage": {
+ "$ref": "#/definitions/StorageConstraints"
+ },
+ "unit": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "unit",
+ "name",
+ "storage"
+ ]
+ },
+ "StorageAttachmentDetails": {
+ "type": "object",
+ "properties": {
+ "life": {
+ "type": "string"
+ },
+ "location": {
+ "type": "string"
+ },
+ "machine-tag": {
+ "type": "string"
+ },
+ "storage-tag": {
+ "type": "string"
+ },
+ "unit-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "storage-tag",
+ "unit-tag",
+ "machine-tag"
+ ]
+ },
+ "StorageAttachmentId": {
+ "type": "object",
+ "properties": {
+ "storage-tag": {
+ "type": "string"
+ },
+ "unit-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "storage-tag",
+ "unit-tag"
+ ]
+ },
+ "StorageAttachmentIds": {
+ "type": "object",
+ "properties": {
+ "ids": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StorageAttachmentId"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ids"
+ ]
+ },
+ "StorageConstraints": {
+ "type": "object",
+ "properties": {
+ "count": {
+ "type": "integer"
+ },
+ "pool": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false
+ },
+ "StorageDetails": {
+ "type": "object",
+ "properties": {
+ "attachments": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/StorageAttachmentDetails"
+ }
+ }
+ },
+ "kind": {
+ "type": "integer"
+ },
+ "life": {
+ "type": "string"
+ },
+ "owner-tag": {
+ "type": "string"
+ },
+ "persistent": {
+ "type": "boolean"
+ },
+ "status": {
+ "$ref": "#/definitions/EntityStatus"
+ },
+ "storage-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "storage-tag",
+ "owner-tag",
+ "kind",
+ "status",
+ "persistent"
+ ]
+ },
+ "StorageDetailsListResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StorageDetails"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StorageDetailsListResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StorageDetailsListResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StorageDetailsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/StorageDetails"
+ }
+ },
+ "additionalProperties": false
+ },
+ "StorageDetailsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StorageDetailsResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StorageFilter": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "StorageFilters": {
+ "type": "object",
+ "properties": {
+ "filters": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StorageFilter"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StoragePool": {
+ "type": "object",
+ "properties": {
+ "attrs": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "provider": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "provider",
+ "attrs"
+ ]
+ },
+ "StoragePoolFilter": {
+ "type": "object",
+ "properties": {
+ "names": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "providers": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StoragePoolFilters": {
+ "type": "object",
+ "properties": {
+ "filters": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StoragePoolFilter"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StoragePoolsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "storage-pools": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StoragePool"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StoragePoolsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StoragePoolsResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StoragesAddParams": {
+ "type": "object",
+ "properties": {
+ "storages": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StorageAddParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "storages"
+ ]
+ },
+ "VolumeAttachmentDetails": {
+ "type": "object",
+ "properties": {
+ "VolumeAttachmentInfo": {
+ "$ref": "#/definitions/VolumeAttachmentInfo"
+ },
+ "life": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "VolumeAttachmentInfo"
+ ]
+ },
+ "VolumeAttachmentInfo": {
+ "type": "object",
+ "properties": {
+ "bus-address": {
+ "type": "string"
+ },
+ "device-link": {
+ "type": "string"
+ },
+ "device-name": {
+ "type": "string"
+ },
+ "plan-info": {
+ "$ref": "#/definitions/VolumeAttachmentPlanInfo"
+ },
+ "read-only": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false
+ },
+ "VolumeAttachmentPlanInfo": {
+ "type": "object",
+ "properties": {
+ "device-attributes": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "device-type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "VolumeDetails": {
+ "type": "object",
+ "properties": {
+ "info": {
+ "$ref": "#/definitions/VolumeInfo"
+ },
+ "life": {
+ "type": "string"
+ },
+ "machine-attachments": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/VolumeAttachmentDetails"
+ }
+ }
+ },
+ "status": {
+ "$ref": "#/definitions/EntityStatus"
+ },
+ "storage": {
+ "$ref": "#/definitions/StorageDetails"
+ },
+ "unit-attachments": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/VolumeAttachmentDetails"
+ }
+ }
+ },
+ "volume-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "volume-tag",
+ "info",
+ "status"
+ ]
+ },
+ "VolumeDetailsListResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/VolumeDetails"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "VolumeDetailsListResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/VolumeDetailsListResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "VolumeFilter": {
+ "type": "object",
+ "properties": {
+ "machines": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "VolumeFilters": {
+ "type": "object",
+ "properties": {
+ "filters": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/VolumeFilter"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "VolumeInfo": {
+ "type": "object",
+ "properties": {
+ "hardware-id": {
+ "type": "string"
+ },
+ "persistent": {
+ "type": "boolean"
+ },
+ "pool": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "volume-id": {
+ "type": "string"
+ },
+ "wwn": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "volume-id",
+ "size",
+ "persistent"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "StorageProvisioner",
+ "Version": 4,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AttachmentLife": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/MachineStorageIds"
+ },
+ "Result": {
+ "$ref": "#/definitions/LifeResults"
+ }
+ }
+ },
+ "CreateVolumeAttachmentPlans": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/VolumeAttachmentPlans"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "EnsureDead": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "FilesystemAttachmentParams": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/MachineStorageIds"
+ },
+ "Result": {
+ "$ref": "#/definitions/FilesystemAttachmentParamsResults"
+ }
+ }
+ },
+ "FilesystemAttachments": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/MachineStorageIds"
+ },
+ "Result": {
+ "$ref": "#/definitions/FilesystemAttachmentResults"
+ }
+ }
+ },
+ "FilesystemParams": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/FilesystemParamsResults"
+ }
+ }
+ },
+ "Filesystems": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/FilesystemResults"
+ }
+ }
+ },
+ "InstanceId": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResults"
+ }
+ }
+ },
+ "Life": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/LifeResults"
+ }
+ }
+ },
+ "Remove": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "RemoveAttachment": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/MachineStorageIds"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "RemoveFilesystemParams": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/RemoveFilesystemParamsResults"
+ }
+ }
+ },
+ "RemoveVolumeAttachmentPlan": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/MachineStorageIds"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "RemoveVolumeParams": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/RemoveVolumeParamsResults"
+ }
+ }
+ },
+ "SetFilesystemAttachmentInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/FilesystemAttachments"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetFilesystemInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Filesystems"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetVolumeAttachmentInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/VolumeAttachments"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetVolumeAttachmentPlanBlockInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/VolumeAttachmentPlans"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetVolumeInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Volumes"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "UpdateStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "VolumeAttachmentParams": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/MachineStorageIds"
+ },
+ "Result": {
+ "$ref": "#/definitions/VolumeAttachmentParamsResults"
+ }
+ }
+ },
+ "VolumeAttachmentPlans": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/MachineStorageIds"
+ },
+ "Result": {
+ "$ref": "#/definitions/VolumeAttachmentPlanResults"
+ }
+ }
+ },
+ "VolumeAttachments": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/MachineStorageIds"
+ },
+ "Result": {
+ "$ref": "#/definitions/VolumeAttachmentResults"
+ }
+ }
+ },
+ "VolumeBlockDevices": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/MachineStorageIds"
+ },
+ "Result": {
+ "$ref": "#/definitions/BlockDeviceResults"
+ }
+ }
+ },
+ "VolumeParams": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/VolumeParamsResults"
+ }
+ }
+ },
+ "Volumes": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/VolumeResults"
+ }
+ }
+ },
+ "WatchApplications": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ },
+ "WatchBlockDevices": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ },
+ "WatchFilesystemAttachments": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/MachineStorageIdsWatchResults"
+ }
+ }
+ },
+ "WatchFilesystems": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ },
+ "WatchMachines": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ },
+ "WatchVolumeAttachmentPlans": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/MachineStorageIdsWatchResults"
+ }
+ }
+ },
+ "WatchVolumeAttachments": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/MachineStorageIdsWatchResults"
+ }
+ }
+ },
+ "WatchVolumes": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "BlockDevice": {
+ "type": "object",
+ "properties": {
+ "BusAddress": {
+ "type": "string"
+ },
+ "DeviceLinks": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "DeviceName": {
+ "type": "string"
+ },
+ "FilesystemType": {
+ "type": "string"
+ },
+ "HardwareId": {
+ "type": "string"
+ },
+ "InUse": {
+ "type": "boolean"
+ },
+ "Label": {
+ "type": "string"
+ },
+ "MountPoint": {
+ "type": "string"
+ },
+ "Size": {
+ "type": "integer"
+ },
+ "UUID": {
+ "type": "string"
+ },
+ "WWN": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "DeviceName",
+ "DeviceLinks",
+ "Label",
+ "UUID",
+ "HardwareId",
+ "WWN",
+ "BusAddress",
+ "Size",
+ "FilesystemType",
+ "InUse",
+ "MountPoint"
+ ]
+ },
+ "BlockDeviceResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/BlockDevice"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "BlockDeviceResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/BlockDeviceResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityStatusArgs": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "status",
+ "info",
+ "data"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Filesystem": {
+ "type": "object",
+ "properties": {
+ "filesystem-tag": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/FilesystemInfo"
+ },
+ "volume-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "filesystem-tag",
+ "info"
+ ]
+ },
+ "FilesystemAttachment": {
+ "type": "object",
+ "properties": {
+ "filesystem-tag": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/FilesystemAttachmentInfo"
+ },
+ "machine-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "filesystem-tag",
+ "machine-tag",
+ "info"
+ ]
+ },
+ "FilesystemAttachmentInfo": {
+ "type": "object",
+ "properties": {
+ "mount-point": {
+ "type": "string"
+ },
+ "read-only": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false
+ },
+ "FilesystemAttachmentParams": {
+ "type": "object",
+ "properties": {
+ "filesystem-id": {
+ "type": "string"
+ },
+ "filesystem-tag": {
+ "type": "string"
+ },
+ "instance-id": {
+ "type": "string"
+ },
+ "machine-tag": {
+ "type": "string"
+ },
+ "mount-point": {
+ "type": "string"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "read-only": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "filesystem-tag",
+ "machine-tag",
+ "provider"
+ ]
+ },
+ "FilesystemAttachmentParamsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/FilesystemAttachmentParams"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "FilesystemAttachmentParamsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/FilesystemAttachmentParamsResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "FilesystemAttachmentResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/FilesystemAttachment"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "FilesystemAttachmentResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/FilesystemAttachmentResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "FilesystemAttachments": {
+ "type": "object",
+ "properties": {
+ "filesystem-attachments": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/FilesystemAttachment"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "filesystem-attachments"
+ ]
+ },
+ "FilesystemInfo": {
+ "type": "object",
+ "properties": {
+ "filesystem-id": {
+ "type": "string"
+ },
+ "pool": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "filesystem-id",
+ "pool",
+ "size"
+ ]
+ },
+ "FilesystemParams": {
+ "type": "object",
+ "properties": {
+ "attachment": {
+ "$ref": "#/definitions/FilesystemAttachmentParams"
+ },
+ "attributes": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "filesystem-tag": {
+ "type": "string"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "tags": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "volume-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "filesystem-tag",
+ "size",
+ "provider"
+ ]
+ },
+ "FilesystemParamsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/FilesystemParams"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "FilesystemParamsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/FilesystemParamsResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "FilesystemResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/Filesystem"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "FilesystemResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/FilesystemResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "Filesystems": {
+ "type": "object",
+ "properties": {
+ "filesystems": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Filesystem"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "filesystems"
+ ]
+ },
+ "LifeResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "life": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "life"
+ ]
+ },
+ "LifeResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/LifeResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MachineStorageId": {
+ "type": "object",
+ "properties": {
+ "attachment-tag": {
+ "type": "string"
+ },
+ "machine-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machine-tag",
+ "attachment-tag"
+ ]
+ },
+ "MachineStorageIds": {
+ "type": "object",
+ "properties": {
+ "ids": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MachineStorageId"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ids"
+ ]
+ },
+ "MachineStorageIdsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MachineStorageId"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id",
+ "changes"
+ ]
+ },
+ "MachineStorageIdsWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MachineStorageIdsWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "RemoveFilesystemParams": {
+ "type": "object",
+ "properties": {
+ "destroy": {
+ "type": "boolean"
+ },
+ "filesystem-id": {
+ "type": "string"
+ },
+ "provider": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "provider",
+ "filesystem-id"
+ ]
+ },
+ "RemoveFilesystemParamsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/RemoveFilesystemParams"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "RemoveFilesystemParamsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoveFilesystemParamsResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "RemoveVolumeParams": {
+ "type": "object",
+ "properties": {
+ "destroy": {
+ "type": "boolean"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "volume-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "provider",
+ "volume-id"
+ ]
+ },
+ "RemoveVolumeParamsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/RemoveVolumeParams"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "RemoveVolumeParamsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RemoveVolumeParamsResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityStatusArgs"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "StringResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StringsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ },
+ "StringsWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Volume": {
+ "type": "object",
+ "properties": {
+ "info": {
+ "$ref": "#/definitions/VolumeInfo"
+ },
+ "volume-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "volume-tag",
+ "info"
+ ]
+ },
+ "VolumeAttachment": {
+ "type": "object",
+ "properties": {
+ "info": {
+ "$ref": "#/definitions/VolumeAttachmentInfo"
+ },
+ "machine-tag": {
+ "type": "string"
+ },
+ "volume-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "volume-tag",
+ "machine-tag",
+ "info"
+ ]
+ },
+ "VolumeAttachmentInfo": {
+ "type": "object",
+ "properties": {
+ "bus-address": {
+ "type": "string"
+ },
+ "device-link": {
+ "type": "string"
+ },
+ "device-name": {
+ "type": "string"
+ },
+ "plan-info": {
+ "$ref": "#/definitions/VolumeAttachmentPlanInfo"
+ },
+ "read-only": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false
+ },
+ "VolumeAttachmentParams": {
+ "type": "object",
+ "properties": {
+ "instance-id": {
+ "type": "string"
+ },
+ "machine-tag": {
+ "type": "string"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "read-only": {
+ "type": "boolean"
+ },
+ "volume-id": {
+ "type": "string"
+ },
+ "volume-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "volume-tag",
+ "machine-tag",
+ "provider"
+ ]
+ },
+ "VolumeAttachmentParamsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/VolumeAttachmentParams"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "VolumeAttachmentParamsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/VolumeAttachmentParamsResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "VolumeAttachmentPlan": {
+ "type": "object",
+ "properties": {
+ "block-device": {
+ "$ref": "#/definitions/BlockDevice"
+ },
+ "life": {
+ "type": "string"
+ },
+ "machine-tag": {
+ "type": "string"
+ },
+ "plan-info": {
+ "$ref": "#/definitions/VolumeAttachmentPlanInfo"
+ },
+ "volume-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "volume-tag",
+ "machine-tag",
+ "plan-info"
+ ]
+ },
+ "VolumeAttachmentPlanInfo": {
+ "type": "object",
+ "properties": {
+ "device-attributes": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "device-type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "VolumeAttachmentPlanResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/VolumeAttachmentPlan"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "VolumeAttachmentPlanResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/VolumeAttachmentPlanResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "VolumeAttachmentPlans": {
+ "type": "object",
+ "properties": {
+ "volume-plans": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/VolumeAttachmentPlan"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "volume-plans"
+ ]
+ },
+ "VolumeAttachmentResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/VolumeAttachment"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "VolumeAttachmentResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/VolumeAttachmentResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "VolumeAttachments": {
+ "type": "object",
+ "properties": {
+ "volume-attachments": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/VolumeAttachment"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "volume-attachments"
+ ]
+ },
+ "VolumeInfo": {
+ "type": "object",
+ "properties": {
+ "hardware-id": {
+ "type": "string"
+ },
+ "persistent": {
+ "type": "boolean"
+ },
+ "pool": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "volume-id": {
+ "type": "string"
+ },
+ "wwn": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "volume-id",
+ "size",
+ "persistent"
+ ]
+ },
+ "VolumeParams": {
+ "type": "object",
+ "properties": {
+ "attachment": {
+ "$ref": "#/definitions/VolumeAttachmentParams"
+ },
+ "attributes": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "provider": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "tags": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "volume-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "volume-tag",
+ "size",
+ "provider"
+ ]
+ },
+ "VolumeParamsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/VolumeParams"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "VolumeParamsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/VolumeParamsResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "VolumeResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/Volume"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "VolumeResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/VolumeResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "Volumes": {
+ "type": "object",
+ "properties": {
+ "volumes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Volume"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "volumes"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "StringsWatcher",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Next": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ },
+ "Stop": {
+ "type": "object"
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "StringsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Subnets",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AddSubnets": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/AddSubnetsParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "AllSpaces": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/SpaceResults"
+ }
+ }
+ },
+ "AllZones": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ZoneResults"
+ }
+ }
+ },
+ "ListSubnets": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SubnetsFilters"
+ },
+ "Result": {
+ "$ref": "#/definitions/ListSubnetsResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "AddSubnetParams": {
+ "type": "object",
+ "properties": {
+ "provider-network-id": {
+ "type": "string"
+ },
+ "space-tag": {
+ "type": "string"
+ },
+ "subnet-provider-id": {
+ "type": "string"
+ },
+ "subnet-tag": {
+ "type": "string"
+ },
+ "vlan-tag": {
+ "type": "integer"
+ },
+ "zones": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "space-tag"
+ ]
+ },
+ "AddSubnetsParams": {
+ "type": "object",
+ "properties": {
+ "subnets": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AddSubnetParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "subnets"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ListSubnetsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Subnet"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "SpaceResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "SpaceResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SpaceResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Subnet": {
+ "type": "object",
+ "properties": {
+ "cidr": {
+ "type": "string"
+ },
+ "life": {
+ "type": "string"
+ },
+ "provider-id": {
+ "type": "string"
+ },
+ "provider-network-id": {
+ "type": "string"
+ },
+ "provider-space-id": {
+ "type": "string"
+ },
+ "space-tag": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "vlan-tag": {
+ "type": "integer"
+ },
+ "zones": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "cidr",
+ "vlan-tag",
+ "life",
+ "space-tag",
+ "zones"
+ ]
+ },
+ "SubnetsFilters": {
+ "type": "object",
+ "properties": {
+ "space-tag": {
+ "type": "string"
+ },
+ "zone": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ZoneResult": {
+ "type": "object",
+ "properties": {
+ "available": {
+ "type": "boolean"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "name": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "available"
+ ]
+ },
+ "ZoneResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ZoneResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Undertaker",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "ModelConfig": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelConfigResult"
+ }
+ }
+ },
+ "ModelInfo": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/UndertakerModelInfoResult"
+ }
+ }
+ },
+ "ProcessDyingModel": {
+ "type": "object"
+ },
+ "RemoveModel": {
+ "type": "object"
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "UpdateStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "WatchModelResources": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "EntityStatusArgs": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "status",
+ "info",
+ "data"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "ModelConfigResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityStatusArgs"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "UndertakerModelInfo": {
+ "type": "object",
+ "properties": {
+ "global-name": {
+ "type": "string"
+ },
+ "is-system": {
+ "type": "boolean"
+ },
+ "life": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uuid": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "uuid",
+ "name",
+ "global-name",
+ "is-system",
+ "life"
+ ]
+ },
+ "UndertakerModelInfoResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/UndertakerModelInfo"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "UnitAssigner",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AssignUnits": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetAgentStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "WatchUnitAssignments": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityStatusArgs": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "status",
+ "info",
+ "data"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityStatusArgs"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "StringsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "Uniter",
+ "Version": 9,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "APIAddresses": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringsResult"
+ }
+ }
+ },
+ "APIHostPorts": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/APIHostPortsResult"
+ }
+ }
+ },
+ "Actions": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ActionResults"
+ }
+ }
+ },
+ "AddMetricBatches": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/MetricBatchParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "AddUnitStorage": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/StoragesAddParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "AllMachinePorts": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/MachinePortsResults"
+ }
+ }
+ },
+ "ApplicationStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ApplicationStatusResults"
+ }
+ }
+ },
+ "AssignedMachine": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResults"
+ }
+ }
+ },
+ "AvailabilityZone": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResults"
+ }
+ }
+ },
+ "BeginActions": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "CharmArchiveSha256": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/CharmURLs"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResults"
+ }
+ }
+ },
+ "CharmModifiedVersion": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/IntResults"
+ }
+ }
+ },
+ "CharmURL": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringBoolResults"
+ }
+ }
+ },
+ "ClearResolved": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "ClosePorts": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/EntitiesPortRanges"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "CloudSpec": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/CloudSpecResult"
+ }
+ }
+ },
+ "ConfigSettings": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ConfigSettingsResults"
+ }
+ }
+ },
+ "CurrentModel": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelResult"
+ }
+ }
+ },
+ "Destroy": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "DestroyAllSubordinates": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "DestroyUnitStorageAttachments": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "EnsureDead": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "EnterScope": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RelationUnits"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "FinishActions": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/ActionExecutionResults"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "GetMeterStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/MeterStatusResults"
+ }
+ }
+ },
+ "GetPrincipal": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringBoolResults"
+ }
+ }
+ },
+ "GoalStates": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/GoalStateResults"
+ }
+ }
+ },
+ "HasSubordinates": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/BoolResults"
+ }
+ }
+ },
+ "LeaveScope": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RelationUnits"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Life": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/LifeResults"
+ }
+ }
+ },
+ "Merge": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/MergeLeadershipSettingsBulkParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "ModelConfig": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/ModelConfigResult"
+ }
+ }
+ },
+ "ModelUUID": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "NetworkInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/NetworkInfoParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/NetworkInfoResults"
+ }
+ }
+ },
+ "OpenPorts": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/EntitiesPortRanges"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "PrivateAddress": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResults"
+ }
+ }
+ },
+ "ProviderType": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "PublicAddress": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResults"
+ }
+ }
+ },
+ "Read": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/GetLeadershipSettingsBulkResults"
+ }
+ }
+ },
+ "ReadRemoteSettings": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RelationUnitPairs"
+ },
+ "Result": {
+ "$ref": "#/definitions/SettingsResults"
+ }
+ }
+ },
+ "ReadSettings": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RelationUnits"
+ },
+ "Result": {
+ "$ref": "#/definitions/SettingsResults"
+ }
+ }
+ },
+ "Refresh": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/UnitRefreshResults"
+ }
+ }
+ },
+ "Relation": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RelationUnits"
+ },
+ "Result": {
+ "$ref": "#/definitions/RelationResults"
+ }
+ }
+ },
+ "RelationById": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RelationIds"
+ },
+ "Result": {
+ "$ref": "#/definitions/RelationResults"
+ }
+ }
+ },
+ "RelationsStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/RelationUnitStatusResults"
+ }
+ }
+ },
+ "RemoveStorageAttachments": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/StorageAttachmentIds"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "RequestReboot": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Resolved": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ResolvedModeResults"
+ }
+ }
+ },
+ "SLALevel": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "SetAgentStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetApplicationStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetCharmURL": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/EntitiesCharmURL"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetPodSpec": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetPodSpecParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetRelationStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RelationStatusArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetUnitStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/SetStatus"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetUpgradeSeriesUnitStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UpgradeSeriesStatusParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetWorkloadVersion": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/EntityWorkloadVersions"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "StorageAttachmentLife": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/StorageAttachmentIds"
+ },
+ "Result": {
+ "$ref": "#/definitions/LifeResults"
+ }
+ }
+ },
+ "StorageAttachments": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/StorageAttachmentIds"
+ },
+ "Result": {
+ "$ref": "#/definitions/StorageAttachmentResults"
+ }
+ }
+ },
+ "UnitStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StatusResults"
+ }
+ }
+ },
+ "UnitStorageAttachments": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StorageAttachmentIdsResults"
+ }
+ }
+ },
+ "UpdateSettings": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RelationUnitsSettings"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "UpgradeSeriesUnitStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/UpgradeSeriesStatusResults"
+ }
+ }
+ },
+ "Watch": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ },
+ "WatchAPIHostPorts": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "WatchActionNotifications": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ },
+ "WatchConfigSettingsHash": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ },
+ "WatchForModelConfigChanges": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "WatchLeadershipSettings": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ },
+ "WatchMeterStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ },
+ "WatchRelationUnits": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/RelationUnits"
+ },
+ "Result": {
+ "$ref": "#/definitions/RelationUnitsWatchResults"
+ }
+ }
+ },
+ "WatchStorageAttachments": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/StorageAttachmentIds"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ },
+ "WatchTrustConfigSettingsHash": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ },
+ "WatchUnitAddressesHash": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ },
+ "WatchUnitRelations": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ },
+ "WatchUnitStorageAttachments": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringsWatchResults"
+ }
+ }
+ },
+ "WatchUpgradeSeriesNotifications": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ },
+ "WorkloadVersion": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "APIHostPortsResult": {
+ "type": "object",
+ "properties": {
+ "servers": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/HostPort"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "servers"
+ ]
+ },
+ "Action": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "parameters": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "receiver": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "receiver",
+ "name"
+ ]
+ },
+ "ActionExecutionResult": {
+ "type": "object",
+ "properties": {
+ "action-tag": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "results": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "action-tag",
+ "status"
+ ]
+ },
+ "ActionExecutionResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ActionExecutionResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "ActionResult": {
+ "type": "object",
+ "properties": {
+ "action": {
+ "$ref": "#/definitions/Action"
+ },
+ "completed": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "enqueued": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "message": {
+ "type": "string"
+ },
+ "output": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "started": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ActionResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ActionResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "Address": {
+ "type": "object",
+ "properties": {
+ "scope": {
+ "type": "string"
+ },
+ "space-name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "value",
+ "type",
+ "scope"
+ ]
+ },
+ "ApplicationStatusResult": {
+ "type": "object",
+ "properties": {
+ "application": {
+ "$ref": "#/definitions/StatusResult"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "units": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/StatusResult"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application",
+ "units"
+ ]
+ },
+ "ApplicationStatusResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ApplicationStatusResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "BoolResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "BoolResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/BoolResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "CharmRelation": {
+ "type": "object",
+ "properties": {
+ "interface": {
+ "type": "string"
+ },
+ "limit": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "optional": {
+ "type": "boolean"
+ },
+ "role": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "role",
+ "interface",
+ "optional",
+ "limit",
+ "scope"
+ ]
+ },
+ "CharmURL": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "url"
+ ]
+ },
+ "CharmURLs": {
+ "type": "object",
+ "properties": {
+ "urls": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CharmURL"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "urls"
+ ]
+ },
+ "CloudCredential": {
+ "type": "object",
+ "properties": {
+ "attrs": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "auth-type": {
+ "type": "string"
+ },
+ "redacted": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "auth-type"
+ ]
+ },
+ "CloudSpec": {
+ "type": "object",
+ "properties": {
+ "cacertificates": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "credential": {
+ "$ref": "#/definitions/CloudCredential"
+ },
+ "endpoint": {
+ "type": "string"
+ },
+ "identity-endpoint": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "storage-endpoint": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "type",
+ "name"
+ ]
+ },
+ "CloudSpecResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/CloudSpec"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ConfigSettingsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "settings": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "settings"
+ ]
+ },
+ "ConfigSettingsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ConfigSettingsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Endpoint": {
+ "type": "object",
+ "properties": {
+ "application-name": {
+ "type": "string"
+ },
+ "relation": {
+ "$ref": "#/definitions/CharmRelation"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application-name",
+ "relation"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "EntitiesCharmURL": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityCharmURL"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "EntitiesPortRanges": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityPortRange"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityCharmURL": {
+ "type": "object",
+ "properties": {
+ "charm-url": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "charm-url"
+ ]
+ },
+ "EntityPortRange": {
+ "type": "object",
+ "properties": {
+ "from-port": {
+ "type": "integer"
+ },
+ "protocol": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ },
+ "to-port": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "protocol",
+ "from-port",
+ "to-port"
+ ]
+ },
+ "EntityStatusArgs": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "info": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "status",
+ "info",
+ "data"
+ ]
+ },
+ "EntityString": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "value"
+ ]
+ },
+ "EntityWorkloadVersion": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ },
+ "workload-version": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "workload-version"
+ ]
+ },
+ "EntityWorkloadVersions": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityWorkloadVersion"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "GetLeadershipSettingsBulkResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/GetLeadershipSettingsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "GetLeadershipSettingsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "settings": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "settings"
+ ]
+ },
+ "GoalState": {
+ "type": "object",
+ "properties": {
+ "relations": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/GoalStateStatus"
+ }
+ }
+ }
+ }
+ },
+ "units": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/GoalStateStatus"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "units",
+ "relations"
+ ]
+ },
+ "GoalStateResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/GoalState"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result",
+ "error"
+ ]
+ },
+ "GoalStateResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/GoalStateResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "GoalStateStatus": {
+ "type": "object",
+ "properties": {
+ "since": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "status",
+ "since"
+ ]
+ },
+ "HostPort": {
+ "type": "object",
+ "properties": {
+ "Address": {
+ "$ref": "#/definitions/Address"
+ },
+ "port": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Address",
+ "port"
+ ]
+ },
+ "IntResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "IntResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/IntResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "InterfaceAddress": {
+ "type": "object",
+ "properties": {
+ "cidr": {
+ "type": "string"
+ },
+ "hostname": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "hostname",
+ "value",
+ "cidr"
+ ]
+ },
+ "LifeResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "life": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "life"
+ ]
+ },
+ "LifeResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/LifeResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MachinePortRange": {
+ "type": "object",
+ "properties": {
+ "port-range": {
+ "$ref": "#/definitions/PortRange"
+ },
+ "relation-tag": {
+ "type": "string"
+ },
+ "unit-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "unit-tag",
+ "relation-tag",
+ "port-range"
+ ]
+ },
+ "MachinePortsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "ports": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MachinePortRange"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ports"
+ ]
+ },
+ "MachinePortsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MachinePortsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "MergeLeadershipSettingsBulkParams": {
+ "type": "object",
+ "properties": {
+ "params": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MergeLeadershipSettingsParam"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "params"
+ ]
+ },
+ "MergeLeadershipSettingsParam": {
+ "type": "object",
+ "properties": {
+ "application-tag": {
+ "type": "string"
+ },
+ "settings": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "unit-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "settings"
+ ]
+ },
+ "MeterStatusResult": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "info": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "code",
+ "info"
+ ]
+ },
+ "MeterStatusResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MeterStatusResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Metric": {
+ "type": "object",
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "labels": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "time": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "key",
+ "value",
+ "time"
+ ]
+ },
+ "MetricBatch": {
+ "type": "object",
+ "properties": {
+ "charm-url": {
+ "type": "string"
+ },
+ "created": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "metrics": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Metric"
+ }
+ },
+ "uuid": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "uuid",
+ "charm-url",
+ "created",
+ "metrics"
+ ]
+ },
+ "MetricBatchParam": {
+ "type": "object",
+ "properties": {
+ "batch": {
+ "$ref": "#/definitions/MetricBatch"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "batch"
+ ]
+ },
+ "MetricBatchParams": {
+ "type": "object",
+ "properties": {
+ "batches": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MetricBatchParam"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "batches"
+ ]
+ },
+ "ModelConfigResult": {
+ "type": "object",
+ "properties": {
+ "config": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "config"
+ ]
+ },
+ "ModelResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "uuid": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "uuid",
+ "type"
+ ]
+ },
+ "NetworkInfo": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/InterfaceAddress"
+ }
+ },
+ "interface-name": {
+ "type": "string"
+ },
+ "mac-address": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "mac-address",
+ "interface-name",
+ "addresses"
+ ]
+ },
+ "NetworkInfoParams": {
+ "type": "object",
+ "properties": {
+ "bindings": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "relation-id": {
+ "type": "integer"
+ },
+ "unit": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "unit",
+ "bindings"
+ ]
+ },
+ "NetworkInfoResult": {
+ "type": "object",
+ "properties": {
+ "bind-addresses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NetworkInfo"
+ }
+ },
+ "egress-subnets": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "ingress-addresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "NetworkInfoResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/NetworkInfoResult"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "PortRange": {
+ "type": "object",
+ "properties": {
+ "from-port": {
+ "type": "integer"
+ },
+ "protocol": {
+ "type": "string"
+ },
+ "to-port": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "from-port",
+ "to-port",
+ "protocol"
+ ]
+ },
+ "RelationIds": {
+ "type": "object",
+ "properties": {
+ "relation-ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation-ids"
+ ]
+ },
+ "RelationResult": {
+ "type": "object",
+ "properties": {
+ "bool": {
+ "type": "boolean"
+ },
+ "endpoint": {
+ "$ref": "#/definitions/Endpoint"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "id": {
+ "type": "integer"
+ },
+ "key": {
+ "type": "string"
+ },
+ "life": {
+ "type": "string"
+ },
+ "other-application": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "life",
+ "id",
+ "key",
+ "endpoint"
+ ]
+ },
+ "RelationResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelationResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "RelationStatusArg": {
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "relation-id": {
+ "type": "integer"
+ },
+ "status": {
+ "type": "string"
+ },
+ "unit-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "unit-tag",
+ "relation-id",
+ "status",
+ "message"
+ ]
+ },
+ "RelationStatusArgs": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelationStatusArg"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "args"
+ ]
+ },
+ "RelationUnit": {
+ "type": "object",
+ "properties": {
+ "relation": {
+ "type": "string"
+ },
+ "unit": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation",
+ "unit"
+ ]
+ },
+ "RelationUnitPair": {
+ "type": "object",
+ "properties": {
+ "local-unit": {
+ "type": "string"
+ },
+ "relation": {
+ "type": "string"
+ },
+ "remote-unit": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation",
+ "local-unit",
+ "remote-unit"
+ ]
+ },
+ "RelationUnitPairs": {
+ "type": "object",
+ "properties": {
+ "relation-unit-pairs": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelationUnitPair"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation-unit-pairs"
+ ]
+ },
+ "RelationUnitSettings": {
+ "type": "object",
+ "properties": {
+ "relation": {
+ "type": "string"
+ },
+ "settings": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ },
+ "unit": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation",
+ "unit",
+ "settings"
+ ]
+ },
+ "RelationUnitStatus": {
+ "type": "object",
+ "properties": {
+ "in-scope": {
+ "type": "boolean"
+ },
+ "relation-tag": {
+ "type": "string"
+ },
+ "suspended": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation-tag",
+ "in-scope",
+ "suspended"
+ ]
+ },
+ "RelationUnitStatusResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelationUnitStatus"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "RelationUnitStatusResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelationUnitStatusResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "RelationUnits": {
+ "type": "object",
+ "properties": {
+ "relation-units": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelationUnit"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation-units"
+ ]
+ },
+ "RelationUnitsChange": {
+ "type": "object",
+ "properties": {
+ "changed": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/UnitSettings"
+ }
+ }
+ },
+ "departed": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "changed"
+ ]
+ },
+ "RelationUnitsSettings": {
+ "type": "object",
+ "properties": {
+ "relation-units": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelationUnitSettings"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "relation-units"
+ ]
+ },
+ "RelationUnitsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "$ref": "#/definitions/RelationUnitsChange"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id",
+ "changes"
+ ]
+ },
+ "RelationUnitsWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelationUnitsWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "ResolvedModeResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "mode": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "mode"
+ ]
+ },
+ "ResolvedModeResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ResolvedModeResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "SetPodSpecParams": {
+ "type": "object",
+ "properties": {
+ "specs": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityString"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "specs"
+ ]
+ },
+ "SetStatus": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityStatusArgs"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "SettingsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "settings": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "settings"
+ ]
+ },
+ "SettingsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SettingsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StatusResult": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "id": {
+ "type": "string"
+ },
+ "info": {
+ "type": "string"
+ },
+ "life": {
+ "type": "string"
+ },
+ "since": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "life",
+ "status",
+ "info",
+ "data",
+ "since"
+ ]
+ },
+ "StatusResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StatusResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StorageAddParams": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "storage": {
+ "$ref": "#/definitions/StorageConstraints"
+ },
+ "unit": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "unit",
+ "name",
+ "storage"
+ ]
+ },
+ "StorageAttachment": {
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "integer"
+ },
+ "life": {
+ "type": "string"
+ },
+ "location": {
+ "type": "string"
+ },
+ "owner-tag": {
+ "type": "string"
+ },
+ "storage-tag": {
+ "type": "string"
+ },
+ "unit-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "storage-tag",
+ "owner-tag",
+ "unit-tag",
+ "kind",
+ "location",
+ "life"
+ ]
+ },
+ "StorageAttachmentId": {
+ "type": "object",
+ "properties": {
+ "storage-tag": {
+ "type": "string"
+ },
+ "unit-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "storage-tag",
+ "unit-tag"
+ ]
+ },
+ "StorageAttachmentIds": {
+ "type": "object",
+ "properties": {
+ "ids": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StorageAttachmentId"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ids"
+ ]
+ },
+ "StorageAttachmentIdsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/StorageAttachmentIds"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "StorageAttachmentIdsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StorageAttachmentIdsResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StorageAttachmentResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/StorageAttachment"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "StorageAttachmentResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StorageAttachmentResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StorageConstraints": {
+ "type": "object",
+ "properties": {
+ "count": {
+ "type": "integer"
+ },
+ "pool": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false
+ },
+ "StoragesAddParams": {
+ "type": "object",
+ "properties": {
+ "storages": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StorageAddParams"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "storages"
+ ]
+ },
+ "StringBoolResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "ok": {
+ "type": "boolean"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result",
+ "ok"
+ ]
+ },
+ "StringBoolResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringBoolResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "StringResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "StringsResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StringsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id"
+ ]
+ },
+ "StringsWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringsWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "UnitRefreshResult": {
+ "type": "object",
+ "properties": {
+ "Error": {
+ "$ref": "#/definitions/Error"
+ },
+ "Life": {
+ "type": "string"
+ },
+ "Resolved": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Life",
+ "Resolved",
+ "Error"
+ ]
+ },
+ "UnitRefreshResults": {
+ "type": "object",
+ "properties": {
+ "Results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UnitRefreshResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Results"
+ ]
+ },
+ "UnitSettings": {
+ "type": "object",
+ "properties": {
+ "version": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "version"
+ ]
+ },
+ "UpgradeSeriesStatusParam": {
+ "type": "object",
+ "properties": {
+ "entity": {
+ "$ref": "#/definitions/Entity"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entity",
+ "status",
+ "message"
+ ]
+ },
+ "UpgradeSeriesStatusParams": {
+ "type": "object",
+ "properties": {
+ "params": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UpgradeSeriesStatusParam"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "params"
+ ]
+ },
+ "UpgradeSeriesStatusResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "UpgradeSeriesStatusResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UpgradeSeriesStatusResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "UpgradeSeries",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "FinishUpgradeSeries": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UpdateSeriesArgs"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "MachineStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/UpgradeSeriesStatusResults"
+ }
+ }
+ },
+ "PinMachineApplications": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/PinApplicationsResults"
+ }
+ }
+ },
+ "PinnedLeadership": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/PinnedLeadershipResult"
+ }
+ }
+ },
+ "SetMachineStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UpgradeSeriesStatusParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "SetUpgradeSeriesUnitStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UpgradeSeriesStatusParams"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "StartUnitCompletion": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UpgradeSeriesStartUnitCompletionParam"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "TargetSeries": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/StringResults"
+ }
+ }
+ },
+ "UnitsCompleted": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/EntitiesResults"
+ }
+ }
+ },
+ "UnitsPrepared": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/EntitiesResults"
+ }
+ }
+ },
+ "UnpinMachineApplications": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/PinApplicationsResults"
+ }
+ }
+ },
+ "UpgradeSeriesUnitStatus": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/UpgradeSeriesStatusResults"
+ }
+ }
+ },
+ "WatchUpgradeSeriesNotifications": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "EntitiesResult": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "EntitiesResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntitiesResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "PinApplicationResult": {
+ "type": "object",
+ "properties": {
+ "application-name": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "application-name"
+ ]
+ },
+ "PinApplicationsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/PinApplicationResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "PinnedLeadershipResult": {
+ "type": "object",
+ "properties": {
+ "result": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "StringResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "result"
+ ]
+ },
+ "StringResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/StringResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "UpdateSeriesArg": {
+ "type": "object",
+ "properties": {
+ "force": {
+ "type": "boolean"
+ },
+ "series": {
+ "type": "string"
+ },
+ "tag": {
+ "$ref": "#/definitions/Entity"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "force",
+ "series"
+ ]
+ },
+ "UpdateSeriesArgs": {
+ "type": "object",
+ "properties": {
+ "args": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UpdateSeriesArg"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "args"
+ ]
+ },
+ "UpgradeSeriesStartUnitCompletionParam": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities",
+ "message"
+ ]
+ },
+ "UpgradeSeriesStatusParam": {
+ "type": "object",
+ "properties": {
+ "entity": {
+ "$ref": "#/definitions/Entity"
+ },
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entity",
+ "status",
+ "message"
+ ]
+ },
+ "UpgradeSeriesStatusParams": {
+ "type": "object",
+ "properties": {
+ "params": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UpgradeSeriesStatusParam"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "params"
+ ]
+ },
+ "UpgradeSeriesStatusResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "status": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "UpgradeSeriesStatusResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UpgradeSeriesStatusResult"
+ }
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ {
+ "Name": "Upgrader",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "DesiredVersion": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/VersionResults"
+ }
+ }
+ },
+ "SetTools": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/EntitiesVersion"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "Tools": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ToolsResults"
+ }
+ }
+ },
+ "WatchAPIVersion": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/NotifyWatchResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Binary": {
+ "type": "object",
+ "properties": {
+ "Arch": {
+ "type": "string"
+ },
+ "Number": {
+ "$ref": "#/definitions/Number"
+ },
+ "Series": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Number",
+ "Series",
+ "Arch"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "EntitiesVersion": {
+ "type": "object",
+ "properties": {
+ "agent-tools": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityVersion"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "agent-tools"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityVersion": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ },
+ "tools": {
+ "$ref": "#/definitions/Version"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "tools"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "NotifyWatchResult": {
+ "type": "object",
+ "properties": {
+ "NotifyWatcherId": {
+ "type": "string"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "NotifyWatcherId"
+ ]
+ },
+ "NotifyWatchResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/NotifyWatchResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Number": {
+ "type": "object",
+ "properties": {
+ "Build": {
+ "type": "integer"
+ },
+ "Major": {
+ "type": "integer"
+ },
+ "Minor": {
+ "type": "integer"
+ },
+ "Patch": {
+ "type": "integer"
+ },
+ "Tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Major",
+ "Minor",
+ "Tag",
+ "Patch",
+ "Build"
+ ]
+ },
+ "Tools": {
+ "type": "object",
+ "properties": {
+ "sha256": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "url": {
+ "type": "string"
+ },
+ "version": {
+ "$ref": "#/definitions/Binary"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "version",
+ "url",
+ "size"
+ ]
+ },
+ "ToolsResult": {
+ "type": "object",
+ "properties": {
+ "disable-ssl-hostname-verification": {
+ "type": "boolean"
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "tools": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Tools"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tools",
+ "disable-ssl-hostname-verification"
+ ]
+ },
+ "ToolsResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ToolsResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Version": {
+ "type": "object",
+ "properties": {
+ "version": {
+ "$ref": "#/definitions/Binary"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "version"
+ ]
+ },
+ "VersionResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "version": {
+ "$ref": "#/definitions/Number"
+ }
+ },
+ "additionalProperties": false
+ },
+ "VersionResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/VersionResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "UserManager",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "AddUser": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/AddUsers"
+ },
+ "Result": {
+ "$ref": "#/definitions/AddUserResults"
+ }
+ }
+ },
+ "DisableUser": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "EnableUser": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "RemoveUser": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "ResetPassword": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/Entities"
+ },
+ "Result": {
+ "$ref": "#/definitions/AddUserResults"
+ }
+ }
+ },
+ "SetPassword": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/EntityPasswords"
+ },
+ "Result": {
+ "$ref": "#/definitions/ErrorResults"
+ }
+ }
+ },
+ "UserInfo": {
+ "type": "object",
+ "properties": {
+ "Params": {
+ "$ref": "#/definitions/UserInfoRequest"
+ },
+ "Result": {
+ "$ref": "#/definitions/UserInfoResults"
+ }
+ }
+ }
+ },
+ "definitions": {
+ "AddUser": {
+ "type": "object",
+ "properties": {
+ "display-name": {
+ "type": "string"
+ },
+ "password": {
+ "type": "string"
+ },
+ "username": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "username",
+ "display-name"
+ ]
+ },
+ "AddUserResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "secret-key": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ }
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "AddUserResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AddUserResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "AddUsers": {
+ "type": "object",
+ "properties": {
+ "users": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AddUser"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "users"
+ ]
+ },
+ "Entities": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities"
+ ]
+ },
+ "Entity": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag"
+ ]
+ },
+ "EntityPassword": {
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "password"
+ ]
+ },
+ "EntityPasswords": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/EntityPassword"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "changes"
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ErrorResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "UserInfo": {
+ "type": "object",
+ "properties": {
+ "access": {
+ "type": "string"
+ },
+ "created-by": {
+ "type": "string"
+ },
+ "date-created": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "disabled": {
+ "type": "boolean"
+ },
+ "display-name": {
+ "type": "string"
+ },
+ "last-connection": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "username": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "username",
+ "display-name",
+ "access",
+ "created-by",
+ "date-created",
+ "disabled"
+ ]
+ },
+ "UserInfoRequest": {
+ "type": "object",
+ "properties": {
+ "entities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Entity"
+ }
+ },
+ "include-disabled": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "entities",
+ "include-disabled"
+ ]
+ },
+ "UserInfoResult": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "result": {
+ "$ref": "#/definitions/UserInfo"
+ }
+ },
+ "additionalProperties": false
+ },
+ "UserInfoResults": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/UserInfoResult"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "results"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "VolumeAttachmentPlansWatcher",
+ "Version": 1,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Next": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/MachineStorageIdsWatchResult"
+ }
+ }
+ },
+ "Stop": {
+ "type": "object"
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MachineStorageId": {
+ "type": "object",
+ "properties": {
+ "attachment-tag": {
+ "type": "string"
+ },
+ "machine-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machine-tag",
+ "attachment-tag"
+ ]
+ },
+ "MachineStorageIdsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MachineStorageId"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id",
+ "changes"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "Name": "VolumeAttachmentsWatcher",
+ "Version": 2,
+ "Schema": {
+ "type": "object",
+ "properties": {
+ "Next": {
+ "type": "object",
+ "properties": {
+ "Result": {
+ "$ref": "#/definitions/MachineStorageIdsWatchResult"
+ }
+ }
+ },
+ "Stop": {
+ "type": "object"
+ }
+ },
+ "definitions": {
+ "Error": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "info": {
+ "$ref": "#/definitions/ErrorInfo"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "message",
+ "code"
+ ]
+ },
+ "ErrorInfo": {
+ "type": "object",
+ "properties": {
+ "macaroon": {
+ "$ref": "#/definitions/Macaroon"
+ },
+ "macaroon-path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Macaroon": {
+ "type": "object",
+ "additionalProperties": false
+ },
+ "MachineStorageId": {
+ "type": "object",
+ "properties": {
+ "attachment-tag": {
+ "type": "string"
+ },
+ "machine-tag": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "machine-tag",
+ "attachment-tag"
+ ]
+ },
+ "MachineStorageIdsWatchResult": {
+ "type": "object",
+ "properties": {
+ "changes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/MachineStorageId"
+ }
+ },
+ "error": {
+ "$ref": "#/definitions/Error"
+ },
+ "watcher-id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "watcher-id",
+ "changes"
+ ]
+ }
+ }
+ }
+ }
+]
--- /dev/null
+schemas-juju-2.5-rc1.json
\ No newline at end of file
`juju.client.connection.Connection.MAX_FRAME_SIZE`
:param bakery_client httpbakery.Client: The bakery client to use
for macaroon authorization.
- :param jujudata JujuData: The source for current controller information.
+ :param jujudata JujuData: The source for current controller
+ information.
"""
self._connector = connector.Connector(
loop=loop,
await self._connector.disconnect()
async def add_credential(self, name=None, credential=None, cloud=None,
- owner=None):
+ owner=None, force=False):
"""Add or update a credential to the controller.
:param str name: Name of new credential. If None, the default
Defaults to the same cloud as the controller.
:param str owner: Username that will own the credential. Defaults to
the current user.
+ :param bool force: Force indicates whether the update should be forced.
+ It's only supported for facade v3 or later.
+ Defaults to false.
:returns: Name of credential that was uploaded.
"""
if not cloud:
raise errors.JujuError('Name must be provided for credential')
if not credential:
- name, credential = self._connector.jujudata.load_credential(cloud, name)
+ name, credential = self._connector.jujudata.load_credential(cloud,
+ name)
if credential is None:
raise errors.JujuError(
'Unable to find credential: {}'.format(name))
log.debug('Uploading credential %s', name)
cloud_facade = client.CloudFacade.from_connection(self.connection())
- await cloud_facade.UpdateCredentials([
+ tagged_credentials = [
client.UpdateCloudCredential(
tag=tag.credential(cloud, tag.untag('user-', owner), name),
credential=credential,
- )])
-
+ )]
+ if cloud_facade.version >= 3:
+ # UpdateCredentials was renamed to UpdateCredentialsCheckModels
+ # in facade version 3.
+ await cloud_facade.UpdateCredentialsCheckModels(
+ credentials=tagged_credentials, force=force,
+ )
+ else:
+ await cloud_facade.UpdateCredentials(tagged_credentials)
return name
async def add_model(
return model
- async def destroy_models(self, *models):
+ async def destroy_models(self, *models, destroy_storage=False):
"""Destroy one or more models.
- :param str \*models: Names or UUIDs of models to destroy
+ :param str *models: Names or UUIDs of models to destroy
+ :param bool destroy_storage: Whether or not to destroy storage when
+ destroying the models. Defaults to false.
"""
uuids = await self.model_uuids()
', '.join(models)
)
- await model_facade.DestroyModels([
- client.Entity(tag.model(model))
- for model in models
- ])
+ if model_facade.version >= 5:
+ params = [
+ client.DestroyModelParams(model_tag=tag.model(model),
+ destroy_storage=destroy_storage)
+ for model in models]
+ else:
+ params = [client.Entity(tag.model(model)) for model in models]
+
+ await model_facade.DestroyModels(params)
destroy_model = destroy_models
async def add_user(self, username, password=None, display_name=None):
"""
if not display_name:
display_name = username
- user_facade = client.UserManagerFacade.from_connection(self.connection())
+ user_facade = client.UserManagerFacade.from_connection(
+ self.connection())
users = [client.AddUser(display_name=display_name,
username=username,
password=password)]
- await user_facade.AddUser(users)
- return await self.get_user(username)
+ results = await user_facade.AddUser(users)
+ secret_key = results.results[0].secret_key
+ return await self.get_user(username, secret_key=secret_key)
async def remove_user(self, username):
"""Remove a user from this controller.
:param str password: New password
"""
- user_facade = client.UserManagerFacade.from_connection(self.connection())
+ user_facade = client.UserManagerFacade.from_connection(
+ self.connection())
entity = client.EntityPassword(password, tag.user(username))
return await user_facade.SetPassword([entity])
+ async def reset_user_password(self, username):
+ """Reset user password.
+
+ :param str username: Username
+ :returns: A :class:`~juju.user.User` instance
+ """
+ user_facade = client.UserManagerFacade.from_connection(
+ self.connection())
+ entity = client.Entity(tag.user(username))
+ results = await user_facade.ResetPassword([entity])
+ secret_key = results.results[0].secret_key
+ return await self.get_user(username, secret_key=secret_key)
+
async def destroy(self, destroy_all_models=False):
"""Destroy this controller.
:param str username: Username
"""
- user_facade = client.UserManagerFacade.from_connection(self.connection())
+ user_facade = client.UserManagerFacade.from_connection(
+ self.connection())
entity = client.Entity(tag.user(username))
return await user_facade.DisableUser([entity])
"""Re-enable a previously disabled user.
"""
- user_facade = client.UserManagerFacade.from_connection(self.connection())
+ user_facade = client.UserManagerFacade.from_connection(
+ self.connection())
entity = client.Entity(tag.user(username))
return await user_facade.EnableUser([entity])
def get_payloads(self, *patterns):
"""Return list of known payloads.
- :param str \*patterns: Patterns to match against
+ :param str *patterns: Patterns to match against
Each pattern will be checked against the following info in Juju::
await model._connect_direct(**kwargs)
return model
- async def get_user(self, username):
+ async def get_user(self, username, secret_key=None):
"""Get a user by name.
:param str username: Username
+ :param str secret_key: Issued by juju when add or reset user
+ password
:returns: A :class:`~juju.user.User` instance
"""
client_facade = client.UserManagerFacade.from_connection(
return None
raise
if response.results and response.results[0].result:
- return User(self, response.results[0].result)
+ return User(self, response.results[0].result, secret_key=secret_key)
return None
async def get_users(self, include_disabled=False):
async def grant_model(self, username, model_uuid, acl='read'):
"""Grant a user access to a model. Note that if the user
already has higher permissions than the provided ACL,
- this will do nothing (see revoke_model for a way to remove permissions).
+ this will do nothing (see revoke_model for a way to remove
+ permissions).
:param str username: Username
:param str model_uuid: The UUID of the model to change.
model_facade = client.ModelManagerFacade.from_connection(
self.connection())
user = tag.user(username)
- model = tag.model(self.info.uuid)
+ model = tag.model(model_uuid)
changes = client.ModifyModelAccess(acl, 'revoke', model, user)
return await model_facade.ModifyModelAccess([changes])
def agree(self, *terms):
"""Agree to the terms of a charm.
- :param str \*terms: Terms to agree to
+ :param str *terms: Terms to agree to
"""
raise NotImplementedError()
if not model.info:
await utils.run_with_interrupt(model.get_info(),
model._watch_stopping,
- model.loop)
+ loop=model.loop)
if model._watch_stopping.is_set():
return
if model.info.agent_version < client.Number.from_json('2.2.3'):
full_status = await utils.run_with_interrupt(model.get_status(),
model._watch_stopping,
- model.loop)
+ loop=model.loop)
if model._watch_stopping.is_set():
return
:param str destination: Remote destination of transferred files
:param str user: Remote username
:param bool proxy: Proxy through the Juju API server
- :param str scp_opts: Additional options to the `scp` command
+ :param scp_opts: Additional options to the `scp` command
+ :type scp_opts: str or list
"""
if proxy:
raise NotImplementedError('proxy option is not implemented')
:param str destination: Local destination of transferred files
:param str user: Remote username
:param bool proxy: Proxy through the Juju API server
- :param str scp_opts: Additional options to the `scp` command
+ :param scp_opts: Additional options to the `scp` command
+ :type scp_opts: str or list
"""
if proxy:
raise NotImplementedError('proxy option is not implemented')
'-i', os.path.expanduser('~/.local/share/juju/ssh/juju_id_rsa'),
'-o', 'StrictHostKeyChecking=no',
'-q',
- '-B',
- source, destination
+ '-B'
]
- cmd += scp_opts.split()
+ cmd.extend(scp_opts.split() if isinstance(scp_opts, str) else scp_opts)
+ cmd.extend([source, destination])
loop = self.model.loop
process = await asyncio.create_subprocess_exec(*cmd, loop=loop)
await process.wait()
results = await utils.run_with_interrupt(
allwatcher.Next(),
self._watch_stopping,
- self._connector.loop)
+ loop=self._connector.loop)
except JujuAPIError as e:
if 'watcher was stopped' not in str(e):
raise
(optional) list of existing subnet CIDRs with it.
:param str name: Name of the space
- :param \*cidrs: Optional list of existing subnet CIDRs
+ :param *cidrs: Optional list of existing subnet CIDRs
"""
raise NotImplementedError()
:param str cidr_or_id: CIDR or provider ID of the existing subnet
:param str space: Network space with which to associate
- :param str \*zones: Zone(s) in which the subnet resides
+ :param str *zones: Zone(s) in which the subnet resides
"""
raise NotImplementedError()
def block(self, *commands):
"""Add a new block to this model.
- :param str \*commands: The commands to block. Valid values are
+ :param str *commands: The commands to block. Valid values are
'all-changes', 'destroy-model', 'remove-object'
"""
:param str name: Name to give the storage pool
:param str provider_type: Pool provider type
- :param \*\*pool_config: key/value pool configuration pairs
+ :param **pool_config: key/value pool configuration pairs
"""
raise NotImplementedError()
self, entity_url, application_name=None, bind=None, budget=None,
channel=None, config=None, constraints=None, force=False,
num_units=1, plan=None, resources=None, series=None, storage=None,
- to=None):
+ to=None, devices=None):
"""Deploy a new service or bundle.
:param str entity_url: Charm or bundle url
if is_local:
entity_id = entity_url.replace('local:', '')
else:
- entity = await self.charmstore.entity(entity_url, channel=channel)
+ entity = await self.charmstore.entity(entity_url, channel=channel,
+ include_stats=False)
entity_id = entity['Id']
client_facade = client.ClientFacade.from_connection(self.connection())
# actually support them yet anyway
resources = await self._add_store_resources(application_name,
entity_id,
- entity)
+ entity=entity)
else:
if not application_name:
metadata = yaml.load(metadata_path.read_text())
storage=storage,
channel=channel,
num_units=num_units,
- placement=parse_placement(to)
+ placement=parse_placement(to),
+ devices=devices,
)
- async def _add_store_resources(self, application, entity_url, entity=None):
+ async def _add_store_resources(self, application, entity_url,
+ overrides=None, entity=None):
if not entity:
# avoid extra charm store call if one was already made
- entity = await self.charmstore.entity(entity_url)
+ entity = await self.charmstore.entity(entity_url,
+ include_stats=False)
resources = [
{
'description': resource['Description'],
} for resource in entity['Meta']['resources']
]
+ if overrides:
+ names = {r['name'] for r in resources}
+ unknown = overrides.keys() - names
+ if unknown:
+ raise JujuError('Unrecognized resource{}: {}'.format(
+ 's' if len(unknown) > 1 else '',
+ ', '.join(unknown)))
+ for resource in resources:
+ if resource['name'] in overrides:
+ resource['revision'] = overrides[resource['name']]
+
if not resources:
return None
async def _deploy(self, charm_url, application, series, config,
constraints, endpoint_bindings, resources, storage,
- channel=None, num_units=None, placement=None):
+ channel=None, num_units=None, placement=None,
+ devices=None):
"""Logic shared between `Model.deploy` and `BundleHandler.deploy`.
"""
log.info('Deploying %s', charm_url)
num_units=num_units,
resources=resources,
storage=storage,
- placement=placement
+ placement=placement,
+ devices=devices,
)
result = await app_facade.Deploy([app])
errors = [r.error.message for r in result.results if r.error]
client_facade = client.ClientFacade.from_connection(self.connection())
result = await client_facade.GetModelConstraints()
- # GetModelConstraints returns GetConstraintsResults which has a 'constraints'
- # attribute. If no constraints have been set GetConstraintsResults.constraints
- # is None. Otherwise GetConstraintsResults.constraints has an attribute for each
- # possible constraint, each of these in turn will be None if they have not been
+ # GetModelConstraints returns GetConstraintsResults which has a
+ # 'constraints' attribute. If no constraints have been set
+ # GetConstraintsResults.constraints is None. Otherwise
+ # GetConstraintsResults.constraints has an attribute for each possible
+ # constraint, each of these in turn will be None if they have not been
# set.
if result.constraints:
- constraint_types = [a for a in dir(result.constraints)
- if a in Value._toSchema.keys()]
- for constraint in constraint_types:
- value = getattr(result.constraints, constraint)
- if value is not None:
- constraints[constraint] = getattr(result.constraints, constraint)
+ constraint_types = [a for a in dir(result.constraints)
+ if a in Value._toSchema.keys()]
+ for constraint in constraint_types:
+ value = getattr(result.constraints, constraint)
+ if value is not None:
+ constraints[constraint] = getattr(result.constraints,
+ constraint)
return constraints
def import_ssh_key(self, identity):
def remove_machine(self, *machine_ids):
"""Remove a machine from this model.
- :param str \*machine_ids: Ids of the machines to remove
+ :param str *machine_ids: Ids of the machines to remove
"""
raise NotImplementedError()
def unblock(self, *commands):
"""Unblock an operation that would alter this model.
- :param str \*commands: The commands to unblock. Valid values are
+ :param str *commands: The commands to unblock. Valid values are
'all-changes', 'destroy-model', 'remove-object'
"""
def unset_config(self, *keys):
"""Unset configuration on this model.
- :param str \*keys: The keys to unset
+ :param str *keys: The keys to unset
"""
raise NotImplementedError()
async def get_metrics(self, *tags):
"""Retrieve metrics.
- :param str \*tags: Tags of entities from which to retrieve metrics.
+ :param str *tags: Tags of entities from which to retrieve metrics.
No tags retrieves the metrics of all units in the model.
:return: Dictionary of unit_name:metrics
for unit_name, unit in model.units.items():
app_units = self._units_by_app.setdefault(unit.application, [])
app_units.append(unit_name)
+ self.bundle_facade = client.BundleFacade.from_connection(
+ model.connection())
self.client_facade = client.ClientFacade.from_connection(
model.connection())
self.app_facade = client.ApplicationFacade.from_connection(
return bundle
async def fetch_plan(self, entity_id):
- is_local = not entity_id.startswith('cs:')
+ is_store_url = entity_id.startswith('cs:')
- if is_local and os.path.isfile(entity_id):
+ if not is_store_url and os.path.isfile(entity_id):
bundle_yaml = Path(entity_id).read_text()
- elif is_local and os.path.isdir(entity_id):
+ elif not is_store_url and os.path.isdir(entity_id):
bundle_yaml = (Path(entity_id) / "bundle.yaml").read_text()
else:
bundle_yaml = await self.charmstore.files(entity_id,
self.bundle = yaml.safe_load(bundle_yaml)
self.bundle = await self._handle_local_charms(self.bundle)
- self.plan = await self.client_facade.GetBundleChanges(
+ self.plan = await self.bundle_facade.GetChanges(
yaml.dump(self.bundle))
if self.plan.errors:
return await self.model.add_relation(*endpoints)
async def deploy(self, charm, series, application, options, constraints,
- storage, endpoint_bindings, resources):
+ storage, endpoint_bindings, *args):
"""
:param charm string:
Charm holds the URL of the charm to be used to deploy this
:param endpoint_bindings map[string]string:
EndpointBindings holds the optional endpoint bindings
+ :param devices map[string]string:
+ Devices holds the optional devices constraints.
+ (Only given on Juju 2.5+)
+
:param resources map[string]int:
Resources identifies the revision to use for each resource
of the application's charm.
+
+ :param num_units int:
+ NumUnits holds the number of units required. For IAAS models, this
+ will be 0 and separate AddUnitChanges will be used. For Kubernetes
+ models, this will be used to scale the application.
+ (Only given on Juju 2.5+)
"""
# resolve indirect references
charm = self.resolve(charm)
- # the bundle plan doesn't actually do anything with resources, even
- # though it ostensibly gives us something (None) for that param
+
+ if len(args) == 1:
+ # Juju 2.4 and below only sends the resources
+ resources = args[0]
+ devices, num_units = None, None
+ else:
+ # Juju 2.5+ sends devices before resources, as well as num_units
+ # There might be placement but we need to ignore that.
+ devices, resources, num_units = args[:3]
+
if not charm.startswith('local:'):
- resources = await self.model._add_store_resources(application,
- charm)
+ resources = await self.model._add_store_resources(
+ application, charm, overrides=resources)
await self.model._deploy(
charm_url=charm,
application=application,
endpoint_bindings=endpoint_bindings,
resources=resources,
storage=storage,
+ devices=devices,
+ num_units=num_units,
)
return application
to=placement,
)
+ async def scale(self, application, scale):
+ """
+ Handle a change of scale to a k8s application.
+
+ :param string application:
+ Application holds the application placeholder name for which a unit
+ is added.
+
+ :param int scale:
+ New scale value to use.
+ """
+ application = self.resolve(application)
+ return await self.model.applications[application].scale(scale=scale)
+
async def expose(self, application):
"""
:param application string:
"""
Async wrapper around theblues.charmstore.CharmStore
"""
- def __init__(self, loop):
+ def __init__(self, loop, cs_timeout=20):
self.loop = loop
- self._cs = theblues.charmstore.CharmStore(timeout=5)
+ self._cs = theblues.charmstore.CharmStore(timeout=cs_timeout)
def __getattr__(self, name):
"""
Ignored::
- * build/\* - This is used for packing the charm itself and any
+ * build/* - This is used for packing the charm itself and any
similar tasks.
- * \*/.\* - Hidden files are all ignored for now. This will most
+ * */.* - Hidden files are all ignored for now. This will most
likely be changed into a specific ignore list
(.bzr, etc)
arches = [
- [re.compile("amd64|x86_64"), "amd64"],
- [re.compile("i?[3-9]86"), "i386"],
- [re.compile("(arm$)|(armv.*)"), "armhf"],
- [re.compile("aarch64"), "arm64"],
- [re.compile("ppc64|ppc64el|ppc64le"), "ppc64el"],
- [re.compile("ppc64|ppc64el|ppc64le"), "s390x"],
-
+ [re.compile(r"amd64|x86_64"), "amd64"],
+ [re.compile(r"i?[3-9]86"), "i386"],
+ [re.compile(r"(arm$)|(armv.*)"), "armhf"],
+ [re.compile(r"aarch64"), "arm64"],
+ [re.compile(r"ppc64|ppc64el|ppc64le"), "ppc64el"],
+ [re.compile(r"s390x?"), "s390x"],
]
# TODO: Test this on an image without the ubuntu user setup.
auth_user = self.user
+ ssh = None
try:
# Run w/o allocating a pty, so we fail if sudo prompts for a passwd
ssh = self._get_ssh_client(
info['series'] = lines[0].strip()
info['arch'] = normalize_arch(lines[1].strip())
- memKb = re.split('\s+', lines[2])[1]
+ memKb = re.split(r'\s+', lines[2])[1]
# Convert megabytes -> kilobytes
info['mem'] = round(int(memKb) / 1024)
cores = line.split(":")[1].strip()
if physical_id not in recorded.keys():
- info['cpu-cores'] += cores
- recorded[physical_id] = True
+ info['cpu-cores'] += cores
+ recorded[physical_id] = True
return info
"""Run command on this unit.
:param str command: The command to run
- :param int timeout: Time, in seconds, to wait before command is considered failed
+ :param int timeout: Time, in seconds, to wait before command is
+ considered failed
:returns: A :class:`juju.action.Action` instance.
"""
"""Run an action on this unit.
:param str action_name: Name of action to run
- :param \*\*params: Action parameters
+ :param **params: Action parameters
:returns: A :class:`juju.action.Action` instance.
Note that this only enqueues the action. You will need to call
:param str destination: Remote destination of transferred files
:param str user: Remote username
:param bool proxy: Proxy through the Juju API server
- :param str scp_opts: Additional options to the `scp` command
+ :param scp_opts: Additional options to the `scp` command
+ :type scp_opts: str or list
"""
await self.machine.scp_to(source, destination, user=user, proxy=proxy,
scp_opts=scp_opts)
:param str destination: Local destination of transferred files
:param str user: Remote username
:param bool proxy: Proxy through the Juju API server
- :param str scp_opts: Additional options to the `scp` command
+ :param scp_opts: Additional options to the `scp` command
+ :type scp_opts: str or list
"""
await self.machine.scp_from(source, destination, user=user,
proxy=proxy, scp_opts=scp_opts)
class User(object):
- def __init__(self, controller, user_info):
+ def __init__(self, controller, user_info, secret_key=None):
self.controller = controller
self._user_info = user_info
+ self._secret_key = secret_key
@property
def tag(self):
def created_by(self):
return self._user_info.created_by
+ @property
+ def secret_key(self):
+ return self._secret_key
+
async def set_password(self, password):
"""Update this user's password.
"""
from collections import defaultdict
from functools import partial
from pathlib import Path
+import base64
+from pyasn1.type import univ, char
+from pyasn1.codec.der.encoder import encode
async def execute_process(*cmd, log=None, loop=None):
await asyncio.wait_for(_block(), timeout, loop=loop)
-async def run_with_interrupt(task, event, loop=None):
+async def run_with_interrupt(task, *events, loop=None):
"""
- Awaits a task while allowing it to be interrupted by an `asyncio.Event`.
+ Awaits a task while allowing it to be interrupted by one or more
+ `asyncio.Event`s.
- If the task finishes without the event becoming set, the results of the
- task will be returned. If the event becomes set, the task will be
- cancelled ``None`` will be returned.
+ If the task finishes without the events becoming set, the results of the
+ task will be returned. If the event become set, the task will be cancelled
+ ``None`` will be returned.
:param task: Task to run
- :param event: An `asyncio.Event` which, if set, will interrupt `task`
- and cause it to be cancelled.
+ :param events: One or more `asyncio.Event`s which, if set, will interrupt
+ `task` and cause it to be cancelled.
:param loop: Optional event loop to use other than the default.
"""
loop = loop or asyncio.get_event_loop()
- event_task = loop.create_task(event.wait())
- done, pending = await asyncio.wait([task, event_task],
+ task = asyncio.ensure_future(task, loop=loop)
+ event_tasks = [loop.create_task(event.wait()) for event in events]
+ done, pending = await asyncio.wait([task] + event_tasks,
loop=loop,
return_when=asyncio.FIRST_COMPLETED)
for f in pending:
- f.cancel()
- exception = [f.exception() for f in done
- if f is not event_task and f.exception()]
- if exception:
- raise exception[0]
- result = [f.result() for f in done if f is not event_task]
- if result:
- return result[0]
+ f.cancel() # cancel unfinished tasks
+ for f in done:
+ f.exception() # prevent "exception was not retrieved" errors
+ if task in done:
+ return task.result() # may raise exception
else:
return None
+
+
+class Addrs(univ.SequenceOf):
+ componentType = char.PrintableString()
+
+
+class RegistrationInfo(univ.Sequence):
+ """
+ ASN.1 representation of:
+
+ type RegistrationInfo struct {
+ User string
+
+ Addrs []string
+
+ SecretKey []byte
+
+ ControllerName string
+ }
+ """
+ pass
+
+
+def generate_user_controller_access_token(username, controller_endpoints, secret_key, controller_name):
+ """" Implement in python what is currently done in GO
+ https://github.com/juju/juju/blob/a5ab92ec9b7f5da3678d9ac603fe52d45af24412/cmd/juju/user/utils.go#L16
+
+ :param username: name of the user to register
+ :param controller_endpoints: juju controller endpoints list in the format <ip>:<port>
+ :param secret_key: base64 encoded string of the secret-key generated by juju
+ :param controller_name: name of the controller to register to.
+ """
+
+ # Secret key is returned as base64 encoded string in:
+ # https://websockets.readthedocs.io/en/stable/_modules/websockets/protocol.html#WebSocketCommonProtocol.recv
+ # Deconding it before marshalling into the ASN.1 message
+ secret_key = base64.b64decode(secret_key)
+ addr = Addrs()
+ for endpoint in controller_endpoints:
+ addr.append(endpoint)
+
+ registration_string = RegistrationInfo()
+ registration_string.setComponentByPosition(0, char.PrintableString(username))
+ registration_string.setComponentByPosition(1, addr)
+ registration_string.setComponentByPosition(2, univ.OctetString(secret_key))
+ registration_string.setComponentByPosition(3, char.PrintableString(controller_name))
+ registration_string = encode(registration_string)
+ remainder = len(registration_string) % 3
+ registration_string += b"\0" * (3 - remainder)
+ return base64.urlsafe_b64encode(registration_string)
'pyRFC3339>=1.0,<2.0',
'pyyaml>=3.0,<=4.2',
'theblues>=0.3.8,<1.0',
- 'websockets>=4.0,<7.0',
+ 'websockets>=7.0,<8.0',
'paramiko>=2.4.0,<3.0.0',
+ 'pyasn1>=0.4.4',
],
include_package_data=True,
maintainer='Juju Ecosystem Engineering',
return False
-
bootstrapped = pytest.mark.skipif(
not is_bootstrapped(),
reason='bootstrapped Juju environment required')
+series: xenial
applications:
- myapp:
- charm: cs:xenial/ubuntu-0
+ dummy-sink:
+ charm: cs:~juju-qa/dummy-sink
+ num_units: 1
+ dummy-subordinate:
+ charm: cs:~juju-qa/dummy-subordinate
+relations:
+ - ['dummy-sink', 'dummy-subordinate']
--- /dev/null
+series: xenial
+services:
+ ghost:
+ charm: "cs:ghost-19"
+ num_units: 1
+ resources:
+ ghost-stable: 11
--- /dev/null
+-----BEGIN CERTIFICATE-----
+MIIFxDCCA6ygAwIBAgIJAPBHQW1VVLhYMA0GCSqGSIb3DQEBCwUAMHcxCzAJBgNV
+BAYTAlVTMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTEQMA4GA1UEBwwHUmFsZWln
+aDESMBAGA1UECgwJQ2Fub25pY2FsMSkwJwYDVQQDDCBweXRob24tbGlianVqdS5p
+bnRlZ3JhdGlvbi50ZXN0czAeFw0xODEyMTEyMDQyMThaFw0xOTEyMTEyMDQyMTha
+MHcxCzAJBgNVBAYTAlVTMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTEQMA4GA1UE
+BwwHUmFsZWlnaDESMBAGA1UECgwJQ2Fub25pY2FsMSkwJwYDVQQDDCBweXRob24t
+bGlianVqdS5pbnRlZ3JhdGlvbi50ZXN0czCCAiIwDQYJKoZIhvcNAQEBBQADggIP
+ADCCAgoCggIBANkkfNI4Q3eIIrXZF3xxnD9Bbp06jPeoEokUSrC98L5XwCtxs9Ma
+fWPqiSukPq3A0pPcRobFOu5o+pu6+1pFjcmtKICsp+CwHV52+IfozvNlhRMUFPb2
+IxU86tgpMcBAM5wLz85DoNSu4EjOku0rB8Z0GMfvvuc7aYtDQoKJSScHGWWFTaJT
+mtXmmKKSPtyPZ5PCQOv2Qmg5ujs4RS3R8dq4WRAd5F8YzRBgmtPYRrjwgEjD7GTq
+Xlt+COqn5+RgWFIH0pQ1xHkslBzBByzsyjLJPdV/ugNIZk6GNOzLAw3ynl/9xGGh
+RAOrBsKVQPs3liZoGXVqKxHyNgWh8V58TgiFDuRZiZwQDV6cRkxOkGQIXohkS7uC
+5OXrAsyyVPrRoWfQMggxM1jH3H+93PoRqEsLypLxw53h9Seep4tOggw/hgOolLFg
+diAT/IU3yhESXnXpAA8G2rDKO32hw+vWuaGCbH6bShb+9ZfkAmLUiSVm9ClbkZRQ
+IaXmtBwsLS2IBxW51jrjSuXvqlBZc01pIUC2CT7aTrbftpA+w6i1bZpqjCukUSAx
+t4dRjzL/h/drp5xxlqXOZL9yjYl8vFul4LFKkpkJGIKESEksxULZR/3b+WA7oyiA
+Ph9UgnKU730dKVSfWbi/0tsCA/4HKIJ9qucCrfxyL8hizJ+1w9NZJ3ZbAgMBAAGj
+UzBRMB0GA1UdDgQWBBSv/7Fraw7XviWwlnPGc+CTJA0rKjAfBgNVHSMEGDAWgBSv
+/7Fraw7XviWwlnPGc+CTJA0rKjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
+CwUAA4ICAQCluQ7qFgNoGPkAkdoDXN26OhQcfrCmjvPufurs8Fc4Yxumupz01Df+
+zu3J2pG+tfThi37sRZsxN/jhtZOVgaXPSgpgB8Tz16YCK3KTEHXil/i6wp4JGmnQ
+VsOo8cGLEvcmFg98/l2Tu31IXaSm7Fc/VxVB0fhzvIa0xG+osU3Dy4GWhDQrkkJ8
+MErTvEAb8QnY1y20ThPAZ5StBZ/ZLwPksuzkvJwGN8FI00k1RCznDNArzKouuZZt
+JdfjnFtT+nrP0XSAlphfI0o7Gbm6jqVLPIekp8iPJuAmk55biZ9rAJBu8DsHtBpQ
+cbpH+84y/xaC9svPgD9Un6dDDYXQ4QZL393oZW1RM4apR9gOz/8NxW2bJyPVxA3M
+nmHphZjyGrOLN/QjrZV93Dv65SIivzT2zYEztvK4rjui31J3VDeNEe7uMFGq5Pmq
+7HRrcPY2sMSOHkzOTFmd5qwaPD9EzkM5UT5YJDEE7YUjkR8LlxP5Xvo82HXxKl8D
+8Tk09HuBMWg69QjuVThBNJSWpIxTbQEfm/2j+fm1L1kE9N7+97y69eDTNdOxJK5D
+zaKoAjgoneZZzZN6fblfbQuAsDdJ2xLR0DTBlxA9Gv7OYbUpXm3eAyfYL4AmqvHI
+HtfgPeSH2+wQVteiVa7q0BIto75XE3m8+xIOQsAUEb04fcacEpKZlw==
+-----END CERTIFICATE-----
--- /dev/null
+-----BEGIN PRIVATE KEY-----
+MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDZJHzSOEN3iCK1
+2Rd8cZw/QW6dOoz3qBKJFEqwvfC+V8ArcbPTGn1j6okrpD6twNKT3EaGxTruaPqb
+uvtaRY3JrSiArKfgsB1edviH6M7zZYUTFBT29iMVPOrYKTHAQDOcC8/OQ6DUruBI
+zpLtKwfGdBjH777nO2mLQ0KCiUknBxllhU2iU5rV5piikj7cj2eTwkDr9kJoObo7
+OEUt0fHauFkQHeRfGM0QYJrT2Ea48IBIw+xk6l5bfgjqp+fkYFhSB9KUNcR5LJQc
+wQcs7MoyyT3Vf7oDSGZOhjTsywMN8p5f/cRhoUQDqwbClUD7N5YmaBl1aisR8jYF
+ofFefE4IhQ7kWYmcEA1enEZMTpBkCF6IZEu7guTl6wLMslT60aFn0DIIMTNYx9x/
+vdz6EahLC8qS8cOd4fUnnqeLToIMP4YDqJSxYHYgE/yFN8oREl516QAPBtqwyjt9
+ocPr1rmhgmx+m0oW/vWX5AJi1IklZvQpW5GUUCGl5rQcLC0tiAcVudY640rl76pQ
+WXNNaSFAtgk+2k6237aQPsOotW2aaowrpFEgMbeHUY8y/4f3a6eccZalzmS/co2J
+fLxbpeCxSpKZCRiChEhJLMVC2Uf92/lgO6MogD4fVIJylO99HSlUn1m4v9LbAgP+
+ByiCfarnAq38ci/IYsyftcPTWSd2WwIDAQABAoICAFbe9Rz5K2ynxxMvbej4XsUj
+vUgjw3/U+s1ik9sPsj/ERXpb+9BJ+b4+d3BBPl4vFU/YQVLrlv8IerJQ5PwhdW8o
+2lpYOLV4X9eKCzX8WscfZ1TRpO2EXVbCz0V5fZDnXn5gb1uazL4p1ErscfV2UJ8B
+lWRvstU5fKkdWH92wxBdE7j80qlNf1Vx8sCfd4yvxoVjoquEEt81sR6+DVcedf7F
+38PF4bZ16pxRub9k+C5G8VurHmjlJqi9zH1sfSZtsQfoX0OyGw9LWVoDk4ZSmTYm
+Mpm2hsmHbn6dzJCrS2aKGPhYQve4F8jL5GF2as/WVji5Tu4dcmu0lg480p61ZlXf
+Q58qw4uXMU2KfiuLKyTV8MlmktMhDiHAmzAbIXskdmV2BNlIwyudsVXT1QD0BKH5
+I+8edW1OPLK72/kt9VT1paRbTiCL0NWk99QCL1VxPB4FupQQm1Hk2KnMrUfjFUOm
+9cuOP1S0HcHCMHN4+y0UCmn3phrWmfI/KlDZCxmSd8gvNwKkPSW5ONuYmZlpE5Wm
+s7FwRoAGGvSsjXOC3N6m48b0dQNLnMvSXQIRiDbnTzChNJ3q7y9u0o/dqATCtelx
+S7ouVKxHqSdy9G8WK0XQAFqny2dcoHZiiuxWboF9p1zEia43pdFVy/7g08KjSBQ1
+vzVGhUDYtquqq0MociWBAoIBAQD6C8ZDBU8VWwOIPL+zX8/4MNp0PfcJrOwk1vF0
+J0aPRRvqx0g6yhzjrCtWNrQnHV6Oc9FBg/NPAthAAQWYEwQr77RJWRtle/n7cH2A
+qFkAL0nYokti7TdFMe82a8hlnuo9GQl340t95j03/HDAtrqQ0xFi32Rpp54MgHLU
+FW2AYTv7CLV18p7yHIMdn0ESORPxlc/hYuuyL6ZPm/7DF/bbieY1+ZVAzn1ls17m
+dQctagpInRC2EDL17lQK86Mh7PGdVTIaJMFvzdyuIn8qswe1n3FA0OCL7VBfMjE8
+caUZ3kfGfeNKtkUvGALoXploZhDTmfDs5XQFIoMvwi87lClBAoIBAQDeUCQMyPUC
+TcfDKmeKAiGjm4Amtb+rvA3SbPSJvteOaohyqKFswUf9fNCrJim1QVpQ+PtArlAx
+WK9X8g44+OOWx2moLxlptzjzsYEXJYzUtIjuFE10xiGJEvthmWAZ+EB7Gexu7696
+M4LcWkAivCAwcM5e2Gr3DtMMS4E9fxNZfEn7RNFtTs6Cit/R2VITlbYnECSU13FY
+DI37g8umCR01pTZ/7VVUwVMeq/irFKwTfkHoF2Fyxbp8CT91ydRsYCBs395xcEH1
+2rblBXUlGj01eVZtTX2HVSS78o/ak+Q3WJQvh1Hds8yS7QdirkOpmGGzvwpIhjzB
+ztHsgjbFt3ybAoIBAA1HAsgcSA7CPnXFhAhqVgi/z1nM0Ila/U8XesrIKx8AdHML
+EfLNOKt+QO7bCMXq8VJvI/VupETVydXcOAfTOq16lQAwExxYcPXBC2kBh3hTCoDO
+XWJrZjvuYt1o68M5pQaJhc8v6ppM14NZjEMvcMiv7IRriFFz7RiM2YwZdy8R+rVh
+yQDyWS5SBURVaIcnML/rTJaTQiC8FwCzL9v8MceGkwrareo7DL2RwMBMBo2Ky/D/
+JhwE0C/u79eFCGyMwGeyVm689OiS7dzxR/9kckxaoxDmBoZnm5TyfVrQTgwJmZYY
+qTEWbKYLiFv+afb5NHuH+RsbNAXxxzWKAigPvgECggEAYD8H7HUQBchQxMDWBJy5
+nZBT4e5rpdkLjt9W20/BGMosep9hC6l+FlN0L7Sc9/jsNgQlGrKcy1Be0U9dMvMl
+7QA2UPbbJLaLNI3TmobKOshSQ+iMRBMHL8YFCRMS1QtyNxlZEAo6yUgFzopQG/mg
+YfhkkBFX9c/4NOl3cX1TjjlN+jeoB4/HviKLldllPE9jhfPqMno3euwsiAheIWru
+t2vodWf1unTcHHpNdRvFB8dwlx+QM9VA0DRcwgz4J1dSknA1aJ02IU9oQSyks8Rx
+XXZDoZybzPxio+/2saW3dvKlbRJDsh0GY1G1EdbqOkFbgyshM5bSNQHqRl91gRHY
+IwKCAQEApF790G7J1IgNrLBxLlzEkVcv2Az8QDHviC8MxdVerGj62E5fGUb44Z+p
+SM2vjjtL7yeTPuH0K7bbVtDMZoj3l81BHY6OnmFTLPSlMnUYXs7aVjbIK3EMQtHa
+EyNOiwNtIOAUMqQ3C/KXWxdO0J8/kY6b7cvZwj5zDLYt+4j8BN8w8EL0Kgxw9Bd/
+DL++Nz3IqoOoPF0aK7hVTklVzONIdaGL2OjlyESKZOWJR1pypLC9+nUAAFbtPN5Q
+8xyG3Rqoo7j697M50LP4ZMCE8WK/uZth4LPU9KWJAJ3FHrKki0qB1zbYXS4OMFbj
+hg+Fb1z8af0WL9PCAwsWQMTaSx88tQ==
+-----END PRIVATE KEY-----
import asyncio
+import http
+import logging
+import socket
+import ssl
+from contextlib import closing
+from pathlib import Path
from juju.client import client
from juju.client.connection import Connection
+from juju.controller import Controller
+from juju.utils import run_with_interrupt
import pytest
+import websockets
from .. import base
+logger = logging.getLogger(__name__)
+
+
@base.bootstrapped
@pytest.mark.asyncio
async def test_monitor(event_loop):
-
async with base.CleanModel() as model:
conn = model.connection()
assert conn.monitor.status == 'connected'
await model.block_until(lambda: conn.is_open, timeout=3)
finally:
await conn.close()
+
+
+@base.bootstrapped
+@pytest.mark.asyncio
+async def test_redirect(event_loop):
+ controller = Controller()
+ await controller.connect()
+ kwargs = controller.connection().connect_params()
+ await controller.disconnect()
+
+ # websockets.server.logger.setLevel(logging.DEBUG)
+ # websockets.client.logger.setLevel(logging.DEBUG)
+ # # websockets.protocol.logger.setLevel(logging.DEBUG)
+ # logger.setLevel(logging.DEBUG)
+
+ destination = 'wss://{}/api'.format(kwargs['endpoint'])
+ redirect_statuses = [
+ http.HTTPStatus.MOVED_PERMANENTLY,
+ http.HTTPStatus.FOUND,
+ http.HTTPStatus.SEE_OTHER,
+ http.HTTPStatus.TEMPORARY_REDIRECT,
+ http.HTTPStatus.PERMANENT_REDIRECT,
+ ]
+ test_server_cert = Path(__file__).with_name('cert.pem')
+ kwargs['cacert'] += '\n' + test_server_cert.read_text()
+ server = RedirectServer(destination, event_loop)
+ try:
+ for status in redirect_statuses:
+ logger.debug('test: starting {}'.format(status))
+ server.start(status)
+ await run_with_interrupt(server.running.wait(),
+ server.terminated)
+ if server.exception:
+ raise server.exception
+ assert not server.terminated.is_set()
+ logger.debug('test: started')
+ kwargs_copy = dict(kwargs,
+ endpoint='localhost:{}'.format(server.port))
+ logger.debug('test: connecting')
+ conn = await Connection.connect(**kwargs_copy)
+ logger.debug('test: connected')
+ await conn.close()
+ logger.debug('test: stopping')
+ server.stop()
+ await server.stopped.wait()
+ logger.debug('test: stopped')
+ finally:
+ server.terminate()
+ await server.terminated.wait()
+
+
+class RedirectServer:
+ def __init__(self, destination, loop):
+ self.destination = destination
+ self.loop = loop
+ self._start = asyncio.Event()
+ self._stop = asyncio.Event()
+ self._terminate = asyncio.Event()
+ self.running = asyncio.Event()
+ self.stopped = asyncio.Event()
+ self.terminated = asyncio.Event()
+ if hasattr(ssl, 'PROTOCOL_TLS_SERVER'):
+ # python 3.6+
+ protocol = ssl.PROTOCOL_TLS_SERVER
+ elif hasattr(ssl, 'PROTOCOL_TLS'):
+ # python 3.5.3+
+ protocol = ssl.PROTOCOL_TLS
+ else:
+ # python 3.5.2
+ protocol = ssl.PROTOCOL_TLSv1_2
+ self.ssl_context = ssl.SSLContext(protocol)
+ crt_file = Path(__file__).with_name('cert.pem')
+ key_file = Path(__file__).with_name('key.pem')
+ self.ssl_context.load_cert_chain(str(crt_file), str(key_file))
+ self.status = None
+ self.port = None
+ self._task = self.loop.create_task(self.run())
+
+ def start(self, status):
+ self.status = status
+ self.port = self._find_free_port()
+ self._start.set()
+
+ def stop(self):
+ self._stop.set()
+
+ def terminate(self):
+ self._terminate.set()
+ self.stop()
+
+ @property
+ def exception(self):
+ try:
+ return self._task.exception()
+ except (asyncio.CancelledError, asyncio.InvalidStateError):
+ return None
+
+ async def run(self):
+ logger.debug('server: active')
+
+ async def hello(websocket, path):
+ await websocket.send('hello')
+
+ async def redirect(path, request_headers):
+ return self.status, {'Location': self.destination}, b""
+
+ try:
+ while not self._terminate.is_set():
+ await run_with_interrupt(self._start.wait(),
+ self._terminate,
+ loop=self.loop)
+ if self._terminate.is_set():
+ break
+ self._start.clear()
+ logger.debug('server: starting {}'.format(self.status))
+ try:
+ async with websockets.serve(ws_handler=hello,
+ process_request=redirect,
+ host='localhost',
+ port=self.port,
+ ssl=self.ssl_context,
+ loop=self.loop):
+ self.stopped.clear()
+ self.running.set()
+ logger.debug('server: started')
+ while not self._stop.is_set():
+ await run_with_interrupt(
+ asyncio.sleep(1, loop=self.loop),
+ self._stop,
+ loop=self.loop)
+ logger.debug('server: tick')
+ logger.debug('server: stopping')
+ except asyncio.CancelledError:
+ break
+ finally:
+ self.stopped.set()
+ self._stop.clear()
+ self.running.clear()
+ logger.debug('server: stopped')
+ logger.debug('server: terminating')
+ except asyncio.CancelledError:
+ pass
+ finally:
+ self._start.clear()
+ self._stop.clear()
+ self._terminate.clear()
+ self.stopped.set()
+ self.running.clear()
+ self.terminated.set()
+ logger.debug('server: terminated')
+
+ def _find_free_port(self):
+ with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as s:
+ s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+ s.bind(('', 0))
+ return s.getsockname()[1]
assert user is None
user = await controller.add_user(username)
assert user is not None
+ assert user.secret_key is not None
assert user.username == username
users = await controller.get_users()
assert any(u.username == username for u in users)
await new_connection.close()
+@base.bootstrapped
+@pytest.mark.asyncio
+async def test_reset_user_password(event_loop):
+ async with base.CleanController() as controller:
+ username = 'test{}'.format(uuid.uuid4())
+ user = await controller.add_user(username)
+ origin_secret_key = user.secret_key
+ await user.set_password('password')
+ await controller.reset_user_password(username)
+ user = await controller.get_user(username)
+ new_secret_key = user.secret_key
+ # Check secret key is different after the reset.
+ assert origin_secret_key != new_secret_key
+ # Check that we can't connect with the old password.
+ new_connection = None
+ try:
+ kwargs = controller.connection().connect_params()
+ kwargs['username'] = username
+ kwargs['password'] = 'password'
+ new_connection = await Connection.connect(**kwargs)
+ except JujuAPIError:
+ pass
+ finally:
+ # No connection with old password
+ assert new_connection is None
+
+
@base.bootstrapped
@pytest.mark.asyncio
async def test_grant_revoke(event_loop):
fresh = await controller.get_user(username) # fetch fresh copy
assert fresh.access == 'superuser'
await user.revoke()
- assert user.access is ''
+ assert user.access == ''
fresh = await controller.get_user(username) # fetch fresh copy
- assert fresh.access is ''
+ assert fresh.access == ''
@base.bootstrapped
with NamedTemporaryFile() as f:
f.write(b'testcontents')
f.flush()
- await machine.scp_to(f.name, 'testfile')
+ await machine.scp_to(f.name, 'testfile', scp_opts='-p')
with NamedTemporaryFile() as f:
- await machine.scp_from('testfile', f.name)
+ await machine.scp_from('testfile', f.name, scp_opts='-p')
assert f.read() == b'testcontents'
import mock
from concurrent.futures import ThreadPoolExecutor
from pathlib import Path
+import paramiko
from juju.client.client import ConfigValue, ApplicationFacade
from juju.model import Model, ModelObserver
@base.bootstrapped
@pytest.mark.asyncio
-async def test_deploy_local_bundle(event_loop):
+async def test_deploy_local_bundle_dir(event_loop):
tests_dir = Path(__file__).absolute().parent.parent
bundle_path = tests_dir / 'bundle'
mini_bundle_file_path = bundle_path / 'mini-bundle.yaml'
await model.deploy(str(bundle_path))
await model.deploy(str(mini_bundle_file_path))
- for app in ('wordpress', 'mysql', 'myapp'):
- assert app in model.applications
+ wordpress = model.applications.get('wordpress')
+ mysql = model.applications.get('mysql')
+ assert wordpress and mysql
+ await block_until(lambda: (len(wordpress.units) == 1 and
+ len(mysql.units) == 1),
+ timeout=60 * 4)
+
+
+@base.bootstrapped
+@pytest.mark.asyncio
+async def test_deploy_local_bundle_file(event_loop):
+ tests_dir = Path(__file__).absolute().parent.parent
+ bundle_path = tests_dir / 'bundle'
+ mini_bundle_file_path = bundle_path / 'mini-bundle.yaml'
+
+ async with base.CleanModel() as model:
+ await model.deploy(str(mini_bundle_file_path))
+
+ dummy_sink = model.applications.get('dummy-sink')
+ dummy_subordinate = model.applications.get('dummy-subordinate')
+ assert dummy_sink and dummy_subordinate
+ await block_until(lambda: (len(dummy_sink.units) == 1 and
+ len(dummy_subordinate.units) == 1),
+ timeout=60 * 4)
+
+
+@base.bootstrapped
+@pytest.mark.asyncio
+async def test_deploy_invalid_bundle(event_loop):
+ tests_dir = Path(__file__).absolute().parent.parent
+ bundle_path = tests_dir / 'bundle' / 'invalid.yaml'
+ async with base.CleanModel() as model:
+ with pytest.raises(JujuError):
+ await model.deploy(str(bundle_path))
+
+
+@base.bootstrapped
+@pytest.mark.asyncio
+async def test_deploy_local_charm(event_loop):
+ from pathlib import Path
+ tests_dir = Path(__file__).absolute().parent.parent
+ charm_path = tests_dir / 'charm'
+
+ async with base.CleanModel() as model:
+ await model.deploy(str(charm_path))
+ assert 'charm' in model.applications
@base.bootstrapped
"~/.local/share/juju/ssh/juju_id_rsa.pub"
)
- # Use the self-signed cert generated by lxc on first run
- crt = os.path.expanduser('~/snap/lxd/current/.config/lxc/client.crt')
- assert os.path.exists(crt)
-
- key = os.path.expanduser('~/snap/lxd/current/.config/lxc/client.key')
- assert os.path.exists(key)
-
- client = pylxd.Client(
- endpoint="https://127.0.0.1:8443",
- cert=(crt, key),
- verify=False,
- )
+ # connect using the local unix socket
+ client = pylxd.Client()
test_name = "test-{}-add-manual-machine-ssh".format(
uuid.uuid4().hex[-4:]
profile = client.profiles.create(
test_name,
- config={'user.user-data': '#cloud-config\nssh_authorized_keys:\n- {}'.format(public_key)},
+ config={'user.user-data': '#cloud-config\n'
+ 'ssh_authorized_keys:\n'
+ '- {}'.format(public_key)},
devices={
'root': {'path': '/', 'pool': 'default', 'type': 'disk'},
'eth0': {
return None
host = wait_for_network(container)
+ assert host, 'Failed to get address for machine'
# HACK: We need to give sshd a chance to bind to the interface,
# and pylxd's container.execute seems to be broken and fails and/or
# hangs trying to properly check if the service is up.
time.sleep(5)
- if host:
- # add a new manual machine
- machine1 = await model.add_machine(spec='ssh:{}@{}:{}'.format(
- "ubuntu",
- host['address'],
- private_key_path,
- ))
+ for attempt in range(1, 4):
+ try:
+ # add a new manual machine
+ machine1 = await model.add_machine(spec='ssh:{}@{}:{}'.format(
+ "ubuntu",
+ host['address'],
+ private_key_path,
+ ))
+ except paramiko.ssh_exception.NoValidConnectionsError:
+ if attempt == 3:
+ raise
+ # retry the ssh connection a few times if it fails
+ time.sleep(attempt * 5)
+ else:
+ break
assert len(model.machines) == 1
my_relation = await run_with_interrupt(model.add_relation(
'ubuntu',
'nrpe',
- ), timeout, event_loop)
+ ), timeout, loop=event_loop)
assert isinstance(my_relation, Relation)
with ThreadPoolExecutor(1) as executor:
f = executor.submit(
new_loop.run_until_complete,
- _deploy_in_loop(new_loop, model_name, model._connector.jujudata))
+ _deploy_in_loop(new_loop,
+ model_name,
+ model._connector.jujudata))
f.result()
await model._wait_for_new('application', 'ubuntu')
assert 'ubuntu' in model.applications
# ghost will go in to blocked (or error, for older
# charm revs) if the resource is missing
assert ghost.units[0].workload_status == 'active'
+ resources = await ghost.get_resources()
+ assert resources['ghost-stable'].revision >= 12
+
+
+@base.bootstrapped
+@pytest.mark.asyncio
+async def test_store_resources_bundle_revs(event_loop):
+ async with base.CleanModel() as model:
+ bundle = str(Path(__file__).parent / 'bundle/bundle-resource-rev.yaml')
+ await model.deploy(bundle)
+ assert 'ghost' in model.applications
+ ghost = model.applications['ghost']
+ terminal_statuses = ('active', 'error', 'blocked')
+ await model.block_until(
+ lambda: (
+ len(ghost.units) > 0 and
+ ghost.units[0].workload_status in terminal_statuses)
+ )
+ # ghost will go in to blocked (or error, for older
+ # charm revs) if the resource is missing
+ assert ghost.units[0].workload_status == 'active'
+ resources = await ghost.get_resources()
+ assert resources['ghost-stable'].revision == 11
@base.bootstrapped
assert result['extra-info'].source == 'model'
assert result['extra-info'].value == 'booyah'
+
@base.bootstrapped
@pytest.mark.asyncio
async def test_set_constraints(event_loop):
max_frame_size='max_frame_size')
@asynctest.patch('juju.client.client.CloudFacade')
- async def test_file_cred(self, mock_cf):
+ async def test_file_cred_v2(self, mock_cf):
with NamedTemporaryFile() as tempfile:
tempfile.close()
temppath = Path(tempfile.name)
c = Controller(jujudata=jujudata)
c._connector = base.AsyncMock()
up_creds = base.AsyncMock()
- mock_cf.from_connection().UpdateCredentials = up_creds
+ cloud_facade = mock_cf.from_connection()
+ cloud_facade.version = 2
+ cloud_facade.UpdateCredentials = up_creds
await c.add_credential(
name='name',
credential=cred,
new_cred = up_creds.call_args[0][0][0].credential
assert cred.attrs['file'] == tempfile.name
assert new_cred.attrs['file'] == 'cred-test'
+
+ @asynctest.patch('juju.client.client.CloudFacade')
+ async def test_file_cred_v3(self, mock_cf):
+ with NamedTemporaryFile() as tempfile:
+ tempfile.close()
+ temppath = Path(tempfile.name)
+ temppath.write_text('cred-test')
+ cred = client.CloudCredential(auth_type='jsonfile',
+ attrs={'file': tempfile.name})
+ jujudata = mock.MagicMock()
+ c = Controller(jujudata=jujudata)
+ c._connector = base.AsyncMock()
+ up_creds = base.AsyncMock()
+ cloud_facade = mock_cf.from_connection()
+ cloud_facade.version = 3
+ cloud_facade.UpdateCredentialsCheckModels = up_creds
+ await c.add_credential(
+ name='name',
+ credential=cred,
+ cloud='cloud',
+ owner='owner',
+ force=True,
+ )
+ assert up_creds.called
+ assert up_creds.call_args[1]['force']
+ new_cred = up_creds.call_args[1]['credentials'][0].credential
+ assert cred.attrs['file'] == tempfile.name
+ assert new_cred.attrs['file'] == 'cred-test'
--- /dev/null
+#
+# Test our placement helper
+#
+
+import unittest
+
+from juju.utils import generate_user_controller_access_token
+
+
+class TestRegistrationString(unittest.TestCase):
+ def test_generate_user_controller_access_token(self):
+ controller_name = "localhost-localhost"
+ endpoints = ["192.168.1.1:17070", "192.168.1.2:17070", "192.168.1.3:17070"]
+ username = "test-01234"
+ secret_key = "paNZrqOw51ONk1kTER6rkm4hdPcg5VgC/dzXYxtUZaM="
+ reg_string = generate_user_controller_access_token(username, endpoints, secret_key, controller_name)
+ assert reg_string == b"MH4TCnRlc3QtMDEyMzQwORMRMTkyLjE2OC4xLjE6MTcwNzATETE5Mi4xNjguMS4yOjE3MDcwExExOTIuMTY4" \
+ b"LjEuMzoxNzA3MAQgpaNZrqOw51ONk1kTER6rkm4hdPcg5VgC_dzXYxtUZaMTE2xvY2FsaG9zdC1sb2NhbGhvc3QA"
HOME
TEST_AGENTS
deps =
+ asynctest
+ ipdb
+ mock
pytest
pytest-asyncio
pytest-xdist
- mock
- asynctest
- ipdb
+ Twine
+ # use fork to pick up fix for https://github.com/aaugustin/websockets/pull/528
+ git+https://github.com/johnsca/websockets@bug/client-redirects#egg=websockets
[testenv:py3]
# default tox env excludes integration and serial tests
[testenv:lint]
envdir = {toxworkdir}/py3
commands =
- flake8 --ignore E501 {posargs} juju tests
-deps =
- flake8
-
-[testenv:lint]
-envdir = {toxworkdir}/py35
-commands =
- flake8 --ignore E501 {posargs} juju
+ flake8 --ignore E501,W504 {posargs} juju tests
deps =
flake8
[testenv:integration]
envdir = {toxworkdir}/py3
-commands = py.test --tb native -ra -v -s -n auto -k 'integration' -m 'not serial' {posargs}
+commands =
+ # These need to be installed in a specific order
+ pip install urllib3==1.22
+ pip install pylxd
+ py.test --tb native -ra -v -s -n auto -k 'integration' -m 'not serial' {posargs}
[testenv:serial]
# tests that can't be run in parallel