1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
package sweepers
import (
"fmt"
container "github.com/scaleway/scaleway-sdk-go/api/container/v1beta1"
"github.com/scaleway/scaleway-sdk-go/logger"
"github.com/scaleway/scaleway-sdk-go/scw"
)
func SweepTrigger(scwClient *scw.Client, region scw.Region) error {
containerAPI := container.NewAPI(scwClient)
logger.Warningf("sweeper: destroying the container triggers in (%s)", region)
listTriggers, err := containerAPI.ListTriggers(
&container.ListTriggersRequest{
Region: region,
}, scw.WithAllPages())
if err != nil {
return fmt.Errorf("error listing trigger in (%s) in sweeper: %s", region, err)
}
for _, trigger := range listTriggers.Triggers {
_, err := containerAPI.DeleteTrigger(&container.DeleteTriggerRequest{
TriggerID: trigger.ID,
Region: region,
})
if err != nil {
return fmt.Errorf("error deleting trigger in sweeper: %s", err)
}
}
return nil
}
func SweepContainer(scwClient *scw.Client, region scw.Region) error {
containerAPI := container.NewAPI(scwClient)
logger.Warningf("sweeper: destroying the container in (%s)", region)
listNamespaces, err := containerAPI.ListContainers(
&container.ListContainersRequest{
Region: region,
}, scw.WithAllPages())
if err != nil {
return fmt.Errorf("error listing containers in (%s) in sweeper: %s", region, err)
}
for _, cont := range listNamespaces.Containers {
_, err := containerAPI.DeleteContainer(&container.DeleteContainerRequest{
ContainerID: cont.ID,
Region: region,
})
if err != nil {
return fmt.Errorf("error deleting container in sweeper: %s", err)
}
}
return nil
}
func SweepNamespace(scwClient *scw.Client, region scw.Region) error {
containerAPI := container.NewAPI(scwClient)
logger.Warningf("sweeper: destroying the container namespaces in (%s)", region)
listNamespaces, err := containerAPI.ListNamespaces(
&container.ListNamespacesRequest{
Region: region,
}, scw.WithAllPages())
if err != nil {
return fmt.Errorf("error listing namespaces in (%s) in sweeper: %s", region, err)
}
for _, ns := range listNamespaces.Namespaces {
_, err := containerAPI.DeleteNamespace(&container.DeleteNamespaceRequest{
NamespaceID: ns.ID,
Region: region,
})
if err != nil {
return fmt.Errorf("error deleting namespace in sweeper: %s", err)
}
}
return nil
}
func SweepAllLocalities(scwClient *scw.Client) error {
for _, region := range (&container.API{}).Regions() {
err := SweepTrigger(scwClient, region)
if err != nil {
return err
}
err = SweepContainer(scwClient, region)
if err != nil {
return err
}
err = SweepNamespace(scwClient, region)
if err != nil {
return err
}
}
return nil
}
|