Sync charm-helpers
Change-Id: I759be5dc13a784efe5850c403275c2c0b288da13
This commit is contained in:
parent
8e08a9c22a
commit
1d7f50a46d
@ -33,6 +33,7 @@ from charmhelpers.core.hookenv import (
|
|||||||
hook_name,
|
hook_name,
|
||||||
local_unit,
|
local_unit,
|
||||||
log,
|
log,
|
||||||
|
relation_get,
|
||||||
relation_ids,
|
relation_ids,
|
||||||
relation_set,
|
relation_set,
|
||||||
relations_of_type,
|
relations_of_type,
|
||||||
@ -260,11 +261,23 @@ class NRPE(object):
|
|||||||
relation = relation_ids('nrpe-external-master')
|
relation = relation_ids('nrpe-external-master')
|
||||||
if relation:
|
if relation:
|
||||||
log("Setting charm primary status {}".format(primary))
|
log("Setting charm primary status {}".format(primary))
|
||||||
for rid in relation_ids('nrpe-external-master'):
|
for rid in relation:
|
||||||
relation_set(relation_id=rid, relation_settings={'primary': self.primary})
|
relation_set(relation_id=rid, relation_settings={'primary': self.primary})
|
||||||
|
self.remove_check_queue = set()
|
||||||
|
|
||||||
def add_check(self, *args, **kwargs):
|
def add_check(self, *args, **kwargs):
|
||||||
|
shortname = None
|
||||||
|
if kwargs.get('shortname') is None:
|
||||||
|
if len(args) > 0:
|
||||||
|
shortname = args[0]
|
||||||
|
else:
|
||||||
|
shortname = kwargs['shortname']
|
||||||
|
|
||||||
self.checks.append(Check(*args, **kwargs))
|
self.checks.append(Check(*args, **kwargs))
|
||||||
|
try:
|
||||||
|
self.remove_check_queue.remove(shortname)
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
|
||||||
def remove_check(self, *args, **kwargs):
|
def remove_check(self, *args, **kwargs):
|
||||||
if kwargs.get('shortname') is None:
|
if kwargs.get('shortname') is None:
|
||||||
@ -281,6 +294,7 @@ class NRPE(object):
|
|||||||
|
|
||||||
check = Check(*args, **kwargs)
|
check = Check(*args, **kwargs)
|
||||||
check.remove(self.hostname)
|
check.remove(self.hostname)
|
||||||
|
self.remove_check_queue.add(kwargs['shortname'])
|
||||||
|
|
||||||
def write(self):
|
def write(self):
|
||||||
try:
|
try:
|
||||||
@ -313,7 +327,24 @@ class NRPE(object):
|
|||||||
monitor_ids = relation_ids("local-monitors") + \
|
monitor_ids = relation_ids("local-monitors") + \
|
||||||
relation_ids("nrpe-external-master")
|
relation_ids("nrpe-external-master")
|
||||||
for rid in monitor_ids:
|
for rid in monitor_ids:
|
||||||
relation_set(relation_id=rid, monitors=yaml.dump(monitors))
|
reldata = relation_get(unit=local_unit(), rid=rid)
|
||||||
|
if 'monitors' in reldata:
|
||||||
|
# update the existing set of monitors with the new data
|
||||||
|
old_monitors = yaml.safe_load(reldata['monitors'])
|
||||||
|
old_nrpe_monitors = old_monitors['monitors']['remote']['nrpe']
|
||||||
|
# remove keys that are in the remove_check_queue
|
||||||
|
old_nrpe_monitors = {k: v for k, v in old_nrpe_monitors.items()
|
||||||
|
if k not in self.remove_check_queue}
|
||||||
|
# update/add nrpe_monitors
|
||||||
|
old_nrpe_monitors.update(nrpe_monitors)
|
||||||
|
old_monitors['monitors']['remote']['nrpe'] = old_nrpe_monitors
|
||||||
|
# write back to the relation
|
||||||
|
relation_set(relation_id=rid, monitors=yaml.dump(old_monitors))
|
||||||
|
else:
|
||||||
|
# write a brand new set of monitors, as no existing ones.
|
||||||
|
relation_set(relation_id=rid, monitors=yaml.dump(monitors))
|
||||||
|
|
||||||
|
self.remove_check_queue.clear()
|
||||||
|
|
||||||
|
|
||||||
def get_nagios_hostcontext(relation_name='nrpe-external-master'):
|
def get_nagios_hostcontext(relation_name='nrpe-external-master'):
|
||||||
|
@ -120,6 +120,7 @@ OPENSTACK_RELEASES = (
|
|||||||
'queens',
|
'queens',
|
||||||
'rocky',
|
'rocky',
|
||||||
'stein',
|
'stein',
|
||||||
|
'train',
|
||||||
)
|
)
|
||||||
|
|
||||||
UBUNTU_OPENSTACK_RELEASE = OrderedDict([
|
UBUNTU_OPENSTACK_RELEASE = OrderedDict([
|
||||||
@ -139,6 +140,7 @@ UBUNTU_OPENSTACK_RELEASE = OrderedDict([
|
|||||||
('bionic', 'queens'),
|
('bionic', 'queens'),
|
||||||
('cosmic', 'rocky'),
|
('cosmic', 'rocky'),
|
||||||
('disco', 'stein'),
|
('disco', 'stein'),
|
||||||
|
('eoan', 'train'),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
@ -159,6 +161,7 @@ OPENSTACK_CODENAMES = OrderedDict([
|
|||||||
('2018.1', 'queens'),
|
('2018.1', 'queens'),
|
||||||
('2018.2', 'rocky'),
|
('2018.2', 'rocky'),
|
||||||
('2019.1', 'stein'),
|
('2019.1', 'stein'),
|
||||||
|
('2019.2', 'train'),
|
||||||
])
|
])
|
||||||
|
|
||||||
# The ugly duckling - must list releases oldest to newest
|
# The ugly duckling - must list releases oldest to newest
|
||||||
@ -194,7 +197,9 @@ SWIFT_CODENAMES = OrderedDict([
|
|||||||
('rocky',
|
('rocky',
|
||||||
['2.18.0', '2.19.0']),
|
['2.18.0', '2.19.0']),
|
||||||
('stein',
|
('stein',
|
||||||
['2.20.0']),
|
['2.20.0', '2.21.0']),
|
||||||
|
('train',
|
||||||
|
['2.22.0']),
|
||||||
])
|
])
|
||||||
|
|
||||||
# >= Liberty version->codename mapping
|
# >= Liberty version->codename mapping
|
||||||
@ -208,6 +213,7 @@ PACKAGE_CODENAMES = {
|
|||||||
('17', 'queens'),
|
('17', 'queens'),
|
||||||
('18', 'rocky'),
|
('18', 'rocky'),
|
||||||
('19', 'stein'),
|
('19', 'stein'),
|
||||||
|
('20', 'train'),
|
||||||
]),
|
]),
|
||||||
'neutron-common': OrderedDict([
|
'neutron-common': OrderedDict([
|
||||||
('7', 'liberty'),
|
('7', 'liberty'),
|
||||||
@ -218,6 +224,7 @@ PACKAGE_CODENAMES = {
|
|||||||
('12', 'queens'),
|
('12', 'queens'),
|
||||||
('13', 'rocky'),
|
('13', 'rocky'),
|
||||||
('14', 'stein'),
|
('14', 'stein'),
|
||||||
|
('15', 'train'),
|
||||||
]),
|
]),
|
||||||
'cinder-common': OrderedDict([
|
'cinder-common': OrderedDict([
|
||||||
('7', 'liberty'),
|
('7', 'liberty'),
|
||||||
@ -228,6 +235,7 @@ PACKAGE_CODENAMES = {
|
|||||||
('12', 'queens'),
|
('12', 'queens'),
|
||||||
('13', 'rocky'),
|
('13', 'rocky'),
|
||||||
('14', 'stein'),
|
('14', 'stein'),
|
||||||
|
('15', 'train'),
|
||||||
]),
|
]),
|
||||||
'keystone': OrderedDict([
|
'keystone': OrderedDict([
|
||||||
('8', 'liberty'),
|
('8', 'liberty'),
|
||||||
@ -238,6 +246,7 @@ PACKAGE_CODENAMES = {
|
|||||||
('13', 'queens'),
|
('13', 'queens'),
|
||||||
('14', 'rocky'),
|
('14', 'rocky'),
|
||||||
('15', 'stein'),
|
('15', 'stein'),
|
||||||
|
('16', 'train'),
|
||||||
]),
|
]),
|
||||||
'horizon-common': OrderedDict([
|
'horizon-common': OrderedDict([
|
||||||
('8', 'liberty'),
|
('8', 'liberty'),
|
||||||
@ -248,6 +257,7 @@ PACKAGE_CODENAMES = {
|
|||||||
('13', 'queens'),
|
('13', 'queens'),
|
||||||
('14', 'rocky'),
|
('14', 'rocky'),
|
||||||
('15', 'stein'),
|
('15', 'stein'),
|
||||||
|
('16', 'train'),
|
||||||
]),
|
]),
|
||||||
'ceilometer-common': OrderedDict([
|
'ceilometer-common': OrderedDict([
|
||||||
('5', 'liberty'),
|
('5', 'liberty'),
|
||||||
@ -258,6 +268,7 @@ PACKAGE_CODENAMES = {
|
|||||||
('10', 'queens'),
|
('10', 'queens'),
|
||||||
('11', 'rocky'),
|
('11', 'rocky'),
|
||||||
('12', 'stein'),
|
('12', 'stein'),
|
||||||
|
('13', 'train'),
|
||||||
]),
|
]),
|
||||||
'heat-common': OrderedDict([
|
'heat-common': OrderedDict([
|
||||||
('5', 'liberty'),
|
('5', 'liberty'),
|
||||||
@ -268,6 +279,7 @@ PACKAGE_CODENAMES = {
|
|||||||
('10', 'queens'),
|
('10', 'queens'),
|
||||||
('11', 'rocky'),
|
('11', 'rocky'),
|
||||||
('12', 'stein'),
|
('12', 'stein'),
|
||||||
|
('13', 'train'),
|
||||||
]),
|
]),
|
||||||
'glance-common': OrderedDict([
|
'glance-common': OrderedDict([
|
||||||
('11', 'liberty'),
|
('11', 'liberty'),
|
||||||
@ -278,6 +290,7 @@ PACKAGE_CODENAMES = {
|
|||||||
('16', 'queens'),
|
('16', 'queens'),
|
||||||
('17', 'rocky'),
|
('17', 'rocky'),
|
||||||
('18', 'stein'),
|
('18', 'stein'),
|
||||||
|
('19', 'train'),
|
||||||
]),
|
]),
|
||||||
'openstack-dashboard': OrderedDict([
|
'openstack-dashboard': OrderedDict([
|
||||||
('8', 'liberty'),
|
('8', 'liberty'),
|
||||||
@ -288,6 +301,7 @@ PACKAGE_CODENAMES = {
|
|||||||
('13', 'queens'),
|
('13', 'queens'),
|
||||||
('14', 'rocky'),
|
('14', 'rocky'),
|
||||||
('15', 'stein'),
|
('15', 'stein'),
|
||||||
|
('16', 'train'),
|
||||||
]),
|
]),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1482,13 +1482,28 @@ def send_request_if_needed(request, relation='ceph'):
|
|||||||
relation_set(relation_id=rid, broker_req=request.request)
|
relation_set(relation_id=rid, broker_req=request.request)
|
||||||
|
|
||||||
|
|
||||||
|
def has_broker_rsp(rid=None, unit=None):
|
||||||
|
"""Return True if the broker_rsp key is 'truthy' (i.e. set to something) in the relation data.
|
||||||
|
|
||||||
|
:param rid: The relation to check (default of None means current relation)
|
||||||
|
:type rid: Union[str, None]
|
||||||
|
:param unit: The remote unit to check (default of None means current unit)
|
||||||
|
:type unit: Union[str, None]
|
||||||
|
:returns: True if broker key exists and is set to something 'truthy'
|
||||||
|
:rtype: bool
|
||||||
|
"""
|
||||||
|
rdata = relation_get(rid=rid, unit=unit) or {}
|
||||||
|
broker_rsp = rdata.get(get_broker_rsp_key())
|
||||||
|
return True if broker_rsp else False
|
||||||
|
|
||||||
|
|
||||||
def is_broker_action_done(action, rid=None, unit=None):
|
def is_broker_action_done(action, rid=None, unit=None):
|
||||||
"""Check whether broker action has completed yet.
|
"""Check whether broker action has completed yet.
|
||||||
|
|
||||||
@param action: name of action to be performed
|
@param action: name of action to be performed
|
||||||
@returns True if action complete otherwise False
|
@returns True if action complete otherwise False
|
||||||
"""
|
"""
|
||||||
rdata = relation_get(rid, unit) or {}
|
rdata = relation_get(rid=rid, unit=unit) or {}
|
||||||
broker_rsp = rdata.get(get_broker_rsp_key())
|
broker_rsp = rdata.get(get_broker_rsp_key())
|
||||||
if not broker_rsp:
|
if not broker_rsp:
|
||||||
return False
|
return False
|
||||||
@ -1510,7 +1525,7 @@ def mark_broker_action_done(action, rid=None, unit=None):
|
|||||||
@param action: name of action to be performed
|
@param action: name of action to be performed
|
||||||
@returns None
|
@returns None
|
||||||
"""
|
"""
|
||||||
rdata = relation_get(rid, unit) or {}
|
rdata = relation_get(rid=rid, unit=unit) or {}
|
||||||
broker_rsp = rdata.get(get_broker_rsp_key())
|
broker_rsp = rdata.get(get_broker_rsp_key())
|
||||||
if not broker_rsp:
|
if not broker_rsp:
|
||||||
return
|
return
|
||||||
|
@ -110,17 +110,19 @@ def is_device_mounted(device):
|
|||||||
return bool(re.search(r'MOUNTPOINT=".+"', out))
|
return bool(re.search(r'MOUNTPOINT=".+"', out))
|
||||||
|
|
||||||
|
|
||||||
def mkfs_xfs(device, force=False):
|
def mkfs_xfs(device, force=False, inode_size=1024):
|
||||||
"""Format device with XFS filesystem.
|
"""Format device with XFS filesystem.
|
||||||
|
|
||||||
By default this should fail if the device already has a filesystem on it.
|
By default this should fail if the device already has a filesystem on it.
|
||||||
:param device: Full path to device to format
|
:param device: Full path to device to format
|
||||||
:ptype device: tr
|
:ptype device: tr
|
||||||
:param force: Force operation
|
:param force: Force operation
|
||||||
:ptype: force: boolean"""
|
:ptype: force: boolean
|
||||||
|
:param inode_size: XFS inode size in bytes
|
||||||
|
:ptype inode_size: int"""
|
||||||
cmd = ['mkfs.xfs']
|
cmd = ['mkfs.xfs']
|
||||||
if force:
|
if force:
|
||||||
cmd.append("-f")
|
cmd.append("-f")
|
||||||
|
|
||||||
cmd += ['-i', 'size=1024', device]
|
cmd += ['-i', "size={}".format(inode_size), device]
|
||||||
check_call(cmd)
|
check_call(cmd)
|
||||||
|
@ -173,6 +173,14 @@ CLOUD_ARCHIVE_POCKETS = {
|
|||||||
'stein/proposed': 'bionic-proposed/stein',
|
'stein/proposed': 'bionic-proposed/stein',
|
||||||
'bionic-stein/proposed': 'bionic-proposed/stein',
|
'bionic-stein/proposed': 'bionic-proposed/stein',
|
||||||
'bionic-proposed/stein': 'bionic-proposed/stein',
|
'bionic-proposed/stein': 'bionic-proposed/stein',
|
||||||
|
# Train
|
||||||
|
'train': 'bionic-updates/train',
|
||||||
|
'bionic-train': 'bionic-updates/train',
|
||||||
|
'bionic-train/updates': 'bionic-updates/train',
|
||||||
|
'bionic-updates/train': 'bionic-updates/train',
|
||||||
|
'train/proposed': 'bionic-proposed/train',
|
||||||
|
'bionic-train/proposed': 'bionic-proposed/train',
|
||||||
|
'bionic-proposed/train': 'bionic-proposed/train',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -522,14 +530,16 @@ def add_source(source, key=None, fail_invalid=False):
|
|||||||
for r, fn in six.iteritems(_mapping):
|
for r, fn in six.iteritems(_mapping):
|
||||||
m = re.match(r, source)
|
m = re.match(r, source)
|
||||||
if m:
|
if m:
|
||||||
# call the assoicated function with the captured groups
|
|
||||||
# raises SourceConfigError on error.
|
|
||||||
fn(*m.groups())
|
|
||||||
if key:
|
if key:
|
||||||
|
# Import key before adding the source which depends on it,
|
||||||
|
# as refreshing packages could fail otherwise.
|
||||||
try:
|
try:
|
||||||
import_key(key)
|
import_key(key)
|
||||||
except GPGKeyError as e:
|
except GPGKeyError as e:
|
||||||
raise SourceConfigError(str(e))
|
raise SourceConfigError(str(e))
|
||||||
|
# call the associated function with the captured groups
|
||||||
|
# raises SourceConfigError on error.
|
||||||
|
fn(*m.groups())
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
# nothing matched. log an error and maybe sys.exit
|
# nothing matched. log an error and maybe sys.exit
|
||||||
|
@ -26,7 +26,7 @@ dev_bundles:
|
|||||||
- bionic-stein
|
- bionic-stein
|
||||||
|
|
||||||
smoke_bundles:
|
smoke_bundles:
|
||||||
- bionic-queens
|
- bionic-stein
|
||||||
|
|
||||||
target_deploy_status:
|
target_deploy_status:
|
||||||
ceph-proxy:
|
ceph-proxy:
|
||||||
|
Loading…
Reference in New Issue
Block a user