#90: Built auto-detection of shuffle network with orborus
This commit is contained in:
@@ -27,6 +27,7 @@ import (
|
|||||||
|
|
||||||
var baseUrl = os.Getenv("BASE_URL")
|
var baseUrl = os.Getenv("BASE_URL")
|
||||||
var baseimagename = "frikky/shuffle"
|
var baseimagename = "frikky/shuffle"
|
||||||
|
var shuffleNetwork = "" // Filled in init if found
|
||||||
|
|
||||||
var dockerApiVersion = os.Getenv("DOCKER_API_VERSION")
|
var dockerApiVersion = os.Getenv("DOCKER_API_VERSION")
|
||||||
var environment = os.Getenv("ENVIRONMENT_NAME")
|
var environment = os.Getenv("ENVIRONMENT_NAME")
|
||||||
@@ -61,6 +62,44 @@ func init() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Sprintf("Unable to create docker client: %s", err))
|
panic(fmt.Sprintf("Unable to create docker client: %s", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BElow:
|
||||||
|
// Checking if orborus is running on docker within a specific network
|
||||||
|
ctx := context.Background()
|
||||||
|
networkName := ""
|
||||||
|
dockerNetworks, err := dockercli.NetworkList(ctx, types.NetworkListOptions{})
|
||||||
|
for _, item := range dockerNetworks {
|
||||||
|
if strings.Contains(strings.ToLower(item.Name), "shuffle") {
|
||||||
|
networkName = item.Name
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(networkName) > 0 {
|
||||||
|
containers, err := dockercli.ContainerList(ctx, types.ContainerListOptions{
|
||||||
|
All: true,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Failed getting containers during init - running without network check: %s", err)
|
||||||
|
}
|
||||||
|
_ = networkName
|
||||||
|
|
||||||
|
// Skip random containers. Only handle things related to Shuffle.
|
||||||
|
for _, container := range containers {
|
||||||
|
for key, value := range container.NetworkSettings.Networks {
|
||||||
|
_ = value
|
||||||
|
if key == networkName {
|
||||||
|
for _, name := range container.Names {
|
||||||
|
if strings.Contains(strings.ToLower(name), "orborus") {
|
||||||
|
// BEING HERE MEANS THAT ORBORUS HAS BEEN FOUND IN THE SPECIFIED NETWORK
|
||||||
|
shuffleNetwork = networkName
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Deploys the internal worker whenever something happens
|
// Deploys the internal worker whenever something happens
|
||||||
@@ -82,18 +121,19 @@ func deployWorker(image string, identifier string, env []string) {
|
|||||||
Env: env,
|
Env: env,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the network
|
// Look for Shuffle network and set it
|
||||||
|
|
||||||
|
// FIXME: Move this out of here and have it be a global setting. During init?
|
||||||
networkConfig := &network.NetworkingConfig{}
|
networkConfig := &network.NetworkingConfig{}
|
||||||
if baseUrl == "http://shuffle-backend:5001" {
|
if len(shuffleNetwork) > 0 {
|
||||||
networkConfig = &network.NetworkingConfig{
|
networkConfig = &network.NetworkingConfig{
|
||||||
EndpointsConfig: map[string]*network.EndpointSettings{
|
EndpointsConfig: map[string]*network.EndpointSettings{
|
||||||
"shuffle_shuffle": {
|
shuffleNetwork: {
|
||||||
NetworkID: "shuffle_shuffle",
|
NetworkID: shuffleNetwork,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
} else {
|
env = append(env, fmt.Sprintf("DOCKER_NETWORK", shuffleNetwork))
|
||||||
// USE PROXY
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//test := &network.EndpointSettings{
|
//test := &network.EndpointSettings{
|
||||||
|
|||||||
@@ -347,17 +347,15 @@ func deployApp(cli *dockerclient.Client, image string, identifier string, env []
|
|||||||
}
|
}
|
||||||
|
|
||||||
networkConfig := &network.NetworkingConfig{}
|
networkConfig := &network.NetworkingConfig{}
|
||||||
if baseUrl == "http://shuffle-backend:5001" {
|
shuffleNetwork := os.Getenv("DOCKER_NETWORK")
|
||||||
|
if len(shuffleNetwork) > 0 {
|
||||||
networkConfig = &network.NetworkingConfig{
|
networkConfig = &network.NetworkingConfig{
|
||||||
EndpointsConfig: map[string]*network.EndpointSettings{
|
EndpointsConfig: map[string]*network.EndpointSettings{
|
||||||
"shuffle_shuffle": {
|
shuffleNetwork: {
|
||||||
NetworkID: "shuffle_shuffle",
|
NetworkID: shuffleNetwork,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
// FIXME: Default config
|
|
||||||
//log.Printf("Bad config: %s. Using default network", baseUrl)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cont, err := cli.ContainerCreate(
|
cont, err := cli.ContainerCreate(
|
||||||
|
|||||||
Reference in New Issue
Block a user