Skip to content

Commit

Permalink
Merge ca9aa77 into 5d2c96f
Browse files Browse the repository at this point in the history
  • Loading branch information
wuxingro committed Jun 7, 2021
2 parents 5d2c96f + ca9aa77 commit 310d604
Show file tree
Hide file tree
Showing 8 changed files with 175 additions and 3 deletions.
1 change: 1 addition & 0 deletions examples/kubernetes/dynamic_provisioning/README.md
Expand Up @@ -25,6 +25,7 @@ parameters:
* automaticBackupRetentionDays (Optional) - The number of days to retain automatic backups. The default is to retain backups for 7 days. Setting this value to 0 disables the creation of automatic backups. The maximum retention period for backups is 35 days
* dailyAutomaticBackupStartTime (Optional) - The preferred time to take daily automatic backups, formatted HH:MM in the UTC time zone.
* copyTagsToBackups (Optional) - A boolean flag indicating whether tags for the file system should be copied to backups. This value defaults to false. If it's set to true, all tags for the file system are copied to all automatic and user-initiated backups where the user doesn't specify tags. If this value is true, and you specify one or more tags, only the specified tags are copied to backups. If you specify one or more tags when creating a user-initiated backup, no tags are copied from the file system, regardless of this value.
* dataCompressionType (Optional) - FSx for Lustre supports data compression via LZ4 algorithm. Compression is disabled when the value is set to NONE. The default value is NONE

