Moved rpcchainvm logs to live under their chain

This commit is contained in:
StephenButtolph 2020-06-08 11:53:55 -04:00
parent acd44dacb8
commit c86838f2e8
15 changed files with 81 additions and 74 deletions

View File

@ -204,49 +204,6 @@ func (m *manager) ForceCreateChain(chain ChainParameters) {
return return
} }
// Get a factory for the vm we want to use on our chain
vmFactory, err := m.vmManager.GetVMFactory(vmID)
if err != nil {
m.log.Error("error while getting vmFactory: %s", err)
return
}
// Create the chain
vm, err := vmFactory.New()
if err != nil {
m.log.Error("error while creating vm: %s", err)
return
}
// TODO: Shutdown VM if an error occurs
fxs := make([]*common.Fx, len(chain.FxAliases))
for i, fxAlias := range chain.FxAliases {
fxID, err := m.vmManager.Lookup(fxAlias)
if err != nil {
m.log.Error("error while looking up Fx: %s", err)
return
}
// Get a factory for the fx we want to use on our chain
fxFactory, err := m.vmManager.GetVMFactory(fxID)
if err != nil {
m.log.Error("error while getting fxFactory: %s", err)
return
}
fx, err := fxFactory.New()
if err != nil {
m.log.Error("error while creating fx: %s", err)
return
}
// Create the fx
fxs[i] = &common.Fx{
ID: fxID,
Fx: fx,
}
}
primaryAlias, err := m.PrimaryAlias(chain.ID) primaryAlias, err := m.PrimaryAlias(chain.ID)
if err != nil { if err != nil {
primaryAlias = chain.ID.String() primaryAlias = chain.ID.String()
@ -272,6 +229,49 @@ func (m *manager) ForceCreateChain(chain ChainParameters) {
BCLookup: m, BCLookup: m,
} }
// Get a factory for the vm we want to use on our chain
vmFactory, err := m.vmManager.GetVMFactory(vmID)
if err != nil {
m.log.Error("error while getting vmFactory: %s", err)
return
}
// Create the chain
vm, err := vmFactory.New(ctx)
if err != nil {
m.log.Error("error while creating vm: %s", err)
return
}
// TODO: Shutdown VM if an error occurs
fxs := make([]*common.Fx, len(chain.FxAliases))
for i, fxAlias := range chain.FxAliases {
fxID, err := m.vmManager.Lookup(fxAlias)
if err != nil {
m.log.Error("error while looking up Fx: %s", err)
return
}
// Get a factory for the fx we want to use on our chain
fxFactory, err := m.vmManager.GetVMFactory(fxID)
if err != nil {
m.log.Error("error while getting fxFactory: %s", err)
return
}
fx, err := fxFactory.New(ctx)
if err != nil {
m.log.Error("error while creating fx: %s", err)
return
}
// Create the fx
fxs[i] = &common.Fx{
ID: fxID,
Fx: fx,
}
}
consensusParams := m.consensusParams consensusParams := m.consensusParams
consensusParams.Namespace = fmt.Sprintf("gecko_%s", primaryAlias) consensusParams.Namespace = fmt.Sprintf("gecko_%s", primaryAlias)

View File

@ -295,10 +295,7 @@ func (n *Node) initVMManager() error {
AVA: avaAssetID, AVA: avaAssetID,
Platform: ids.Empty, Platform: ids.Empty,
}), }),
n.vmManager.RegisterVMFactory(genesis.EVMID, &rpcchainvm.Factory{ n.vmManager.RegisterVMFactory(genesis.EVMID, &rpcchainvm.Factory{Path: path.Join(n.Config.PluginDir, "evm")}),
Log: n.Log,
Path: path.Join(n.Config.PluginDir, "evm"),
}),
n.vmManager.RegisterVMFactory(spdagvm.ID, &spdagvm.Factory{TxFee: n.Config.AvaTxFee}), n.vmManager.RegisterVMFactory(spdagvm.ID, &spdagvm.Factory{TxFee: n.Config.AvaTxFee}),
n.vmManager.RegisterVMFactory(spchainvm.ID, &spchainvm.Factory{}), n.vmManager.RegisterVMFactory(spchainvm.ID, &spchainvm.Factory{}),
n.vmManager.RegisterVMFactory(timestampvm.ID, &timestampvm.Factory{}), n.vmManager.RegisterVMFactory(timestampvm.ID, &timestampvm.Factory{}),

View File

