mirror of https://github.com/poanetwork/gecko.git
Moved rpcchainvm logs to live under their chain
This commit is contained in:
parent
acd44dacb8
commit
c86838f2e8
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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, ×tampvm.Factory{}),
|
n.vmManager.RegisterVMFactory(timestampvm.ID, ×tampvm.Factory{}),
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 }
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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 }
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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 }
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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 }
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 }
|
||||||
|
|
Loading…
Reference in New Issue