From 3dca58a580cf4f10c36e8f27c2793b0461d306e3 Mon Sep 17 00:00:00 2001 From: Alex Kavanagh Date: Tue, 2 Jun 2020 14:22:19 +0100 Subject: [PATCH] Updates for 20.08 cycle start for groovy and libs - Adds groovy to the series in the metadata - Classic charms: sync charm-helpers. - Classic ceph based charms: also sync charms.ceph - Reactive charms: trigger a rebuild Change-Id: I02bdac24d05ae34ef3519963ef95bb53bdbbc2fc --- charmhelpers/contrib/openstack/utils.py | 2 +- charmhelpers/contrib/peerstorage/__init__.py | 2 +- charmhelpers/contrib/storage/linux/ceph.py | 48 +++++++++++++++----- charmhelpers/fetch/snap.py | 2 +- metadata.yaml | 25 +++++----- 5 files changed, 53 insertions(+), 26 deletions(-) diff --git a/charmhelpers/contrib/openstack/utils.py b/charmhelpers/contrib/openstack/utils.py index e59e0d1e..fbf01561 100644 --- a/charmhelpers/contrib/openstack/utils.py +++ b/charmhelpers/contrib/openstack/utils.py @@ -225,7 +225,7 @@ SWIFT_CODENAMES = OrderedDict([ ('train', ['2.22.0', '2.23.0']), ('ussuri', - ['2.24.0']), + ['2.24.0', '2.25.0']), ]) # >= Liberty version->codename mapping diff --git a/charmhelpers/contrib/peerstorage/__init__.py b/charmhelpers/contrib/peerstorage/__init__.py index 4d99375f..a8fa60c2 100644 --- a/charmhelpers/contrib/peerstorage/__init__.py +++ b/charmhelpers/contrib/peerstorage/__init__.py @@ -248,7 +248,7 @@ def peer_store_and_set(relation_id=None, peer_relation_name='cluster', @param relation_id: the id of the relation to store the data on. Defaults to the current relation. @param peer_store_fatal: Set to True, the function will raise an exception - should the peer sotrage not be avialable.""" + should the peer storage not be available.""" relation_settings = relation_settings if relation_settings else {} relation_set(relation_id=relation_id, diff --git a/charmhelpers/contrib/storage/linux/ceph.py b/charmhelpers/contrib/storage/linux/ceph.py index eb31b782..814d5c72 100644 --- a/charmhelpers/contrib/storage/linux/ceph.py +++ b/charmhelpers/contrib/storage/linux/ceph.py @@ -92,6 +92,7 @@ DEFAULT_PGS_PER_OSD_TARGET = 100 DEFAULT_POOL_WEIGHT = 10.0 LEGACY_PG_COUNT = 200 DEFAULT_MINIMUM_PGS = 2 +AUTOSCALER_DEFAULT_PGS = 32 class OsdPostUpgradeError(Exception): @@ -399,16 +400,28 @@ class ReplicatedPool(Pool): def create(self): if not pool_exists(self.service, self.name): + nautilus_or_later = cmp_pkgrevno('ceph-common', '14.2.0') >= 0 # Create it - cmd = ['ceph', '--id', self.service, 'osd', 'pool', 'create', - self.name, str(self.pg_num)] + if nautilus_or_later: + cmd = [ + 'ceph', '--id', self.service, 'osd', 'pool', 'create', + '--pg-num-min={}'.format( + min(AUTOSCALER_DEFAULT_PGS, self.pg_num) + ), + self.name, str(self.pg_num) + ] + else: + cmd = [ + 'ceph', '--id', self.service, 'osd', 'pool', 'create', + self.name, str(self.pg_num) + ] + try: check_call(cmd) # Set the pool replica size update_pool(client=self.service, pool=self.name, settings={'size': str(self.replicas)}) - nautilus_or_later = cmp_pkgrevno('ceph-common', '14.2.0') >= 0 if nautilus_or_later: # Ensure we set the expected pool ratio update_pool(client=self.service, @@ -419,13 +432,13 @@ class ReplicatedPool(Pool): pool=self.name, name=self.app_name) except CalledProcessError: - log('Could not set app name for pool {}'.format(self.name, level=WARNING)) + log('Could not set app name for pool {}'.format(self.name), level=WARNING) if 'pg_autoscaler' in enabled_manager_modules(): try: enable_pg_autoscale(self.service, self.name) except CalledProcessError as e: log('Could not configure auto scaling for pool {}: {}'.format( - self.name, e, level=WARNING)) + self.name, e), level=WARNING) except CalledProcessError: raise @@ -466,10 +479,24 @@ class ErasurePool(Pool): k = int(erasure_profile['k']) m = int(erasure_profile['m']) pgs = self.get_pgs(k + m, self.percent_data) + nautilus_or_later = cmp_pkgrevno('ceph-common', '14.2.0') >= 0 # Create it - cmd = ['ceph', '--id', self.service, 'osd', 'pool', 'create', - self.name, str(pgs), str(pgs), - 'erasure', self.erasure_code_profile] + if nautilus_or_later: + cmd = [ + 'ceph', '--id', self.service, 'osd', 'pool', 'create', + '--pg-num-min={}'.format( + min(AUTOSCALER_DEFAULT_PGS, pgs) + ), + self.name, str(pgs), str(pgs), + 'erasure', self.erasure_code_profile + ] + else: + cmd = [ + 'ceph', '--id', self.service, 'osd', 'pool', 'create', + self.name, str(pgs), str(pgs), + 'erasure', self.erasure_code_profile + ] + try: check_call(cmd) try: @@ -477,8 +504,7 @@ class ErasurePool(Pool): pool=self.name, name=self.app_name) except CalledProcessError: - log('Could not set app name for pool {}'.format(self.name, level=WARNING)) - nautilus_or_later = cmp_pkgrevno('ceph-common', '14.2.0') >= 0 + log('Could not set app name for pool {}'.format(self.name), level=WARNING) if nautilus_or_later: # Ensure we set the expected pool ratio update_pool(client=self.service, @@ -489,7 +515,7 @@ class ErasurePool(Pool): enable_pg_autoscale(self.service, self.name) except CalledProcessError as e: log('Could not configure auto scaling for pool {}: {}'.format( - self.name, e, level=WARNING)) + self.name, e), level=WARNING) except CalledProcessError: raise diff --git a/charmhelpers/fetch/snap.py b/charmhelpers/fetch/snap.py index 395836c7..fc70aa94 100644 --- a/charmhelpers/fetch/snap.py +++ b/charmhelpers/fetch/snap.py @@ -69,7 +69,7 @@ def _snap_exec(commands): .format(SNAP_NO_LOCK_RETRY_COUNT)) return_code = e.returncode log('Snap failed to acquire lock, trying again in {} seconds.' - .format(SNAP_NO_LOCK_RETRY_DELAY, level='WARN')) + .format(SNAP_NO_LOCK_RETRY_DELAY), level='WARN') sleep(SNAP_NO_LOCK_RETRY_DELAY) return return_code diff --git a/metadata.yaml b/metadata.yaml index 7886562a..594a7b0e 100644 --- a/metadata.yaml +++ b/metadata.yaml @@ -1,20 +1,21 @@ name: rabbitmq-server -summary: An AMQP server written in Erlang +summary: An AMQP server written in Erlang maintainer: OpenStack Charmers description: | - RabbitMQ is an implementation of AMQP, the emerging standard for high - performance enterprise messaging. The RabbitMQ server is a robust and - scalable implementation of an AMQP broker. + RabbitMQ is an implementation of AMQP, the emerging standard for high + performance enterprise messaging. The RabbitMQ server is a robust and + scalable implementation of an AMQP broker. tags: - - openstack - - amqp - - misc +- openstack +- amqp +- misc series: - - xenial - - bionic - - eoan - - focal - - trusty +- xenial +- bionic +- eoan +- focal +- trusty +- groovy provides: amqp: interface: rabbitmq