When we deploy devstack, we need to initialize the RBD pool.
Not doing so means that functionality like rbd trash purge
scheduling will not work correctly.
Seems a trace from older code. It doesn't make
much sense to allow all Fedora versions that
matches f[0-9][0-9] and then check for specific
Fedora versions in the following lines.
Remove this check and just allow some specific
This will change the version of Ceph from Octopus to Pacific and,
with it, the version of Ganesha from v3.3 to v3.5 which is the
version shipped into the Ceph Pacific container.
This changeset adds a config option (TEST_MASTER)
to toggle testing with the current Ceph master.
The builds are retrieved from Shaman, which is the
platform used by the Ceph community to submit their
The main goal of this change is to use this on our CI
and be able to catch bugs in OpenStack services that use
Ceph as a backend more quickly. Because of this, the
required non-voting job is also added.
In some jobs, we run tests that use "rbd map".
On older kernels, this will not work if newer
RBD features are used. (Specifically, fast-diff
On older distros, enable fewer features by default.
This change stops configure_ceph_nova from creating the vms pool when
CEPH_REMOTE=true as this suggests that it has already been created by
the controller that has CEPH_REMOTE=false set.
The typical Cinder deployment should have
more than just "layering" enabled.
Enable fast-diff, which requires exclusive-lock
Previously, there was code that tried to enable
exclusive-lock when CEPH_ISCSI is enabled, but this
code would not work reliably, since it was doing
addition instead of bitwise-or. Just remove it
since exclusive-lock will be enabled by default.
Consume packages from download.ceph.com for ceph octopus
Our focal fossa based CI jobs are getting octopus from
ubuntu ppas instead of getting the packages from
This happens because, even though we were defaulting to
nautilus, ubuntu got the later version available
(in this case, the packages in ubuntu ppas).
Also, remove CEPH_STABLE_RELEASE env var, unify to CEPH_RELEASE
Stable branches CI versioning is done in the jobs definition now
Add a glob pattern at the end of the file removals so that we
also capture items like
which can otherwise cause issues next time we stack
(install_prereqs sees it and gets confused).
When working locally it is nice to be able to
run unstack.sh and not have too much extra stuff
to clean up by hand before running stack.sh again.
So clean up CEPH_DATA_DIR, contenta and mounts.
Also fix a spot where '/var/lib/ceph' (the default
value for CEPH_DATA_DIR) was hard-coded.
Disable caching done by ganesha when ganesha
is used as CephFS's gateway (manila's usecase)
This is the recommended Ganesha setting as libcephfs
already caches information. Doing so helps avoid
cache incoherency issues.
We create a disk image during setup, which now gets persisted in
/etc/fstab across boots. Clean that up when we're instructed to
do a clean operation.
I'm not sure why this isn't failing in the gate, but locally I get
100% fail if I don't add the release key before the apt-add-
repository. This seems to be a change in focal as it worked fine
for me before upgrade.
This moves the key fetch/add before the repo.
This patch updates the override-defaults to support
setting the CINDER_DRIVER, CINDER_ENABLED_BACKENDS
and CINDER_ISCSI_HELPER env vars for devstack to
ceph_iscsi if and only if ENABLE_CEPH_ISCSI is True.
This is needed by devstack lib/cinder to automatically
configure and enable ceph_iscsi as a backend.
As Fedora 32 has dropped py2 support we need to switch over to the py3
based el8 RPMs now. Fedora 31 can support both allowing us to switch
while still technically supporting it.
I0eab8ad25112511b0c4dd4b7796b4cda821bca8b incorrectly attempted to write
directly to the /etc/repos.d/ directory as the stack user. This isn't
possible even with sudo so use the config-manager command to import
locally written files as the stack user.
Additionally ensure there is no whitespace at the start of each line
within the files.
We seem to have been requesting the latest build from the Shaman API
provided by Ceph however we did not filter the status to be 'ready'
which meant that we sometimes got 'building' status repositories that
cause the jobs to fail.
This should stabilize jobs a lot more by using only the ready
We are using iSCSI protocol to operate the volume, instead of ceph
in that case. The storage protocol ceph is used as Ceph RBD.
Signed-off-by: Kevin Zhao <email@example.com>
It looks like the default bluestore that came with nautilus
is limiting us to a for-testing size of 10G regardless of what the
actual ceph volume is supposed to be. Try setting it to the size
we want (minus some room for overhead).
The use of apt to refresh repos is discouraged and prints the following
warning when used:
WARNING: apt does not have a stable CLI interface. Use with caution in scripts
The use of apt also appears to break on our Xenial based branches where
we enable the Xenial Queens Ubuntu Cloud Archive repos that are
unsigned. When using apt to refresh these repos apt returns a failure,
while apt-get only returns a warning.
This change simply switches to apt-get to avoid the above warning and to
allow the older Xenial based stable branches to continue to work.
We were using Jewel/Luminous. Being a developer tool, we should
be sticking with newer versions.
This patch set also adds the following changes
- Refactor setup_packages_for_manila_on_<distro> functions
- Removes ceph_init call. Seems it lost relevance
- Removes APT repositories setup. We directly use shaman/chacra
- Removes RUN_AS env var. It has been a while since Ceph
defaults to ceph user to run all the services. No longer needed.
- Removes sleep calls for services start checks. We use systemctl
- Adds more debugging logs
- Uses the search API from ceph shaman instead of hardwiring urls
- Adds the jq (JSON processor) dependency
Implement an old TODO item, but in the other way: instead of
enabling the feature on certain branches, disable it on the old
branches (anything still open - even EM - before queens)
and rely on the default value (True) otherwise.
The Manila driver is not WIP, it's used in many
production deployments since the Liberty release.
Set the option ENABLE_CEPH_MANILA to True in case,
so that the manila related setup will occur automatically
if manila is enabled in devstack.
Signed-off-by: Goutham Pacha Ravi <firstname.lastname@example.org>
Add an extra check to verify that ceph-mon service has started
before trying to retrieve its version.
An already existing function is being used, wait_for_daemon
Since we now guarantee that we are using systemctl, we can use
the is-active feature. If the service is running, the exit code
will be 0.
Also, change the command used to get the mon version. We can use
the ceph version command provided by the new cli instead of using
ceph daemon command which requires more privileges.
Upstart is not being used anymore (last release was Sept 2014)
Doesn't make sense to keep bits for this
Make this plugin compatible only with distros with systemctl
I5698e451861828a8b1240d046d1610d8d37ca5a2 introduced support for this
test in Stein so enable the compute feature from Stein onwards.
In change I43de36ab570af40bc837d859568f5428c167f083, we started
installing the 'python3-' variants of the 'python-' packages installed
by the 'ceph-common' package in 'install_ceph_remote'. In that change,
we made the assertion that we didn't need to "both hiding this behind
the 'python3_enabled' function or 'USE_PYTHON3' variable since (a) these
packages can happily coexist, (b) projects should be switching to Python
3 now, and (c) using these would require sourcing additional, otherwise
unnecessary devstack libraries just to use this simple function".
However, this didn't take into account the fact that this plugin is not
versioned. This means *any* job that uses this plugin, including things
like stable/pike, will now attempt to install the 'python3-' packages.
Since the base OS on stable/pike, Xenial (16.04), doesn't actually
provide these 'python3-' variants, the command will always fail.
Start hiding the command behind a 'use_python3' function call. Hopefully
by time we drop Python 2 support here we won't have maintained branches
using Xenial. If we do, we'll need to branch or something like that.
Signed-off-by: Stephen Finucane <email@example.com>
Previously, this command would simply install the 'ceph-common' package,
which includes a number of Python dependencies. Unfortunately, these
packages are the 'python-' variants  and there doesn't appear to be a
'ceph-common-python3' package or similar to install the 'python3-'
variants. As a result, we need to install the 'python3-' variants
manually to ensure consumers of the plugin (like nova) can switch to
Python 3 in their tests.
We don't bother hiding this behind the 'python3_enabled' function or
'USE_PYTHON3' variable since (a) these packages can happily coexist, (b)
projects should be switching to Python 3 now, and (c) using these would
require sourcing additional, otherwise unnecessary devstack libraries
just to use this simple function.
Signed-off-by: Stephen Finucane <firstname.lastname@example.org>
ceph-create-keys was being used to create keys.
This command has been deprecated and it does nothing.
For this reason, keys were not available when starting
daemons and this made the deployment to fail.
This change adds the correct key creation using ceph-authtool.
Co-Authored-By: Giulio Fidente <email@example.com>
The dependent nova fix resolves the issue with rbd and
shelve/unshelve testing in tempest. Re-enabling the test
needs to be branch-specific since devstack-plugin-ceph
is branch-less but the fixes in nova will be branch
specific so we don't want to enable this on any nova
branch that does not have the fix since it would break
the job on those branches.
Co-Authored-By: Matt Riedemann <firstname.lastname@example.org>
This patch adds support for installing, configuring all required
ceph-iscsi related packages and daemons. ceph-iscsi requires kernel
version 4.16 or greater.
To enable set
Adds new config options
CEPH_ISCSI_TARGET_IQN - the rbd-target-gw iqn to use to export volumes
CEPH_ISCSI_API_HOST - the rbd-target-api ip to use to listen on
CEPH_ISCSI_API_PORT - the rbd-target-api port
CEPH_ISCSI_API_USER - the rbd-target-api user for auth against the api
CEPH_ISCSI_API_PASSWORD - the rbd-target-api password for auth against the api
The following packages are required and their deps
tcmu-runner - this requires kernel version 4.16 and > to work. Ubuntu
doesn't have a prebuilt package for this, so we pull it down and compile it.
rtslib-fb - has a pypi package
configshell-fb - has a pypi package
targetcli-fb - doesn't have a pypi package.
ceph-iscsi - doesn't have a pypi package.
The reference documentaion to setup ceph-iscsi targets and daemons: