rpcpb: gate rpc.pb.go behind -tags grpc, hand-rolled types.go is default

Per the project rule: ZAP internal, no google.golang.org/protobuf on the
wire OR in the netrunner rpcpb package by default.

rpcpb/rpc.pb.go: //go:build grpc — protoc-gen-go output stays available
behind the legacy tag for external integrations that still want the
proto Go types.

rpcpb/types.go: //go:build !grpc — hand-written plain Go structs for
every Request/Response/spec/info type. Same names, same field types,
same json: tags so JSON wire compat with rpc.pb.go is preserved. Plus
the proto-style GetX() helpers callers expect.

Default-build dep graph for rpcpb is now SINGLE-FILE: rpcpb/types.go,
zero google.golang.org/protobuf, zero google.golang.org/grpc.

scripts/check-no-grpc.sh: CI gate. Walks the default-tag dep graph
and fails non-zero if google.golang.org/grpc or grpc-ecosystem/grpc-gateway
reappears. Wire this into CI to make the rule stick.
This commit is contained in:
Hanzo AI
2026-05-20 21:27:51 -07:00
parent 301a8e2601
commit c0d55e7195
3 changed files with 1023 additions and 0 deletions
+5
View File
@@ -1,8 +1,13 @@
//go:build grpc
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.11
// protoc (unknown)
// source: rpcpb/rpc.proto
//
// Legacy gRPC-tagged build only. Default builds use the hand-rolled types
// in rpcpb/types.go — no google.golang.org/protobuf on the dep graph.
package rpcpb
+993
View File
@@ -0,0 +1,993 @@
// Copyright (C) 2021-2026, Lux Industries Inc. All rights reserved.
// SPDX-License-Identifier: BSD-3-Clause
//go:build !grpc
// Package rpcpb holds the netrunner control-plane request/response types.
//
// Default build: hand-rolled plain Go structs with json: tags. No
// google.golang.org/protobuf, no protoimpl reflection — these are pure
// data containers that ride inside a ZAP envelope (see netrunner/zaprpc).
//
// Legacy build (-tags grpc): rpc.pb.go provides the protoc-gen-go version
// of the same names. Either file compiles, never both.
package rpcpb
// =============================================================================
// Cluster + shared info
// =============================================================================
// ClusterInfo describes a running netrunner cluster.
type ClusterInfo struct {
NodeNames []string `json:"nodeNames,omitempty"`
NodeInfos map[string]*NodeInfo `json:"nodeInfos,omitempty"`
Pid int32 `json:"pid,omitempty"`
RootDataDir string `json:"rootDataDir,omitempty"`
Healthy bool `json:"healthy,omitempty"`
AttachedPeerInfos map[string]*ListOfAttachedPeerInfo `json:"attachedPeerInfos,omitempty"`
CustomChainsHealthy bool `json:"customChainsHealthy,omitempty"`
CustomChains map[string]*CustomChainInfo `json:"customChains,omitempty"`
Chains map[string]*ChainInfo `json:"chains,omitempty"`
}
func (m *ClusterInfo) GetClusterInfo() *ClusterInfo { return m }
func (m *ClusterInfo) GetNodeNames() []string {
if m == nil {
return nil
}
return m.NodeNames
}
func (m *ClusterInfo) GetNodeInfos() map[string]*NodeInfo {
if m == nil {
return nil
}
return m.NodeInfos
}
func (m *ClusterInfo) GetPid() int32 {
if m == nil {
return 0
}
return m.Pid
}
func (m *ClusterInfo) GetRootDataDir() string {
if m == nil {
return ""
}
return m.RootDataDir
}
func (m *ClusterInfo) GetHealthy() bool {
if m == nil {
return false
}
return m.Healthy
}
func (m *ClusterInfo) GetAttachedPeerInfos() map[string]*ListOfAttachedPeerInfo {
if m == nil {
return nil
}
return m.AttachedPeerInfos
}
func (m *ClusterInfo) GetCustomChainsHealthy() bool {
if m == nil {
return false
}
return m.CustomChainsHealthy
}
func (m *ClusterInfo) GetCustomChains() map[string]*CustomChainInfo {
if m == nil {
return nil
}
return m.CustomChains
}
func (m *ClusterInfo) GetChains() map[string]*ChainInfo {
if m == nil {
return nil
}
return m.Chains
}
// NodeInfo describes a single node inside a cluster.
type NodeInfo struct {
Name string `json:"name,omitempty"`
ExecPath string `json:"execPath,omitempty"`
Uri string `json:"uri,omitempty"`
Id string `json:"id,omitempty"`
LogDir string `json:"logDir,omitempty"`
DbDir string `json:"dbDir,omitempty"`
PluginDir string `json:"pluginDir,omitempty"`
WhitelistedChains string `json:"whitelistedChains,omitempty"`
Config []byte `json:"config,omitempty"`
Paused bool `json:"paused,omitempty"`
}
func (m *NodeInfo) GetName() string {
if m == nil {
return ""
}
return m.Name
}
func (m *NodeInfo) GetExecPath() string {
if m == nil {
return ""
}
return m.ExecPath
}
func (m *NodeInfo) GetUri() string {
if m == nil {
return ""
}
return m.Uri
}
func (m *NodeInfo) GetId() string {
if m == nil {
return ""
}
return m.Id
}
func (m *NodeInfo) GetLogDir() string {
if m == nil {
return ""
}
return m.LogDir
}
func (m *NodeInfo) GetDbDir() string {
if m == nil {
return ""
}
return m.DbDir
}
func (m *NodeInfo) GetPluginDir() string {
if m == nil {
return ""
}
return m.PluginDir
}
func (m *NodeInfo) GetWhitelistedChains() string {
if m == nil {
return ""
}
return m.WhitelistedChains
}
func (m *NodeInfo) GetConfig() []byte {
if m == nil {
return nil
}
return m.Config
}
func (m *NodeInfo) GetPaused() bool {
if m == nil {
return false
}
return m.Paused
}
type ChainInfo struct {
IsElastic bool `json:"isElastic,omitempty"`
ElasticChainId string `json:"elasticChainId,omitempty"`
ChainParticipants *ChainParticipants `json:"chainParticipants,omitempty"`
}
func (m *ChainInfo) GetIsElastic() bool {
if m == nil {
return false
}
return m.IsElastic
}
func (m *ChainInfo) GetElasticChainId() string {
if m == nil {
return ""
}
return m.ElasticChainId
}
func (m *ChainInfo) GetChainParticipants() *ChainParticipants {
if m == nil {
return nil
}
return m.ChainParticipants
}
type ChainParticipants struct {
NodeNames []string `json:"nodeNames,omitempty"`
}
func (m *ChainParticipants) GetNodeNames() []string {
if m == nil {
return nil
}
return m.NodeNames
}
type CustomChainInfo struct {
ChainName string `json:"chainName,omitempty"`
VmId string `json:"vmId,omitempty"`
PchainId string `json:"pchainId,omitempty"`
BlockchainId string `json:"blockchainId,omitempty"`
}
func (m *CustomChainInfo) GetChainName() string {
if m == nil {
return ""
}
return m.ChainName
}
func (m *CustomChainInfo) GetVmId() string {
if m == nil {
return ""
}
return m.VmId
}
func (m *CustomChainInfo) GetPchainId() string {
if m == nil {
return ""
}
return m.PchainId
}
func (m *CustomChainInfo) GetBlockchainId() string {
if m == nil {
return ""
}
return m.BlockchainId
}
type AttachedPeerInfo struct {
Id string `json:"id,omitempty"`
}
func (m *AttachedPeerInfo) GetId() string {
if m == nil {
return ""
}
return m.Id
}
type ListOfAttachedPeerInfo struct {
Peers []*AttachedPeerInfo `json:"peers,omitempty"`
}
func (m *ListOfAttachedPeerInfo) GetPeers() []*AttachedPeerInfo {
if m == nil {
return nil
}
return m.Peers
}
type NetworkHealth struct {
NetworkName string `json:"networkName,omitempty"`
NetworkId uint32 `json:"networkId,omitempty"`
Healthy bool `json:"healthy,omitempty"`
HealthyNodes []string `json:"healthyNodes,omitempty"`
UnhealthyNodes []string `json:"unhealthyNodes,omitempty"`
}
type NetworkStatus struct {
NetworkName string `json:"networkName,omitempty"`
NetworkId uint32 `json:"networkId,omitempty"`
Status string `json:"status,omitempty"`
NumNodes uint32 `json:"numNodes,omitempty"`
Nodes []*NodeInfo `json:"nodes,omitempty"`
Chains []*ChainInfo `json:"chains,omitempty"`
}
// =============================================================================
// Specs
// =============================================================================
type ChainSpec struct {
Participants []string `json:"participants,omitempty"`
ChainConfigFile string `json:"chainConfigFile,omitempty"`
}
func (m *ChainSpec) GetParticipants() []string {
if m == nil {
return nil
}
return m.Participants
}
func (m *ChainSpec) GetChainConfigFile() string {
if m == nil {
return ""
}
return m.ChainConfigFile
}
type BlockchainSpec struct {
VmName string `json:"vmName,omitempty"`
Genesis string `json:"genesis,omitempty"`
ChainId *string `json:"chainId,omitempty"`
ChainSpec *ChainSpec `json:"chainSpec,omitempty"`
ChainConfig string `json:"chainConfig,omitempty"`
NetworkUpgrade string `json:"networkUpgrade,omitempty"`
BlockchainAlias string `json:"blockchainAlias,omitempty"`
PerNodeChainConfig string `json:"perNodeChainConfig,omitempty"`
}
func (m *BlockchainSpec) GetVmName() string {
if m == nil {
return ""
}
return m.VmName
}
func (m *BlockchainSpec) GetGenesis() string {
if m == nil {
return ""
}
return m.Genesis
}
func (m *BlockchainSpec) GetChainId() string {
if m == nil || m.ChainId == nil {
return ""
}
return *m.ChainId
}
func (m *BlockchainSpec) GetChainSpec() *ChainSpec {
if m == nil {
return nil
}
return m.ChainSpec
}
func (m *BlockchainSpec) GetChainConfig() string {
if m == nil {
return ""
}
return m.ChainConfig
}
func (m *BlockchainSpec) GetNetworkUpgrade() string {
if m == nil {
return ""
}
return m.NetworkUpgrade
}
func (m *BlockchainSpec) GetBlockchainAlias() string {
if m == nil {
return ""
}
return m.BlockchainAlias
}
func (m *BlockchainSpec) GetPerNodeChainConfig() string {
if m == nil {
return ""
}
return m.PerNodeChainConfig
}
type ElasticChainSpec struct {
ChainId string `json:"chainId,omitempty"`
AssetName string `json:"assetName,omitempty"`
AssetSymbol string `json:"assetSymbol,omitempty"`
InitialSupply uint64 `json:"initialSupply,omitempty"`
MaxSupply uint64 `json:"maxSupply,omitempty"`
MinConsumptionRate uint64 `json:"minConsumptionRate,omitempty"`
MaxConsumptionRate uint64 `json:"maxConsumptionRate,omitempty"`
MinValidatorStake uint64 `json:"minValidatorStake,omitempty"`
MaxValidatorStake uint64 `json:"maxValidatorStake,omitempty"`
MinStakeDuration uint64 `json:"minStakeDuration,omitempty"`
MaxStakeDuration uint64 `json:"maxStakeDuration,omitempty"`
MinDelegationFee uint32 `json:"minDelegationFee,omitempty"`
MinDelegatorStake uint64 `json:"minDelegatorStake,omitempty"`
MaxValidatorWeightFactor uint32 `json:"maxValidatorWeightFactor,omitempty"`
UptimeRequirement uint32 `json:"uptimeRequirement,omitempty"`
}
func (m *ElasticChainSpec) GetChainId() string {
if m == nil {
return ""
}
return m.ChainId
}
type PermissionlessValidatorSpec struct {
ChainId string `json:"chainId,omitempty"`
NodeName string `json:"nodeName,omitempty"`
StakedTokenAmount uint64 `json:"stakedTokenAmount,omitempty"`
AssetId string `json:"assetId,omitempty"`
StartTime string `json:"startTime,omitempty"`
StakeDuration uint64 `json:"stakeDuration,omitempty"`
}
type RemoveChainValidatorSpec struct {
ChainId string `json:"chainId,omitempty"`
NodeNames []string `json:"nodeNames,omitempty"`
}
func (m *RemoveChainValidatorSpec) GetChainId() string {
if m == nil {
return ""
}
return m.ChainId
}
func (m *RemoveChainValidatorSpec) GetNodeNames() []string {
if m == nil {
return nil
}
return m.NodeNames
}
// =============================================================================
// Ping / RPCVersion
// =============================================================================
type PingRequest struct{}
type PingResponse struct {
Pid int32 `json:"pid,omitempty"`
}
func (m *PingResponse) GetPid() int32 {
if m == nil {
return 0
}
return m.Pid
}
type RPCVersionRequest struct{}
type RPCVersionResponse struct {
Version uint32 `json:"version,omitempty"`
}
func (m *RPCVersionResponse) GetVersion() uint32 {
if m == nil {
return 0
}
return m.Version
}
// =============================================================================
// Start
// =============================================================================
type StartRequest struct {
NetworkName string `json:"networkName,omitempty"`
NodeType string `json:"nodeType,omitempty"`
ExecPath string `json:"execPath,omitempty"`
NumNodes *uint32 `json:"numNodes,omitempty"`
WhitelistedChains *string `json:"whitelistedChains,omitempty"`
GlobalNodeConfig *string `json:"globalNodeConfig,omitempty"`
RootDataDir *string `json:"rootDataDir,omitempty"`
PluginDir string `json:"pluginDir,omitempty"`
BlockchainSpecs []*BlockchainSpec `json:"blockchainSpecs,omitempty"`
CustomNodeConfigs map[string]string `json:"customNodeConfigs,omitempty"`
ChainConfigs map[string]string `json:"chainConfigs,omitempty"`
UpgradeConfigs map[string]string `json:"upgradeConfigs,omitempty"`
ReassignPortsIfUsed *bool `json:"reassignPortsIfUsed,omitempty"`
DynamicPorts *bool `json:"dynamicPorts,omitempty"`
ChainConfigFiles map[string]string `json:"chainConfigFiles,omitempty"`
}
func (m *StartRequest) GetNetworkName() string {
if m == nil {
return ""
}
return m.NetworkName
}
func (m *StartRequest) GetNodeType() string {
if m == nil {
return ""
}
return m.NodeType
}
func (m *StartRequest) GetExecPath() string {
if m == nil {
return ""
}
return m.ExecPath
}
func (m *StartRequest) GetNumNodes() uint32 {
if m == nil || m.NumNodes == nil {
return 0
}
return *m.NumNodes
}
func (m *StartRequest) GetWhitelistedChains() string {
if m == nil || m.WhitelistedChains == nil {
return ""
}
return *m.WhitelistedChains
}
func (m *StartRequest) GetGlobalNodeConfig() string {
if m == nil || m.GlobalNodeConfig == nil {
return ""
}
return *m.GlobalNodeConfig
}
func (m *StartRequest) GetRootDataDir() string {
if m == nil || m.RootDataDir == nil {
return ""
}
return *m.RootDataDir
}
func (m *StartRequest) GetPluginDir() string {
if m == nil {
return ""
}
return m.PluginDir
}
func (m *StartRequest) GetBlockchainSpecs() []*BlockchainSpec {
if m == nil {
return nil
}
return m.BlockchainSpecs
}
func (m *StartRequest) GetCustomNodeConfigs() map[string]string {
if m == nil {
return nil
}
return m.CustomNodeConfigs
}
func (m *StartRequest) GetChainConfigs() map[string]string {
if m == nil {
return nil
}
return m.ChainConfigs
}
func (m *StartRequest) GetUpgradeConfigs() map[string]string {
if m == nil {
return nil
}
return m.UpgradeConfigs
}
func (m *StartRequest) GetChainConfigFiles() map[string]string {
if m == nil {
return nil
}
return m.ChainConfigFiles
}
func (m *StartRequest) GetReassignPortsIfUsed() bool {
if m == nil || m.ReassignPortsIfUsed == nil {
return false
}
return *m.ReassignPortsIfUsed
}
func (m *StartRequest) GetDynamicPorts() bool {
if m == nil || m.DynamicPorts == nil {
return false
}
return *m.DynamicPorts
}
type StartResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
ChainIds []string `json:"chainIds,omitempty"`
}
// =============================================================================
// CreateBlockchains / CreateChains
// =============================================================================
type CreateBlockchainsRequest struct {
BlockchainSpecs []*BlockchainSpec `json:"blockchainSpecs,omitempty"`
}
func (m *CreateBlockchainsRequest) GetBlockchainSpecs() []*BlockchainSpec {
if m == nil {
return nil
}
return m.BlockchainSpecs
}
type CreateBlockchainsResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
ChainIds []string `json:"chainIds,omitempty"`
}
type CreateChainsRequest struct {
ChainSpecs []*ChainSpec `json:"chainSpecs,omitempty"`
}
func (m *CreateChainsRequest) GetChainSpecs() []*ChainSpec {
if m == nil {
return nil
}
return m.ChainSpecs
}
type CreateChainsResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
ChainIds []string `json:"chainIds,omitempty"`
}
// =============================================================================
// Elastic chain / validator
// =============================================================================
type TransformElasticChainsRequest struct {
ElasticChainSpec []*ElasticChainSpec `json:"elasticChainSpec,omitempty"`
}
func (m *TransformElasticChainsRequest) GetElasticChainSpec() []*ElasticChainSpec {
if m == nil {
return nil
}
return m.ElasticChainSpec
}
type TransformElasticChainsResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
TxIds []string `json:"txIds,omitempty"`
AssetIds []string `json:"assetIds,omitempty"`
}
type AddPermissionlessValidatorRequest struct {
ValidatorSpec []*PermissionlessValidatorSpec `json:"validatorSpec,omitempty"`
}
func (m *AddPermissionlessValidatorRequest) GetValidatorSpec() []*PermissionlessValidatorSpec {
if m == nil {
return nil
}
return m.ValidatorSpec
}
type AddPermissionlessValidatorResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
}
type RemoveChainValidatorRequest struct {
ValidatorSpec []*RemoveChainValidatorSpec `json:"validatorSpec,omitempty"`
}
func (m *RemoveChainValidatorRequest) GetValidatorSpec() []*RemoveChainValidatorSpec {
if m == nil {
return nil
}
return m.ValidatorSpec
}
type RemoveChainValidatorResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
}
// =============================================================================
// Health / URIs / WaitForHealthy / Status / StreamStatus
// =============================================================================
type HealthRequest struct {
NetworkName *string `json:"networkName,omitempty"`
}
type HealthResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
NetworkHealth *NetworkHealth `json:"networkHealth,omitempty"`
}
type URIsRequest struct{}
type URIsResponse struct {
Uris []string `json:"uris,omitempty"`
}
type WaitForHealthyRequest struct {
NetworkName *string `json:"networkName,omitempty"`
}
type WaitForHealthyResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
}
type StatusRequest struct {
NetworkName *string `json:"networkName,omitempty"`
}
type StatusResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
NetworkStatus *NetworkStatus `json:"networkStatus,omitempty"`
}
type StreamStatusRequest struct {
PushInterval int64 `json:"pushInterval,omitempty"`
}
type StreamStatusResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
}
// =============================================================================
// Node lifecycle: Add/Remove/Restart/Pause/Resume/Stop
// =============================================================================
type AddNodeRequest struct {
Name string `json:"name,omitempty"`
ExecPath string `json:"execPath,omitempty"`
NodeConfig *string `json:"nodeConfig,omitempty"`
ChainConfigs map[string]string `json:"chainConfigs,omitempty"`
UpgradeConfigs map[string]string `json:"upgradeConfigs,omitempty"`
ChainConfigFiles map[string]string `json:"chainConfigFiles,omitempty"`
PluginDir string `json:"pluginDir,omitempty"`
}
func (m *AddNodeRequest) GetName() string {
if m == nil {
return ""
}
return m.Name
}
func (m *AddNodeRequest) GetExecPath() string {
if m == nil {
return ""
}
return m.ExecPath
}
func (m *AddNodeRequest) GetNodeConfig() string {
if m == nil || m.NodeConfig == nil {
return ""
}
return *m.NodeConfig
}
func (m *AddNodeRequest) GetChainConfigs() map[string]string {
if m == nil {
return nil
}
return m.ChainConfigs
}
func (m *AddNodeRequest) GetUpgradeConfigs() map[string]string {
if m == nil {
return nil
}
return m.UpgradeConfigs
}
func (m *AddNodeRequest) GetChainConfigFiles() map[string]string {
if m == nil {
return nil
}
return m.ChainConfigFiles
}
func (m *AddNodeRequest) GetPluginDir() string {
if m == nil {
return ""
}
return m.PluginDir
}
type AddNodeResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
}
type RemoveNodeRequest struct {
Name string `json:"name,omitempty"`
}
type RemoveNodeResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
}
type RestartNodeRequest struct {
Name string `json:"name,omitempty"`
ExecPath *string `json:"execPath,omitempty"`
WhitelistedChains *string `json:"whitelistedChains,omitempty"`
ChainConfigs map[string]string `json:"chainConfigs,omitempty"`
UpgradeConfigs map[string]string `json:"upgradeConfigs,omitempty"`
ChainConfigFiles map[string]string `json:"chainConfigFiles,omitempty"`
PluginDir string `json:"pluginDir,omitempty"`
}
func (m *RestartNodeRequest) GetName() string {
if m == nil {
return ""
}
return m.Name
}
func (m *RestartNodeRequest) GetExecPath() string {
if m == nil || m.ExecPath == nil {
return ""
}
return *m.ExecPath
}
func (m *RestartNodeRequest) GetWhitelistedChains() string {
if m == nil || m.WhitelistedChains == nil {
return ""
}
return *m.WhitelistedChains
}
func (m *RestartNodeRequest) GetChainConfigs() map[string]string {
if m == nil {
return nil
}
return m.ChainConfigs
}
func (m *RestartNodeRequest) GetUpgradeConfigs() map[string]string {
if m == nil {
return nil
}
return m.UpgradeConfigs
}
func (m *RestartNodeRequest) GetChainConfigFiles() map[string]string {
if m == nil {
return nil
}
return m.ChainConfigFiles
}
func (m *RestartNodeRequest) GetPluginDir() string {
if m == nil {
return ""
}
return m.PluginDir
}
type RestartNodeResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
}
type PauseNodeRequest struct {
Name string `json:"name,omitempty"`
}
type PauseNodeResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
}
type ResumeNodeRequest struct {
Name string `json:"name,omitempty"`
}
type ResumeNodeResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
}
type StopRequest struct{}
type StopResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
}
// =============================================================================
// AttachPeer / SendOutboundMessage
// =============================================================================
type AttachPeerRequest struct {
NodeName string `json:"nodeName,omitempty"`
}
type AttachPeerResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
AttachedPeerInfo *AttachedPeerInfo `json:"attachedPeerInfo,omitempty"`
}
type SendOutboundMessageRequest struct {
NodeName string `json:"nodeName,omitempty"`
PeerId string `json:"peerId,omitempty"`
Op uint32 `json:"op,omitempty"`
Bytes []byte `json:"bytes,omitempty"`
}
type SendOutboundMessageResponse struct {
Sent bool `json:"sent,omitempty"`
}
// =============================================================================
// Snapshots
// =============================================================================
type SaveSnapshotRequest struct {
NetworkName string `json:"networkName,omitempty"`
SnapshotName string `json:"snapshotName,omitempty"`
}
func (m *SaveSnapshotRequest) GetNetworkName() string {
if m == nil {
return ""
}
return m.NetworkName
}
func (m *SaveSnapshotRequest) GetSnapshotName() string {
if m == nil {
return ""
}
return m.SnapshotName
}
type SaveSnapshotResponse struct {
SnapshotPath string `json:"snapshotPath,omitempty"`
}
type LoadSnapshotRequest struct {
NetworkName string `json:"networkName,omitempty"`
SnapshotName string `json:"snapshotName,omitempty"`
ExecPath *string `json:"execPath,omitempty"`
PluginDir string `json:"pluginDir,omitempty"`
RootDataDir *string `json:"rootDataDir,omitempty"`
ChainConfigs map[string]string `json:"chainConfigs,omitempty"`
UpgradeConfigs map[string]string `json:"upgradeConfigs,omitempty"`
GlobalNodeConfig *string `json:"globalNodeConfig,omitempty"`
ReassignPortsIfUsed *bool `json:"reassignPortsIfUsed,omitempty"`
ChainConfigFiles map[string]string `json:"chainConfigFiles,omitempty"`
}
func (m *LoadSnapshotRequest) GetNetworkName() string {
if m == nil {
return ""
}
return m.NetworkName
}
func (m *LoadSnapshotRequest) GetSnapshotName() string {
if m == nil {
return ""
}
return m.SnapshotName
}
func (m *LoadSnapshotRequest) GetExecPath() string {
if m == nil || m.ExecPath == nil {
return ""
}
return *m.ExecPath
}
func (m *LoadSnapshotRequest) GetPluginDir() string {
if m == nil {
return ""
}
return m.PluginDir
}
func (m *LoadSnapshotRequest) GetRootDataDir() string {
if m == nil || m.RootDataDir == nil {
return ""
}
return *m.RootDataDir
}
func (m *LoadSnapshotRequest) GetChainConfigs() map[string]string {
if m == nil {
return nil
}
return m.ChainConfigs
}
func (m *LoadSnapshotRequest) GetUpgradeConfigs() map[string]string {
if m == nil {
return nil
}
return m.UpgradeConfigs
}
func (m *LoadSnapshotRequest) GetChainConfigFiles() map[string]string {
if m == nil {
return nil
}
return m.ChainConfigFiles
}
func (m *LoadSnapshotRequest) GetGlobalNodeConfig() string {
if m == nil || m.GlobalNodeConfig == nil {
return ""
}
return *m.GlobalNodeConfig
}
func (m *LoadSnapshotRequest) GetReassignPortsIfUsed() bool {
if m == nil || m.ReassignPortsIfUsed == nil {
return false
}
return *m.ReassignPortsIfUsed
}
type LoadSnapshotResponse struct {
ClusterInfo *ClusterInfo `json:"clusterInfo,omitempty"`
}
type RemoveSnapshotRequest struct {
NetworkName string `json:"networkName,omitempty"`
SnapshotName string `json:"snapshotName,omitempty"`
}
func (m *RemoveSnapshotRequest) GetNetworkName() string {
if m == nil {
return ""
}
return m.NetworkName
}
func (m *RemoveSnapshotRequest) GetSnapshotName() string {
if m == nil {
return ""
}
return m.SnapshotName
}
type RemoveSnapshotResponse struct{}
type GetSnapshotNamesRequest struct {
NetworkName string `json:"networkName,omitempty"`
}
func (m *GetSnapshotNamesRequest) GetNetworkName() string {
if m == nil {
return ""
}
return m.NetworkName
}
type GetSnapshotNamesResponse struct {
SnapshotNames []string `json:"snapshotNames,omitempty"`
}
+25
View File
@@ -0,0 +1,25 @@
#!/usr/bin/env bash
# Enforces the project rule: default-tag builds of netrunner have ZERO
# google.golang.org/grpc and grpc-gateway transitive deps.
#
# Run from netrunner repo root: bash scripts/check-no-grpc.sh
#
# CI gate. Fails non-zero with a tagged list of offenders.
set -euo pipefail
cd "$(dirname "$0")/.."
bad=$(go list -deps -f '{{.ImportPath}}' ./... 2>/dev/null \
| grep -E '^google\.golang\.org/grpc(/|$)|grpc-ecosystem/grpc-gateway' \
|| true)
if [[ -n "$bad" ]]; then
echo "ERROR: gRPC transitive deps leaked into default-tag build:" >&2
echo "$bad" | sed 's/^/ - /' >&2
echo "" >&2
echo "ZAP is the only wire protocol on default builds. gate via -tags grpc only." >&2
exit 1
fi
echo "ok: no grpc/grpc-gateway in default-tag dep graph"