virtualcluster/nodes_delete.go (24 lines of code) (raw):
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
package virtualcluster
import (
"context"
"errors"
"fmt"
"github.com/Azure/kperf/helmcli"
"helm.sh/helm/v3/pkg/storage/driver"
)
// DeleteNodepool deletes a node pool with a given name.
func DeleteNodepool(_ context.Context, kubeconfigPath string, nodepoolName string) error {
cfg := defaultNodepoolCfg
cfg.name = nodepoolName
if err := cfg.validate(); err != nil {
return err
}
delCli, err := helmcli.NewDeleteCli(kubeconfigPath, virtualnodeReleaseNamespace)
if err != nil {
return fmt.Errorf("failed to create helm delete client: %w", err)
}
// delete virtual node controller first
err = delCli.Delete(cfg.nodeControllerHelmReleaseName())
if err != nil && !errors.Is(err, driver.ErrReleaseNotFound) {
return fmt.Errorf("failed to cleanup virtual node controller: %w", err)
}
return delCli.Delete(cfg.nodeHelmReleaseName())
}