From a3471d678c0ccf9f1c03dcbf7b26298de0dc5c9f Mon Sep 17 00:00:00 2001
From: Bala FA <bala@minio.io>
Date: Tue, 23 Jul 2024 11:31:40 +0530
Subject: [PATCH] upgrade dependencies (#917)

Signed-off-by: Bala.FA <bala@minio.io>
---
 go.mod                            | 20 +++++------
 go.sum                            | 51 +++++++++++++--------------
 pkg/csi/controller/server.go      | 58 ++-----------------------------
 pkg/csi/controller/server_test.go | 54 +++++++---------------------
 pkg/csi/identity/identity.go      |  2 ++
 pkg/csi/node/server.go            |  2 ++
 6 files changed, 54 insertions(+), 133 deletions(-)

diff --git a/go.mod b/go.mod
index fe3da7c7..d040660e 100644
--- a/go.mod
+++ b/go.mod
@@ -2,13 +2,13 @@ module github.com/minio/directpv
 
 go 1.22.0
 
-toolchain go1.22.3
+toolchain go1.22.5
 
 require (
 	github.com/charmbracelet/bubbles v0.18.0
-	github.com/charmbracelet/bubbletea v0.26.5
+	github.com/charmbracelet/bubbletea v0.26.6
 	github.com/charmbracelet/lipgloss v0.11.0
-	github.com/container-storage-interface/spec v1.9.0
+	github.com/container-storage-interface/spec v1.10.0
 	github.com/dustin/go-humanize v1.0.1
 	github.com/fatih/color v1.17.0
 	github.com/freddierice/go-losetup/v2 v2.0.1
@@ -22,14 +22,14 @@ require (
 	github.com/spf13/cobra v1.8.1
 	github.com/spf13/viper v1.19.0
 	golang.org/x/time v0.5.0
-	google.golang.org/grpc v1.64.0
+	google.golang.org/grpc v1.65.0
 	gopkg.in/yaml.v3 v3.0.1
 	k8s.io/api v0.28.11
 	k8s.io/apiextensions-apiserver v0.28.11
 	k8s.io/apimachinery v0.28.11
 	k8s.io/client-go v0.28.11
 	k8s.io/klog/v2 v2.130.1
-	k8s.io/kube-openapi v0.0.0-20240620174524-b456828f718b
+	k8s.io/kube-openapi v0.0.0-20240709000949-962c6f1e0765
 	k8s.io/pod-security-admission v0.28.11
 	sigs.k8s.io/yaml v1.4.0
 )
@@ -93,14 +93,14 @@ require (
 	github.com/subosito/gotenv v1.6.0 // indirect
 	github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
 	go.uber.org/multierr v1.11.0 // indirect
-	golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect
-	golang.org/x/net v0.26.0 // indirect
+	golang.org/x/exp v0.0.0-20240707233637-46b078467d37 // indirect
+	golang.org/x/net v0.27.0 // indirect
 	golang.org/x/oauth2 v0.21.0 // indirect
 	golang.org/x/sync v0.7.0 // indirect
-	golang.org/x/sys v0.21.0 // indirect
-	golang.org/x/term v0.21.0 // indirect
+	golang.org/x/sys v0.22.0 // indirect
+	golang.org/x/term v0.22.0 // indirect
 	golang.org/x/text v0.16.0 // indirect
-	google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 // indirect
+	google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b // indirect
 	google.golang.org/protobuf v1.34.2 // indirect
 	gopkg.in/inf.v0 v0.9.1 // indirect
 	gopkg.in/ini.v1 v1.67.0 // indirect
diff --git a/go.sum b/go.sum
index cb8d4f62..b1280c41 100644
--- a/go.sum
+++ b/go.sum
@@ -6,8 +6,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF
 github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
 github.com/charmbracelet/bubbles v0.18.0 h1:PYv1A036luoBGroX6VWjQIE9Syf2Wby2oOl/39KLfy0=
 github.com/charmbracelet/bubbles v0.18.0/go.mod h1:08qhZhtIwzgrtBjAcJnij1t1H0ZRjwHyGsy6AL11PSw=
-github.com/charmbracelet/bubbletea v0.26.5 h1:90pqTPElAReb/qQUgSMUresTkfwVr0Wx+zczeHHOgxk=
-github.com/charmbracelet/bubbletea v0.26.5/go.mod h1:dz8CWPlfCCGLFbBlTY4N7bjLiyOGDJEnd2Muu7pOWhk=
+github.com/charmbracelet/bubbletea v0.26.6 h1:zTCWSuST+3yZYZnVSvbXwKOPRSNZceVeqpzOLN2zq1s=
+github.com/charmbracelet/bubbletea v0.26.6/go.mod h1:dz8CWPlfCCGLFbBlTY4N7bjLiyOGDJEnd2Muu7pOWhk=
 github.com/charmbracelet/harmonica v0.2.0 h1:8NxJWRWg/bzKqqEaaeFNipOu77YR5t8aSwG4pgaUBiQ=
 github.com/charmbracelet/harmonica v0.2.0/go.mod h1:KSri/1RMQOZLbw7AHqgcBycp8pgJnQMYYT8QZRqZ1Ao=
 github.com/charmbracelet/lipgloss v0.11.0 h1:UoAcbQ6Qml8hDwSWs0Y1cB5TEQuZkDPH/ZqwWWYTG4g=
@@ -20,8 +20,8 @@ github.com/charmbracelet/x/term v0.1.1 h1:3cosVAiPOig+EV4X9U+3LDgtwwAoEzJjNdwbXD
 github.com/charmbracelet/x/term v0.1.1/go.mod h1:wB1fHt5ECsu3mXYusyzcngVWWlu1KKUmmLhfgr/Flxw=
 github.com/charmbracelet/x/windows v0.1.2 h1:Iumiwq2G+BRmgoayww/qfcvof7W/3uLoelhxojXlRWg=
 github.com/charmbracelet/x/windows v0.1.2/go.mod h1:GLEO/l+lizvFDBPLIOk+49gdX49L9YWMB5t+DZd0jkQ=
-github.com/container-storage-interface/spec v1.9.0 h1:zKtX4STsq31Knz3gciCYCi1SXtO2HJDecIjDVboYavY=
-github.com/container-storage-interface/spec v1.9.0/go.mod h1:ZfDu+3ZRyeVqxZM0Ds19MVLkN2d1XJ5MAfi1L3VjlT0=
+github.com/container-storage-interface/spec v1.10.0 h1:YkzWPV39x+ZMTa6Ax2czJLLwpryrQ+dPesB34mrRMXA=
+github.com/container-storage-interface/spec v1.10.0/go.mod h1:DtUvaQszPml1YJfIK7c00mlv6/g4wNMLanLgiUbKFRI=
 github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -52,8 +52,7 @@ github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDsl
 github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
 github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
 github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
-github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
-github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
 github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
 github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
@@ -131,10 +130,10 @@ github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo
 github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
-github.com/onsi/ginkgo/v2 v2.17.2 h1:7eMhcy3GimbsA3hEnVKdw/PQM9XN9krpKVXsZdph0/g=
-github.com/onsi/ginkgo/v2 v2.17.2/go.mod h1:nP2DPOQoNsQmsVyv5rDA8JkXQoCs6goXIvr/PRJ1eCc=
-github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk=
-github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0=
+github.com/onsi/ginkgo/v2 v2.9.4 h1:xR7vG4IXt5RWx6FfIjyAtsoMAtnc3C/rFXBBd2AjZwE=
+github.com/onsi/ginkgo/v2 v2.9.4/go.mod h1:gCQYp2Q+kSoIj7ykSVb9nskRSsR6PUj4AiLywzIhbKM=
+github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE=
+github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg=
 github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
 github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -194,16 +193,16 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY=
-golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI=
+golang.org/x/exp v0.0.0-20240707233637-46b078467d37 h1:uLDX+AfeFCct3a2C7uIWBKMJIR3CJMhcgfrUAqjRK6w=
+golang.org/x/exp v0.0.0-20240707233637-46b078467d37/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
-golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
+golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=
+golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
 golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=
 golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -218,10 +217,10 @@ golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
-golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA=
-golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
+golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
+golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk=
+golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
@@ -232,16 +231,16 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA=
-golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c=
+golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg=
+golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 h1:Di6ANFilr+S60a4S61ZM00vLdw0IrQOSMS2/6mrnOU0=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
-google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY=
-google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b h1:04+jVzTs2XBnOZcPsLnmrTGqltqJbZQ1Ey26hjYdQQ0=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
+google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc=
+google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ=
 google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
 google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -269,8 +268,8 @@ k8s.io/component-base v0.28.11 h1:/CyCF+Mgb737LnvJ0pHxZHKnK/OPiXtxGBr9fcE82K4=
 k8s.io/component-base v0.28.11/go.mod h1:GDfDeCmn5CKKfdqvSxFJEcyoiBYzujP2bMj1rU919Dc=
 k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
 k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
-k8s.io/kube-openapi v0.0.0-20240620174524-b456828f718b h1:Q9xmGWBvOGd8UJyccgpYlLosk/JlfP3xQLNkQlHJeXw=
-k8s.io/kube-openapi v0.0.0-20240620174524-b456828f718b/go.mod h1:UxDHUPsUwTOOxSU+oXURfFBcAS6JwiRXTYqYwfuGowc=
+k8s.io/kube-openapi v0.0.0-20240709000949-962c6f1e0765 h1:2ew3670P0mKVdxKUO80QfVr8yW0nL/6DeXADxguoa1g=
+k8s.io/kube-openapi v0.0.0-20240709000949-962c6f1e0765/go.mod h1:6uyuxUpeMJR3XnM2dWN/A6l46bSq43XHN2kOQG8eID0=
 k8s.io/pod-security-admission v0.28.11 h1:PmlNJFuMmjXmwiYHjBwnsFJPwtfvCDhAe0jNcQgHzIw=
 k8s.io/pod-security-admission v0.28.11/go.mod h1:GspkpEoW8Ddm/3DSnH/uURfyUYpyDhlqTWURdI7Gf2w=
 k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak=
diff --git a/pkg/csi/controller/server.go b/pkg/csi/controller/server.go
index eab43457..b2db8b71 100644
--- a/pkg/csi/controller/server.go
+++ b/pkg/csi/controller/server.go
@@ -75,7 +75,9 @@ var volumeClaimIDRegex = regexp.MustCompile("^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-f
  */
 
 // Server denotes controller server.
-type Server struct{}
+type Server struct {
+	csi.UnimplementedControllerServer
+}
 
 // NewServer creates new controller server.
 func NewServer() *Server {
@@ -356,57 +358,3 @@ func (c *Server) ControllerExpandVolume(ctx context.Context, req *csi.Controller
 		NodeExpansionRequired: true,
 	}, nil
 }
-
-// ListVolumes implements ListVolumes controller RPC
-// reference: https://github.com/container-storage-interface/spec/blob/master/spec.md#listvolumes
-func (c *Server) ListVolumes(_ context.Context, _ *csi.ListVolumesRequest) (*csi.ListVolumesResponse, error) {
-	return nil, status.Error(codes.Unimplemented, "unimplemented")
-}
-
-// ControllerPublishVolume - controller RPC to publish volumes
-// reference: https://github.com/container-storage-interface/spec/blob/master/spec.md#controllerpublishvolume
-func (c *Server) ControllerPublishVolume(_ context.Context, _ *csi.ControllerPublishVolumeRequest) (*csi.ControllerPublishVolumeResponse, error) {
-	return nil, status.Error(codes.Unimplemented, "unimplemented")
-}
-
-// ControllerUnpublishVolume - controller RPC to unpublish volumes
-// reference: https://github.com/container-storage-interface/spec/blob/master/spec.md#controllerunpublishvolume
-func (c *Server) ControllerUnpublishVolume(_ context.Context, _ *csi.ControllerUnpublishVolumeRequest) (*csi.ControllerUnpublishVolumeResponse, error) {
-	return nil, status.Error(codes.Unimplemented, "unimplemented")
-}
-
-// ControllerGetVolume - controller RPC for get volume
-// reference: https://github.com/container-storage-interface/spec/blob/master/spec.md#controllergetvolume
-func (c *Server) ControllerGetVolume(_ context.Context, _ *csi.ControllerGetVolumeRequest) (*csi.ControllerGetVolumeResponse, error) {
-	return nil, status.Error(codes.Unimplemented, "unimplemented")
-}
-
-// ListSnapshots - controller RPC for listing snapshots
-// reference: https://github.com/container-storage-interface/spec/blob/master/spec.md#listsnapshots
-func (c *Server) ListSnapshots(_ context.Context, _ *csi.ListSnapshotsRequest) (*csi.ListSnapshotsResponse, error) {
-	return nil, status.Error(codes.Unimplemented, "unimplemented")
-}
-
-// CreateSnapshot controller RPC for creating snapshots
-// reference: https://github.com/container-storage-interface/spec/blob/master/spec.md#createsnapshot
-func (c *Server) CreateSnapshot(_ context.Context, _ *csi.CreateSnapshotRequest) (*csi.CreateSnapshotResponse, error) {
-	return nil, status.Error(codes.Unimplemented, "unimplemented")
-}
-
-// DeleteSnapshot - controller RPC for deleting snapshots
-// reference: https://github.com/container-storage-interface/spec/blob/master/spec.md#deletesnapshot
-func (c *Server) DeleteSnapshot(_ context.Context, _ *csi.DeleteSnapshotRequest) (*csi.DeleteSnapshotResponse, error) {
-	return nil, status.Error(codes.Unimplemented, "unimplemented")
-}
-
-// GetCapacity - controller RPC to get capacity
-// reference: https://github.com/container-storage-interface/spec/blob/master/spec.md#getcapacity
-func (c *Server) GetCapacity(_ context.Context, _ *csi.GetCapacityRequest) (*csi.GetCapacityResponse, error) {
-	return nil, status.Error(codes.Unimplemented, "unimplemented")
-}
-
-// ControllerModifyVolume - controller RPC to controller modify volume
-// reference: https://github.com/container-storage-interface/spec/blob/master/spec.md#controllermodifyvolume
-func (c *Server) ControllerModifyVolume(_ context.Context, _ *csi.ControllerModifyVolumeRequest) (*csi.ControllerModifyVolumeResponse, error) {
-	return nil, status.Error(codes.Unimplemented, "unimplemented")
-}
diff --git a/pkg/csi/controller/server_test.go b/pkg/csi/controller/server_test.go
index eba3ef8d..21a5b808 100644
--- a/pkg/csi/controller/server_test.go
+++ b/pkg/csi/controller/server_test.go
@@ -66,8 +66,8 @@ func TestCreateAndDeleteVolumeRPCs(t *testing.T) {
 		)
 	}
 
-	create20MBVolumeRequest := func(volName string, requestedNode string) csi.CreateVolumeRequest {
-		return csi.CreateVolumeRequest{
+	create20MBVolumeRequest := func(volName string, requestedNode string) *csi.CreateVolumeRequest {
+		return &csi.CreateVolumeRequest{
 			Name: volName,
 			CapacityRange: &csi.CapacityRange{
 				RequiredBytes: 20 * MiB,
@@ -102,8 +102,8 @@ func TestCreateAndDeleteVolumeRPCs(t *testing.T) {
 		}
 	}
 
-	createDeleteVolumeRequest := func(volName string) csi.DeleteVolumeRequest {
-		return csi.DeleteVolumeRequest{
+	createDeleteVolumeRequest := func(volName string) *csi.DeleteVolumeRequest {
+		return &csi.DeleteVolumeRequest{
 			VolumeId: volName,
 		}
 	}
@@ -117,7 +117,7 @@ func TestCreateAndDeleteVolumeRPCs(t *testing.T) {
 		createTestDrive100MB("node2", "D4"),
 	}
 
-	createVolumeRequests := []csi.CreateVolumeRequest{
+	createVolumeRequests := []*csi.CreateVolumeRequest{
 		// Volume requests for drives in node1
 		create20MBVolumeRequest("volume-1", "node1"),
 		create20MBVolumeRequest("volume-2", "node1"),
@@ -136,7 +136,7 @@ func TestCreateAndDeleteVolumeRPCs(t *testing.T) {
 	for _, cvReq := range createVolumeRequests {
 		volName := cvReq.GetName()
 		// Step 1: Call CreateVolume RPC
-		cvRes, err := cl.CreateVolume(ctx, &cvReq)
+		cvRes, err := cl.CreateVolume(ctx, cvReq)
 		if err != nil {
 			t.Errorf("[%s] Create volume failed: %v", volName, err)
 		}
@@ -198,7 +198,7 @@ func TestCreateAndDeleteVolumeRPCs(t *testing.T) {
 		}
 	}
 
-	deleteVolumeRequests := []csi.DeleteVolumeRequest{
+	deleteVolumeRequests := []*csi.DeleteVolumeRequest{
 		// DeleteVolumeRequests for volumes in node1
 		createDeleteVolumeRequest("volume-1"),
 		createDeleteVolumeRequest("volume-2"),
@@ -208,7 +208,7 @@ func TestCreateAndDeleteVolumeRPCs(t *testing.T) {
 	}
 
 	for _, dvReq := range deleteVolumeRequests {
-		if _, err := cl.DeleteVolume(ctx, &dvReq); err != nil {
+		if _, err := cl.DeleteVolume(ctx, dvReq); err != nil {
 			t.Errorf("[%s] DeleteVolume failed: %v", dvReq.VolumeId, err)
 		}
 	}
@@ -233,7 +233,7 @@ func TestAbnormalDeleteVolume(t1 *testing.T) {
 
 	testVolumeObjects := []runtime.Object{volume1, &volume2}
 
-	deleteVolumeRequests := []csi.DeleteVolumeRequest{
+	deleteVolumeRequests := []*csi.DeleteVolumeRequest{
 		{
 			VolumeId: "test-volume-1",
 		},
@@ -250,7 +250,7 @@ func TestAbnormalDeleteVolume(t1 *testing.T) {
 	client.SetVolumeInterface(clientset.DirectpvLatest().DirectPVVolumes())
 
 	for _, dvReq := range deleteVolumeRequests {
-		if _, err := cl.DeleteVolume(ctx, &dvReq); err == nil {
+		if _, err := cl.DeleteVolume(ctx, dvReq); err == nil {
 			t1.Errorf("[%s] DeleteVolume expected to fail but succeeded", dvReq.VolumeId)
 		}
 	}
@@ -349,7 +349,7 @@ func TestControllerUnpublishVolume(t *testing.T) {
 
 func TestControllerExpandVolume(t *testing.T) {
 	volumeID := "test-volume-1"
-	reqs := []csi.ControllerExpandVolumeRequest{
+	reqs := []*csi.ControllerExpandVolumeRequest{
 		{
 			VolumeId:      volumeID,
 			CapacityRange: &csi.CapacityRange{RequiredBytes: 50},
@@ -388,38 +388,8 @@ func TestControllerExpandVolume(t *testing.T) {
 	ctx := context.TODO()
 	server := NewServer()
 	for i, req := range reqs {
-		if _, err := server.ControllerExpandVolume(ctx, &req); err != nil {
+		if _, err := server.ControllerExpandVolume(ctx, req); err != nil {
 			t.Errorf("case %v: expected: success; but failed by %v", i+1, err)
 		}
 	}
 }
-
-func TestControllerGetVolume(t *testing.T) {
-	if _, err := NewServer().ControllerGetVolume(context.TODO(), nil); err == nil {
-		t.Fatal("error expected")
-	}
-}
-
-func TestListSnapshots(t *testing.T) {
-	if _, err := NewServer().ListSnapshots(context.TODO(), nil); err == nil {
-		t.Fatal("error expected")
-	}
-}
-
-func TestCreateSnapshot(t *testing.T) {
-	if _, err := NewServer().CreateSnapshot(context.TODO(), nil); err == nil {
-		t.Fatal("error expected")
-	}
-}
-
-func TestDeleteSnapshot(t *testing.T) {
-	if _, err := NewServer().DeleteSnapshot(context.TODO(), nil); err == nil {
-		t.Fatal("error expected")
-	}
-}
-
-func TestGetCapacity(t *testing.T) {
-	if _, err := NewServer().GetCapacity(context.TODO(), nil); err == nil {
-		t.Fatal("error expected")
-	}
-}
diff --git a/pkg/csi/identity/identity.go b/pkg/csi/identity/identity.go
index 6b787990..b1e53b89 100644
--- a/pkg/csi/identity/identity.go
+++ b/pkg/csi/identity/identity.go
@@ -45,6 +45,8 @@ func GetDefaultPluginCapabilities() []*csi.PluginCapability {
 }
 
 type identityServer struct {
+	csi.UnimplementedIdentityServer
+
 	identity     string
 	version      string
 	capabilities []*csi.PluginCapability
diff --git a/pkg/csi/node/server.go b/pkg/csi/node/server.go
index f3360085..2dec6b34 100644
--- a/pkg/csi/node/server.go
+++ b/pkg/csi/node/server.go
@@ -36,6 +36,8 @@ import (
 
 // Server denotes node server.
 type Server struct {
+	csi.UnimplementedNodeServer
+
 	nodeID   directpvtypes.NodeID
 	identity string
 	rack     string