3
from charmhelpers.core.hookenv import (
16
from charmhelpers.fetch import (
20
from charmhelpers.core.host import (
23
from quobyte_helpers import (
26
do_update_replica_hosts
34
def service_restart():
35
# ensure software is installed
36
if not is_installed():
37
result = install_quobyte()
41
# ensure registry-hosts are given and /etc/quobyte/host.cfg is updated
43
for rel_id in relation_ids('quobyte-registry'):
44
for unit in related_units(rel_id):
45
replicas = relation_get('replicas', unit, rel_id)
46
if replicas is not None:
47
log('grep replicas is {} {}'.format(replicas, type(replicas)))
48
result = json.loads(replicas)
49
log('grep list is {} {}'.format(result, type(result)))
52
msg = 'no quobyte-registry-relation given, waiting for registry'
54
status_set('waiting', msg)
57
success, hosts = do_update_replica_hosts(result)
59
log('/etc/quobyte/host.cfg updated: registry={}'.format(hosts))
61
log('cannot update /etc/quobyte/host.cfg', ERROR)
62
status_set('blocked', 'cannot update /etc/quobyte/host.cfg')
64
# Web Console: 8080 (TCP), 7866 (TCP, UDP), 7876 (TCP)
67
open_port(7866, protocol='UDP')
69
status_set('active', 'Quobyte-Webconsole Service running')
70
return service('restart', 'quobyte-webconsole')
74
if status_get()[0] == 'active':
75
status_set('maintenance', 'Quobyte-Webconsole Service stopped')
76
return service('stop', 'quobyte-webconsole')
79
# -------------------------------------------
84
return service_restart()
92
@hooks.hook('config-changed')
94
return install_quobyte()
97
@hooks.hook('upgrade-charm')
100
apt_update(fatal=True)
101
apt_upgrade(fatal=True)
102
return service_restart()
105
@hooks.hook('install')
107
return install_quobyte()
110
# -------------------------------------------
113
@hooks.hook('quobyte-registry-relation-broken')
114
def qb_reg_rel_broken():
118
@hooks.hook('quobyte-registry-relation-changed')
119
def qb_reg_rel_changed():
120
log('quobyte-registry-relation-changed called', DEBUG)
122
return service_restart()
125
@hooks.hook('quobyte-registry-relation-departed')
126
def qb_reg_rel_joined():
130
@hooks.hook('quobyte-registry-relation-joined')
131
def qb_reg_rel_departed():
135
if __name__ == '__main__':
136
# execute a hook based on the name the program is called by
138
hooks.execute(sys.argv)
139
except UnregisteredHookError as e:
140
log('Unknown hook {} - skipping.'.format(e))