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
Changes from 1 commit
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
Next Next commit
add checks for local cluster
minor refactoring
arturrez committed Oct 11, 2024
commit b67bf975ae48e92838aa1f632877da2c86a89ee1
7 changes: 7 additions & 0 deletions cmd/nodecmd/add_dashboard.go
Original file line number Diff line number Diff line change
@@ -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
36 changes: 13 additions & 23 deletions cmd/nodecmd/create.go
Original file line number Diff line number Diff line change
@@ -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)
@@ -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)
27 changes: 10 additions & 17 deletions cmd/nodecmd/create_gcp.go
Original file line number Diff line number Diff line change
@@ -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
7 changes: 5 additions & 2 deletions cmd/nodecmd/deploy.go
Original file line number Diff line number Diff line change
@@ -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))
48 changes: 19 additions & 29 deletions cmd/nodecmd/destroy.go
Original file line number Diff line number Diff line change
@@ -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(clusterName, "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
11 changes: 5 additions & 6 deletions cmd/nodecmd/import.go
Original file line number Diff line number Diff line change
@@ -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 {
11 changes: 3 additions & 8 deletions cmd/nodecmd/list.go
Original file line number Diff line number Diff line change
@@ -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"
@@ -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.")
@@ -59,7 +54,7 @@
}
nodeIDs = append(nodeIDs, nodeIDStr)
}
if clusterConf.External {

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

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())
16 changes: 7 additions & 9 deletions cmd/nodecmd/load_test_start.go
Original file line number Diff line number Diff line change
@@ -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
30 changes: 9 additions & 21 deletions cmd/nodecmd/load_test_stop.go
Original file line number Diff line number Diff line change
@@ -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 {
16 changes: 9 additions & 7 deletions cmd/nodecmd/local.go
Original file line number Diff line number Diff line change
@@ -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"
)
@@ -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

GitHub Actions / Lint

Error return value is not checked (errcheck)
return fmt.Errorf("failed to start local avalanchego: %w", err)
}
ux.SpinComplete(spinner)
@@ -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

GitHub Actions / Lint

Error return value is not checked (errcheck)

rootDir := app.GetLocalDir(clusterName)
if err := os.RemoveAll(rootDir); err != nil {
@@ -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
@@ -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
@@ -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
}

Loading

Unchanged files with check annotations Beta

icmSpec := ICMSpec{
SkipICMDeploy: true,
}
deployInfo, err := testDeployer.DeployToLocalNetwork(testChainName, testGenesis.Name(), icmSpec, "")

Check failure on line 146 in pkg/subnet/local_test.go

GitHub Actions / Golang Unit Tests (macos-14)

not enough arguments in call to testDeployer.DeployToLocalNetwork

Check failure on line 146 in pkg/subnet/local_test.go

GitHub Actions / Golang Unit Tests (ubuntu-22.04)

not enough arguments in call to testDeployer.DeployToLocalNetwork

Check failure on line 146 in pkg/subnet/local_test.go

GitHub Actions / Lint

not enough arguments in call to testDeployer.DeployToLocalNetwork
require.NoError(err)
require.Equal(testSubnetID2, deployInfo.SubnetID.String())
require.Equal(testBlockChainID2, deployInfo.BlockchainID.String())
// Copyright (C) 2022, Ava Labs, Inc. All rights reserved.

Check failure on line 1 in pkg/subnet/deploy_status.go

GitHub Actions / Lint

: # github.com/ava-labs/avalanche-cli/pkg/subnet [github.com/ava-labs/avalanche-cli/pkg/subnet.test]
// See the file LICENSE for licensing terms.
package subnet
func CallAddValidator(
deployer *subnet.PublicDeployer,
network models.Network,
kc *keychain.Keychain,

Check warning on line 148 in cmd/blockchaincmd/add_validator.go

GitHub Actions / Lint

unused-parameter: parameter 'kc' seems to be unused, consider removing or renaming it as _ (revive)
useLedgerSetting bool,
blockchainName string,
nodeIDStrFormat string,
}
// TODO: implement getting validator manager controller address
//kcKeys, err := kc.PChainFormattedStrAddresses()

Check failure on line 195 in cmd/blockchaincmd/add_validator.go

GitHub Actions / Lint

commentFormatting: put a space between `//` and comment text (gocritic)
//if err != nil {
// return err
//}
return nil
}
func generateWarpMessageAddValidator(subnetID ids.ID, nodeID ids.NodeID, weight uint64, blsPublicKey string, expiry uint64) (warpPlatformVM.Message, error) {

Check warning on line 264 in cmd/blockchaincmd/add_validator.go

GitHub Actions / Lint

unused-parameter: parameter 'subnetID' seems to be unused, consider removing or renaming it as _ (revive)
return warpPlatformVM.Message{}, nil
}
}
deployer.CleanCacheWallet()
managerAddress := common.HexToAddress(validatormanager.ValidatorContractAddress)
isFullySigned, ConvertL1TxID, tx, remainingSubnetAuthKeys, err := deployer.ConvertL1(

Check warning on line 666 in cmd/blockchaincmd/deploy.go

GitHub Actions / Lint

unexported-naming: the symbol ConvertL1TxID is local, its name should start with a lowercase letter (revive)
controlKeys,
subnetAuthKeys,
subnetID,
// TODO: implement getMinNonce
// getMinNonce gets minNonce associated with the validationID from P-Chain
func getMinNonce(validationID [32]byte) (uint64, error) {

Check warning on line 187 in cmd/blockchaincmd/remove_validator.go

GitHub Actions / Lint

unused-parameter: parameter 'validationID' seems to be unused, consider removing or renaming it as _ (revive)
return 0, nil
}
// TODO: implement getValidationID
// get validation ID for a node from P Chain
func getValidationID(nodeID ids.NodeID) [32]byte {

Check warning on line 193 in cmd/blockchaincmd/remove_validator.go

GitHub Actions / Lint

unused-parameter: parameter 'nodeID' seems to be unused, consider removing or renaming it as _ (revive)
return [32]byte{}
}
// TODO: implement generateWarpMessageRemoveValidator
func generateWarpMessageRemoveValidator(validationID [32]byte, nonce, weight uint64) (warpPlatformVM.Message, error) {

Check warning on line 198 in cmd/blockchaincmd/remove_validator.go

GitHub Actions / Lint

unused-parameter: parameter 'validationID' seems to be unused, consider removing or renaming it as _ (revive)
return warpPlatformVM.Message{}, nil
}