package bannerctl import ( "context" "time" metricsscope "cloud.google.com/go/monitoring/metricsscope/apiv1" secretmanagerpb "cloud.google.com/go/secretmanager/apiv1/secretmanagerpb" "google.golang.org/api/option" "edge-infra.dev/pkg/lib/gcp/metricsscopes" "edge-infra.dev/pkg/lib/gcp/secretmanager" ) type secretManager interface { NewWithOptions(context.Context, string, ...option.ClientOption) (secretManagerClient, error) } type secretManagerClient interface { GetLatestSecretValueInfo(ctx context.Context, secretID string) (*secretmanagerpb.SecretVersion, error) GetLatestSecretValue(ctx context.Context, secretID string) ([]byte, error) GetSecret(ctx context.Context, secretID string) (*secretmanagerpb.Secret, error) AddSecret(ctx context.Context, secretID string, secretValue []byte, labels map[string]string, forceLabelsUpdate bool, expireAt *time.Time, versionAlias string) error } type gcpSecretManager struct{} func (sm *gcpSecretManager) NewWithOptions(ctx context.Context, projectID string, opts ...option.ClientOption) (secretManagerClient, error) { return secretmanager.NewWithOptions(ctx, projectID, opts...) } type metricsScopesClient interface { AddMonitoredProject(ctx context.Context, projectID string) (*metricsscope.CreateMonitoredProjectOperation, error) } type gcpMetricsScopesClient struct { c *metricsscopes.Client } func (c *gcpMetricsScopesClient) AddMonitoredProject(ctx context.Context, projectID string) (*metricsscope.CreateMonitoredProjectOperation, error) { return c.c.AddMonitoredProject(ctx, projectID) }