in bigtop-packages/src/charm/kafka/layer-kafka/lib/charms/layer/bigtop_kafka.py [0:0]
def configure_kafka(self, zk_units, network_interface=None, log_dir=None):
# Get ip:port data from our connected zookeepers
zks = []
for unit in zk_units:
ip = utils.resolve_private_address(unit['host'])
zks.append("%s:%s" % (ip, unit['port']))
zks.sort()
zk_connect = ",".join(zks)
service, unit_num = os.environ['JUJU_UNIT_NAME'].split('/', 1)
kafka_port = self.dist_config.port('kafka')
roles = ['kafka-server']
override = {
'kafka::server::broker_id': unit_num,
'kafka::server::port': kafka_port,
'kafka::server::zookeeper_connection_string': zk_connect,
'kafka::server::log_dirs': log_dir,
}
if network_interface:
ip = Bigtop().get_ip_for_interface(network_interface)
override['kafka::server::bind_addr'] = ip
bigtop = Bigtop()
bigtop.render_site_yaml(roles=roles, overrides=override)
bigtop.trigger_puppet()
if log_dir:
os.makedirs(log_dir, mode=0o700, exist_ok=True)
shutil.chown(log_dir, user='kafka')
self.set_advertise()
self.restart()