Only configure cluster resources from the oldest peer
This commit is contained in:
parent
70571421d5
commit
b71f682dac
182
hooks/hooks.py
182
hooks/hooks.py
@ -15,6 +15,7 @@ from base64 import b64decode
|
||||
|
||||
import maas as MAAS
|
||||
import lib.utils as utils
|
||||
import lib.cluster_utils as cluster
|
||||
import pcmk
|
||||
import hacluster
|
||||
|
||||
@ -225,98 +226,101 @@ def configure_cluster():
|
||||
' resource-stickiness="100"'
|
||||
pcmk.commit(cmd)
|
||||
|
||||
utils.juju_log('INFO', 'Configuring Resources')
|
||||
utils.juju_log('INFO', str(resources))
|
||||
|
||||
for res_name, res_type in resources.iteritems():
|
||||
# disable the service we are going to put in HA
|
||||
if res_type.split(':')[0] == "lsb":
|
||||
hacluster.disable_lsb_services(res_type.split(':')[1])
|
||||
if utils.running(res_type.split(':')[1]):
|
||||
utils.stop(res_type.split(':')[1])
|
||||
elif (len(init_services) != 0 and
|
||||
res_name in init_services and
|
||||
init_services[res_name]):
|
||||
hacluster.disable_upstart_services(init_services[res_name])
|
||||
if utils.running(init_services[res_name]):
|
||||
utils.stop(init_services[res_name])
|
||||
# Put the services in HA, if not already done so
|
||||
#if not pcmk.is_resource_present(res_name):
|
||||
if not pcmk.crm_opt_exists(res_name):
|
||||
if not res_name in resource_params:
|
||||
cmd = 'crm -F configure primitive %s %s' % (res_name, res_type)
|
||||
else:
|
||||
cmd = 'crm -F configure primitive %s %s %s' % \
|
||||
(res_name,
|
||||
res_type,
|
||||
resource_params[res_name])
|
||||
pcmk.commit(cmd)
|
||||
utils.juju_log('INFO', '%s' % cmd)
|
||||
|
||||
utils.juju_log('INFO', 'Configuring Groups')
|
||||
utils.juju_log('INFO', str(groups))
|
||||
for grp_name, grp_params in groups.iteritems():
|
||||
if not pcmk.crm_opt_exists(grp_name):
|
||||
cmd = 'crm -F configure group %s %s' % (grp_name, grp_params)
|
||||
pcmk.commit(cmd)
|
||||
utils.juju_log('INFO', '%s' % cmd)
|
||||
|
||||
utils.juju_log('INFO', 'Configuring Master/Slave (ms)')
|
||||
utils.juju_log('INFO', str(ms))
|
||||
for ms_name, ms_params in ms.iteritems():
|
||||
if not pcmk.crm_opt_exists(ms_name):
|
||||
cmd = 'crm -F configure ms %s %s' % (ms_name, ms_params)
|
||||
pcmk.commit(cmd)
|
||||
utils.juju_log('INFO', '%s' % cmd)
|
||||
|
||||
utils.juju_log('INFO', 'Configuring Orders')
|
||||
utils.juju_log('INFO', str(orders))
|
||||
for ord_name, ord_params in orders.iteritems():
|
||||
if not pcmk.crm_opt_exists(ord_name):
|
||||
cmd = 'crm -F configure order %s %s' % (ord_name, ord_params)
|
||||
pcmk.commit(cmd)
|
||||
utils.juju_log('INFO', '%s' % cmd)
|
||||
|
||||
utils.juju_log('INFO', 'Configuring Colocations')
|
||||
utils.juju_log('INFO', str(colocations))
|
||||
for col_name, col_params in colocations.iteritems():
|
||||
if not pcmk.crm_opt_exists(col_name):
|
||||
cmd = 'crm -F configure colocation %s %s' % (col_name, col_params)
|
||||
pcmk.commit(cmd)
|
||||
utils.juju_log('INFO', '%s' % cmd)
|
||||
|
||||
utils.juju_log('INFO', 'Configuring Clones')
|
||||
utils.juju_log('INFO', str(clones))
|
||||
for cln_name, cln_params in clones.iteritems():
|
||||
if not pcmk.crm_opt_exists(cln_name):
|
||||
cmd = 'crm -F configure clone %s %s' % (cln_name, cln_params)
|
||||
pcmk.commit(cmd)
|
||||
utils.juju_log('INFO', '%s' % cmd)
|
||||
|
||||
for res_name, res_type in resources.iteritems():
|
||||
if len(init_services) != 0 and res_name in init_services:
|
||||
# Checks that the resources are running and started.
|
||||
# Ensure that clones are excluded as the resource is
|
||||
# not directly controllable (dealt with below)
|
||||
# Ensure that groups are cleaned up as a whole rather
|
||||
# than as individual resources.
|
||||
if (res_name not in clones.values() and
|
||||
res_name not in groups.values() and
|
||||
not pcmk.crm_res_running(res_name)):
|
||||
# Just in case, cleanup the resources to ensure they get
|
||||
# started in case they failed for some unrelated reason.
|
||||
cmd = 'crm resource cleanup %s' % res_name
|
||||
# Only configure the cluster resources
|
||||
# from the oldest peer unit.
|
||||
if cluster.oldest_peer(cluster.peer_units()):
|
||||
utils.juju_log('INFO', 'Configuring Resources')
|
||||
utils.juju_log('INFO', str(resources))
|
||||
for res_name, res_type in resources.iteritems():
|
||||
# disable the service we are going to put in HA
|
||||
if res_type.split(':')[0] == "lsb":
|
||||
hacluster.disable_lsb_services(res_type.split(':')[1])
|
||||
if utils.running(res_type.split(':')[1]):
|
||||
utils.stop(res_type.split(':')[1])
|
||||
elif (len(init_services) != 0 and
|
||||
res_name in init_services and
|
||||
init_services[res_name]):
|
||||
hacluster.disable_upstart_services(init_services[res_name])
|
||||
if utils.running(init_services[res_name]):
|
||||
utils.stop(init_services[res_name])
|
||||
# Put the services in HA, if not already done so
|
||||
#if not pcmk.is_resource_present(res_name):
|
||||
if not pcmk.crm_opt_exists(res_name):
|
||||
if not res_name in resource_params:
|
||||
cmd = 'crm -F configure primitive %s %s' % (res_name,
|
||||
res_type)
|
||||
else:
|
||||
cmd = 'crm -F configure primitive %s %s %s' % \
|
||||
(res_name,
|
||||
res_type,
|
||||
resource_params[res_name])
|
||||
pcmk.commit(cmd)
|
||||
utils.juju_log('INFO', '%s' % cmd)
|
||||
|
||||
for cl_name in clones:
|
||||
# Always cleanup clones
|
||||
cmd = 'crm resource cleanup %s' % cl_name
|
||||
pcmk.commit(cmd)
|
||||
utils.juju_log('INFO', 'Configuring Groups')
|
||||
utils.juju_log('INFO', str(groups))
|
||||
for grp_name, grp_params in groups.iteritems():
|
||||
if not pcmk.crm_opt_exists(grp_name):
|
||||
cmd = 'crm -F configure group %s %s' % (grp_name, grp_params)
|
||||
pcmk.commit(cmd)
|
||||
utils.juju_log('INFO', '%s' % cmd)
|
||||
|
||||
for grp_name in groups:
|
||||
# Always cleanup groups
|
||||
cmd = 'crm resource cleanup %s' % grp_name
|
||||
pcmk.commit(cmd)
|
||||
utils.juju_log('INFO', 'Configuring Master/Slave (ms)')
|
||||
utils.juju_log('INFO', str(ms))
|
||||
for ms_name, ms_params in ms.iteritems():
|
||||
if not pcmk.crm_opt_exists(ms_name):
|
||||
cmd = 'crm -F configure ms %s %s' % (ms_name, ms_params)
|
||||
pcmk.commit(cmd)
|
||||
utils.juju_log('INFO', '%s' % cmd)
|
||||
|
||||
utils.juju_log('INFO', 'Configuring Orders')
|
||||
utils.juju_log('INFO', str(orders))
|
||||
for ord_name, ord_params in orders.iteritems():
|
||||
if not pcmk.crm_opt_exists(ord_name):
|
||||
cmd = 'crm -F configure order %s %s' % (ord_name, ord_params)
|
||||
pcmk.commit(cmd)
|
||||
utils.juju_log('INFO', '%s' % cmd)
|
||||
|
||||
utils.juju_log('INFO', 'Configuring Colocations')
|
||||
utils.juju_log('INFO', str(colocations))
|
||||
for col_name, col_params in colocations.iteritems():
|
||||
if not pcmk.crm_opt_exists(col_name):
|
||||
cmd = 'crm -F configure colocation %s %s' % (col_name, col_params)
|
||||
pcmk.commit(cmd)
|
||||
utils.juju_log('INFO', '%s' % cmd)
|
||||
|
||||
utils.juju_log('INFO', 'Configuring Clones')
|
||||
utils.juju_log('INFO', str(clones))
|
||||
for cln_name, cln_params in clones.iteritems():
|
||||
if not pcmk.crm_opt_exists(cln_name):
|
||||
cmd = 'crm -F configure clone %s %s' % (cln_name, cln_params)
|
||||
pcmk.commit(cmd)
|
||||
utils.juju_log('INFO', '%s' % cmd)
|
||||
|
||||
for res_name, res_type in resources.iteritems():
|
||||
if len(init_services) != 0 and res_name in init_services:
|
||||
# Checks that the resources are running and started.
|
||||
# Ensure that clones are excluded as the resource is
|
||||
# not directly controllable (dealt with below)
|
||||
# Ensure that groups are cleaned up as a whole rather
|
||||
# than as individual resources.
|
||||
if (res_name not in clones.values() and
|
||||
res_name not in groups.values() and
|
||||
not pcmk.crm_res_running(res_name)):
|
||||
# Just in case, cleanup the resources to ensure they get
|
||||
# started in case they failed for some unrelated reason.
|
||||
cmd = 'crm resource cleanup %s' % res_name
|
||||
pcmk.commit(cmd)
|
||||
|
||||
for cl_name in clones:
|
||||
# Always cleanup clones
|
||||
cmd = 'crm resource cleanup %s' % cl_name
|
||||
pcmk.commit(cmd)
|
||||
|
||||
for grp_name in groups:
|
||||
# Always cleanup groups
|
||||
cmd = 'crm resource cleanup %s' % grp_name
|
||||
pcmk.commit(cmd)
|
||||
|
||||
for rel_id in utils.relation_ids('ha'):
|
||||
utils.relation_set(rid=rel_id,
|
||||
|
Loading…
x
Reference in New Issue
Block a user