diff --git a/cmd/nodecmd/add_dashboard.go b/cmd/nodecmd/add_dashboard.go index a683e8928..6de90bf64 100644 --- a/cmd/nodecmd/add_dashboard.go +++ b/cmd/nodecmd/add_dashboard.go @@ -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("addDashboard") + } if customGrafanaDashboardPath != "" { if err := addCustomDashboard(clusterName, blockchainName); err != nil { return err diff --git a/cmd/nodecmd/create.go b/cmd/nodecmd/create.go index 2782cb0ca..10e911909 100644 --- a/cmd/nodecmd/create.go +++ b/cmd/nodecmd/create.go @@ -199,7 +199,14 @@ func preCreateChecks(clusterName string) error { if err := failForExternal(clusterName); err != nil { return err } - + // check for local + clusterConfig, err := app.GetClusterConfig(clusterName) + if err != nil { + return err + } + if clusterConfig.Local { + return notImplementedForLocal("addDashboard") + } return nil } @@ -833,28 +840,21 @@ 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 - } - } + // check for local + clusterConfig, err := app.GetClusterConfig(clusterName) + if err != nil { + return "", err + } + if clusterConfig.MonitoringInstance != "" { + return clusterConfig.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) @@ -887,13 +887,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) diff --git a/cmd/nodecmd/create_gcp.go b/cmd/nodecmd/create_gcp.go index 9bbad62bf..6db5241b3 100644 --- a/cmd/nodecmd/create_gcp.go +++ b/cmd/nodecmd/create_gcp.go @@ -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 != "" { @@ -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 diff --git a/cmd/nodecmd/deploy.go b/cmd/nodecmd/deploy.go index 1ba839e58..41275c8fe 100644 --- a/cmd/nodecmd/deploy.go +++ b/cmd/nodecmd/deploy.go @@ -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("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)) diff --git a/cmd/nodecmd/destroy.go b/cmd/nodecmd/destroy.go index f62f11fa3..b7e58f9db 100644 --- a/cmd/nodecmd/destroy.go +++ b/cmd/nodecmd/destroy.go @@ -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" @@ -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) @@ -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 { @@ -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("destroy") + } isExternalCluster, err := checkClusterExternal(clusterName) if err != nil { return err @@ -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) @@ -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 diff --git a/cmd/nodecmd/import.go b/cmd/nodecmd/import.go index e3c397653..e5b0975f2 100644 --- a/cmd/nodecmd/import.go +++ b/cmd/nodecmd/import.go @@ -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 { diff --git a/cmd/nodecmd/list.go b/cmd/nodecmd/list.go index 130f70edf..0a4902b58 100644 --- a/cmd/nodecmd/list.go +++ b/cmd/nodecmd/list.go @@ -7,7 +7,6 @@ import ( "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" @@ -29,13 +28,9 @@ The node list command lists all clusters together with their nodes.`, } 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.") diff --git a/cmd/nodecmd/load_test_start.go b/cmd/nodecmd/load_test_start.go index dea2296d1..35c5f8d0d 100644 --- a/cmd/nodecmd/load_test_start.go +++ b/cmd/nodecmd/load_test_start.go @@ -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 diff --git a/cmd/nodecmd/load_test_stop.go b/cmd/nodecmd/load_test_stop.go index 8c5f42fbb..62ab1b8f4 100644 --- a/cmd/nodecmd/load_test_stop.go +++ b/cmd/nodecmd/load_test_stop.go @@ -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) @@ -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) @@ -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 { diff --git a/cmd/nodecmd/local.go b/cmd/nodecmd/local.go index 6a6d02d7b..bbdd4d4cd 100644 --- a/cmd/nodecmd/local.go +++ b/cmd/nodecmd/local.go @@ -19,6 +19,7 @@ import ( "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" ) @@ -446,13 +447,9 @@ func addLocalClusterConfig(network models.Network) error { } 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 @@ -535,3 +532,8 @@ func localTrack(_ *cobra.Command, args []string) error { ux.Logger.GreenCheckmarkToUser("%s successfully tracking %s", clusterName, blockchainName) return nil } + +func notImplementedForLocal(what string) error { + ux.Logger.PrintToUser("Unsupported cmd: %s is not supported by local clusters", logging.LightBlue.Wrap(what)) + return nil +} diff --git a/cmd/nodecmd/resize.go b/cmd/nodecmd/resize.go index fe67b1557..a486d0f82 100644 --- a/cmd/nodecmd/resize.go +++ b/cmd/nodecmd/resize.go @@ -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("resize") + } return nil } diff --git a/cmd/nodecmd/scp.go b/cmd/nodecmd/scp.go index 44f6fc55b..3149d0314 100644 --- a/cmd/nodecmd/scp.go +++ b/cmd/nodecmd/scp.go @@ -55,13 +55,9 @@ $ avalanche node scp node1:/tmp/file.txt NodeID-XXXX:/tmp/file.txt } func scpNode(_ *cobra.Command, args []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.") @@ -84,6 +80,15 @@ func scpNode(_ *cobra.Command, args []string) error { if sourceClusterExists && destClusterExists { return fmt.Errorf("both source and destination cannot be clusters") } + sourceClusterConfig := clustersConfig.Clusters[sourceClusterNameOrNodeID] + if sourceClusterExists && sourceClusterConfig.Local { + return notImplementedForLocal("scp") + } + + destClusterConfig := clustersConfig.Clusters[destClusterNameOrNodeID] + if destClusterExists && destClusterConfig.Local { + return notImplementedForLocal("scp") + } switch { case sourceClusterExists: @@ -245,13 +250,9 @@ func prepareSCPTarget(op ClusterOp, host *models.Host, clusterName string, dest // getHostClusterPair returns the host and cluster name for the given node or cloudID func getHostClusterPair(nodeOrCloudIDOrIP string) (*models.Host, string) { - var err error - clustersConfig := models.ClustersConfig{} - if app.ClustersConfigExists() { - clustersConfig, err = app.LoadClustersConfig() - if err != nil { - return nil, "" - } + clustersConfig, err := app.GetClustersConfig() + if err != nil { + return nil, "" } for clusterName := range clustersConfig.Clusters { clusterHosts, err := GetAllClusterHosts(clusterName) diff --git a/cmd/nodecmd/ssh.go b/cmd/nodecmd/ssh.go index b3b8d33b5..6d6dd8278 100644 --- a/cmd/nodecmd/ssh.go +++ b/cmd/nodecmd/ssh.go @@ -48,13 +48,9 @@ If no [cmd] is provided for the node, it will open ssh shell there. } func sshNode(_ *cobra.Command, args []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.") @@ -63,6 +59,9 @@ func sshNode(_ *cobra.Command, args []string) error { if len(args) == 0 { // provide ssh connection string for all clusters for clusterName, clusterConfig := range clustersConfig.Clusters { + if clusterConfig.Local { + continue + } err := printClusterConnectionString(clusterName, clusterConfig.Network.Kind.String()) if err != nil { return err @@ -77,6 +76,9 @@ func sshNode(_ *cobra.Command, args []string) error { if len(args[1:]) == 0 { return printClusterConnectionString(clusterNameOrNodeID, clustersConfig.Clusters[clusterNameOrNodeID].Network.Kind.String()) } else { + if clustersConfig.Clusters[clusterNameOrNodeID].Local { + return notImplementedForLocal("ssh") + } clusterHosts, err := GetAllClusterHosts(clusterNameOrNodeID) if err != nil { return err diff --git a/cmd/nodecmd/status.go b/cmd/nodecmd/status.go index dc499cc18..47273d4ca 100644 --- a/cmd/nodecmd/status.go +++ b/cmd/nodecmd/status.go @@ -57,6 +57,10 @@ func statusNode(_ *cobra.Command, args []string) error { if err != nil { return err } + // local cluster doesn't have nodes + if clusterConf.Local { + return notImplementedForLocal("status") + } var blockchainID ids.ID if blockchainName != "" { sc, err := app.LoadSidecar(blockchainName) @@ -68,6 +72,7 @@ func statusNode(_ *cobra.Command, args []string) error { return ErrNoBlockchainID } } + hostIDs := utils.Filter(clusterConf.GetCloudIDs(), clusterConf.IsAvalancheGoHost) nodeIDs, err := utils.MapWithError(hostIDs, func(s string) (string, error) { n, err := getNodeID(app.GetNodeInstanceDirPath(s)) diff --git a/cmd/nodecmd/update_subnet.go b/cmd/nodecmd/update_subnet.go index 810aaf5c0..0590bacaf 100644 --- a/cmd/nodecmd/update_subnet.go +++ b/cmd/nodecmd/update_subnet.go @@ -41,6 +41,9 @@ func updateSubnet(_ *cobra.Command, args []string) error { if err != nil { return err } + if clusterConfig.Local { + return notImplementedForLocal("update") + } if _, err := blockchaincmd.ValidateSubnetNameAndGetChains([]string{subnetName}); err != nil { return err } diff --git a/cmd/nodecmd/upgrade.go b/cmd/nodecmd/upgrade.go index 0a8d3200a..9600c57c3 100644 --- a/cmd/nodecmd/upgrade.go +++ b/cmd/nodecmd/upgrade.go @@ -54,6 +54,9 @@ func upgrade(_ *cobra.Command, args []string) error { if err != nil { return err } + if clusterConfig.Local { + return notImplementedForLocal("upgrade") + } network := clusterConfig.Network hosts, err := ansible.GetInventoryFromAnsibleInventoryFile(app.GetAnsibleInventoryDirPath(clusterName)) if err != nil { diff --git a/cmd/nodecmd/validate_primary.go b/cmd/nodecmd/validate_primary.go index 44f1f8fec..ff8555f95 100644 --- a/cmd/nodecmd/validate_primary.go +++ b/cmd/nodecmd/validate_primary.go @@ -295,6 +295,9 @@ func validatePrimaryNetwork(_ *cobra.Command, args []string) error { if err != nil { return err } + if clusterConfig.Local { + return notImplementedForLocal("validate primary") + } network := clusterConfig.Network allHosts, err := ansible.GetInventoryFromAnsibleInventoryFile(app.GetAnsibleInventoryDirPath(clusterName)) diff --git a/cmd/nodecmd/validate_subnet.go b/cmd/nodecmd/validate_subnet.go index 552115426..3a200a30d 100644 --- a/cmd/nodecmd/validate_subnet.go +++ b/cmd/nodecmd/validate_subnet.go @@ -184,6 +184,9 @@ func validateSubnet(_ *cobra.Command, args []string) error { if err != nil { return err } + if clusterConfig.Local { + return notImplementedForLocal("validate subnet") + } network := clusterConfig.Network allHosts, err := ansible.GetInventoryFromAnsibleInventoryFile(app.GetAnsibleInventoryDirPath(clusterName)) diff --git a/cmd/nodecmd/whitelist.go b/cmd/nodecmd/whitelist.go index d7ec66172..d3b954224 100644 --- a/cmd/nodecmd/whitelist.go +++ b/cmd/nodecmd/whitelist.go @@ -68,6 +68,14 @@ func whitelist(_ *cobra.Command, args []string) error { return err } + clustersConfig, err := app.LoadClustersConfig() + if err != nil { + return err + } + clusterConfig := clustersConfig.Clusters[clusterName] + if clusterConfig.Local { + return notImplementedForLocal("whitelist") + } if discoverIP { userIPAddress, err = utils.GetUserIPAddress() if err != nil { diff --git a/internal/mocks/process_checker.go b/internal/mocks/process_checker.go index 2398cd337..884ae855d 100644 --- a/internal/mocks/process_checker.go +++ b/internal/mocks/process_checker.go @@ -14,7 +14,7 @@ type ProcessChecker struct { } // IsServerProcessRunning provides a mock function with given fields: app -func (_m *ProcessChecker) IsServerProcessRunning(app *application.Avalanche) (bool, error) { +func (_m *ProcessChecker) IsServerProcessRunning(app *application.Avalanche, _ string) (bool, error) { ret := _m.Called(app) if len(ret) == 0 { diff --git a/pkg/application/app.go b/pkg/application/app.go index 22dc227c1..5bb70ca33 100644 --- a/pkg/application/app.go +++ b/pkg/application/app.go @@ -689,6 +689,13 @@ func (app *Avalanche) LoadClustersConfig() (models.ClustersConfig, error) { return models.ClustersConfig{}, fmt.Errorf("unsupported clusters config version %s", v) } +func (app *Avalanche) GetClustersConfig() (models.ClustersConfig, error) { + if app.ClustersConfigExists() { + return app.LoadClustersConfig() + } + return models.ClustersConfig{}, nil +} + func (app *Avalanche) WriteClustersConfigFile(clustersConfig *models.ClustersConfig) error { clustersConfigPath := app.GetClustersConfigPath() if err := os.MkdirAll(filepath.Dir(clustersConfigPath), constants.DefaultPerms755); err != nil { @@ -787,13 +794,9 @@ func (app *Avalanche) SetupMonitoringEnv() error { } func (app *Avalanche) ClusterExists(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 diff --git a/pkg/subnet/local_test.go b/pkg/subnet/local_test.go index e136286ba..8f3f159c4 100644 --- a/pkg/subnet/local_test.go +++ b/pkg/subnet/local_test.go @@ -143,7 +143,7 @@ func TestDeployToLocal(t *testing.T) { icmSpec := ICMSpec{ SkipICMDeploy: true, } - deployInfo, err := testDeployer.DeployToLocalNetwork(testChainName, testGenesis.Name(), icmSpec, "") + deployInfo, err := testDeployer.DeployToLocalNetwork(testChainName, testGenesis.Name(), icmSpec, "", "") require.NoError(err) require.Equal(testSubnetID2, deployInfo.SubnetID.String()) require.Equal(testBlockChainID2, deployInfo.BlockchainID.String())