Fix docker issues with global and dead tasks
This commit is contained in:
parent
eb1ffae01b
commit
355b4706d3
|
@ -626,11 +626,12 @@ func (provider *Docker) listServices(ctx context.Context, dockerClient client.AP
|
||||||
for _, service := range serviceList {
|
for _, service := range serviceList {
|
||||||
dockerData := parseService(service, networkMap)
|
dockerData := parseService(service, networkMap)
|
||||||
useSwarmLB, _ := strconv.ParseBool(provider.getIsBackendLBSwarm(dockerData))
|
useSwarmLB, _ := strconv.ParseBool(provider.getIsBackendLBSwarm(dockerData))
|
||||||
|
isGlobalSvc := service.Spec.Mode.Global != nil
|
||||||
|
|
||||||
if useSwarmLB {
|
if useSwarmLB {
|
||||||
dockerDataList = append(dockerDataList, dockerData)
|
dockerDataList = append(dockerDataList, dockerData)
|
||||||
} else {
|
} else {
|
||||||
dockerDataListTasks, err = listTasks(ctx, dockerClient, service.ID, dockerData, networkMap)
|
dockerDataListTasks, err = listTasks(ctx, dockerClient, service.ID, dockerData, networkMap, isGlobalSvc)
|
||||||
|
|
||||||
for _, dockerDataTask := range dockerDataListTasks {
|
for _, dockerDataTask := range dockerDataListTasks {
|
||||||
dockerDataList = append(dockerDataList, dockerDataTask)
|
dockerDataList = append(dockerDataList, dockerDataTask)
|
||||||
|
@ -675,9 +676,10 @@ func parseService(service swarmtypes.Service, networkMap map[string]*dockertypes
|
||||||
}
|
}
|
||||||
|
|
||||||
func listTasks(ctx context.Context, dockerClient client.APIClient, serviceID string,
|
func listTasks(ctx context.Context, dockerClient client.APIClient, serviceID string,
|
||||||
serviceDockerData dockerData, networkMap map[string]*dockertypes.NetworkResource) ([]dockerData, error) {
|
serviceDockerData dockerData, networkMap map[string]*dockertypes.NetworkResource, isGlobalSvc bool) ([]dockerData, error) {
|
||||||
serviceIDFilter := filters.NewArgs()
|
serviceIDFilter := filters.NewArgs()
|
||||||
serviceIDFilter.Add("service", serviceID)
|
serviceIDFilter.Add("service", serviceID)
|
||||||
|
serviceIDFilter.Add("desired-state", "running")
|
||||||
taskList, err := dockerClient.TaskList(ctx, dockertypes.TaskListOptions{Filter: serviceIDFilter})
|
taskList, err := dockerClient.TaskList(ctx, dockertypes.TaskListOptions{Filter: serviceIDFilter})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -686,13 +688,13 @@ func listTasks(ctx context.Context, dockerClient client.APIClient, serviceID str
|
||||||
var dockerDataList []dockerData
|
var dockerDataList []dockerData
|
||||||
|
|
||||||
for _, task := range taskList {
|
for _, task := range taskList {
|
||||||
dockerData := parseTasks(task, serviceDockerData, networkMap)
|
dockerData := parseTasks(task, serviceDockerData, networkMap, isGlobalSvc)
|
||||||
dockerDataList = append(dockerDataList, dockerData)
|
dockerDataList = append(dockerDataList, dockerData)
|
||||||
}
|
}
|
||||||
return dockerDataList, err
|
return dockerDataList, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseTasks(task swarmtypes.Task, serviceDockerData dockerData, networkMap map[string]*dockertypes.NetworkResource) dockerData {
|
func parseTasks(task swarmtypes.Task, serviceDockerData dockerData, networkMap map[string]*dockertypes.NetworkResource, isGlobalSvc bool) dockerData {
|
||||||
dockerData := dockerData{
|
dockerData := dockerData{
|
||||||
ServiceName: serviceDockerData.Name,
|
ServiceName: serviceDockerData.Name,
|
||||||
Name: serviceDockerData.Name + "." + strconv.Itoa(task.Slot),
|
Name: serviceDockerData.Name + "." + strconv.Itoa(task.Slot),
|
||||||
|
@ -700,6 +702,10 @@ func parseTasks(task swarmtypes.Task, serviceDockerData dockerData, networkMap m
|
||||||
NetworkSettings: networkSettings{},
|
NetworkSettings: networkSettings{},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if isGlobalSvc == true {
|
||||||
|
dockerData.Name = serviceDockerData.Name + "." + task.ID
|
||||||
|
}
|
||||||
|
|
||||||
if task.NetworksAttachments != nil {
|
if task.NetworksAttachments != nil {
|
||||||
dockerData.NetworkSettings.Networks = make(map[string]*networkData)
|
dockerData.NetworkSettings.Networks = make(map[string]*networkData)
|
||||||
for _, virtualIP := range task.NetworksAttachments {
|
for _, virtualIP := range task.NetworksAttachments {
|
||||||
|
|
Loading…
Reference in a new issue