def restart_zookeeper_if_config_changed(): """Restart Zookeeper if zoo.cfg has changed. As peers come and go, zoo.cfg will be updated. When that file changes, restart the Zookeeper service and set an appropriate status message. """ # Possibly update bind address network_interface = hookenv.config().get('network_interface') if data_changed("zookeeper.bind_address", network_interface): zk = Zookeeper() zk.update_bind_address() zoo_cfg = DistConfig().path('zookeeper_conf') / 'zoo.cfg' if any_file_changed([zoo_cfg]): hookenv.status_set('maintenance', 'Server config changed: restarting Zookeeper') zk = Zookeeper() zk.stop() zk.start() zk_count = int(zk.get_zk_count()) extra_status = "" if zk_count < 3: extra_status = ": less than 3 is suboptimal" elif (zk_count % 2 == 0): extra_status = ": even number is suboptimal" hookenv.status_set('active', 'Ready (%d zk units%s)' % (zk_count, extra_status)) else: # Make sure zookeeper is running in any case zk = Zookeeper() zk.start() zk.open_ports()
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')) zookeeper.install() zookeeper.open_ports() set_state('zookeeper.installed') set_state('zookeeper.started') hookenv.status_set('active', 'ready {}'.format(zookeeper.quorum_check()))
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')) zookeeper.install() zookeeper.open_ports() set_state('zookeeper.installed') set_state('zookeeper.started') hookenv.status_set('active', 'ready {}'.format(zookeeper.quorum_check()))
def configure(): cfg = hookenv.config() zookeeper = Zookeeper() changed = any(( data_changed('zkpeer.nodes', zookeeper.read_peers()), data_changed('zk.autopurge_purge_interval', cfg.get('autopurge_purge_interval')), data_changed('zk.autopurge_snap_retain_count', cfg.get('autopurge_snap_retain_count')), data_changed('zk.storage.data_dir', unitdata.kv().get('zookeeper.storage.data_dir')), )) if changed or is_flag_set('zookeeper.force-reconfigure'): zookeeper.install() zookeeper.open_ports() clear_flag('zookeeper.force-reconfigure') set_flag('zookeeper.started') set_flag('zookeeper.configured') hookenv.status_set('active', 'ready {}'.format(zookeeper.quorum_check())) # set app version string for juju status output zoo_version = get_installed_version(SNAP_NAME) or 'unknown' hookenv.application_version_set(zoo_version)
def start_zookeeper(): zk = Zookeeper() zk.start() zk.open_ports() set_state('zookeeper.started') hookenv.status_set('active', 'Ready')
def start_zookeeper(): zk = Zookeeper() zk.start() zk.open_ports() set_state('zookeeper.started') hookenv.status_set('active', 'Ready')