in integration_test/gce-testing-internal/gce/gce_testing.go [1805:1848]
func DeleteManagedInstanceGroupVM(logger *log.Logger, migVM *ManagedInstanceGroupVM) error {
if migVM.AlreadyDeleted {
logger.Printf("Managed Instance Group %v was already deleted, skipping delete.", migVM.Name)
return nil
}
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute)
defer cancel()
backoffPolicy := backoff.WithContext(backoff.WithMaxRetries(backoff.NewConstantBackOff(30*time.Second), 10), ctx)
attempt := 0
tryDeleteMIG := func() error {
attempt++
_, err := RunGcloud(ctx, logger, "",
[]string{
"compute", "instance-groups", "managed", "delete", migVM.ManagedInstanceGroupName(),
"--project=" + migVM.Project,
"--zone=" + migVM.Zone,
})
if err == nil {
return nil
}
return handleDeleteError(err, attempt)
}
err := backoff.Retry(tryDeleteMIG, backoffPolicy)
if err != nil {
return err
}
attempt = 0
tryDeleteTemplate := func() error {
attempt++
_, err = RunGcloud(ctx, logger, "",
[]string{
"compute", "instance-templates", "delete", migVM.InstanceTemplateName(),
"--project=" + migVM.Project,
})
return handleDeleteError(err, attempt)
}
err = backoff.Retry(tryDeleteTemplate, backoffPolicy)
if err == nil {
migVM.AlreadyDeleted = true
}
return err
}