aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKiran Kamineni <kiran.k.kamineni@intel.com>2019-03-20 10:32:23 -0700
committerKiran Kamineni <kiran.k.kamineni@intel.com>2019-03-20 10:32:27 -0700
commit7f6bf1f5bbf3befbacb6b77e617c95fb371c4ef4 (patch)
treea1f7155a6616a02092777fd603a95e1e61344837
parente50daed19bbaec979a91f2677289f1c2e6e0d0d9 (diff)
NewRouter supports custom backend clients
NewRouter needs to support custom clients This is needed where the backend clients are mocked and we need url path parameters to be available in our unit tests. Using the same router code allows us to do this. Issue-ID: MULTICLOUD-547 Change-Id: Id51b6f0a9afe4965efaf2611fc642bccb9ac1d39 Signed-off-by: Kiran Kamineni <kiran.k.kamineni@intel.com>
-rw-r--r--src/k8splugin/api/api.go35
-rw-r--r--src/k8splugin/api/handler_test.go2
-rw-r--r--src/k8splugin/cmd/main.go2
3 files changed, 23 insertions, 16 deletions
diff --git a/src/k8splugin/api/api.go b/src/k8splugin/api/api.go
index b566609b..67a91282 100644
--- a/src/k8splugin/api/api.go
+++ b/src/k8splugin/api/api.go
@@ -20,7 +20,8 @@ import (
)
// NewRouter creates a router instance that serves the VNFInstance web methods
-func NewRouter(kubeconfig string) *mux.Router {
+func NewRouter(kubeconfig string, defClient rb.DefinitionManager,
+ profileClient rb.ProfileManager) *mux.Router {
router := mux.NewRouter()
vnfInstanceHandler := router.PathPrefix("/v1/vnf_instances").Subrouter()
@@ -30,22 +31,28 @@ func NewRouter(kubeconfig string) *mux.Router {
vnfInstanceHandler.HandleFunc("/{cloudRegionID}/{namespace}/{externalVNFID}", GetHandler).Methods("GET")
//rbd is resource bundle definition
+ if defClient == nil {
+ defClient = rb.NewDefinitionClient()
+ }
+ defHandler := rbDefinitionHandler{client: defClient}
resRouter := router.PathPrefix("/v1/rb").Subrouter()
- rbdef := rbDefinitionHandler{client: rb.NewDefinitionClient()}
- resRouter.HandleFunc("/definition", rbdef.createHandler).Methods("POST")
- resRouter.HandleFunc("/definition/{rbdID}/content", rbdef.uploadHandler).Methods("POST")
- resRouter.HandleFunc("/definition", rbdef.listHandler).Methods("GET")
- resRouter.HandleFunc("/definition/{rbdID}", rbdef.getHandler).Methods("GET")
- resRouter.HandleFunc("/definition/{rbdID}", rbdef.deleteHandler).Methods("DELETE")
+ resRouter.HandleFunc("/definition", defHandler.createHandler).Methods("POST")
+ resRouter.HandleFunc("/definition/{rbdID}/content", defHandler.uploadHandler).Methods("POST")
+ resRouter.HandleFunc("/definition", defHandler.listHandler).Methods("GET")
+ resRouter.HandleFunc("/definition/{rbdID}", defHandler.getHandler).Methods("GET")
+ resRouter.HandleFunc("/definition/{rbdID}", defHandler.deleteHandler).Methods("DELETE")
//rbp is resource bundle profile
- rbprofile := rbProfileHandler{client: rb.NewProfileClient()}
- resRouter.HandleFunc("/profile", rbprofile.createHandler).Methods("POST")
- resRouter.HandleFunc("/profile/{rbpID}/content", rbprofile.uploadHandler).Methods("POST")
- resRouter.HandleFunc("/profile/help", rbprofile.helpHandler).Methods("GET")
- resRouter.HandleFunc("/profile", rbprofile.listHandler).Methods("GET")
- resRouter.HandleFunc("/profile/{rbpID}", rbprofile.getHandler).Methods("GET")
- resRouter.HandleFunc("/profile/{rbpID}", rbprofile.deleteHandler).Methods("DELETE")
+ if profileClient == nil {
+ profileClient = rb.NewProfileClient()
+ }
+ profileHandler := rbProfileHandler{client: profileClient}
+ resRouter.HandleFunc("/profile", profileHandler.createHandler).Methods("POST")
+ resRouter.HandleFunc("/profile/{rbpID}/content", profileHandler.uploadHandler).Methods("POST")
+ resRouter.HandleFunc("/profile/help", profileHandler.helpHandler).Methods("GET")
+ resRouter.HandleFunc("/profile", profileHandler.listHandler).Methods("GET")
+ resRouter.HandleFunc("/profile/{rbpID}", profileHandler.getHandler).Methods("GET")
+ resRouter.HandleFunc("/profile/{rbpID}", profileHandler.deleteHandler).Methods("DELETE")
// (TODO): Fix update method
// vnfInstanceHandler.HandleFunc("/{vnfInstanceId}", UpdateHandler).Methods("PUT")
diff --git a/src/k8splugin/api/handler_test.go b/src/k8splugin/api/handler_test.go
index 2bac3111..40d198b7 100644
--- a/src/k8splugin/api/handler_test.go
+++ b/src/k8splugin/api/handler_test.go
@@ -48,7 +48,7 @@ func (c *mockCSAR) DestroyVNF(data map[string][]string, namespace string,
}
func executeRequest(req *http.Request) *httptest.ResponseRecorder {
- router := NewRouter("")
+ router := NewRouter("", nil, nil)
recorder := httptest.NewRecorder()
router.ServeHTTP(recorder, req)
diff --git a/src/k8splugin/cmd/main.go b/src/k8splugin/cmd/main.go
index c07446a7..e0e715be 100644
--- a/src/k8splugin/cmd/main.go
+++ b/src/k8splugin/cmd/main.go
@@ -43,7 +43,7 @@ func main() {
log.Fatal(err)
}
- httpRouter := api.NewRouter(kubeconfig)
+ httpRouter := api.NewRouter(kubeconfig, nil, nil)
loggedRouter := handlers.LoggingHandler(os.Stdout, httpRouter)
log.Println("Starting Kubernetes Multicloud API")