summaryrefslogtreecommitdiffstats
path: root/src/k8splugin/plugins/ovn4nfvk8s-network
diff options
context:
space:
mode:
authorKonrad Bańka <k.banka@samsung.com>2019-09-04 17:22:42 +0200
committerRitu Sood <Ritu.Sood@intel.com>2019-09-05 16:50:50 +0000
commitb5431ed7c0f4659269143daedb1651ef9a303a89 (patch)
tree7cc08f87d2580e8f5fe490bf154b1edf230d61e4 /src/k8splugin/plugins/ovn4nfvk8s-network
parent94174f17d9bbc8187f668e1656527473c38e9d4c (diff)
Remove ovn4nfvk8s network plugin
As ovn4nfv networks are now handled on k8s side by created CRD, this plugin is no longer necessary. Removed all references to ovn Issue-ID: MULTICLOUD-733 Signed-off-by: Konrad Bańka <k.banka@samsung.com> Change-Id: I7ad6c6d9b3b4fd8f249796f437e69c7df4e701cc
Diffstat (limited to 'src/k8splugin/plugins/ovn4nfvk8s-network')
-rw-r--r--src/k8splugin/plugins/ovn4nfvk8s-network/plugin.go153
-rw-r--r--src/k8splugin/plugins/ovn4nfvk8s-network/plugin_test.go145
2 files changed, 0 insertions, 298 deletions
diff --git a/src/k8splugin/plugins/ovn4nfvk8s-network/plugin.go b/src/k8splugin/plugins/ovn4nfvk8s-network/plugin.go
deleted file mode 100644
index bc2b2916..00000000
--- a/src/k8splugin/plugins/ovn4nfvk8s-network/plugin.go
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
-Copyright 2018 Intel Corporation.
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package main
-
-import (
- "bytes"
- "fmt"
- "log"
- "math/rand"
- "strings"
- "time"
- "unicode"
-
- "github.com/onap/multicloud-k8s/src/k8splugin/internal/config"
- v1 "github.com/onap/multicloud-k8s/src/k8splugin/plugins/network/v1"
-
- pkgerrors "github.com/pkg/errors"
- kexec "k8s.io/utils/exec"
-)
-
-const (
- ovn4nfvRouter = "ovn4nfv-master"
- ovnNbctlCommand = "ovn-nbctl"
-)
-
-type OVNNbctler interface {
- Run(args ...string) (string, string, error)
-}
-
-type OVNNbctl struct {
- run func(args ...string) (string, string, error)
- exec kexec.Interface
- path string
-}
-
-// Run a command via ovn-nbctl
-func (ctl *OVNNbctl) Run(args ...string) (string, string, error) {
- if ctl.exec == nil {
- ctl.exec = kexec.New()
- }
- if ctl.path == "" {
- nbctlPath, err := ctl.exec.LookPath(ovnNbctlCommand)
- if err != nil {
- return "", "", pkgerrors.Wrap(err, "Look nbctl path error")
- }
- ctl.path = nbctlPath
- }
-
- stdout := &bytes.Buffer{}
- stderr := &bytes.Buffer{}
- cmd := ctl.exec.Command(ctl.path, args...)
- cmd.SetStdout(stdout)
- cmd.SetStderr(stderr)
- err := cmd.Run()
-
- return strings.Trim(strings.TrimFunc(stdout.String(), unicode.IsSpace), "\""),
- stderr.String(), err
-}
-
-var ovnCmd OVNNbctler
-
-func init() {
- ovnCmd = &OVNNbctl{}
-}
-
-// CreateNetwork in OVN controller
-func CreateNetwork(network *v1.OnapNetwork) (string, error) {
-
- name := network.Spec.Name
- if name == "" {
- return "", pkgerrors.New("Invalid Network Name")
- }
-
- subnet := network.Spec.Subnet
- if subnet == "" {
- return "", pkgerrors.New("Invalid Subnet Address")
- }
-
- gatewayIPMask := network.Spec.Gateway
- if gatewayIPMask == "" {
- return "", pkgerrors.New("Invalid Gateway Address")
- }
-
- routerMac, stderr, err := ovnCmd.Run(getAuthStr(), "--if-exist", "-v", "get", "logical_router_port", "rtos-"+name, "mac")
- if err != nil {
- return "", pkgerrors.Wrapf(err, "Failed to get logical router port,stderr: %q, error: %v", stderr, err)
- }
-
- if routerMac == "" {
- log.Print("Generate MAC address")
- prefix := "00:00:00"
- newRand := rand.New(rand.NewSource(time.Now().UnixNano()))
- routerMac = fmt.Sprintf("%s:%02x:%02x:%02x", prefix, newRand.Intn(255), newRand.Intn(255), newRand.Intn(255))
- }
-
- _, stderr, err = ovnCmd.Run(getAuthStr(), "--may-exist", "lrp-add", ovn4nfvRouter, "rtos-"+name, routerMac, gatewayIPMask)
- if err != nil {
- return "", pkgerrors.Wrapf(err, "Failed to add logical port to router, stderr: %q, error: %v", stderr, err)
- }
-
- // Create a logical switch and set its subnet.
- stdout, stderr, err := ovnCmd.Run(getAuthStr(), "--", "--may-exist", "ls-add", name, "--", "set", "logical_switch", name, "other-config:subnet="+subnet, "external-ids:gateway_ip="+gatewayIPMask)
- if err != nil {
- return "", pkgerrors.Wrapf(err, "Failed to create a logical switch %v, stdout: %q, stderr: %q, error: %v", name, stdout, stderr, err)
- }
-
- // Connect the switch to the router.
- stdout, stderr, err = ovnCmd.Run(getAuthStr(), "--", "--may-exist", "lsp-add", name, "stor-"+name, "--", "set", "logical_switch_port", "stor-"+name, "type=router", "options:router-port=rtos-"+name, "addresses="+"\""+routerMac+"\"")
- if err != nil {
- return "", pkgerrors.Wrapf(err, "Failed to add logical port to switch, stdout: %q, stderr: %q, error: %v", stdout, stderr, err)
- }
-
- return name, nil
-}
-
-// DeleteNetwork in OVN controller
-func DeleteNetwork(name string) error {
- log.Printf("Deleting Network: Ovn4nfvk8s %s", name)
-
- stdout, stderr, err := ovnCmd.Run(getAuthStr(), "--if-exist", "ls-del", name)
- if err != nil {
- return pkgerrors.Wrapf(err, "Failed to delete switch %v, stdout: %q, stderr: %q, error: %v", name, stdout, stderr, err)
- }
-
- stdout, stderr, err = ovnCmd.Run(getAuthStr(), "--if-exist", "lrp-del", "rtos-"+name)
- if err != nil {
- return pkgerrors.Wrapf(err, "Failed to delete router port %v, stdout: %q, stderr: %q, error: %v", name, stdout, stderr, err)
- }
-
- stdout, stderr, err = ovnCmd.Run(getAuthStr(), "--if-exist", "lsp-del", "stor-"+name)
- if err != nil {
- return pkgerrors.Wrapf(err, "Failed to delete switch port %v, stdout: %q, stderr: %q, error: %v", name, stdout, stderr, err)
- }
-
- return nil
-}
-
-func getAuthStr() string {
- //TODO: Remove hardcoding: Use ESR data passed to Initialize
- ovnCentralAddress := config.GetConfiguration().OVNCentralAddress
- return "--db=tcp:" + ovnCentralAddress
-}
diff --git a/src/k8splugin/plugins/ovn4nfvk8s-network/plugin_test.go b/src/k8splugin/plugins/ovn4nfvk8s-network/plugin_test.go
deleted file mode 100644
index d1a94859..00000000
--- a/src/k8splugin/plugins/ovn4nfvk8s-network/plugin_test.go
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
-Copyright 2018 Intel Corporation.
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package main
-
-import (
- pkgerrors "github.com/pkg/errors"
- metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "github.com/onap/multicloud-k8s/src/k8splugin/plugins/network/v1"
- "reflect"
- "strings"
- "testing"
-)
-
-type mockOVNCmd struct {
- StdOut string
- StdErr string
- Err error
-}
-
-func (cmd *mockOVNCmd) Run(args ...string) (string, string, error) {
- return cmd.StdOut, cmd.StdErr, cmd.Err
-}
-
-func TestCreateOVN4NFVK8SNetwork(t *testing.T) {
- testCases := []struct {
- label string
- input *v1.OnapNetwork
- mock *mockOVNCmd
- expectedResult string
- expectedError string
- }{
- {
- label: "Fail to decode a network",
- input: &v1.OnapNetwork{},
- expectedError: "Invalid Network Name",
- },
- {
- label: "Fail to create a network",
- input: &v1.OnapNetwork{
- ObjectMeta: metaV1.ObjectMeta{
- Name: "test",
- },
- Spec: v1.OnapNetworkSpec{
- CniType: "ovn4nfvk8s", Name: "mynet", Subnet: "172.16.33.0/24", Gateway: "172.16.33.1/24",
- },
- },
- expectedError: "Failed to get logical router",
- mock: &mockOVNCmd{
- Err: pkgerrors.New("Internal error"),
- },
- },
- {
- label: "Successfully create a ovn4nfv network",
- input: &v1.OnapNetwork{
- ObjectMeta: metaV1.ObjectMeta{
- Name: "test",
- },
- Spec: v1.OnapNetworkSpec{
- CniType: "ovn4nfvk8s", Name: "mynet", Subnet: "172.16.33.0/24", Gateway: "172.16.33.1/24",
- },
- },
- expectedResult: "mynet",
- mock: &mockOVNCmd{},
- },
- }
-
- for _, testCase := range testCases {
- t.Run(testCase.label, func(t *testing.T) {
- if testCase.mock != nil {
- ovnCmd = testCase.mock
- }
- result, err := CreateNetwork(testCase.input)
- if err != nil {
- if testCase.expectedError == "" {
- t.Fatalf("CreateNetwork method return an un-expected (%s)", err)
- }
- if !strings.Contains(string(err.Error()), testCase.expectedError) {
- t.Fatalf("CreateNetwork method returned an error (%s)", err)
- }
- } else {
- if testCase.expectedError != "" && testCase.expectedResult == "" {
- t.Fatalf("CreateNetwork method was expecting \"%s\" error message", testCase.expectedError)
- }
- if result == "" {
- t.Fatal("CreateNetwork method returned nil result")
- }
- if !reflect.DeepEqual(testCase.expectedResult, result) {
-
- t.Fatalf("CreateNetwork method returned: \n%v\n and it was expected: \n%v", result, testCase.expectedResult)
- }
- }
- })
- }
-}
-
-func TestDeleteOVN4NFVK8SNetwork(t *testing.T) {
- testCases := []struct {
- label string
- input string
- mock *mockOVNCmd
- expectedError string
- }{
- {
- label: "Fail to delete a network",
- input: "test",
- expectedError: "Failed to delete switch test",
- mock: &mockOVNCmd{
- Err: pkgerrors.New("Internal error"),
- },
- },
- {
- label: "Successfully delete a ovn4nfv network",
- input: "test",
- mock: &mockOVNCmd{},
- },
- }
-
- for _, testCase := range testCases {
- t.Run(testCase.label, func(t *testing.T) {
- if testCase.mock != nil {
- ovnCmd = testCase.mock
- }
- err := DeleteNetwork(testCase.input)
- if err != nil {
- if testCase.expectedError == "" {
- t.Fatalf("DeleteNetwork method return an un-expected (%s)", err)
- }
- if !strings.Contains(string(err.Error()), testCase.expectedError) {
- t.Fatalf("DeleteNetwork method returned an error (%s)", err)
- }
- }
- })
- }
-}