diff options
author | Ritu Sood <ritu.sood@intel.com> | 2018-11-10 09:56:52 -0800 |
---|---|---|
committer | Victor Morales <victor.morales@intel.com> | 2018-11-20 01:50:58 -0800 |
commit | 5026d1d89b05eac5e004279b742df6745a73d93a (patch) | |
tree | 8f9aed1e476706e008b746debda6d616bd0ac7a5 /internal/pkg/ovn/router.go | |
parent | 9506ae48eb545d502cc3685a99862740d28e7afb (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/router.go')
-rw-r--r-- | internal/pkg/ovn/router.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/internal/pkg/ovn/router.go b/internal/pkg/ovn/router.go new file mode 100644 index 0000000..d98c463 --- /dev/null +++ b/internal/pkg/ovn/router.go @@ -0,0 +1,50 @@ +package ovn + +import ( + "github.com/sirupsen/logrus" + "ovn4nfv-k8s-plugin/internal/pkg/util" +) + +func SetupMaster(name string) error { + + // Make sure br-int is created. + stdout, stderr, err := util.RunOVSVsctl("--", "--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 + } + // Create a single common distributed router for the cluster. + stdout, stderr, err = util.RunOVNNbctlUnix("--", "--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) + 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 = util.RunOVNNbctlUnix("--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) + return err + } + // Connect the distributed router to "ovn4nfv-join". + routerMac, stderr, err := util.RunOVNNbctlUnix("--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) + return err + } + if routerMac == "" { + routerMac = util.GenerateMac() + stdout, stderr, err = util.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") + if err != nil { + logrus.Errorf("Failed to add logical router port rtoj-%v, stdout: %q, stderr: %q, error: %v", name, stdout, stderr, err) + return err + } + } + // Connect the switch "ovn4nfv-join" to the router. + stdout, stderr, err = util.RunOVNNbctlUnix("--", "--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) + return err + } + return nil +} |