in server/server.go [59:92]
func (s *Server) Mount(ctx context.Context, req *v1alpha1.MountRequest) (*v1alpha1.MountResponse, error) {
p, err := strconv.ParseUint(req.GetPermission(), 10, 32)
if err != nil {
return nil, status.Error(codes.InvalidArgument, fmt.Sprintf("Unable to parse permissions: %s", req.GetPermission()))
}
params := &config.MountParams{
Attributes: req.GetAttributes(),
KubeSecrets: req.GetSecrets(),
TargetPath: req.GetTargetPath(),
Permissions: os.FileMode(p),
}
cfg, err := config.Parse(params)
if err != nil {
return nil, status.Error(codes.InvalidArgument, err.Error())
}
ts, err := s.AuthClient.TokenSource(ctx, cfg)
if err != nil {
klog.ErrorS(err, "unable to obtain auth for mount", "pod", klog.ObjectRef{Namespace: cfg.PodInfo.Namespace, Name: cfg.PodInfo.Name})
return nil, status.Error(codes.PermissionDenied, fmt.Sprintf("unable to obtain auth for mount: %v", err))
}
// Build a grpc credentials.PerRPCCredentials using
// the grpc google.golang.org/grpc/credentials/oauth package, not to be
// confused with the oauth2.TokenSource that it wraps.
gts := oauth.TokenSource{TokenSource: ts}
// Fetch the secrets from the secretmanager API based on the
// SecretProviderClass configuration.
return handleMountEvent(ctx, s.SecretClient, gts, cfg, s.RegionalSecretClients, s.SmOpts)
}