Under some circumstances, some requests may be a bytes-like object.
This patchset adds support for them.
Change-Id: I274ddd586604f93c1335e8511f5dd1773736ed4d
When fetching ceph keys, they are upgraded if it's deemed necessary
to fix bug #1968369. This worked for internal ceph entities such
as RBD or MDS, but fails for external ceph clients. This is because
for those clients, key capabilities can be set via broker requests.
As such, when the ceph-mon charm is upgraded, the key capabilities
for those clients are reset, and since the broker request has been
processed already, no further changes are done, leaving those keys
with incorrect caps.
Change-Id: I878091f9387f22059d460d28c2d0072507e66c6f
Closes-Bug: #2028387
When capabilities are only ever set on key-creation,
they can get out of date with what the services need
or want over time as new Ceph versions are released,
or as clients update their requirements.
Closes-Bug: #1968369
Change-Id: I475bd55117e3dc630514c92f6a76260e4f37ae0e
The function `get_local_osd_ids` crashes when the /var/lib/ceph/osd/
directory contains a file whose name doesn't contain a `-`.
unit-ceph-osd-0: 03:34:14 WARNING unit.ceph-osd/0.mon-relation-changed Traceback (most recent call last):
unit-ceph-osd-0: 03:34:14 WARNING unit.ceph-osd/0.mon-relation-changed File "/var/lib/juju/agents/unit-ceph-osd-0/charm/hooks/mon-relation-changed", line 904, in <module>
unit-ceph-osd-0: 03:34:14 WARNING unit.ceph-osd/0.mon-relation-changed hooks.execute(sys.argv)
unit-ceph-osd-0: 03:34:14 WARNING unit.ceph-osd/0.mon-relation-changed File "/var/lib/juju/agents/unit-ceph-osd-0/charm/hooks/charmhelpers/core/hookenv.py", line 963, in execute
unit-ceph-osd-0: 03:34:14 WARNING unit.ceph-osd/0.mon-relation-changed self._hooks[hook_name]()
unit-ceph-osd-0: 03:34:14 WARNING unit.ceph-osd/0.mon-relation-changed File "/var/lib/juju/agents/unit-ceph-osd-0/charm/hooks/mon-relation-changed", line 668, in mon_relation
unit-ceph-osd-0: 03:34:14 WARNING unit.ceph-osd/0.mon-relation-changed ceph.apply_osd_settings(settings)
unit-ceph-osd-0: 03:34:14 WARNING unit.ceph-osd/0.mon-relation-changed File "/var/lib/juju/agents/unit-ceph-osd-0/charm/lib/charms_ceph/utils.py", line 3420, in apply_osd_settings
unit-ceph-osd-0: 03:34:14 WARNING unit.ceph-osd/0.mon-relation-changed for osd_id in get_local_osd_ids():
unit-ceph-osd-0: 03:34:14 WARNING unit.ceph-osd/0.mon-relation-changed File "/var/lib/juju/agents/unit-ceph-osd-0/charm/lib/charms_ceph/utils.py", line 698, in get_local_osd_ids
unit-ceph-osd-0: 03:34:14 WARNING unit.ceph-osd/0.mon-relation-changed osd_id = osd_dir.split('-')[1]
unit-ceph-osd-0: 03:34:14 WARNING unit.ceph-osd/0.mon-relation-changed IndexError: list index out of range
Fix the issue by setting a fallback in this case.
Change-Id: I0fec65c9b88e6484905a76140d0921cf3dd843c0
This patchset modifies the 'get_running_osds' function so that
it also considers crimson-osds as valid OSD's. In addition, it
also modifies the 'get_local_osd_ids' to _not_ include Crimson
OSDs so that unsupported functionality doesn't make some hooks
fail in the ceph-osd charm.
Change-Id: If58bde4d5445ed5de420abc007db6bf8b8e43269
The setup.py file needs to be specify the dependencies of this
library, to avoid depending on them being manually installed.
Change-Id: I3ff2338f967aff5613bde777b224cd96ea81c1fd
Closes-Bug: #1987547
Update rbd-mirror key caps to use the rbd-mirror-peer mon profile.
This adds required config get/set permissions for the rbd-mirror
daemon.
Also add permission to use the service {dump,status} mon commands;
these are not required by the rbd-mirror daemon but are needed by
the charm to check pool mirror status.
Change-Id: Ia5efa090f5b7fa23d7261da53592d6a527dcbfe1
Closes-Bug: 1879749
Starting with Pacific, the 'osd blacklist' command was renamed to
'osd blocklist'. This patchset changes the allowed commands to
reflect this change.
Change-Id: If2169734f67d21c1c7c1b75677f14ebd0ea054ae
Closes-Bug: #1968369
In order to fully support OSD replacement, we need a way to recycle
previously used OSD ids. This is achieved by passing the parameter
'--osd-id' to 'ceph-volume lvm create'. As such, this patchset adds
the needed support to specify that parameter.
Change-Id: I43d0a0bc11664c37532c0117711affc93c9d1ad1
When updating to Ceph Nautilus (OpenStack Train) or later releases from
a pre-Nautilus release, msgr2 will not be enabled without manual
intervention (e.g. running `juju ssh ceph-mon/leader 'sudo ceph mon
enable-msgr2'`).
Leaving msgr2 disabled (i.e. using msgr1 only) isn't an issue for normal
operations; Ceph will simply show a warning in `sudo ceph status` that
this is the case. However, Ceph Nautilus and later releases default to
msgr2, meaning that new ceph-mon units will attempt to communicate with
the existing cluster using msgr2.
This commit enables msgr2 on package upgrades on all Ceph releases
including and after Nautilus.
Closes-Bug: #1840701
Change-Id: Ib90cd03b16f2062fa6c6a43d242d51306ae8ca95
When get_named_key is called on a keyring that
has customised capabilities, it overwrites the
capabilities to the default capabilities.
Change-Id: I777650ae2194609a95e5cfb101e343824b3d0a34
When gathering the list of local OSD ids, the charm would consider
the entries under '/var/lib/ceph/osd/ceph-XXX' where 'XXX" was the
OSD id. However, if an entry under that directory isn't mounted,
then the OSD that would represent that entry should be discarded,
as it's no longer active. This patchset thus filters those entries
by looking for them in the mount points.
Closes-Bug: #1934938
Change-Id: I7ca84ef0b73620fe69d309546c746933e95ceb03
Add helper functions to parse information from the ceph tree and
fix creating CrushLocation object in get_osd_tree function.
Closes-Bug: #1918721
Change-Id: I59c742e594042ad527e71c88404999459f0373c2
The methods for checking modules are taken from the ceph-mon
charm and charmhelpers.contrib.storage.linux.ceph module. When
this lands I'll update the ch methods to emit a deprecation warning
and update the ceph-mon charm to use these methods instead.
Change-Id: I1b7f08c3bd94828a5c6468df7aab6b38517cf3fa
Unfortunately, the original patch didn't work [1]. Then a fix was
applied also without a test [2]. Unfortunately, this wasn't correct
either.
This patch simplifies the function, which makes it a little easier to
reason about. Also a test is added to stop regressions in the future.
[1] Ie3c9c5899c1d46edd21c32868938d3290db321e7
[2] Ifef76eacd8bd837d2181ec75e406aa35f88b8b5b
Closes-Bug: #1929054
Change-Id: I93f53274bc8c7e62ebb8cb7bf81ff816f4bfd98b
filter_missing_packages expects a list and not a single package name as
a string. Pass the chrony package as a single item list to avoid it
checking installation candiates for 'c', 'h', 'r', 'o', 'n' and 'y'
WARNING juju-log Package c has no installation candidate.
WARNING juju-log Package h has no installation candidate.
WARNING juju-log Package r has no installation candidate.
WARNING juju-log Package o has no installation candidate.
WARNING juju-log Package n has no installation candidate.
WARNING juju-log Package y has no installation candidate.
INFO juju-log Purging ['chrony']
Change-Id: Ifef76eacd8bd837d2181ec75e406aa35f88b8b5b
I used ValueError for both exception.
Also removed unnecessary flake8 ignore option.
Closes-Bug: #1917351
Change-Id: I5ee58aa0a34d7c266b3811f9c6b9b3076bfdc048
get_version() uses charmhelpers apt_cache to retreive the
current version of ceph package which takes longer time to
execute. This has been improved in charm-helpers PR [1] by
introducing new function get_installed_version.
This patch updates get_version() to use new charm-helpers
get_installed_version function.
ceph_user() is updated to return always 'ceph' as ceph is
not supported for versions < 1.0
Note: This patch depends on PR [1] and so need to wait until
charm-helpers PR is merged and new version of charmhelpers
is released.
[1] https://github.com/juju/charm-helpers/pull/567
Partial-Bug: #1913992
Change-Id: Ibdb36cb08950344ee55fdb8b54b47b0381f72e2c
Instead of deferring the upgrading of packages
when doing a release upgrade, do them immediately
and only defer daemon restarts. This is to avoid
any api incompatibilities between newer mons and
older clients.
Change-Id: Idf77871561fa14ad61e0c7901eeb333254e37012
Closes-Bug: #1897594
The code currently assumes that a empty list will be passed rather than
None, so this change defensively codes against a None being passed
(deserialised from json) so that it is correctly parsed as "no extra
pools". Also modified the test to push None to the function to verify
that it handles the situation
Change-Id: I27220696f64b65280f24cab2328e1366fcbbdf4f
Closes-Bug: #1897574
When running ceph-mon in containers, best practice is
to have chrony/ntp configured and installed on the bare
metal and then have the container trust the system
clock, as the container should not manage the system
clock.
The chrony package get installed automatically as
part of the dependencies of other packages, which
gets removed in this change.
ceph-mon charm will use this change here to remove
the chrony package.
Change-Id: Ie3c9c5899c1d46edd21c32868938d3290db321e7
Closes-Bug: #1852441
If ceph-fs requests additional pools are added to the ceph fs
share to be created then add them once the share is created.
This allows ceph-fs to specify replicated pools for metadata and
default datapool but to then extend the fs with EC pools.
Change-Id: I80b7a5cc87d7d53bb55d4d65999a0f9b3cdcb77d
Use the Pool classes ability to initialize themselves from op.
Some pool properties should be allowed adjusted after a pool is
created.
The Pool quota property is already handled ad-hoc in the
`charms.ceph` broker handling code, let's bring it over to the
pool objects along with the handling of the compression properties.
Move some missing unit tests here from ceph-mon charm.
Merge after https://github.com/juju/charm-helpers/pull/497
Change-Id: Ibec4e3221387199adbc1a920e130975d7b25343c
Add support to allow 'allow_ec_overwrites' to be set on a pool,
supporting RBD and CephFS uses cases for Erasure Coding.
Add support to allow the EC technique to be provided when
creating EC profiles.
Add support for extended configuration of EC plugins.
Depends-On: https://github.com/juju/charm-helpers/pull/498
Change-Id: I2547933964849f7af1c623b2fbc014fb332839ef