summaryrefslogtreecommitdiffstats
path: root/src/k8splugin/plugins/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/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/network')
-rw-r--r--src/k8splugin/plugins/network/plugin.go111
-rw-r--r--src/k8splugin/plugins/network/plugin_test.go173
-rw-r--r--src/k8splugin/plugins/network/v1/types.go54
3 files changed, 0 insertions, 338 deletions
diff --git a/src/k8splugin/plugins/network/plugin.go b/src/k8splugin/plugins/network/plugin.go
deleted file mode 100644
index aa0d584b..00000000
--- a/src/k8splugin/plugins/network/plugin.go
+++ /dev/null
@@ -1,111 +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 (
- "regexp"
-
- v1 "github.com/onap/multicloud-k8s/src/k8splugin/plugins/network/v1"
-
- utils "github.com/onap/multicloud-k8s/src/k8splugin/internal"
- "github.com/onap/multicloud-k8s/src/k8splugin/internal/helm"
- "github.com/onap/multicloud-k8s/src/k8splugin/internal/plugin"
-
- pkgerrors "github.com/pkg/errors"
- "k8s.io/apimachinery/pkg/runtime/schema"
-)
-
-// Compile time check to see if networkPlugin implements the correct interface
-var _ plugin.Reference = networkPlugin{}
-
-// ExportedVariable is what we will look for when calling the plugin
-var ExportedVariable networkPlugin
-
-type networkPlugin struct {
-}
-
-func extractData(data string) (cniType, networkName string, err error) {
- re := regexp.MustCompile("_")
- split := re.Split(data, -1)
- if len(split) != 2 {
- err = pkgerrors.New("Couldn't split resource '" + data +
- "' into CNI type and Network name")
- return
- }
- cniType = split[0]
- networkName = split[1]
- return
-}
-
-// Create an ONAP Network object
-func (p networkPlugin) Create(yamlFilePath string, namespace string, client plugin.KubernetesConnector) (string, error) {
- network := &v1.OnapNetwork{}
- if _, err := utils.DecodeYAML(yamlFilePath, network); err != nil {
- return "", pkgerrors.Wrap(err, "Decode network object error")
- }
-
- cniType := network.Spec.CniType
- typePlugin, ok := utils.LoadedPlugins[cniType+"-network"]
- if !ok {
- return "", pkgerrors.New("No plugin for resource " + cniType + " found")
- }
-
- symCreateNetworkFunc, err := typePlugin.Lookup("CreateNetwork")
- if err != nil {
- return "", pkgerrors.Wrap(err, "Error fetching "+cniType+" plugin")
- }
-
- name, err := symCreateNetworkFunc.(func(*v1.OnapNetwork) (string, error))(network)
- if err != nil {
- return "", pkgerrors.Wrap(err, "Error during the creation for "+cniType+" plugin")
- }
-
- return cniType + "_" + name, nil
-}
-
-// Get a Network
-func (p networkPlugin) Get(resource helm.KubernetesResource, namespace string, client plugin.KubernetesConnector) (string, error) {
- return "", nil
-}
-
-// List of Networks
-func (p networkPlugin) List(gvk schema.GroupVersionKind, namespace string,
- client plugin.KubernetesConnector) ([]helm.KubernetesResource, error) {
-
- return nil, nil
-}
-
-// Delete an existing Network
-func (p networkPlugin) Delete(resource helm.KubernetesResource, namespace string, client plugin.KubernetesConnector) error {
- cniType, networkName, err := extractData(resource.Name)
- if err != nil {
- return pkgerrors.Wrap(err, "Error extracting CNI type from resource")
- }
-
- typePlugin, ok := utils.LoadedPlugins[cniType+"-network"]
- if !ok {
- return pkgerrors.New("No plugin for resource " + cniType + " found")
- }
-
- symDeleteNetworkFunc, err := typePlugin.Lookup("DeleteNetwork")
- if err != nil {
- return pkgerrors.Wrap(err, "Error fetching "+cniType+" plugin")
- }
-
- if err := symDeleteNetworkFunc.(func(string) error)(networkName); err != nil {
- return pkgerrors.Wrap(err, "Error during the deletion for "+cniType+" plugin")
- }
-
- return nil
-}
diff --git a/src/k8splugin/plugins/network/plugin_test.go b/src/k8splugin/plugins/network/plugin_test.go
deleted file mode 100644
index 33cae1c7..00000000
--- a/src/k8splugin/plugins/network/plugin_test.go
+++ /dev/null
@@ -1,173 +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 (
- utils "github.com/onap/multicloud-k8s/src/k8splugin/internal"
- "github.com/onap/multicloud-k8s/src/k8splugin/internal/helm"
- "os"
- "plugin"
- "reflect"
- "strings"
- "testing"
-
- pkgerrors "github.com/pkg/errors"
- "k8s.io/apimachinery/pkg/runtime/schema"
-)
-
-func LoadMockNetworkPlugins(krdLoadedPlugins *map[string]*plugin.Plugin, networkName, errMsg string) error {
- if _, err := os.Stat("../../mock_files/mock_plugins/mocknetworkplugin.so"); os.IsNotExist(err) {
- return pkgerrors.New("mocknetworkplugin.so does not exist. Please compile mocknetworkplugin.go to generate")
- }
-
- mockNetworkPlugin, err := plugin.Open("../../mock_files/mock_plugins/mocknetworkplugin.so")
- if err != nil {
- return pkgerrors.Cause(err)
- }
-
- symErrVar, err := mockNetworkPlugin.Lookup("Err")
- if err != nil {
- return err
- }
- symNetworkNameVar, err := mockNetworkPlugin.Lookup("NetworkName")
- if err != nil {
- return err
- }
-
- *symErrVar.(*string) = errMsg
- *symNetworkNameVar.(*string) = networkName
- (*krdLoadedPlugins)["ovn4nfvk8s-network"] = mockNetworkPlugin
-
- return nil
-}
-
-func TestCreateNetwork(t *testing.T) {
- oldkrdPluginData := utils.LoadedPlugins
-
- defer func() {
- utils.LoadedPlugins = oldkrdPluginData
- }()
-
- testCases := []struct {
- label string
- input string
- mockError string
- mockOutput string
- expectedResult string
- expectedError string
- }{
- {
- label: "Fail to decode a network object",
- input: "../../mock_files/mock_yamls/service.yaml",
- expectedError: "No plugin for resource",
- },
- {
- label: "Fail to create a network",
- input: "../../mock_files/mock_yamls/ovn4nfvk8s.yaml",
- mockError: "Internal error",
- expectedError: "Error during the creation for ovn4nfvk8s plugin: Internal error",
- },
- {
- label: "Successfully create a ovn4nfv network",
- input: "../../mock_files/mock_yamls/ovn4nfvk8s.yaml",
- expectedResult: "ovn4nfvk8s_myNetwork",
- mockOutput: "myNetwork",
- },
- }
-
- for _, testCase := range testCases {
- t.Run(testCase.label, func(t *testing.T) {
- err := LoadMockNetworkPlugins(&utils.LoadedPlugins, testCase.mockOutput, testCase.mockError)
- if err != nil {
- t.Fatalf("TestCreateNetwork returned an error (%s)", err)
- }
- result, err := networkPlugin{}.Create(testCase.input, "", nil)
- if err != nil {
- if testCase.expectedError == "" {
- t.Fatalf("Create method return an un-expected (%s)", err)
- }
- if !strings.Contains(string(err.Error()), testCase.expectedError) {
- t.Fatalf("Create method returned an error (%s)", err)
- }
- } else {
- if testCase.expectedError != "" && testCase.expectedResult == "" {
- t.Fatalf("Create method was expecting \"%s\" error message", testCase.expectedError)
- }
- if !reflect.DeepEqual(testCase.expectedResult, result) {
-
- t.Fatalf("Create method returned: \n%v\n and it was expected: \n%v", result, testCase.expectedResult)
- }
- }
- })
- }
-}
-
-func TestDeleteNetwork(t *testing.T) {
- oldkrdPluginData := utils.LoadedPlugins
-
- defer func() {
- utils.LoadedPlugins = oldkrdPluginData
- }()
-
- testCases := []struct {
- label string
- input string
- mockError string
- mockOutput string
- expectedResult string
- expectedError string
- }{
- {
- label: "Fail to load non-existing plugin",
- input: "non-existing-cni_test",
- expectedError: "No plugin for resource non-existing-cni",
- },
- {
- label: "Fail to extract cni from network name",
- input: "1_ovn4nfvk8s_test",
- expectedError: "Error extracting CNI type from resource: Couldn't split resource '1_ovn4nfvk8s_test' into CNI type and Network name",
- },
- {
- label: "Fail to delete a network",
- input: "ovn4nfvk8s_test",
- mockError: "Internal error",
- expectedError: "Error during the deletion for ovn4nfvk8s plugin: Internal error",
- },
- {
- label: "Successfully delete a ovn4nfv network",
- input: "ovn4nfvk8s_test",
- },
- }
-
- for _, testCase := range testCases {
- t.Run(testCase.label, func(t *testing.T) {
- err := LoadMockNetworkPlugins(&utils.LoadedPlugins, testCase.mockOutput, testCase.mockError)
- if err != nil {
- t.Fatalf("TestDeleteNetwork returned an error (%s)", err)
- }
- err = networkPlugin{}.Delete(helm.KubernetesResource{
- GVK: schema.GroupVersionKind{Group: "", Version: "", Kind: "Network"},
- Name: testCase.input,
- }, "", nil)
- if err != nil {
- if testCase.expectedError == "" {
- t.Fatalf("Create method return an un-expected (%s)", err)
- }
- if !strings.Contains(string(err.Error()), testCase.expectedError) {
- t.Fatalf("Create method returned an error (%s)", err)
- }
- }
- })
- }
-}
diff --git a/src/k8splugin/plugins/network/v1/types.go b/src/k8splugin/plugins/network/v1/types.go
deleted file mode 100644
index 96484efa..00000000
--- a/src/k8splugin/plugins/network/v1/types.go
+++ /dev/null
@@ -1,54 +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 v1
-
-import (
-
- metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/apimachinery/pkg/runtime"
- "k8s.io/apimachinery/pkg/runtime/schema"
-)
-
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-
-// OnapNetwork describes an ONAP network resouce
-type OnapNetwork struct {
- metaV1.TypeMeta `json:",inline"`
- metaV1.ObjectMeta `json:"metadata,omitempty"`
- Spec OnapNetworkSpec `json:"spec"`
-}
-
-// OnapNetworkSpec is the spec for OnapNetwork resource
-type OnapNetworkSpec struct {
- CniType string `json:"cnitype"`
- Name string `json:"name"`
- Subnet string `json:"subnet"`
- Gateway string `json:"gateway"`
-
-}
-
-// DeepCopyObject returns a generically typed copy of an object
-func (in OnapNetwork) DeepCopyObject() runtime.Object {
- out := OnapNetwork{}
- out.TypeMeta = in.TypeMeta
- out.ObjectMeta = in.ObjectMeta
- out.Spec = in.Spec
-
- return &out
-}
-
-// GetObjectKind
-func (in OnapNetwork) GetObjectKind() schema.ObjectKind {
- return &in.TypeMeta
-}