* Update charm-rabbitmq-server from branch 'master'
to f9e1f451bf11782a7bc119e3e63b5fc10bf83fcc
- Fix typo in actions.yaml
There was a typo in actions.yaml for the resume action that was breaking
builds. This change fixes that typo. The charm will build.
Closes-Bug: 2030677
Change-Id: I2fb654eb176318e9e72e84bf41650e878b989528
* Update charm-rabbitmq-server from branch 'master'
to 84b8605ed6cfd439a9163b5e41eee24a4bcc2eb6
- Add docs key and point at Discourse
Add the 'docs' key and point it at a Discourse topic
previously populated with the charm's README contents.
When the new charm revision is released to the Charmhub,
this Discourse-based content will be displayed there. In
the absense of the this new key, the Charmhub's default
behaviour is to display the value of the charm's
'description' key.
Change-Id: Idd4eb37dd413b49a99b8b81fd15d0b45f75ae97e
* Update charm-rabbitmq-server from branch 'master'
to 3c155e2bdaeaec5090111749a2cf366b55875575
- Merge "Drop 'source' config key override."
- Drop 'source' config key override.
Drop configuration key 'source' override in rabbitmq-server and
mysql-innodb-cluster applications.
Add bindep.txt to install package dependencies needed to run unit tests.
Related-Bug: #1991528
Change-Id: I345e3bb7be7492286daf9e5ab36506915f3daab9
* Update charm-rabbitmq-server from branch 'master'
to 9278718a2b188001e5709dc9fc6d80720504fcea
- Merge "Add service user password rotation feature"
- Add service user password rotation feature
This patch adds the service user rotation feature, which provides two
actions:
- list-service-usernames
- rotate-service-user-password
The first lists the possible usernames that can be rotated. The
second action rotates the service, and is tested via the func-test-pr.
Change-Id: Ia94ab3d54cd8a59e9ba5005b88d3ec1ff87019b1
func-test-pr: https://github.com/openstack-charmers/zaza-openstack-tests/pull/1029
* Update charm-rabbitmq-server from branch 'master'
to 167877f43dfc2fef7977760a9e10232aefe8fdb8
- Merge "Allow NRPE to collect stats in CIS hardened env"
- Allow NRPE to collect stats in CIS hardened env
It removes the necessity to run the cron task as root user
and ensure the content created in /var/lib/rabbitmq belongs
to rabbitmq user and group solely.
Then giving access for nrpe user is done by adding its user
to rabbitmq group.
Also implemented in the upgrade-charm hook for ongoing
deployments
Closes-Bug: #1879524
Change-Id: I19e3d675ace7c669451ca40a20d21cef1aec6a95
* Update charm-rabbitmq-server from branch 'master'
to 09c507dd21de5ce5e6203d648bd0c47256258d5b
- Add lunar, drop kinetic, and sync charm-helpers
Add 23.04 run-on base and add lunar to metadata.yaml.
Drop 22.10 run-on base and drop kinetic from metadata.yaml.
Charm-helper sync to pick up Antelope support.
Change-Id: I8a4f42249a8607c5d0baf3b9f19d8edd663ec1ca
* Update charm-rabbitmq-server from branch 'master'
to 415fcc4054dc0b6f48fb02e705f1b9f607e6c5eb
- Merge "Enforce a maximum of 1024 async threads."
- Enforce a maximum of 1024 async threads.
The beam.smp process won't start if more than 1024 are configured, the
charm could make this by default on large systems (e.g. more than 42
CPUs). This change makes RabbitMQEnvContext.calculate_threads() never
return more than 1024 (MAX_NUM_THREADS).
Change-Id: I92879445210bac6ee7d96a704cdf428ca738e3b6
Closes-Bug: #1768986
* Update charm-rabbitmq-server from branch 'master'
to 58b1693f63ed231c7ae19cb81273e863968d2f0a
- Merge "Fix focal to jammy series upgrade"
- Fix focal to jammy series upgrade
This is a fix/workaround to the package upgrade bug that affects the
charm. The post-inst package script updates the .erlang.cookie if it is
insecure during the upgrade of rabbit from 3.8 to 3.9. This breaks the
series-upgrade resulting in a charm erroring on the post-series-upgrade
hook.
This fix works by checking if the .erlang.cookie has changed during the
post-series-upgrade hook and either updating the cookie in peer storage
(if it is insecure) or ensuring that the cookie from peer storage is
written to the .erlang.cookie if it isn't the leader. This ensures that
the cluster continues to work and that the series-upgrade can be
completed across the cluster.
Change-Id: I540ea8da85b3b4326ccb8194f1d8b1050b04eae9
Closes-Bug: #2006485
* Update charm-rabbitmq-server from branch 'master'
to 987c4d43f936b62c4285d0a5dddc94ff0ee08d54
- Merge "Fix upgrade-charm hook that was only partly run"
- Fix upgrade-charm hook that was only partly run
upgrade-charm bash script was only executed and the hook
from rabbitmq_server_relations.py was silently ignored
This corrects at the same time a failure in the hook if
rabbitmq deployment was from a single unit without any
cluster.
Closes-Bug: #1993100
Change-Id: Iaf88d18d26a1cde23397a097fcd98b09a0a98846
* Update charm-rabbitmq-server from branch 'master'
to f5aa13ee020e60bdb59a720419d45d6f7f2be6b8
- Add kinetic support and sync charm-helpers
Add 22.10 run-on base and add kinetic to metadata.yaml.
Sync charm-helpers to pick up kinetic support.
Change-Id: I26aaceb01f16ddb31123a37454a9cf0d61ed384c
* Update charm-rabbitmq-server from branch 'master'
to 81f08ab7695ab507ade076c33d0cc168a03be221
- Fix issue where charms aren't clustered but RMQ is
Due to the @cache decorator in the code, it was possible to get the
charm into a state where RMQ is clustered, but the charm doesn't record
it. The charm 'thinks' it is clustered when it has set the 'clustered'
key on the 'cluster' relation. Unfortunately, due to the @cached
decorator it's possible in the 'cluster-relation-changed' hook to have a
situation where the RMQ instance clusters during the hook execution and
then, later, when it's supposed to writing the 'clustered' key, it reads
the previous cached value where it wasn't clustered and therefore
doesn't set the 'clustered' key. This is just about the only
opportunity to do it, and so the charm ends up being locked.
The fix was to clear the @cache values so that the nodes would be
re-read, and this allows the charm to then write the 'clustered' key.
Change-Id: I12be41a83323d150ba1cbaeef64041f0bb5e32ce
Closes-Bug: #1975605
* Update charm-rabbitmq-server from branch 'master'
to 09ade6b5ee1ef4b3462150ffc1c2191462a0409d
- Fix up the tox.ini to work with tox 4
* unpin the requires for pip, virtualenv and setuptools
* remove the pip.sh installer file.
* split the passenv to to have a var on each line (overcomes new ','
requirement).
* switch charm-tools to 2.8.4 to remove ruamel requirement that doesn't
work on Python 3.10
Change-Id: I44849aac8ead5e3e660ccd9d1305cc991461d02d
* Update charm-rabbitmq-server from branch 'master'
to fdb3d0a614e680b33852961d37481665af59564d
- Merge "Update bundles to use yoga"
- Update bundles to use yoga
This change reconfigures the bundles to use OpenStack yoga, they are the
last version that support Focal and Jammy.
Change-Id: Ia54bfacee6635c1e85a0c97e22bc2a5974bda7d1
Closes-Bug: #1991528
* Update charm-rabbitmq-server from branch 'master'
to 956417ba41246fa02b3e7e2dfe61ff4e9ed7c5ca
- Merge "Revert "Add Kinetic and Zed support""
- Revert "Add Kinetic and Zed support"
This reverts commit c0beec6fa2e5d36985cb1219f75a99c04e3879ae.
Reason for revert: I think this should be reverted as it removes focal support from the rabbitmq-server master, and thus this won't cherry-pick cleanly to the stable/jammy channel for the 3.9 track.
Change-Id: Iebab77fcc0cee31af66980c2d3be334fffe06222
* Update charm-rabbitmq-server from branch 'master'
to 7c65a33ea8bb115b29fa3e44a3086534e5a0b66f
- Merge "Add Kinetic and Zed support"
- Add Kinetic and Zed support
* sync charm-helpers to classic charms
* change openstack-origin/source default to zed
* align testing with zed
* add new zed bundles
* add zed bundles to tests.yaml
* add zed tests to osci.yaml and .zuul.yaml
* update build-on and run-on bases
* add bindep.txt for py310
* sync tox.ini and requirements.txt for ruamel
* use charmcraft_channel 2.0/stable
* drop reactive plugin overrides
* move interface/layer env vars to charmcraft.yaml
Change-Id: I93da9ce52bed2b3e8a467491d2a61bfd2ed4ea7d
* Update charm-rabbitmq-server from branch 'master'
to eadb7948b74581f4fb8f8d4f415445d9cbeb1606
- Merge "CONFIG_FILES is not a constant"
- CONFIG_FILES is not a constant
The CONFIG_FILES is not a constant, its a method and when this
is passed to the ConfigRenderer it will cause a failure because
the items() function does not exist (since its not a dict).
Change-Id: Ice6cce6a736d96883eb8bc003852c2df60af7c62
Closes-Bug: 1971451
* Update charm-rabbitmq-server from branch 'master'
to b35247364f7934579bff9585a071ff9668157e9a
- Set cluster-partition-handling on upgrade-charm.
For units deployed before the implementation of the
cluster-partition-handling strategy they won't have that key set in the
leader making the charm believe there are pending tasks, so this change
seeds the key when is not set with the value present in the charm's
configuration.
Change-Id: Ifdae35ffee1ad7a8f4e5248c817cca14b69d9566
Closes-Bug: #1979092
* Update charm-rabbitmq-server from branch 'master'
to eac35c1d9907cde3da007a4478d244168e5bc048
- Merge "Remove legacy checks"
- Remove legacy checks
Remove legacy checks from set_ha_mode in rabbit_utils.py as it checks
for versions of rabbitmq which is less than version 3.0.0 which is not
available in the archives for any supported releases.
Change-Id: Ib21f6ae3f30eabaaa8d677c20a555ded4e6851d6
* Update charm-rabbitmq-server from branch 'master'
to 99fd28ccc17b2b4ad1f91490b23b7bdadc4de189
- Merge "Handle non-uniform queue stats output"
- Handle non-uniform queue stats output
RabbitMQ sesrver sometimes creates non-uniform outputs that nrpe
can't parse. Instead of breaking the check, this commit outputs
the error messages and continue the check.
This problem is most likely caused by queue state being
"down" [1]. However, because the current charm doesn't show such
information and the bug is hard to manually reproduce, this
commit adds the state attribute when creating queue_state file
for future debugging.
[1] https://www.rabbitmq.com/rabbitmqctl.8.html#state_2
Closes-Bug: #1850948
Change-Id: Iaa493c8270f344cde8ad7c89bd2bb548f0ad71bd
* Update charm-rabbitmq-server from branch 'master'
to 09ce13aaf261ef90666461824bf614c952b61fbc
- Remove unused config options
The config options `module-nodes` and `known-wait` are no longer used
after commit 12de0d964c2c24613df50a8abd212c49c34117e4 introduced
coordinated restarts across the rabbit cluster. This change removes
those charm config options.
Change-Id: I3aee35633e0716f8ce933ee3079494dbc761c04d
* Update charm-rabbitmq-server from branch 'master'
to 370a6315aee7f1c598b75ceb6bc4768959aa85ef
- Drop nagios/nrpe from Jammy test bundles
The nrpe charm doesn't support jammy yet, which is a problem because it
is a subordinate charm. Drop it from the test bundles for the time being
and when this is resolved, it will be added back in.
Change-Id: Id54c0d145fb111914a38e9ed5776712ec6a92f87
* Update charm-rabbitmq-server from branch 'master'
to 12de0d964c2c24613df50a8abd212c49c34117e4
- Coordinate cluster join events
Use the coordination module when cluster join events are called.
The `cluster_wait` method has been removed as it is no longer used
and `cluster_with` has been broken up into three new methods (
`clustered_with_leader`, `update_peer_cluster_status` and
`join_leader`) which can be called separately. The `modulo-nodes`
and `known-wait` charm options have been removed as they are no
longer needed.
Closes-Bug: #1902793
Change-Id: I136f5dcc855da329071e119b67df25d9045e86cc
* Update charm-rabbitmq-server from branch 'master'
to 70cbe1eef942c39a6173f23b54c2bfa5e2419171
- Coordinate package upgrades across cluster
Use the coordination module to manage package upgrades across the
cluster. To each this some of the setup was moved into a new
configure_rabbit_install method which handles setup is normally
run after an upgrade.
Change-Id: I8d244d96c83a5da164322faff873a72530ec9def
* Update charm-rabbitmq-server from branch 'master'
to 3d5e1e22d8eda0478cc6b702389034a412e37c4b
- Coordination module for rabbit restarts
Use the coordination module to manage restarting the rabbitmq
services. This is to ensure that restarts are only
performed on one unit at a time. This helps prevent
situation which can cause the cluster to become split
brained (eg if two or more nodes are restarted at the same
time).
* Manually run _run_atstart & _run_atexit method when actions
are run as this does not happen automatically and is needed by
the coordination layer.
* Replace restart_on_change decorator with
coordinated_restart_on_change. coordinated_restart_on_change
includes logic for requesting restart locks from the coordination
module.
* The coordination module works via the leader and cluster events so
the hooks now include calls to check_coordinated_functions
which will run any function that is waiting for a lock.
* Logic has been added to check for the situation where a hook is
being run via the run_deferred_hooks actions. If this is the
case then restarts are immediate as the action should only be run
on one unit at a time.
Change-Id: Ia133c90a610793d4da96d3400a3906b801b52b73
* Update charm-rabbitmq-server from branch 'master'
to b0b51cc6ea3379c8c2622da02e92eec017477a6e
- Update to classic charms to build using charmcraft in CI
This update is to ensure that the Zuul Canonical CI builds the charm
before functional tests and ensure that that artifact is used for the
functional tests. This is to try to ensure that the charm that gets
landed to the charmhub is the same charm that was tested with.
Change-Id: I3cb1f519e8f1d6765b41751994633be73e5bdea5
* Update charm-rabbitmq-server from branch 'master'
to c01df1bc3564d337fa5bf2d59b76e49efe8aeefd
- Add charmhelpers to charmcraft.yaml
Charmhelpers directory was missed in the conversion to the charmcraft
way of building charms. The rabbit charm has a slightly different
location for charmhelpers than other charms. Add charmhelpers to
charmcraft.yaml to ensure it is packed in the charm file.
Change-Id: I72155c4bd2ace7497d59eeec3552985aec39d44b
Closes-Bug: #1960769
* Update charm-rabbitmq-server from branch 'master'
to f44cccc505afb45ec128eaa63eb0f961763806f4
- Merge "Check before applying plugin and perms changes"
- Check before applying plugin and perms changes
Check that setting update is needed before applying a config
update to the cluster. This is mainly applicable to
rabbitmq-server > 3.8.2 which supports json output. If a
parser is not available to extract the existing settings
then the old behaviour of blindly applying the change
is used.
Closes-Bug: #1909031
Change-Id: I9599f69cc11ea8d1a4e9d618aecdab4afe488d96
* Update charm-rabbitmq-server from branch 'master'
to d79095f6b55587e20ce7048a41f8c50b0894d516
- Merge "Rabbitmq metrics and splitbrain detection"
- Rabbitmq metrics and splitbrain detection
Enabled rabbitmq_prometheus plugin for prometheus to scrape
the metrics of rabbitmq and alert if rabbitmq splitbrain is
detected.
Integrated rabbitmq dashboards in grafana via dashboards
relations
Added new unit test cases
Closes-Bug: 1899183
Change-Id: I88942dd0b246c498d0ab40b00d586d4349b0f100
* Update charm-rabbitmq-server from branch 'master'
to 2212383158a9cb9a0c21093b081c6416b9338d40
- Merge "Switch to enabling the managment plugin by default"
- Switch to enabling the managment plugin by default
Over time the managment plugin has become a core part of managing
a rabbit deployment. This includes allowing tools such as nrpe to
be able to query the api and alert for situations such as orphaned
queues.
Change-Id: Icbf760610ce83b9d95f48e99f6607ddf23963c97
Partial-Bug: 1930547
* Update charm-rabbitmq-server from branch 'master'
to bc0e50b673bbd8c3cf10dbd856cc7b7b2889a5e7
- Merge "Use cluster strategy 'ignore' for install"
- Use cluster strategy 'ignore' for install
Use cluster-partition-handling strategy 'ignore' during charm
installation regardless of the charm config setting. Once the
leader has checked it is clustered with peers then it sets the
cluster-partition-handling strategy to be whatever the user set
in charm config.
Partial-Bug: 1802315
Change-Id: Ic03bbe55ea8aab8b285977a5c0f9410b5bbf35c8
* Update charm-rabbitmq-server from branch 'master'
to ff45f3ae4bc7c703b2d7b5cb3ef79e33c206629a
- Use unittest.mock instead of mock
The mock third party library was needed for mock support in py2
runtimes. Since we now only support py36 and later, we can use the
standard lib unittest.mock module instead.
Note that https://github.com/openstack/charms.openstack is used during tests
and he need `mock`, unfortunatelly it doesn't declare `mock` in its
requirements so it retrieve mock from other charm project (cross dependency).
So we depend on charms.openstack first and when
Ib1ed5b598a52375e29e247db9ab4786df5b6d142 will be merged then CI
will pass without errors.
Depends-On: Ib1ed5b598a52375e29e247db9ab4786df5b6d142
Change-Id: I98f432a771b5f6c966328d30629410a0a180dbee
* Update charm-rabbitmq-server from branch 'master'
to 485b0d3dcd1f02dde3f5fe04e1a06994979a2059
- Merge "Modify the output to action "cluster-status" to make it user friendly (rabbitmq)"
- Modify the output to action "cluster-status"
to make it user friendly (rabbitmq)
"rabbitmqctl cluster_status" uses escape codes to color/highlight the
output, and it does not have a way to suppress this. This makes the
output to the command "juju run-action rabbitmq-server/leader
cluster-status" not user friendly and difficult to read.
Add the json formatting option to the rabbitmqctl command and use
the json.dumps method to get a user friendly output.
Add unit test.
Closes-Bug: #1943198
Change-Id: I24380e24ff1edbede9c2db1671a4fc05d5a7cc63
* Update charm-rabbitmq-server from branch 'master'
to 32bce11f0fc03ce184ae8a57f1137043db461f45
- Use json module to dump json in set_ha_mode
Use json module to dump json in set_ha_mode rather than trying
to generate json using string interpolation. This fixes a bug
when using the 'nodes' mode which was generating invalid json.
The new function test is taken from Id7ef45b7001d26ede3fd61f97626b5e9e8b81196
Change-Id: Ieb49036389221f6fbf2db93fbe4aebe6e986ea21
Co-Authored-By: Trent Lloyd <trent.lloyd@canonical.com>
* Update charm-rabbitmq-server from branch 'master'
to c72d401192ec1042a5ea18581753bd3443f2daa9
- Merge "Restrict TLS versions"
- Restrict TLS versions
TLS < 1.2 is considered insecure; where possible limit the versions
of TLS to 1.2 or higher, enabling support for TLS 1.3 when the
required erlang and rabbitmq versions are installed.
Change-Id: Iec5ab60488986f8e332ff0e9a11895822a61c1ee
Closes-Bug: 1892450
Func-Test-PR: https://github.com/openstack-charmers/zaza-openstack-tests/pull/668
* Update charm-rabbitmq-server from branch 'master'
to c0ea9ed1911e1ef0ee630f8b4881e0a865d60603
- Merge "Switch to new configuration file format"
- Switch to new configuration file format
For newer RabbitMQ versions, switch to using the new ini style
configuration file format (rabbitmq.conf vs rabbitmq.config).
This allows the charm to configure a wider set of options and
is needed to support limitation of TLS versions use for on the
wire encryption.
Upgrades at RabbitMQ 3.7.0 should switch from old to new format
and file name.
Change-Id: I6deda5ecf5990d527e22373540074d2a4b7bad38
Func-Test-PR: https://github.com/openstack-charmers/zaza-openstack-tests/pull/668
* Update charm-rabbitmq-server from branch 'master'
to 0625e920eb8c068a5c350ad17b90d9c0d43ec1ba
- Merge "Drop support for Xenial."
- Drop support for Xenial.
Change-Id: Idc154a28e97b67bf2df2785f935eec961e3b522a
* Update charm-rabbitmq-server from branch 'master'
to a4cb517209d0564ccaab973485f1d8de5d89752f
- Merge "Refactor methods which query rabbit"
- Refactor methods which query rabbit
Refactor methods which query rabbit to remove the duplication
around checking if json output is supported.
Change-Id: Id4e3dbd85748e41bb4b1c8db282495cfffaa823d
* Update charm-rabbitmq-server from branch 'master'
to af48cfe8ad7e387cc75f674ae59bcd91e33012f1
- Pin pyparsing for CI
Change-Id: I3ba18ba5e765993f61d892b6a2d34a74ba6d2d12
Note: this will be dropped when we change the CI runners.
* Update charm-rabbitmq-server from branch 'master'
to 242167b6bad190dd7aa2b885272906551d390c8a
- Display busiest queues in check_queues NRPE plugin
When invoking the check_rabbitmq_queues script with wildcards for vhost
and/or queue parameters, script output does not reflect precisely which
queues are having a high number of oustanding messages as information is
consolidated under the wildcard.
This change fixes this behaviour by adding a new charm configuration
parameter which allows the user to specify the number of busiest queues,
n, to display should the check_rabbitmq_queues script reports any
warnings or errors. The default, n=0, keeps the current script output.
This option is applicable regardless of the vhost:queue combination but
is specifically relevant when wildcards are passed as arguments.
Implementation displays the first n items in the stats list re-organized
in decreasing message count order.
Closes-Bug: #1939084
Change-Id: I5a32cb6bf37bd2a0f30861eace3c0e6cb5c2559d
* Update charm-rabbitmq-server from branch 'master'
to fd8d018babb16de3ea54f9c99bdd4a9c572695ea
- Move cron max file age calculation to rabbit_utils
The check_rabbitmq_queues nrpe check accesses the cron file created
for running collect stats job. This is done in order to determine if
the stats are too old and an alert should be raised. The nagios user
does not have access to read the cron job when running in a hardened
environment where /etc/cron.d is not readable.
This change refactors this logic to move the calculation of maximum
age for a stats file from the check_rabbitmq_queues script and into
the rabbit_utils code where it is generating the nrpe configuration.
A new (optional) parameter is added to the check_rabbitmq_queues
script to accept the maximum age in seconds a file can last be
modified.
This change also removes the trusty support in hooks/install and
hooks/upgrade-charm as the rabbit_utils.py file needs to import a
dependency which is installed by the scripts. It is cleaned up to make
sure the croniter package is always installed on install or upgrade.
Change-Id: If948fc921ee0b63682946c7cc879ac50e971e588
Closes-Bug: #1940495
Co-authored-by: Aurelien Lourot <aurelien.lourot@canonical.com>