コード例 #1
0
    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
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
 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)
コード例 #5
0
 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")
コード例 #6
0
ファイル: charm.py プロジェクト: canonical/kfp-operators
    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)
コード例 #7
0
ファイル: charm.py プロジェクト: charmed-osm/5g-core
    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)
コード例 #8
0
ファイル: charm.py プロジェクト: davigar15/mongodb-operator
    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!")
コード例 #9
0
    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!")
コード例 #10
0
    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)
コード例 #11
0
    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)
コード例 #12
0
    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
        })
コード例 #13
0
ファイル: charm.py プロジェクト: vishalbelsare/katib
    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,
        )
コード例 #14
0
    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)
コード例 #15
0
 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)
コード例 #16
0
 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)
コード例 #17
0
ファイル: charm.py プロジェクト: evilnick/charm-multus
 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)
コード例 #18
0
 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,
     )
コード例 #19
0
ファイル: charm.py プロジェクト: andreyvelich/katib
    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)
コード例 #20
0
ファイル: charm.py プロジェクト: isabella232/mysql-operator
 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)
コード例 #21
0
    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)
コード例 #22
0
    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)
コード例 #23
0
    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)
コード例 #24
0
ファイル: charm.py プロジェクト: canonical/spark-operator
    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)
コード例 #25
0
 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)
コード例 #26
0
    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)
コード例 #27
0
    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)
コード例 #28
0
    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)
コード例 #29
0
 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)
コード例 #30
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)