package mail import ( "context" "github.com/carlosframework/platform/internal/dnsrec" "github.com/carlosframework/platform/internal/hostops" ) // claimMarkedProvisioner and claimMarkedWriter record that an effect was // issued under the held gate. Named private fields; every method written // out. A new interface method fails the compile-time assertions below // instead of being forwarded unmarked. type claimMarkedProvisioner struct{ raw Provisioner } var _ Provisioner = claimMarkedProvisioner{} func (p claimMarkedProvisioner) EnsureTenant(ctx context.Context, name string) error { err := p.raw.EnsureTenant(ctx, name) markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "ses-tenant", Method: "EnsureTenant", Name: name}, err) return err } func (p claimMarkedProvisioner) EnsureConfigSet(ctx context.Context, region, name, topic string) error { err := p.raw.EnsureConfigSet(ctx, region, name, topic) markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "ses-config-set", Method: "EnsureConfigSet", Region: region, Name: name}, err) return err } func (p claimMarkedProvisioner) SetIdentityConfigSet(ctx context.Context, region, domain, set string) error { err := p.raw.SetIdentityConfigSet(ctx, region, domain, set) markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "ses-identity", Method: "SetIdentityConfigSet", Region: region, Domain: domain}, err) return err } func (p claimMarkedProvisioner) AssociateTenantResource(ctx context.Context, tenant, resource string) error { err := p.raw.AssociateTenantResource(ctx, tenant, resource) markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "ses-tenant", Method: "AssociateTenantResource", Name: tenant + " " + resource}, err) return err } func (p claimMarkedProvisioner) DisassociateTenantResource(ctx context.Context, tenant, resource string) error { err := p.raw.DisassociateTenantResource(ctx, tenant, resource) markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "ses-tenant", Method: "DisassociateTenantResource", Name: tenant + " " + resource}, err) return err } func (p claimMarkedProvisioner) EnsureIdentity(ctx context.Context, region, domain, from string, adopt bool) (Identity, error) { id, err := p.raw.EnsureIdentity(ctx, region, domain, from, adopt) markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "ses-identity", Method: "EnsureIdentity", Region: region, Domain: domain}, err) return id, err } func (p claimMarkedProvisioner) IdentityStatus(ctx context.Context, region, domain string) (Status, error) { return p.raw.IdentityStatus(ctx, region, domain) } func (p claimMarkedProvisioner) DeleteIdentity(ctx context.Context, region, domain string) error { err := p.raw.DeleteIdentity(ctx, region, domain) markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "ses-identity", Method: "DeleteIdentity", Region: region, Domain: domain}, err) return err } func (p claimMarkedProvisioner) EnsureUser(ctx context.Context, name, path string, identities, sets, domains []string) (string, error) { arn, err := p.raw.EnsureUser(ctx, name, path, identities, sets, domains) markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "iam", Method: "EnsureUser", Name: name}, err) return arn, err } func (p claimMarkedProvisioner) MintKey(ctx context.Context, user string) (string, string, error) { id, secret, err := p.raw.MintKey(ctx, user) markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "iam", Method: "MintKey", Name: user}, err) return id, secret, err } func (p claimMarkedProvisioner) SetKeyActive(ctx context.Context, user, key string, active bool) error { err := p.raw.SetKeyActive(ctx, user, key, active) markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "iam", Method: "SetKeyActive", Name: user}, err) return err } func (p claimMarkedProvisioner) DeleteKey(ctx context.Context, user, key string) error { err := p.raw.DeleteKey(ctx, user, key) markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "iam", Method: "DeleteKey", Name: user}, err) return err } func (p claimMarkedProvisioner) ReapKeys(ctx context.Context, user string, keep []string) error { err := p.raw.ReapKeys(ctx, user, keep) markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "iam", Method: "ReapKeys", Name: user}, err) return err } func (p claimMarkedProvisioner) DeleteUser(ctx context.Context, user string) error { err := p.raw.DeleteUser(ctx, user) markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "iam", Method: "DeleteUser", Name: user}, err) return err } type claimMarkedWriter struct{ raw dnsrec.Writer } var _ dnsrec.Writer = claimMarkedWriter{} func (w claimMarkedWriter) EnsureRecord(ctx context.Context, record dnsrec.Record) error { err := w.raw.EnsureRecord(ctx, record) markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "dns", Method: "EnsureRecord", Name: record.Key()}, err) return err } func (w claimMarkedWriter) DeleteRecord(ctx context.Context, record dnsrec.Record) error { err := w.raw.DeleteRecord(ctx, record) markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "dns", Method: "DeleteRecord", Name: record.Key()}, err) return err }