diff options
Diffstat (limited to 'src/orchestrator/pkg')
-rw-r--r-- | src/orchestrator/pkg/module/compositeapp.go | 33 | ||||
-rw-r--r-- | src/orchestrator/pkg/module/deployment_intent_groups.go | 45 | ||||
-rw-r--r-- | src/orchestrator/pkg/module/generic_placement_intent.go | 43 | ||||
-rw-r--r-- | src/orchestrator/pkg/module/project.go | 24 |
4 files changed, 143 insertions, 2 deletions
diff --git a/src/orchestrator/pkg/module/compositeapp.go b/src/orchestrator/pkg/module/compositeapp.go index 70502367..5bf7ddec 100644 --- a/src/orchestrator/pkg/module/compositeapp.go +++ b/src/orchestrator/pkg/module/compositeapp.go @@ -64,6 +64,7 @@ func (cK CompositeAppKey) String() string { type CompositeAppManager interface { CreateCompositeApp(c CompositeApp, p string) (CompositeApp, error) GetCompositeApp(name string, version string, p string) (CompositeApp, error) + GetAllCompositeApps(p string) ([]CompositeApp, error) DeleteCompositeApp(name string, version string, p string) error } @@ -140,6 +141,38 @@ func (v *CompositeAppClient) GetCompositeApp(name string, version string, p stri return CompositeApp{}, pkgerrors.New("Error getting composite application") } +// GetAllCompositeApps returns all the compositeApp for a given project +func (v *CompositeAppClient) GetAllCompositeApps(p string) ([]CompositeApp, error) { + + _, err := NewProjectClient().GetProject(p) + if err != nil { + return []CompositeApp{}, pkgerrors.New("Unable to find the project") + } + + key := CompositeAppKey{ + CompositeAppName: "", + Version: "", + Project: p, + } + + var caList []CompositeApp + values, err := db.DBconn.Find(v.storeName, key, v.tagMeta) + if err != nil { + return []CompositeApp{}, pkgerrors.Wrap(err, "Getting CompositeApps") + } + + for _, value := range values { + ca := CompositeApp{} + err = db.DBconn.Unmarshal(value, &ca) + if err != nil { + return []CompositeApp{}, pkgerrors.Wrap(err, "Unmarshaling CompositeApp") + } + caList = append(caList, ca) + } + + return caList, nil +} + // DeleteCompositeApp deletes the CompositeApp from database func (v *CompositeAppClient) DeleteCompositeApp(name string, version string, p string) error { diff --git a/src/orchestrator/pkg/module/deployment_intent_groups.go b/src/orchestrator/pkg/module/deployment_intent_groups.go index 0decb68f..c7237032 100644 --- a/src/orchestrator/pkg/module/deployment_intent_groups.go +++ b/src/orchestrator/pkg/module/deployment_intent_groups.go @@ -64,6 +64,7 @@ type DeploymentIntentGroupManager interface { GetDeploymentIntentGroup(di string, p string, ca string, v string) (DeploymentIntentGroup, error) GetDeploymentIntentGroupContext(di string, p string, ca string, v string) (appcontext.AppContext, string, error) DeleteDeploymentIntentGroup(di string, p string, ca string, v string) error + GetAllDeploymentIntentGroups(p string, ca string, v string) ([]DeploymentIntentGroup, error) } // DeploymentIntentGroupKey consists of Name of the deployment group, project name, CompositeApp name, CompositeApp version @@ -106,7 +107,7 @@ func (c *DeploymentIntentGroupClient) CreateDeploymentIntentGroup(d DeploymentIn res, err := c.GetDeploymentIntentGroup(d.MetaData.Name, p, ca, v) if !reflect.DeepEqual(res, DeploymentIntentGroup{}) { - return DeploymentIntentGroup{}, pkgerrors.New("AppIntent already exists") + return DeploymentIntentGroup{}, pkgerrors.New("DeploymentIntent already exists") } //Check if project exists @@ -164,7 +165,47 @@ func (c *DeploymentIntentGroupClient) GetDeploymentIntentGroup(di string, p stri } -// GetDeploymentIntentGroup returns the DeploymentIntentGroup with a given name, project, compositeApp and version of compositeApp +// GetAllDeploymentIntentGroups returns all the deploymentIntentGroups under a specific project, compositeApp and version +func (c *DeploymentIntentGroupClient) GetAllDeploymentIntentGroups(p string, ca string, v string) ([]DeploymentIntentGroup, error) { + + key := DeploymentIntentGroupKey{ + Name: "", + Project: p, + CompositeApp: ca, + Version: v, + } + + //Check if project exists + _, err := NewProjectClient().GetProject(p) + if err != nil { + return []DeploymentIntentGroup{}, pkgerrors.Wrap(err, "Unable to find the project") + } + + //check if compositeApp exists + _, err = NewCompositeAppClient().GetCompositeApp(ca, v, p) + if err != nil { + return []DeploymentIntentGroup{}, pkgerrors.Wrap(err, "Unable to find the composite-app, check CompositeAppName and Version") + } + var diList []DeploymentIntentGroup + result, err := db.DBconn.Find(c.storeName, key, c.tagMetaData) + if err != nil { + return []DeploymentIntentGroup{}, pkgerrors.Wrap(err, "Get DeploymentIntentGroup error") + } + + for _, value := range result { + di := DeploymentIntentGroup{} + err = db.DBconn.Unmarshal(value, &di) + if err != nil { + return []DeploymentIntentGroup{}, pkgerrors.Wrap(err, "Unmarshaling DeploymentIntentGroup") + } + diList = append(diList, di) + } + + return diList, nil + +} + +// GetDeploymentIntentGroupContext returns the AppContent with a given DeploymentIntentname, project, compositeAppName and version of compositeApp func (c *DeploymentIntentGroupClient) GetDeploymentIntentGroupContext(di string, p string, ca string, v string) (appcontext.AppContext, string, error) { key := DeploymentIntentGroupKey{ diff --git a/src/orchestrator/pkg/module/generic_placement_intent.go b/src/orchestrator/pkg/module/generic_placement_intent.go index 73849474..fb00a6ab 100644 --- a/src/orchestrator/pkg/module/generic_placement_intent.go +++ b/src/orchestrator/pkg/module/generic_placement_intent.go @@ -50,6 +50,8 @@ type GenericPlacementIntentManager interface { compositeAppName string, version string) (GenericPlacementIntent, error) DeleteGenericPlacementIntent(intentName string, projectName string, compositeAppName string, version string) error + + GetAllGenericPlacementIntents(p string, ca string, v string) ([]GenericPlacementIntent, error) } // GenericPlacementIntentKey is used as the primary key @@ -148,6 +150,47 @@ func (c *GenericPlacementIntentClient) GetGenericPlacementIntent(i string, p str } +// GetAllGenericPlacementIntents returns all the generic placement intents for a given compsoite app name, composite app version and project. +func (c *GenericPlacementIntentClient) GetAllGenericPlacementIntents(p string, ca string, v string) ([]GenericPlacementIntent, error) { + + //Check if project exists + _, err := NewProjectClient().GetProject(p) + if err != nil { + return []GenericPlacementIntent{}, pkgerrors.Wrap(err, "Unable to find the project") + } + + // check if compositeApp exists + _, err = NewCompositeAppClient().GetCompositeApp(ca, v, p) + if err != nil { + return []GenericPlacementIntent{}, pkgerrors.Wrap(err, "Unable to find the composite-app, check compositeApp name and version") + } + + key := GenericPlacementIntentKey{ + Name: "", + Project: p, + CompositeApp: ca, + Version: v, + } + + var gpList []GenericPlacementIntent + values, err := db.DBconn.Find(c.storeName, key, c.tagMetaData) + if err != nil { + return []GenericPlacementIntent{}, pkgerrors.Wrap(err, "Getting GenericPlacementIntent") + } + + for _, value := range values { + gp := GenericPlacementIntent{} + err = db.DBconn.Unmarshal(value, &gp) + if err != nil { + return []GenericPlacementIntent{}, pkgerrors.Wrap(err, "Unmarshaling GenericPlacementIntent") + } + gpList = append(gpList, gp) + } + + return gpList, nil + +} + // DeleteGenericPlacementIntent the intent from the database func (c *GenericPlacementIntentClient) DeleteGenericPlacementIntent(i string, p string, ca string, v string) error { key := GenericPlacementIntentKey{ diff --git a/src/orchestrator/pkg/module/project.go b/src/orchestrator/pkg/module/project.go index a6f59254..02f6d827 100644 --- a/src/orchestrator/pkg/module/project.go +++ b/src/orchestrator/pkg/module/project.go @@ -58,6 +58,7 @@ type ProjectManager interface { CreateProject(pr Project) (Project, error) GetProject(name string) (Project, error) DeleteProject(name string) error + GetAllProjects() ([]Project, error) } // ProjectClient implements the ProjectManager @@ -123,6 +124,29 @@ func (v *ProjectClient) GetProject(name string) (Project, error) { 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 { |