def configure_kafka(zk): hookenv.status_set('maintenance', 'Setting up Kafka') kafka = Kafka() zks = zk.zookeepers() kafka.configure_kafka(zks) set_state('kafka.started') hookenv.status_set('active', 'Ready')
def stop_kafka_waiting_for_zookeeper_ready(): hookenv.status_set('maintenance', 'zookeeper not ready, stopping kafka') kafka = Kafka() kafka.close_ports() kafka.stop() remove_state('kafka.started') hookenv.status_set('waiting', 'waiting for zookeeper to become ready')
def configure_kafka_zookeepers(zk): """Configure ready zookeepers and restart kafka if needed. As zks come and go, server.properties will be updated. When that file changes, restart Kafka and set appropriate status messages. This method also handles the restart if our network_interface config has changed. """ zks = zk.zookeepers() network_interface = hookenv.config().get('network_interface') log_dir = unitdata.kv().get('kafka.storage.log_dir') if not(any(( data_changed('zookeepers', zks), data_changed('kafka.network_interface', network_interface), data_changed('kafka.storage.log_dir', log_dir)))): return hookenv.log('Checking Zookeeper configuration') hookenv.status_set('maintenance', 'updating zookeeper instances') kafka = Kafka() kafka.configure_kafka(zks, network_interface=network_interface, log_dir=log_dir) hookenv.status_set('active', 'ready')
def configure_kafka(zk): hookenv.status_set('maintenance', 'setting up kafka') data_changed( # Prime data changed for network interface 'kafka.network_interface', hookenv.config().get('network_interface')) kafka = Kafka() zks = zk.zookeepers() kafka.configure_kafka(zks) kafka.open_ports() set_state('kafka.started') hookenv.status_set('active', 'ready') # set app version string for juju status output kafka_version = get_package_version('kafka') or 'unknown' hookenv.application_version_set(kafka_version)
def configure_kafka_zookeepers(zk): """Configure ready zookeepers and restart kafka if needed. As zks come and go, server.properties will be updated. When that file changes, restart Kafka and set appropriate status messages. """ zks = zk.zookeepers() if not data_changed('zookeepers', zks): return hookenv.log('Checking Zookeeper configuration') kafka = Kafka() kafka.configure_kafka(zks) hookenv.status_set('active', 'Ready')
def configure_kafka_zookeepers(zk): """Configure ready zookeepers and restart kafka if needed. As zks come and go, server.properties will be updated. When that file changes, restart Kafka and set appropriate status messages. This method also handles the restart if our network_interface config has changed. """ zks = zk.zookeepers() network_interface = hookenv.config().get('network_interface') if not data_changed('zookeepers', zks) and not data_changed( 'kafka.network_interface', network_interface): return hookenv.log('Checking Zookeeper configuration') hookenv.status_set('maintenance', 'updating zookeeper instances') kafka = Kafka() kafka.configure_kafka(zks, network_interface) hookenv.status_set('active', 'ready')
def storage_detaching(): unitdata.kv().unset('kafka.storage.log_dir') kafka = Kafka() kafka.close_ports() kafka.stop() remove_state('kafka.started') hookenv.status_set('waiting', 'reconfiguring to use temporary storage') remove_state('kafka.storage.logs.attached')
def configure_kafka(zk): hookenv.status_set('maintenance', 'setting up kafka') data_changed( # Prime data changed for network interface 'kafka.network_interface', hookenv.config().get('network_interface')) kafka = Kafka() zks = zk.zookeepers() kafka.configure_kafka(zks) kafka.open_ports() set_state('kafka.started') hookenv.status_set('active', 'ready')
def storage_attach(): storageids = hookenv.storage_list('logs') if not storageids: hookenv.status_set('blocked', 'cannot locate attached storage') return storageid = storageids[0] mount = hookenv.storage_get('location', storageid) if not mount: hookenv.status_set('blocked', 'cannot locate attached storage mount') return log_dir = os.path.join(mount, "logs") unitdata.kv().set('kafka.storage.log_dir', log_dir) hookenv.log('Kafka logs storage attached at {}'.format(log_dir)) # Stop Kafka; removing the kafka.started state will trigger a reconfigure if/when it's ready kafka = Kafka() kafka.close_ports() kafka.stop() remove_state('kafka.started') hookenv.status_set('waiting', 'reconfiguring to use attached storage') set_state('kafka.storage.logs.attached')