magma-orc8r-libs

magma-orc8r-libs

  • Canonical Telco
Channel Revision Published Runs on
latest/edge 30 27 Apr 2023
Ubuntu 22.04 Ubuntu 20.04
latest/edge 23 01 Feb 2023
Ubuntu 22.04 Ubuntu 20.04
juju deploy magma-orc8r-libs --channel edge
Show information

Platform:

charms.magma_orc8r_libs.v0.magma_orc8r_libs

Orc8rBase Library.

This library is designed to enable developers to easily create new charms for Magma orc8r. This library contains all the logic necessary to wait for necessary relations and be deployed.

When initialised, this library binds a handler to the parent charm's pebble_ready event. This will ensure that the service is configured when this event is triggered.

The constructor simply takes the following:

  • Reference to the parent charm (CharmBase)
  • The service name (str)
  • The startup command (str)
  • Whether a database relation is needed (bool)
  • The pebble Ready event method (ops.CharmEvent)
Getting Started

To get started using the library, you just need to fetch the library using charmcraft. Note that you also need to add ops-lib-pgsql to your charm's requirements.txt.

cd some-charm
charmcraft fetch-lib charms.magma_orc8r_libs.v0.orc8r_base
echo <<-EOF >> requirements.txt
ops-lib-pgsql
EOF

Then, to initialise the library: For ClusterIP services:

from ops.charm import CharmBase
from ops.main import main

from charms.observability_libs.v0.kubernetes_service_patch import KubernetesServicePatch
from charms.orc8r_libs.v0.orc8r_base import Orc8rBase


class MagmaOrc8rDirectorydCharm(CharmBase):

    def __init__(self, *args):
        super().__init__(*args)
        self._service_patcher = KubernetesServicePatch(self, [("grpc", 9180, 9106)])
        startup_command = "/usr/bin/envdir /var/opt/magma/envdir /var/opt/magma/bin/directoryd -logtostderr=true -v=0"
        self._orc8r_base = Orc8rBase(
            self,
            service_name="magma-orc8r-directoryd",
            startup_command=startup_command,
            database_relation_needed=True,
            pebble_ready_event=self.on.magma_orc8r_directoryd_pebble_ready
        )

class Orc8rBase

Methods

Orc8rBase. __init__( self , charm: CharmBase , service_name: str , startup_command: str , pebble_ready_event: CharmEvents , database_relation_needed: bool , additional_environment_variables: dict )