#90: Built auto-detection of shuffle network with orborus

This commit is contained in:
frikky
2020-07-08 03:35:14 +02:00
parent 987b393ae1
commit ab804a3fdc
2 changed files with 50 additions and 12 deletions
+46 -6
View File
@@ -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{
+4 -6
View File
@@ -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(