diff --git a/e2e/utils.go b/e2e/utils.go index d84eb94ef..97a8eedae 100644 --- a/e2e/utils.go +++ b/e2e/utils.go @@ -418,7 +418,7 @@ func createRBDSecret(c kubernetes.Interface, f *framework.Framework) { // updateSecretForEncryption is an hack to update the secrets created by rook to // include the encyption key -// TODO in cephcsi we need to create own users in ceph cluster and use it for E2E +// TODO in cephcsi we need to create own users in ceph cluster and use it for E2E. func updateSecretForEncryption(c kubernetes.Interface) error { secrets, err := c.CoreV1().Secrets(rookNamespace).Get(context.TODO(), rbdProvisionerSecretName, metav1.GetOptions{}) if err != nil { @@ -633,7 +633,7 @@ func unmarshal(fileName string, obj interface{}) error { } // createPVCAndApp creates pvc and pod -// if name is not empty same will be set as pvc and app name +// if name is not empty same will be set as pvc and app name. func createPVCAndApp(name string, f *framework.Framework, pvc *v1.PersistentVolumeClaim, app *v1.Pod, pvcTimeout int) error { if name != "" { pvc.Name = name @@ -649,7 +649,7 @@ func createPVCAndApp(name string, f *framework.Framework, pvc *v1.PersistentVolu } // deletePVCAndApp delete pvc and pod -// if name is not empty same will be set as pvc and app name +// if name is not empty same will be set as pvc and app name. func deletePVCAndApp(name string, f *framework.Framework, pvc *v1.PersistentVolumeClaim, app *v1.Pod) error { if name != "" { pvc.Name = name @@ -703,7 +703,7 @@ type imageInfoFromPVC struct { } // getImageInfoFromPVC reads volume handle of the bound PV to the passed in PVC, -// and returns imageInfoFromPVC or error +// and returns imageInfoFromPVC or error. func getImageInfoFromPVC(pvcNamespace, pvcName string, f *framework.Framework) (imageInfoFromPVC, error) { var imageData imageInfoFromPVC @@ -756,7 +756,7 @@ func getMountType(appName, appNamespace, mountPath string, f *framework.Framewor // * authenticate with vault and ignore any stdout (we do not need output) // * issue get request for particular key // resulting in stdOut (first entry in tuple) - output that contains the key -// or stdErr (second entry in tuple) - error getting the key +// or stdErr (second entry in tuple) - error getting the key. func readVaultSecret(key string, f *framework.Framework) (string, string) { loginCmd := fmt.Sprintf("vault login -address=%s sample_root_token_id > /dev/null", vaultAddr) readSecret := fmt.Sprintf("vault kv get -address=%s %s%s", vaultAddr, vaultSecretNs, key) diff --git a/internal/cephfs/cephfs_util.go b/internal/cephfs/cephfs_util.go index cda3b310a..40e505e68 100644 --- a/internal/cephfs/cephfs_util.go +++ b/internal/cephfs/cephfs_util.go @@ -23,12 +23,12 @@ import ( "github.com/ceph/ceph-csi/internal/util" ) -// MDSMap is a representation of the mds map sub-structure returned by 'ceph fs get' +// MDSMap is a representation of the mds map sub-structure returned by 'ceph fs get'. type MDSMap struct { FilesystemName string `json:"fs_name"` } -// CephFilesystemDetails is a representation of the main json structure returned by 'ceph fs get' +// CephFilesystemDetails is a representation of the main json structure returned by 'ceph fs get'. type CephFilesystemDetails struct { ID int64 `json:"id"` MDSMap MDSMap `json:"mdsmap"` @@ -53,7 +53,7 @@ func getFscID(ctx context.Context, monitors string, cr *util.Credentials, fsName return fsDetails.ID, nil } -// CephFilesystem is a representation of the json structure returned by 'ceph fs ls' +// CephFilesystem is a representation of the json structure returned by 'ceph fs ls'. type CephFilesystem struct { Name string `json:"name"` MetadataPool string `json:"metadata_pool"` @@ -87,7 +87,7 @@ func getMetadataPool(ctx context.Context, monitors string, cr *util.Credentials, return "", util.ErrPoolNotFound{Pool: fsName, Err: fmt.Errorf("fsName (%s) not found in Ceph cluster", fsName)} } -// CephFilesystemDump is a representation of the main json structure returned by 'ceph fs dump' +// CephFilesystemDump is a representation of the main json structure returned by 'ceph fs dump'. type CephFilesystemDump struct { Filesystems []CephFilesystemDetails `json:"filesystems"` } diff --git a/internal/cephfs/controllerserver.go b/internal/cephfs/controllerserver.go index fa8502486..255e81219 100644 --- a/internal/cephfs/controllerserver.go +++ b/internal/cephfs/controllerserver.go @@ -38,7 +38,7 @@ type ControllerServer struct { VolumeLocks *util.VolumeLocks } -// createBackingVolume creates the backing subvolume and on any error cleans up any created entities +// createBackingVolume creates the backing subvolume and on any error cleans up any created entities. func (cs *ControllerServer) createBackingVolume(ctx context.Context, volOptions *volumeOptions, vID *volumeIdentifier, secret map[string]string) error { cr, err := util.NewAdminCredentials(secret) if err != nil { @@ -54,7 +54,7 @@ func (cs *ControllerServer) createBackingVolume(ctx context.Context, volOptions return nil } -// CreateVolume creates a reservation and the volume in backend, if it is not already present +// CreateVolume creates a reservation and the volume in backend, if it is not already present. func (cs *ControllerServer) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest) (*csi.CreateVolumeResponse, error) { if err := cs.validateCreateVolumeRequest(req); err != nil { klog.Errorf(util.Log(ctx, "CreateVolumeRequest validation failed: %v"), err) @@ -150,7 +150,7 @@ func (cs *ControllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol return &csi.CreateVolumeResponse{Volume: volume}, nil } -// DeleteVolume deletes the volume in backend and its reservation +// DeleteVolume deletes the volume in backend and its reservation. func (cs *ControllerServer) DeleteVolume(ctx context.Context, req *csi.DeleteVolumeRequest) (*csi.DeleteVolumeResponse, error) { if err := cs.validateDeleteVolumeRequest(); err != nil { klog.Errorf(util.Log(ctx, "DeleteVolumeRequest validation failed: %v"), err) @@ -256,7 +256,7 @@ func (cs *ControllerServer) ValidateVolumeCapabilities( }, nil } -// ControllerExpandVolume expands CephFS Volumes on demand based on resizer request +// ControllerExpandVolume expands CephFS Volumes on demand based on resizer request. func (cs *ControllerServer) ControllerExpandVolume(ctx context.Context, req *csi.ControllerExpandVolumeRequest) (*csi.ControllerExpandVolumeResponse, error) { if err := cs.validateExpandVolumeRequest(req); err != nil { klog.Errorf(util.Log(ctx, "ControllerExpandVolumeRequest validation failed: %v"), err) diff --git a/internal/cephfs/driver.go b/internal/cephfs/driver.go index df14c216d..ae9616131 100644 --- a/internal/cephfs/driver.go +++ b/internal/cephfs/driver.go @@ -37,7 +37,7 @@ const ( radosNamespace = "csi" ) -// Driver contains the default identity,node and controller struct +// Driver contains the default identity,node and controller struct. type Driver struct { cd *csicommon.CSIDriver @@ -56,19 +56,19 @@ var ( volJournal *journal.Config ) -// NewDriver returns new ceph driver +// NewDriver returns new ceph driver. func NewDriver() *Driver { return &Driver{} } -// NewIdentityServer initialize a identity server for ceph CSI driver +// NewIdentityServer initialize a identity server for ceph CSI driver. func NewIdentityServer(d *csicommon.CSIDriver) *IdentityServer { return &IdentityServer{ DefaultIdentityServer: csicommon.NewDefaultIdentityServer(d), } } -// NewControllerServer initialize a controller server for ceph CSI driver +// NewControllerServer initialize a controller server for ceph CSI driver. func NewControllerServer(d *csicommon.CSIDriver) *ControllerServer { return &ControllerServer{ DefaultControllerServer: csicommon.NewDefaultControllerServer(d), @@ -85,7 +85,7 @@ func NewNodeServer(d *csicommon.CSIDriver, t string, topology map[string]string) } // Run start a non-blocking grpc controller,node and identityserver for -// ceph CSI driver which can serve multiple parallel requests +// ceph CSI driver which can serve multiple parallel requests. func (fs *Driver) Run(conf *util.Config) { var err error var topology map[string]string diff --git a/internal/cephfs/errors.go b/internal/cephfs/errors.go index 7cacf72a8..13536d558 100644 --- a/internal/cephfs/errors.go +++ b/internal/cephfs/errors.go @@ -17,7 +17,7 @@ limitations under the License. package cephfs // ErrInvalidVolID is returned when a CSI passed VolumeID is not conformant to any known volume ID -// formats +// formats. type ErrInvalidVolID struct { err error } @@ -33,7 +33,7 @@ func (e ErrInvalidVolID) Unwrap() error { } // ErrNonStaticVolume is returned when a volume is detected as not being -// statically provisioned +// statically provisioned. type ErrNonStaticVolume struct { err error } @@ -48,7 +48,7 @@ func (e ErrNonStaticVolume) Unwrap() error { return e.err } -// ErrVolumeNotFound is returned when a subvolume is not found in CephFS +// ErrVolumeNotFound is returned when a subvolume is not found in CephFS. type ErrVolumeNotFound struct { err error } diff --git a/internal/cephfs/fsjournal.go b/internal/cephfs/fsjournal.go index 8109f04bd..71ce6b6ef 100644 --- a/internal/cephfs/fsjournal.go +++ b/internal/cephfs/fsjournal.go @@ -24,7 +24,7 @@ import ( ) // volumeIdentifier structure contains an association between the CSI VolumeID to its subvolume -// name on the backing CephFS instance +// name on the backing CephFS instance. type volumeIdentifier struct { FsSubvolName string VolumeID string @@ -100,7 +100,7 @@ func checkVolExists(ctx context.Context, volOptions *volumeOptions, secret map[s return &vid, nil } -// undoVolReservation is a helper routine to undo a name reservation for a CSI VolumeName +// undoVolReservation is a helper routine to undo a name reservation for a CSI VolumeName. func undoVolReservation(ctx context.Context, volOptions *volumeOptions, vid volumeIdentifier, secret map[string]string) error { cr, err := util.NewAdminCredentials(secret) if err != nil { @@ -135,7 +135,7 @@ func updateTopologyConstraints(volOpts *volumeOptions) error { } // reserveVol is a helper routine to request a UUID reservation for the CSI VolumeName and, -// to generate the volume identifier for the reserved UUID +// to generate the volume identifier for the reserved UUID. func reserveVol(ctx context.Context, volOptions *volumeOptions, secret map[string]string) (*volumeIdentifier, error) { var ( vid volumeIdentifier diff --git a/internal/cephfs/identityserver.go b/internal/cephfs/identityserver.go index 79511b6d6..d5ec957b2 100644 --- a/internal/cephfs/identityserver.go +++ b/internal/cephfs/identityserver.go @@ -30,7 +30,7 @@ type IdentityServer struct { *csicommon.DefaultIdentityServer } -// GetPluginCapabilities returns available capabilities of the ceph driver +// GetPluginCapabilities returns available capabilities of the ceph driver. func (is *IdentityServer) GetPluginCapabilities(ctx context.Context, req *csi.GetPluginCapabilitiesRequest) (*csi.GetPluginCapabilitiesResponse, error) { return &csi.GetPluginCapabilitiesResponse{ Capabilities: []*csi.PluginCapability{ diff --git a/internal/cephfs/nodeserver.go b/internal/cephfs/nodeserver.go index 35108ca5e..c8c9f1eeb 100644 --- a/internal/cephfs/nodeserver.go +++ b/internal/cephfs/nodeserver.go @@ -197,7 +197,7 @@ func (*NodeServer) mount(ctx context.Context, volOptions *volumeOptions, req *cs } // NodePublishVolume mounts the volume mounted to the staging path to the target -// path +// path. func (ns *NodeServer) NodePublishVolume(ctx context.Context, req *csi.NodePublishVolumeRequest) (*csi.NodePublishVolumeResponse, error) { mountOptions := []string{"bind", "_netdev"} if err := util.ValidateNodePublishVolumeRequest(req); err != nil { @@ -250,7 +250,7 @@ func (ns *NodeServer) NodePublishVolume(ctx context.Context, req *csi.NodePublis return &csi.NodePublishVolumeResponse{}, nil } -// NodeUnpublishVolume unmounts the volume from the target path +// NodeUnpublishVolume unmounts the volume from the target path. func (ns *NodeServer) NodeUnpublishVolume(ctx context.Context, req *csi.NodeUnpublishVolumeRequest) (*csi.NodeUnpublishVolumeResponse, error) { var err error if err = util.ValidateNodeUnpublishVolumeRequest(req); err != nil { @@ -281,7 +281,7 @@ func (ns *NodeServer) NodeUnpublishVolume(ctx context.Context, req *csi.NodeUnpu return &csi.NodeUnpublishVolumeResponse{}, nil } -// NodeUnstageVolume unstages the volume from the staging path +// NodeUnstageVolume unstages the volume from the staging path. func (ns *NodeServer) NodeUnstageVolume(ctx context.Context, req *csi.NodeUnstageVolumeRequest) (*csi.NodeUnstageVolumeResponse, error) { var err error if err = util.ValidateNodeUnstageVolumeRequest(req); err != nil { @@ -306,7 +306,7 @@ func (ns *NodeServer) NodeUnstageVolume(ctx context.Context, req *csi.NodeUnstag return &csi.NodeUnstageVolumeResponse{}, nil } -// NodeGetCapabilities returns the supported capabilities of the node server +// NodeGetCapabilities returns the supported capabilities of the node server. func (ns *NodeServer) NodeGetCapabilities(ctx context.Context, req *csi.NodeGetCapabilitiesRequest) (*csi.NodeGetCapabilitiesResponse, error) { return &csi.NodeGetCapabilitiesResponse{ Capabilities: []*csi.NodeServiceCapability{ diff --git a/internal/cephfs/util.go b/internal/cephfs/util.go index 8ae92ae61..a0aee65de 100644 --- a/internal/cephfs/util.go +++ b/internal/cephfs/util.go @@ -76,7 +76,7 @@ func execCommandJSON(ctx context.Context, v interface{}, program string, args .. return nil } -// Controller service request validation +// Controller service request validation. func (cs *ControllerServer) validateCreateVolumeRequest(req *csi.CreateVolumeRequest) error { if err := cs.Driver.ValidateControllerServiceRequest(csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME); err != nil { return fmt.Errorf("invalid CreateVolumeRequest: %v", err) @@ -108,7 +108,7 @@ func (cs *ControllerServer) validateDeleteVolumeRequest() error { return nil } -// Controller expand volume request validation +// Controller expand volume request validation. func (cs *ControllerServer) validateExpandVolumeRequest(req *csi.ControllerExpandVolumeRequest) error { if err := cs.Driver.ValidateControllerServiceRequest(csi.ControllerServiceCapability_RPC_EXPAND_VOLUME); err != nil { return fmt.Errorf("invalid ExpandVolumeRequest: %v", err) diff --git a/internal/cephfs/volumemounter.go b/internal/cephfs/volumemounter.go index d5020c551..127e450ea 100644 --- a/internal/cephfs/volumemounter.go +++ b/internal/cephfs/volumemounter.go @@ -67,7 +67,7 @@ var ( ) // Load available ceph mounters installed on system into availableMounters -// Called from driver.go's Run() +// Called from driver.go's Run(). func loadAvailableMounters(conf *util.Config) error { // #nosec fuseMounterProbe := exec.Command("ceph-fuse", "--version") diff --git a/internal/cephfs/volumeoptions.go b/internal/cephfs/volumeoptions.go index c8f20c83c..9ce62ce39 100644 --- a/internal/cephfs/volumeoptions.go +++ b/internal/cephfs/volumeoptions.go @@ -142,7 +142,7 @@ func getClusterInformation(options map[string]string) (*util.ClusterInfo, error) } // newVolumeOptions generates a new instance of volumeOptions from the provided -// CSI request parameters +// CSI request parameters. func newVolumeOptions(ctx context.Context, requestName string, req *csi.CreateVolumeRequest, secret map[string]string) (*volumeOptions, error) { var ( @@ -218,7 +218,7 @@ func newVolumeOptions(ctx context.Context, requestName string, req *csi.CreateVo } // newVolumeOptionsFromVolID generates a new instance of volumeOptions and volumeIdentifier -// from the provided CSI VolumeID +// from the provided CSI VolumeID. func newVolumeOptionsFromVolID(ctx context.Context, volID string, volOpt, secrets map[string]string) (*volumeOptions, *volumeIdentifier, error) { var ( vi util.CSIIdentifier @@ -308,7 +308,7 @@ func newVolumeOptionsFromVolID(ctx context.Context, volID string, volOpt, secret } // newVolumeOptionsFromMonitorList generates a new instance of volumeOptions and -// volumeIdentifier from the provided CSI volume context +// volumeIdentifier from the provided CSI volume context. func newVolumeOptionsFromMonitorList(volID string, options, secrets map[string]string) (*volumeOptions, *volumeIdentifier, error) { var ( opts volumeOptions @@ -361,7 +361,7 @@ func newVolumeOptionsFromMonitorList(volID string, options, secrets map[string]s // newVolumeOptionsFromStaticVolume generates a new instance of volumeOptions and // volumeIdentifier from the provided CSI volume context, if the provided context is -// detected to be a statically provisioned volume +// detected to be a statically provisioned volume. func newVolumeOptionsFromStaticVolume(volID string, options map[string]string) (*volumeOptions, *volumeIdentifier, error) { var ( opts volumeOptions diff --git a/internal/csi-common/controllerserver-default.go b/internal/csi-common/controllerserver-default.go index 0917316db..dc3227596 100644 --- a/internal/csi-common/controllerserver-default.go +++ b/internal/csi-common/controllerserver-default.go @@ -26,38 +26,38 @@ import ( "google.golang.org/grpc/status" ) -// DefaultControllerServer points to default driver +// DefaultControllerServer points to default driver. type DefaultControllerServer struct { Driver *CSIDriver } -// ControllerPublishVolume publish volume on node +// ControllerPublishVolume publish volume on node. func (cs *DefaultControllerServer) ControllerPublishVolume(ctx context.Context, req *csi.ControllerPublishVolumeRequest) (*csi.ControllerPublishVolumeResponse, error) { return nil, status.Error(codes.Unimplemented, "") } -// ControllerUnpublishVolume unpublish on node +// ControllerUnpublishVolume unpublish on node. func (cs *DefaultControllerServer) ControllerUnpublishVolume(ctx context.Context, req *csi.ControllerUnpublishVolumeRequest) (*csi.ControllerUnpublishVolumeResponse, error) { return nil, status.Error(codes.Unimplemented, "") } -// ControllerExpandVolume expand volume +// ControllerExpandVolume expand volume. func (cs *DefaultControllerServer) ControllerExpandVolume(ctx context.Context, req *csi.ControllerExpandVolumeRequest) (*csi.ControllerExpandVolumeResponse, error) { return nil, status.Error(codes.Unimplemented, "") } -// ListVolumes lists volumes +// ListVolumes lists volumes. func (cs *DefaultControllerServer) ListVolumes(ctx context.Context, req *csi.ListVolumesRequest) (*csi.ListVolumesResponse, error) { return nil, status.Error(codes.Unimplemented, "") } -// GetCapacity get volume capacity +// GetCapacity get volume capacity. func (cs *DefaultControllerServer) GetCapacity(ctx context.Context, req *csi.GetCapacityRequest) (*csi.GetCapacityResponse, error) { return nil, status.Error(codes.Unimplemented, "") } // ControllerGetCapabilities implements the default GRPC callout. -// Default supports all capabilities +// Default supports all capabilities. func (cs *DefaultControllerServer) ControllerGetCapabilities(ctx context.Context, req *csi.ControllerGetCapabilitiesRequest) (*csi.ControllerGetCapabilitiesResponse, error) { util.TraceLog(ctx, "Using default ControllerGetCapabilities") @@ -66,17 +66,17 @@ func (cs *DefaultControllerServer) ControllerGetCapabilities(ctx context.Context }, nil } -// CreateSnapshot creates snapshot +// CreateSnapshot creates snapshot. func (cs *DefaultControllerServer) CreateSnapshot(ctx context.Context, req *csi.CreateSnapshotRequest) (*csi.CreateSnapshotResponse, error) { return nil, status.Error(codes.Unimplemented, "") } -// DeleteSnapshot deletes snapshot +// DeleteSnapshot deletes snapshot. func (cs *DefaultControllerServer) DeleteSnapshot(ctx context.Context, req *csi.DeleteSnapshotRequest) (*csi.DeleteSnapshotResponse, error) { return nil, status.Error(codes.Unimplemented, "") } -// ListSnapshots lists snapshots +// ListSnapshots lists snapshots. func (cs *DefaultControllerServer) ListSnapshots(ctx context.Context, req *csi.ListSnapshotsRequest) (*csi.ListSnapshotsResponse, error) { return nil, status.Error(codes.Unimplemented, "") } diff --git a/internal/csi-common/driver.go b/internal/csi-common/driver.go index 9f4bf4e34..4ef423657 100644 --- a/internal/csi-common/driver.go +++ b/internal/csi-common/driver.go @@ -27,7 +27,7 @@ import ( "github.com/ceph/ceph-csi/internal/util" ) -// CSIDriver stores driver information +// CSIDriver stores driver information. type CSIDriver struct { name string nodeID string @@ -67,7 +67,7 @@ func NewCSIDriver(name, v, nodeID string) *CSIDriver { } // ValidateControllerServiceRequest validates the controller -// plugin capabilities +// plugin capabilities. func (d *CSIDriver) ValidateControllerServiceRequest(c csi.ControllerServiceCapability_RPC_Type) error { if c == csi.ControllerServiceCapability_RPC_UNKNOWN { return nil @@ -82,7 +82,7 @@ func (d *CSIDriver) ValidateControllerServiceRequest(c csi.ControllerServiceCapa } // AddControllerServiceCapabilities stores the controller capabilities -// in driver object +// in driver object. func (d *CSIDriver) AddControllerServiceCapabilities(cl []csi.ControllerServiceCapability_RPC_Type) { var csc []*csi.ControllerServiceCapability @@ -94,7 +94,7 @@ func (d *CSIDriver) AddControllerServiceCapabilities(cl []csi.ControllerServiceC d.cap = csc } -// AddVolumeCapabilityAccessModes stores volume access modes +// AddVolumeCapabilityAccessModes stores volume access modes. func (d *CSIDriver) AddVolumeCapabilityAccessModes(vc []csi.VolumeCapability_AccessMode_Mode) []*csi.VolumeCapability_AccessMode { var vca []*csi.VolumeCapability_AccessMode for _, c := range vc { @@ -105,7 +105,7 @@ func (d *CSIDriver) AddVolumeCapabilityAccessModes(vc []csi.VolumeCapability_Acc return vca } -// GetVolumeCapabilityAccessModes returns access modes +// GetVolumeCapabilityAccessModes returns access modes. func (d *CSIDriver) GetVolumeCapabilityAccessModes() []*csi.VolumeCapability_AccessMode { return d.vc } diff --git a/internal/csi-common/identityserver-default.go b/internal/csi-common/identityserver-default.go index f9884758c..36a4c136e 100644 --- a/internal/csi-common/identityserver-default.go +++ b/internal/csi-common/identityserver-default.go @@ -26,12 +26,12 @@ import ( "google.golang.org/grpc/status" ) -// DefaultIdentityServer stores driver object +// DefaultIdentityServer stores driver object. type DefaultIdentityServer struct { Driver *CSIDriver } -// GetPluginInfo returns plugin information +// GetPluginInfo returns plugin information. func (ids *DefaultIdentityServer) GetPluginInfo(ctx context.Context, req *csi.GetPluginInfoRequest) (*csi.GetPluginInfoResponse, error) { util.TraceLog(ctx, "Using default GetPluginInfo") @@ -49,12 +49,12 @@ func (ids *DefaultIdentityServer) GetPluginInfo(ctx context.Context, req *csi.Ge }, nil } -// Probe returns empty response +// Probe returns empty response. func (ids *DefaultIdentityServer) Probe(ctx context.Context, req *csi.ProbeRequest) (*csi.ProbeResponse, error) { return &csi.ProbeResponse{}, nil } -// GetPluginCapabilities returns plugin capabilities +// GetPluginCapabilities returns plugin capabilities. func (ids *DefaultIdentityServer) GetPluginCapabilities(ctx context.Context, req *csi.GetPluginCapabilitiesRequest) (*csi.GetPluginCapabilitiesResponse, error) { util.TraceLog(ctx, "Using default capabilities") return &csi.GetPluginCapabilitiesResponse{ diff --git a/internal/csi-common/nodeserver-default.go b/internal/csi-common/nodeserver-default.go index 33fa0901b..22e945f77 100644 --- a/internal/csi-common/nodeserver-default.go +++ b/internal/csi-common/nodeserver-default.go @@ -31,28 +31,28 @@ import ( "k8s.io/kubernetes/pkg/volume" ) -// DefaultNodeServer stores driver object +// DefaultNodeServer stores driver object. type DefaultNodeServer struct { Driver *CSIDriver Type string } -// NodeStageVolume returns unimplemented response +// NodeStageVolume returns unimplemented response. func (ns *DefaultNodeServer) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRequest) (*csi.NodeStageVolumeResponse, error) { return nil, status.Error(codes.Unimplemented, "") } -// NodeUnstageVolume returns unimplemented response +// NodeUnstageVolume returns unimplemented response. func (ns *DefaultNodeServer) NodeUnstageVolume(ctx context.Context, req *csi.NodeUnstageVolumeRequest) (*csi.NodeUnstageVolumeResponse, error) { return nil, status.Error(codes.Unimplemented, "") } -// NodeExpandVolume returns unimplemented response +// NodeExpandVolume returns unimplemented response. func (ns *DefaultNodeServer) NodeExpandVolume(ctx context.Context, req *csi.NodeExpandVolumeRequest) (*csi.NodeExpandVolumeResponse, error) { return nil, status.Error(codes.Unimplemented, "") } -// NodeGetInfo returns node ID +// NodeGetInfo returns node ID. func (ns *DefaultNodeServer) NodeGetInfo(ctx context.Context, req *csi.NodeGetInfoRequest) (*csi.NodeGetInfoResponse, error) { util.TraceLog(ctx, "Using default NodeGetInfo") @@ -66,7 +66,7 @@ func (ns *DefaultNodeServer) NodeGetInfo(ctx context.Context, req *csi.NodeGetIn }, nil } -// NodeGetCapabilities returns RPC unknow capability +// NodeGetCapabilities returns RPC unknow capability. func (ns *DefaultNodeServer) NodeGetCapabilities(ctx context.Context, req *csi.NodeGetCapabilitiesRequest) (*csi.NodeGetCapabilitiesResponse, error) { util.TraceLog(ctx, "Using default NodeGetCapabilities") @@ -83,7 +83,7 @@ func (ns *DefaultNodeServer) NodeGetCapabilities(ctx context.Context, req *csi.N }, nil } -// NodeGetVolumeStats returns volume stats +// NodeGetVolumeStats returns volume stats. func (ns *DefaultNodeServer) NodeGetVolumeStats(ctx context.Context, req *csi.NodeGetVolumeStatsRequest) (*csi.NodeGetVolumeStatsResponse, error) { var err error targetPath := req.GetVolumePath() @@ -175,7 +175,7 @@ func (ns *DefaultNodeServer) NodeGetVolumeStats(ctx context.Context, req *csi.No }, nil } -// ConstructMountOptions returns only unique mount options in slice +// ConstructMountOptions returns only unique mount options in slice. func ConstructMountOptions(mountOptions []string, volCap *csi.VolumeCapability) []string { if m := volCap.GetMount(); m != nil { hasOption := func(options []string, opt string) bool { @@ -195,7 +195,7 @@ func ConstructMountOptions(mountOptions []string, volCap *csi.VolumeCapability) return mountOptions } -// MountOptionContains checks the opt is present in mountOptions +// MountOptionContains checks the opt is present in mountOptions. func MountOptionContains(mountOptions []string, opt string) bool { for _, mnt := range mountOptions { if mnt == opt { diff --git a/internal/csi-common/server.go b/internal/csi-common/server.go index abf31539e..1bc1baedb 100644 --- a/internal/csi-common/server.go +++ b/internal/csi-common/server.go @@ -33,7 +33,7 @@ import ( "github.com/ceph/ceph-csi/internal/util" ) -// NonBlockingGRPCServer defines Non blocking GRPC server interfaces +// NonBlockingGRPCServer defines Non blocking GRPC server interfaces. type NonBlockingGRPCServer interface { // Start services at the endpoint Start(endpoint, hstOptions string, ids csi.IdentityServer, cs csi.ControllerServer, ns csi.NodeServer, metrics bool) @@ -45,24 +45,24 @@ type NonBlockingGRPCServer interface { ForceStop() } -// NewNonBlockingGRPCServer return non-blocking GRPC +// NewNonBlockingGRPCServer return non-blocking GRPC. func NewNonBlockingGRPCServer() NonBlockingGRPCServer { return &nonBlockingGRPCServer{} } -// NonBlocking server +// NonBlocking server. type nonBlockingGRPCServer struct { wg sync.WaitGroup server *grpc.Server } -// Start start service on endpoint +// Start start service on endpoint. func (s *nonBlockingGRPCServer) Start(endpoint, hstOptions string, ids csi.IdentityServer, cs csi.ControllerServer, ns csi.NodeServer, metrics bool) { s.wg.Add(1) go s.serve(endpoint, hstOptions, ids, cs, ns, metrics) } -// Wait blocks until the WaitGroup counter +// Wait blocks until the WaitGroup counter. func (s *nonBlockingGRPCServer) Wait() { s.wg.Wait() } diff --git a/internal/csi-common/utils.go b/internal/csi-common/utils.go index 164baa7f0..3b502b507 100644 --- a/internal/csi-common/utils.go +++ b/internal/csi-common/utils.go @@ -43,12 +43,12 @@ func parseEndpoint(ep string) (string, string, error) { return "", "", fmt.Errorf("invalid endpoint: %v", ep) } -// NewVolumeCapabilityAccessMode returns volume access mode +// NewVolumeCapabilityAccessMode returns volume access mode. func NewVolumeCapabilityAccessMode(mode csi.VolumeCapability_AccessMode_Mode) *csi.VolumeCapability_AccessMode { return &csi.VolumeCapability_AccessMode{Mode: mode} } -// NewDefaultNodeServer initializes default node server +// NewDefaultNodeServer initializes default node server. func NewDefaultNodeServer(d *CSIDriver, t string, topology map[string]string) *DefaultNodeServer { d.topology = topology return &DefaultNodeServer{ @@ -57,21 +57,21 @@ func NewDefaultNodeServer(d *CSIDriver, t string, topology map[string]string) *D } } -// NewDefaultIdentityServer initializes default identity servier +// NewDefaultIdentityServer initializes default identity servier. func NewDefaultIdentityServer(d *CSIDriver) *DefaultIdentityServer { return &DefaultIdentityServer{ Driver: d, } } -// NewDefaultControllerServer initializes default controller server +// NewDefaultControllerServer initializes default controller server. func NewDefaultControllerServer(d *CSIDriver) *DefaultControllerServer { return &DefaultControllerServer{ Driver: d, } } -// NewControllerServiceCapability returns controller capabilities +// NewControllerServiceCapability returns controller capabilities. func NewControllerServiceCapability(ctrlCap csi.ControllerServiceCapability_RPC_Type) *csi.ControllerServiceCapability { return &csi.ControllerServiceCapability{ Type: &csi.ControllerServiceCapability_Rpc{ @@ -82,7 +82,7 @@ func NewControllerServiceCapability(ctrlCap csi.ControllerServiceCapability_RPC_ } } -// RunNodePublishServer starts node server +// RunNodePublishServer starts node server. func RunNodePublishServer(endpoint, hstOption string, d *CSIDriver, ns csi.NodeServer, m bool) { ids := NewDefaultIdentityServer(d) @@ -91,7 +91,7 @@ func RunNodePublishServer(endpoint, hstOption string, d *CSIDriver, ns csi.NodeS s.Wait() } -// RunControllerPublishServer starts controller server +// RunControllerPublishServer starts controller server. func RunControllerPublishServer(endpoint, hstOption string, d *CSIDriver, cs csi.ControllerServer, m bool) { ids := NewDefaultIdentityServer(d) @@ -100,7 +100,7 @@ func RunControllerPublishServer(endpoint, hstOption string, d *CSIDriver, cs csi s.Wait() } -// RunControllerandNodePublishServer starts both controller and node server +// RunControllerandNodePublishServer starts both controller and node server. func RunControllerandNodePublishServer(endpoint, hstOption string, d *CSIDriver, cs csi.ControllerServer, ns csi.NodeServer, m bool) { ids := NewDefaultIdentityServer(d) diff --git a/internal/journal/voljournal.go b/internal/journal/voljournal.go index fdce3222f..e79ff65b7 100644 --- a/internal/journal/voljournal.go +++ b/internal/journal/voljournal.go @@ -30,7 +30,7 @@ import ( klog "k8s.io/klog/v2" ) -// Length of string representation of uuid, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx is 36 bytes +// Length of string representation of uuid, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx is 36 bytes. const uuidEncodedLength = 36 /* @@ -111,7 +111,7 @@ const ( defaultSnapshotNamingPrefix string = "csi-snap-" ) -// CSIJournal defines the interface and the required key names for the above RADOS based OMaps +// CSIJournal defines the interface and the required key names for the above RADOS based OMaps. type Config struct { // csiDirectory is the name of the CSI volumes object map that contains CSI volume-name (or // snapshot name) based keys @@ -153,7 +153,7 @@ type Config struct { commonPrefix string } -// NewCSIVolumeJournal returns an instance of CSIJournal for volumes +// NewCSIVolumeJournal returns an instance of CSIJournal for volumes. func NewCSIVolumeJournal(suffix string) *Config { return &Config{ csiDirectory: "csi.volumes." + suffix, @@ -170,7 +170,7 @@ func NewCSIVolumeJournal(suffix string) *Config { } } -// NewCSISnapshotJournal returns an instance of CSIJournal for snapshots +// NewCSISnapshotJournal returns an instance of CSIJournal for snapshots. func NewCSISnapshotJournal(suffix string) *Config { return &Config{ csiDirectory: "csi.snaps." + suffix, @@ -195,7 +195,7 @@ func NewCSIVolumeJournalWithNamespace(suffix, ns string) *Config { return j } -// GetNameForUUID returns volume name +// GetNameForUUID returns volume name. func (cj *Config) GetNameForUUID(prefix, uid string, isSnapshot bool) string { if prefix == "" { if isSnapshot { @@ -207,7 +207,7 @@ func (cj *Config) GetNameForUUID(prefix, uid string, isSnapshot bool) string { return prefix + uid } -// ImageData contains image name and stored CSI properties +// ImageData contains image name and stored CSI properties. type ImageData struct { ImageUUID string ImagePool string @@ -433,7 +433,7 @@ func (conn *Connection) UndoReservation(ctx context.Context, // reserveOMapName creates an omap with passed in oMapNamePrefix and a generated . // It ensures generated omap name does not already exist and if conflicts are detected, a set -// number of retires with newer uuids are attempted before returning an error +// number of retires with newer uuids are attempted before returning an error. func reserveOMapName(ctx context.Context, monitors string, cr *util.Credentials, pool, namespace, oMapNamePrefix string) (string, error) { var iterUUID string @@ -581,7 +581,7 @@ func (conn *Connection) ReserveName(ctx context.Context, return volUUID, imageName, nil } -// ImageAttributes contains all CSI stored image attributes, typically as OMap keys +// ImageAttributes contains all CSI stored image attributes, typically as OMap keys. type ImageAttributes struct { RequestName string // Contains the request name for the passed in UUID SourceName string // Contains the parent image name for the passed in UUID, if it is a snapshot @@ -591,7 +591,7 @@ type ImageAttributes struct { JournalPoolID int64 // Pool ID of the CSI journal pool, stored in big endian format (on-disk data) } -// GetImageAttributes fetches all keys and their values, from a UUID directory, returning ImageAttributes structure +// GetImageAttributes fetches all keys and their values, from a UUID directory, returning ImageAttributes structure. func (conn *Connection) GetImageAttributes(ctx context.Context, pool, objectUUID string, snapSource bool) (*ImageAttributes, error) { var ( err error @@ -665,7 +665,7 @@ func (conn *Connection) GetImageAttributes(ctx context.Context, pool, objectUUID return imageAttributes, nil } -// StoreImageID stores the image ID in omap +// StoreImageID stores the image ID in omap. func (conn *Connection) StoreImageID(ctx context.Context, pool, reservedUUID, imageID string, cr *util.Credentials) error { err := setOMapKeys(ctx, conn, pool, conn.config.namespace, conn.config.cephUUIDDirectoryPrefix+reservedUUID, map[string]string{conn.config.csiImageIDKey: imageID}) diff --git a/internal/liveness/liveness.go b/internal/liveness/liveness.go index 45d30472b..4a1bc3f55 100644 --- a/internal/liveness/liveness.go +++ b/internal/liveness/liveness.go @@ -82,7 +82,7 @@ func recordLiveness(endpoint, drivername string, pollTime, timeout time.Duration } } -// Run starts liveness collection and prometheus endpoint +// Run starts liveness collection and prometheus endpoint. func Run(conf *util.Config) { util.ExtendedLogMsg("Liveness Running") diff --git a/internal/rbd/controllerserver.go b/internal/rbd/controllerserver.go index d12e35739..edc7bb14e 100644 --- a/internal/rbd/controllerserver.go +++ b/internal/rbd/controllerserver.go @@ -202,7 +202,7 @@ func validateRequestedVolumeSize(rbdVol, parentVol *rbdVolume, rbdSnap *rbdSnaps return nil } -// CreateVolume creates the volume in backend +// CreateVolume creates the volume in backend. func (cs *ControllerServer) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest) (*csi.CreateVolumeResponse, error) { if err := cs.validateVolumeReq(ctx, req); err != nil { return nil, err @@ -357,7 +357,7 @@ func flattenTemporaryClonedImages(ctx context.Context, rbdVol *rbdVolume, cr *ut // checkFlatten ensures that that the image chain depth is not reached // hardlimit or softlimit. if the softlimit is reached it adds a task and // return success,the hardlimit is reached it starts a task to flatten the -// image and return Aborted +// image and return Aborted. func checkFlatten(ctx context.Context, rbdVol *rbdVolume, cr *util.Credentials) error { err := rbdVol.flattenRbdImage(ctx, cr, false, rbdHardMaxCloneDepth, rbdSoftMaxCloneDepth) if err != nil { @@ -931,7 +931,7 @@ func (cs *ControllerServer) doSnapshotClone(ctx context.Context, parentVol *rbdV } // DeleteSnapshot deletes the snapshot in backend and removes the -// snapshot metadata from store +// snapshot metadata from store. func (cs *ControllerServer) DeleteSnapshot(ctx context.Context, req *csi.DeleteSnapshotRequest) (*csi.DeleteSnapshotResponse, error) { if err := cs.Driver.ValidateControllerServiceRequest(csi.ControllerServiceCapability_RPC_CREATE_DELETE_SNAPSHOT); err != nil { klog.Errorf(util.Log(ctx, "invalid delete snapshot req: %v"), protosanitizer.StripSecrets(req)) @@ -1022,7 +1022,7 @@ func (cs *ControllerServer) DeleteSnapshot(ctx context.Context, req *csi.DeleteS return &csi.DeleteSnapshotResponse{}, nil } -// ControllerExpandVolume expand RBD Volumes on demand based on resizer request +// ControllerExpandVolume expand RBD Volumes on demand based on resizer request. func (cs *ControllerServer) ControllerExpandVolume(ctx context.Context, req *csi.ControllerExpandVolumeRequest) (*csi.ControllerExpandVolumeResponse, error) { if err := cs.Driver.ValidateControllerServiceRequest(csi.ControllerServiceCapability_RPC_EXPAND_VOLUME); err != nil { klog.Errorf(util.Log(ctx, "invalid expand volume req: %v"), protosanitizer.StripSecrets(req)) diff --git a/internal/rbd/driver.go b/internal/rbd/driver.go index 5efef6c97..faf6aeb99 100644 --- a/internal/rbd/driver.go +++ b/internal/rbd/driver.go @@ -34,7 +34,7 @@ const ( csiConfigFile = "/etc/ceph-csi-config/config.json" ) -// Driver contains the default identity,node and controller struct +// Driver contains the default identity,node and controller struct. type Driver struct { cd *csicommon.CSIDriver @@ -62,19 +62,19 @@ var ( skipForceFlatten bool ) -// NewDriver returns new rbd driver +// NewDriver returns new rbd driver. func NewDriver() *Driver { return &Driver{} } -// NewIdentityServer initialize a identity server for rbd CSI driver +// NewIdentityServer initialize a identity server for rbd CSI driver. func NewIdentityServer(d *csicommon.CSIDriver) *IdentityServer { return &IdentityServer{ DefaultIdentityServer: csicommon.NewDefaultIdentityServer(d), } } -// NewControllerServer initialize a controller server for rbd CSI driver +// NewControllerServer initialize a controller server for rbd CSI driver. func NewControllerServer(d *csicommon.CSIDriver) *ControllerServer { return &ControllerServer{ DefaultControllerServer: csicommon.NewDefaultControllerServer(d), @@ -94,7 +94,7 @@ func NewNodeServer(d *csicommon.CSIDriver, t string, topology map[string]string) } // Run start a non-blocking grpc controller,node and identityserver for -// rbd CSI driver which can serve multiple parallel requests +// rbd CSI driver which can serve multiple parallel requests. func (r *Driver) Run(conf *util.Config) { var err error var topology map[string]string diff --git a/internal/rbd/errors.go b/internal/rbd/errors.go index 2675562ae..2db14e93f 100644 --- a/internal/rbd/errors.go +++ b/internal/rbd/errors.go @@ -16,7 +16,7 @@ limitations under the License. package rbd -// ErrImageNotFound is returned when image name is not found in the cluster on the given pool +// ErrImageNotFound is returned when image name is not found in the cluster on the given pool. type ErrImageNotFound struct { imageName string err error @@ -33,7 +33,7 @@ func (e ErrImageNotFound) Unwrap() error { } // ErrSnapNotFound is returned when snap name passed is not found in the list of snapshots for the -// given image +// given image. type ErrSnapNotFound struct { snapName string err error @@ -50,7 +50,7 @@ func (e ErrSnapNotFound) Unwrap() error { } // ErrVolNameConflict is generated when a requested CSI volume name already exists on RBD but with -// different properties, and hence is in conflict with the passed in CSI volume name +// different properties, and hence is in conflict with the passed in CSI volume name. type ErrVolNameConflict struct { requestName string err error @@ -67,7 +67,7 @@ func (e ErrVolNameConflict) Unwrap() error { } // ErrInvalidVolID is returned when a CSI passed VolumeID does not conform to any known volume ID -// formats +// formats. type ErrInvalidVolID struct { err error } @@ -82,7 +82,7 @@ func (e ErrInvalidVolID) Unwrap() error { return e.err } -// ErrMissingStash is returned when the image metadata stash file is not found +// ErrMissingStash is returned when the image metadata stash file is not found. type ErrMissingStash struct { err error } @@ -97,7 +97,7 @@ func (e ErrMissingStash) Unwrap() error { return e.err } -// ErrFlattenInProgress is returned when flatten is inprogess for an image +// ErrFlattenInProgress is returned when flatten is inprogess for an image. type ErrFlattenInProgress struct { err error } diff --git a/internal/rbd/identityserver.go b/internal/rbd/identityserver.go index e00314ea1..374be340d 100644 --- a/internal/rbd/identityserver.go +++ b/internal/rbd/identityserver.go @@ -30,7 +30,7 @@ type IdentityServer struct { *csicommon.DefaultIdentityServer } -// GetPluginCapabilities returns available capabilities of the rbd driver +// GetPluginCapabilities returns available capabilities of the rbd driver. func (is *IdentityServer) GetPluginCapabilities(ctx context.Context, req *csi.GetPluginCapabilitiesRequest) (*csi.GetPluginCapabilitiesResponse, error) { return &csi.GetPluginCapabilitiesResponse{ Capabilities: []*csi.PluginCapability{ diff --git a/internal/rbd/nodeserver.go b/internal/rbd/nodeserver.go index ebc81d9ea..a11fc0750 100644 --- a/internal/rbd/nodeserver.go +++ b/internal/rbd/nodeserver.go @@ -38,7 +38,7 @@ import ( ) // NodeServer struct of ceph rbd driver with supported methods of CSI -// node server spec +// node server spec. type NodeServer struct { *csicommon.DefaultNodeServer mounter mount.Interface @@ -49,7 +49,7 @@ type NodeServer struct { // stageTransaction struct represents the state a transaction was when it either completed // or failed -// this transaction state can be used to rollback the transaction +// this transaction state can be used to rollback the transaction. type stageTransaction struct { // isStagePathCreated represents whether the mount path to stage the volume on was created or not isStagePathCreated bool @@ -375,7 +375,7 @@ func (ns *NodeServer) createStageMountPoint(ctx context.Context, mountPath strin } // NodePublishVolume mounts the volume mounted to the device path to the target -// path +// path. func (ns *NodeServer) NodePublishVolume(ctx context.Context, req *csi.NodePublishVolumeRequest) (*csi.NodePublishVolumeResponse, error) { err := util.ValidateNodePublishVolumeRequest(req) if err != nil { @@ -539,7 +539,7 @@ func (ns *NodeServer) createTargetMountPath(ctx context.Context, mountPath strin return notMnt, err } -// NodeUnpublishVolume unmounts the volume from the target path +// NodeUnpublishVolume unmounts the volume from the target path. func (ns *NodeServer) NodeUnpublishVolume(ctx context.Context, req *csi.NodeUnpublishVolumeRequest) (*csi.NodeUnpublishVolumeResponse, error) { err := util.ValidateNodeUnpublishVolumeRequest(req) if err != nil { @@ -585,7 +585,7 @@ func (ns *NodeServer) NodeUnpublishVolume(ctx context.Context, req *csi.NodeUnpu } // getStagingTargetPath concats either NodeStageVolumeRequest's or -// NodeUnstageVolumeRequest's target path with the volumeID +// NodeUnstageVolumeRequest's target path with the volumeID. func getStagingTargetPath(req interface{}) string { switch vr := req.(type) { case *csi.NodeStageVolumeRequest: @@ -597,7 +597,7 @@ func getStagingTargetPath(req interface{}) string { return "" } -// NodeUnstageVolume unstages the volume from the staging path +// NodeUnstageVolume unstages the volume from the staging path. func (ns *NodeServer) NodeUnstageVolume(ctx context.Context, req *csi.NodeUnstageVolumeRequest) (*csi.NodeUnstageVolumeResponse, error) { var err error if err = util.ValidateNodeUnstageVolumeRequest(req); err != nil { @@ -680,7 +680,7 @@ func (ns *NodeServer) NodeUnstageVolume(ctx context.Context, req *csi.NodeUnstag return &csi.NodeUnstageVolumeResponse{}, nil } -// NodeExpandVolume resizes rbd volumes +// NodeExpandVolume resizes rbd volumes. func (ns *NodeServer) NodeExpandVolume(ctx context.Context, req *csi.NodeExpandVolumeRequest) (*csi.NodeExpandVolumeResponse, error) { volumeID := req.GetVolumeId() if volumeID == "" { @@ -740,7 +740,7 @@ func getDevicePath(ctx context.Context, volumePath string) (string, error) { return "", fmt.Errorf("failed to get device for stagingtarget path %v", volumePath) } -// NodeGetCapabilities returns the supported capabilities of the node server +// NodeGetCapabilities returns the supported capabilities of the node server. func (ns *NodeServer) NodeGetCapabilities(ctx context.Context, req *csi.NodeGetCapabilitiesRequest) (*csi.NodeGetCapabilitiesResponse, error) { return &csi.NodeGetCapabilitiesResponse{ Capabilities: []*csi.NodeServiceCapability{ diff --git a/internal/rbd/rbd_attach.go b/internal/rbd/rbd_attach.go index f8e9ce2c1..3542f9660 100644 --- a/internal/rbd/rbd_attach.go +++ b/internal/rbd/rbd_attach.go @@ -56,7 +56,7 @@ func init() { hasNBD = checkRbdNbdTools() } -// rbdDeviceInfo strongly typed JSON spec for rbd device list output (of type krbd) +// rbdDeviceInfo strongly typed JSON spec for rbd device list output (of type krbd). type rbdDeviceInfo struct { ID string `json:"id"` Pool string `json:"pool"` @@ -67,7 +67,7 @@ type rbdDeviceInfo struct { // nbdDeviceInfo strongly typed JSON spec for rbd-nbd device list output (of type nbd) // NOTE: There is a bug in rbd output that returns id as number for nbd, and string for krbd, thus // requiring 2 different JSON structures to unmarshal the output. -// NOTE: image key is "name" in krbd output and "image" in nbd output, which is another difference +// NOTE: image key is "name" in krbd output and "image" in nbd output, which is another difference. type nbdDeviceInfo struct { ID int64 `json:"id"` Pool string `json:"pool"` @@ -76,7 +76,7 @@ type nbdDeviceInfo struct { } // rbdGetDeviceList queries rbd about mapped devices and returns a list of rbdDeviceInfo -// It will selectively list devices mapped using krbd or nbd as specified by accessType +// It will selectively list devices mapped using krbd or nbd as specified by accessType. func rbdGetDeviceList(accessType string) ([]rbdDeviceInfo, error) { // rbd device list --format json --device-type [krbd|nbd] var ( @@ -278,7 +278,7 @@ func detachRBDDevice(ctx context.Context, devicePath, volumeID string, encrypted } // detachRBDImageOrDeviceSpec detaches an rbd imageSpec or devicePath, with additional checking -// when imageSpec is used to decide if image is already unmapped +// when imageSpec is used to decide if image is already unmapped. func detachRBDImageOrDeviceSpec(ctx context.Context, imageOrDeviceSpec string, isImageSpec, ndbType, encrypted bool, volumeID string) error { var output []byte diff --git a/internal/rbd/rbd_journal.go b/internal/rbd/rbd_journal.go index 1146b5f01..cd23a8149 100644 --- a/internal/rbd/rbd_journal.go +++ b/internal/rbd/rbd_journal.go @@ -339,7 +339,7 @@ func (rv *rbdVolume) Exists(ctx context.Context, parentVol *rbdVolume) (bool, er } // reserveSnap is a helper routine to request a rbdSnapshot name reservation and generate the -// volume ID for the generated name +// volume ID for the generated name. func reserveSnap(ctx context.Context, rbdSnap *rbdSnapshot, rbdVol *rbdVolume, cr *util.Credentials) error { var ( err error @@ -407,7 +407,7 @@ func updateTopologyConstraints(rbdVol *rbdVolume, rbdSnap *rbdSnapshot) error { } // reserveVol is a helper routine to request a rbdVolume name reservation and generate the -// volume ID for the generated name +// volume ID for the generated name. func reserveVol(ctx context.Context, rbdVol *rbdVolume, rbdSnap *rbdSnapshot, cr *util.Credentials) error { var ( err error @@ -453,7 +453,7 @@ func reserveVol(ctx context.Context, rbdVol *rbdVolume, rbdSnap *rbdSnapshot, cr return nil } -// undoSnapReservation is a helper routine to undo a name reservation for rbdSnapshot +// undoSnapReservation is a helper routine to undo a name reservation for rbdSnapshot. func undoSnapReservation(ctx context.Context, rbdSnap *rbdSnapshot, cr *util.Credentials) error { j, err := snapJournal.Connect(rbdSnap.Monitors, cr) if err != nil { @@ -468,7 +468,7 @@ func undoSnapReservation(ctx context.Context, rbdSnap *rbdSnapshot, cr *util.Cre return err } -// undoVolReservation is a helper routine to undo a name reservation for rbdVolume +// undoVolReservation is a helper routine to undo a name reservation for rbdVolume. func undoVolReservation(ctx context.Context, rbdVol *rbdVolume, cr *util.Credentials) error { j, err := volJournal.Connect(rbdVol.Monitors, cr) if err != nil { diff --git a/internal/rbd/rbd_util.go b/internal/rbd/rbd_util.go index de32497a2..cf734c5cd 100644 --- a/internal/rbd/rbd_util.go +++ b/internal/rbd/rbd_util.go @@ -67,7 +67,7 @@ const ( imageOptionCloneFormat = librbd.RbdImageOption(12) ) -// rbdVolume represents a CSI volume and its RBD image specifics +// rbdVolume represents a CSI volume and its RBD image specifics. type rbdVolume struct { // RbdImageName is the name of the RBD image backing this rbdVolume. This does not have a // JSON tag as it is not stashed in JSON encoded config maps in v1.0.0 @@ -114,7 +114,7 @@ type rbdVolume struct { ioctx *rados.IOContext } -// rbdSnapshot represents a CSI snapshot and its RBD snapshot specifics +// rbdSnapshot represents a CSI snapshot and its RBD snapshot specifics. type rbdSnapshot struct { // SourceVolumeID is the volume ID of RbdImageName, that is exchanged with CSI drivers // RbdImageName is the name of the RBD image, that is this rbdSnapshot's source image @@ -144,7 +144,7 @@ var ( supportedFeatures = sets.NewString(librbd.FeatureNameLayering) ) -// Connect an rbdVolume to the Ceph cluster +// Connect an rbdVolume to the Ceph cluster. func (rv *rbdVolume) Connect(cr *util.Credentials) error { if rv.conn != nil { return nil @@ -170,12 +170,12 @@ func (rv *rbdVolume) Destroy() { } } -// String returns the image-spec (pool/image) format of the image +// String returns the image-spec (pool/image) format of the image. func (rv *rbdVolume) String() string { return fmt.Sprintf("%s/%s", rv.Pool, rv.RbdImageName) } -// String returns the snap-spec (pool/image@snap) format of the snapshot +// String returns the snap-spec (pool/image@snap) format of the snapshot. func (rs *rbdSnapshot) String() string { return fmt.Sprintf("%s/%s@%s", rs.Pool, rs.RbdImageName, rs.RbdSnapName) } @@ -239,7 +239,7 @@ func (rv *rbdVolume) openIoctx() error { } // getImageID queries rbd about the given image and stores its id, returns -// ErrImageNotFound if provided image is not found +// ErrImageNotFound if provided image is not found. func (rv *rbdVolume) getImageID() error { if rv.ImageID != "" { return nil @@ -313,7 +313,7 @@ func rbdStatus(ctx context.Context, pOpts *rbdVolume, cr *util.Credentials) (boo // addRbdManagerTask adds a ceph manager task to execute command // asynchronously. If command is not found returns a bool set to false -// example arg ["trash", "remove","pool/image"] +// example arg ["trash", "remove","pool/image"]. func addRbdManagerTask(ctx context.Context, pOpts *rbdVolume, arg []string) (bool, error) { var output []byte args := []string{"rbd", "task", "add"} @@ -530,7 +530,7 @@ func (rv *rbdVolume) checkImageChainHasFeature(ctx context.Context, feature uint } // genSnapFromSnapID generates a rbdSnapshot structure from the provided identifier, updating -// the structure with elements from on-disk snapshot metadata as well +// the structure with elements from on-disk snapshot metadata as well. func genSnapFromSnapID(ctx context.Context, rbdSnap *rbdSnapshot, snapshotID string, cr *util.Credentials) error { var ( options map[string]string @@ -589,7 +589,7 @@ func genSnapFromSnapID(ctx context.Context, rbdSnap *rbdSnapshot, snapshotID str } // genVolFromVolID generates a rbdVolume structure from the provided identifier, updating -// the structure with elements from on-disk image metadata as well +// the structure with elements from on-disk image metadata as well. func genVolFromVolID(ctx context.Context, volumeID string, cr *util.Credentials, secrets map[string]string) (*rbdVolume, error) { var ( options map[string]string @@ -794,7 +794,7 @@ func genSnapFromOptions(ctx context.Context, rbdVol *rbdVolume, snapOptions map[ return rbdSnap } -// hasSnapshotFeature checks if Layering is enabled for this image +// hasSnapshotFeature checks if Layering is enabled for this image. func (rv *rbdVolume) hasSnapshotFeature() bool { return (uint64(rv.imageFeatureSet) & librbd.FeatureLayering) == librbd.FeatureLayering } @@ -874,7 +874,7 @@ func (rv *rbdVolume) cloneRbdImageFromSnapshot(ctx context.Context, pSnapOpts *r return nil } -// imageInfo strongly typed JSON spec for image info +// imageInfo strongly typed JSON spec for image info. type imageInfo struct { ObjectUUID string `json:"name"` Size int64 `json:"size"` @@ -883,7 +883,7 @@ type imageInfo struct { Parent parentInfo `json:"parent"` } -// parentInfo spec for parent volume info +// parentInfo spec for parent volume info. type parentInfo struct { Image string `json:"image"` Pool string `json:"pool"` @@ -891,7 +891,7 @@ type parentInfo struct { } // updateVolWithImageInfo updates provided rbdVolume with information from on-disk data -// regarding the same +// regarding the same. func (rv *rbdVolume) updateVolWithImageInfo(cr *util.Credentials) error { // rbd --format=json info [image-spec | snap-spec] var imgInfo imageInfo @@ -931,7 +931,7 @@ func (rv *rbdVolume) updateVolWithImageInfo(cr *util.Credentials) error { } // getImageInfo queries rbd about the given image and returns its metadata, and returns -// ErrImageNotFound if provided image is not found +// ErrImageNotFound if provided image is not found. func (rv *rbdVolume) getImageInfo() error { image, err := rv.open() if err != nil { @@ -962,7 +962,7 @@ func (rv *rbdVolume) getImageInfo() error { /* checkSnapExists queries rbd about the snapshots of the given image and returns ErrImageNotFound if provided image is not found, and ErrSnapNotFound if -provided snap is not found in the images snapshot list +provided snap is not found in the images snapshot list. */ func (rv *rbdVolume) checkSnapExists(rbdSnap *rbdSnapshot) error { image, err := rv.open() @@ -985,7 +985,7 @@ func (rv *rbdVolume) checkSnapExists(rbdSnap *rbdSnapshot) error { return ErrSnapNotFound{rbdSnap.RbdSnapName, fmt.Errorf("snap %s not found", rbdSnap.String())} } -// rbdImageMetadataStash strongly typed JSON spec for stashed RBD image metadata +// rbdImageMetadataStash strongly typed JSON spec for stashed RBD image metadata. type rbdImageMetadataStash struct { Version int `json:"Version"` Pool string `json:"pool"` @@ -994,16 +994,16 @@ type rbdImageMetadataStash struct { Encrypted bool `json:"encrypted"` } -// file name in which image metadata is stashed +// file name in which image metadata is stashed. const stashFileName = "image-meta.json" -// spec returns the image-spec (pool/image) format of the image +// spec returns the image-spec (pool/image) format of the image. func (ri *rbdImageMetadataStash) String() string { return fmt.Sprintf("%s/%s", ri.Pool, ri.ImageName) } // stashRBDImageMetadata stashes required fields into the stashFileName at the passed in path, in -// JSON format +// JSON format. func stashRBDImageMetadata(volOptions *rbdVolume, path string) error { var imgMeta = rbdImageMetadataStash{ Version: 2, // there are no checks for this at present @@ -1031,7 +1031,7 @@ func stashRBDImageMetadata(volOptions *rbdVolume, path string) error { return nil } -// lookupRBDImageMetadataStash reads and returns stashed image metadata at passed in path +// lookupRBDImageMetadataStash reads and returns stashed image metadata at passed in path. func lookupRBDImageMetadataStash(path string) (rbdImageMetadataStash, error) { var imgMeta rbdImageMetadataStash @@ -1053,7 +1053,7 @@ func lookupRBDImageMetadataStash(path string) (rbdImageMetadataStash, error) { return imgMeta, nil } -// cleanupRBDImageMetadataStash cleans up any stashed metadata at passed in path +// cleanupRBDImageMetadataStash cleans up any stashed metadata at passed in path. func cleanupRBDImageMetadataStash(path string) error { fPath := filepath.Join(path, stashFileName) if err := os.Remove(fPath); err != nil { @@ -1063,7 +1063,7 @@ func cleanupRBDImageMetadataStash(path string) error { return nil } -// resizeRBDImage resizes the given volume to new size +// resizeRBDImage resizes the given volume to new size. func resizeRBDImage(rbdVol *rbdVolume, cr *util.Credentials) error { var output []byte @@ -1100,7 +1100,7 @@ func (rv *rbdVolume) SetMetadata(key, value string) error { return image.SetMetadata(key, value) } -// checkRbdImageEncrypted verifies if rbd image was encrypted when created +// checkRbdImageEncrypted verifies if rbd image was encrypted when created. func (rv *rbdVolume) checkRbdImageEncrypted(ctx context.Context) (string, error) { value, err := rv.GetMetadata(encryptionMetaKey) if err != nil { @@ -1122,7 +1122,7 @@ func (rv *rbdVolume) ensureEncryptionMetadataSet(status string) error { return nil } -// SnapshotInfo holds snapshots details +// SnapshotInfo holds snapshots details. type snapshotInfo struct { ID int `json:"id"` Name string `json:"name"` diff --git a/internal/util/cephcmds.go b/internal/util/cephcmds.go index 8b9460c58..5cbc899fb 100644 --- a/internal/util/cephcmds.go +++ b/internal/util/cephcmds.go @@ -27,10 +27,10 @@ import ( klog "k8s.io/klog/v2" ) -// InvalidPoolID used to denote an invalid pool +// InvalidPoolID used to denote an invalid pool. const InvalidPoolID int64 = -1 -// ExecCommand executes passed in program with args and returns separate stdout and stderr streams +// ExecCommand executes passed in program with args and returns separate stdout and stderr streams. func ExecCommand(program string, args ...string) (stdout, stderr []byte, err error) { var ( cmd = exec.Command(program, args...) // nolint: gosec, #nosec @@ -51,7 +51,7 @@ func ExecCommand(program string, args ...string) (stdout, stderr []byte, err err } // GetPoolID fetches the ID of the pool that matches the passed in poolName -// parameter +// parameter. func GetPoolID(monitors string, cr *Credentials, poolName string) (int64, error) { conn, err := connPool.Get(monitors, cr.ID, cr.KeyFile) if err != nil { @@ -70,7 +70,7 @@ func GetPoolID(monitors string, cr *Credentials, poolName string) (int64, error) } // GetPoolName fetches the pool whose pool ID is equal to the requested poolID -// parameter +// parameter. func GetPoolName(monitors string, cr *Credentials, poolID int64) (string, error) { conn, err := connPool.Get(monitors, cr.ID, cr.KeyFile) if err != nil { @@ -87,7 +87,7 @@ func GetPoolName(monitors string, cr *Credentials, poolID int64) (string, error) // GetPoolIDs searches a list of pools in a cluster and returns the IDs of the pools that matches // the passed in pools -// TODO this should take in a list and return a map[string(poolname)]int64(poolID) +// TODO this should take in a list and return a map[string(poolname)]int64(poolID). func GetPoolIDs(ctx context.Context, monitors, journalPool, imagePool string, cr *Credentials) (int64, int64, error) { journalPoolID, err := GetPoolID(monitors, cr, journalPool) if err != nil { @@ -106,7 +106,7 @@ func GetPoolIDs(ctx context.Context, monitors, journalPool, imagePool string, cr } // CreateObject creates the object name passed in and returns ErrObjectExists if the provided object -// is already present in rados +// is already present in rados. func CreateObject(ctx context.Context, monitors string, cr *Credentials, poolName, namespace, objectName string) error { conn := ClusterConnection{} err := conn.Connect(monitors, cr) @@ -141,7 +141,7 @@ func CreateObject(ctx context.Context, monitors string, cr *Credentials, poolNam } // RemoveObject removes the entire omap name passed in and returns ErrObjectNotFound is provided omap -// is not found in rados +// is not found in rados. func RemoveObject(ctx context.Context, monitors string, cr *Credentials, poolName, namespace, oMapName string) error { conn := ClusterConnection{} err := conn.Connect(monitors, cr) diff --git a/internal/util/cephconf.go b/internal/util/cephconf.go index 3276269e1..7c82837c6 100644 --- a/internal/util/cephconf.go +++ b/internal/util/cephconf.go @@ -43,7 +43,7 @@ func createCephConfigRoot() error { } // WriteCephConfig writes out a basic ceph.conf file, making it easy to use -// ceph related CLIs +// ceph related CLIs. func WriteCephConfig() error { if err := createCephConfigRoot(); err != nil { return err @@ -64,7 +64,7 @@ if any ceph commands fails it will log below error message /etc/ceph/ceph.client.admin.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring, /etc/ceph/keyring.bin,: (2) No such file or directory */ -// createKeyRingFile creates the keyring files to fix above error message logging +// createKeyRingFile creates the keyring files to fix above error message logging. func createKeyRingFile() error { _, err := os.Create(keyRing) return err diff --git a/internal/util/conn_pool.go b/internal/util/conn_pool.go index c23c39fce..20e597b0d 100644 --- a/internal/util/conn_pool.go +++ b/internal/util/conn_pool.go @@ -106,7 +106,7 @@ func (cp *ConnPool) generateUniqueKey(monitors, user, keyfile string) (string, e // getExisting returns the existing rados.Conn associated with the unique key. // -// Requires: locked cp.lock because of ce.get() +// Requires: locked cp.lock because of ce.get(). func (cp *ConnPool) getConn(unique string) *rados.Conn { ce, exists := cp.conns[unique] if exists { diff --git a/internal/util/conn_pool_test.go b/internal/util/conn_pool_test.go index 4544c8689..95c47fdd6 100644 --- a/internal/util/conn_pool_test.go +++ b/internal/util/conn_pool_test.go @@ -33,7 +33,7 @@ const ( // fakeGet is used as a replacement for ConnPool.Get and does not need a // working Ceph cluster to connect to. // -// This is mostly a copy of ConnPool.Get() +// This is mostly a copy of ConnPool.Get(). func (cp *ConnPool) fakeGet(monitors, user, keyfile string) (*rados.Conn, string, error) { unique, err := cp.generateUniqueKey(monitors, user, keyfile) if err != nil { diff --git a/internal/util/crypto.go b/internal/util/crypto.go index 17f4b5a69..3dfd0e326 100644 --- a/internal/util/crypto.go +++ b/internal/util/crypto.go @@ -51,7 +51,7 @@ const ( ) // EncryptionKMS provides external Key Management System for encryption -// passphrases storage +// passphrases storage. type EncryptionKMS interface { GetPassphrase(key string) (string, error) SavePassphrase(key, value string) error @@ -59,12 +59,12 @@ type EncryptionKMS interface { GetID() string } -// MissingPassphrase is an error instructing to generate new passphrase +// MissingPassphrase is an error instructing to generate new passphrase. type MissingPassphrase struct { error } -// SecretsKMS is default KMS implementation that means no KMS is in use +// SecretsKMS is default KMS implementation that means no KMS is in use. type SecretsKMS struct { passphrase string } @@ -77,28 +77,28 @@ func initSecretsKMS(secrets map[string]string) (EncryptionKMS, error) { return SecretsKMS{passphrase: passphraseValue}, nil } -// GetPassphrase returns passphrase from Kubernetes secrets +// GetPassphrase returns passphrase from Kubernetes secrets. func (kms SecretsKMS) GetPassphrase(key string) (string, error) { return kms.passphrase, nil } -// SavePassphrase is not implemented +// SavePassphrase is not implemented. func (kms SecretsKMS) SavePassphrase(key, value string) error { return fmt.Errorf("save new passphrase is not implemented for Kubernetes secrets") } // DeletePassphrase is doing nothing as no new passphrases are saved with -// SecretsKMS +// SecretsKMS. func (kms SecretsKMS) DeletePassphrase(key string) error { return nil } -// GetID is returning ID representing default KMS `default` +// GetID is returning ID representing default KMS `default`. func (kms SecretsKMS) GetID() string { return defaultKMSType } -// GetKMS returns an instance of Key Management System +// GetKMS returns an instance of Key Management System. func GetKMS(kmsID string, secrets map[string]string) (EncryptionKMS, error) { if kmsID == "" || kmsID == defaultKMSType { return initSecretsKMS(secrets) @@ -141,7 +141,7 @@ func GetKMS(kmsID string, secrets map[string]string) (EncryptionKMS, error) { return nil, fmt.Errorf("unknown encryption KMS type %s", kmsType) } -// GetCryptoPassphrase Retrieves passphrase to encrypt volume +// GetCryptoPassphrase Retrieves passphrase to encrypt volume. func GetCryptoPassphrase(ctx context.Context, volumeID string, kms EncryptionKMS) (string, error) { passphrase, err := kms.GetPassphrase(volumeID) if err == nil { @@ -164,7 +164,7 @@ func GetCryptoPassphrase(ctx context.Context, volumeID string, kms EncryptionKMS return "", err } -// generateNewEncryptionPassphrase generates a random passphrase for encryption +// generateNewEncryptionPassphrase generates a random passphrase for encryption. func generateNewEncryptionPassphrase() (string, error) { bytesPassphrase := make([]byte, encryptionPassphraseSize) _, err := rand.Read(bytesPassphrase) @@ -174,14 +174,14 @@ func generateNewEncryptionPassphrase() (string, error) { return base64.URLEncoding.EncodeToString(bytesPassphrase), nil } -// VolumeMapper returns file name and it's path to where encrypted device should be open +// VolumeMapper returns file name and it's path to where encrypted device should be open. func VolumeMapper(volumeID string) (mapperFile, mapperFilePath string) { mapperFile = mapperFilePrefix + volumeID mapperFilePath = path.Join(mapperFilePathPrefix, mapperFile) return mapperFile, mapperFilePath } -// EncryptVolume encrypts provided device with LUKS +// EncryptVolume encrypts provided device with LUKS. func EncryptVolume(ctx context.Context, devicePath, passphrase string) error { DebugLog(ctx, "Encrypting device %s with LUKS", devicePath) if _, _, err := LuksFormat(devicePath, passphrase); err != nil { @@ -190,21 +190,21 @@ func EncryptVolume(ctx context.Context, devicePath, passphrase string) error { return nil } -// OpenEncryptedVolume opens volume so that it can be used by the client +// OpenEncryptedVolume opens volume so that it can be used by the client. func OpenEncryptedVolume(ctx context.Context, devicePath, mapperFile, passphrase string) error { DebugLog(ctx, "Opening device %s with LUKS on %s", devicePath, mapperFile) _, _, err := LuksOpen(devicePath, mapperFile, passphrase) return err } -// CloseEncryptedVolume closes encrypted volume so it can be detached +// CloseEncryptedVolume closes encrypted volume so it can be detached. func CloseEncryptedVolume(ctx context.Context, mapperFile string) error { DebugLog(ctx, "Closing LUKS device %s", mapperFile) _, _, err := LuksClose(mapperFile) return err } -// IsDeviceOpen determines if encrypted device is already open +// IsDeviceOpen determines if encrypted device is already open. func IsDeviceOpen(ctx context.Context, device string) (bool, error) { _, mappedFile, err := DeviceEncryptionStatus(ctx, device) return (mappedFile != ""), err diff --git a/internal/util/cryptsetup.go b/internal/util/cryptsetup.go index fdfcbabe2..3a3a15024 100644 --- a/internal/util/cryptsetup.go +++ b/internal/util/cryptsetup.go @@ -23,22 +23,22 @@ import ( "strings" ) -// LuksFormat sets up volume as an encrypted LUKS partition +// LuksFormat sets up volume as an encrypted LUKS partition. func LuksFormat(devicePath, passphrase string) (stdout, stderr []byte, err error) { return execCryptsetupCommand(&passphrase, "-q", "luksFormat", "--hash", "sha256", devicePath, "-d", "/dev/stdin") } -// LuksOpen opens LUKS encrypted partition and sets up a mapping +// LuksOpen opens LUKS encrypted partition and sets up a mapping. func LuksOpen(devicePath, mapperFile, passphrase string) (stdout, stderr []byte, err error) { return execCryptsetupCommand(&passphrase, "luksOpen", devicePath, mapperFile, "-d", "/dev/stdin") } -// LuksClose removes existing mapping +// LuksClose removes existing mapping. func LuksClose(mapperFile string) (stdout, stderr []byte, err error) { return execCryptsetupCommand(nil, "luksClose", mapperFile) } -// LuksStatus returns encryption status of a provided device +// LuksStatus returns encryption status of a provided device. func LuksStatus(mapperFile string) (stdout, stderr []byte, err error) { return execCryptsetupCommand(nil, "status", mapperFile) } diff --git a/internal/util/csiconfig.go b/internal/util/csiconfig.go index 5c49f49a5..3f2b2b496 100644 --- a/internal/util/csiconfig.go +++ b/internal/util/csiconfig.go @@ -29,7 +29,7 @@ const ( defaultCsiSubvolumeGroup = "csi" ) -// ClusterInfo strongly typed JSON spec for the below JSON structure +// ClusterInfo strongly typed JSON spec for the below JSON structure. type ClusterInfo struct { // ClusterID is used for unique identification ClusterID string `json:"clusterID"` @@ -57,7 +57,7 @@ type ClusterInfo struct { // } // }, // ... -// ] +// ]. func readClusterInfo(pathToConfig, clusterID string) (*ClusterInfo, error) { var config []ClusterInfo @@ -83,7 +83,7 @@ func readClusterInfo(pathToConfig, clusterID string) (*ClusterInfo, error) { return nil, fmt.Errorf("missing configuration for cluster ID (%s)", clusterID) } -// Mons returns a comma separated MON list from the csi config for the given clusterID +// Mons returns a comma separated MON list from the csi config for the given clusterID. func Mons(pathToConfig, clusterID string) (string, error) { cluster, err := readClusterInfo(pathToConfig, clusterID) if err != nil { @@ -96,7 +96,7 @@ func Mons(pathToConfig, clusterID string) (string, error) { return strings.Join(cluster.Monitors, ","), nil } -// CephFSSubvolumeGroup returns the subvolumeGroup for CephFS volumes. If not set, it returns the default value "csi" +// CephFSSubvolumeGroup returns the subvolumeGroup for CephFS volumes. If not set, it returns the default value "csi". func CephFSSubvolumeGroup(pathToConfig, clusterID string) (string, error) { cluster, err := readClusterInfo(pathToConfig, clusterID) if err != nil { diff --git a/internal/util/errors.go b/internal/util/errors.go index 883c20997..a794154cf 100644 --- a/internal/util/errors.go +++ b/internal/util/errors.go @@ -16,7 +16,7 @@ limitations under the License. package util -// ErrKeyNotFound is returned when requested key in omap is not found +// ErrKeyNotFound is returned when requested key in omap is not found. type ErrKeyNotFound struct { keyName string err error @@ -37,7 +37,7 @@ func (e ErrKeyNotFound) Unwrap() error { return e.err } -// ErrObjectExists is returned when named omap is already present in rados +// ErrObjectExists is returned when named omap is already present in rados. type ErrObjectExists struct { objectName string err error @@ -53,7 +53,7 @@ func (e ErrObjectExists) Unwrap() error { return e.err } -// ErrObjectNotFound is returned when named omap is not found in rados +// ErrObjectNotFound is returned when named omap is not found in rados. type ErrObjectNotFound struct { oMapName string err error @@ -70,7 +70,7 @@ func (e ErrObjectNotFound) Unwrap() error { } // ErrSnapNameConflict is generated when a requested CSI snap name already exists on RBD but with -// different properties, and hence is in conflict with the passed in CSI volume name +// different properties, and hence is in conflict with the passed in CSI volume name. type ErrSnapNameConflict struct { requestName string err error @@ -91,7 +91,7 @@ func NewErrSnapNameConflict(name string, err error) ErrSnapNameConflict { return ErrSnapNameConflict{name, err} } -// ErrPoolNotFound is returned when pool is not found +// ErrPoolNotFound is returned when pool is not found. type ErrPoolNotFound struct { Pool string Err error diff --git a/internal/util/httpserver.go b/internal/util/httpserver.go index fd20dcc3b..08919ec5c 100644 --- a/internal/util/httpserver.go +++ b/internal/util/httpserver.go @@ -10,13 +10,13 @@ import ( klog "k8s.io/klog/v2" ) -// ValidateURL validates the url +// ValidateURL validates the url. func ValidateURL(c *Config) error { _, err := url.Parse(c.MetricsPath) return err } -// StartMetricsServer starts http server +// StartMetricsServer starts http server. func StartMetricsServer(c *Config) { addr := net.JoinHostPort(c.MetricsIP, strconv.Itoa(c.MetricsPort)) http.Handle(c.MetricsPath, promhttp.Handler()) diff --git a/internal/util/idlocker_test.go b/internal/util/idlocker_test.go index 79fcfdc7a..240c966e5 100644 --- a/internal/util/idlocker_test.go +++ b/internal/util/idlocker_test.go @@ -20,7 +20,7 @@ import ( "testing" ) -// very basic tests for the moment +// very basic tests for the moment. func TestIDLocker(t *testing.T) { fakeID := "fake-id" locks := NewVolumeLocks() diff --git a/internal/util/k8s.go b/internal/util/k8s.go index 34b349978..66333f74f 100644 --- a/internal/util/k8s.go +++ b/internal/util/k8s.go @@ -25,7 +25,7 @@ import ( klog "k8s.io/klog/v2" ) -// NewK8sClient create kubernetes client +// NewK8sClient create kubernetes client. func NewK8sClient() *k8s.Clientset { var cfg *rest.Config var err error diff --git a/internal/util/log.go b/internal/util/log.go index ab963fc13..7779a2b95 100644 --- a/internal/util/log.go +++ b/internal/util/log.go @@ -20,13 +20,13 @@ import ( type contextKey string -// CtxKey for context based logging +// CtxKey for context based logging. var CtxKey = contextKey("ID") -// ReqID for logging request ID +// ReqID for logging request ID. var ReqID = contextKey("Req-ID") -// Log helps in context based logging +// Log helps in context based logging. func Log(ctx context.Context, format string) string { id := ctx.Value(CtxKey) if id == nil { diff --git a/internal/util/pidlimit.go b/internal/util/pidlimit.go index e438f0075..e79c6c966 100644 --- a/internal/util/pidlimit.go +++ b/internal/util/pidlimit.go @@ -35,7 +35,7 @@ const ( // find the line containing the pids group from the /proc/self/cgroup file // $ grep 'pids' /proc/self/cgroup // 7:pids:/kubepods.slice/kubepods-besteffort.slice/....scope -// $ cat /sys/fs/cgroup/pids + *.scope + /pids.max +// $ cat /sys/fs/cgroup/pids + *.scope + /pids.max. func getCgroupPidsFile() (string, error) { cgroup, err := os.Open(procCgroup) if err != nil { diff --git a/internal/util/pidlimit_test.go b/internal/util/pidlimit_test.go index b335e6807..4d361353c 100644 --- a/internal/util/pidlimit_test.go +++ b/internal/util/pidlimit_test.go @@ -22,7 +22,7 @@ import ( ) // minimal test to check if GetPIDLimit() returns an int -// changing the limit require root permissions, not tested +// changing the limit require root permissions, not tested. func TestGetPIDLimit(t *testing.T) { runTest := os.Getenv("CEPH_CSI_RUN_ALL_TESTS") if runTest == "" { diff --git a/internal/util/topology.go b/internal/util/topology.go index 6dfa37854..c6abd5e0c 100644 --- a/internal/util/topology.go +++ b/internal/util/topology.go @@ -44,7 +44,7 @@ func k8sGetNodeLabels(nodeName string) (map[string]string, error) { // GetTopologyFromDomainLabels returns the CSI topology map, determined from // the domain labels and their values from the CO system -// Expects domainLabels in arg to be in the format "[prefix/],[prefix/],...", +// Expects domainLabels in arg to be in the format "[prefix/],[prefix/],...",. func GetTopologyFromDomainLabels(domainLabels, nodeName, driverName string) (map[string]string, error) { if domainLabels == "" { return nil, nil @@ -122,7 +122,7 @@ type topologySegment struct { DomainValue string `json:"value"` } -// TopologyConstrainedPool stores the pool name and a list of its associated topology domain values +// TopologyConstrainedPool stores the pool name and a list of its associated topology domain values. type TopologyConstrainedPool struct { PoolName string `json:"poolName"` DataPoolName string `json:"dataPool"` @@ -130,7 +130,7 @@ type TopologyConstrainedPool struct { } // GetTopologyFromRequest extracts TopologyConstrainedPools and passed in accessibility constraints -// from a CSI CreateVolume request +// from a CSI CreateVolume request. func GetTopologyFromRequest(req *csi.CreateVolumeRequest) (*[]TopologyConstrainedPool, *csi.TopologyRequirement, error) { var ( topologyPools []TopologyConstrainedPool @@ -158,7 +158,7 @@ func GetTopologyFromRequest(req *csi.CreateVolumeRequest) (*[]TopologyConstraine } // MatchTopologyForPool returns the topology map, if the passed in pool matches any -// passed in accessibility constraints +// passed in accessibility constraints. func MatchTopologyForPool(topologyPools *[]TopologyConstrainedPool, accessibilityRequirements *csi.TopologyRequirement, poolName string) (map[string]string, error) { var topologyPool []TopologyConstrainedPool @@ -187,7 +187,7 @@ func MatchTopologyForPool(topologyPools *[]TopologyConstrainedPool, // FindPoolAndTopology loops through passed in "topologyPools" and also related // accessibility requirements, to determine which pool matches the requirement. // The return variables are, image poolname, data poolname, and topology map of -// matched requirement +// matched requirement. func FindPoolAndTopology(topologyPools *[]TopologyConstrainedPool, accessibilityRequirements *csi.TopologyRequirement) (string, string, map[string]string, error) { if topologyPools == nil || accessibilityRequirements == nil { @@ -217,7 +217,7 @@ func FindPoolAndTopology(topologyPools *[]TopologyConstrainedPool, // matchPoolToTopology loops through passed in pools, and for each pool checks if all // requested topology segments are present and match the request, returning the first pool -// that hence matches (or an empty string if none match) +// that hence matches (or an empty string if none match). func matchPoolToTopology(topologyPools *[]TopologyConstrainedPool, topology *csi.Topology) TopologyConstrainedPool { domainMap := extractDomainsFromlabels(topology) @@ -243,7 +243,7 @@ func matchPoolToTopology(topologyPools *[]TopologyConstrainedPool, topology *csi } // extractDomainsFromlabels returns the domain name map, from passed in domain segments, -// which is of the form [prefix/] +// which is of the form [prefix/]. func extractDomainsFromlabels(topology *csi.Topology) map[string]string { domainMap := make(map[string]string) for domainKey, value := range topology.GetSegments() { diff --git a/internal/util/topology_test.go b/internal/util/topology_test.go index 4f6fe9b9f..6dad4e52f 100644 --- a/internal/util/topology_test.go +++ b/internal/util/topology_test.go @@ -35,7 +35,7 @@ func checkAndReportError(t *testing.T, msg string, err error) { } } -// TestFindPoolAndTopology also tests MatchTopologyForPool +// TestFindPoolAndTopology also tests MatchTopologyForPool. func TestFindPoolAndTopology(t *testing.T) { var err error var label1 = "region" diff --git a/internal/util/util.go b/internal/util/util.go index ce913fb51..b59971048 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -44,7 +44,7 @@ const ( Trace ) -// RoundOffVolSize rounds up given quantity upto chunks of MiB/GiB +// RoundOffVolSize rounds up given quantity upto chunks of MiB/GiB. func RoundOffVolSize(size int64) int64 { size = RoundOffBytes(size) // convert size back to MiB for rbd CLI @@ -53,7 +53,7 @@ func RoundOffVolSize(size int64) int64 { // RoundOffBytes converts roundoff the size // 1.1Mib will be round off to 2Mib same for GiB -// size less than 1MiB will be round off to 1MiB +// size less than 1MiB will be round off to 1MiB. func RoundOffBytes(bytes int64) int64 { var num int64 floatBytes := float64(bytes) @@ -68,7 +68,7 @@ func RoundOffBytes(bytes int64) int64 { return num } -// variables which will be set during the build time +// variables which will be set during the build time. var ( // GitCommit tell the latest git commit image is built from GitCommit string @@ -76,7 +76,7 @@ var ( DriverVersion string ) -// Config holds the parameters list which can be configured +// Config holds the parameters list which can be configured. type Config struct { Vtype string // driver type [rbd|cephfs|liveness] Endpoint string // CSI endpoint @@ -119,7 +119,7 @@ type Config struct { MaxSnapshotsOnImage uint } -// ValidateDriverName validates the driver name +// ValidateDriverName validates the driver name. func ValidateDriverName(driverName string) error { if driverName == "" { return errors.New("driver name is empty") @@ -150,7 +150,7 @@ func GetKernelVersion() (string, error) { return strings.TrimRight(string(utsname.Release[:]), "\x00"), nil } -// KernelVersion holds kernel related informations +// KernelVersion holds kernel related informations. type KernelVersion struct { Version int PatchLevel int @@ -235,7 +235,7 @@ func CheckKernelSupport(release string, supportedVersions []KernelVersion) bool } // GenerateVolID generates a volume ID based on passed in parameters and version, to be returned -// to the CO system +// to the CO system. func GenerateVolID(ctx context.Context, monitors string, cr *Credentials, locationID int64, pool, clusterID, objUUID string, volIDVersion uint16) (string, error) { var err error @@ -259,12 +259,12 @@ func GenerateVolID(ctx context.Context, monitors string, cr *Credentials, locati return volID, err } -// CreateMountPoint creates the directory with given path +// CreateMountPoint creates the directory with given path. func CreateMountPoint(mountPath string) error { return os.MkdirAll(mountPath, 0750) } -// checkDirExists checks directory exists or not +// checkDirExists checks directory exists or not. func checkDirExists(p string) bool { if _, err := os.Stat(p); os.IsNotExist(err) { return false @@ -272,7 +272,7 @@ func checkDirExists(p string) bool { return true } -// IsMountPoint checks if the given path is mountpoint or not +// IsMountPoint checks if the given path is mountpoint or not. func IsMountPoint(p string) (bool, error) { dummyMount := mount.New("") notMnt, err := dummyMount.IsLikelyNotMountPoint(p) @@ -283,7 +283,7 @@ func IsMountPoint(p string) (bool, error) { return !notMnt, nil } -// Mount mounts the source to target path +// Mount mounts the source to target path. func Mount(source, target, fstype string, options []string) error { dummyMount := mount.New("") return dummyMount.Mount(source, target, fstype, options) @@ -321,7 +321,7 @@ func contains(s []string, key string) bool { return false } -// DefaultLog helps in logging with klog.level 1 +// DefaultLog helps in logging with klog.level 1. func DefaultLog(message string, args ...interface{}) { logMessage := fmt.Sprintf(message, args...) // If logging is disabled, don't evaluate the arguments @@ -330,7 +330,7 @@ func DefaultLog(message string, args ...interface{}) { } } -// UsefulLog helps in logging with klog.level 2 +// UsefulLog helps in logging with klog.level 2. func UsefulLog(ctx context.Context, message string, args ...interface{}) { logMessage := fmt.Sprintf(Log(ctx, message), args...) // If logging is disabled, don't evaluate the arguments @@ -339,7 +339,7 @@ func UsefulLog(ctx context.Context, message string, args ...interface{}) { } } -// ExtendedLogMsg helps in logging a message with klog.level 3 +// ExtendedLogMsg helps in logging a message with klog.level 3. func ExtendedLogMsg(message string, args ...interface{}) { logMessage := fmt.Sprintf(message, args...) // If logging is disabled, don't evaluate the arguments @@ -348,7 +348,7 @@ func ExtendedLogMsg(message string, args ...interface{}) { } } -// ExtendedLog helps in logging with klog.level 3 +// ExtendedLog helps in logging with klog.level 3. func ExtendedLog(ctx context.Context, message string, args ...interface{}) { logMessage := fmt.Sprintf(Log(ctx, message), args...) // If logging is disabled, don't evaluate the arguments @@ -357,7 +357,7 @@ func ExtendedLog(ctx context.Context, message string, args ...interface{}) { } } -// DebugLogMsg helps in logging a message with klog.level 4 +// DebugLogMsg helps in logging a message with klog.level 4. func DebugLogMsg(message string, args ...interface{}) { logMessage := fmt.Sprintf(message, args...) // If logging is disabled, don't evaluate the arguments @@ -366,7 +366,7 @@ func DebugLogMsg(message string, args ...interface{}) { } } -// DebugLog helps in logging with klog.level 4 +// DebugLog helps in logging with klog.level 4. func DebugLog(ctx context.Context, message string, args ...interface{}) { logMessage := fmt.Sprintf(Log(ctx, message), args...) // If logging is disabled, don't evaluate the arguments @@ -375,7 +375,7 @@ func DebugLog(ctx context.Context, message string, args ...interface{}) { } } -// TraceLogMsg helps in logging a message with klog.level 5 +// TraceLogMsg helps in logging a message with klog.level 5. func TraceLogMsg(message string, args ...interface{}) { logMessage := fmt.Sprintf(message, args...) // If logging is disabled, don't evaluate the arguments @@ -384,7 +384,7 @@ func TraceLogMsg(message string, args ...interface{}) { } } -// TraceLog helps in logging with klog.level 5 +// TraceLog helps in logging with klog.level 5. func TraceLog(ctx context.Context, message string, args ...interface{}) { logMessage := fmt.Sprintf(Log(ctx, message), args...) // If logging is disabled, don't evaluate the arguments diff --git a/internal/util/validate.go b/internal/util/validate.go index 215d3bb79..daeed0dda 100644 --- a/internal/util/validate.go +++ b/internal/util/validate.go @@ -6,7 +6,7 @@ import ( "google.golang.org/grpc/status" ) -// ValidateNodeStageVolumeRequest validates the node stage request +// ValidateNodeStageVolumeRequest validates the node stage request. func ValidateNodeStageVolumeRequest(req *csi.NodeStageVolumeRequest) error { if req.GetVolumeCapability() == nil { return status.Error(codes.InvalidArgument, "volume capability missing in request") @@ -32,7 +32,7 @@ func ValidateNodeStageVolumeRequest(req *csi.NodeStageVolumeRequest) error { return nil } -// ValidateNodeUnstageVolumeRequest validates the node unstage request +// ValidateNodeUnstageVolumeRequest validates the node unstage request. func ValidateNodeUnstageVolumeRequest(req *csi.NodeUnstageVolumeRequest) error { if req.GetVolumeId() == "" { return status.Error(codes.InvalidArgument, "volume ID missing in request") @@ -45,7 +45,7 @@ func ValidateNodeUnstageVolumeRequest(req *csi.NodeUnstageVolumeRequest) error { return nil } -// ValidateNodePublishVolumeRequest validates the node publish request +// ValidateNodePublishVolumeRequest validates the node publish request. func ValidateNodePublishVolumeRequest(req *csi.NodePublishVolumeRequest) error { if req.GetVolumeCapability() == nil { return status.Error(codes.InvalidArgument, "volume capability missing in request") @@ -66,7 +66,7 @@ func ValidateNodePublishVolumeRequest(req *csi.NodePublishVolumeRequest) error { return nil } -// ValidateNodeUnpublishVolumeRequest validates the node unpublish request +// ValidateNodeUnpublishVolumeRequest validates the node unpublish request. func ValidateNodeUnpublishVolumeRequest(req *csi.NodeUnpublishVolumeRequest) error { if req.GetVolumeId() == "" { return status.Error(codes.InvalidArgument, "volume ID missing in request") diff --git a/internal/util/vault.go b/internal/util/vault.go index 04df0ebf9..b668e1675 100644 --- a/internal/util/vault.go +++ b/internal/util/vault.go @@ -62,7 +62,7 @@ Example JSON structure in the KMS config is, "vaultCAFromSecret": "vault-ca" }, ... -} +}. */ type VaultKMS struct { EncryptionKMSID string @@ -76,7 +76,7 @@ type VaultKMS struct { vaultCA *x509.CertPool } -// InitVaultKMS returns an interface to HashiCorp Vault KMS +// InitVaultKMS returns an interface to HashiCorp Vault KMS. func InitVaultKMS(kmsID string, config, secrets map[string]string) (EncryptionKMS, error) { var ( ok bool @@ -136,12 +136,12 @@ func InitVaultKMS(kmsID string, config, secrets map[string]string) (EncryptionKM return kms, nil } -// GetID is returning correlation ID to KMS configuration +// GetID is returning correlation ID to KMS configuration. func (kms *VaultKMS) GetID() string { return kms.EncryptionKMSID } -// GetPassphrase returns passphrase from Vault +// GetPassphrase returns passphrase from Vault. func (kms *VaultKMS) GetPassphrase(key string) (string, error) { var passphrase string resp, err := kms.request("GET", kms.getKeyDataURI(key), nil) @@ -182,7 +182,7 @@ func (kms *VaultKMS) GetPassphrase(key string) (string, error) { return passphrase, nil } -// SavePassphrase saves new passphrase in Vault +// SavePassphrase saves new passphrase in Vault. func (kms *VaultKMS) SavePassphrase(key, value string) error { data, err := json.Marshal(map[string]map[string]string{ "data": { @@ -206,7 +206,7 @@ func (kms *VaultKMS) SavePassphrase(key, value string) error { return nil } -// DeletePassphrase deletes passphrase from Vault +// DeletePassphrase deletes passphrase from Vault. func (kms *VaultKMS) DeletePassphrase(key string) error { vaultToken, err := kms.getAccessToken() if err != nil { @@ -241,7 +241,7 @@ getVaultAccessToken retrieves vault token using kubernetes authentication: 1. read jwt service account token from well known location 2. request token from vault using service account jwt token Vault will verify service account jwt token with Kubernetes and return token -if the requester is allowed +if the requester is allowed. */ func (kms *VaultKMS) getAccessToken() (string, error) { saToken, err := ioutil.ReadFile(serviceAccountTokenPath) diff --git a/internal/util/volid.go b/internal/util/volid.go index f7da1c48e..270487b2b 100644 --- a/internal/util/volid.go +++ b/internal/util/volid.go @@ -49,7 +49,7 @@ type CSIIdentifier struct { ObjectUUID string } -// This maximum comes from the CSI spec on max bytes allowed in the various CSI ID fields +// This maximum comes from the CSI spec on max bytes allowed in the various CSI ID fields. const maxVolIDLen = 128 const ( @@ -95,7 +95,7 @@ func (ci CSIIdentifier) ComposeCSIID() (string, error) { } /* -DecomposeCSIID composes a CSIIdentifier from passed in string +DecomposeCSIID composes a CSIIdentifier from passed in string. */ func (ci *CSIIdentifier) DecomposeCSIID(composedCSIID string) (err error) { bytesToProcess := uint16(len(composedCSIID)) diff --git a/internal/util/volid_test.go b/internal/util/volid_test.go index a7053ec81..28bb0e893 100644 --- a/internal/util/volid_test.go +++ b/internal/util/volid_test.go @@ -29,7 +29,7 @@ type testTuple struct { wantDecError bool } -// TODO: Add more test tuples to test out other edge conditions +// TODO: Add more test tuples to test out other edge conditions. var testData = []testTuple{ { vID: CSIIdentifier{