@ -5,6 +5,7 @@ package avm
import ( import (
"github.com/ava-labs/gecko/ids" "github.com/ava-labs/gecko/ids"
"github.com/ava-labs/gecko/snow"
) )
// ID that this VM uses when labeled // ID that this VM uses when labeled
@ -19,7 +20,7 @@ type Factory struct {
} }
// New ... // New ...
func (f *Factory) New() (interface{}, error) { func (f *Factory) New(*snow.Context) (interface{}, error) {
return &VM{ return &VM{
ava: f.AVA, ava: f.AVA,
platform: f.Platform, platform: f.Platform,

View File

@ -8,15 +8,15 @@ import (
"sync" "sync"
"github.com/ava-labs/gecko/api" "github.com/ava-labs/gecko/api"
"github.com/ava-labs/gecko/snow/engine/common"
"github.com/ava-labs/gecko/ids" "github.com/ava-labs/gecko/ids"
"github.com/ava-labs/gecko/snow"
"github.com/ava-labs/gecko/snow/engine/common"
"github.com/ava-labs/gecko/utils/logging" "github.com/ava-labs/gecko/utils/logging"
) )
// A VMFactory creates new instances of a VM // A VMFactory creates new instances of a VM
type VMFactory interface { type VMFactory interface {
New() (interface{}, error) New(*snow.Context) (interface{}, error)
} }
// Manager is a VM manager. // Manager is a VM manager.
@ -110,7 +110,7 @@ func (m *manager) addStaticAPIEndpoints(vmID ids.ID) {
vmFactory, err := m.GetVMFactory(vmID) vmFactory, err := m.GetVMFactory(vmID)
m.log.AssertNoError(err) m.log.AssertNoError(err)
m.log.Debug("adding static API for VM with ID %s", vmID) m.log.Debug("adding static API for VM with ID %s", vmID)
vm, err := vmFactory.New() vm, err := vmFactory.New(nil)
if err != nil { if err != nil {
return return
} }

View File

@ -2,6 +2,7 @@ package nftfx
import ( import (
"github.com/ava-labs/gecko/ids" "github.com/ava-labs/gecko/ids"
"github.com/ava-labs/gecko/snow"
) )
// ID that this Fx uses when labeled // ID that this Fx uses when labeled
@ -13,4 +14,4 @@ var (
type Factory struct{} type Factory struct{}
// New ... // New ...
func (f *Factory) New() (interface{}, error) { return &Fx{}, nil } func (f *Factory) New(*snow.Context) (interface{}, error) { return &Fx{}, nil }

View File

@ -6,7 +6,7 @@ import (
func TestFactory(t *testing.T) { func TestFactory(t *testing.T) {
factory := Factory{} factory := Factory{}
if fx, err := factory.New(); err != nil { if fx, err := factory.New(nil); err != nil {
t.Fatal(err) t.Fatal(err)
} else if fx == nil { } else if fx == nil {
t.Fatalf("Factory.New returned nil") t.Fatalf("Factory.New returned nil")

View File

@ -6,6 +6,7 @@ package platformvm
import ( import (
"github.com/ava-labs/gecko/chains" "github.com/ava-labs/gecko/chains"
"github.com/ava-labs/gecko/ids" "github.com/ava-labs/gecko/ids"
"github.com/ava-labs/gecko/snow"
"github.com/ava-labs/gecko/snow/validators" "github.com/ava-labs/gecko/snow/validators"
) )
@ -24,7 +25,7 @@ type Factory struct {
} }
// New returns a new instance of the Platform Chain // New returns a new instance of the Platform Chain
func (f *Factory) New() (interface{}, error) { func (f *Factory) New(*snow.Context) (interface{}, error) {
return &VM{ return &VM{
chainManager: f.ChainManager, chainManager: f.ChainManager,
validators: f.Validators, validators: f.Validators,

View File

@ -2,6 +2,7 @@ package propertyfx
import ( import (
"github.com/ava-labs/gecko/ids" "github.com/ava-labs/gecko/ids"
"github.com/ava-labs/gecko/snow"
) )
// ID that this Fx uses when labeled // ID that this Fx uses when labeled
@ -13,4 +14,4 @@ var (
type Factory struct{} type Factory struct{}
// New ... // New ...
func (f *Factory) New() (interface{}, error) { return &Fx{}, nil } func (f *Factory) New(*snow.Context) (interface{}, error) { return &Fx{}, nil }

View File

@ -6,7 +6,7 @@ import (
func TestFactory(t *testing.T) { func TestFactory(t *testing.T) {
factory := Factory{} factory := Factory{}
if fx, err := factory.New(); err != nil { if fx, err := factory.New(nil); err != nil {
t.Fatal(err) t.Fatal(err)
} else if fx == nil { } else if fx == nil {
t.Fatalf("Factory.New returned nil") t.Fatalf("Factory.New returned nil")

View File

@ -9,7 +9,7 @@ import (
"github.com/hashicorp/go-plugin" "github.com/hashicorp/go-plugin"
"github.com/ava-labs/gecko/utils/logging" "github.com/ava-labs/gecko/snow"
) )
var ( var (
@ -17,25 +17,25 @@ var (
) )
// Factory ... // Factory ...
type Factory struct { type Factory struct{ Path string }
Log logging.Logger
Path string
}
// New ... // New ...
func (f *Factory) New() (interface{}, error) { func (f *Factory) New(ctx *snow.Context) (interface{}, error) {
client := plugin.NewClient(&plugin.ClientConfig{ config := &plugin.ClientConfig{
HandshakeConfig: Handshake, HandshakeConfig: Handshake,
Plugins: PluginMap, Plugins: PluginMap,
Cmd: exec.Command("sh", "-c", f.Path), Cmd: exec.Command("sh", "-c", f.Path),
Stderr: f.Log,
SyncStdout: f.Log,
SyncStderr: f.Log,
AllowedProtocols: []plugin.Protocol{ AllowedProtocols: []plugin.Protocol{
plugin.ProtocolNetRPC, plugin.ProtocolNetRPC,
plugin.ProtocolGRPC, plugin.ProtocolGRPC,
}, },
}) }
if ctx != nil {
config.Stderr = ctx.Log
config.SyncStdout = ctx.Log
config.SyncStderr = ctx.Log
}
client := plugin.NewClient(config)
rpcClient, err := client.Client() rpcClient, err := client.Client()
if err != nil { if err != nil {

View File

@ -5,6 +5,7 @@ package secp256k1fx
import ( import (
"github.com/ava-labs/gecko/ids" "github.com/ava-labs/gecko/ids"
"github.com/ava-labs/gecko/snow"
) )
// ID that this Fx uses when labeled // ID that this Fx uses when labeled
@ -16,4 +17,4 @@ var (
type Factory struct{} type Factory struct{}
// New ... // New ...
func (f *Factory) New() (interface{}, error) { return &Fx{}, nil } func (f *Factory) New(*snow.Context) (interface{}, error) { return &Fx{}, nil }

View File

@ -9,7 +9,7 @@ import (
func TestFactory(t *testing.T) { func TestFactory(t *testing.T) {
factory := Factory{} factory := Factory{}
if fx, err := factory.New(); err != nil { if fx, err := factory.New(nil); err != nil {
t.Fatal(err) t.Fatal(err)
} else if fx == nil { } else if fx == nil {
t.Fatalf("Factory.New returned nil") t.Fatalf("Factory.New returned nil")

View File

@ -5,6 +5,7 @@ package spchainvm
import ( import (
"github.com/ava-labs/gecko/ids" "github.com/ava-labs/gecko/ids"
"github.com/ava-labs/gecko/snow"
) )
// ID this VM should be referenced by // ID this VM should be referenced by
@ -16,4 +17,4 @@ var (
type Factory struct{} type Factory struct{}
// New ... // New ...
func (f *Factory) New() (interface{}, error) { return &VM{}, nil } func (f *Factory) New(*snow.Context) (interface{}, error) { return &VM{}, nil }

View File

@ -5,6 +5,7 @@ package spdagvm
import ( import (
"github.com/ava-labs/gecko/ids" "github.com/ava-labs/gecko/ids"
"github.com/ava-labs/gecko/snow"
) )
// ID this VM should be referenced with // ID this VM should be referenced with
@ -16,6 +17,6 @@ var (
type Factory struct{ TxFee uint64 } type Factory struct{ TxFee uint64 }
// New ... // New ...
func (f *Factory) New() (interface{}, error) { func (f *Factory) New(*snow.Context) (interface{}, error) {
return &VM{TxFee: f.TxFee}, nil return &VM{TxFee: f.TxFee}, nil
} }

View File

@ -3,7 +3,10 @@
package timestampvm package timestampvm
import "github.com/ava-labs/gecko/ids" import (
"github.com/ava-labs/gecko/ids"
"github.com/ava-labs/gecko/snow"
)
// ID is a unique identifier for this VM // ID is a unique identifier for this VM
var ( var (
@ -14,4 +17,4 @@ var (
type Factory struct{} type Factory struct{}
// New ... // New ...
func (f *Factory) New() (interface{}, error) { return &VM{}, nil } func (f *Factory) New(*snow.Context) (interface{}, error) { return &VM{}, nil }