in pkg/server/server.go [37:84]
func (s *CSIDriverProviderServer) Mount(ctx context.Context, req *v1alpha1.MountRequest) (*v1alpha1.MountResponse, error) {
var attrib, secret map[string]string
var defaultFilePermission os.FileMode
var err error
err = json.Unmarshal([]byte(req.GetAttributes()), &attrib)
if err != nil {
klog.ErrorS(err, "failed to unmarshal attributes")
return &v1alpha1.MountResponse{}, fmt.Errorf("failed to unmarshal attributes, error: %w", err)
}
err = json.Unmarshal([]byte(req.GetSecrets()), &secret)
if err != nil {
klog.ErrorS(err, "failed to unmarshal node publish secrets ref")
return &v1alpha1.MountResponse{}, fmt.Errorf("failed to unmarshal secrets, error: %w", err)
}
err = json.Unmarshal([]byte(req.GetPermission()), &defaultFilePermission)
if err != nil {
klog.ErrorS(err, "failed to unmarshal file permission")
return &v1alpha1.MountResponse{}, fmt.Errorf("failed to unmarshal file permission, error: %w", err)
}
files, err := s.provider.GetSecretsStoreObjectContent(ctx, attrib, secret, defaultFilePermission)
if err != nil {
klog.ErrorS(err, "failed to process mount request")
return &v1alpha1.MountResponse{}, fmt.Errorf("failed to mount objects, error: %w", err)
}
ov := []*v1alpha1.ObjectVersion{}
f := []*v1alpha1.File{}
// CSI driver v0.0.21+ will write to the filesystem if the files are in the response.
// No files in the response translates to "not implemented" in the CSI driver.
for _, file := range files {
f = append(f, &v1alpha1.File{
Path: file.Path,
Contents: file.Content,
Mode: file.FileMode,
})
ov = append(ov, &v1alpha1.ObjectVersion{
Id: file.UID,
Version: file.Version,
})
}
return &v1alpha1.MountResponse{
ObjectVersion: ov,
Files: f,
}, nil
}