---
title: Charmhub | Deploy Designate Bind K8S using Charmhub - The Open Operator Collection
description: Deploy the latest version of Designate Bind K8S as a Kubernetes Operator
  on any cloud.
url: https://charmhub.io/designate-bind-k8s/libraries/bind_rndc
---

# Designate Bind K8S

[OpenStack Charmers](https://charmhub.io/publisher/openstack-charmers "View all packages from OpenStack Charmers")

* [OpenStack Charmers](https://charmhub.io/publisher/openstack-charmers "View all packages from OpenStack Charmers")

Platform:

9/stable d17d37fa

```
juju deploy designate-bind-k8s --channel 9/stable
```

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

[Toggle side navigation](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#drawer)

## charms.designate\_bind\_k8s.v0.bind\_rndc

* [*Docstrings*Docstrings](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc)
  [*Code*Source code](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc/source-code)
* + Download

    Fetch library

    ```
    charmcraft fetch-lib charms.designate_bind_k8s.v0.bind_rndc
    ```

    [Download bind\_rndc.py](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc/download)
  + *Last updated* 03 Oct 2023
  + *Revision* Library version 0.1

BindRndc Provides and Requires module.

This library contains the Requires and Provides classes for handling
the bind\_rndc interface.
Import `BindRndcRequires` in your charm, with the charm object and the
relation name:
- self
- "dns-backend"
Two events are also available to respond to:
- bind\_rndc\_ready
- goneaway
A basic example showing the usage of this relation follows:

```
from charms.designate_bind_k8s.v0.bind_rndc import (
    BindRndcRequires
)
class BindRndcClientCharm(CharmBase):
    def __init__(self, *args):
        super().__init__(*args)
        # BindRndc Requires
        self.bind_rndc = BindRndcRequires(
            self, "dns-backend"
        )
        self.framework.observe(
            self.bind_rndc.on.bind_rndc_ready,
            self._on_bind_rndc_ready
        )
        self.framework.observe(
            self.bind_rndc.on.goneaway,
            self._on_bind_rndc_goneaway
        )
    def _on_bind_rndc_connected(self, event):
        '''React to the Bind Rndc Connected event.
        This event happens when BindRndc relation is added to the
        model.
        '''
        # Request the rndc key from the Bind Rndc relation.
        self.bind_rndc.request_rndc_key("generated nonce")
    def _on_bind_rndc_ready(self, event):
        '''React to the Bind Rndc Ready event.
        This event happens when BindRndc relation is added to the
        model, relation is ready and/or relation data is changed.
        '''
        # Do something with the configuration provided by relation.
        pass
    def _on_bind_rndc_goneaway(self, event):
        '''React to the BindRndc goneaway event.
        This event happens when BindRndc relation is removed.
        '''
        # BindRndc Relation has goneaway.
        pass
```

---

Index

* [class BindRndcConnectedEvent](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcconnectedevent)
* + [def \_\_init\_\_(
    self,
    handle,
    relation\_id,
    relation\_name)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcconnectedevent-__init__)
* + [def snapshot(
    self)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcconnectedevent-snapshot)
* + [def restore(
    self,
    snapshot)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcconnectedevent-restore)
* [class BindRndcReadyEvent](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcreadyevent)
* + [def \_\_init\_\_(
    self,
    handle,
    relation\_id,
    relation\_name)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcreadyevent-__init__)
* + [def snapshot(
    self)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcreadyevent-snapshot)
* + [def restore(
    self,
    snapshot)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcreadyevent-restore)
* [class BindRndcGoneAwayEvent](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcgoneawayevent)
* [class BindRndcRequirerEvents](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcrequirerevents)
* [class BindRndcRequires](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcrequires)
* + [def \_\_init\_\_(
    self,
    charm,
    relation\_name)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcrequires-__init__)
* + [def host(
    self,
    relation)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcrequires-host)
* + [def nonce(
    self,
    relation)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcrequires-nonce)
* + [def get\_rndc\_key(
    self,
    relation)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcrequires-get_rndc_key)
* + [def request\_rndc\_key(
    self,
    relation,
    nonce)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcrequires-request_rndc_key)
* [class NewBindClientAttachedEvent](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#newbindclientattachedevent)
* + [def \_\_init\_\_(
    self,
    handle,
    relation\_id,
    relation\_name)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#newbindclientattachedevent-__init__)
* + [def snapshot(
    self)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#newbindclientattachedevent-snapshot)
* + [def restore(
    self,
    snapshot)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#newbindclientattachedevent-restore)
* [class BindClientUpdatedEvent](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindclientupdatedevent)
* + [def \_\_init\_\_(
    self,
    handle,
    relation\_id,
    relation\_name)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindclientupdatedevent-__init__)
* + [def snapshot(
    self)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindclientupdatedevent-snapshot)
* + [def restore(
    self,
    snapshot)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindclientupdatedevent-restore)
* [class BindRndcProviderEvents](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcproviderevents)
* [class BindRndcProvides](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcprovides)
* + [def \_\_init\_\_(
    self,
    charm,
    relation\_name)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcprovides-__init__)
* + [def set\_host(
    self,
    relation,
    host)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcprovides-set_host)
* + [def get\_rndc\_keys(
    self,
    relation)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcprovides-get_rndc_keys)
* + [def set\_rndc\_client\_key(
    self,
    relation,
    client,
    algorithm,
    secret)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcprovides-set_rndc_client_key)
* + [def remove\_rndc\_client\_key(
    self,
    relation,
    client)](https://charmhub.io/designate-bind-k8s/libraries/bind_rndc#bindrndcprovides-remove_rndc_client_key)

#### class BindRndcConnectedEvent

Description

Bind rndc connected event. None

Methods

BindRndcConnectedEvent.
\_\_init\_\_(

*self*

,
handle

,
relation\_id: int

,
relation\_name: str
)

BindRndcConnectedEvent.
snapshot(

*self*
)

Description

Return snapshot data that should be persisted. None

BindRndcConnectedEvent.
restore(

*self*

,
snapshot
)

Description

Restore the value state from a given snapshot. None

#### class BindRndcReadyEvent

Description

Bind rndc ready event. None

Methods

BindRndcReadyEvent.
\_\_init\_\_(

*self*

,
handle

,
relation\_id: int

,
relation\_name: str
)

BindRndcReadyEvent.
snapshot(

*self*
)

Description

Return snapshot data that should be persisted. None

BindRndcReadyEvent.
restore(

*self*

,
snapshot
)

Description

Restore the value state from a given snapshot. None

#### class BindRndcGoneAwayEvent

Description

Bind rndc gone away event. None

#### class BindRndcRequirerEvents

Description

List of events that the BindRndc requires charm can leverage. None

#### class BindRndcRequires

Description

Class to be instantiated by the requiring side of the relation. None

Methods

BindRndcRequires.
\_\_init\_\_(

*self*

,
charm

,
relation\_name: str
)

BindRndcRequires.
host(

*self*

,
relation
)

Description

Return host from relation. None

BindRndcRequires.
nonce(

*self*

,
relation
)

Description

Return nonce from relation. None

BindRndcRequires.
get\_rndc\_key(

*self*

,
relation
)

Description

Get rndc keys. None

BindRndcRequires.
request\_rndc\_key(

*self*

,
relation

,
nonce: str
)

Description

Request rndc key over the relation. None

#### class NewBindClientAttachedEvent

Description

New bind client attached event. None

Methods

NewBindClientAttachedEvent.
\_\_init\_\_(

*self*

,
handle

,
relation\_id: int

,
relation\_name: str
)

NewBindClientAttachedEvent.
snapshot(

*self*
)

Description

Return snapshot data that should be persisted. None

NewBindClientAttachedEvent.
restore(

*self*

,
snapshot
)

Description

Restore the value state from a given snapshot. None

#### class BindClientUpdatedEvent

Description

Bind client updated event. None

Methods

BindClientUpdatedEvent.
\_\_init\_\_(

*self*

,
handle

,
relation\_id: int

,
relation\_name: str
)

BindClientUpdatedEvent.
snapshot(

*self*
)

Description

Return snapshot data that should be persisted. None

BindClientUpdatedEvent.
restore(

*self*

,
snapshot
)

Description

Restore the value state from a given snapshot. None

#### class BindRndcProviderEvents

Description

List of events that the BindRndc provider charm can leverage. None

#### class BindRndcProvides

Description

Class to be instantiated by the providing side of the relation. None

Methods

BindRndcProvides.
\_\_init\_\_(

*self*

,
charm

,
relation\_name: str
)

BindRndcProvides.
set\_host(

*self*

,
relation

,
host: str
)

Description

Set host on the relation. None

BindRndcProvides.
get\_rndc\_keys(

*self*

,
relation
)

Description

Get rndc keys. None

BindRndcProvides.
set\_rndc\_client\_key(

*self*

,
relation

,
client: str

,
algorithm: str

,
secret
)

Add rndc key to the relation.

Description

`rndc_keys` is a dict of dicts, keyed by client name. Each client
has an algorithm and secret property. The secret is a Juju secret id,
containing the actual secret needed to communicate over rndc.

BindRndcProvides.
remove\_rndc\_client\_key(

*self*

,
relation

,
client
)

Description

Remove rndc key from the relation. None
