From 4ca879c24161b1cc204544adb31b8dc16e04b2e9 Mon Sep 17 00:00:00 2001 From: Abhinandan Prativadi Date: Fri, 11 May 2018 14:37:01 -0700 Subject: [PATCH] Fixing network inspect for swarm Signed-off-by: Abhinandan Prativadi Upstream-commit: a059d6f4f5eb5fdb319b6f715a9bb50eb5d6173d Component: engine --- .../engine/daemon/cluster/convert/network.go | 12 ++++++------ .../engine/integration/network/inspect_test.go | 16 +++++++++++++--- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/components/engine/daemon/cluster/convert/network.go b/components/engine/daemon/cluster/convert/network.go index 44f5f56466..34660fc4ff 100644 --- a/components/engine/daemon/cluster/convert/network.go +++ b/components/engine/daemon/cluster/convert/network.go @@ -140,13 +140,13 @@ func swarmPortConfigToAPIPortConfig(portConfig *swarmapi.PortConfig) types.PortC func BasicNetworkFromGRPC(n swarmapi.Network) basictypes.NetworkResource { spec := n.Spec var ipam networktypes.IPAM - if spec.IPAM != nil { - if spec.IPAM.Driver != nil { - ipam.Driver = spec.IPAM.Driver.Name - ipam.Options = spec.IPAM.Driver.Options + if n.IPAM != nil { + if n.IPAM.Driver != nil { + ipam.Driver = n.IPAM.Driver.Name + ipam.Options = n.IPAM.Driver.Options } - ipam.Config = make([]networktypes.IPAMConfig, 0, len(spec.IPAM.Configs)) - for _, ic := range spec.IPAM.Configs { + ipam.Config = make([]networktypes.IPAMConfig, 0, len(n.IPAM.Configs)) + for _, ic := range n.IPAM.Configs { ipamConfig := networktypes.IPAMConfig{ Subnet: ic.Subnet, IPRange: ic.Range, diff --git a/components/engine/integration/network/inspect_test.go b/components/engine/integration/network/inspect_test.go index b728da9d23..e88d739fd9 100644 --- a/components/engine/integration/network/inspect_test.go +++ b/components/engine/integration/network/inspect_test.go @@ -162,9 +162,19 @@ func noTasks(client client.ServiceAPIClient) func(log poll.LogT) poll.Result { // Check to see if Service and Tasks info are part of the inspect verbose response func validNetworkVerbose(network types.NetworkResource, service string, instances uint64) bool { if service, ok := network.Services[service]; ok { - if len(service.Tasks) == int(instances) { - return true + if len(service.Tasks) != int(instances) { + return false } } - return false + + if network.IPAM.Config == nil { + return false + } + + for _, cfg := range network.IPAM.Config { + if cfg.Gateway == "" || cfg.Subnet == "" { + return false + } + } + return true }