def __init__(self, *args): log.debug('Initializing charm.') super().__init__(*args) # -- get image information self.image = OCIImageResource(self, 'grafana-image') # -- standard hooks self.framework.observe(self.on.config_changed, self.on_config_changed) self.framework.observe(self.on.update_status, self.on_update_status) self.framework.observe(self.on.stop, self._on_stop) # -- grafana-source relation observations self.framework.observe(self.on['grafana-source'].relation_changed, self.on_grafana_source_changed) self.framework.observe(self.on['grafana-source'].relation_broken, self.on_grafana_source_broken) # -- grafana (peer) relation observations self.framework.observe(self.on['grafana'].relation_changed, self.on_peer_changed) # self.framework.observe(self.on['grafana'].relation_departed, # self.on_peer_departed) # -- database relation observations self.framework.observe(self.on['database'].relation_changed, self.on_database_changed) self.framework.observe(self.on['database'].relation_broken, self.on_database_broken) # -- initialize states -- self.datastore.set_default(sources=dict()) # available data sources self.datastore.set_default(source_names=set()) # unique source names self.datastore.set_default(sources_to_delete=set()) self.datastore.set_default(database=dict()) # db configuration
def __init__(self, *args): super().__init__(*args) self.log = logging.getLogger() if not self.model.unit.is_leader(): self.log.info("Not a leader, skipping set_pod_spec") self.model.unit.status = ActiveStatus() return self.image = OCIImageResource(self, "oci-image") try: self.interfaces = get_interfaces(self) except NoVersionsListed as err: self.model.unit.status = WaitingStatus(str(err)) return except NoCompatibleVersions as err: self.model.unit.status = BlockedStatus(str(err)) return else: self.model.unit.status = ActiveStatus() self.framework.observe(self.on.install, self.set_pod_spec) self.framework.observe(self.on.upgrade_charm, self.set_pod_spec) self.framework.observe(self.on.config_changed, self.set_pod_spec) self.framework.observe(self.on["mysql"].relation_changed, self.set_pod_spec) self.framework.observe(self.on["grpc"].relation_changed, self.send_info)
def __init__(self, framework): super().__init__(framework) self._stored.set_default(**self.gen_certs()) self.image = OCIImageResource(self, "oci-image") self.prometheus_provider = MetricsEndpointProvider( charm=self, jobs=[{ "job_name": "katib_controller_metrics", "static_configs": [{ "targets": [f"*:{self.config['metrics-port']}"] }], }], ) self.dashboard_provider = GrafanaDashboardProvider(self) for event in [ self.on.config_changed, self.on.install, self.on.leader_elected, self.on.upgrade_charm, ]: self.framework.observe(event, self.set_pod_spec)
def __init__(self, *args): super().__init__(*args) self.image = OCIImageResource(self, 'sriov-network-device-plugin-image') self.framework.observe(self.on.install, self.set_pod_spec) self.framework.observe(self.on.upgrade_charm, self.set_pod_spec) self.framework.observe(self.on.config_changed, self.set_pod_spec)
def __init__(self, *args): super().__init__(*args) self.framework.observe(self.on.config_changed, self._on_config_changed) self.framework.observe(self.on.stop, self._on_stop) self.framework.observe(self.on.install, self._on_install) self._stored.set_default(things=[]) self.image = OCIImageResource(self, "gatekeeper-image")
def __init__(self, *args): super().__init__(*args) self.log = logging.getLogger() self.image = OCIImageResource(self, "oci-image") self.prometheus_provider = MetricsEndpointProvider( charm=self, relation_name="metrics-endpoint", jobs=[ { "metrics_path": METRICS_PATH, "static_configs": [{"targets": ["*:{}".format(self.config["http-port"])]}], } ], ) self.dashboard_provider = GrafanaDashboardProvider(self) change_events = [ self.on.install, self.on.upgrade_charm, self.on.config_changed, self.on["mysql"].relation_changed, self.on["object-storage"].relation_changed, self.on["kfp-viz"].relation_changed, self.on["kfp-api"].relation_changed, ] for event in change_events: self.framework.observe(event, self._main)
def __init__(self, *args): """SMF charm constructor.""" super().__init__(*args) self.state.set_default(pod_spec=None) self.image = OCIImageResource(self, "image") # Registering regular events self.framework.observe(self.on.config_changed, self.configure_pod) # Registering required relation changed events self.framework.observe(self.on.upf_relation_changed, self._on_upf_relation_changed) # Registering required relation broken events self.framework.observe(self.on.upf_relation_broken, self._on_upf_relation_broken) # Registering required relation changed events self.framework.observe(self.on.nrf_relation_changed, self._on_nrf_relation_changed) # Registering required relation broken events self.framework.observe(self.on.nrf_relation_broken, self._on_nrf_relation_broken) # -- initialize states -- self.state.set_default(upf_host=None, nrf_host=None)
def __init__(self, *args): super().__init__(*args) self.state.set_default(started=False) self.state.set_default(pod_spec=None) self.port = MONGODB_PORT self.image = OCIImageResource(self, "mongodb-image") # Register all of the events we want to observe self.framework.observe(self.on.install, self.configure_pod) self.framework.observe(self.on.config_changed, self.configure_pod) self.framework.observe(self.on.upgrade_charm, self.configure_pod) self.framework.observe(self.on.start, self.on_start) self.framework.observe(self.on.update_status, self.on_update_status) # Peer relation self.cluster = MongoDBCluster(self, "cluster", self.port) self.framework.observe(self.on.cluster_relation_changed, self.reconfigure) self.framework.observe(self.on.cluster_relation_departed, self.reconfigure) # Cluster Events self.framework.observe(self.on.mongodb_started, self.on_mongodb_started) logger.debug("MongoDBCharm initialized!")
def __init__(self, *args): super().__init__(*args) self.state.set_default(pod_spec=None) self.state.set_default(mongodb_initialized=False) self.state.set_default(replica_set_hosts=None) self.port = MONGODB_PORT self.image = OCIImageResource(self, "mongodb-image") # Register all of the events we want to observe self.framework.observe(self.on.config_changed, self.configure_pod) self.framework.observe(self.on.upgrade_charm, self.configure_pod) self.framework.observe(self.on.start, self.on_start) self.framework.observe(self.on.stop, self.on_stop) self.framework.observe(self.on.update_status, self.on_update_status) self.framework.observe(self.on["database"].relation_changed, self.on_database_relation_changed) self.framework.observe(self.on[PEER].relation_changed, self.reconfigure) self.framework.observe(self.on[PEER].relation_departed, self.reconfigure) logger.debug("MongoDBCharm initialized!")
def __init__(self, *args): super().__init__(*args) if not self.unit.is_leader(): # We can't do anything useful when not the leader, so do nothing. self.model.unit.status = WaitingStatus("Waiting for leadership") return self.log = logging.getLogger(__name__) self.image = OCIImageResource(self, "oci-image") try: self.interfaces = get_interfaces(self) except NoVersionsListed as err: self.model.unit.status = WaitingStatus(str(err)) return except NoCompatibleVersions as err: self.model.unit.status = BlockedStatus(str(err)) return else: self.model.unit.status = ActiveStatus() for event in [ self.on.install, self.on.upgrade_charm, self.on.config_changed, ]: self.framework.observe(event, self.main) self.framework.observe(self.on["ingress"].relation_changed, self.configure_mesh)
def __init__( self, *args, oci_image="image", debug_mode_config_key=None, debug_pubkey_config_key=None, vscode_workspace: Dict = {}, mysql_uri: bool = False, ) -> NoReturn: """ CharmedOsmBase Charm constructor :params: oci_image: Resource name for main OCI image :params: debug_mode_config_key: Key in charm config for enabling debugging mode :params: debug_pubkey_config_key: Key in charm config for setting debugging public ssh key :params: vscode_workspace: VSCode workspace """ super().__init__(*args) # Internal state initialization self.state.set_default(pod_spec=None) self.image = OCIImageResource(self, oci_image) self.debugging_supported = debug_mode_config_key and debug_pubkey_config_key self.debug_mode_config_key = debug_mode_config_key self.debug_pubkey_config_key = debug_pubkey_config_key self.vscode_workspace = vscode_workspace self.mysql_uri = mysql_uri # Registering regular events self.framework.observe(self.on.config_changed, self.configure_pod) self.framework.observe(self.on.leader_elected, self.configure_pod)
def test_when_complete_image_info_should_match_given_resource( self, read_text, path_exists, charm): # Given resource = OCIImageResource(charm, "test-image") # Monkeypatch fetch as we can't mock the parent Object def patched_fetch(name: str) -> Path: return Path("/a/b/c/d/e/f") resource.model.resources.fetch = patched_fetch path_exists.return_value = True image = "image:6.0" user = "******" pwd = "pwd" read_text.return_value = """ "registrypath": {} "username": {} "password": {} """.format(image, user, pwd) # When image_info = resource.fetch() # Then self.assertDictEqual(image_info, { "imagePath": image, "password": pwd, "username": user })
def __init__(self, framework): super().__init__(framework) if not self.model.unit.is_leader(): logger.info("Not a leader, skipping any work") self.model.unit.status = ActiveStatus() return try: self.interfaces = get_interfaces(self) except NoVersionsListed as err: self.model.unit.status = WaitingStatus(str(err)) return except NoCompatibleVersions as err: self.model.unit.status = BlockedStatus(str(err)) return else: self.model.unit.status = ActiveStatus() self.image = OCIImageResource(self, "oci-image") self.framework.observe(self.on.install, self.set_pod_spec) self.framework.observe(self.on.upgrade_charm, self.set_pod_spec) self.framework.observe( self.on["ingress"].relation_changed, self.configure_ingress, )
def __init__(self, framework): super().__init__(framework) self._stored.set_default(**self.gen_certs()) self.image = OCIImageResource(self, "oci-image") self.framework.observe(self.on.install, self.set_pod_spec) self.framework.observe(self.on.upgrade_charm, self.set_pod_spec)
def __init__(self, *args): super().__init__(*args) self.minio_interface = MinioProvide(self, "minio") self.image = OCIImageResource(self, "oci-image") self.framework.observe(self.on.install, self.set_pod_spec) self.framework.observe(self.on.upgrade_charm, self.set_pod_spec) self.framework.observe(self.on.config_changed, self.set_pod_spec) self.framework.observe(self.on.minio_relation_joined, self.send_info)
def __init__(self, framework, key): super().__init__(framework, key) # get our mattermost_image from juju # ie: juju deploy . --resource mattermost_image=mattermost:latest ) self.mattermost_image = OCIImageResource(self, 'mattermost_image') self.framework.observe(self.on.start, self.configure_pod) self.framework.observe(self.on.config_changed, self.configure_pod) self.framework.observe(self.on.upgrade_charm, self.configure_pod)
def __init__(self, framework, key): super().__init__(framework, key) self.multus_image = OCIImageResource(self, 'multus-image') self.nadm_image = OCIImageResource(self, 'net-attach-def-manager-image') self.framework.observe(self.on.install, self.set_pod_spec) self.framework.observe(self.on.upgrade_charm, self.set_pod_spec) self.framework.observe(self.on.config_changed, self.set_pod_spec)
def __init__(self, framework): super().__init__(framework) self.image = OCIImageResource(self, "oci-image") self.framework.observe(self.on.install, self.set_pod_spec) self.framework.observe(self.on.upgrade_charm, self.set_pod_spec) self.framework.observe( self.on.pod_defaults_relation_changed, self.set_pod_spec, )
def __init__(self, framework): super().__init__(framework) self.image = OCIImageResource(self, "oci-image") self.framework.observe(self.on.install, self.set_pod_spec) self.framework.observe(self.on.config_changed, self.set_pod_spec) self.framework.observe(self.on.upgrade_charm, self.set_pod_spec) self.framework.observe(self.on["mysql"].relation_joined, self.set_pod_spec) self.framework.observe(self.on["mysql"].relation_changed, self.set_pod_spec)
def __init__(self, *args): super().__init__(*args) self._stored.set_default(mysql_setup={}) self.image = OCIImageResource(self, "mysql-image") self.framework.observe(self.on.config_changed, self._on_config_changed) self.framework.observe(self.on[PEER].relation_joined, self._on_peer_relation_joined) self.framework.observe(self.on[PEER].relation_changed, self._on_peer_relation_changed)
def __init__(self, *args): super().__init__(*args) self.log = logging.getLogger() self.image = OCIImageResource(self, "oci-image") self.framework.observe(self.on.install, self._main) self.framework.observe(self.on.upgrade_charm, self._main) self.framework.observe(self.on.config_changed, self._main)
def __init__(self, framework): super().__init__(framework) if not self.model.unit.is_leader(): logger.info("Not a leader, skipping any work") self.model.unit.status = ActiveStatus() return self.image = OCIImageResource(self, "oci-image") self.framework.observe(self.on.install, self.set_pod_spec) self.framework.observe(self.on.upgrade_charm, self.set_pod_spec)
def __init__(self, *args, oci_image="image") -> NoReturn: """CharmedOsmBase Charm constructor.""" super().__init__(*args) # Internal state initialization self.state.set_default(pod_spec=None) self.image = OCIImageResource(self, oci_image) # Registering regular events self.framework.observe(self.on.config_changed, self.configure_pod) self.framework.observe(self.on.leader_elected, self.configure_pod)
def __init__(self, *args): super().__init__(*args) if not self.model.unit.is_leader(): log.info("Not a leader, skipping set_pod_spec") self.model.unit.status = ActiveStatus() return self._stored.set_default(**self.gen_certs()) self.image = OCIImageResource(self, "oci-image") self.framework.observe(self.on.install, self.set_pod_spec) self.framework.observe(self.on.upgrade_charm, self.set_pod_spec) self.framework.observe(self.on.config_changed, self.set_pod_spec)
def __init__(self, *args): super().__init__(*args) if not self.unit.is_leader(): # We can't do anything useful when not the leader, so do nothing. self.model.unit.status = WaitingStatus('Waiting for leadership') return self.log = logging.getLogger(__name__) self.rancher_image = OCIImageResource(self, 'rancher-image') for event in [ self.on.install, self.on.leader_elected, self.on.upgrade_charm, self.on.config_changed ]: self.framework.observe(event, self.main)
def __init__(self, *args): super().__init__(*args) self.log = logging.getLogger() self.image = OCIImageResource(self, "oci-image") self.framework.observe(self.on.install, self._set_pod_spec) self.framework.observe(self.on.upgrade_charm, self._set_pod_spec) self.framework.observe(self.on.config_changed, self._set_pod_spec) self.framework.observe(self.on["object-storage"].relation_changed, self._set_pod_spec) self.framework.observe(self.on.leader_elected, self._set_pod_spec)
def __init__(self, *args): "Natapp charm constructor." "" super().__init__(*args) self.state.set_default(pod_spec=None) self.image = OCIImageResource(self, "image") # Registering regular events self.framework.observe(self.on.config_changed, self.configure_pod) # Registering provided relation events self.framework.observe(self.on.natapp_relation_changed, self._publish_natapp_info)
def __init__(self, *args): super().__init__(*args) logger.debug('Initializing charm') self.redis = RedisClient(host=self.model.app.name, port=DEFAULT_PORT) self.redis_provides = RedisProvides(self, port=DEFAULT_PORT) self.image = OCIImageResource(self, "redis-image") self.framework.observe(self.on.start, self.on_start) self.framework.observe(self.on.stop, self.on_stop) self.framework.observe(self.on.config_changed, self.configure_pod) self.framework.observe(self.on.upgrade_charm, self.configure_pod) self.framework.observe(self.on.update_status, self.update_status)
def __init__(self, *args): super().__init__(*args) self.mongo_consumer = MongoConsumer(self, 'database', self.consumes) self.image = OCIImageResource(self, "busybox-image") self.framework.observe(self.on.config_changed, self.on_config_changed) self.framework.observe(self.mongo_consumer.on.available, self.on_db_available) self.framework.observe(self.mongo_consumer.on.invalid, self.on_provider_invalid) self.framework.observe(self.mongo_consumer.on.broken, self.on_provider_broken) self._stored.set_default(events=[]) self._stored.set_default(num_dbs=2) self._stored.set_default(requested_dbs=0)
def __init__(self, *args): super().__init__(*args) self.log = logging.getLogger(__name__) self.image = OCIImageResource(self, "oci-image") for event in [ self.on.install, self.on.leader_elected, self.on.upgrade_charm, self.on.config_changed, self.on["kubeflow-profiles"].relation_changed, self.on["ingress"].relation_changed, ]: self.framework.observe(event, self.main)