@@ -26,6 +26,7 @@ import (
26
26
27
27
"github.com/container-storage-interface/spec/lib/go/csi"
28
28
29
+ "sigs.k8s.io/controller-runtime/pkg/client"
29
30
csicommon "sigs.k8s.io/secrets-store-csi-driver/pkg/csi-common"
30
31
version "sigs.k8s.io/secrets-store-csi-driver/pkg/version"
31
32
@@ -44,6 +45,7 @@ type nodeServer struct {
44
45
mounter mount.Interface
45
46
reporter StatsReporter
46
47
nodeID string
48
+ client client.Client
47
49
}
48
50
49
51
const (
@@ -115,6 +117,9 @@ func (ns *nodeServer) NodePublishVolume(ctx context.Context, req *csi.NodePublis
115
117
116
118
secretProviderClass := attrib [secretProviderClassField ]
117
119
providerName = attrib ["providerName" ]
120
+ podName = attrib [csipodname ]
121
+ podNamespace = attrib [csipodnamespace ]
122
+ podUID = attrib [csipoduid ]
118
123
119
124
if isMockProvider (providerName ) {
120
125
// mock provider is used only for running sanity tests against the driver
@@ -131,27 +136,24 @@ func (ns *nodeServer) NodePublishVolume(ctx context.Context, req *csi.NodePublis
131
136
return nil , fmt .Errorf ("secretProviderClass is not set" )
132
137
}
133
138
134
- item , err := getSecretProviderItem (ctx , secretProviderClass , podNamespace )
139
+ spc , err := getSecretProviderItem (ctx , ns . client , secretProviderClass , podNamespace )
135
140
if err != nil {
136
141
errorReason = SecretProviderClassNotFound
137
142
return nil , err
138
143
}
139
- provider , err := getStringFromObjectSpec ( item . Object , providerField )
144
+ provider , err := getProviderFromSPC ( spc )
140
145
if err != nil {
141
146
return nil , err
142
147
}
143
148
providerName = provider
144
- parameters , err = getMapFromObjectSpec ( item . Object , parametersField )
149
+ parameters , err = getParametersFromSPC ( spc )
145
150
if err != nil {
146
151
return nil , err
147
152
}
148
153
parameters [csipodname ] = attrib [csipodname ]
149
154
parameters [csipodnamespace ] = attrib [csipodnamespace ]
150
155
parameters [csipoduid ] = attrib [csipoduid ]
151
156
parameters [csipodsa ] = attrib [csipodsa ]
152
- podName = parameters [csipodname ]
153
- podNamespace = parameters [csipodnamespace ]
154
- podUID = parameters [csipoduid ]
155
157
156
158
// ensure it's read-only
157
159
if ! req .GetReadonly () {
@@ -160,29 +162,29 @@ func (ns *nodeServer) NodePublishVolume(ctx context.Context, req *csi.NodePublis
160
162
// get provider volume path
161
163
providerVolumePath := ns .providerVolumePath
162
164
if providerVolumePath == "" {
163
- return nil , fmt .Errorf ("Providers volume path not found. Set PROVIDERS_VOLUME_PATH for pod: %s, ns: %s" , podUID , podNamespace )
165
+ return nil , fmt .Errorf ("Providers volume path not found. Set PROVIDERS_VOLUME_PATH for pod: %s/ %s" , podNamespace , podName )
164
166
}
165
167
166
168
providerBinary := ns .getProviderPath (runtime .GOOS , providerName )
167
169
if _ , err := os .Stat (providerBinary ); err != nil {
168
170
errorReason = ProviderBinaryNotFound
169
- log .Errorf ("failed to find provider %s, err: %v for pod: %s, ns: %s" , providerName , err , podUID , podNamespace )
171
+ log .Errorf ("failed to find provider %s, err: %v for pod: %s/ %s" , providerName , err , podNamespace , podName )
170
172
return nil , err
171
173
}
172
174
173
175
parametersStr , err := json .Marshal (parameters )
174
176
if err != nil {
175
- log .Errorf ("failed to marshal parameters, err: %v for pod: %s, ns: %s" , err , podUID , podNamespace )
177
+ log .Errorf ("failed to marshal parameters, err: %v for pod: %s/ %s" , err , podNamespace , podName )
176
178
return nil , err
177
179
}
178
180
secretStr , err := json .Marshal (secrets )
179
181
if err != nil {
180
- log .Errorf ("failed to marshal secrets, err: %v for pod: %s, ns: %s" , err , podUID , podNamespace )
182
+ log .Errorf ("failed to marshal secrets, err: %v for pod: %s/ %s" , err , podNamespace , podName )
181
183
return nil , err
182
184
}
183
185
permissionStr , err := json .Marshal (permission )
184
186
if err != nil {
185
- log .Errorf ("failed to marshal file permission, err: %v for pod: %s, ns: %s" , err , podUID , podNamespace )
187
+ log .Errorf ("failed to marshal file permission, err: %v for pod: %s/ %s" , err , podNamespace , podName )
186
188
return nil , err
187
189
}
188
190
@@ -193,12 +195,12 @@ func (ns *nodeServer) NodePublishVolume(ctx context.Context, req *csi.NodePublis
193
195
err = ns .mounter .Mount ("tmpfs" , targetPath , "tmpfs" , []string {})
194
196
if err != nil {
195
197
errorReason = FailedToMount
196
- log .Errorf ("mount err: %v for pod: %s, ns: %s" , err , podUID , podNamespace )
198
+ log .Errorf ("mount err: %v for pod: %s/ %s" , err , podNamespace , podName )
197
199
return nil , err
198
200
}
199
201
mounted = true
200
202
201
- log .Debugf ("Calling provider: %s for pod: %s, ns: %s" , providerName , podUID , podNamespace )
203
+ log .Debugf ("Calling provider: %s for pod: %s/ %s" , providerName , podNamespace , podName )
202
204
203
205
// check if minimum compatible provider version with current driver version is set
204
206
// if minimum version is not provided, skip check
@@ -243,12 +245,12 @@ func (ns *nodeServer) NodePublishVolume(ctx context.Context, req *csi.NodePublis
243
245
log .Infof (string (stdout .String ()))
244
246
if err != nil {
245
247
errorReason = ProviderError
246
- log .Errorf ("error invoking provider, err: %v, output: %v for pod: %s, ns: %s" , err , stderr .String (), podUID , podNamespace )
247
- return nil , fmt .Errorf ("error mounting secret %v for pod: %s, ns: %s" , stderr .String (), podUID , podNamespace )
248
+ log .Errorf ("error invoking provider, err: %v, output: %v for pod: %s/ %s" , err , stderr .String (), podNamespace , podName )
249
+ return nil , fmt .Errorf ("error mounting secret %v for pod: %s/ %s" , stderr .String (), podNamespace , podName )
248
250
}
249
251
// create the secret provider class pod status object
250
- if err = createSecretProviderClassPodStatus (ctx , podName , podNamespace , podUID , secretProviderClass , targetPath , ns .nodeID , true ); err != nil {
251
- return nil , fmt .Errorf ("failed to create secret provider class pod status, err: %v" , err )
252
+ if err = createSecretProviderClassPodStatus (ctx , ns . client , podName , podNamespace , podUID , secretProviderClass , targetPath , ns .nodeID , true ); err != nil {
253
+ return nil , fmt .Errorf ("failed to create secret provider class pod status for pod %s/%s , err: %v" , podNamespace , podName , err )
252
254
}
253
255
254
256
return & csi.NodePublishVolumeResponse {}, nil
0 commit comments