runtimes/docker/network: only read ipam config if exists
- fixes #576 - IPAM config is empty for e.g. the "host" network
This commit is contained in:
parent
5383ba3f6f
commit
b4c910b729
@ -74,6 +74,13 @@ func (d Docker) GetNetwork(ctx context.Context, searchNet *k3d.ClusterNetwork) (
|
|||||||
return nil, runtimeErr.ErrRuntimeNetworkNotExists
|
return nil, runtimeErr.ErrRuntimeNetworkNotExists
|
||||||
}
|
}
|
||||||
|
|
||||||
|
network := &k3d.ClusterNetwork{
|
||||||
|
Name: networkList[0].Name,
|
||||||
|
ID: networkList[0].ID,
|
||||||
|
}
|
||||||
|
|
||||||
|
// for networks that have an IPAM config, we inspect that as well (e.g. "host" network doesn't have it)
|
||||||
|
if len(networkList[0].IPAM.Config) > 0 {
|
||||||
prefix, err := netaddr.ParseIPPrefix(networkList[0].IPAM.Config[0].Subnet)
|
prefix, err := netaddr.ParseIPPrefix(networkList[0].IPAM.Config[0].Subnet)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -84,15 +91,11 @@ func (d Docker) GetNetwork(ctx context.Context, searchNet *k3d.ClusterNetwork) (
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
network := &k3d.ClusterNetwork{
|
network.IPAM = k3d.IPAM{
|
||||||
Name: networkList[0].Name,
|
|
||||||
ID: networkList[0].ID,
|
|
||||||
IPAM: k3d.IPAM{
|
|
||||||
IPPrefix: prefix,
|
IPPrefix: prefix,
|
||||||
IPsUsed: []netaddr.IP{
|
IPsUsed: []netaddr.IP{
|
||||||
gateway,
|
gateway,
|
||||||
},
|
},
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, container := range networkList[0].Containers {
|
for _, container := range networkList[0].Containers {
|
||||||
@ -111,6 +114,9 @@ func (d Docker) GetNetwork(ctx context.Context, searchNet *k3d.ClusterNetwork) (
|
|||||||
for _, used := range searchNet.IPAM.IPsUsed {
|
for _, used := range searchNet.IPAM.IPsUsed {
|
||||||
network.IPAM.IPsUsed = append(network.IPAM.IPsUsed, used)
|
network.IPAM.IPsUsed = append(network.IPAM.IPsUsed, used)
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
log.Debugf("Network %s does not have an IPAM config", network.Name)
|
||||||
|
}
|
||||||
|
|
||||||
// Only one Network allowed, but some functions don't care about this, so they can ignore the error and just use the first one returned
|
// Only one Network allowed, but some functions don't care about this, so they can ignore the error and just use the first one returned
|
||||||
if len(networkList) > 1 {
|
if len(networkList) > 1 {
|
||||||
|
Loading…
Reference in New Issue
Block a user