Skip to content
This repository has been archived by the owner on Mar 4, 2024. It is now read-only.

juju-solutions/interface-zookeeper-quorum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Overview

This interface layer handles the communication among Apache Zookeeper peers.

Usage

Requirements

This interface relies on states set by the leadership layer. Consumers of this interface need to include layer:leadership in their layer.yaml.

Peers

This interface allows the peers of the Zookeeper deployment to be aware of each other. This interface layer will set the following states, as appropriate:

  • {relation_name}.joined A new peer in the Zookeeper service has joined. The Zookeeper charm should call get_nodes() to get a list of tuples with unit ids and IP addresses for quorum members.

    • When a unit joins the set of peers, the interface ensures there is no {relation_name}.departed state set in the conversation.

    • A call to dismiss_joined() will remove the joined state in the peer conversation so this charm can react to subsequent peers joining.

  • {relation_name}.departed A peer in the Zookeeper service has departed. The Zookeeper charm should call get_nodes() to get a list of tuples with unit ids and IP addresses for remaining quorum members.

    • When a unit leaves the set of peers, the interface ensures there is no {relation_name}.joined state set in the conversation.

    • A call to dismiss_departed() will remove the departed state in the peer conversation so this charm can react to subsequent peers departing.

For example, let's say that a peer is added to the Zookeeper service deployment. The Zookeeper charm should handle the new peer like this:

@when('zookeeper.installed', 'zkpeer.joined')
def quorum_add(zkpeer):
    nodes = zkpeer.get_nodes()
    increase_quorum(nodes)
    zkpeer.dismiss_joined()

Similarly, when a peer departs:

@when('zookeeper.installed', 'zkpeer.departed')
def quorum_remove(zkpeer):
    nodes = zkpeer.get_nodes()
    decrease_quorum(nodes)
    zkpeer.dismiss_departed()

Contact Information

About

Interface between Apache Zookeeper quorum members

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages