mirror of
https://github.com/tendermint/tendermint.git
synced 2026-04-29 03:46:57 +00:00
extract infrastructure generation from manifest creation
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
package e2e
|
||||
|
||||
import "net"
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
)
|
||||
|
||||
// InfrastructureData contains the relevant information for a set of existing
|
||||
// infrastructure that is to be used for running a testnet.
|
||||
@@ -18,3 +21,24 @@ type InfrastructureData struct {
|
||||
type InstanceData struct {
|
||||
IPAddress net.IP `json:"ip_address"`
|
||||
}
|
||||
|
||||
func NewDockerInfrastructure(m Manifest) (InfrastructureData, error) {
|
||||
netAddress := networkIPv4
|
||||
if m.IPv6 {
|
||||
netAddress = networkIPv6
|
||||
}
|
||||
_, ipNet, err := net.ParseCIDR(netAddress)
|
||||
if err != nil {
|
||||
return InfrastructureData{}, fmt.Errorf("invalid IP network address %q: %w", netAddress, err)
|
||||
}
|
||||
ipGen := newIPGenerator(ipNet)
|
||||
ifd := InfrastructureData{
|
||||
Instances: make(map[string]InstanceData),
|
||||
}
|
||||
for name := range m.Nodes {
|
||||
ifd.Instances[name] = InstanceData{
|
||||
IPAddress: ipGen.Next(),
|
||||
}
|
||||
}
|
||||
return ifd, nil
|
||||
}
|
||||
|
||||
@@ -156,12 +156,16 @@ func LoadTestnet(file string, ifd InfrastructureData) (*Testnet, error) {
|
||||
|
||||
for _, name := range nodeNames {
|
||||
nodeManifest := manifest.Nodes[name]
|
||||
ind, ok := ifd.Instances[name]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("information for node '%s' missing from infrastucture data", name)
|
||||
}
|
||||
node := &Node{
|
||||
Name: name,
|
||||
Testnet: testnet,
|
||||
PrivvalKey: keyGen.Generate(manifest.KeyType),
|
||||
NodeKey: keyGen.Generate("ed25519"),
|
||||
IP: ipGen.Next(),
|
||||
IP: ind.IPAddress,
|
||||
ProxyPort: proxyPortGen.Next(),
|
||||
Mode: ModeValidator,
|
||||
Database: "goleveldb",
|
||||
|
||||
@@ -41,7 +41,15 @@ func NewCLI() *CLI {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
testnet, err := e2e.LoadTestnet(file, e2e.InfrastructureData{})
|
||||
m, err := e2e.LoadManifest(file)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ifd, err := e2e.NewDockerInfrastructure(m)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
testnet, err := e2e.LoadTestnet(file, ifd)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -79,8 +79,12 @@ func loadTestnet(t *testing.T) e2e.Testnet {
|
||||
if testnet, ok := testnetCache[manifest]; ok {
|
||||
return testnet
|
||||
}
|
||||
m, err := e2e.LoadManifest(manifest)
|
||||
require.NoError(t, err)
|
||||
ifd, err := e2e.NewDockerInfrastructure(m)
|
||||
require.NoError(t, err)
|
||||
|
||||
testnet, err := e2e.LoadTestnet(manifest)
|
||||
testnet, err := e2e.LoadTestnet(manifest, ifd)
|
||||
require.NoError(t, err)
|
||||
testnetCache[manifest] = *testnet
|
||||
return *testnet
|
||||
|
||||
Reference in New Issue
Block a user