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
4 changes: 3 additions & 1 deletion cmd/goal/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ var networkTemplateFile string
var startNode string
var noImportKeys bool
var noClean bool
var devModeOverride bool

func init() {
networkCmd.AddCommand(networkCreateCmd)
Expand All @@ -46,6 +47,7 @@ func init() {
networkCreateCmd.MarkFlagRequired("template")
networkCreateCmd.Flags().BoolVarP(&noImportKeys, "noimportkeys", "K", false, "Do not import root keys when creating the network (by default will import)")
networkCreateCmd.Flags().BoolVar(&noClean, "noclean", false, "Prevents auto-cleanup on error - for diagnosing problems")
networkCreateCmd.Flags().BoolVar(&devModeOverride, "devMode", false, "Forces the configuration to enable DevMode, returns an error if the template is not compatible with DevMode.")

networkStartCmd.Flags().StringVarP(&startNode, "node", "n", "", "Specify the name of a specific node to start")

Expand Down Expand Up @@ -101,7 +103,7 @@ var networkCreateCmd = &cobra.Command{
consensus, _ = config.PreloadConfigurableConsensusProtocols(dataDir)
}

network, err := netdeploy.CreateNetworkFromTemplate(networkName, networkRootDir, networkTemplateFile, binDir, !noImportKeys, nil, consensus)
network, err := netdeploy.CreateNetworkFromTemplate(networkName, networkRootDir, networkTemplateFile, binDir, !noImportKeys, nil, consensus, devModeOverride)
if err != nil {
if noClean {
reportInfof(" ** failed ** - Preserving network rootdir '%s'", networkRootDir)
Expand Down
8 changes: 7 additions & 1 deletion netdeploy/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ type Network struct {

// CreateNetworkFromTemplate uses the specified template to deploy a new private network
// under the specified root directory.
func CreateNetworkFromTemplate(name, rootDir, templateFile, binDir string, importKeys bool, nodeExitCallback nodecontrol.AlgodExitErrorCallback, consensus config.ConsensusProtocols) (Network, error) {
func CreateNetworkFromTemplate(name, rootDir, templateFile, binDir string, importKeys bool, nodeExitCallback nodecontrol.AlgodExitErrorCallback, consensus config.ConsensusProtocols, overrideDevMode bool) (Network, error) {
n := Network{
rootDir: rootDir,
nodeExitCallback: nodeExitCallback,
Expand All @@ -69,6 +69,12 @@ func CreateNetworkFromTemplate(name, rootDir, templateFile, binDir string, impor

template, err := loadTemplate(templateFile)
if err == nil {
if overrideDevMode {
template.Genesis.DevMode = true
if len(template.Nodes) > 0 {
template.Nodes[0].IsRelay = false
}
}
err = template.Validate()
}
if err != nil {
Expand Down
5 changes: 5 additions & 0 deletions netdeploy/networkTemplate.go
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,11 @@ func (t NetworkTemplate) Validate() error {
if len(t.Nodes) > 1 && countRelayNodes(t.Nodes) == 0 {
return fmt.Errorf("invalid template: at least one relay is required when more than a single node presents")
}

if t.Genesis.DevMode && len(t.Nodes) != 1 {
return fmt.Errorf("invalid template: DevMode should only have a single node")
}

return nil
}

Expand Down
2 changes: 1 addition & 1 deletion test/framework/fixtures/libgoalFixture.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ func (f *LibGoalFixture) setup(test TestingTB, testName string, templateFile str
os.RemoveAll(f.rootDir)
templateFile = filepath.Join(f.testDataDir, templateFile)
importKeys := false // Don't automatically import root keys when creating folders, we'll import on-demand
network, err := netdeploy.CreateNetworkFromTemplate("test", f.rootDir, templateFile, f.binDir, importKeys, f.nodeExitWithError, f.consensus)
network, err := netdeploy.CreateNetworkFromTemplate("test", f.rootDir, templateFile, f.binDir, importKeys, f.nodeExitWithError, f.consensus, false)
f.failOnError(err, "CreateNetworkFromTemplate failed: %v")
f.network = network

Expand Down