# 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,
_client6,
_client7,
_client8,
_client9,
_client10,
_client11,
_client12,
_client17,
_client19,
_client20,
)
from juju.client._definitions import *
CLIENTS = {
"7": _client7,
"3": _client3,
"4": _client4,
"2": _client2,
"17": _client17,
"6": _client6,
"11": _client11,
"1": _client1,
"10": _client10,
"9": _client9,
"5": _client5,
"19": _client19,
"20": _client20,
"8": _client8,
"12": _client12,
}
[docs]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(f"No supported version for facade: {name}")
[docs]class TypeFactory:
[docs] @classmethod
def from_connection(cls, connection):
"""Given a connected Connection object, return an initialized and
connected instance of an API Interface matching the name of
this class.
@param connection: initialized Connection object.
"""
facade_name = cls.__name__
if not facade_name.endswith("Facade"):
raise TypeError(f"Unexpected class name: {facade_name}")
facade_name = facade_name[: -len("Facade")]
version = connection.facades.get(facade_name)
if version is None:
raise Exception(f"No facade {facade_name} in facades {connection.facades}")
c = lookup_facade(cls.__name__, version)
c = c()
c.connect(connection)
return c
[docs] @classmethod
def best_facade_version(cls, connection):
"""Returns the best facade version for a given facade. This will help with
trying to provide different functionality for different facade versions.
@param connection: initialized Connection object.
"""
facade_name = cls.__name__
if not facade_name.endswith("Facade"):
raise TypeError(f"Unexpected class name: {facade_name}")
facade_name = facade_name[: -len("Facade")]
return connection.facades.get(facade_name)
[docs]class ActionFacade(TypeFactory):
pass
[docs]class AdminFacade(TypeFactory):
pass
[docs]class AllModelWatcherFacade(TypeFactory):
pass
[docs]class AllWatcherFacade(TypeFactory):
pass
[docs]class AnnotationsFacade(TypeFactory):
pass
[docs]class ApplicationFacade(TypeFactory):
pass
[docs]class ApplicationOffersFacade(TypeFactory):
pass
[docs]class BackupsFacade(TypeFactory):
pass
[docs]class BlockFacade(TypeFactory):
pass
[docs]class BundleFacade(TypeFactory):
pass
[docs]class CharmsFacade(TypeFactory):
pass
[docs]class ClientFacade(TypeFactory):
pass
[docs]class CloudFacade(TypeFactory):
pass
[docs]class ControllerFacade(TypeFactory):
pass
[docs]class CredentialManagerFacade(TypeFactory):
pass
[docs]class FacadeVersions(TypeFactory):
pass
[docs]class FirewallRulesFacade(TypeFactory):
pass
[docs]class HighAvailabilityFacade(TypeFactory):
pass
[docs]class KeyManagerFacade(TypeFactory):
pass
[docs]class MachineManagerFacade(TypeFactory):
pass
[docs]class MetricsDebugFacade(TypeFactory):
pass
[docs]class ModelConfigFacade(TypeFactory):
pass
[docs]class ModelGenerationFacade(TypeFactory):
pass
[docs]class ModelManagerFacade(TypeFactory):
pass
[docs]class ModelUpgraderFacade(TypeFactory):
pass
[docs]class PayloadsFacade(TypeFactory):
pass
[docs]class PingerFacade(TypeFactory):
pass
[docs]class ResourcesFacade(TypeFactory):
pass
[docs]class SSHClientFacade(TypeFactory):
pass
[docs]class SecretBackendsFacade(TypeFactory):
pass
[docs]class SecretsFacade(TypeFactory):
pass
[docs]class SpacesFacade(TypeFactory):
pass
[docs]class StorageFacade(TypeFactory):
pass
[docs]class SubnetsFacade(TypeFactory):
pass
[docs]class UserManagerFacade(TypeFactory):
pass