From 817a51b7f6ecfbb21580c360eed4a46c8eddc693 Mon Sep 17 00:00:00 2001 From: Ruslan Timofieiev Date: Sun, 16 Apr 2023 19:51:49 +0300 Subject: [PATCH 01/12] Add ability to provide format options --- README.md | 1 + go.mod | 5 ++- go.sum | 33 ++++++++++++-------- pkg/driver/controllerserver.go | 56 +++++++++++++++++++--------------- pkg/driver/nodeserver.go | 25 +++++++-------- pkg/models/dsm_req_spec.go | 1 + pkg/utils/utils.go | 4 +++ 7 files changed, 72 insertions(+), 53 deletions(-) diff --git a/README.md b/README.md index cb21852..751d98c 100644 --- a/README.md +++ b/README.md @@ -162,6 +162,7 @@ Create and apply StorageClasses with the properties you want. | *location* | string | The location (/volume1, /volume2, ...) on DSM where the LUN for *PersistentVolume* will be created | - | iSCSI, SMB | | *fsType* | string | The formatting file system of the *PersistentVolumes* when you mount them on the pods. This parameter only works with iSCSI. For SMB, the fsType is always ‘cifs‘. | 'ext4' | iSCSI | | *protocol* | string | The storage backend protocol. Enter ‘iscsi’ to create LUNs or ‘smb‘ to create shared folders on DSM. | 'iscsi' | iSCSI, SMB | + | *formatOptions* | string | Additional options/arguments passed to `mkfs.*` command. See a linux manual that corresponds with your FS of choice. | - | iSCSI | | *csi.storage.k8s.io/node-stage-secret-name* | string | The name of node-stage-secret. Required if DSM shared folder is accessed via SMB. | - | SMB | | *csi.storage.k8s.io/node-stage-secret-namespace* | string | The namespace of node-stage-secret. Required if DSM shared folder is accessed via SMB. | - | SMB | diff --git a/go.mod b/go.mod index 7751ea6..916c51b 100644 --- a/go.mod +++ b/go.mod @@ -10,12 +10,11 @@ require ( github.com/kubernetes-csi/csi-test/v4 v4.3.0 github.com/sirupsen/logrus v1.7.0 github.com/spf13/cobra v1.1.3 - github.com/spf13/pflag v1.0.5 google.golang.org/grpc v1.34.0 google.golang.org/protobuf v1.25.0 gopkg.in/yaml.v2 v2.4.0 - k8s.io/mount-utils v0.21.2 - k8s.io/utils v0.0.0-20210527160623-6fdb442a123b + k8s.io/mount-utils v0.26.4 + k8s.io/utils v0.0.0-20221107191617-1a15be271d1d ) exclude google.golang.org/grpc v1.37.0 diff --git a/go.sum b/go.sum index 7378ae7..cf8aa38 100644 --- a/go.sum +++ b/go.sum @@ -96,8 +96,9 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v0.3.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v0.4.0 h1:K7/B1jt6fIBQVd4Owv2MqGQClcgf0R266+7C/QjRcLc= -github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= @@ -217,6 +218,8 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4 github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= +github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -297,12 +300,14 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= @@ -404,8 +409,10 @@ golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201207223542-d4d67f95c62d h1:MiWWjyhUzZ+jvhZvloX6ZrUsdEghn8a64Upd8EMHglE= golang.org/x/sys v0.0.0-20201207223542-d4d67f95c62d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -511,8 +518,9 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -528,15 +536,14 @@ k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8 k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.8.0 h1:Q3gmuM9hKEjefWFFYF0Mat+YyFJvsUyYuwyNNJ5C9Ts= -k8s.io/klog/v2 v2.8.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= +k8s.io/klog/v2 v2.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4= +k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= -k8s.io/mount-utils v0.21.2 h1:tsCdw29Gv7PxwCQSeAmZ5WFkFLoNPdZVRouCnyDY/Lo= -k8s.io/mount-utils v0.21.2/go.mod h1:dwXbIPxKtTjrBEaX1aK/CMEf1KZ8GzMHpe3NEBfdFXI= +k8s.io/mount-utils v0.26.4 h1:yAtBd7D/AajxMhYXq1nO2sDuRCqwPtNspvJy0vqsNPQ= +k8s.io/mount-utils v0.26.4/go.mod h1:95yx9K6N37y8YZ0/lUh9U6ITosMODNaW0/v4wvaa0Xw= k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210527160623-6fdb442a123b h1:MSqsVQ3pZvPGTqCjptfimO2WjG7A9un2zcpiHkA6M/s= -k8s.io/utils v0.0.0-20210527160623-6fdb442a123b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20221107191617-1a15be271d1d h1:0Smp/HP1OH4Rvhe+4B8nWGERtlqAGSftbSbbmm45oFs= +k8s.io/utils v0.0.0-20221107191617-1a15be271d1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/pkg/driver/controllerserver.go b/pkg/driver/controllerserver.go index 739fa48..1811296 100644 --- a/pkg/driver/controllerserver.go +++ b/pkg/driver/controllerserver.go @@ -19,16 +19,17 @@ package driver import ( "context" "fmt" - log "github.com/sirupsen/logrus" - "time" "sort" "strconv" "strings" + "time" + + log "github.com/sirupsen/logrus" - "google.golang.org/protobuf/types/known/timestamppb" "github.com/container-storage-interface/spec/lib/go/csi" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "google.golang.org/protobuf/types/known/timestamppb" "github.com/SynologyOpenSource/synology-csi/pkg/interfaces" "github.com/SynologyOpenSource/synology-csi/pkg/models" @@ -127,6 +128,10 @@ func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol return nil, status.Error(codes.InvalidArgument, "Unsupported volume protocol") } + // not needed during CreateVolume method + // used only in NodeStageVolume though VolumeContext + formatOptions := params["formatOptions"] + spec := &models.CreateK8sVolumeSpec{ DsmIp: params["dsm"], K8sVolumeName: volName, @@ -158,18 +163,19 @@ func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol if (k8sVolume.Protocol == utils.ProtocolIscsi && k8sVolume.SizeInBytes != sizeInByte) || (k8sVolume.Protocol == utils.ProtocolSmb && utils.BytesToMB(k8sVolume.SizeInBytes) != utils.BytesToMBCeil(sizeInByte)) { - return nil , status.Errorf(codes.AlreadyExists, "Already existing volume name with different capacity") + return nil, status.Errorf(codes.AlreadyExists, "Already existing volume name with different capacity") } return &csi.CreateVolumeResponse{ Volume: &csi.Volume{ - VolumeId: k8sVolume.VolumeId, + VolumeId: k8sVolume.VolumeId, CapacityBytes: k8sVolume.SizeInBytes, ContentSource: volContentSrc, VolumeContext: map[string]string{ - "dsm": k8sVolume.DsmIp, - "protocol": k8sVolume.Protocol, - "source": k8sVolume.Source, + "dsm": k8sVolume.DsmIp, + "protocol": k8sVolume.Protocol, + "source": k8sVolume.Source, + "formatOptions": formatOptions, }, }, }, nil @@ -273,7 +279,7 @@ func (cs *controllerServer) ListVolumes(ctx context.Context, req *csi.ListVolume } return &csi.ListVolumesResponse{ - Entries: entries, + Entries: entries, NextToken: nextToken, }, nil } @@ -339,11 +345,11 @@ func (cs *controllerServer) CreateSnapshot(ctx context.Context, req *csi.CreateS } return &csi.CreateSnapshotResponse{ Snapshot: &csi.Snapshot{ - SizeBytes: orgSnap.SizeInBytes, - SnapshotId: orgSnap.Uuid, + SizeBytes: orgSnap.SizeInBytes, + SnapshotId: orgSnap.Uuid, SourceVolumeId: orgSnap.ParentUuid, - CreationTime: timestamppb.New(time.Unix(orgSnap.CreateTime, 0)), - ReadyToUse: (orgSnap.Status == "Healthy"), + CreationTime: timestamppb.New(time.Unix(orgSnap.CreateTime, 0)), + ReadyToUse: (orgSnap.Status == "Healthy"), }, }, nil } @@ -365,11 +371,11 @@ func (cs *controllerServer) CreateSnapshot(ctx context.Context, req *csi.CreateS return &csi.CreateSnapshotResponse{ Snapshot: &csi.Snapshot{ - SizeBytes: snapshot.SizeInBytes, - SnapshotId: snapshot.Uuid, + SizeBytes: snapshot.SizeInBytes, + SnapshotId: snapshot.Uuid, SourceVolumeId: snapshot.ParentUuid, - CreationTime: timestamppb.New(time.Unix(snapshot.CreateTime, 0)), - ReadyToUse: (snapshot.Status == "Healthy"), + CreationTime: timestamppb.New(time.Unix(snapshot.CreateTime, 0)), + ReadyToUse: (snapshot.Status == "Healthy"), }, }, nil } @@ -405,7 +411,7 @@ func (cs *controllerServer) ListSnapshots(ctx context.Context, req *csi.ListSnap pagingSkip := ("" != startingToken) var snapshots []*models.K8sSnapshotRespSpec - if (srcVolId != "") { + if srcVolId != "" { snapshots = cs.dsmService.ListSnapshots(srcVolId) } else { snapshots = cs.dsmService.ListAllSnapshots() @@ -433,11 +439,11 @@ func (cs *controllerServer) ListSnapshots(ctx context.Context, req *csi.ListSnap } entries = append(entries, &csi.ListSnapshotsResponse_Entry{ Snapshot: &csi.Snapshot{ - SizeBytes: snapshot.SizeInBytes, - SnapshotId: snapshot.Uuid, + SizeBytes: snapshot.SizeInBytes, + SnapshotId: snapshot.Uuid, SourceVolumeId: snapshot.ParentUuid, - CreationTime: timestamppb.New(time.Unix(snapshot.CreateTime, 0)), - ReadyToUse: (snapshot.Status == "Healthy"), + CreationTime: timestamppb.New(time.Unix(snapshot.CreateTime, 0)), + ReadyToUse: (snapshot.Status == "Healthy"), }, }) @@ -449,7 +455,7 @@ func (cs *controllerServer) ListSnapshots(ctx context.Context, req *csi.ListSnap } return &csi.ListSnapshotsResponse{ - Entries: entries, + Entries: entries, NextToken: nextToken, }, nil } @@ -474,11 +480,11 @@ func (cs *controllerServer) ControllerExpandVolume(ctx context.Context, req *csi } return &csi.ControllerExpandVolumeResponse{ - CapacityBytes: k8sVolume.SizeInBytes, + CapacityBytes: k8sVolume.SizeInBytes, NodeExpansionRequired: (k8sVolume.Protocol == utils.ProtocolIscsi), }, nil } func (cs *controllerServer) ControllerGetVolume(ctx context.Context, req *csi.ControllerGetVolumeRequest) (*csi.ControllerGetVolumeResponse, error) { return nil, status.Error(codes.Unimplemented, "") -} \ No newline at end of file +} diff --git a/pkg/driver/nodeserver.go b/pkg/driver/nodeserver.go index 5355d2b..9b9678f 100644 --- a/pkg/driver/nodeserver.go +++ b/pkg/driver/nodeserver.go @@ -289,9 +289,9 @@ func (ns *nodeServer) setSMBVolumePermission(sourcePath string, userName string, permissions := append([]*webapi.SharePermission{}, &permission) spec := webapi.SharePermissionSetSpec{ - Name: shareName, + Name: shareName, UserGroupType: models.UserGroupTypeLocalUser, - Permissions: permissions, + Permissions: permissions, } return dsm.SharePermissionSet(spec) @@ -325,7 +325,9 @@ func (ns *nodeServer) nodeStageISCSIVolume(ctx context.Context, spec *models.Nod fsType := spec.VolumeCapability.GetMount().GetFsType() options := append([]string{"rw"}, spec.VolumeCapability.GetMount().GetMountFlags()...) - if err = ns.Mounter.FormatAndMount(volumeMountPath, spec.StagingTargetPath, fsType, options); err != nil { + formatOptions := utils.StringToSlice(spec.FormatOptions) + + if err = ns.Mounter.FormatAndMountSensitiveWithFormatOptions(volumeMountPath, spec.StagingTargetPath, fsType, options, nil, formatOptions); err != nil { return nil, status.Error(codes.Internal, err.Error()) } @@ -377,7 +379,6 @@ func (ns *nodeServer) nodeStageSMBVolume(ctx context.Context, spec *models.NodeS options = append(options, fmt.Sprintf("gid=%s", volumeMountGroup)) } - if domain != "" { options = append(options, fmt.Sprintf("%s=%s", "domain", domain)) } @@ -395,7 +396,7 @@ func (ns *nodeServer) NodeStageVolume(ctx context.Context, req *csi.NodeStageVol if volumeId == "" || stagingTargetPath == "" || volumeCapability == nil { return nil, status.Error(codes.InvalidArgument, - "InvalidArgument: Please check volume ID, staging target path and volume capability.") + "InvalidArgument: Please check volume ID, staging target path and volume capability.") } if volumeCapability.GetBlock() != nil && volumeCapability.GetMount() != nil { @@ -403,11 +404,12 @@ func (ns *nodeServer) NodeStageVolume(ctx context.Context, req *csi.NodeStageVol } spec := &models.NodeStageVolumeSpec{ - VolumeId: volumeId, + VolumeId: volumeId, StagingTargetPath: stagingTargetPath, - VolumeCapability: volumeCapability, - Dsm: req.VolumeContext["dsm"], - Source: req.VolumeContext["source"], // filled by CreateVolume response + VolumeCapability: volumeCapability, + Dsm: req.VolumeContext["dsm"], + Source: req.VolumeContext["source"], // filled by CreateVolume response + FormatOptions: req.VolumeContext["formatOptions"], } switch req.VolumeContext["protocol"] { @@ -571,13 +573,12 @@ func (ns *nodeServer) NodeGetVolumeStats(ctx context.Context, req *csi.NodeGetVo fmt.Sprintf("Volume[%s] does not exist on the %s", volumeId, volumePath)) } - if k8sVolume.Protocol == utils.ProtocolSmb { return &csi.NodeGetVolumeStatsResponse{ Usage: []*csi.VolumeUsage{ &csi.VolumeUsage{ - Total: k8sVolume.SizeInBytes, - Unit: csi.VolumeUsage_BYTES, + Total: k8sVolume.SizeInBytes, + Unit: csi.VolumeUsage_BYTES, }, }, }, nil diff --git a/pkg/models/dsm_req_spec.go b/pkg/models/dsm_req_spec.go index a91511e..8055735 100644 --- a/pkg/models/dsm_req_spec.go +++ b/pkg/models/dsm_req_spec.go @@ -65,6 +65,7 @@ type NodeStageVolumeSpec struct { VolumeCapability *csi.VolumeCapability Dsm string Source string + FormatOptions string } type ByVolumeId []*K8sVolumeRespSpec diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index a7b7b8f..167b518 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -50,6 +50,10 @@ func StringToBoolean(value string) bool { return value == "yes" || value == "true" || value == "1" } +func StringToSlice(value string) []string { + return strings.Fields(value) +} + // Haven't supported IPv6 yet. func LookupIPv4(name string) ([]string, error) { ips, _ := net.LookupIP(name) From 9d6b375935155aa7b65c1740f74f6db016e7091a Mon Sep 17 00:00:00 2001 From: chihyuwu Date: Tue, 13 Jun 2023 19:26:04 +0800 Subject: [PATCH 02/12] Update golang image version in Dockerfile --- Dockerfile | 4 ++-- README.md | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index a1dee87..3dc7392 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,12 @@ # Copyright 2021 Synology Inc. ############## Build stage ############## -FROM golang:1.13.6-alpine as builder +FROM golang:1.20.5-alpine as builder LABEL stage=synobuilder RUN apk add --no-cache alpine-sdk WORKDIR /go/src/synok8scsiplugin -COPY go.mod . +COPY go.mod go.sum ./ RUN go mod download COPY Makefile . diff --git a/README.md b/README.md index f467f20..7385f6a 100644 --- a/README.md +++ b/README.md @@ -116,9 +116,10 @@ Create and apply StorageClasses with the properties you want. name: synostorage provisioner: csi.san.synology.com parameters: - fsType: 'ext4' + fsType: 'btrfs' dsm: '192.168.1.1' location: '/volume1' + formatOptions: '--nodiscard' reclaimPolicy: Retain allowVolumeExpansion: true ``` From c089d5f22195eb708c1cd50aaf7bd9c10bf8fa3f Mon Sep 17 00:00:00 2001 From: Jason Kincl Date: Sun, 25 Jun 2023 21:20:42 -0400 Subject: [PATCH 03/12] Set node.startup to manual for iscsi Fixes a condition where the default node.startup is automatic and a node reboots iscsid will attempt to create sessions for all of the targets. Instead we want the CSI to control when sessions get created. --- pkg/driver/initiator.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/pkg/driver/initiator.go b/pkg/driver/initiator.go index 5b3d142..768a8ef 100644 --- a/pkg/driver/initiator.go +++ b/pkg/driver/initiator.go @@ -123,6 +123,21 @@ func iscsiadm_login(iqn, portal string) error { return nil } +func iscsiadm_update_node_startup(iqn, portal string) error { + cmd := iscsiadm( + "-m", "node", + "--targetname", iqn, + "--portal", portal, + "--op", "update", + "--name", "node.startup", + "--value", "manual") + out, err := cmd.CombinedOutput() + if err != nil { + return fmt.Errorf("%s (%v)", string(out), err) + } + return nil +} + func iscsiadm_logout(iqn string) error { cmd := iscsiadm( "-m", "node", @@ -185,6 +200,10 @@ func (d *initiatorDriver) login(targetIqn string, portal string) error{ return err } + if err := iscsiadm_update_node_startup(targetIqn, portal); err != nil { + log.Warnf("Failed to update target node.startup to manual: %v", err) + } + log.Infof("Login target portal [%s], iqn [%s].", portal, targetIqn) return nil From bcb39ab91902f28411bf53b2306be3b3ed1e3467 Mon Sep 17 00:00:00 2001 From: Jason Kincl Date: Sun, 25 Jun 2023 21:19:47 -0400 Subject: [PATCH 04/12] Updating gofmt --- pkg/driver/initiator.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pkg/driver/initiator.go b/pkg/driver/initiator.go index 768a8ef..2bbd147 100644 --- a/pkg/driver/initiator.go +++ b/pkg/driver/initiator.go @@ -29,7 +29,7 @@ import ( ) type initiatorDriver struct { - chapUser string + chapUser string chapPassword string } @@ -184,8 +184,8 @@ func listSessionsByIqn(targetIqn string) (matchedSessions []iscsiSession) { return matchedSessions } -func (d *initiatorDriver) login(targetIqn string, portal string) error{ - if (hasSession(targetIqn, portal)) { +func (d *initiatorDriver) login(targetIqn string, portal string) error { + if hasSession(targetIqn, portal) { log.Infof("Session[%s] already exists.", targetIqn) return nil } @@ -209,8 +209,8 @@ func (d *initiatorDriver) login(targetIqn string, portal string) error{ return nil } -func (d *initiatorDriver) logout(targetIqn string, ip string) error{ - if (!hasSession(targetIqn, "")) { +func (d *initiatorDriver) logout(targetIqn string, ip string) error { + if !hasSession(targetIqn, "") { log.Infof("Session[%s] doesn't exist.", targetIqn) return nil } @@ -227,8 +227,8 @@ func (d *initiatorDriver) logout(targetIqn string, ip string) error{ return nil } -func (d *initiatorDriver) rescan(targetIqn string) error{ - if (!hasSession(targetIqn, "")) { +func (d *initiatorDriver) rescan(targetIqn string) error { + if !hasSession(targetIqn, "") { msg := fmt.Sprintf("Session[%s] doesn't exist.", targetIqn) log.Error(msg) return errors.New(msg) From b3908498a2e6b1864fa8d282714edf29231db518 Mon Sep 17 00:00:00 2001 From: Jason Kincl Date: Sat, 15 Jul 2023 20:59:23 -0400 Subject: [PATCH 05/12] Add login retry for session timeout Error code 106 is a session timeout error so we should retry login before erroring out on the request --- pkg/dsm/webapi/dsmwebapi.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/pkg/dsm/webapi/dsmwebapi.go b/pkg/dsm/webapi/dsmwebapi.go index 1fa3fda..2661da4 100644 --- a/pkg/dsm/webapi/dsmwebapi.go +++ b/pkg/dsm/webapi/dsmwebapi.go @@ -9,20 +9,21 @@ import ( "encoding/json" "fmt" "io/ioutil" - log "github.com/sirupsen/logrus" "net/http" "net/url" "regexp" + "github.com/SynologyOpenSource/synology-csi/pkg/logger" + log "github.com/sirupsen/logrus" ) type DSM struct { - Ip string - Port int - Username string - Password string - Sid string - Https bool + Ip string + Port int + Username string + Password string + Sid string + Https bool Controller string //new } @@ -44,13 +45,13 @@ type Response struct { func (dsm *DSM) sendRequest(data string, apiTemplate interface{}, params url.Values, cgiPath string) (Response, error) { resp, err := dsm.sendRequestWithoutConnectionCheck(data, apiTemplate, params, cgiPath) - if err != nil && (resp.ErrorCode == 105 || resp.ErrorCode == 119) { // 105: WEBAPI_ERR_NO_PERMISSION, 119: WEBAPI_ERR_SID_NOT_FOUND + if err != nil && (resp.ErrorCode == 105 || resp.ErrorCode == 106 || resp.ErrorCode == 119) { // 105: WEBAPI_ERR_NO_PERMISSION, 106: session timeout, 119: WEBAPI_ERR_SID_NOT_FOUND // Re-login if err := dsm.Login(); err != nil { return Response{}, fmt.Errorf("Failed to re-login to DSM: [%s]. err: %v", dsm.Ip, err) } log.Info("Re-login succeeded.") - return dsm.sendRequestWithoutConnectionCheck(data, apiTemplate, params, cgiPath); + return dsm.sendRequestWithoutConnectionCheck(data, apiTemplate, params, cgiPath) } return resp, err From 2a5a149bb41c0d0fe3507bca66f3e8705b33bdcd Mon Sep 17 00:00:00 2001 From: GautierLeblanc Date: Tue, 18 Jul 2023 08:45:46 +0000 Subject: [PATCH 06/12] Update helm for custom kubelet path support --- deploy/helm/templates/node.yaml | 6 +++--- deploy/helm/values.yaml | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/deploy/helm/templates/node.yaml b/deploy/helm/templates/node.yaml index 8bdbca6..b3f33ba 100644 --- a/deploy/helm/templates/node.yaml +++ b/deploy/helm/templates/node.yaml @@ -147,15 +147,15 @@ spec: type: Directory - name: kubelet-dir hostPath: - path: /var/lib/kubelet + path: {{ .kubeletPath }} type: Directory - name: plugin-dir hostPath: - path: /var/lib/kubelet/plugins/csi.san.synology.com + path: {{ .kubeletPath }}/plugins/csi.san.synology.com type: DirectoryOrCreate - name: registration-dir hostPath: - path: /var/lib/kubelet/plugins_registry + path: {{ .kubeletPath }}/plugins_registry type: Directory {{- end }} {{- end }} diff --git a/deploy/helm/values.yaml b/deploy/helm/values.yaml index 473a9ab..5cc071e 100644 --- a/deploy/helm/values.yaml +++ b/deploy/helm/values.yaml @@ -55,6 +55,9 @@ node: affinity: { } nodeSelector: { } tolerations: [ ] + # If your kubelet path is not standard, specify it here : + ## example for miocrok8s distrib : /var/snap/microk8s/common/var/lib/kubelet + kubeletPath: /var/lib/kubelet # Specifies affinity, nodeSelector and tolerations for the snapshotter StatefulSet snapshotter: affinity: { } From 629b5090add4d6afbeab371db993e2bd51de6fbb Mon Sep 17 00:00:00 2001 From: GautierLeblanc Date: Mon, 24 Jul 2023 23:57:49 +0000 Subject: [PATCH 07/12] Fix node.yaml helm template --- deploy/helm/templates/node.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/helm/templates/node.yaml b/deploy/helm/templates/node.yaml index b3f33ba..10a34b5 100644 --- a/deploy/helm/templates/node.yaml +++ b/deploy/helm/templates/node.yaml @@ -82,7 +82,7 @@ spec: fieldRef: fieldPath: spec.nodeName - name: REGISTRATION_PATH - value: /var/lib/kubelet/plugins/csi.san.synology.com/csi.sock + value: {{ $.Values.node.kubeletPath }}/plugins/csi.san.synology.com/csi.sock {{- with .nodeDriverRegistrar }} image: {{ .image }}:{{ .tag }} imagePullPolicy: {{ .pullPolicy }} @@ -122,7 +122,7 @@ spec: - name: host-root mountPath: /host - name: kubelet-dir - mountPath: /var/lib/kubelet + mountPath: {{ $.Values.node.kubeletPath }} mountPropagation: Bidirectional - name: plugin-dir mountPath: /csi From f8161e9954de4443cb5190976d96ea8d2f1303bd Mon Sep 17 00:00:00 2001 From: Ruslan Timofieiev Date: Tue, 22 Aug 2023 17:43:16 +0300 Subject: [PATCH 08/12] add lun description to createVolume --- deploy/kubernetes/v1.19/controller.yml | 1 + deploy/kubernetes/v1.20/controller.yml | 1 + pkg/driver/controllerserver.go | 10 ++++++++++ pkg/dsm/service/dsm.go | 11 ++++++----- pkg/dsm/webapi/iscsi.go | 14 ++++++++------ pkg/models/dsm_req_spec.go | 1 + 6 files changed, 27 insertions(+), 11 deletions(-) diff --git a/deploy/kubernetes/v1.19/controller.yml b/deploy/kubernetes/v1.19/controller.yml index 2c4fab8..e78c698 100644 --- a/deploy/kubernetes/v1.19/controller.yml +++ b/deploy/kubernetes/v1.19/controller.yml @@ -96,6 +96,7 @@ spec: - --timeout=60s - --csi-address=$(ADDRESS) - --v=5 + - --extra-create-metadata env: - name: ADDRESS value: /var/lib/csi/sockets/pluginproxy/csi.sock diff --git a/deploy/kubernetes/v1.20/controller.yml b/deploy/kubernetes/v1.20/controller.yml index f651dff..1f234e0 100644 --- a/deploy/kubernetes/v1.20/controller.yml +++ b/deploy/kubernetes/v1.20/controller.yml @@ -96,6 +96,7 @@ spec: - --timeout=60s - --csi-address=$(ADDRESS) - --v=5 + - --extra-create-metadata env: - name: ADDRESS value: /var/lib/csi/sockets/pluginproxy/csi.sock diff --git a/pkg/driver/controllerserver.go b/pkg/driver/controllerserver.go index 1811296..a60ffd5 100644 --- a/pkg/driver/controllerserver.go +++ b/pkg/driver/controllerserver.go @@ -132,10 +132,20 @@ func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol // used only in NodeStageVolume though VolumeContext formatOptions := params["formatOptions"] + lunDescription := "" + if _, ok := params["csi.storage.k8s.io/pvc/name"]; ok { + // if the /pvc/name is present, the namespace is present too + // as these parameters are reserved by external-provisioner + pvcNamespace := params["csi.storage.k8s.io/pvc/namespace"] + pvcName := params["csi.storage.k8s.io/pvc/name"] + lunDescription = pvcNamespace + "/" + pvcName + } + spec := &models.CreateK8sVolumeSpec{ DsmIp: params["dsm"], K8sVolumeName: volName, LunName: models.GenLunName(volName), + LunDescription: lunDescription, ShareName: models.GenShareName(volName), Location: params["location"], Size: sizeInByte, diff --git a/pkg/dsm/service/dsm.go b/pkg/dsm/service/dsm.go index e8305c7..122a545 100644 --- a/pkg/dsm/service/dsm.go +++ b/pkg/dsm/service/dsm.go @@ -168,7 +168,7 @@ func (service *DsmService) createMappingTarget(dsm *webapi.DSM, spec *models.Cre } targetSpec := webapi.TargetCreateSpec{ Name: spec.TargetName, - Iqn: genTargetIqn(), + Iqn: genTargetIqn(), } log.Debugf("TargetCreate spec: %v", targetSpec) @@ -224,10 +224,11 @@ func (service *DsmService) createVolumeByDsm(dsm *webapi.DSM, spec *models.Creat // 3. Create LUN lunSpec := webapi.LunCreateSpec{ - Name: spec.LunName, - Location: spec.Location, - Size: spec.Size, - Type: lunType, + Name: spec.LunName, + Description: spec.LunDescription, + Location: spec.Location, + Size: spec.Size, + Type: lunType, } log.Debugf("LunCreate spec: %v", lunSpec) diff --git a/pkg/dsm/webapi/iscsi.go b/pkg/dsm/webapi/iscsi.go index 178b6f1..6520111 100644 --- a/pkg/dsm/webapi/iscsi.go +++ b/pkg/dsm/webapi/iscsi.go @@ -67,11 +67,12 @@ type LunDevAttrib struct { } type LunCreateSpec struct { - Name string - Location string - Size int64 - Type string - DevAttribs []LunDevAttrib + Name string + Description string + Location string + Size int64 + Type string + DevAttribs []LunDevAttrib } type LunUpdateSpec struct { @@ -165,6 +166,7 @@ func (dsm *DSM) LunCreate(spec LunCreateSpec) (string, error) { params.Add("size", strconv.FormatInt(int64(spec.Size), 10)) params.Add("type", spec.Type) params.Add("location", spec.Location) + params.Add("description", spec.Description) js, err := json.Marshal(spec.DevAttribs) if err != nil { @@ -497,4 +499,4 @@ func (dsm *DSM) SnapshotClone(spec SnapshotCloneSpec) (string, error) { } return snapshotCloneResp.Uuid, nil -} \ No newline at end of file +} diff --git a/pkg/models/dsm_req_spec.go b/pkg/models/dsm_req_spec.go index 8055735..3ef0571 100644 --- a/pkg/models/dsm_req_spec.go +++ b/pkg/models/dsm_req_spec.go @@ -12,6 +12,7 @@ type CreateK8sVolumeSpec struct { DsmIp string K8sVolumeName string LunName string + LunDescription string ShareName string Location string Size int64 From b5024226568f0dc1f1436bae21080da7ee7e027d Mon Sep 17 00:00:00 2001 From: Vasil Zlatanov Date: Wed, 13 Sep 2023 21:17:36 +0100 Subject: [PATCH 09/12] Report GET_VOLUME_STATS support --- pkg/driver/driver.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/driver/driver.go b/pkg/driver/driver.go index 713e513..3b3d4fa 100644 --- a/pkg/driver/driver.go +++ b/pkg/driver/driver.go @@ -79,8 +79,8 @@ func NewControllerAndNodeDriver(nodeID string, endpoint string, dsmService inter d.addNodeServiceCapabilities([]csi.NodeServiceCapability_RPC_Type{ csi.NodeServiceCapability_RPC_STAGE_UNSTAGE_VOLUME, csi.NodeServiceCapability_RPC_EXPAND_VOLUME, + csi.NodeServiceCapability_RPC_GET_VOLUME_STATS, // csi.NodeServiceCapability_RPC_VOLUME_MOUNT_GROUP, - // csi.NodeServiceCapability_RPC_GET_VOLUME_STATS, //TODO }) log.Infof("New driver created: name=%s, nodeID=%s, version=%s, endpoint=%s", d.name, d.nodeID, d.version, d.endpoint) @@ -138,4 +138,4 @@ func (d *Driver) getVolumeCapabilityAccessModes() []*csi.VolumeCapability_Access func isProtocolSupport(protocol string) bool { return utils.SliceContains(supportedProtocolList, protocol) -} \ No newline at end of file +} From 9c19c7f1e3929106f877a1137781a9162c4fe155 Mon Sep 17 00:00:00 2001 From: Vasil Zlatanov Date: Wed, 13 Sep 2023 22:02:46 +0100 Subject: [PATCH 10/12] Report more accurate lun util metrics --- go.mod | 1 + pkg/driver/nodeserver.go | 36 +++++++++++++++++++++++++++++++----- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 916c51b..69d8ef7 100644 --- a/go.mod +++ b/go.mod @@ -10,6 +10,7 @@ require ( github.com/kubernetes-csi/csi-test/v4 v4.3.0 github.com/sirupsen/logrus v1.7.0 github.com/spf13/cobra v1.1.3 + golang.org/x/sys v0.5.0 google.golang.org/grpc v1.34.0 google.golang.org/protobuf v1.25.0 gopkg.in/yaml.v2 v2.4.0 diff --git a/pkg/driver/nodeserver.go b/pkg/driver/nodeserver.go index 9b9678f..6ec97e7 100644 --- a/pkg/driver/nodeserver.go +++ b/pkg/driver/nodeserver.go @@ -29,6 +29,7 @@ import ( log "github.com/sirupsen/logrus" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "golang.org/x/sys/unix" "k8s.io/mount-utils" "github.com/SynologyOpenSource/synology-csi/pkg/dsm/webapi" @@ -584,14 +585,39 @@ func (ns *nodeServer) NodeGetVolumeStats(ctx context.Context, req *csi.NodeGetVo }, nil } - lun := k8sVolume.Lun + // If we are dealing with a LUN use statfs + statfs := &unix.Statfs_t{} + err = unix.Statfs(volumePath, statfs) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to get fs info on path %s: %v", req.VolumePath, err) + } + + // Available is blocks available * fragment size + available := int64(statfs.Bavail) * int64(statfs.Bsize) + + // Capacity is total block count * fragment size + capacity := int64(statfs.Blocks) * int64(statfs.Bsize) + + // Usage is block being used * fragment size (aka block size). + usage := (int64(statfs.Blocks) - int64(statfs.Bfree)) * int64(statfs.Bsize) + + inodes := int64(statfs.Files) + inodesFree := int64(statfs.Ffree) + inodesUsed := inodes - inodesFree + return &csi.NodeGetVolumeStatsResponse{ Usage: []*csi.VolumeUsage{ - &csi.VolumeUsage{ - Available: int64(lun.Size - lun.Used), - Total: int64(lun.Size), - Used: int64(lun.Used), + { Unit: csi.VolumeUsage_BYTES, + Available: available, + Total: capacity, + Used: usage, + }, + { + Unit: csi.VolumeUsage_INODES, + Available: inodesFree, + Total: inodes, + Used: inodesUsed, }, }, }, nil From 0cd2cbe8166e2de3b4271a102f27b3016eeea591 Mon Sep 17 00:00:00 2001 From: chihyuwu Date: Wed, 8 Nov 2023 19:13:43 +0800 Subject: [PATCH 11/12] fix #58 - Helm: correct the storageclass name for helm test --- deploy/helm/templates/test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/helm/templates/test.yaml b/deploy/helm/templates/test.yaml index a0fe7ba..0b369ac 100644 --- a/deploy/helm/templates/test.yaml +++ b/deploy/helm/templates/test.yaml @@ -10,7 +10,7 @@ metadata: spec: accessModes: - ReadWriteOnce - storageClassName: {{ include "synology-csi.fullname" $ }}-delete + storageClassName: synology-iscsi-storage-delete resources: requests: storage: 1Gi From a4270a3a9c793694f58f9284eb117b44f3f51e64 Mon Sep 17 00:00:00 2001 From: chihyuwu Date: Wed, 8 Nov 2023 19:49:11 +0800 Subject: [PATCH 12/12] Update to version 1.1.3 --- Makefile | 2 +- README.md | 2 +- deploy/helm/Chart.yaml | 2 +- deploy/kubernetes/v1.19/controller.yml | 2 +- deploy/kubernetes/v1.19/node.yml | 2 +- deploy/kubernetes/v1.19/snapshotter/snapshotter.yaml | 2 +- deploy/kubernetes/v1.20/controller.yml | 2 +- deploy/kubernetes/v1.20/node.yml | 2 +- deploy/kubernetes/v1.20/snapshotter/snapshotter.yaml | 2 +- pkg/driver/driver.go | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 5759250..a9caa04 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ REGISTRY_NAME=synology IMAGE_NAME=synology-csi -IMAGE_VERSION=v1.1.2 +IMAGE_VERSION=v1.1.3 IMAGE_TAG=$(REGISTRY_NAME)/$(IMAGE_NAME):$(IMAGE_VERSION) # For now, only build linux/amd64 platform diff --git a/README.md b/README.md index 7385f6a..1f1d8c6 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ The official [Container Storage Interface](https://github.com/container-storage- Driver Name: csi.san.synology.com | Driver Version | Image | Supported K8s Version | | -------------------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------- | -| [v1.1.2](https://github.com/SynologyOpenSource/synology-csi/tree/release-v1.1.2) | [synology-csi:v1.1.2](https://hub.docker.com/r/synology/synology-csi) | 1.20+ | +| [v1.1.3](https://github.com/SynologyOpenSource/synology-csi/tree/release-v1.1.3) | [synology-csi:v1.1.3](https://hub.docker.com/r/synology/synology-csi) | 1.20+ | diff --git a/deploy/helm/Chart.yaml b/deploy/helm/Chart.yaml index ee6a4c3..02d40fd 100644 --- a/deploy/helm/Chart.yaml +++ b/deploy/helm/Chart.yaml @@ -1,5 +1,5 @@ apiVersion: v2 -appVersion: v1.1.2 +appVersion: v1.1.3 name: synology-csi description: A Helm chart for the Synology CSI Driver keywords: diff --git a/deploy/kubernetes/v1.19/controller.yml b/deploy/kubernetes/v1.19/controller.yml index e78c698..e0af4ad 100644 --- a/deploy/kubernetes/v1.19/controller.yml +++ b/deploy/kubernetes/v1.19/controller.yml @@ -144,7 +144,7 @@ spec: capabilities: add: ["SYS_ADMIN"] allowPrivilegeEscalation: true - image: synology/synology-csi:v1.1.2 + image: synology/synology-csi:v1.1.3 args: - --nodeid=NotUsed - --endpoint=$(CSI_ENDPOINT) diff --git a/deploy/kubernetes/v1.19/node.yml b/deploy/kubernetes/v1.19/node.yml index b1c3069..6c41392 100644 --- a/deploy/kubernetes/v1.19/node.yml +++ b/deploy/kubernetes/v1.19/node.yml @@ -86,7 +86,7 @@ spec: securityContext: privileged: true imagePullPolicy: IfNotPresent - image: synology/synology-csi:v1.1.2 + image: synology/synology-csi:v1.1.3 args: - --nodeid=$(KUBE_NODE_NAME) - --endpoint=$(CSI_ENDPOINT) diff --git a/deploy/kubernetes/v1.19/snapshotter/snapshotter.yaml b/deploy/kubernetes/v1.19/snapshotter/snapshotter.yaml index 19d568a..f219d86 100644 --- a/deploy/kubernetes/v1.19/snapshotter/snapshotter.yaml +++ b/deploy/kubernetes/v1.19/snapshotter/snapshotter.yaml @@ -81,7 +81,7 @@ spec: capabilities: add: ["SYS_ADMIN"] allowPrivilegeEscalation: true - image: synology/synology-csi:v1.1.2 + image: synology/synology-csi:v1.1.3 args: - --nodeid=NotUsed - --endpoint=$(CSI_ENDPOINT) diff --git a/deploy/kubernetes/v1.20/controller.yml b/deploy/kubernetes/v1.20/controller.yml index 1f234e0..6d212e5 100644 --- a/deploy/kubernetes/v1.20/controller.yml +++ b/deploy/kubernetes/v1.20/controller.yml @@ -144,7 +144,7 @@ spec: capabilities: add: ["SYS_ADMIN"] allowPrivilegeEscalation: true - image: synology/synology-csi:v1.1.2 + image: synology/synology-csi:v1.1.3 args: - --nodeid=NotUsed - --endpoint=$(CSI_ENDPOINT) diff --git a/deploy/kubernetes/v1.20/node.yml b/deploy/kubernetes/v1.20/node.yml index b1c3069..6c41392 100644 --- a/deploy/kubernetes/v1.20/node.yml +++ b/deploy/kubernetes/v1.20/node.yml @@ -86,7 +86,7 @@ spec: securityContext: privileged: true imagePullPolicy: IfNotPresent - image: synology/synology-csi:v1.1.2 + image: synology/synology-csi:v1.1.3 args: - --nodeid=$(KUBE_NODE_NAME) - --endpoint=$(CSI_ENDPOINT) diff --git a/deploy/kubernetes/v1.20/snapshotter/snapshotter.yaml b/deploy/kubernetes/v1.20/snapshotter/snapshotter.yaml index b422143..e5d1feb 100644 --- a/deploy/kubernetes/v1.20/snapshotter/snapshotter.yaml +++ b/deploy/kubernetes/v1.20/snapshotter/snapshotter.yaml @@ -81,7 +81,7 @@ spec: capabilities: add: ["SYS_ADMIN"] allowPrivilegeEscalation: true - image: synology/synology-csi:v1.1.2 + image: synology/synology-csi:v1.1.3 args: - --nodeid=NotUsed - --endpoint=$(CSI_ENDPOINT) diff --git a/pkg/driver/driver.go b/pkg/driver/driver.go index 3b3d4fa..1859b3a 100644 --- a/pkg/driver/driver.go +++ b/pkg/driver/driver.go @@ -25,7 +25,7 @@ import ( const ( DriverName = "csi.san.synology.com" // CSI dirver name - DriverVersion = "1.1.2" + DriverVersion = "1.1.3" ) var (