func()

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
}