The Ginkgo `Skip()` function does not only skip the current `By()`, but
it's parent `It()` function. That means other `By()` tests will not be
run after a `Skip()` was called.
Replacing the `Skip()` with an early return of the function makes sure
that all `By()` tests are executed.
Signed-off-by: Niels de Vos <ndevos@ibm.com>
When running on Docker Swarm, the RBD-healer fails with an error like:
> healer had failures, err failed to get cluster config: unable to load
> in-cluster configuration, KUBERNETES_SERVICE_HOST and
> KUBERNETES_SERVICE_PORT must be defined
Before starting the healer, check if we're running on Kubernetes, so
that non-Kubernetes platforms do not get confusing warnings.
Updates: #3769
Signed-off-by: Niels de Vos <ndevos@ibm.com>
Running cephcsi in docker swarm currently requires serving both
the nodeserver and controllerserver over the same socket.
This leads to errors like
> FATAL: [core] grpc: Server.RegisterService found duplicate
> service registration for \"fence.FenceController\""
...since `FenceController` is registererd once per server type.
Commit proposes simple fix by registering `FenceController` only once
when at least one of `IsControllerServer` or `IsNodeServer` is `true`.
Signed-off-by: monoamin <precision1998@gmail.com>
we should continue to cleanup the volume info like the
omap data, mappings from the group if the image is not
part of the goup anymore.
Signed-off-by: Nikhil-Ladha <nikhilladha1999@gmail.com>
The `GetID()` and `GetName()` functions can be confusing, as names and
ID's are not always distinctive enough. The name is used to reference an
object that exists in a pool. The ID the CSI-handle formatted and can be
used to locate the entry for the object in the journal.
Signed-off-by: Niels de Vos <ndevos@ibm.com>
When a VolumeGroup has been created through the CSI-Addons API, the
VolumeGroupSnapshot CSI API will now use the existing VolumeGroup. There
are checks in place to validate that the Volumes in the VolumeGroup
match the Volumes in the VolumeGroupSnapshot request.
Signed-off-by: Niels de Vos <ndevos@ibm.com>
CompareVolumesInGroup() verifies that all the volumes are part of the
given VolumeGroup. It does so by obtaining the VolumeGroupID for each
volume with GetVolumeGroupByID().
The helper VolumesInSameGroup() verifies that all volumes belong to the
same (or no) VolumeGroup. It can be called by CSI(-Addons) procedures
before acting on a VolumeGroup.
Signed-off-by: Niels de Vos <ndevos@ibm.com>
The Manager.MakeVolumeGroupID() function can be used to build a CSI
VolumeGroupID from the backend (pool and name of the RBD-group). This
will be used when checking if an RBD-image belongs to a group already.
It is also possible to resolve the VolumeGroup by passing the
VolumeGroupID to the existing Manager.GetVolumeGroupByID() function.
Signed-off-by: Niels de Vos <ndevos@ibm.com>
The `prefix` is passed to several functions, but it can easily be
obtained with a small helper function. This makes calling the functions
a little simpler.
Signed-off-by: Niels de Vos <ndevos@ibm.com>
When an incorrect volumeID is passed while creating a VolumeGroup, the
`.Destroy()` function caused a panic. By appending each volume to the
volumes slice, the slice won't contain any `nil` volumes anymore.
Signed-off-by: Niels de Vos <ndevos@ibm.com>
fix codespell for "respository" and update ignore word list.
Fix extra whitespace lint issue from "tracevol.py" script
Signed-off-by: Nikhil-Ladha <nikhilladha1999@gmail.com>
VolumeGroup interface has more than 10 methods and it causes
golangci-lint to fail. Moving the `Destroy()` method to a base
interface journalledObject.
Signed-off-by: Praveen M <m.praveen@ibm.com>
The old syntax is almost deprecated,and there are reasons to upgrade it
- old syntax is lack of fsid(critical for debugging and observability)
- mds_namespace is deprecated, it might be inappropriate to continue using it
- kernel will try new syntax first and then the old one, it's a waste
Signed-off-by: mageekchiu <qiukang@mail.ustc.edu.cn>
While running golangci there are messages logged about deprecated
configuration options and deactivated linters. The golangci.yml file
needs a few small corrections to address those warnings.
Signed-off-by: Niels de Vos <ndevos@ibm.com>
The e2e/go.mod has been updated wih a newer Kubernetes version. Now `go
mod verify` complains about the need to run `go mod tidy` in the root of
the project.
It seems the previous Kubernetes update in the root of the project did
not update and vendor everything for some reason?
Fixes: 337d9a3 "rebase: bump k8s.io/kubernetes in the k8s-dependencies group"
Signed-off-by: Niels de Vos <ndevos@ibm.com>
Currently, Ceph-CSI deletes intermediate RBD snapshot on
temporary cloned images (`csi-vol-xxxx-temp@csi-vol-xxxx`)
which is the parent of the final clone image.
The parent-child mirroring requires both the parent and child
images to be present (i.e, not in trash).
This commit makes enhancement to `createRBDClone` function by
introducing `deleteSnap` parameter. If `deleteSnap` is true,
the snapshot is deleted after the clone is created.
This is required to support mirroring of child image with its
parent image.
Signed-off-by: Praveen M <m.praveen@ibm.com>
Currently, while preparing a volume for snapshot,
the depthToAvoidFlatten is set to 2. This accounts one
for snapshot and another since parent of the volume is
flattened.
This commit modifies the depth to 3 to also account for
future PVC restore since
- snapshot alone is useless and it is very likely to be restore
at one point in time.
- this ensures snapshot is not flattened when restore does occur.
- flattening of snapshot in the above case will make the snapshot
no longer eligible for changed block tracking(snap diff)
operation.
- maintain similarity with PVC-PVC clone operation which currently
depthToAvoidFlatten set to 1.
Signed-off-by: Rakshith R <rar@redhat.com>
The inverse checking and returning of is-a-mounted-path makes it
difficult to understand the function. It is easier to follow the code
when the function just returns what it says it does, hence added the
comment for the function too.
Some errors were returned directly, others were converted to gRPC
errors. This has been corrected now too, and the caller converts the
plain error to a gRPC error now.
Signed-off-by: Niels de Vos <ndevos@ibm.com>
`IsLikelyNotMountPoint()` is an optimized version for `IsMountPoint()`
which can not detect all type of mounts (anymore). The slower
`IsMountPoint()` is more safe to use. This can cause a slight
performance regression in the case there are many mountpoints on the
system, but correctness is more important than speed while mounting.
Fixes: #4633
Signed-off-by: Niels de Vos <ndevos@ibm.com>
This commit modifies listSnapAndChildren() to make use of
ListChildrenAttributes() instead of ListChildren() which
allows us to filter out images in trash.
This commit also order the alive images so that temp clone
images are followed by images backing volume snapshots so
that temp clone images are flattened first.
Signed-off-by: Rakshith R <rar@redhat.com>