diff options
author | Ritu Sood <ritu.sood@intel.com> | 2019-02-28 12:17:07 -0800 |
---|---|---|
committer | Ritu Sood <ritu.sood@intel.com> | 2019-03-05 00:22:55 -0800 |
commit | 3e1cc4ea68b531d934354f9ebeef15ca08913238 (patch) | |
tree | 130fc9c994f155947edea18c1e6b483f6d990216 /internal/pkg/ovn/pods.go | |
parent | 95d21eeecec4ea01078c62527faa0fe8c3f9c539 (diff) |
Add support for Provider network interface
To support provider networks added a new
netType "provider". Static IP address
required for provider network interface.
Change-Id: I40f508ead2eefc352b735c6d4773d20fa821769a
Signed-off-by: Ritu Sood <ritu.sood@intel.com>
Diffstat (limited to 'internal/pkg/ovn/pods.go')
-rw-r--r-- | internal/pkg/ovn/pods.go | 47 |
1 files changed, 34 insertions, 13 deletions
diff --git a/internal/pkg/ovn/pods.go b/internal/pkg/ovn/pods.go index cc3d459..770f4e5 100644 --- a/internal/pkg/ovn/pods.go +++ b/internal/pkg/ovn/pods.go @@ -80,7 +80,7 @@ func (oc *Controller) deleteLogicalPort(pod *kapi.Pod) { return } -func (oc *Controller) addLogicalPortWithSwitch(pod *kapi.Pod, logicalSwitch, ipAddress, macAddress, interfaceName string) (annotation string) { +func (oc *Controller) addLogicalPortWithSwitch(pod *kapi.Pod, logicalSwitch, ipAddress, macAddress, interfaceName, netType string) (annotation string) { var out, stderr string var err error var isStaticIP bool @@ -136,11 +136,6 @@ func (oc *Controller) addLogicalPortWithSwitch(pod *kapi.Pod, logicalSwitch, ipA } } oc.logicalPortCache[portName] = logicalSwitch - gatewayIP, mask, err := oc.getGatewayFromSwitch(logicalSwitch) - if err != nil { - logrus.Errorf("Error obtaining gateway address for switch %s: %s", logicalSwitch, err) - return - } count := 30 for count > 0 { @@ -178,7 +173,18 @@ func (oc *Controller) addLogicalPortWithSwitch(pod *kapi.Pod, logicalSwitch, ipA logrus.Errorf("Error while obtaining addresses for %s", portName) return } - annotation = fmt.Sprintf(`{\"ip_address\":\"%s/%s\", \"mac_address\":\"%s\", \"gateway_ip\": \"%s\"}`, addresses[1], mask, addresses[0], gatewayIP) + + if netType == "virtual" { + gatewayIP, mask, err := oc.getGatewayFromSwitch(logicalSwitch) + if err != nil { + logrus.Errorf("Error obtaining gateway address for switch %s: %s", logicalSwitch, err) + return + } + annotation = fmt.Sprintf(`{\"ip_address\":\"%s/%s\", \"mac_address\":\"%s\", \"gateway_ip\": \"%s\"}`, addresses[1], mask, addresses[0], gatewayIP) + } else { + annotation = fmt.Sprintf(`{\"ip_address\":\"%s\", \"mac_address\":\"%s\", \"gateway_ip\": \"%s\"}`, addresses[1], addresses[0], "") + } + return annotation } @@ -203,7 +209,7 @@ func findLogicalSwitch(name string) bool { func (oc *Controller) addLogicalPort(pod *kapi.Pod) { var logicalSwitch string - var ipAddress, macAddress, interfaceName, defaultGateway string + var ipAddress, macAddress, interfaceName, defaultGateway, netType string annotation := pod.Annotations["ovnNetwork"] @@ -217,10 +223,15 @@ func (oc *Controller) addLogicalPort(pod *kapi.Pod) { ovnString = "[" for _, net := range ovnNetObjs { logicalSwitch = net["name"].(string) + if !findLogicalSwitch(logicalSwitch) { + logrus.Errorf("Logical Switch not found") + return + } if _, ok := net["interface"]; ok { interfaceName = net["interface"].(string) } else { - interfaceName = "" + logrus.Errorf("Interface name must be provided") + return } if _, ok := net["ipAddress"]; ok { ipAddress = net["ipAddress"].(string) @@ -237,14 +248,24 @@ func (oc *Controller) addLogicalPort(pod *kapi.Pod) { } else { defaultGateway = "false" } - if !findLogicalSwitch(logicalSwitch) { + if _, ok := net["netType"]; ok { + netType = net["netType"].(string) + } else { + netType = "virtual" + } + if netType != "provider" && netType != "virtual" { + logrus.Errorf("netType is not supported") return } - if interfaceName == "" { - logrus.Errorf("Interface name must be provided") + if netType == "provider" && ipAddress == "" { + logrus.Errorf("ipAddress must be provided for netType Provider") + return + } + if netType == "provider" && defaultGateway == "true" { + logrus.Errorf("defaultGateway not supported for provider network - Use ovnNetworkRoutes to add routes") return } - outStr = oc.addLogicalPortWithSwitch(pod, logicalSwitch, ipAddress, macAddress, interfaceName) + outStr = oc.addLogicalPortWithSwitch(pod, logicalSwitch, ipAddress, macAddress, interfaceName, netType) if outStr == "" { return } |