diff --git a/.changelog/5537.bugfix.md b/.changelog/5537.bugfix.md new file mode 100644 index 00000000000..7d1a5fbec25 --- /dev/null +++ b/.changelog/5537.bugfix.md @@ -0,0 +1 @@ +Include the mode of the node in control status output diff --git a/go/control/api/api.go b/go/control/api/api.go index 87af985b661..6cd27d74e56 100644 --- a/go/control/api/api.go +++ b/go/control/api/api.go @@ -11,6 +11,7 @@ import ( "github.com/oasisprotocol/oasis-core/go/common/crypto/signature" "github.com/oasisprotocol/oasis-core/go/common/errors" "github.com/oasisprotocol/oasis-core/go/common/node" + "github.com/oasisprotocol/oasis-core/go/config" consensus "github.com/oasisprotocol/oasis-core/go/consensus/api" p2p "github.com/oasisprotocol/oasis-core/go/p2p/api" registry "github.com/oasisprotocol/oasis-core/go/registry/api" @@ -66,6 +67,9 @@ type Status struct { // SoftwareVersion is the oasis-node software version. SoftwareVersion string `json:"software_version"` + // Mode is the node mode. + Mode config.NodeMode `json:"mode"` + // Debug is the oasis-node debug status. Debug *DebugStatus `json:"debug,omitempty"` diff --git a/go/oasis-node/cmd/node/node_control.go b/go/oasis-node/cmd/node/node_control.go index ce655bec45b..d9d57cecf34 100644 --- a/go/oasis-node/cmd/node/node_control.go +++ b/go/oasis-node/cmd/node/node_control.go @@ -159,6 +159,7 @@ func (n *Node) GetStatus(ctx context.Context) (*control.Status, error) { return &control.Status{ SoftwareVersion: version.SoftwareVersion, + Mode: config.GlobalConfig.Mode, Debug: ds, Identity: ident, Consensus: cs, diff --git a/go/oasis-node/cmd/node/seed_control.go b/go/oasis-node/cmd/node/seed_control.go index 9bfeb843822..ccb23c96c33 100644 --- a/go/oasis-node/cmd/node/seed_control.go +++ b/go/oasis-node/cmd/node/seed_control.go @@ -4,6 +4,7 @@ import ( "context" "github.com/oasisprotocol/oasis-core/go/common/version" + "github.com/oasisprotocol/oasis-core/go/config" control "github.com/oasisprotocol/oasis-core/go/control/api" upgrade "github.com/oasisprotocol/oasis-core/go/upgrade/api" ) @@ -75,6 +76,7 @@ func (n *SeedNode) GetStatus(_ context.Context) (*control.Status, error) { return &control.Status{ SoftwareVersion: version.SoftwareVersion, + Mode: config.GlobalConfig.Mode, Identity: identity, Seed: &seedStatus, }, nil diff --git a/go/oasis-test-runner/scenario/e2e/runtime/archive_api.go b/go/oasis-test-runner/scenario/e2e/runtime/archive_api.go index 2610b53d9d0..85e13b7abe9 100644 --- a/go/oasis-test-runner/scenario/e2e/runtime/archive_api.go +++ b/go/oasis-test-runner/scenario/e2e/runtime/archive_api.go @@ -8,6 +8,7 @@ import ( beacon "github.com/oasisprotocol/oasis-core/go/beacon/api" "github.com/oasisprotocol/oasis-core/go/common/pubsub" + "github.com/oasisprotocol/oasis-core/go/config" consensusAPI "github.com/oasisprotocol/oasis-core/go/consensus/api" "github.com/oasisprotocol/oasis-core/go/consensus/api/transaction" "github.com/oasisprotocol/oasis-core/go/oasis-test-runner/env" @@ -86,6 +87,9 @@ func (sc *archiveAPI) testArchiveAPI(ctx context.Context, archiveCtrl *oasis.Con if err != nil { return fmt.Errorf("failed to get status for node: %w", err) } + if status.Mode != config.ModeArchive { + return fmt.Errorf("archive node should report its mode, got: %v", status.Mode) + } if !status.Consensus.Features.Has(consensusAPI.FeatureArchiveNode) { return fmt.Errorf("archive node lacks archive feature, got: '%s'", status.Consensus.Features.String()) } diff --git a/go/oasis-test-runner/scenario/e2e/seed_api.go b/go/oasis-test-runner/scenario/e2e/seed_api.go index 8343735e2f0..9d65b8bbfdd 100644 --- a/go/oasis-test-runner/scenario/e2e/seed_api.go +++ b/go/oasis-test-runner/scenario/e2e/seed_api.go @@ -6,6 +6,7 @@ import ( "fmt" "reflect" + "github.com/oasisprotocol/oasis-core/go/config" control "github.com/oasisprotocol/oasis-core/go/control/api" "github.com/oasisprotocol/oasis-core/go/oasis-test-runner/env" "github.com/oasisprotocol/oasis-core/go/oasis-test-runner/oasis" @@ -118,6 +119,9 @@ func (sc *seedAPI) Run(ctx context.Context, _ *env.Env) error { // nolint: gocyc if status.SoftwareVersion == "" { return fmt.Errorf("seed node should report software version") } + if status.Mode != config.ModeSeed { + return fmt.Errorf("seed node should report its mode, got: %v", status.Mode) + } if reflect.DeepEqual(status.Identity, control.IdentityStatus{}) { return fmt.Errorf("seed node should report its identity") }