### Edit [Persistent Volume Claim Spec](./specs/claim.yaml)
```
Expand Down
Expand Up @@ -4,11 +4,13 @@ metadata:
name: fsx-sc
provisioner: fsx.csi.aws.com
parameters:
subnetId: subnet-0930cbd463b9688c5
securityGroupIds: sg-03a4b6bd8afb19051,sg-05a37bfe01467059a
subnetId: subnet-0eabfaa81fb22bcaf
securityGroupIds: sg-068000ccf82dfba88
deploymentType: PERSISTENT_1
automaticBackupRetentionDays: "1"
dailyAutomaticBackupStartTime: "00:00"
copyTagsToBackups: "true"
perUnitStorageThroughput: "200"
dataCompressionType: "NONE"
mountOptions:
- flock
2 changes: 1 addition & 1 deletion go.mod
@@ -1,7 +1,7 @@
module github.com/kubernetes-sigs/aws-fsx-csi-driver

require (
github.com/aws/aws-sdk-go v1.35.7
github.com/aws/aws-sdk-go v1.38.52
github.com/container-storage-interface/spec v1.2.0
github.com/golang/mock v1.3.1
github.com/kubernetes-csi/csi-test v2.0.1+incompatible
Expand Down
16 changes: 16 additions & 0 deletions go.sum
Expand Up @@ -53,6 +53,8 @@ github.com/aws/aws-sdk-go v1.29.9 h1:PHq9ddjfZYfCOXyqHKiCZ1CHRAk7nXhV7WTqj5l+bmQ
github.com/aws/aws-sdk-go v1.29.9/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg=
github.com/aws/aws-sdk-go v1.35.7 h1:FHMhVhyc/9jljgFAcGkQDYjpC9btM0B8VfkLBfctdNE=
github.com/aws/aws-sdk-go v1.35.7/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k=
github.com/aws/aws-sdk-go v1.38.52 h1:7NKcUyTG/CyDX835kq04DDNe8vXaJhbGW8ThemHb18A=
github.com/aws/aws-sdk-go v1.38.52/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
github.com/bazelbuild/bazel-gazelle v0.18.2/go.mod h1:D0ehMSbS+vesFsLGiD6JXu3mVEzOlfUl8wNnq+x/9p0=
github.com/bazelbuild/bazel-gazelle v0.19.1-0.20191105222053-70208cbdc798/go.mod h1:rPwzNHUqEzngx1iVBfO/2X2npKaT3tqPqqHW6rVsn/A=
github.com/bazelbuild/buildtools v0.0.0-20190731111112-f720930ceb60/go.mod h1:5JP0TXzWDHXv8qvxRC4InIazwdyDseBDbzESUMKk1yU=
Expand Down Expand Up @@ -140,6 +142,7 @@ github.com/euank/go-kmsg-parser v2.0.0+incompatible h1:cHD53+PLQuuQyLZeriD1V/esu
github.com/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw=
github.com/evanphx/json-patch v4.2.0+incompatible h1:fUDGZCv/7iAN7u0puUVhvKCcsR6vRfwrJatElLBEf0I=
github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4=
github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc=
github.com/fatih/color v1.6.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
Expand Down Expand Up @@ -592,6 +595,8 @@ golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586 h1:7KByu05hhLed2MO29w7p1XfZvZ13m8mub3shuVftRs0=
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
Expand Down Expand Up @@ -630,6 +635,8 @@ golang.org/x/net v0.0.0-20191004110552-13f9640d40b9 h1:rjwSpXsdiK0dV8/Naq3kAw9ym
golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
Expand Down Expand Up @@ -666,12 +673,16 @@ golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456 h1:ng0gs1AKnRRuEMZoTLLlbOd+C17zUDepwGQBb/n+JVg=
golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.0.0-20170915090833-1cbadb444a80/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
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=
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c h1:fqgJT0MGcGpPgpWU7VRdRjuArfcOvC4AoJmILihzhDg=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
Expand Down Expand Up @@ -753,6 +764,7 @@ gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gotest.tools v2.1.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
Expand Down Expand Up @@ -795,13 +807,16 @@ k8s.io/kube-aggregator v0.17.0/go.mod h1:Vw104PtCEuT12WTVuhRFWCHXGiVqXsTzFtrvoaH
k8s.io/kube-controller-manager v0.17.0/go.mod h1:uewKsjSm/Kggbn+BmimupXDDEikKQv6rX8ShiLiuXTw=
k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a h1:UcxjrRMyNx/i/y8G7kPvLyy7rfbeuf1PYyBf973pgyU=
k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E=
k8s.io/kube-openapi v0.0.0-20200410145947-bcb3869e6f29/go.mod h1:F+5wygcW0wmRTnM3cOgIqGivxkwSWIWT5YdsDbeAOaU=
k8s.io/kube-proxy v0.17.0/go.mod h1:pecyGyajk667mTTCT0vMP7Oh3bQMUHvEW+Z5pZUjYxU=
k8s.io/kube-scheduler v0.17.0/go.mod h1:mZVsEg++qnq6xWm9DTh2bw9v2i9XPdkEQGDafcjG6PE=
k8s.io/kubectl v0.17.0 h1:xD4EWlL+epc/JTO1gvSjmV9yiYF0Z2wiHK2DIek6URY=
k8s.io/kubectl v0.17.0/go.mod h1:jIPrUAW656Vzn9wZCCe0PC+oTcu56u2HgFD21Xbfk1s=
k8s.io/kubelet v0.17.0/go.mod h1:e/JBCxucKuEV6JO6zYW+e72ib9eMsGO2Fah3iT5tiiI=
k8s.io/kubernetes v1.17.0 h1:KQbF8IxJ4KsWqRFF4ppkS5/EGfpA/SjyyiEa8hvI/Os=
k8s.io/kubernetes v1.17.0/go.mod h1:NbNV+69yL3eKiKDJ+ZEjqOplN3BFXKBeunzkoOy8WLo=
k8s.io/kubernetes v1.17.12 h1:DFS/b/oWg5p0Dl2IHwc8m2fd+S3aSoa6OM3kmhk7qWE=
k8s.io/kubernetes v1.17.12/go.mod h1:J8bqjhrOYZ/dDhaQU8sEfM+aH81x3Urfw1uODZc7ZfU=
k8s.io/legacy-cloud-providers v0.17.0/go.mod h1:DdzaepJ3RtRy+e5YhNtrCYwlgyK87j/5+Yfp0L9Syp8=
k8s.io/metrics v0.17.0/go.mod h1:EH1D3YAwN6d7bMelrElnLhLg72l/ERStyv2SIQVt6Do=
k8s.io/repo-infra v0.0.1-alpha.1/go.mod h1:wO1t9WaB99V80ljbeENTnayuEEwNZt7gECYh/CEyOJ8=
Expand All @@ -820,6 +835,7 @@ mvdan.cc/unparam v0.0.0-20190209190245-fbb59629db34/go.mod h1:H6SUd1XjIs+qQCyskX
sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU=
sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=
sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18=
sigs.k8s.io/structured-merge-diff/v2 v2.0.1/go.mod h1:Wb7vfKAodbKgf6tn1Kl0VvGj7mRH6DGaRcixXEJXTsE=
sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs=
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0=
Expand Down
5 changes: 5 additions & 0 deletions pkg/cloud/cloud.go
Expand Up @@ -80,6 +80,7 @@ type FileSystemOptions struct {
DailyAutomaticBackupStartTime string
AutomaticBackupRetentionDays int64
CopyTagsToBackups bool
DataCompressionType string
}

// FSx abstracts FSx client to facilitate its mocking.
Expand Down Expand Up @@ -156,6 +157,10 @@ func (c *cloud) CreateFileSystem(ctx context.Context, volumeName string, fileSys
lustreConfiguration.SetCopyTagsToBackups(true)
}

if fileSystemOptions.DataCompressionType != "" {
lustreConfiguration.SetDataCompressionType(fileSystemOptions.DataCompressionType)
}

input := &fsx.CreateFileSystemInput{
ClientRequestToken: aws.String(volumeName),
FileSystemType: aws.String("LUSTRE"),
Expand Down
142 changes: 142 additions & 0 deletions pkg/cloud/cloud_test.go
Expand Up @@ -45,6 +45,8 @@ func TestCreateFileSystem(t *testing.T) {
DailyAutomaticBackupStartTime = "00:00:00"
AutomaticBackupRetentionDays int64 = 1
CopyTagsToBackups = true
dataCompressionTypeNone = "NONE"
dataCompressionTypeLZ4 = "LZ4"
)
testCases := []struct {
name string
Expand Down Expand Up @@ -586,6 +588,146 @@ func TestCreateFileSystem(t *testing.T) {
t.Fatalf("MountName mismatches. actual: %v expected: %v", resp.MountName, mountName)
}

mockCtl.Finish()
},
},
{
name: "success: normal with NONE DataCompressionType",
testFunc: func(t *testing.T) {
mockCtl := gomock.NewController(t)
mockFSx := mocks.NewMockFSx(mockCtl)
c := &cloud{
fsx: mockFSx,
}

req := &FileSystemOptions{
CapacityGiB: volumeSizeGiB,
SubnetId: subnetId,
SecurityGroupIds: securityGroupIds,
DataCompressionType: dataCompressionTypeNone,
}

output := &fsx.CreateFileSystemOutput{
FileSystem: &fsx.FileSystem{
FileSystemId: aws.String(fileSystemId),
StorageCapacity: aws.Int64(volumeSizeGiB),
DNSName: aws.String(dnsname),
LustreConfiguration: &fsx.LustreFileSystemConfiguration{
MountName: aws.String(mountName),
DataCompressionType: aws.String(dataCompressionTypeNone),
},
},
}
ctx := context.Background()
mockFSx.EXPECT().CreateFileSystemWithContext(gomock.Eq(ctx), gomock.Any()).Return(output, nil)
resp, err := c.CreateFileSystem(ctx, volumeName, req)
if err != nil {
t.Fatalf("CreateFileSystem is failed: %v", err)
}

if resp == nil {
t.Fatal("resp is nil")
}

if resp.FileSystemId != fileSystemId {
t.Fatalf("FileSystemId mismatches. actual: %v expected: %v", resp.FileSystemId, fileSystemId)
}

if resp.CapacityGiB != volumeSizeGiB {
t.Fatalf("CapacityGiB mismatches. actual: %v expected: %v", resp.CapacityGiB, volumeSizeGiB)
}

if resp.DnsName != dnsname {
t.Fatalf("DnsName mismatches. actual: %v expected: %v", resp.DnsName, dnsname)
}

if resp.MountName != mountName {
t.Fatalf("MountName mismatches. actual: %v expected: %v", resp.MountName, mountName)
}

mockCtl.Finish()
},
},
{
name: "success: normal with LZ4 DataCompressionType",
testFunc: func(t *testing.T) {
mockCtl := gomock.NewController(t)
mockFSx := mocks.NewMockFSx(mockCtl)
c := &cloud{
fsx: mockFSx,
}

req := &FileSystemOptions{
CapacityGiB: volumeSizeGiB,
SubnetId: subnetId,
SecurityGroupIds: securityGroupIds,
DataCompressionType: dataCompressionTypeLZ4,
}

output := &fsx.CreateFileSystemOutput{
FileSystem: &fsx.FileSystem{
FileSystemId: aws.String(fileSystemId),
StorageCapacity: aws.Int64(volumeSizeGiB),
DNSName: aws.String(dnsname),
LustreConfiguration: &fsx.LustreFileSystemConfiguration{
MountName: aws.String(mountName),
DataCompressionType: aws.String(dataCompressionTypeLZ4),
},
},
}
ctx := context.Background()
mockFSx.EXPECT().CreateFileSystemWithContext(gomock.Eq(ctx), gomock.Any()).Return(output, nil)
resp, err := c.CreateFileSystem(ctx, volumeName, req)
if err != nil {
t.Fatalf("CreateFileSystem is failed: %v", err)
}

if resp == nil {
t.Fatal("resp is nil")
}

if resp.FileSystemId != fileSystemId {
t.Fatalf("FileSystemId mismatches. actual: %v expected: %v", resp.FileSystemId, fileSystemId)
}

if resp.CapacityGiB != volumeSizeGiB {
t.Fatalf("CapacityGiB mismatches. actual: %v expected: %v", resp.CapacityGiB, volumeSizeGiB)
}

if resp.DnsName != dnsname {
t.Fatalf("DnsName mismatches. actual: %v expected: %v", resp.DnsName, dnsname)
}

if resp.MountName != mountName {
t.Fatalf("MountName mismatches. actual: %v expected: %v", resp.MountName, mountName)
}

mockCtl.Finish()
},
},
{
name: "fail: invalid DataCompressionType",
testFunc: func(t *testing.T) {
mockCtl := gomock.NewController(t)
mockFSx := mocks.NewMockFSx(mockCtl)
c := &cloud{
fsx: mockFSx,
}

req := &FileSystemOptions{
CapacityGiB: volumeSizeGiB,
SubnetId: subnetId,
SecurityGroupIds: securityGroupIds,
DataCompressionType: "ZFS",
}

ctx := context.Background()
mockFSx.EXPECT().CreateFileSystemWithContext(gomock.Eq(ctx), gomock.Any()).Return(nil, errors.New("CreateFileSystemWithContext failed"))
_, err := c.CreateFileSystem(ctx, volumeName, req)
if err == nil {
t.Fatal("CreateFileSystem is not failed")
}

mockCtl.Finish()
},
},
Expand Down
5 changes: 5 additions & 0 deletions pkg/driver/controller.go
Expand Up @@ -52,6 +52,7 @@ const (
volumeParamsAutomaticBackupRetentionDays = "automaticBackupRetentionDays"
volumeParamsDailyAutomaticBackupStartTime = "dailyAutomaticBackupStartTime"
volumeParamsCopyTagsToBackups = "copyTagsToBackups"
volumeParamsDataCompressionType = "dataCompressionType"
)

func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest) (*csi.CreateVolumeResponse, error) {
Expand Down Expand Up @@ -128,6 +129,10 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
fsOptions.DriveCacheType = val
}

if val, ok := volumeParams[volumeParamsDataCompressionType]; ok {
fsOptions.DataCompressionType = val
}

if val, ok := volumeParams[volumeParamsPerUnitStorageThroughput]; ok {
n, err := strconv.ParseInt(val, 10, 64)
if err != nil {
Expand Down
1 change: 1 addition & 0 deletions pkg/driver/controller_test.go
Expand Up @@ -220,6 +220,7 @@ func TestCreateVolume(t *testing.T) {
volumeParamsAutomaticBackupRetentionDays: "1",
volumeParamsDailyAutomaticBackupStartTime: "00:00",
volumeParamsCopyTagsToBackups: "true",
volumeParamsDataCompressionType: "LZ4",
},
}

Expand Down

0 comments on commit 310d604

Please sign in to comment.