mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-06-13 02:33:34 +00:00
rbd: set cluster Name as metadata on the image
This change helps read the cluster name from the cmdline args, the provisioner will set the same on the RBD images. Fixes: #2973 Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
This commit is contained in:
committed by
mergify[bot]
parent
deb003e605
commit
2880c25fd6
@ -51,6 +51,9 @@ type ControllerServer struct {
|
||||
|
||||
// A map storing all volumes/snapshots with ongoing operations.
|
||||
OperationLocks *util.OperationLock
|
||||
|
||||
// Cluster name
|
||||
ClusterName string
|
||||
}
|
||||
|
||||
func (cs *ControllerServer) validateVolumeReq(ctx context.Context, req *csi.CreateVolumeRequest) error {
|
||||
@ -132,6 +135,8 @@ func (cs *ControllerServer) parseVolCreateRequest(
|
||||
return nil, status.Error(codes.InvalidArgument, err.Error())
|
||||
}
|
||||
|
||||
rbdVol.ClusterName = cs.ClusterName
|
||||
|
||||
// if the KMS is of type VaultToken, additional metadata is needed
|
||||
// depending on the tenant, the KMS can be configured with other
|
||||
// options
|
||||
@ -1090,6 +1095,7 @@ func (cs *ControllerServer) CreateSnapshot(
|
||||
|
||||
// Update the metadata on snapshot not on the original image
|
||||
rbdVol.RbdImageName = rbdSnap.RbdSnapName
|
||||
rbdVol.ClusterName = cs.ClusterName
|
||||
|
||||
err = rbdVol.unsetAllMetadata(k8s.GetVolumeMetadataKeys())
|
||||
if err != nil {
|
||||
|
@ -161,6 +161,7 @@ func (r *Driver) Run(conf *util.Config) {
|
||||
|
||||
if conf.IsControllerServer {
|
||||
r.cs = NewControllerServer(r.cd)
|
||||
r.cs.ClusterName = conf.ClusterName
|
||||
r.rs = NewReplicationServer(r.cs)
|
||||
}
|
||||
if !conf.IsControllerServer && !conf.IsNodeServer {
|
||||
|
@ -541,7 +541,8 @@ func RegenerateJournal(
|
||||
claimName,
|
||||
volumeID,
|
||||
requestName,
|
||||
owner string,
|
||||
owner,
|
||||
clusterName string,
|
||||
cr *util.Credentials,
|
||||
) (string, error) {
|
||||
ctx := context.Background()
|
||||
@ -555,6 +556,7 @@ func RegenerateJournal(
|
||||
|
||||
rbdVol = &rbdVolume{}
|
||||
rbdVol.VolID = volumeID
|
||||
rbdVol.ClusterName = clusterName
|
||||
|
||||
err = vi.DecomposeCSIID(rbdVol.VolID)
|
||||
if err != nil {
|
||||
|
@ -78,6 +78,9 @@ const (
|
||||
|
||||
// krbd attribute file to check supported features.
|
||||
krbdSupportedFeaturesFile = "/sys/bus/rbd/supported_features"
|
||||
|
||||
// clusterNameKey cluster Key, set on RBD image.
|
||||
clusterNameKey = "csi.ceph.com/cluster/name"
|
||||
)
|
||||
|
||||
// rbdImage contains common attributes and methods for the rbdVolume and
|
||||
@ -121,6 +124,9 @@ type rbdImage struct {
|
||||
// Primary represent if the image is primary or not.
|
||||
Primary bool
|
||||
|
||||
// Cluster name
|
||||
ClusterName string
|
||||
|
||||
// encryption provides access to optional VolumeEncryption functions
|
||||
encryption *util.VolumeEncryption
|
||||
// Owner is the creator (tenant, Kubernetes Namespace) of the volume
|
||||
@ -2001,6 +2007,14 @@ func (rv *rbdVolume) setAllMetadata(parameters map[string]string) error {
|
||||
}
|
||||
}
|
||||
|
||||
if rv.ClusterName != "" {
|
||||
err := rv.SetMetadata(clusterNameKey, rv.ClusterName)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to set metadata key %q, value %q on image: %w",
|
||||
clusterNameKey, rv.ClusterName, err)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user