func DeleteManagedInstanceGroupVM()

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
}