Signed-off-by: msabansal <sabansal@microsoft.com>
... | ... |
@@ -20,6 +20,7 @@ import ( |
20 | 20 |
"github.com/docker/docker/runconfig" |
21 | 21 |
"github.com/docker/libnetwork" |
22 | 22 |
nwconfig "github.com/docker/libnetwork/config" |
23 |
+ "github.com/docker/libnetwork/datastore" |
|
23 | 24 |
winlibnetwork "github.com/docker/libnetwork/drivers/windows" |
24 | 25 |
"github.com/docker/libnetwork/netlabel" |
25 | 26 |
"github.com/docker/libnetwork/options" |
... | ... |
@@ -261,9 +262,12 @@ func (daemon *Daemon) initNetworkController(config *Config, activeSandboxes map[ |
261 | 261 |
} |
262 | 262 |
|
263 | 263 |
if !found { |
264 |
- err = v.Delete() |
|
265 |
- if err != nil { |
|
266 |
- return nil, err |
|
264 |
+ // global networks should not be deleted by local HNS |
|
265 |
+ if v.Info().Scope() != datastore.GlobalScope { |
|
266 |
+ err = v.Delete() |
|
267 |
+ if err != nil { |
|
268 |
+ logrus.Errorf("Error occurred when removing network %v", err) |
|
269 |
+ } |
|
267 | 270 |
} |
268 | 271 |
} |
269 | 272 |
} |
... | ... |
@@ -300,6 +304,10 @@ func (daemon *Daemon) initNetworkController(config *Config, activeSandboxes map[ |
300 | 300 |
|
301 | 301 |
controller.WalkNetworks(s) |
302 | 302 |
if n != nil { |
303 |
+ // global networks should not be deleted by local HNS |
|
304 |
+ if n.Info().Scope() == datastore.GlobalScope { |
|
305 |
+ continue |
|
306 |
+ } |
|
303 | 307 |
v.Name = n.Name() |
304 | 308 |
// This will not cause network delete from HNS as the network |
305 | 309 |
// is not yet populated in the libnetwork windows driver |
... | ... |
@@ -62,6 +62,7 @@ func (daemon *Daemon) getLibcontainerdCreateOptions(container *container.Contain |
62 | 62 |
// Get endpoints for the libnetwork allocated networks to the container |
63 | 63 |
var epList []string |
64 | 64 |
AllowUnqualifiedDNSQuery := false |
65 |
+ gwHNSID := "" |
|
65 | 66 |
if container.NetworkSettings != nil { |
66 | 67 |
for n := range container.NetworkSettings.Networks { |
67 | 68 |
sn, err := daemon.FindNetwork(n) |
... | ... |
@@ -78,6 +79,14 @@ func (daemon *Daemon) getLibcontainerdCreateOptions(container *container.Contain |
78 | 78 |
if err != nil { |
79 | 79 |
continue |
80 | 80 |
} |
81 |
+ |
|
82 |
+ if data["GW_INFO"] != nil { |
|
83 |
+ gwInfo := data["GW_INFO"].(map[string]interface{}) |
|
84 |
+ if gwInfo["hnsid"] != nil { |
|
85 |
+ gwHNSID = gwInfo["hnsid"].(string) |
|
86 |
+ } |
|
87 |
+ } |
|
88 |
+ |
|
81 | 89 |
if data["hnsid"] != nil { |
82 | 90 |
epList = append(epList, data["hnsid"].(string)) |
83 | 91 |
} |
... | ... |
@@ -88,6 +97,10 @@ func (daemon *Daemon) getLibcontainerdCreateOptions(container *container.Contain |
88 | 88 |
} |
89 | 89 |
} |
90 | 90 |
|
91 |
+ if gwHNSID != "" { |
|
92 |
+ epList = append(epList, gwHNSID) |
|
93 |
+ } |
|
94 |
+ |
|
91 | 95 |
// Read and add credentials from the security options if a credential spec has been provided. |
92 | 96 |
if container.HostConfig.SecurityOpt != nil { |
93 | 97 |
for _, sOpt := range container.HostConfig.SecurityOpt { |