import (
"github.com/gorilla/mux"
moduleLib "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module"
+ controller "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module/controller"
)
var moduleClient *moduleLib.Client
func NewRouter(projectClient moduleLib.ProjectManager,
compositeAppClient moduleLib.CompositeAppManager,
appClient moduleLib.AppManager,
- ControllerClient moduleLib.ControllerManager,
+ ControllerClient controller.ControllerManager,
genericPlacementIntentClient moduleLib.GenericPlacementIntentManager,
appIntentClient moduleLib.AppIntentManager,
deploymentIntentGrpClient moduleLib.DeploymentIntentGroupManager,
"github.com/gorilla/mux"
"github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/validation"
- moduleLib "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module"
+ controller "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module/controller"
+ mtypes "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module/types"
pkgerrors "github.com/pkg/errors"
)
type controllerHandler struct {
// Interface that implements controller operations
// We will set this variable with a mock interface for testing
- client moduleLib.ControllerManager
+ client controller.ControllerManager
}
// Check for valid format of input parameters
-func validateControllerInputs(c moduleLib.Controller) error {
+func validateControllerInputs(c controller.Controller) error {
// validate metadata
- err := moduleLib.IsValidMetadata(c.Metadata)
+ err := mtypes.IsValidMetadata(c.Metadata)
if err != nil {
return pkgerrors.Wrap(err, "Invalid controller metadata")
}
}
found := false
- for _, val := range moduleLib.CONTROLLER_TYPES {
+ for _, val := range controller.CONTROLLER_TYPES {
if c.Spec.Type == val {
found = true
break
return pkgerrors.Errorf("Invalid controller type: %v", c.Spec.Type)
}
- errs = validation.IsValidNumber(c.Spec.Priority, moduleLib.MinControllerPriority, moduleLib.MaxControllerPriority)
+ errs = validation.IsValidNumber(c.Spec.Priority, controller.MinControllerPriority, controller.MaxControllerPriority)
if len(errs) > 0 {
return pkgerrors.Errorf("Invalid controller priority = [%v], errors: %v", c.Spec.Priority, errs)
}
// Create handles creation of the controller entry in the database
func (h controllerHandler) createHandler(w http.ResponseWriter, r *http.Request) {
- var m moduleLib.Controller
+ var m controller.Controller
err := json.NewDecoder(r.Body).Decode(&m)
switch {
// Put handles creation or update of the controller entry in the database
func (h controllerHandler) putHandler(w http.ResponseWriter, r *http.Request) {
- var m moduleLib.Controller
+ var m controller.Controller
vars := mux.Vars(r)
name := vars["controller-name"]
"reflect"
"testing"
- moduleLib "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module"
+ "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module/controller"
+ "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module/types"
pkgerrors "github.com/pkg/errors"
)
type mockControllerManager struct {
// Items and err will be used to customize each test
// via a localized instantiation of mockControllerManager
- Items []moduleLib.Controller
+ Items []controller.Controller
Err error
}
-func (m *mockControllerManager) CreateController(inp moduleLib.Controller, mayExist bool) (moduleLib.Controller, error) {
+func (m *mockControllerManager) CreateController(inp controller.Controller, mayExist bool) (controller.Controller, error) {
if m.Err != nil {
- return moduleLib.Controller{}, m.Err
+ return controller.Controller{}, m.Err
}
return m.Items[0], nil
}
-func (m *mockControllerManager) GetController(name string) (moduleLib.Controller, error) {
+func (m *mockControllerManager) GetController(name string) (controller.Controller, error) {
if m.Err != nil {
- return moduleLib.Controller{}, m.Err
+ return controller.Controller{}, m.Err
}
return m.Items[0], nil
}
-func (m *mockControllerManager) GetControllers() ([]moduleLib.Controller, error) {
+func (m *mockControllerManager) GetControllers() ([]controller.Controller, error) {
if m.Err != nil {
- return []moduleLib.Controller{}, m.Err
+ return []controller.Controller{}, m.Err
}
return m.Items, nil
testCases := []struct {
label string
reader io.Reader
- expected moduleLib.Controller
+ expected controller.Controller
expectedCode int
controllerClient *mockControllerManager
}{
"ip-address":"10.188.234.1",
"port":8080 }
}`)),
- expected: moduleLib.Controller{
- Metadata: moduleLib.Metadata{
+ expected: controller.Controller{
+ Metadata: types.Metadata{
Name: "testController",
},
- Spec: moduleLib.ControllerSpec{
+ Spec: controller.ControllerSpec{
Host: "10.188.234.1",
Port: 8080,
},
},
controllerClient: &mockControllerManager{
//Items that will be returned by the mocked Client
- Items: []moduleLib.Controller{
+ Items: []controller.Controller{
{
- Metadata: moduleLib.Metadata{
+ Metadata: types.Metadata{
Name: "testController",
},
- Spec: moduleLib.ControllerSpec{
+ Spec: controller.ControllerSpec{
Host: "10.188.234.1",
Port: 8080,
},
//Check returned body only if statusCreated
if resp.StatusCode == http.StatusCreated {
- got := moduleLib.Controller{}
+ got := controller.Controller{}
json.NewDecoder(resp.Body).Decode(&got)
if reflect.DeepEqual(testCase.expected, got) == false {
testCases := []struct {
label string
- expected moduleLib.Controller
+ expected controller.Controller
name, version string
expectedCode int
controllerClient *mockControllerManager
{
label: "Get Controller",
expectedCode: http.StatusOK,
- expected: moduleLib.Controller{
- Metadata: moduleLib.Metadata{
+ expected: controller.Controller{
+ Metadata: types.Metadata{
Name: "testController",
},
- Spec: moduleLib.ControllerSpec{
+ Spec: controller.ControllerSpec{
Host: "10.188.234.1",
Port: 8080,
},
},
name: "testController",
controllerClient: &mockControllerManager{
- Items: []moduleLib.Controller{
+ Items: []controller.Controller{
{
- Metadata: moduleLib.Metadata{
+ Metadata: types.Metadata{
Name: "testController",
},
- Spec: moduleLib.ControllerSpec{
+ Spec: controller.ControllerSpec{
Host: "10.188.234.1",
Port: 8080,
},
expectedCode: http.StatusInternalServerError,
name: "nonexistingController",
controllerClient: &mockControllerManager{
- Items: []moduleLib.Controller{},
+ Items: []controller.Controller{},
Err: pkgerrors.New("Internal Error"),
},
},
//Check returned body only if statusOK
if resp.StatusCode == http.StatusOK {
- got := moduleLib.Controller{}
+ got := controller.Controller{}
json.NewDecoder(resp.Body).Decode(&got)
if reflect.DeepEqual(testCase.expected, got) == false {
contextDb "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/contextdb"
"github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/db"
"github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/rpc"
- "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module"
+ "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module/controller"
)
func main() {
Addr: ":" + config.GetConfiguration().ServicePort,
}
- module.NewControllerClient().InitControllers()
+ controller.NewControllerClient().InitControllers()
connectionsClose := make(chan struct{})
go func() {
* limitations under the License.
*/
-package module
+package controller
import (
"encoding/json"
"github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/db"
log "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/logutils"
rpc "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/rpc"
+ mtypes "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module/types"
pkgerrors "github.com/pkg/errors"
)
// Controller contains the parameters needed for Controllers
// It implements the interface for managing the Controllers
type Controller struct {
- Metadata Metadata `json:"metadata"`
- Spec ControllerSpec `json:"spec"`
+ Metadata mtypes.Metadata `json:"metadata"`
+ Spec ControllerSpec `json:"spec"`
}
type ControllerSpec struct {
* limitations under the License.
*/
-package module
+package controller
import (
"reflect"
"testing"
"github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/db"
+ "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module/types"
pkgerrors "github.com/pkg/errors"
)
{
label: "Create Controller",
inp: Controller{
- Metadata: Metadata{
+ Metadata: types.Metadata{
Name: "testController",
},
Spec: ControllerSpec{
},
},
expected: Controller{
- Metadata: Metadata{
+ Metadata: types.Metadata{
Name: "testController",
},
Spec: ControllerSpec{
label: "Get Controller",
name: "testController",
expected: Controller{
- Metadata: Metadata{
+ Metadata: types.Metadata{
Name: "testController",
},
Spec: ControllerSpec{
package module
import (
- "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/validation"
- pkgerrors "github.com/pkg/errors"
+ "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module/controller"
)
// Client for using the services in the orchestrator
Project *ProjectClient
CompositeApp *CompositeAppClient
App *AppClient
- Controller *ControllerClient
+ Controller *controller.ControllerClient
GenericPlacementIntent *GenericPlacementIntentClient
AppIntent *AppIntentClient
DeploymentIntentGroup *DeploymentIntentGroupClient
c.Project = NewProjectClient()
c.CompositeApp = NewCompositeAppClient()
c.App = NewAppClient()
- c.Controller = NewControllerClient()
+ c.Controller = controller.NewControllerClient()
c.GenericPlacementIntent = NewGenericPlacementIntentClient()
c.AppIntent = NewAppIntentClient()
c.DeploymentIntentGroup = NewDeploymentIntentGroupClient()
c.Instantiation = NewInstantiationClient()
return c
}
-
-// It implements the interface for managing the ClusterProviders
-const MAX_DESCRIPTION_LEN int = 1024
-const MAX_USERDATA_LEN int = 4096
-
-type Metadata struct {
- Name string `json:"name" yaml:"name"`
- Description string `json:"description" yaml:"-"`
- UserData1 string `json:"userData1" yaml:"-"`
- UserData2 string `json:"userData2" yaml:"-"`
-}
-
-// Check for valid format Metadata
-func IsValidMetadata(metadata Metadata) error {
- errs := validation.IsValidName(metadata.Name)
- if len(errs) > 0 {
- return pkgerrors.Errorf("Invalid Metadata name=[%v], errors: %v", metadata.Name, errs)
- }
-
- errs = validation.IsValidString(metadata.Description, 0, MAX_DESCRIPTION_LEN, validation.VALID_ANY_STR)
- if len(errs) > 0 {
- return pkgerrors.Errorf("Invalid Metadata description=[%v], errors: %v", metadata.Description, errs)
- }
-
- errs = validation.IsValidString(metadata.UserData1, 0, MAX_DESCRIPTION_LEN, validation.VALID_ANY_STR)
- if len(errs) > 0 {
- return pkgerrors.Errorf("Invalid Metadata description=[%v], errors: %v", metadata.UserData1, errs)
- }
-
- errs = validation.IsValidString(metadata.UserData2, 0, MAX_DESCRIPTION_LEN, validation.VALID_ANY_STR)
- if len(errs) > 0 {
- return pkgerrors.Errorf("Invalid Metadata description=[%v], errors: %v", metadata.UserData2, errs)
- }
-
- return nil
-}
--- /dev/null
+/*
+ * Copyright 2020 Intel Corporation, Inc
+ *
+ * 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 types
+
+import (
+ "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/validation"
+ pkgerrors "github.com/pkg/errors"
+)
+
+// It implements the interface for managing the ClusterProviders
+const MAX_DESCRIPTION_LEN int = 1024
+const MAX_USERDATA_LEN int = 4096
+
+type Metadata struct {
+ Name string `json:"name" yaml:"name"`
+ Description string `json:"description" yaml:"-"`
+ UserData1 string `json:"userData1" yaml:"-"`
+ UserData2 string `json:"userData2" yaml:"-"`
+}
+
+// Check for valid format Metadata
+func IsValidMetadata(metadata Metadata) error {
+ errs := validation.IsValidName(metadata.Name)
+ if len(errs) > 0 {
+ return pkgerrors.Errorf("Invalid Metadata name=[%v], errors: %v", metadata.Name, errs)
+ }
+
+ errs = validation.IsValidString(metadata.Description, 0, MAX_DESCRIPTION_LEN, validation.VALID_ANY_STR)
+ if len(errs) > 0 {
+ return pkgerrors.Errorf("Invalid Metadata description=[%v], errors: %v", metadata.Description, errs)
+ }
+
+ errs = validation.IsValidString(metadata.UserData1, 0, MAX_DESCRIPTION_LEN, validation.VALID_ANY_STR)
+ if len(errs) > 0 {
+ return pkgerrors.Errorf("Invalid Metadata description=[%v], errors: %v", metadata.UserData1, errs)
+ }
+
+ errs = validation.IsValidString(metadata.UserData2, 0, MAX_DESCRIPTION_LEN, validation.VALID_ANY_STR)
+ if len(errs) > 0 {
+ return pkgerrors.Errorf("Invalid Metadata description=[%v], errors: %v", metadata.UserData2, errs)
+ }
+
+ return nil
+}