def _restart_zookeeper(msg): ''' Restart Zookeeper by re-running the puppet scripts. ''' hookenv.status_set('maintenance', msg) zookeeper = Zookeeper() zookeeper.install() hookenv.status_set('active', 'ready {}'.format(zookeeper.quorum_check()))
def check_cluster(zkpeer): ''' Checkup on the state of the cluster. Start a rolling restart if the peers have changed. ''' zk = Zookeeper() if data_changed('zkpeer.nodes', zk.read_peers()): peers = _ip_list(zk.sort_peers(zkpeer)) nonce = time.time() hookenv.log('Quorum changed. Restart queue: {}'.format(peers)) leader_set(restart_queue=json.dumps(peers), restart_nonce=json.dumps(nonce))
def install_zookeeper(): ''' After Bigtop has done the initial setup, trigger a puppet install, via our Zooekeeper library. puppet will start the service, as a side effect. ''' hookenv.status_set('maintenance', 'installing zookeeper') zookeeper = Zookeeper() # Prime data changed data_changed('zkpeer.nodes', zookeeper.read_peers()) data_changed('zk.network_interface', hookenv.config().get('network_interface')) data_changed('zk.autopurge_purge_interval', hookenv.config().get('autopurge_purge_interval')) data_changed('zk.autopurge_snap_retain_count', hookenv.config().get('autopurge_snap_retain_count')) zookeeper.install() zookeeper.open_ports() set_state('zookeeper.installed') set_state('zookeeper.started') hookenv.status_set('active', 'ready {}'.format(zookeeper.quorum_check())) # set app version string for juju status output zoo_version = get_package_version('zookeeper') or 'unknown' hookenv.application_version_set(zoo_version)
def check_cluster(zkpeer): ''' Checkup on the state of the cluster. Start a rolling restart if the peers have changed. ''' zk = Zookeeper() if data_changed('zkpeer.nodes', zk.read_peers()): peers = _ip_list(zk.sort_peers(zkpeer)) nonce = time.time() hookenv.log('Quorum changed. Restart queue: {}'.format(peers)) leader_set( restart_queue=json.dumps(peers), restart_nonce=json.dumps(nonce) )
def install_zookeeper(): ''' After Bigtop has done the initial setup, trigger a puppet install, via our Zooekeeper library. puppet will start the service, as a side effect. ''' hookenv.status_set('maintenance', 'installing zookeeper') zookeeper = Zookeeper() # Prime data changed data_changed('zkpeer.nodes', zookeeper.read_peers()) data_changed( 'zk.network_interface', hookenv.config().get('network_interface')) data_changed( 'zk.autopurge_purge_interval', hookenv.config().get('autopurge_purge_interval')) data_changed( 'zk.autopurge_snap_retain_count', hookenv.config().get('autopurge_snap_retain_count')) zookeeper.install() zookeeper.open_ports() set_state('zookeeper.installed') set_state('zookeeper.started') hookenv.status_set('active', 'ready {}'.format(zookeeper.quorum_check())) # set app version string for juju status output zoo_version = get_package_version('zookeeper') or 'unknown' hookenv.application_version_set(zoo_version)
def serve_client(client): config = Zookeeper().dist_config port = config.port('zookeeper') rest_port = config.port('zookeeper-rest') # TODO: add zookeeper REST client.send_port(port, rest_port)