From a4350080bd8ab327098fe48a5b99df0709e5697b Mon Sep 17 00:00:00 2001 From: Peter Broadhurst Date: Wed, 8 Jun 2022 17:36:35 -0400 Subject: [PATCH] SPI updates for new alpha Signed-off-by: Peter Broadhurst --- .../ethereum/ethsigner/ethsigner.go | 2 +- internal/constants/constants.go | 2 +- internal/core/firefly_config.go | 25 +++++++++---- internal/docker/docker_config.go | 2 +- internal/stacks/fftm_config.go | 2 +- internal/stacks/stack_manager.go | 30 ++++++++-------- pkg/types/stack.go | 36 +++++++++---------- 7 files changed, 55 insertions(+), 44 deletions(-) diff --git a/internal/blockchain/ethereum/ethsigner/ethsigner.go b/internal/blockchain/ethereum/ethsigner/ethsigner.go index 3c2d026d..112c632c 100644 --- a/internal/blockchain/ethereum/ethsigner/ethsigner.go +++ b/internal/blockchain/ethereum/ethsigner/ethsigner.go @@ -33,7 +33,7 @@ import ( "github.com/hyperledger/firefly-cli/pkg/types" ) -var ethsignerImage = "ghcr.io/hyperledger/firefly-signer:v0.9.1" +var ethsignerImage = "ghcr.io/hyperledger/firefly-signer:v0.9.6" // TODO: Probably randomize this and make it different per member? var keyPassword = "correcthorsebatterystaple" diff --git a/internal/constants/constants.go b/internal/constants/constants.go index ad1045b0..246b3088 100644 --- a/internal/constants/constants.go +++ b/internal/constants/constants.go @@ -30,4 +30,4 @@ var PostgresImageName = "postgres" var PrometheusImageName = "prom/prometheus" var SandboxImageName = "ghcr.io/hyperledger/firefly-sandbox:latest" -var FFTMImageName = "ghcr.io/hyperledger/firefly-transaction-manager:v0.9.0" +var FFTMImageName = "ghcr.io/hyperledger/firefly-transaction-manager:v0.9.2" diff --git a/internal/core/firefly_config.go b/internal/core/firefly_config.go index c7740755..a62d708a 100644 --- a/internal/core/firefly_config.go +++ b/internal/core/firefly_config.go @@ -42,6 +42,11 @@ type AdminServerConfig struct { PreInit bool `yaml:"preinit,omitempty"` } +type SPIServerConfig struct { + HttpServerConfig `yaml:",inline"` + Enabled bool `yaml:"enabled,omitempty"` +} + type MetricsServerConfig struct { HttpServerConfig `yaml:",inline"` Enabled bool `yaml:"enabled,omitempty"` @@ -156,7 +161,8 @@ type FireflyConfig struct { Log *LogConfig `yaml:"log,omitempty"` Debug *HttpServerConfig `yaml:"debug,omitempty"` HTTP *HttpServerConfig `yaml:"http,omitempty"` - Admin *AdminServerConfig `yaml:"admin,omitempty"` + Admin *AdminServerConfig `yaml:"admin,omitempty"` // V1.0 admin API + SPI *SPIServerConfig `yaml:"spi,omitempty"` // V1.1 and later SPI Metrics *MetricsServerConfig `yaml:"metrics,omitempty"` UI *UIConfig `yaml:"ui,omitempty"` Node *NodeConfig `yaml:"node,omitempty"` @@ -170,6 +176,11 @@ type FireflyConfig struct { } func NewFireflyConfig(stack *types.Stack, member *types.Member) *FireflyConfig { + spiHttpConfig := HttpServerConfig{ + Port: member.ExposedFireflyAdminSPIPort, + Address: "0.0.0.0", + PublicURL: fmt.Sprintf("http://127.0.0.1:%d", member.ExposedFireflyAdminSPIPort), + } memberConfig := &FireflyConfig{ Log: &LogConfig{ Level: "debug", @@ -183,12 +194,12 @@ func NewFireflyConfig(stack *types.Stack, member *types.Member) *FireflyConfig { PublicURL: fmt.Sprintf("http://127.0.0.1:%d", member.ExposedFireflyPort), }, Admin: &AdminServerConfig{ - HttpServerConfig: HttpServerConfig{ - Port: member.ExposedFireflyAdminPort, - Address: "0.0.0.0", - PublicURL: fmt.Sprintf("http://127.0.0.1:%d", member.ExposedFireflyAdminPort), - }, - Enabled: true, + HttpServerConfig: spiHttpConfig, + Enabled: true, + }, + SPI: &SPIServerConfig{ + HttpServerConfig: spiHttpConfig, + Enabled: true, }, UI: &UIConfig{ Path: "./frontend", diff --git a/internal/docker/docker_config.go b/internal/docker/docker_config.go index 72f28ea2..70b31748 100644 --- a/internal/docker/docker_config.go +++ b/internal/docker/docker_config.go @@ -91,7 +91,7 @@ func CreateDockerCompose(s *types.Stack) *DockerComposeConfig { ContainerName: fmt.Sprintf("%s_firefly_core_%s", s.Name, member.ID), Ports: []string{ fmt.Sprintf("%d:%d", member.ExposedFireflyPort, member.ExposedFireflyPort), - fmt.Sprintf("%d:%d", member.ExposedFireflyAdminPort, member.ExposedFireflyAdminPort), + fmt.Sprintf("%d:%d", member.ExposedFireflyAdminSPIPort, member.ExposedFireflyAdminSPIPort), }, Volumes: []string{fmt.Sprintf("firefly_core_%s:/etc/firefly", member.ID)}, DependsOn: map[string]map[string]string{ diff --git a/internal/stacks/fftm_config.go b/internal/stacks/fftm_config.go index 6d6d6812..40ce403b 100644 --- a/internal/stacks/fftm_config.go +++ b/internal/stacks/fftm_config.go @@ -88,7 +88,7 @@ func NewFFTMConfig(stack *types.Stack, member *types.Member) *FFTMConfig { Port: 5008, }, FFCore: FFTMFFCoreConfig{ - URL: fmt.Sprintf("http://firefly_core_%s:%d", member.ID, member.ExposedFireflyAdminPort), + URL: fmt.Sprintf("http://firefly_core_%s:%d", member.ID, member.ExposedFireflyAdminSPIPort), }, Connector: FFTMConnectorConfig{ URL: fmt.Sprintf("http://ethconnect_%s:8080", member.ID), diff --git a/internal/stacks/stack_manager.go b/internal/stacks/stack_manager.go index a36ebd6c..32913702 100644 --- a/internal/stacks/stack_manager.go +++ b/internal/stacks/stack_manager.go @@ -489,19 +489,19 @@ func (s *StackManager) copyDataExchangeConfigToVolumes(verbose bool) error { func (s *StackManager) createMember(id string, index int, options *types.InitOptions, external bool) (*types.Member, error) { serviceBase := options.ServicesBasePort + (index * 100) member := &types.Member{ - ID: id, - Index: &index, - ExposedFireflyPort: options.FireFlyBasePort + index, - ExposedFireflyAdminPort: serviceBase + 1, // note shared blockchain node is on zero - ExposedConnectorPort: serviceBase + 2, - ExposedUIPort: serviceBase + 3, - ExposedDatabasePort: serviceBase + 4, - ExposedDataexchangePort: serviceBase + 5, - ExposedIPFSApiPort: serviceBase + 6, - ExposedIPFSGWPort: serviceBase + 7, - External: external, - OrgName: options.OrgNames[index], - NodeName: options.NodeNames[index], + ID: id, + Index: &index, + ExposedFireflyPort: options.FireFlyBasePort + index, + ExposedFireflyAdminSPIPort: serviceBase + 1, // note shared blockchain node is on zero + ExposedConnectorPort: serviceBase + 2, + ExposedUIPort: serviceBase + 3, + ExposedDatabasePort: serviceBase + 4, + ExposedDataexchangePort: serviceBase + 5, + ExposedIPFSApiPort: serviceBase + 6, + ExposedIPFSGWPort: serviceBase + 7, + External: external, + OrgName: options.OrgNames[index], + NodeName: options.NodeNames[index], } nextPort := serviceBase + 8 if options.PrometheusEnabled { @@ -700,7 +700,7 @@ func (s *StackManager) checkPortsAvailable() error { ports = append(ports, member.ExposedDataexchangePort) ports = append(ports, member.ExposedConnectorPort) if !member.External { - ports = append(ports, member.ExposedFireflyAdminPort) + ports = append(ports, member.ExposedFireflyAdminSPIPort) ports = append(ports, member.ExposedFireflyPort) ports = append(ports, member.ExposedFireflyMetricsPort) } @@ -921,7 +921,7 @@ func (s *StackManager) ensureFireflyNodesUp(firstTimeSetup bool) error { configFilename := filepath.Join(s.Stack.RuntimeDir, "config", fmt.Sprintf("firefly_core_%v.yml", member.ID)) var port int if firstTimeSetup { - port = member.ExposedFireflyAdminPort + port = member.ExposedFireflyAdminSPIPort } else { port = member.ExposedFireflyPort } diff --git a/pkg/types/stack.go b/pkg/types/stack.go index a14e50e0..c921f054 100644 --- a/pkg/types/stack.go +++ b/pkg/types/stack.go @@ -97,22 +97,22 @@ func (s *Stack) IsOldFileStructure() (bool, error) { } type Member struct { - ID string `json:"id,omitempty"` - Index *int `json:"index,omitempty"` - Account interface{} `json:"account,omitempty"` - ExposedFireflyPort int `json:"exposedFireflyPort,omitempty"` - ExposedFireflyAdminPort int `json:"exposedFireflyAdminPort,omitempty"` - ExposedFireflyMetricsPort int `json:"exposedFireflyMetricsPort,omitempty"` - ExposedConnectorPort int `json:"exposedConnectorPort,omitempty"` - ExposedDatabasePort int `json:"exposedPostgresPort,omitempty"` - ExposedDataexchangePort int `json:"exposedDataexchangePort,omitempty"` - ExposedIPFSApiPort int `json:"exposedIPFSApiPort,omitempty"` - ExposedIPFSGWPort int `json:"exposedIPFSGWPort,omitempty"` - ExposedUIPort int `json:"exposedUiPort,omitempty"` - ExposedSandboxPort int `json:"exposedSandboxPort,omitempty"` - ExposedFFTMPort int `json:"exposedFFTMPort,omitempty"` - ExposedTokensPorts []int `json:"exposedTokensPorts,omitempty"` - External bool `json:"external,omitempty"` - OrgName string `json:"orgName,omitempty"` - NodeName string `json:"nodeName,omitempty"` + ID string `json:"id,omitempty"` + Index *int `json:"index,omitempty"` + Account interface{} `json:"account,omitempty"` + ExposedFireflyPort int `json:"exposedFireflyPort,omitempty"` + ExposedFireflyAdminSPIPort int `json:"exposedFireflyAdminPort,omitempty"` // stack.json still contains the word "Admin" (rather than SPI) for migration + ExposedFireflyMetricsPort int `json:"exposedFireflyMetricsPort,omitempty"` + ExposedConnectorPort int `json:"exposedConnectorPort,omitempty"` + ExposedDatabasePort int `json:"exposedPostgresPort,omitempty"` + ExposedDataexchangePort int `json:"exposedDataexchangePort,omitempty"` + ExposedIPFSApiPort int `json:"exposedIPFSApiPort,omitempty"` + ExposedIPFSGWPort int `json:"exposedIPFSGWPort,omitempty"` + ExposedUIPort int `json:"exposedUiPort,omitempty"` + ExposedSandboxPort int `json:"exposedSandboxPort,omitempty"` + ExposedFFTMPort int `json:"exposedFFTMPort,omitempty"` + ExposedTokensPorts []int `json:"exposedTokensPorts,omitempty"` + External bool `json:"external,omitempty"` + OrgName string `json:"orgName,omitempty"` + NodeName string `json:"nodeName,omitempty"` }