Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add checks for local cluster. minor refactor #2239

Merged
merged 4 commits into from
Oct 12, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions cmd/nodecmd/add_dashboard.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@ cluster.`,

func addDashboard(_ *cobra.Command, args []string) error {
clusterName := args[0]
clusterConfig, err := app.GetClusterConfig(clusterName)
if err != nil {
return err
}
if clusterConfig.Local {
return notImplementedForLocal(clusterName, "addDashboard")
}
if customGrafanaDashboardPath != "" {
if err := addCustomDashboard(clusterName, blockchainName); err != nil {
return err
Expand Down
36 changes: 13 additions & 23 deletions cmd/nodecmd/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -833,28 +833,22 @@ func saveExternalHostConfig(externalHostConfig models.RegionConfig, hostRegion,
}

func getExistingMonitoringInstance(clusterName string) (string, error) {
if app.ClustersConfigExists() {
clustersConfig, err := app.LoadClustersConfig()
if err != nil {
return "", err
}
if _, ok := clustersConfig.Clusters[clusterName]; ok {
if clustersConfig.Clusters[clusterName].MonitoringInstance != "" {
return clustersConfig.Clusters[clusterName].MonitoringInstance, nil
}
clustersConfig, err := app.GetClustersConfig()
if err != nil {
return "", err
}
if _, ok := clustersConfig.Clusters[clusterName]; ok {
if clustersConfig.Clusters[clusterName].MonitoringInstance != "" {
return clustersConfig.Clusters[clusterName].MonitoringInstance, nil
}
}
return "", nil
}

func updateKeyPairClustersConfig(cloudConfig models.NodeConfig) error {
clustersConfig := models.ClustersConfig{}
var err error
if app.ClustersConfigExists() {
clustersConfig, err = app.LoadClustersConfig()
if err != nil {
return err
}
clustersConfig, err := app.GetClustersConfig()
if err != nil {
return err
}
if clustersConfig.KeyPair == nil {
clustersConfig.KeyPair = make(map[string]string)
Expand Down Expand Up @@ -887,13 +881,9 @@ func getNodeCloudConfig(node string) (models.RegionConfig, string, error) {
}

func addNodeToClustersConfig(network models.Network, nodeID, clusterName string, isAPIInstance bool, isExternalHost bool, nodeRole, loadTestName string) error {
clustersConfig := models.ClustersConfig{}
if app.ClustersConfigExists() {
var err error
clustersConfig, err = app.LoadClustersConfig()
if err != nil {
return err
}
clustersConfig, err := app.GetClustersConfig()
if err != nil {
return err
}
if clustersConfig.Clusters == nil {
clustersConfig.Clusters = make(map[string]models.ClusterConfig)
Expand Down
27 changes: 10 additions & 17 deletions cmd/nodecmd/create_gcp.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,16 +53,13 @@ func getGCPCloudCredentials() (*compute.Service, string, string, error) {
var err error
var gcpCredentialsPath string
var gcpProjectName string
clustersConfig := models.ClustersConfig{}
if app.ClustersConfigExists() {
clustersConfig, err = app.LoadClustersConfig()
if err != nil {
return nil, "", "", err
}
if clustersConfig.GCPConfig != (models.GCPConfig{}) {
gcpProjectName = clustersConfig.GCPConfig.ProjectName
gcpCredentialsPath = clustersConfig.GCPConfig.ServiceAccFilePath
}
clustersConfig, err := app.GetClustersConfig()
if err != nil {
return nil, "", "", err
}
if clustersConfig.GCPConfig != (models.GCPConfig{}) {
gcpProjectName = clustersConfig.GCPConfig.ProjectName
gcpCredentialsPath = clustersConfig.GCPConfig.ServiceAccFilePath
}
if gcpProjectName == "" {
if cmdLineGCPProjectName != "" {
Expand Down Expand Up @@ -380,13 +377,9 @@ func createGCPInstance(
}

func updateClustersConfigGCPKeyFilepath(projectName, serviceAccountKeyFilepath string) error {
clustersConfig := models.ClustersConfig{}
var err error
if app.ClustersConfigExists() {
clustersConfig, err = app.LoadClustersConfig()
if err != nil {
return err
}
clustersConfig, err := app.GetClustersConfig()
if err != nil {
return err
}
if projectName != "" {
clustersConfig.GCPConfig.ProjectName = projectName
Expand Down
7 changes: 5 additions & 2 deletions cmd/nodecmd/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,14 @@ func deploySubnet(cmd *cobra.Command, args []string) error {
if _, err := blockchaincmd.ValidateSubnetNameAndGetChains([]string{subnetName}); err != nil {
return err
}
clustersConfig, err := app.LoadClustersConfig()
clusterConfig, err := app.GetClusterConfig(clusterName)
if err != nil {
return err
}
if clustersConfig.Clusters[clusterName].Network.Kind != models.Devnet {
if clusterConfig.Local {
return notImplementedForLocal(clusterName, "deploy")
}
if clusterConfig.Network.Kind != models.Devnet {
return fmt.Errorf("node deploy command must be applied to devnet clusters")
}
hosts, err := ansible.GetInventoryFromAnsibleInventoryFile(app.GetAnsibleInventoryDirPath(clusterName))
Expand Down
48 changes: 19 additions & 29 deletions cmd/nodecmd/destroy.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (
gcpAPI "github.com/ava-labs/avalanche-cli/pkg/cloud/gcp"
"github.com/ava-labs/avalanche-cli/pkg/cobrautils"
"github.com/ava-labs/avalanche-cli/pkg/constants"
"github.com/ava-labs/avalanche-cli/pkg/models"
"github.com/ava-labs/avalanche-cli/pkg/utils"
"github.com/ava-labs/avalanche-cli/pkg/ux"
"golang.org/x/exp/maps"
Expand Down Expand Up @@ -49,13 +48,9 @@ If there is a static IP address attached, it will be released.`,
}

