You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by sv...@apache.org on 2016/10/25 19:10:58 UTC
[04/19] brooklyn-client git commit: add catalog list for entities,
locations, policies
add catalog list for entities, locations, policies
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-client/commit/72355dd9
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-client/tree/72355dd9
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-client/diff/72355dd9
Branch: refs/heads/master
Commit: 72355dd9af88a5dfc4b35cbdbd761f907c5f2d43
Parents: b7eca93
Author: Geoff Macartney <ge...@cloudsoftcorp.com>
Authored: Thu Oct 13 20:18:56 2016 +0100
Committer: Geoff Macartney <ge...@cloudsoftcorp.com>
Committed: Thu Oct 13 20:18:56 2016 +0100
----------------------------------------------------------------------
cli/api/catalog/catalog.go | 10 ++---
cli/commands/catalog-list.go | 89 +++++++++++++++++++++++++++++++++++++--
cli/commands/catalog.go | 2 +-
cli/models/catalog.go | 31 ++++++--------
4 files changed, 104 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/72355dd9/cli/api/catalog/catalog.go
----------------------------------------------------------------------
diff --git a/cli/api/catalog/catalog.go b/cli/api/catalog/catalog.go
index 3db32ce..6a017f5 100644
--- a/cli/api/catalog/catalog.go
+++ b/cli/api/catalog/catalog.go
@@ -150,15 +150,15 @@ func Policies(network *net.Network) ([]models.CatalogPolicySummary, error) {
return policies, err
}
-func Locations(network *net.Network) (models.CatalogLocationSummary, error) {
+func Locations(network *net.Network) ([]models.CatalogLocationSummary, error) {
url := "/v1/catalog/locations"
- var catalogLocation models.CatalogLocationSummary
+ var catalogLocations []models.CatalogLocationSummary
body, err := network.SendGetRequest(url)
if err != nil {
- return catalogLocation, err
+ return catalogLocations, err
}
- err = json.Unmarshal(body, &catalogLocation)
- return catalogLocation, err
+ err = json.Unmarshal(body, &catalogLocations)
+ return catalogLocations, err
}
func AddCatalog(network *net.Network, resource string) (string, error) {
http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/72355dd9/cli/commands/catalog-list.go
----------------------------------------------------------------------
diff --git a/cli/commands/catalog-list.go b/cli/commands/catalog-list.go
index bb6efe3..5fa8414 100644
--- a/cli/commands/catalog-list.go
+++ b/cli/commands/catalog-list.go
@@ -26,6 +26,7 @@ import (
"github.com/apache/brooklyn-client/cli/scope"
"github.com/apache/brooklyn-client/cli/terminal"
"github.com/urfave/cli"
+ "github.com/apache/brooklyn-client/cli/models"
)
type CatalogList struct {
@@ -43,7 +44,24 @@ func (cmd *CatalogList) Metadata() command_metadata.CommandMetadata {
Name: "list",
Description: "* List the available catalog applications",
Usage: "BROOKLYN_NAME catalog list",
- Flags: []cli.Flag{},
+ Flags: []cli.Flag{
+ cli.BoolFlag{
+ Name: "applications, a",
+ Usage: "list applications (default)",
+ },
+ cli.BoolFlag{
+ Name: "entities, e",
+ Usage: "list entities",
+ },
+ cli.BoolFlag{
+ Name: "locations, l",
+ Usage: "list locations",
+ },
+ cli.BoolFlag{
+ Name: "policies, p",
+ Usage: "list policies",
+ },
+ },
}
}
@@ -51,13 +69,76 @@ func (cmd *CatalogList) Run(scope scope.Scope, c *cli.Context) {
if err := net.VerifyLoginURL(cmd.network); err != nil {
error_handler.ErrorExit(err)
}
- catalog, err := catalog.Catalog(cmd.network)
+ summary, err := cmd.list(c)
if nil != err {
error_handler.ErrorExit(err)
}
table := terminal.NewTable([]string{"Id", "Name", "Description"})
- for _, app := range catalog {
- table.Add(app.Id, app.Name, app.Description)
+ for _, catalogItem := range summary {
+ table.Add(catalogItem.Id, catalogItem.Name, catalogItem.Description)
}
table.Print()
}
+
+func (cmd *CatalogList) list(c *cli.Context) ([]models.IdentityDetails, error) {
+ if c.IsSet("entities") {
+ list, err := cmd.listEntities(c)
+ return list, err
+ } else if c.IsSet("locations") {
+ list, err := cmd.listLocations(c)
+ return list, err
+ } else if c.IsSet("policies") {
+ list, err := cmd.listPolicies(c)
+ return list, err
+ }
+ items, err := cmd.listCatalogItems(c)
+ return items, err
+}
+
+func (cmd *CatalogList) listPolicies(c *cli.Context) ([]models.IdentityDetails, error) {
+ policies, err := catalog.Policies(cmd.network)
+ if err != nil {
+ return nil, err
+ }
+ result := make([]models.IdentityDetails, len(policies))
+ for i, policy := range policies {
+ result[i] = policy.IdentityDetails
+ }
+ return result, nil
+}
+
+func (cmd *CatalogList) listLocations(c *cli.Context) ([]models.IdentityDetails, error) {
+ locations, err := catalog.Locations(cmd.network)
+ if err != nil {
+ return nil, err
+ }
+ result := make([]models.IdentityDetails, len(locations))
+ for i, location := range locations {
+ result[i] = location.CatalogItemSummary.IdentityDetails
+ }
+ return result, nil
+}
+
+func (cmd *CatalogList) listEntities(c *cli.Context) ([]models.IdentityDetails, error) {
+ entities, err := catalog.Entities(cmd.network)
+ if err != nil {
+ return nil, err
+ }
+ result := make([]models.IdentityDetails, len(entities))
+ for i, ent := range entities {
+ result[i] = ent.IdentityDetails
+ }
+ return result, nil
+}
+
+func (cmd *CatalogList) listCatalogItems(c *cli.Context) ([]models.IdentityDetails, error) {
+ items, err := catalog.Catalog(cmd.network)
+ if err != nil {
+ return nil, err
+ }
+ result := make([]models.IdentityDetails, len(items))
+ for i, item := range items {
+ result[i] = item.IdentityDetails
+ }
+ return result, nil
+}
http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/72355dd9/cli/commands/catalog.go
----------------------------------------------------------------------
diff --git a/cli/commands/catalog.go b/cli/commands/catalog.go
index 7102b3a..c197c21 100644
--- a/cli/commands/catalog.go
+++ b/cli/commands/catalog.go
@@ -78,6 +78,6 @@ func (cmd *Catalog) Run(scope scope.Scope, c *cli.Context) {
if err := net.VerifyLoginURL(cmd.network); err != nil {
error_handler.ErrorExit(err)
}
- fmt.Printf("Unrecognised instruction, please use one of (%s)\n", catalogCommandsUsage)
+ fmt.Printf("'catalog' requires one of (%s)\n", catalogCommandsUsage)
}
http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/72355dd9/cli/models/catalog.go
----------------------------------------------------------------------
diff --git a/cli/models/catalog.go b/cli/models/catalog.go
index ef6dabf..ff537c8 100644
--- a/cli/models/catalog.go
+++ b/cli/models/catalog.go
@@ -18,46 +18,41 @@
*/
package models
-type CatalogItemSummary struct {
+type IdentityDetails struct {
+ Id string `json:"id"`
Name string `json:"name"`
- JavaType string `json:"javaType"`
SymbolicName string `json:"symbolicName"`
Version string `json:"version"`
- PlanYaml string `json:"planYaml"`
Description string `json:"description"`
+}
+
+type CatalogItemSummary struct {
+ IdentityDetails
+ JavaType string `json:"javaType"`
+ PlanYaml string `json:"planYaml"`
Deprecated bool `json:"deprecated"`
Links map[string]interface{} `json:"links"`
- Id string `json:"id"`
Type string `json:"type"`
}
type CatalogPolicySummary struct {
- symbolicName string `json:"symbolicName"`
- version string `json:"version"`
- displayName string `json:"name"`
+ IdentityDetails
javaType string `json:"javaType"`
planYaml string `json:"planYaml"`
- description string `json:"description"`
iconUrl string `json:"iconUrl"`
deprecated bool `json:"deprecated"`
links map[string]URI `json:"links"`
}
+
type CatalogLocationSummary struct {
+ CatalogItemSummary
+ IconUrl string `json:"iconUrl"`
}
type CatalogEntitySummary struct {
- symbolicName string `json:"symbolicName"`
- version string `json:"version"`
- displayName string `json:"name"`
- javaType string `json:"javaType"`
- planYaml string `json:"planYaml"`
- description string `json:"description"`
+ CatalogItemSummary
Config []ConfigSummary `json:"config"`
Effectors []EffectorSummary `json:"effectors"`
Sensors []SensorSummary `json:"sensors"`
- Deprecated bool `json:"deprecated"`
- Links map[string]interface{} `json:"links"`
- Id string `json:"id"`
- Type string `json:"type"`
}