aboutsummaryrefslogtreecommitdiffstats
path: root/internal/pkg/ovn/common.go
diff options
context:
space:
mode:
authorRitu Sood <ritu.sood@intel.com>2018-11-10 09:56:52 -0800
committerVictor Morales <victor.morales@intel.com>2018-11-20 01:50:58 -0800
commit5026d1d89b05eac5e004279b742df6745a73d93a (patch)
tree8f9aed1e476706e008b746debda6d616bd0ac7a5 /internal/pkg/ovn/common.go
parent9506ae48eb545d502cc3685a99862740d28e7afb (diff)
Seed code for the Plugin
The code includes ovn4nfvk8s Plugin & CNI. It implements multiple OVN interfaces for Pods and assumes Multus (or similar CNI) calls its CNI not as first CNI. Change-Id: I524c1d18752eb6dbc8d34addd3b60d5bbaa06ff4 Signed-off-by: Ritu Sood <ritu.sood@intel.com> Signed-off-by: Victor Morales <victor.morales@intel.com>
Diffstat (limited to 'internal/pkg/ovn/common.go')
-rw-r--r--internal/pkg/ovn/common.go89
1 files changed, 89 insertions, 0 deletions
diff --git a/internal/pkg/ovn/common.go b/internal/pkg/ovn/common.go
new file mode 100644
index 0000000..16923ea
--- /dev/null
+++ b/internal/pkg/ovn/common.go
@@ -0,0 +1,89 @@
+package ovn
+
+import (
+ "encoding/json"
+ "fmt"
+ "github.com/sirupsen/logrus"
+ "strings"
+)
+
+func (oc *Controller) getIPFromOvnAnnotation(ovnAnnotation string) string {
+ if ovnAnnotation == "" {
+ return ""
+ }
+
+ var ovnAnnotationMap map[string]string
+ err := json.Unmarshal([]byte(ovnAnnotation), &ovnAnnotationMap)
+ if err != nil {
+ logrus.Errorf("Error in json unmarshaling ovn annotation "+
+ "(%v)", err)
+ return ""
+ }
+
+ ipAddressMask := strings.Split(ovnAnnotationMap["ip_address"], "/")
+ if len(ipAddressMask) != 2 {
+ logrus.Errorf("Error in splitting ip address")
+ return ""
+ }
+
+ return ipAddressMask[0]
+}
+
+func (oc *Controller) getMacFromOvnAnnotation(ovnAnnotation string) string {
+ if ovnAnnotation == "" {
+ return ""
+ }
+
+ var ovnAnnotationMap map[string]string
+ err := json.Unmarshal([]byte(ovnAnnotation), &ovnAnnotationMap)
+ if err != nil {
+ logrus.Errorf("Error in json unmarshaling ovn annotation "+
+ "(%v)", err)
+ return ""
+ }
+
+ return ovnAnnotationMap["mac_address"]
+}
+
+func stringSliceMembership(slice []string, key string) bool {
+ for _, val := range slice {
+ if val == key {
+ return true
+ }
+ }
+ return false
+}
+
+func (oc *Controller) getNetworkFromOvnAnnotation(ovnAnnotation string) string {
+ if ovnAnnotation == "" {
+ logrus.Errorf("getNetworkFromOvnAnnotation ovnAnnotation: %s", ovnAnnotation)
+ return ""
+ }
+ logrus.Infof("getNetworkFromOvnAnnotation ovnAnnotation: %s", ovnAnnotation)
+
+ var ovnAnnotationMap map[string]string
+ err := json.Unmarshal([]byte(ovnAnnotation), &ovnAnnotationMap)
+ if err != nil {
+ logrus.Errorf("Error in json unmarshaling ovn annotation "+
+ "(%v)", err)
+ return ""
+ }
+ for key, value := range ovnAnnotationMap {
+ logrus.Infof("getNetworkFromOvnAnnotation %s: %s", key, value)
+ }
+ return ovnAnnotationMap["name"]
+}
+
+func (oc *Controller) parseOvnNetworkObject(ovnnetwork string) ([]map[string]interface{}, error) {
+ var ovnNet []map[string]interface{}
+
+ if ovnnetwork == "" {
+ return nil, fmt.Errorf("parseOvnNetworkObject:error")
+ }
+
+ if err := json.Unmarshal([]byte(ovnnetwork), &ovnNet); err != nil {
+ return nil, fmt.Errorf("parseOvnNetworkObject: failed to load ovn network err: %v | ovn network: %v", err, ovnnetwork)
+ }
+
+ return ovnNet, nil
+}