summaryrefslogtreecommitdiffstats
path: root/src/tools/emcoctl
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/emcoctl')
-rw-r--r--src/tools/emcoctl/cmd/utils.go26
-rw-r--r--src/tools/emcoctl/examples/dcm.yaml105
-rw-r--r--src/tools/emcoctl/examples/emco-cfg.yaml3
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