diff --git a/resources/redshiftserverless-namespaces.go b/resources/redshiftserverless-namespaces.go index adfaae07..84304073 100644 --- a/resources/redshiftserverless-namespaces.go +++ b/resources/redshiftserverless-namespaces.go @@ -1,10 +1,18 @@ package resources import ( + "context" + "github.com/gotidy/ptr" + "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/redshiftserverless" - "github.com/rebuy-de/aws-nuke/v2/pkg/types" + + "github.com/ekristen/libnuke/pkg/registry" + "github.com/ekristen/libnuke/pkg/resource" + "github.com/ekristen/libnuke/pkg/types" + + "github.com/ekristen/aws-nuke/pkg/nuke" ) type RedshiftServerlessNamespace struct { @@ -12,13 +20,23 @@ type RedshiftServerlessNamespace struct { namespace *redshiftserverless.Namespace } +const RedshiftServerlessNamespaceResource = "RedshiftServerlessNamespace" + func init() { - register("RedshiftServerlessNamespace", ListRedshiftServerlessNamespaces) + registry.Register(®istry.Registration{ + Name: RedshiftServerlessNamespaceResource, + Scope: nuke.Account, + Lister: &RedshiftServerlessNamespaceLister{}, + }) } -func ListRedshiftServerlessNamespaces(sess *session.Session) ([]Resource, error) { - svc := redshiftserverless.New(sess) - resources := []Resource{} +type RedshiftServerlessNamespaceLister struct{} + +func (l *RedshiftServerlessNamespaceLister) List(_ context.Context, o interface{}) ([]resource.Resource, error) { + opts := o.(*nuke.ListerOpts) + + svc := redshiftserverless.New(opts.Session) + resources := make([]resource.Resource, 0) params := &redshiftserverless.ListNamespacesInput{ MaxResults: aws.Int64(100), @@ -55,7 +73,7 @@ func (n *RedshiftServerlessNamespace) Properties() types.Properties { return properties } -func (n *RedshiftServerlessNamespace) Remove() error { +func (n *RedshiftServerlessNamespace) Remove(_ context.Context) error { _, err := n.svc.DeleteNamespace(&redshiftserverless.DeleteNamespaceInput{ NamespaceName: n.namespace.NamespaceName, }) @@ -64,5 +82,5 @@ func (n *RedshiftServerlessNamespace) Remove() error { } func (n *RedshiftServerlessNamespace) String() string { - return *n.namespace.NamespaceName + return ptr.ToString(n.namespace.NamespaceName) } diff --git a/resources/redshiftserverless-snapshots.go b/resources/redshiftserverless-snapshots.go index 9f56c8e6..d8209260 100644 --- a/resources/redshiftserverless-snapshots.go +++ b/resources/redshiftserverless-snapshots.go @@ -1,10 +1,18 @@ package resources import ( + "context" + "github.com/gotidy/ptr" + "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/redshiftserverless" - "github.com/rebuy-de/aws-nuke/v2/pkg/types" + + "github.com/ekristen/libnuke/pkg/registry" + "github.com/ekristen/libnuke/pkg/resource" + "github.com/ekristen/libnuke/pkg/types" + + "github.com/ekristen/aws-nuke/pkg/nuke" ) type RedshiftServerlessSnapshot struct { @@ -12,13 +20,23 @@ type RedshiftServerlessSnapshot struct { snapshot *redshiftserverless.Snapshot } +const RedshiftServerlessSnapshotResource = "RedshiftServerlessSnapshot" + func init() { - register("RedshiftServerlessSnapshot", ListRedshiftServerlessSnapshots) + registry.Register(®istry.Registration{ + Name: RedshiftServerlessSnapshotResource, + Scope: nuke.Account, + Lister: &RedshiftServerlessSnapshotLister{}, + }) } -func ListRedshiftServerlessSnapshots(sess *session.Session) ([]Resource, error) { - svc := redshiftserverless.New(sess) - resources := []Resource{} +type RedshiftServerlessSnapshotLister struct{} + +func (l *RedshiftServerlessSnapshotLister) List(_ context.Context, o interface{}) ([]resource.Resource, error) { + opts := o.(*nuke.ListerOpts) + + svc := redshiftserverless.New(opts.Session) + resources := make([]resource.Resource, 0) params := &redshiftserverless.ListSnapshotsInput{ MaxResults: aws.Int64(100), @@ -56,7 +74,7 @@ func (s *RedshiftServerlessSnapshot) Properties() types.Properties { return properties } -func (s *RedshiftServerlessSnapshot) Remove() error { +func (s *RedshiftServerlessSnapshot) Remove(_ context.Context) error { _, err := s.svc.DeleteSnapshot(&redshiftserverless.DeleteSnapshotInput{ SnapshotName: s.snapshot.SnapshotName, }) @@ -65,5 +83,5 @@ func (s *RedshiftServerlessSnapshot) Remove() error { } func (s *RedshiftServerlessSnapshot) String() string { - return *s.snapshot.SnapshotName + return ptr.ToString(s.snapshot.SnapshotName) } diff --git a/resources/redshiftserverless-workgroups.go b/resources/redshiftserverless-workgroups.go index a88c8d16..29e8d217 100644 --- a/resources/redshiftserverless-workgroups.go +++ b/resources/redshiftserverless-workgroups.go @@ -1,10 +1,18 @@ package resources import ( + "context" + "github.com/gotidy/ptr" + "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/redshiftserverless" - "github.com/rebuy-de/aws-nuke/v2/pkg/types" + + "github.com/ekristen/libnuke/pkg/registry" + "github.com/ekristen/libnuke/pkg/resource" + "github.com/ekristen/libnuke/pkg/types" + + "github.com/ekristen/aws-nuke/pkg/nuke" ) type RedshiftServerlessWorkgroup struct { @@ -12,13 +20,23 @@ type RedshiftServerlessWorkgroup struct { workgroup *redshiftserverless.Workgroup } +const RedshiftServerlessWorkgroupResource = "RedshiftServerlessWorkgroup" + func init() { - register("RedshiftServerlessWorkgroup", ListRedshiftServerlessWorkgroups) + registry.Register(®istry.Registration{ + Name: RedshiftServerlessWorkgroupResource, + Scope: nuke.Account, + Lister: &RedshiftServerlessWorkgroupLister{}, + }) } -func ListRedshiftServerlessWorkgroups(sess *session.Session) ([]Resource, error) { - svc := redshiftserverless.New(sess) - resources := []Resource{} +type RedshiftServerlessWorkgroupLister struct{} + +func (l *RedshiftServerlessWorkgroupLister) List(_ context.Context, o interface{}) ([]resource.Resource, error) { + opts := o.(*nuke.ListerOpts) + + svc := redshiftserverless.New(opts.Session) + resources := make([]resource.Resource, 0) params := &redshiftserverless.ListWorkgroupsInput{ MaxResults: aws.Int64(100), @@ -56,7 +74,7 @@ func (w *RedshiftServerlessWorkgroup) Properties() types.Properties { return properties } -func (w *RedshiftServerlessWorkgroup) Remove() error { +func (w *RedshiftServerlessWorkgroup) Remove(_ context.Context) error { _, err := w.svc.DeleteWorkgroup(&redshiftserverless.DeleteWorkgroupInput{ WorkgroupName: w.workgroup.WorkgroupName, }) @@ -65,5 +83,5 @@ func (w *RedshiftServerlessWorkgroup) Remove() error { } func (w *RedshiftServerlessWorkgroup) String() string { - return *w.workgroup.WorkgroupName + return ptr.ToString(w.workgroup.WorkgroupName) }