diff options
Diffstat (limited to 'src/orchestrator/internal/project/project.go')
-rw-r--r-- | src/orchestrator/internal/project/project.go | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/src/orchestrator/internal/project/project.go b/src/orchestrator/internal/project/project.go deleted file mode 100644 index f0c50065..00000000 --- a/src/orchestrator/internal/project/project.go +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2019 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 project - -import ( - "encoding/json" - - "github.com/onap/multicloud-k8s/src/orchestrator/internal/db" - - pkgerrors "github.com/pkg/errors" -) - -// Project contains the parameters needed for Projects -// It implements the interface for managing the Projects -type Project struct { - ProjectName string `json:"project-name"` - Description string `json:"description"` -} - -// ProjectKey is the key structure that is used in the database -type ProjectKey struct { - ProjectName string `json:"rb-name"` -} - -// We will use json marshalling to convert to string to -// preserve the underlying structure. -func (pk ProjectKey) String() string { - out, err := json.Marshal(pk) - if err != nil { - return "" - } - - return string(out) -} - -// ProjectManager is an interface exposes the Project functionality -type ProjectManager interface { - Create(pr Project) (Project, error) - Get(name string) (Project, error) - Delete(name string) error -} - -// ProjectClient implements the ProjectManager -// It will also be used to maintain some localized state -type ProjectClient struct { - storeName string - tagMeta, tagContent string -} - -// NewProjectClient returns an instance of the ProjectClient -// which implements the ProjectManager -func NewProjectClient() *ProjectClient { - return &ProjectClient{ - tagMeta: "projectmetadata", - } -} - -// Create a new collection based on the project -func (v *ProjectClient) Create(p Project) (Project, error) { - - //Construct the composite key to select the entry - key := ProjectKey{ - ProjectName: p.ProjectName, - } - - //Check if this Project already exists - _, err := v.Get(p.ProjectName) - if err == nil { - return Project{}, pkgerrors.New("Project already exists") - } - - err = db.DBconn.Create(p.ProjectName, key, v.tagMeta, p) - if err != nil { - return Project{}, pkgerrors.Wrap(err, "Creating DB Entry") - } - - return p, nil -} - -// Get returns the Project for corresponding name -func (v *ProjectClient) Get(name string) (Project, error) { - - //Construct the composite key to select the entry - key := ProjectKey{ - ProjectName: name, - } - value, err := db.DBconn.Read(name, key, v.tagMeta) - if err != nil { - return Project{}, pkgerrors.Wrap(err, "Get Project") - } - - //value is a byte array - if value != nil { - proj := Project{} - err = db.DBconn.Unmarshal(value, &proj) - if err != nil { - return Project{}, pkgerrors.Wrap(err, "Unmarshaling Value") - } - return proj, nil - } - - return Project{}, pkgerrors.New("Error getting Project") -} - -// Delete the Project from database -func (v *ProjectClient) Delete(name string) error { - - //Construct the composite key to select the entry - key := ProjectKey{ - ProjectName: name, - } - err := db.DBconn.Delete(name, key, v.tagMeta) - if err != nil { - return pkgerrors.Wrap(err, "Delete Project Entry;") - } - - //TODO: Delete the collection when the project is deleted - return nil -} |