Source code for juju.client._client

# 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 ImageMetadataManagerFacade(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