in pkg/berglas/access.go [93:130]
func (c *Client) secretManagerAccess(ctx context.Context, i *SecretManagerAccessRequest) ([]byte, error) {
project := i.Project
if project == "" {
return nil, fmt.Errorf("missing project")
}
name := i.Name
if name == "" {
return nil, fmt.Errorf("missing secret name")
}
version := i.Version
if version == "" {
version = "latest"
}
logger := logging.FromContext(ctx).With(
"project", project,
"name", name,
"version", version,
)
logger.DebugContext(ctx, "access.start")
defer logger.DebugContext(ctx, "access.finish")
resp, err := c.secretManagerClient.AccessSecretVersion(ctx, &secretspb.AccessSecretVersionRequest{
Name: fmt.Sprintf("projects/%s/secrets/%s/versions/%s", project, name, version),
})
if err != nil {
terr, ok := grpcstatus.FromError(err)
if ok && terr.Code() == grpccodes.NotFound {
return nil, errSecretDoesNotExist
}
return nil, fmt.Errorf("failed to access secret: %w", err)
}
return resp.Payload.Data, nil
}