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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
package sweepers
import (
"fmt"
functionSDK "github.com/scaleway/scaleway-sdk-go/api/function/v1beta1"
"github.com/scaleway/scaleway-sdk-go/logger"
"github.com/scaleway/scaleway-sdk-go/scw"
)
func SweepTriggers(scwClient *scw.Client, region scw.Region) error {
functionAPI := functionSDK.NewAPI(scwClient)
logger.Warningf("sweeper: destroying the function triggers in (%s)", region)
listTriggers, err := functionAPI.ListTriggers(
&functionSDK.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 := functionAPI.DeleteTrigger(&functionSDK.DeleteTriggerRequest{
TriggerID: trigger.ID,
Region: region,
})
if err != nil {
return fmt.Errorf("error deleting trigger in sweeper: %s", err)
}
}
return nil
}
func SweepNamespaces(scwClient *scw.Client, region scw.Region) error {
functionAPI := functionSDK.NewAPI(scwClient)
logger.Debugf("sweeper: destroying the function namespaces in (%s)", region)
listNamespaces, err := functionAPI.ListNamespaces(
&functionSDK.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 := functionAPI.DeleteNamespace(&functionSDK.DeleteNamespaceRequest{
NamespaceID: ns.ID,
Region: region,
})
if err != nil {
logger.Debugf("sweeper: error (%s)", err)
return fmt.Errorf("error deleting namespace in sweeper: %s", err)
}
}
return nil
}
func SweepFunctions(scwClient *scw.Client, region scw.Region) error {
functionAPI := functionSDK.NewAPI(scwClient)
logger.Warningf("sweeper: destroying the function in (%s)", region)
listFunctions, err := functionAPI.ListFunctions(
&functionSDK.ListFunctionsRequest{
Region: region,
}, scw.WithAllPages())
if err != nil {
return fmt.Errorf("error listing functions in (%s) in sweeper: %s", region, err)
}
for _, f := range listFunctions.Functions {
_, err := functionAPI.DeleteFunction(&functionSDK.DeleteFunctionRequest{
FunctionID: f.ID,
Region: region,
})
if err != nil {
return fmt.Errorf("error deleting functions in sweeper: %s", err)
}
}
return nil
}
func SweepCrons(scwClient *scw.Client, region scw.Region) error {
functionAPI := functionSDK.NewAPI(scwClient)
logger.Warningf("sweeper: destroying the function cron in (%s)", region)
listCron, err := functionAPI.ListCrons(
&functionSDK.ListCronsRequest{
Region: region,
}, scw.WithAllPages())
if err != nil {
return fmt.Errorf("error listing cron in (%s) in sweeper: %s", region, err)
}
for _, cron := range listCron.Crons {
_, err := functionAPI.DeleteCron(&functionSDK.DeleteCronRequest{
CronID: cron.ID,
Region: region,
})
if err != nil {
return fmt.Errorf("error deleting cron in sweeper: %s", err)
}
}
return nil
}
func SweepAllLocalities(scwClient *scw.Client) error {
for _, region := range (&functionSDK.API{}).Regions() {
err := SweepTriggers(scwClient, region)
if err != nil {
return err
}
err = SweepNamespaces(scwClient, region)
if err != nil {
return err
}
err = SweepFunctions(scwClient, region)
if err != nil {
return err
}
err = SweepCrons(scwClient, region)
if err != nil {
return err
}
}
return nil
}
|