We're adding a fair amount of octopus (and later) only features now, and
at the time of this writing, pacific is already out. Stop defaulting to
nautilus and default to octopus instead.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
Some tests were not run, because entrypoint.sh used a fixed list of package,
which is easily forgotten to update. This change creates the list of
packages dynamically.
Signed-off-by: Sven Anderson <sven@redhat.com>
This change adds configurations for running the development
environment in a container, as supported by VSCode or GitHub
Codespaces.
Signed-off-by: Sven Anderson <sven@redhat.com>
Unless these apis are deprecated in the (far?) future it is safer to say
"not nautilus" rather than explicitly tag all current and future ceph
release codenames.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
Replace uses of the rbd-fuse virtual file system with command line
invocations of `rbd import` and `rbd export`. This allows us to drop
the dependency on rbd-fuse (and fuse entirely, again). Fuse requires
additional privs and special stuff so not using it makes running the
container simpler and more secure.
The only downside that I see to this change is that `rbd import` refuses
to overwrite existing images. This means the logic of the setup
function needed to be slightly changed but I don't consider it all
that different.
I did also slightly decrease the size of the image to ~500K. I didn't
think we needed to be copying so much zeros over the wire nor did
mirroring a lot of zeros demonstrate much IMO.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
Allow passing additional arguments for the entrypoint.sh script to
the test container. This is useful to limit the test run to
a single package with `--test-pkg=<X>` for example.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
When running the new test-multi-container make rule, I found that
podman generated "random" hex based hostnames for the containers.
These names work internally and do resolve but I found that putting
these in the ceph config files does not work as ceph sees them as
addresses, not hostnames, presumably due to the hex.
This change simply specifies the hostnames manually on the cli
so that both podman and docker should match docker's default behavior.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
With the infrastructure for running two ceph clusters now available,
we add tests to ensure the functionality of GetGlobalMirrorStatus in
the more typical case, when one or more mirroring clusters exist,
Signed-off-by: John Mulligan <jmulligan@redhat.com>
This function can be used to connect to a non-default ceph cluster,
in a simple, convenient way similar to the function we have for
connecting to the default cluster.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
This function is used to "manually" trigger a snapshot for snapshot
based mirroring. It is needed as a pre-req to test actual cross-cluster
mirroring and the full functionality of GetGlobalMirrorStatus.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
Later changes to the test Go code will make use of the MIRROR_CONF
variable to access the secondary ceph cluster.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
This function is added, along with required return types and some helper
functions, to support fetching the global mirroring status component
that makes up a major part of `rbd mirror image status` command's
output.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
Remove the logic previously ported over to internal/commands and just
leave the functions in place as to not have to excessively touch the
existing code.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
Now that we have shared support working with "command json" we attempt
a minimal conversion, using aliases where appropriate, to the
new commands.Response type.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
Uintptr are guaranteed to be at least of the size of a pointer. However, in
theory it could be larger. Since the code of PtrGuard assumes both have the
same size and to be on the safe side, this change adds a compile-time check,
that the sizes of uintptr and pointers are the same.
Signed-off-by: Sven Anderson <sven@anderson.de>
The current version we are testing with is no longer supported.
This updates Go to a supported released version.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
When invoking podman/docker/etc. it is no longer needed to add fuse
support, or (AFAICT) keeping cap SYS_ADMIN.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
Now that none of the tests need an external (fuse) mount of the fs under
test we can eliminate fuse from our ceph setup script.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
Now that there are no tests using the fuse mount point and the useMount
function that detects an external mount point is needed, we can remove
the useMount function itself and the env var used to control it.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
The external mount point was mainly used for stat prior to a Stat
function being part of go-ceph's cephfs package. Now that we have
Statx, we can replace the need for the external mount and os.Stat.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
The external mount point was mainly used for stat prior to a Stat
function being part of go-ceph's cephfs package. Now that we have
Statx, we can replace the need for the external mount and os.Stat.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
The external mount point was mainly used for stat prior to a Stat
function being part of go-ceph's cephfs package. Now that we have
Statx, we can replace the need for the external mount and os.Stat.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
The external mount point was mainly used for stat prior to a Stat
function being part of go-ceph's cephfs package. Now that we have
Statx, we can replace the need for the external mount and os.Stat.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
This adds a test that assures that the special //go:uintptrescapes comment
before the storeUntilRelease() function works as intended, that is the
garbage collector doesn't touch the object referenced by the uintptr until
the function returns after Release() is called. The test will fail if the
//go:uintptrescapes comment is disabled (removed) or stops working in future
versions of go.
Signed-off-by: Sven Anderson <sven@redhat.com>
In order to run CI jobs also on PRs that are based on other PRs, this
change adds the pattern 'pr/**' to the tested base branches. That
means, if PRs are pushed that are based on branches that start with
pr/... these PRs are also get tested. So, if we - by convention - push
PRs to branches like for example pr/ansiwen/myfix42, then all PRs
that are not based on master but another PR get tested as well.
Signed-off-by: Sven Anderson <sven@redhat.com>