func removeNodeFromClustersConfig(clusterName string) error {
clustersConfig := models.ClustersConfig{}
var err error
if app.ClustersConfigExists() {
clustersConfig, err = app.LoadClustersConfig()
if err != nil {
return err
}
clustersConfig, err := app.GetClustersConfig()
if err != nil {
return err
}
if clustersConfig.Clusters != nil {
delete(clustersConfig.Clusters, clusterName)
Expand Down Expand Up @@ -124,13 +119,9 @@ func getFirstAvailableNode(nodesToStop []string) (string, bool) {
}

func Cleanup() error {
var err error
clustersConfig := models.ClustersConfig{}
if app.ClustersConfigExists() {
clustersConfig, err = app.LoadClustersConfig()
if err != nil {
return err
}
clustersConfig, err := app.GetClustersConfig()
if err != nil {
return err
}
clusterNames := maps.Keys(clustersConfig.Clusters)
for _, clusterName := range clusterNames {
Expand Down Expand Up @@ -158,6 +149,13 @@ func destroyNodes(_ *cobra.Command, args []string) error {
if err := checkCluster(clusterName); err != nil {
return err
}
clusterConfig, err := app.GetClusterConfig(clusterName)
if err != nil {
return err
}
if clusterConfig.Local {
return notImplementedForLocal(clusterName, "destroy")
}
isExternalCluster, err := checkClusterExternal(clusterName)
if err != nil {
return err
Expand Down Expand Up @@ -315,13 +313,9 @@ func destroyNodes(_ *cobra.Command, args []string) error {
}

func getClusterMonitoringNode(clusterName string) (string, error) {
clustersConfig := models.ClustersConfig{}
if app.ClustersConfigExists() {
var err error
clustersConfig, err = app.LoadClustersConfig()
if err != nil {
return "", err
}
clustersConfig, err := app.GetClustersConfig()
if err != nil {
return "", err
}
if _, ok := clustersConfig.Clusters[clusterName]; !ok {
return "", fmt.Errorf("cluster %q does not exist", clusterName)
Expand All @@ -335,13 +329,9 @@ func checkCluster(clusterName string) error {
}

func checkClusterExists(clusterName string) (bool, error) {
clustersConfig := models.ClustersConfig{}
if app.ClustersConfigExists() {
var err error
clustersConfig, err = app.LoadClustersConfig()
if err != nil {
return false, err
}
clustersConfig, err := app.GetClustersConfig()
if err != nil {
return false, err
}
_, ok := clustersConfig.Clusters[clusterName]
return ok, nil
Expand Down
11 changes: 5 additions & 6 deletions cmd/nodecmd/import.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,13 +109,12 @@ func importFile(_ *cobra.Command, args []string) error {
// add cluster
clustersConfig := models.ClustersConfig{}
clustersConfig.Clusters = make(map[string]models.ClusterConfig)
if app.ClustersConfigExists() {
clustersConfig, err = app.LoadClustersConfig()
if err != nil {
ux.Logger.RedXToUser("error loading clusters config: %v", err)
return err
}
clustersConfig, err = app.GetClustersConfig()
if err != nil {
ux.Logger.RedXToUser("error loading clusters config: %v", err)
return err
}

importCluster.ClusterConfig.Network.ClusterName = clusterName
clustersConfig.Clusters[clusterName] = importCluster.ClusterConfig
if err := app.WriteClustersConfigFile(&clustersConfig); err != nil {
Expand Down
11 changes: 3 additions & 8 deletions cmd/nodecmd/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
"strings"

"github.com/ava-labs/avalanche-cli/pkg/cobrautils"
"github.com/ava-labs/avalanche-cli/pkg/models"
"github.com/ava-labs/avalanche-cli/pkg/ux"

"github.com/spf13/cobra"
Expand All @@ -29,13 +28,9 @@
}

func list(_ *cobra.Command, _ []string) error {
var err error
clustersConfig := models.ClustersConfig{}
if app.ClustersConfigExists() {
clustersConfig, err = app.LoadClustersConfig()
if err != nil {
return err
}
clustersConfig, err := app.GetClustersConfig()
if err != nil {
return err
}
if len(clustersConfig.Clusters) == 0 {
ux.Logger.PrintToUser("There are no clusters defined.")
Expand All @@ -59,7 +54,7 @@
}
nodeIDs = append(nodeIDs, nodeIDStr)
}
if clusterConf.External {

Check failure on line 57 in cmd/nodecmd/list.go

View workflow job for this annotation

GitHub Actions / Lint

ifElseChain: rewrite if-else to switch statement (gocritic)
ux.Logger.PrintToUser("cluster %q (%s) EXTERNAL", clusterName, clusterConf.Network.Kind.String())
} else if clusterConf.Local {
ux.Logger.PrintToUser("cluster %q (%s) LOCAL", clusterName, clusterConf.Network.Kind.String())
Expand Down
16 changes: 7 additions & 9 deletions cmd/nodecmd/load_test_start.go
Original file line number Diff line number Diff line change
Expand Up @@ -522,15 +522,13 @@ func GetLoadTestScript(app *application.Avalanche) error {
}

func getExistingLoadTestInstance(clusterName, loadTestName string) (string, error) {
if app.ClustersConfigExists() {
clustersConfig, err := app.LoadClustersConfig()
if err != nil {
return "", err
}
if _, ok := clustersConfig.Clusters[clusterName]; ok {
if _, loadTestExists := clustersConfig.Clusters[clusterName].LoadTestInstance[loadTestName]; loadTestExists {
return clustersConfig.Clusters[clusterName].LoadTestInstance[loadTestName], nil
}
clustersConfig, err := app.GetClustersConfig()
if err != nil {
return "", err
}
if _, ok := clustersConfig.Clusters[clusterName]; ok {
if _, loadTestExists := clustersConfig.Clusters[clusterName].LoadTestInstance[loadTestName]; loadTestExists {
return clustersConfig.Clusters[clusterName].LoadTestInstance[loadTestName], nil
}
}
return "", nil
Expand Down
30 changes: 9 additions & 21 deletions cmd/nodecmd/load_test_stop.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,9 @@ separate cloud server created to host the load test.`,
}

func getLoadTestInstancesInCluster(clusterName string) ([]string, error) {
clustersConfig := models.ClustersConfig{}
if app.ClustersConfigExists() {
var err error
clustersConfig, err = app.LoadClustersConfig()
if err != nil {
return nil, err
}
clustersConfig, err := app.GetClustersConfig()
if err != nil {
return nil, err
}
if _, ok := clustersConfig.Clusters[clusterName]; !ok {
return nil, fmt.Errorf("cluster %s doesn't exist", clusterName)
Expand All @@ -58,13 +54,9 @@ func getLoadTestInstancesInCluster(clusterName string) ([]string, error) {
}

func checkLoadTestExists(clusterName, loadTestName string) (bool, error) {
clustersConfig := models.ClustersConfig{}
if app.ClustersConfigExists() {
var err error
clustersConfig, err = app.LoadClustersConfig()
if err != nil {
return false, err
}
clustersConfig, err := app.GetClustersConfig()
if err != nil {
return false, err
}
if _, ok := clustersConfig.Clusters[clusterName]; !ok {
return false, fmt.Errorf("cluster %s doesn't exist", clusterName)
Expand Down Expand Up @@ -252,13 +244,9 @@ func destroyNode(node, clusterName, loadTestName string, ec2Svc *awsAPI.AwsCloud
}

func removeLoadTestNodeFromClustersConfig(clusterName, loadTestName string) error {
clustersConfig := models.ClustersConfig{}
var err error
if app.ClustersConfigExists() {
clustersConfig, err = app.LoadClustersConfig()
if err != nil {
return err
}
clustersConfig, err := app.GetClustersConfig()
if err != nil {
return err
}
if clustersConfig.Clusters != nil {
if _, ok := clustersConfig.Clusters[clusterName]; !ok {
Expand Down
16 changes: 9 additions & 7 deletions cmd/nodecmd/local.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
"github.com/ava-labs/avalanche-network-runner/client"
anrutils "github.com/ava-labs/avalanche-network-runner/utils"
"github.com/ava-labs/avalanchego/ids"
"github.com/ava-labs/avalanchego/utils/logging"
"github.com/ava-labs/avalanchego/utils/set"
"github.com/spf13/cobra"
)
Expand Down Expand Up @@ -321,7 +322,7 @@
spinner := spinSession.SpinToUser("Booting Network. Wait until healthy...")
if _, err := cli.Start(ctx, avalancheGoBinPath, anrOpts...); err != nil {
ux.SpinFailWithError(spinner, "", err)
localDestroyNode(nil, []string{clusterName})

Check failure on line 325 in cmd/nodecmd/local.go

View workflow job for this annotation

GitHub Actions / Lint

Error return value is not checked (errcheck)
return fmt.Errorf("failed to start local avalanchego: %w", err)
}
ux.SpinComplete(spinner)
Expand Down Expand Up @@ -384,7 +385,7 @@
func localDestroyNode(_ *cobra.Command, args []string) error {
clusterName := args[0]

localStopNode(nil, nil)

Check failure on line 388 in cmd/nodecmd/local.go

View workflow job for this annotation

GitHub Actions / Lint

Error return value is not checked (errcheck)

rootDir := app.GetLocalDir(clusterName)
if err := os.RemoveAll(rootDir); err != nil {
Expand Down Expand Up @@ -422,13 +423,9 @@
}

func checkClusterIsLocal(clusterName string) (bool, error) {
clustersConfig := models.ClustersConfig{}
if app.ClustersConfigExists() {
var err error
clustersConfig, err = app.LoadClustersConfig()
if err != nil {
return false, err
}
clustersConfig, err := app.GetClustersConfig()
if err != nil {
return false, err
}
clusterConf, ok := clustersConfig.Clusters[clusterName]
return ok && clusterConf.Local, nil
Expand Down Expand Up @@ -511,3 +508,8 @@
ux.Logger.GreenCheckmarkToUser("%s successfully tracking %s", clusterName, blockchainName)
return nil
}

func notImplementedForLocal(clusterName string, what string) error {
ux.Logger.PrintToUser("Local cluster %s does not support %s cmd", logging.LightBlue.Wrap(clusterName), logging.LightBlue.Wrap(what))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would rather use "Unsupported cmd: %s is not supported by local clusters". A nit feel free to think on this
and find out a suitable variation

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agree. changed

return nil
}
7 changes: 7 additions & 0 deletions cmd/nodecmd/resize.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,13 @@ func preResizeChecks(clusterName string) error {
if err := failForExternal(clusterName); err != nil {
return fmt.Errorf("cannot resize external cluster %s", clusterName)
}
clusterConfig, err := app.GetClusterConfig(clusterName)
if err != nil {
return err
}
if clusterConfig.Local {
return notImplementedForLocal(clusterName, "resize")
}
return nil
}

Expand Down
Loading
Loading