---
title: Charmhub | Deploy SD-Core 5G GNBSIM K8s using Charmhub - The Open Operator
  Collection
description: Deploy the latest version of SD-Core 5G GNBSIM K8s as a Kubernetes Operator
  on any cloud.
url: https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity
---

# SD-Core 5G GNBSIM K8s

[Canonical Telco](https://charmhub.io/publisher/telco-charmers "View all packages from Canonical Telco")

* [Canonical Telco](https://charmhub.io/publisher/telco-charmers "View all packages from Canonical Telco")

Platform:

1.5/stable 663

```
juju deploy sdcore-gnbsim-k8s --channel 1.5/stable
```

[Learn to deploy on juju >](https://juju.is/docs/juju/manage-applications)

[Toggle side navigation](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#drawer)

## charms.sdcore\_gnbsim\_k8s.v0.fiveg\_gnb\_identity

* [*Docstrings*Docstrings](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity)
  [*Code*Source code](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity/source-code)
* + Download

    Fetch library

    ```
    charmcraft fetch-lib charms.sdcore_gnbsim_k8s.v0.fiveg_gnb_identity
    ```

    [Download fiveg\_gnb\_identity.py](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity/download)
  + *Last updated* 07 Aug 2024
  + *Revision* Library version 0.4

Library for the `fiveg_gnb_identity` relation.

This library contains the Requires and Provides classes for handling the `fiveg_gnb_identity`
interface.

The purpose of this library is to provide a way for gNodeB's to share their identity with the
charms which require this information.

To get started using the library, you need to fetch the library using `charmcraft`.

```
cd some-charm
charmcraft fetch-lib charms.sdcore_gnbsim_k8s.v0.fiveg_gnb_identity
```

Add the following libraries to the charm's `requirements.txt` file:

* pydantic
* pytest-interface-tester

Charms providing the `fiveg_gnb_identity` relation should use `GnbIdentityProvides`.
Typical usage of this class would look something like:

```
```python
...
from charms.sdcore_gnbsim_k8s.v0.fiveg_gnb_identity import GnbIdentityProvides
...

class SomeProviderCharm(CharmBase):

    def __init__(self, *args):
        ...
        self.gnb_identity_provider = GnbIdentityProvides(
            charm=self,
            relation_name="fiveg_gnb_identity"
            )
        ...
        self.framework.observe(
            self.gnb_identity_provider.on.fiveg_gnb_identity_request,
            self._on_fiveg_gnb_identity_request
        )

    def _on_fiveg_gnb_identity_request(self, event):
        ...
        self.gnb_identity_provider.publish_gnb_identity_information(
            relation_id=event.relation_id,
            gnb_name=name,
            tac=tac,
        )
```

And a corresponding section in charm's `metadata.yaml`:
```
provides:
    fiveg_gnb_identity:  # Relation name
        interface: fiveg_gnb_identity  # Relation interface
```
```

Charms that require the `fiveg_gnb_identity` relation should use `GnbIdentityRequires`.
Typical usage of this class would look something like:

```
```python
...
from charms.sdcore_gnbsim_k8s.v0.fiveg_gnb_identity import GnbIdentityRequires
...

class SomeRequirerCharm(CharmBase):

    def __init__(self, *args):
        ...
        self.fiveg_gnb_identity = GnbIdentityRequires(
            charm=self,
            relation_name="fiveg_gnb_identity"
        )
        ...
        self.framework.observe(self.fiveg_gnb_identity.on.fiveg_gnb_identity_available,
            self._on_fiveg_gnb_identity_available)

    def _on_fiveg_gnb_identity_available(self, event):
        gnb_name = event.gnb_name,
        tac = event.tac,
        # Do something with the gNB's name and TAC.
```

And a corresponding section in charm's `metadata.yaml`:
```
requires:
    fiveg_gnb_identity:  # Relation name
        interface: fiveg_gnb_identity  # Relation interface
```
```

---

Index

* [class FivegGnbIdentityProviderAppData](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#fiveggnbidentityproviderappdata)
* [class ProviderSchema](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#providerschema)
* [def data\_matches\_provider\_schema(
  data
  )](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#data_matches_provider_schema)
* [class FivegGnbIdentityRequestEvent](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#fiveggnbidentityrequestevent)
* + [def \_\_init\_\_(
    self,
    handle,
    relation\_id)](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#fiveggnbidentityrequestevent-__init__)
* + [def snapshot(
    self)](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#fiveggnbidentityrequestevent-snapshot)
* + [def restore(
    self,
    snapshot)](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#fiveggnbidentityrequestevent-restore)
* [class GnbIdentityProviderCharmEvents](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#gnbidentityprovidercharmevents)
* [class GnbIdentityProvides](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#gnbidentityprovides)
* + [def \_\_init\_\_(
    self,
    charm,
    relation\_name)](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#gnbidentityprovides-__init__)
* + [def publish\_gnb\_identity\_information(
    self,
    relation\_id,
    gnb\_name,
    tac)](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#gnbidentityprovides-publish_gnb_identity_information)
* [class GnbIdentityAvailableEvent](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#gnbidentityavailableevent)
* + [def \_\_init\_\_(
    self,
    handle,
    gnb\_name,
    tac)](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#gnbidentityavailableevent-__init__)
* + [def snapshot(
    self)](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#gnbidentityavailableevent-snapshot)
* + [def restore(
    self,
    snapshot)](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#gnbidentityavailableevent-restore)
* [class GnbIdentityRequirerCharmEvents](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#gnbidentityrequirercharmevents)
* [class GnbIdentityRequires](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#gnbidentityrequires)
* + [def \_\_init\_\_(
    self,
    charm,
    relation\_name)](https://charmhub.io/sdcore-gnbsim-k8s/libraries/fiveg_gnb_identity#gnbidentityrequires-__init__)

#### class FivegGnbIdentityProviderAppData

Description

Provider app data for fiveg\_gnb\_identity. None

#### class ProviderSchema

Description

Provider schema for fiveg\_gnb\_identity. None

#### def data\_matches\_provider\_schema(data: dict)

Return whether data matches provider schema.

Arguments

data
(dict)

Data to be validated.

Returns

True if data matches provider schema, False otherwise.

#### class FivegGnbIdentityRequestEvent

Description

Dataclass for the `fiveg_gnb_identity` request event. None

Methods

FivegGnbIdentityRequestEvent.
\_\_init\_\_(

*self*

,
handle: Handle

,
relation\_id: int
)

Set relation id.

Arguments

handle
(Handle)

Juju framework handle.

relation\_id

ID of the relation.

FivegGnbIdentityRequestEvent.
snapshot(

*self*
)

Return event data.

Returns

(dict)

contains the relation ID.

FivegGnbIdentityRequestEvent.
restore(

*self*

,
snapshot: dict
)

Restore event data.

Arguments

snapshot
(dict)

contains the relation ID.

#### class GnbIdentityProviderCharmEvents

Description

Custom events for the GnbIdentityProvider. None

#### class GnbIdentityProvides

Description

Class to be instantiated by provider of the `fiveg_gnb_identity`. None

Methods

GnbIdentityProvides.
\_\_init\_\_(

*self*

,
charm: CharmBase

,
relation\_name: str
)

Observe relation joined event.

Arguments

charm

Juju charm

relation\_name
(str)

Relation name

GnbIdentityProvides.
publish\_gnb\_identity\_information(

*self*

,
relation\_id: int

,
gnb\_name: str

,
tac: int
)

Set gNodeB's name and TAC in the relation data.

Arguments

relation\_id
(str)

Relation ID

gnb\_name
(str)

name of the gNodeB.

tac
(int)

Tracking Area Code.

#### class GnbIdentityAvailableEvent

Description

Dataclass for the `fiveg_gnb_identity` available event. None

Methods

GnbIdentityAvailableEvent.
\_\_init\_\_(

*self*

,
handle: Handle

,
gnb\_name: str

,
tac: str
)

Description

Set gNodeB's name and TAC. None

GnbIdentityAvailableEvent.
snapshot(

*self*
)

Description

Return event data. None

GnbIdentityAvailableEvent.
restore(

*self*

,
snapshot: dict
)

Restore event data.

Arguments

snapshot
(dict)

contains information to be restored.

#### class GnbIdentityRequirerCharmEvents

Description

Custom events for the GnbIdentityRequirer. None

#### class GnbIdentityRequires

Description

Class to be instantiated by requirer of the `fiveg_gnb_identity`. None

Methods

GnbIdentityRequires.
\_\_init\_\_(

*self*

,
charm: CharmBase

,
relation\_name: str
)

Observes relation joined and relation changed events.

Arguments

charm

Juju charm

relation\_name
(str)

Relation name
