diff options
-rw-r--r-- | src/k8splugin/api/api.go | 9 | ||||
-rw-r--r-- | src/k8splugin/api/brokerhandler_test.go | 6 | ||||
-rw-r--r-- | src/k8splugin/mock_files/mock_yamls/ovn4nfvk8s.yaml | 16 | ||||
-rw-r--r-- | src/k8splugin/plugins/network/plugin.go | 7 | ||||
-rw-r--r-- | src/k8splugin/plugins/network/plugin_test.go | 2 | ||||
-rw-r--r-- | src/k8splugin/plugins/network/v1/types.go | 23 | ||||
-rw-r--r-- | src/k8splugin/plugins/ovn4nfvk8s-network/plugin.go | 34 | ||||
-rw-r--r-- | src/k8splugin/plugins/ovn4nfvk8s-network/plugin_test.go | 6 |
8 files changed, 37 insertions, 66 deletions
diff --git a/src/k8splugin/api/api.go b/src/k8splugin/api/api.go index 0ddbcf83..58e50a16 100644 --- a/src/k8splugin/api/api.go +++ b/src/k8splugin/api/api.go @@ -43,12 +43,11 @@ func NewRouter(defClient rb.DefinitionManager, // instRouter.HandleFunc("/{vnfInstanceId}", UpdateHandler).Methods("PUT") //Setup the broker handler here + //Use the base router without any path prefixes brokerHandler := brokerInstanceHandler{client: instClient} - instRouter.HandleFunc("/{cloud-owner}/{cloud-region}/infra_workload", brokerHandler.createHandler).Methods("POST") - instRouter.HandleFunc("/{cloud-owner}/{cloud-region}/infra_workload/{instID}", - brokerHandler.getHandler).Methods("GET") - instRouter.HandleFunc("/{cloud-owner}/{cloud-region}/infra_workload/{instID}", - brokerHandler.deleteHandler).Methods("DELETE") + router.HandleFunc("/{cloud-owner}/{cloud-region}/infra_workload", brokerHandler.createHandler).Methods("POST") + router.HandleFunc("/{cloud-owner}/{cloud-region}/infra_workload/{instID}", brokerHandler.getHandler).Methods("GET") + router.HandleFunc("/{cloud-owner}/{cloud-region}/infra_workload/{instID}", brokerHandler.deleteHandler).Methods("DELETE") //Setup the connectivity api handler here connectionClient := connection.NewConnectionClient() diff --git a/src/k8splugin/api/brokerhandler_test.go b/src/k8splugin/api/brokerhandler_test.go index d9991e68..16046634 100644 --- a/src/k8splugin/api/brokerhandler_test.go +++ b/src/k8splugin/api/brokerhandler_test.go @@ -122,7 +122,7 @@ func TestBrokerCreateHandler(t *testing.T) { for _, testCase := range testCases { t.Run(testCase.label, func(t *testing.T) { - request := httptest.NewRequest("POST", "/v1/cloudowner/cloudregion/infra_workload", testCase.input) + request := httptest.NewRequest("POST", "/cloudowner/cloudregion/infra_workload", testCase.input) resp := executeRequest(request, NewRouter(nil, nil, testCase.instClient, nil, nil)) if testCase.expectedCode != resp.StatusCode { @@ -204,7 +204,7 @@ func TestBrokerGetHandler(t *testing.T) { for _, testCase := range testCases { t.Run(testCase.label, func(t *testing.T) { - request := httptest.NewRequest("GET", "/v1/cloudowner/cloudregion/infra_workload/"+testCase.input, nil) + request := httptest.NewRequest("GET", "/cloudowner/cloudregion/infra_workload/"+testCase.input, nil) resp := executeRequest(request, NewRouter(nil, nil, testCase.instClient, nil, nil)) if testCase.expectedCode != resp.StatusCode { @@ -251,7 +251,7 @@ func TestBrokerDeleteHandler(t *testing.T) { for _, testCase := range testCases { t.Run(testCase.label, func(t *testing.T) { - request := httptest.NewRequest("DELETE", "/v1/cloudowner/cloudregion/infra_workload/"+testCase.input, nil) + request := httptest.NewRequest("DELETE", "/cloudowner/cloudregion/infra_workload/"+testCase.input, nil) resp := executeRequest(request, NewRouter(nil, nil, testCase.instClient, nil, nil)) if testCase.expectedCode != resp.StatusCode { diff --git a/src/k8splugin/mock_files/mock_yamls/ovn4nfvk8s.yaml b/src/k8splugin/mock_files/mock_yamls/ovn4nfvk8s.yaml index 1a262753..31351dee 100644 --- a/src/k8splugin/mock_files/mock_yamls/ovn4nfvk8s.yaml +++ b/src/k8splugin/mock_files/mock_yamls/ovn4nfvk8s.yaml @@ -1,15 +1,9 @@ apiVersion: v1 -kind: OnapNetwork +kind: Network metadata: name: ovn-priv-net spec: - config: '{ - "cnitype": "ovn4nfvk8s", - "name": "mynet", - "subnet": "172.16.33.0/24", - "gateway": "172.16.33.1", - "routes": [{ - "dst": "172.16.29.1/24", - "gw": "100.64.1.1" - }] - }'
\ No newline at end of file + cnitype: "ovn4nfvk8s" + name: "ovn-priv-net" + subnet: "172.16.33.0/24" + gateway: "172.16.33.1/24" diff --git a/src/k8splugin/plugins/network/plugin.go b/src/k8splugin/plugins/network/plugin.go index fb163189..74ac3473 100644 --- a/src/k8splugin/plugins/network/plugin.go +++ b/src/k8splugin/plugins/network/plugin.go @@ -42,12 +42,7 @@ func Create(data *utils.ResourceData, client kubernetes.Interface) (string, erro return "", pkgerrors.Wrap(err, "Decode network object error") } - config, err := network.DecodeConfig() - if err != nil { - return "", pkgerrors.Wrap(err, "Fail to decode network's configuration") - } - - cniType := config["cnitype"].(string) + cniType := network.Spec.CniType typePlugin, ok := utils.LoadedPlugins[cniType+"-network"] if !ok { return "", pkgerrors.New("No plugin for resource " + cniType + " found") diff --git a/src/k8splugin/plugins/network/plugin_test.go b/src/k8splugin/plugins/network/plugin_test.go index 5bf649a9..e8e113b2 100644 --- a/src/k8splugin/plugins/network/plugin_test.go +++ b/src/k8splugin/plugins/network/plugin_test.go @@ -71,7 +71,7 @@ func TestCreateNetwork(t *testing.T) { input: &utils.ResourceData{ YamlFilePath: "../../mock_files/mock_yamls/service.yaml", }, - expectedError: "Fail to decode network's configuration: Invalid configuration value", + expectedError: "No plugin for resource", }, { label: "Fail to create a network", diff --git a/src/k8splugin/plugins/network/v1/types.go b/src/k8splugin/plugins/network/v1/types.go index b4efa39a..96484efa 100644 --- a/src/k8splugin/plugins/network/v1/types.go +++ b/src/k8splugin/plugins/network/v1/types.go @@ -14,9 +14,7 @@ limitations under the License. package v1 import ( - "encoding/json" - pkgerrors "github.com/pkg/errors" metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" @@ -33,7 +31,11 @@ type OnapNetwork struct { // OnapNetworkSpec is the spec for OnapNetwork resource type OnapNetworkSpec struct { - Config string `json:"config"` + 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 @@ -50,18 +52,3 @@ func (in OnapNetwork) DeepCopyObject() runtime.Object { func (in OnapNetwork) GetObjectKind() schema.ObjectKind { return &in.TypeMeta } - -// DecodeConfig content -func (in OnapNetwork) DecodeConfig() (map[string]interface{}, error) { - var raw map[string]interface{} - - if in.Spec.Config == "" { - return nil, pkgerrors.New("Invalid configuration value") - } - - if err := json.Unmarshal([]byte(in.Spec.Config), &raw); err != nil { - return nil, pkgerrors.Wrap(err, "JSON unmarshalling error") - } - - return raw, nil -} diff --git a/src/k8splugin/plugins/ovn4nfvk8s-network/plugin.go b/src/k8splugin/plugins/ovn4nfvk8s-network/plugin.go index 959586bc..3f5d80ba 100644 --- a/src/k8splugin/plugins/ovn4nfvk8s-network/plugin.go +++ b/src/k8splugin/plugins/ovn4nfvk8s-network/plugin.go @@ -46,6 +46,9 @@ type OVNNbctl struct { // 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 { @@ -53,9 +56,6 @@ func (ctl *OVNNbctl) Run(args ...string) (string, string, error) { } ctl.path = nbctlPath } - if ctl.exec == nil { - ctl.exec = kexec.New() - } stdout := &bytes.Buffer{} stderr := &bytes.Buffer{} @@ -76,25 +76,21 @@ func init() { // CreateNetwork in OVN controller func CreateNetwork(network *v1.OnapNetwork) (string, error) { - config, err := network.DecodeConfig() - if err != nil { - return "", err - } - name := config["name"].(string) - if name == "" { - return "", pkgerrors.New("Empty Name value") - } + name := network.Spec.Name + if name == "" { + return "", pkgerrors.New("Invalid Network Name") + } - subnet := config["subnet"].(string) - if subnet == "" { - return "", pkgerrors.New("Empty Subnet value") - } + subnet := network.Spec.Subnet + if subnet == "" { + return "", pkgerrors.New("Invalid Subnet Address") + } - gatewayIPMask := config["gateway"].(string) - if gatewayIPMask == "" { - return "", pkgerrors.New("Empty Gateway IP Mask") - } + 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 { diff --git a/src/k8splugin/plugins/ovn4nfvk8s-network/plugin_test.go b/src/k8splugin/plugins/ovn4nfvk8s-network/plugin_test.go index ce848a71..6a1054ee 100644 --- a/src/k8splugin/plugins/ovn4nfvk8s-network/plugin_test.go +++ b/src/k8splugin/plugins/ovn4nfvk8s-network/plugin_test.go @@ -43,7 +43,7 @@ func TestCreateOVN4NFVK8SNetwork(t *testing.T) { { label: "Fail to decode a network", input: &v1.OnapNetwork{}, - expectedError: "Invalid configuration value", + expectedError: "Invalid Network Name", }, { label: "Fail to create a network", @@ -52,7 +52,7 @@ func TestCreateOVN4NFVK8SNetwork(t *testing.T) { Name: "test", }, Spec: v1.OnapNetworkSpec{ - Config: "{\"cnitype\": \"ovn4nfvk8s\",\"name\": \"mynet\",\"subnet\": \"172.16.33.0/24\",\"gateway\": \"172.16.33.1\",\"routes\": [{\"dst\": \"172.16.29.1/24\",\"gw\": \"100.64.1.1\"}]}", + CniType: "ovn4nfvk8s", Name: "mynet", Subnet: "172.16.33.0/24", Gateway: "172.16.33.1/24", }, }, expectedError: "Failed to get logical router", @@ -67,7 +67,7 @@ func TestCreateOVN4NFVK8SNetwork(t *testing.T) { Name: "test", }, Spec: v1.OnapNetworkSpec{ - Config: "{\"cnitype\": \"ovn4nfvk8s\",\"name\": \"mynet\",\"subnet\": \"172.16.33.0/24\",\"gateway\": \"172.16.33.1\",\"routes\": [{\"dst\": \"172.16.29.1/24\",\"gw\": \"100.64.1.1\"}]}", + CniType: "ovn4nfvk8s", Name: "mynet", Subnet: "172.16.33.0/24", Gateway: "172.16.33.1/24", }, }, expectedResult: "mynet", |