func()

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
}