In this patch implement the route: /v2/projects.
Issue-ID: MULTICLOUD-1126
Signed-off-by: Rajamohan Raj <rajamohan.raj@intel.com>
Change-Id: Ia38aa560a74c26b8528d6bd579038c1b80b4d3c9
}
router.HandleFunc("/projects", projHandler.createHandler).Methods("POST")
router.HandleFunc("/projects/{project-name}", projHandler.getHandler).Methods("GET")
+ router.HandleFunc("/projects", projHandler.getHandler).Methods("GET")
router.HandleFunc("/projects/{project-name}", projHandler.deleteHandler).Methods("DELETE")
//setting routes for compositeApp
vars := mux.Vars(r)
name := vars["project-name"]
+ // handle for get all projects
+ if len(name) == 0 {
+ var pList []moduleLib.Project
+
+ projects, err := h.client.GetAllProjects()
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ for _, p := range projects {
+ pList = append(pList, moduleLib.Project{MetaData: p.MetaData})
+ }
+
+ w.Header().Set("Content-Type", "application/json")
+ w.WriteHeader(http.StatusOK)
+ err = json.NewEncoder(w).Encode(pList)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+ return
+
+ }
+
ret, err := h.client.GetProject(name)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return m.Err
}
+func (m *mockProjectManager) GetAllProjects() ([]moduleLib.Project, error) {
+ return []moduleLib.Project{}, m.Err
+}
+
func TestProjectCreateHandler(t *testing.T) {
testCases := []struct {
label string
CreateProject(pr Project) (Project, error)
GetProject(name string) (Project, error)
DeleteProject(name string) error
+ GetAllProjects() ([]Project, error)
}
// ProjectClient implements the ProjectManager
return Project{}, pkgerrors.New("Error getting Project")
}
+// GetAllProjects returns all the projects
+func (v *ProjectClient) GetAllProjects() ([]Project, error) {
+ key := ProjectKey{
+ ProjectName: "",
+ }
+
+ var res []Project
+ values, err := db.DBconn.Find(v.storeName, key, v.tagMeta)
+ if err != nil {
+
+ }
+
+ for _, value := range values {
+ p := Project{}
+ err = db.DBconn.Unmarshal(value, &p)
+ if err != nil {
+ return []Project{}, pkgerrors.Wrap(err, "Unmarshaling Project")
+ }
+ res = append(res, p)
+ }
+ return res, nil
+}
+
// DeleteProject the Project from database
func (v *ProjectClient) DeleteProject(name string) error {