diff options
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/emcoctl/cmd/utils.go | 26 | ||||
-rw-r--r-- | src/tools/emcoctl/examples/dcm.yaml | 105 | ||||
-rw-r--r-- | src/tools/emcoctl/examples/emco-cfg.yaml | 3 |
3 files changed, 126 insertions, 8 deletions
diff --git a/src/tools/emcoctl/cmd/utils.go b/src/tools/emcoctl/cmd/utils.go index 62b33755..d266a00f 100644 --- a/src/tools/emcoctl/cmd/utils.go +++ b/src/tools/emcoctl/cmd/utils.go @@ -25,8 +25,8 @@ import ( "github.com/go-resty/resty/v2" "github.com/mitchellh/mapstructure" - "gopkg.in/yaml.v3" pkgerrors "github.com/pkg/errors" + "gopkg.in/yaml.v3" ) var inputFiles []string @@ -53,9 +53,9 @@ type emcoRes struct { } type emcoBody struct { - Meta Metadata `json:"metadata,omitempty"` - Label string `json:"label-name,omitempty"` - Spec map[string]interface{} `json:"spec,omitempty"` + Meta Metadata `json:"metadata,omitempty"` + Label string `json:"label-name,omitempty"` + Spec map[string]interface{} `json:"spec,omitempty"` } type emcoCompositeAppSpec struct { @@ -67,6 +67,7 @@ type Resources struct { body []byte file string } + // RestyClient to use with CLI type RestyClient struct { client *resty.Client @@ -141,7 +142,7 @@ func (r RestyClient) RestClientPost(anchor string, body []byte) error { return err } fmt.Println("URL:", anchor, "Response Code:", resp.StatusCode(), "Response:", resp) - if (resp.StatusCode() >= 201 && resp.StatusCode() <= 299) { + if resp.StatusCode() >= 201 && resp.StatusCode() <= 299 { return nil } return pkgerrors.Errorf("Server Post Error") @@ -174,7 +175,7 @@ func (r RestyClient) RestClientMultipartPost(anchor string, body []byte, file st return err } fmt.Println("URL:", anchor, "Response Code:", resp.StatusCode(), "Response:", resp) - if (resp.StatusCode() >= 201 && resp.StatusCode() <= 299) { + if resp.StatusCode() >= 201 && resp.StatusCode() <= 299 { return nil } return pkgerrors.Errorf("Server Multipart Post Error") @@ -248,6 +249,7 @@ func (r RestyClient) RestClientGet(anchor string, body []byte) error { return r.RestClientGetAnchor(anchor) } + // RestClientDeleteAnchor returns all resource in the input file func (r RestyClient) RestClientDeleteAnchor(anchor string) error { url, err := GetURL(anchor) @@ -262,6 +264,7 @@ func (r RestyClient) RestClientDeleteAnchor(anchor string) error { fmt.Println("URL:", anchor, "Response Code:", resp.StatusCode(), "Response:", resp) return nil } + // RestClientDelete calls rest delete command func (r RestyClient) RestClientDelete(anchor string, body []byte) error { @@ -306,6 +309,7 @@ func (r RestyClient) RestClientDelete(anchor string, body []byte) error { } return r.RestClientDeleteAnchor(anchor) } + // GetURL reads the configuration file to get URL func GetURL(anchor string) (string, error) { var baseUrl string @@ -324,13 +328,19 @@ func GetURL(anchor string) (string, error) { case "controllers": baseUrl = GetOrchestratorURL() case "projects": + if len(s) >= 3 && s[2] == "logical-clouds" { + baseUrl = GetDcmURL() + break + } if len(s) >= 6 && s[5] == "network-controller-intent" { baseUrl = GetOvnactionURL() - } else { - baseUrl = GetOrchestratorURL() + break } + // All other paths go to Orchestrator + baseUrl = GetOrchestratorURL() default: return "", fmt.Errorf("Invalid Anchor") } + fmt.Printf(baseUrl) return (baseUrl + "/" + anchor), nil } diff --git a/src/tools/emcoctl/examples/dcm.yaml b/src/tools/emcoctl/examples/dcm.yaml new file mode 100644 index 00000000..a567491b --- /dev/null +++ b/src/tools/emcoctl/examples/dcm.yaml @@ -0,0 +1,105 @@ +#creating controller entries +version: emco/v2 +resourceContext: + anchor: controllers +metadata : + name: rsync +spec: + host: localhost + port: 9018 + +--- +#creating cluster provider +version: emco/v2 +resourceContext: + anchor: cluster-providers +metadata : + name: cp-1 + +--- +#creating cluster +version: emco/v2 +resourceContext: + anchor: cluster-providers/cp-1/clusters +metadata : + name: c1 +file: + # Replace with actual path + kubeconfig + +--- +#create project +version: emco/v2 +resourceContext: + anchor: projects +metadata : + name: proj1 + +--- +#create logical cloud +version: emco/v2 +resourceContext: + anchor: projects/proj1/logical-clouds +metadata: + name: lc1 +spec: + namespace: ns1 + user: + user-name: user-1 + type: certificate + user-permissions: + - permission-name: permission-1 + apiGroups: + - "" + resources: + - secrets + - pods + verbs: + - get + - watch + - list + - create + +--- +#create cluster reference +version: emco/v2 +resourceContext: + anchor: projects/proj1/logical-clouds/lc1/cluster-references +metadata: + name: lc-cl-1 +spec: + cluster-provider: cp-1 + cluster-name: c1 + loadbalancer-ip: "0.0.0.0" + +--- +#create cluster quotas +version: emco/v2 +resourceContext: + anchor: projects/proj1/logical-clouds/lc1/cluster-quotas +metadata: + name: quota-1 +spec: + limits.cpu: '400' + limits.memory: 1000Gi + requests.cpu: '300' + requests.memory: 900Gi + requests.storage: 500Gi + requests.ephemeral-storage: '500' + limits.ephemeral-storage: '500' + persistentvolumeclaims: '500' + pods: '500' + configmaps: '1000' + replicationcontrollers: '500' + resourcequotas: '500' + services: '500' + services.loadbalancers: '500' + services.nodeports: '500' + secrets: '500' + count/replicationcontrollers: '500' + count/deployments.apps: '500' + count/replicasets.apps: '500' + count/statefulsets.apps: '500' + count/jobs.batch: '500' + count/cronjobs.batch: '500' + count/deployments.extensions: '500' diff --git a/src/tools/emcoctl/examples/emco-cfg.yaml b/src/tools/emcoctl/examples/emco-cfg.yaml index a7e284ab..039a6f34 100644 --- a/src/tools/emcoctl/examples/emco-cfg.yaml +++ b/src/tools/emcoctl/examples/emco-cfg.yaml @@ -10,3 +10,6 @@ ovnaction: host: localhost port: 9018 + dcm: + host: localhost + port: 9017 |