aboutsummaryrefslogtreecommitdiffstats
path: root/internal/pkg/ovn/pods.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/pkg/ovn/pods.go')
-rw-r--r--internal/pkg/ovn/pods.go47
1 files changed, 34 insertions, 13 deletions
diff --git a/internal/pkg/ovn/pods.go b/internal/pkg/ovn/pods.go
index f217bf6..fcd258e 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
@@ -140,11 +140,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 {
@@ -182,7 +177,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
}
@@ -207,7 +213,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"]
@@ -221,10 +227,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)
@@ -241,14 +252,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
}