Documentation
¶
Overview ¶
Package config pkg/serviceconfig/default_environments.go c4-net-discovery
Package config pkg/serviceconfig/env.go c4-net-discovery
Package config pkg/serviceconfig/env_scripts.go c4-net-discovery
Package config pkg/serviceconfig/external_services.go c4-net-discovery
Package config pkg/serviceconfig/runners.go c4-net-discovery
Package config pkg/serviceconfig/skywire.go c4-net-discovery
Package config pkg/serviceconfig/visors.go c4-net-discovery
Index ¶
- Constants
- func DefaultPublicVisorConfig() *visorconfig.V1
- func EmptyDmsgServerConfig() msg.Config
- func EmptySetupNodeConfig() router.SetupConfig
- func PrintJSON(data interface{}) string
- type AddressResolverConfig
- type DmsgDiscoveryConfig
- type DmsgServerConfig
- type EnvConfig
- func (env *EnvConfig) AddAddressResolver(name string, address string) *EnvConfig
- func (env *EnvConfig) AddDmsgDiscovery(name string, address string) *EnvConfig
- func (env *EnvConfig) AddDmsgServer(name string, publicAddress string, localAddress string) *EnvConfig
- func (env *EnvConfig) AddRouteFinder(name string, address string) *EnvConfig
- func (env *EnvConfig) AddSetupNode(name string) *EnvConfig
- func (env *EnvConfig) AddThreeChatVisors() *EnvConfig
- func (env *EnvConfig) AddTransportDiscovery(name string, address string) *EnvConfig
- func (env *EnvConfig) AddVisor(visorName string, apps []appserver.AppConfig, rpcAddress string) *EnvConfig
- func (env *EnvConfig) AddVisorExplicitly(visor VisorConfig) *EnvConfig
- func (env *EnvConfig) DefaultExternalServices() *EnvConfig
- func (env *EnvConfig) String() string
- type EnvScripts
- type ExternalServicesConfig
- type RouteFinderConfig
- type RunnersConfig
- type SetupNodeConfig
- type SkywireConfig
- type TransportDiscoveryConfig
- type VisorConfig
Examples ¶
Constants ¶
const ( // DockerRedisCmdTemplate is a template for running dockerized redis DockerRedisCmdTemplate string = ` docker container rm redis -f || \ docker run -d --network=%v \ --hostname=redis \ --name=redis redis` // DockerDmsgDiscoveryCmdTemplate is a template for running dockerized dmsg-discovery DockerDmsgDiscoveryCmdTemplate string = `` /* 210-byte string literal not displayed */ // DockerDmsgServerCmdTemplate is a template for running dockerized dmsg-server DockerDmsgServerCmdTemplate string = `` /* 187-byte string literal not displayed */ // DockerTransportDiscoveryCmdTemplate is a template for running dockerized transport-discovery DockerTransportDiscoveryCmdTemplate string = `` /* 203-byte string literal not displayed */ // DockerRouteFinderCmdTemplate is a template for running dockerized route-finder DockerRouteFinderCmdTemplate string = `` /* 200-byte string literal not displayed */ // DockerAddressResolverCmdTemplate is a template for running dockerized address-resolver DockerAddressResolverCmdTemplate string = `` /* 209-byte string literal not displayed */ // DockerSetupNodeCmdTemplate is a template for running dockerized setup-node DockerSetupNodeCmdTemplate string = `` /* 182-byte string literal not displayed */ // DockerSkywireVisorCmdTemplate is a template for running dockerized skywire-visor DockerSkywireVisorCmdTemplate string = `` /* 141-byte string literal not displayed */ )
const ( // PublicDmsgDiscovery is global dmsg-discovery service PublicDmsgDiscovery string = "https://dmsg.discovery.skywire.skycoin.com" // PublicTransportDiscovery is global transport-discovery service PublicTransportDiscovery string = "https://transport.discovery.skywire.skycoin.com" // PublicRouteFinder is global route finder service PublicRouteFinder string = "https://routefinder.skywire.skycoin.com/" // PublicSetupNode is public key of global setup-node PublicSetupNode string = "0324579f003e6b4048bae2def4365e634d8e0e3054a20fc7af49daf2a179658557" // PublicAddressResolver is global address-resolver service PublicAddressResolver string = "https://address.resolver.skywire.skycoin.com" )
Variables ¶
This section is empty.
Functions ¶
func DefaultPublicVisorConfig ¶
func DefaultPublicVisorConfig() *visorconfig.V1
DefaultPublicVisorConfig constructs skywire-visor config with global skywire-services
func EmptyDmsgServerConfig ¶
EmptyDmsgServerConfig return empty configuration for dmsg-server
func EmptySetupNodeConfig ¶
func EmptySetupNodeConfig() router.SetupConfig
EmptySetupNodeConfig return empty configuration for setup-node
Types ¶
type AddressResolverConfig ¶
type AddressResolverConfig struct {
Name string `json:"name,omitempty"`
Address string `json:"address,omitempty"`
Cmd string `json:"cmd,omitempty"`
}
AddressResolverConfig defines configuration of address-resolver
type DmsgDiscoveryConfig ¶
type DmsgDiscoveryConfig struct {
Name string `json:"name,omitempty"`
Address string `json:"address,omitempty"`
Cmd string `json:"cmd,omitempty"`
}
DmsgDiscoveryConfig defines configuration of dmsg-discovery
type DmsgServerConfig ¶
type DmsgServerConfig struct {
Name string `json:"name,omitempty"`
Address string `json:"address,omitempty"`
Config *msg.Config `json:"config,omitempty"`
Cmd string `json:"cmd,omitempty"`
}
DmsgServerConfig defines configuration of dmsg-server
type EnvConfig ¶
type EnvConfig struct {
Description string `json:"description"`
Runners RunnersConfig `json:"runners"`
ExternalServices ExternalServicesConfig `json:"external_services,omitempty"`
Skywire SkywireConfig `json:"skywire_services"`
Visors []VisorConfig `json:"skywire"`
Scripts EnvScripts `json:"scripts"`
}
EnvConfig defines configuration of skywire environment
func DefaultDockerizedEnv ¶
DefaultDockerizedEnv creates environment with dockerized skywire-services and 3 local skywire-visors
func DefaultLocalEnv ¶
func DefaultLocalEnv() *EnvConfig
DefaultLocalEnv creates environment with local skywire-services and 3 local skywire-visors
func DefaultPublicEnv ¶
func DefaultPublicEnv() *EnvConfig
DefaultPublicEnv creates environment with global skywire-services and 3 local skywire-visors
func (*EnvConfig) AddAddressResolver ¶
AddAddressResolver adds address-resolver configuration to environment configuration
func (*EnvConfig) AddDmsgDiscovery ¶
AddDmsgDiscovery adds dmsg-discovery configuration to environment configuration
func (*EnvConfig) AddDmsgServer ¶
func (env *EnvConfig) AddDmsgServer(name string, publicAddress string, localAddress string) *EnvConfig
AddDmsgServer adds dmsg-server configuration to environment configuration
func (*EnvConfig) AddRouteFinder ¶
AddRouteFinder adds route-finder configuration to environment configuration
func (*EnvConfig) AddSetupNode ¶
AddSetupNode adds setup-node configuration to environment configuration
func (*EnvConfig) AddThreeChatVisors ¶
AddThreeChatVisors add to environment 3 visors: VisorA an VisorC running skychat application and VisorB to be used as intermediary between them
Example ¶
globalEnv := &EnvConfig{
Description: "Example of environment configuration with global skywire-services and 3 skywire-visors",
Runners: RunnersConfig{
SkywireVisor: "skywire-visor {{.Name}}.json",
},
Skywire: DefaultPublicSkywire(),
}
env := globalEnv.AddThreeChatVisors()
fmt.Printf("VisorA skychat args: %v\n", env.Visors[0].Config.Launcher.Apps[0].Args)
fmt.Printf("VisorB apps: %v\n", env.Visors[1].Config.Launcher.Apps)
fmt.Printf("VisorC skychat args: %v\n", env.Visors[2].Config.Launcher.Apps[0].Args)
Output: VisorA skychat args: [-addr :8002] VisorB apps: [] VisorC skychat args: [-addr :8003]
func (*EnvConfig) AddTransportDiscovery ¶
AddTransportDiscovery adds transport-discovery configuration to environment configuration
func (*EnvConfig) AddVisor ¶
func (env *EnvConfig) AddVisor(visorName string, apps []appserver.AppConfig, rpcAddress string) *EnvConfig
AddVisor adds a skywire node configuration
Example ¶
publicEnv := &EnvConfig{
Description: "Example of environment configuration with global skywire-services and 3 skywire-visors",
Runners: RunnersConfig{
SkywireVisor: "go run ./cmd/skywire-visor {{.Name}}.json --tag {{.Name}}",
},
Skywire: DefaultPublicSkywire(),
}
appsA := []appserver.AppConfig{
{Name: "skychat", Port: 1, AutoStart: true, Args: []string{"-addr", ":8002"}},
}
appsB := make([]appserver.AppConfig, 0)
appsC := []appserver.AppConfig{
{Name: "skychat", Port: 1, AutoStart: true, Args: []string{"-addr", ":8003"}},
}
env := publicEnv.
AddVisor("VisorA", appsA, ":3435").
AddVisor("VisorB", appsB, ":3436").
AddVisor("VisorC", appsC, ":3437")
for n, visor := range env.Visors {
fmt.Printf("%v %v: %v\n", n, visor.Name, visor.Cmd)
}
Output: 0 VisorA: go run ./cmd/skywire-visor VisorA.json --tag VisorA 1 VisorB: go run ./cmd/skywire-visor VisorB.json --tag VisorB 2 VisorC: go run ./cmd/skywire-visor VisorC.json --tag VisorC
func (*EnvConfig) AddVisorExplicitly ¶
func (env *EnvConfig) AddVisorExplicitly(visor VisorConfig) *EnvConfig
AddVisorExplicitly adds an explicit skywire node configuration to environment configuration
Example ¶
env := &EnvConfig{
Description: "Example of minimal environment with global skywire-services and single skywire-visor",
ExternalServices: ExternalServicesConfig{},
Runners: RunnersConfig{
SkywireVisor: "skywire-visor",
},
Skywire: DefaultPublicSkywire(),
}
env.AddVisorExplicitly(VisorConfig{
Name: "VisorA",
Config: DefaultPublicVisorConfig(),
Cmd: "skywire-visor VisorA.json",
})
fmt.Printf("Visor: %v\n", env.Visors[0].Cmd)
Output: Visor: skywire-visor VisorA.json
func (*EnvConfig) DefaultExternalServices ¶
DefaultExternalServices returns default externalServices configuration for localhost environments
type EnvScripts ¶
type EnvScripts struct {
Startup string `json:"startup,omitempty"`
TearDown string `json:"teardown,omitempty"`
EnvVars string `json:"env_vars,omitempty"`
}
EnvScripts is a collection of environment scripts
func (EnvScripts) String ¶
func (scr EnvScripts) String() string
type ExternalServicesConfig ¶
type ExternalServicesConfig struct {
RedisAddress string `json:"redis,omitempty"`
RedisCmd string `json:"redis_cmd,omitempty"`
MetricsAddress string `json:"metrics,omitempty"`
}
ExternalServicesConfig define configuration of external services
func (ExternalServicesConfig) String ¶
func (ext ExternalServicesConfig) String() string
type RouteFinderConfig ¶
type RouteFinderConfig struct {
Name string `json:"name,omitempty"`
Address string `json:"address,omitempty"`
Cmd string `json:"cmd,omitempty"`
}
RouteFinderConfig defines configuration of route-finder
type RunnersConfig ¶
type RunnersConfig struct {
SkywireVisor string `json:"skywire,omitempty"`
DmsgDiscovery string `json:"dmsg_discovery,omitempty"`
DmsgServer string `json:"dmsg_server,omitempty"`
TransportDiscovery string `json:"transport_discovery,omitempty"`
RouteFinder string `json:"route_finder,omitempty"`
SetupNode string `json:"setup_node,omitempty"`
AddressResolver string `json:"address_resolver,omitempty"`
}
RunnersConfig defines how each service is run
func DefaultDockerRunners ¶
func DefaultDockerRunners(network string) RunnersConfig
DefaultDockerRunners returns set of default dockerized runners
Example ¶
dockerEnv := &EnvConfig{
Description: "Example of environment configuration with dockerized skywire",
ExternalServices: ExternalServicesConfig{
RedisAddress: "redis:6379",
},
Runners: DefaultDockerRunners("SKYNET_001"),
}
env := dockerEnv.
AddDmsgDiscovery("MSGD", "dmsg-discovery:9090").
AddDmsgServer("MSG", "dmsg-server:8080", "dmsg-server:8080").
AddTransportDiscovery("TRD", "transport-discovery:9094").
AddRouteFinder("RF", "route-finder:9092").
AddSetupNode("SN").
AddAddressResolver("AR", "address-resolver:9093")
fmt.Println(env.Description)
fmt.Println(env.Skywire.DmsgDiscovery.Cmd)
fmt.Println(env.Skywire.DmsgServer.Cmd)
fmt.Println(env.Skywire.TransportDiscovery.Cmd)
fmt.Println(env.Skywire.RouteFinder.Cmd)
fmt.Println(env.Skywire.AddressResolver.Cmd)
fmt.Println(env.Skywire.SetupNode.Cmd)
Output: Example of environment configuration with dockerized skywire docker container rm dmsg-discovery -f || \ docker run -d --network=SKYNET_001 \ --name=dmsg-discovery \ --hostname=dmsg-discovery skywire-services \ bash -c "./dmsg-discovery --redis redis://redis:6379" docker container rm dmsg-server -f || \ docker run -d --network=SKYNET_001 \ --name=dmsg-server \ --hostname=dmsg-server skywire-services \ bash -c "./dmsg-server dmsg-server.json" docker container rm transport-discovery -f || \ docker run -d --network=SKYNET_001 \ --name=transport-discovery \ --hostname=transport-discovery skywire-services \ bash -c "./transport-discovery" docker container rm dmsg-server -f || \ docker run -d --network=SKYNET_001 \ --name=dmsg-server \ --hostname=dmsg-server skywire-services \ bash -c "./dmsg-server dmsg-server.json" docker container rm address-resolver -f || \ docker run -d --network=SKYNET_001\ --name=address-resolver \ --hostname=address-resolver skywire-services \ bash -c "./address-resolver address-resolver.json" docker container rm setup-node -f || \ docker run -d --network=SKYNET_001\ --name=setup-node \ --hostname=setup-node skywire-services \ bash -c "./setup-node setup-node.json"
func DefaultLocalRunners ¶
func DefaultLocalRunners() RunnersConfig
DefaultLocalRunners returns set of default runners on localhost
type SetupNodeConfig ¶
type SetupNodeConfig struct {
Name string `json:"name,omitempty"`
PubKey cipher.PubKey `json:"pk,omitempty"`
Config *router.SetupConfig `json:"config,omitempty"`
Cmd string `json:"cmd,omitempty"`
}
SetupNodeConfig defines configuration of setup-node
type SkywireConfig ¶
type SkywireConfig struct {
DmsgDiscovery DmsgDiscoveryConfig `json:"dmsg_discovery,omitempty"`
DmsgServer DmsgServerConfig `json:"dmsg_server,omitempty"`
TransportDiscovery TransportDiscoveryConfig `json:"transport_discovery,omitempty"`
RouteFinder RouteFinderConfig `json:"route_finder,omitempty"`
SetupNode SetupNodeConfig `json:"setup_node,omitempty"`
AddressResolver AddressResolverConfig `json:"address_resolver,omitempty"`
}
SkywireConfig defines configuration of skywire-services
func DefaultPublicSkywire ¶
func DefaultPublicSkywire() SkywireConfig
DefaultPublicSkywire constructs default global skywire-services configuration
Example ¶
ExampleEnvConfig is an example of explicit declaration of minimal configuration with global skywire-services and just one skywire-visor and no startup/teardown scripts
env := EnvConfig{
Description: "Example of minimal environment with global skywire-services and single skywire-visor",
ExternalServices: ExternalServicesConfig{},
Runners: RunnersConfig{
SkywireVisor: "skywire-visor",
},
Skywire: DefaultPublicSkywire(),
Visors: []VisorConfig{
{
Name: "VisorA.json",
Config: DefaultPublicVisorConfig(),
Cmd: "skywire-visor VisorA.json",
},
},
Scripts: EnvScripts{},
}
fmt.Println(env.Description)
fmt.Printf("external services: %v\n", env.ExternalServices)
fmt.Printf("running skywire-visor with: %v\n", env.Runners.SkywireVisor)
fmt.Printf("with skywire-services: %v\n", env.Skywire)
fmt.Printf("with skywire visors: %v\n", env.Visors[0].Cmd)
fmt.Printf("with scripts: %v\n", env.Scripts)
Output: Example of minimal environment with global skywire-services and single skywire-visor external services: {} running skywire-visor with: skywire-visor with skywire-services: { "dmsg_discovery": { "address": "https://dmsg.discovery.skywire.skycoin.com" }, "dmsg_server": {}, "transport_discovery": { "address": "https://transport.discovery.skywire.skycoin.com" }, "route_finder": { "address": "https://routefinder.skywire.skycoin.com/" }, "setup_node": { "pk": "0324579f003e6b4048bae2def4365e634d8e0e3054a20fc7af49daf2a179658557" }, "address_resolver": { "address": "https://address.resolver.skywire.skycoin.com" } } with skywire visors: skywire-visor VisorA.json with scripts: {}
func (SkywireConfig) String ¶
func (sw SkywireConfig) String() string
type TransportDiscoveryConfig ¶
type TransportDiscoveryConfig struct {
Name string `json:"name,omitempty"`
Address string `json:"address,omitempty"`
Cmd string `json:"cmd,omitempty"`
}
TransportDiscoveryConfig defines configuration of transport-discovery
type VisorConfig ¶
type VisorConfig struct {
Name string `json:"name"`
Config *visorconfig.V1 `json:"config"`
Cmd string `json:"cmd"`
}
VisorConfig defines skywire-visor configuration
func (VisorConfig) String ¶
func (visorConfig VisorConfig) String() string