in bigtop-packages/src/charm/hbase/layer-hbase/lib/charms/layer/bigtop_hbase.py [0:0]
def update_regionservers(self, addrs, remove=False):
'''
Each HBase unit in the cluster runs a RegionServer process. Ensure
all unit IP addresses are listed in the regionservers file.
@param: addrs List of IP addresses
@param: remove Bool to add (False) or remove (True) unit IPs
'''
unit_kv = unitdata.kv()
kv_ips = unit_kv.get('regionservers', default=[])
# add/remove IPs from our list
if remove:
kv_ips = [ip for ip in kv_ips if ip not in addrs]
else:
kv_ips.extend(addrs)
# write regionservers file using a sorted, unique set of addrs
new_kv = sorted(set(kv_ips))
rs_file = Path('/etc/hbase/conf/regionservers')
rs_file.write_lines(
[
'# DO NOT EDIT',
'# This file is automatically managed by Juju',
] + [ip for ip in new_kv],
append=False
)
# save the new kv IPs
unit_kv.set('regionservers', new_kv)
unit_kv.flush(True)