| 1 | package mail |
| 2 | |
| 3 | import ( |
| 4 | "context" |
| 5 | |
| 6 | "github.com/carlosframework/platform/internal/dnsrec" |
| 7 | "github.com/carlosframework/platform/internal/hostops" |
| 8 | ) |
| 9 | |
| 10 | // claimMarkedProvisioner and claimMarkedWriter record that an effect was |
| 11 | // issued under the held gate. Named private fields; every method written |
| 12 | // out. A new interface method fails the compile-time assertions below |
| 13 | // instead of being forwarded unmarked. |
| 14 | type claimMarkedProvisioner struct{ raw Provisioner } |
| 15 | |
| 16 | var _ Provisioner = claimMarkedProvisioner{} |
| 17 | |
| 18 | func (p claimMarkedProvisioner) EnsureTenant(ctx context.Context, name string) error { |
| 19 | err := p.raw.EnsureTenant(ctx, name) |
| 20 | markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "ses-tenant", Method: "EnsureTenant", Name: name}, err) |
| 21 | return err |
| 22 | } |
| 23 | func (p claimMarkedProvisioner) EnsureConfigSet(ctx context.Context, region, name, topic string) error { |
| 24 | err := p.raw.EnsureConfigSet(ctx, region, name, topic) |
| 25 | markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "ses-config-set", Method: "EnsureConfigSet", Region: region, Name: name}, err) |
| 26 | return err |
| 27 | } |
| 28 | func (p claimMarkedProvisioner) SetIdentityConfigSet(ctx context.Context, region, domain, set string) error { |
| 29 | err := p.raw.SetIdentityConfigSet(ctx, region, domain, set) |
| 30 | markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "ses-identity", Method: "SetIdentityConfigSet", Region: region, Domain: domain}, err) |
| 31 | return err |
| 32 | } |
| 33 | func (p claimMarkedProvisioner) AssociateTenantResource(ctx context.Context, tenant, resource string) error { |
| 34 | err := p.raw.AssociateTenantResource(ctx, tenant, resource) |
| 35 | markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "ses-tenant", Method: "AssociateTenantResource", Name: tenant + " " + resource}, err) |
| 36 | return err |
| 37 | } |
| 38 | func (p claimMarkedProvisioner) DisassociateTenantResource(ctx context.Context, tenant, resource string) error { |
| 39 | err := p.raw.DisassociateTenantResource(ctx, tenant, resource) |
| 40 | markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "ses-tenant", Method: "DisassociateTenantResource", Name: tenant + " " + resource}, err) |
| 41 | return err |
| 42 | } |
| 43 | func (p claimMarkedProvisioner) EnsureIdentity(ctx context.Context, region, domain, from string, adopt bool) (Identity, error) { |
| 44 | id, err := p.raw.EnsureIdentity(ctx, region, domain, from, adopt) |
| 45 | markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "ses-identity", Method: "EnsureIdentity", Region: region, Domain: domain}, err) |
| 46 | return id, err |
| 47 | } |
| 48 | func (p claimMarkedProvisioner) IdentityStatus(ctx context.Context, region, domain string) (Status, error) { |
| 49 | return p.raw.IdentityStatus(ctx, region, domain) |
| 50 | } |
| 51 | func (p claimMarkedProvisioner) DeleteIdentity(ctx context.Context, region, domain string) error { |
| 52 | err := p.raw.DeleteIdentity(ctx, region, domain) |
| 53 | markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "ses-identity", Method: "DeleteIdentity", Region: region, Domain: domain}, err) |
| 54 | return err |
| 55 | } |
| 56 | func (p claimMarkedProvisioner) EnsureUser(ctx context.Context, name, path string, identities, sets, domains []string) (string, error) { |
| 57 | arn, err := p.raw.EnsureUser(ctx, name, path, identities, sets, domains) |
| 58 | markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "iam", Method: "EnsureUser", Name: name}, err) |
| 59 | return arn, err |
| 60 | } |
| 61 | func (p claimMarkedProvisioner) MintKey(ctx context.Context, user string) (string, string, error) { |
| 62 | id, secret, err := p.raw.MintKey(ctx, user) |
| 63 | markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "iam", Method: "MintKey", Name: user}, err) |
| 64 | return id, secret, err |
| 65 | } |
| 66 | func (p claimMarkedProvisioner) SetKeyActive(ctx context.Context, user, key string, active bool) error { |
| 67 | err := p.raw.SetKeyActive(ctx, user, key, active) |
| 68 | markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "iam", Method: "SetKeyActive", Name: user}, err) |
| 69 | return err |
| 70 | } |
| 71 | func (p claimMarkedProvisioner) DeleteKey(ctx context.Context, user, key string) error { |
| 72 | err := p.raw.DeleteKey(ctx, user, key) |
| 73 | markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "iam", Method: "DeleteKey", Name: user}, err) |
| 74 | return err |
| 75 | } |
| 76 | func (p claimMarkedProvisioner) ReapKeys(ctx context.Context, user string, keep []string) error { |
| 77 | err := p.raw.ReapKeys(ctx, user, keep) |
| 78 | markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "iam", Method: "ReapKeys", Name: user}, err) |
| 79 | return err |
| 80 | } |
| 81 | func (p claimMarkedProvisioner) DeleteUser(ctx context.Context, user string) error { |
| 82 | err := p.raw.DeleteUser(ctx, user) |
| 83 | markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "iam", Method: "DeleteUser", Name: user}, err) |
| 84 | return err |
| 85 | } |
| 86 | |
| 87 | type claimMarkedWriter struct{ raw dnsrec.Writer } |
| 88 | |
| 89 | var _ dnsrec.Writer = claimMarkedWriter{} |
| 90 | |
| 91 | func (w claimMarkedWriter) EnsureRecord(ctx context.Context, record dnsrec.Record) error { |
| 92 | err := w.raw.EnsureRecord(ctx, record) |
| 93 | markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "dns", Method: "EnsureRecord", Name: record.Key()}, err) |
| 94 | return err |
| 95 | } |
| 96 | func (w claimMarkedWriter) DeleteRecord(ctx context.Context, record dnsrec.Record) error { |
| 97 | err := w.raw.DeleteRecord(ctx, record) |
| 98 | markClaimMailEffect(ctx, hostops.MailAttempt{Surface: "dns", Method: "DeleteRecord", Name: record.Key()}, err) |
| 99 | return err |
| 100 | } |
| 101 | |