Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
1 change: 1 addition & 0 deletions pkg/constants/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ var (
ErrNoBlockchainID = errors.New("\n\nNo blockchainID found. To resolve this:\n- Use 'avalanche blockchain deploy' to deploy the blockchain and generate a blockchainID.\n- Or use 'avalanche blockchain import' to import an existing configuration.\n") //nolint:stylecheck
ErrNoSubnetID = errors.New("\n\nNo subnetID found. To resolve this:\n- Use 'avalanche blockchain deploy' to create the subnet and generate a subnetID.\n- Or use 'avalanche blockchain import' to import an existing configuration.\n") //nolint:stylecheck
ErrInvalidValidatorManagerAddress = errors.New("invalid validator manager address")
ErrKeyNotFoundOnMap = errors.New("key not found on map")
)
38 changes: 26 additions & 12 deletions pkg/localnet/migration.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ package localnet
import (
"encoding/base64"
"encoding/json"
"errors"
"fmt"
"os"
"path/filepath"
Expand All @@ -16,6 +17,7 @@ import (
"github.com/ava-labs/avalanche-cli/pkg/interchain/relayer"
"github.com/ava-labs/avalanche-cli/pkg/models"
"github.com/ava-labs/avalanche-cli/pkg/utils"
sdkutils "github.com/ava-labs/avalanche-cli/sdk/utils"
"github.com/ava-labs/avalanche-network-runner/network"
avagoconfig "github.com/ava-labs/avalanchego/config"
"github.com/ava-labs/avalanchego/ids"
Expand Down Expand Up @@ -211,7 +213,7 @@ func migrateCluster(
return fmt.Errorf("failure reading legacy local network conf: %w", err)
}
trackSubnetsStr, err = utils.GetJSONKey[string](nodeConfig.Flags, avagoconfig.TrackSubnetsKey)
if err != nil {
if err != nil && !errors.Is(err, constants.ErrKeyNotFoundOnMap) {
return fmt.Errorf("failure reading legacy local network conf: %w", err)
}
nodeSettings = append(nodeSettings, NodeSetting{
Expand All @@ -222,9 +224,13 @@ func migrateCluster(
StakingPort: uint64(stakingPort),
})
}
trackedSubnets, err := utils.MapWithError(strings.Split(trackSubnetsStr, ","), ids.FromString)
if err != nil {
return err
var trackedSubnets []ids.ID
trackSubnetsStr = strings.TrimSpace(trackSubnetsStr)
if trackSubnetsStr != "" {
trackedSubnets, err = utils.MapWithError(strings.Split(trackSubnetsStr, ","), ids.FromString)
if err != nil {
return err
}
}
binPath := config.BinaryPath
// local connection info
Expand Down Expand Up @@ -286,23 +292,31 @@ func migrateCluster(
for i, node := range network.Nodes {
sourceDir := filepath.Join(anrDir, config.NodeConfigs[i].Name, "db")
targetDir := filepath.Join(networkDir, node.NodeID.String(), "db")
if err := dircopy.Copy(sourceDir, targetDir); err != nil {
return fmt.Errorf("failure migrating data dir %s into %s: %w", sourceDir, targetDir, err)
if sdkutils.DirExists(sourceDir) {
if err := dircopy.Copy(sourceDir, targetDir); err != nil {
return fmt.Errorf("failure migrating data dir %s into %s: %w", sourceDir, targetDir, err)
}
}
sourceDir = filepath.Join(anrDir, config.NodeConfigs[i].Name, "chainData")
targetDir = filepath.Join(networkDir, node.NodeID.String(), "chainData")
if err := dircopy.Copy(sourceDir, targetDir); err != nil {
return fmt.Errorf("failure migrating data dir %s into %s: %w", sourceDir, targetDir, err)
if sdkutils.DirExists(sourceDir) {
if err := dircopy.Copy(sourceDir, targetDir); err != nil {
return fmt.Errorf("failure migrating data dir %s into %s: %w", sourceDir, targetDir, err)
}
}
sourceDir = filepath.Join(anrDir, config.NodeConfigs[i].Name, "plugins")
targetDir = filepath.Join(networkDir, "plugins")
if err := dircopy.Copy(sourceDir, targetDir); err != nil {
return fmt.Errorf("failure migrating plugindir dir %s into %s: %w", sourceDir, targetDir, err)
if sdkutils.DirExists(sourceDir) {
if err := dircopy.Copy(sourceDir, targetDir); err != nil {
return fmt.Errorf("failure migrating plugindir dir %s into %s: %w", sourceDir, targetDir, err)
}
}
sourceDir = filepath.Join(anrDir, config.NodeConfigs[i].Name, "configs", "chains")
targetDir = filepath.Join(networkDir, node.NodeID.String(), "configs", "chains")
if err := dircopy.Copy(sourceDir, targetDir); err != nil {
return fmt.Errorf("failure migrating chain configs dir %s into %s: %w", sourceDir, targetDir, err)
if sdkutils.DirExists(sourceDir) {
if err := dircopy.Copy(sourceDir, targetDir); err != nil {
return fmt.Errorf("failure migrating chain configs dir %s into %s: %w", sourceDir, targetDir, err)
}
}
}
return os.RemoveAll(anrDir)
Expand Down
2 changes: 1 addition & 1 deletion pkg/utils/json.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ func SetJSONKey(jsonBody string, k string, v interface{}) (string, error) {
func GetJSONKey[T any](jsonMap map[string]interface{}, k string) (T, error) {
intf, ok := jsonMap[k]
if !ok {
return *new(T), fmt.Errorf("%s not found on map", k)
return *new(T), fmt.Errorf("%w: %s", constants.ErrKeyNotFoundOnMap, k)
}
v, ok := intf.(T)
if !ok {
Expand Down
Loading