Add CRD Controller for Network
[ovn4nfv-k8s-plugin.git] / internal / pkg / ovn / common.go
index b504440..09d770b 100644 (file)
@@ -3,71 +3,67 @@ package ovn
 import (
        "encoding/json"
        "fmt"
-       "github.com/sirupsen/logrus"
        "math/big"
        "math/rand"
        "net"
+       logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
        "time"
 )
 
-func SetupDistributedRouter(name string) error {
+var log = logf.Log.WithName("ovn")
 
-       // Make sure br-int is created.
-       stdout, stderr, err := RunOVSVsctlUnix("--", "--may-exist", "add-br", "br-int")
-       if err != nil {
-               logrus.Errorf("Failed to create br-int, stdout: %q, stderr: %q, error: %v", stdout, stderr, err)
-               return err
+func 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
+}
+
+func setupDistributedRouter(name string) error {
+
        // Create a single common distributed router for the cluster.
-       stdout, stderr, err = RunOVNNbctlUnix("--", "--may-exist", "lr-add", name, "--", "set", "logical_router", name, "external_ids:ovn4nfv-cluster-router=yes")
+       stdout, stderr, err := RunOVNNbctl("--", "--may-exist", "lr-add", name, "--", "set", "logical_router", name, "external_ids:ovn4nfv-cluster-router=yes")
        if err != nil {
-               logrus.Errorf("Failed to create a single common distributed router for the cluster, stdout: %q, stderr: %q, error: %v", stdout, stderr, err)
+               log.Error(err, "Failed to create a single common distributed router for the cluster", "stdout", stdout, "stderr", stderr)
                return err
        }
        // Create a logical switch called "ovn4nfv-join" that will be used to connect gateway routers to the distributed router.
        // The "ovn4nfv-join" will be allocated IP addresses in the range 100.64.1.0/24.
-       stdout, stderr, err = RunOVNNbctlUnix("--may-exist", "ls-add", "ovn4nfv-join")
+       stdout, stderr, err = RunOVNNbctl("--may-exist", "ls-add", "ovn4nfv-join")
        if err != nil {
-               logrus.Errorf("Failed to create logical switch called \"ovn4nfv-join\", stdout: %q, stderr: %q, error: %v", stdout, stderr, err)
+               log.Error(err, "Failed to create logical switch called \"ovn4nfv-join\"", "stdout", stdout, "stderr", stderr)
                return err
        }
        // Connect the distributed router to "ovn4nfv-join".
-       routerMac, stderr, err := RunOVNNbctlUnix("--if-exist", "get", "logical_router_port", "rtoj-"+name, "mac")
+       routerMac, stderr, err := RunOVNNbctl("--if-exist", "get", "logical_router_port", "rtoj-"+name, "mac")
        if err != nil {
-               logrus.Errorf("Failed to get logical router port rtoj-%v, stderr: %q, error: %v", name, stderr, err)
+               log.Error(err, "Failed to get logical router port rtoj-", "name", name, "stdout", stdout, "stderr", stderr)
                return err
        }
        if routerMac == "" {
                routerMac = generateMac()
-               stdout, stderr, err = RunOVNNbctlUnix("--", "--may-exist", "lrp-add", name, "rtoj-"+name, routerMac, "100.64.1.1/24", "--", "set", "logical_router_port", "rtoj-"+name, "external_ids:connect_to_ovn4nfvjoin=yes")
+               stdout, stderr, err = RunOVNNbctl("--", "--may-exist", "lrp-add", name, "rtoj-"+name, routerMac, "100.64.1.1/24", "--", "set", "logical_router_port", "rtoj-"+name, "external_ids:connect_to_ovn4nfvjoin=yes")
                if err != nil {
-                       logrus.Errorf("Failed to add logical router port rtoj-%v, stdout: %q, stderr: %q, error: %v", name, stdout, stderr, err)
+                       log.Error(err, "Failed to add logical router port rtoj", "name", name, "stdout", stdout, "stderr", stderr)
                        return err
                }
        }
        // Connect the switch "ovn4nfv-join" to the router.
-       stdout, stderr, err = RunOVNNbctlUnix("--", "--may-exist", "lsp-add", "ovn4nfv-join", "jtor-"+name, "--", "set", "logical_switch_port", "jtor-"+name, "type=router", "options:router-port=rtoj-"+name, "addresses="+"\""+routerMac+"\"")
+       stdout, stderr, err = RunOVNNbctl("--", "--may-exist", "lsp-add", "ovn4nfv-join", "jtor-"+name, "--", "set", "logical_switch_port", "jtor-"+name, "type=router", "options:router-port=rtoj-"+name, "addresses="+"\""+routerMac+"\"")
        if err != nil {
-               logrus.Errorf("Failed to add logical switch port to logical router, stdout: %q, stderr: %q, error: %v", stdout, stderr, err)
+               log.Error(err, "Failed to add logical switch port to logical router", "stdout", stdout, "stderr", stderr)
                return err
        }
        return nil
 }
 
-func 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
-}
-
 // generateMac generates mac address.
 func generateMac() string {
        prefix := "00:00:00"