Update Rancher API integration to go-rancher client v2.
This commit is contained in:
parent
d89b234cad
commit
07c6e33598
188 changed files with 5349 additions and 1969 deletions
|
@ -11,7 +11,7 @@ import (
|
|||
"github.com/containous/traefik/safe"
|
||||
"github.com/containous/traefik/types"
|
||||
"github.com/mitchellh/mapstructure"
|
||||
rancher "github.com/rancher/go-rancher/client"
|
||||
rancher "github.com/rancher/go-rancher/v2"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -72,11 +72,11 @@ func (p *Provider) apiProvide(configurationChan chan<- types.ConfigMessage, pool
|
|||
}
|
||||
|
||||
ctx := context.Background()
|
||||
var environments = listRancherEnvironments(rancherClient)
|
||||
var stacks = listRancherStacks(rancherClient)
|
||||
var services = listRancherServices(rancherClient)
|
||||
var container = listRancherContainer(rancherClient)
|
||||
|
||||
var rancherData = parseAPISourcedRancherData(environments, services, container)
|
||||
var rancherData = parseAPISourcedRancherData(stacks, services, container)
|
||||
|
||||
configuration := p.loadRancherConfig(rancherData)
|
||||
configurationChan <- types.ConfigMessage{
|
||||
|
@ -93,11 +93,11 @@ func (p *Provider) apiProvide(configurationChan chan<- types.ConfigMessage, pool
|
|||
case <-ticker.C:
|
||||
|
||||
log.Debugf("Refreshing new Data from Provider API")
|
||||
var environments = listRancherEnvironments(rancherClient)
|
||||
var stacks = listRancherStacks(rancherClient)
|
||||
var services = listRancherServices(rancherClient)
|
||||
var container = listRancherContainer(rancherClient)
|
||||
|
||||
rancherData := parseAPISourcedRancherData(environments, services, container)
|
||||
rancherData := parseAPISourcedRancherData(stacks, services, container)
|
||||
|
||||
configuration := p.loadRancherConfig(rancherData)
|
||||
if configuration != nil {
|
||||
|
@ -129,24 +129,21 @@ func (p *Provider) apiProvide(configurationChan chan<- types.ConfigMessage, pool
|
|||
return nil
|
||||
}
|
||||
|
||||
func listRancherEnvironments(client *rancher.RancherClient) []*rancher.Environment {
|
||||
func listRancherStacks(client *rancher.RancherClient) []*rancher.Stack {
|
||||
|
||||
// Rancher Environment in frontend UI is actually a stack
|
||||
// https://forums.rancher.com/t/api-key-for-all-environments/279/9
|
||||
var stackList = []*rancher.Stack{}
|
||||
|
||||
var environmentList = []*rancher.Environment{}
|
||||
|
||||
environments, err := client.Environment.List(nil)
|
||||
stacks, err := client.Stack.List(withoutPagination)
|
||||
|
||||
if err != nil {
|
||||
log.Errorf("Cannot get Rancher Environments %+v", err)
|
||||
log.Errorf("Cannot get Provider Stacks %+v", err)
|
||||
}
|
||||
|
||||
for k := range environments.Data {
|
||||
environmentList = append(environmentList, &environments.Data[k])
|
||||
for k := range stacks.Data {
|
||||
stackList = append(stackList, &stacks.Data[k])
|
||||
}
|
||||
|
||||
return environmentList
|
||||
return stackList
|
||||
}
|
||||
|
||||
func listRancherServices(client *rancher.RancherClient) []*rancher.Service {
|
||||
|
@ -197,19 +194,19 @@ func listRancherContainer(client *rancher.RancherClient) []*rancher.Container {
|
|||
return containerList
|
||||
}
|
||||
|
||||
func parseAPISourcedRancherData(environments []*rancher.Environment, services []*rancher.Service, containers []*rancher.Container) []rancherData {
|
||||
func parseAPISourcedRancherData(stacks []*rancher.Stack, services []*rancher.Service, containers []*rancher.Container) []rancherData {
|
||||
var rancherDataList []rancherData
|
||||
|
||||
for _, environment := range environments {
|
||||
for _, stack := range stacks {
|
||||
|
||||
for _, service := range services {
|
||||
|
||||
if service.EnvironmentId != environment.Id {
|
||||
if service.StackId != stack.Id {
|
||||
continue
|
||||
}
|
||||
|
||||
rancherData := rancherData{
|
||||
Name: environment.Name + "/" + service.Name,
|
||||
Name: service.Name + "/" + stack.Name,
|
||||
Health: service.HealthState,
|
||||
State: service.State,
|
||||
Labels: make(map[string]string),
|
||||
|
@ -217,7 +214,7 @@ func parseAPISourcedRancherData(environments []*rancher.Environment, services []
|
|||
}
|
||||
|
||||
if service.LaunchConfig == nil || service.LaunchConfig.Labels == nil {
|
||||
log.Warnf("Rancher Service Labels are missing. Environment: %s, service: %s", environment.Name, service.Name)
|
||||
log.Warnf("Rancher Service Labels are missing. Stack: %s, service: %s", stack.Name, service.Name)
|
||||
} else {
|
||||
for key, value := range service.LaunchConfig.Labels {
|
||||
rancherData.Labels[key] = value.(string)
|
||||
|
@ -225,7 +222,7 @@ func parseAPISourcedRancherData(environments []*rancher.Environment, services []
|
|||
}
|
||||
|
||||
for _, container := range containers {
|
||||
if container.Labels[labelRancherStackServiceName] == rancherData.Name &&
|
||||
if container.Labels[labelRancherStackServiceName] == stack.Name+"/"+service.Name &&
|
||||
containerFilter(container.Name, container.HealthState, container.State) {
|
||||
|
||||
if container.NetworkMode == hostNetwork {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue