summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--deployments/helm/v2/onap4k8s/README.md11
-rw-r--r--deployments/helm/v2/onap4k8s/ncm/resources/config/config.json5
-rw-r--r--deployments/helm/v2/onap4k8s/ncm/values.yaml2
-rw-r--r--deployments/helm/v2/onap4k8s/ovnaction/templates/deployment.yaml2
-rw-r--r--deployments/helm/v2/onap4k8s/ovnaction/templates/service.yaml20
-rw-r--r--deployments/helm/v2/onap4k8s/ovnaction/values.yaml10
-rw-r--r--deployments/helm/v2/onap4k8s/rsync/resources/config/config.json2
-rw-r--r--docs/EMCO.postman_collection.json15748
-rw-r--r--docs/emco_apis.yaml10
-rwxr-xr-xkud/tests/m3db-operator-test.sh2
-rwxr-xr-xkud/tests/plugin_collection_v2.sh9
-rwxr-xr-xkud/tests/prometheus-test.sh2
-rwxr-xr-xkud/tests/sanity-check-for-v2.sh509
-rwxr-xr-xkud/tests/vfw-test.sh2
-rw-r--r--src/clm/api/clusterhandler_test.go10
-rw-r--r--src/clm/go.mod15
-rw-r--r--src/clm/pkg/cluster/cluster.go47
-rw-r--r--src/dcm/api/api.go263
-rw-r--r--src/dcm/api/logicalCloudHandler.go293
-rw-r--r--src/dcm/pkg/module/apply.go875
-rw-r--r--src/dcm/pkg/module/logicalcloud.go343
-rw-r--r--src/ncm/pkg/module/types/module_definitions.go2
-rw-r--r--src/ncm/pkg/networkintents/network.go40
-rw-r--r--src/ncm/pkg/networkintents/providernet.go48
-rw-r--r--src/ncm/pkg/scheduler/scheduler.go82
-rw-r--r--src/orchestrator/api/api.go3
-rw-r--r--src/orchestrator/api/instantiation_handler.go17
-rw-r--r--src/orchestrator/api/projecthandler.go46
-rw-r--r--src/orchestrator/api/projecthandler_test.go95
-rw-r--r--src/orchestrator/examples/example_module.go9
-rw-r--r--src/orchestrator/go.mod1
-rw-r--r--src/orchestrator/pkg/module/deployment_intent_groups.go44
-rw-r--r--src/orchestrator/pkg/module/instantiation.go111
-rw-r--r--src/orchestrator/pkg/module/project.go6
-rw-r--r--src/orchestrator/pkg/module/project_test.go107
-rw-r--r--src/orchestrator/pkg/state/state_helper.go29
-rw-r--r--src/orchestrator/pkg/state/types.go42
37 files changed, 17811 insertions, 1051 deletions
diff --git a/deployments/helm/v2/onap4k8s/README.md b/deployments/helm/v2/onap4k8s/README.md
index 3ce49a5a..43213153 100644
--- a/deployments/helm/v2/onap4k8s/README.md
+++ b/deployments/helm/v2/onap4k8s/README.md
@@ -28,9 +28,9 @@ Pacakges helm charts in tar.gz format. All packages are in **dist/packages** dir
**3. Deploy EMCO Packages for Databases and Services**
-`$ helm install dist/packages/emco-db-0.1.0.tgz --name rel-db --namespace emco`
+`$ helm install dist/packages/emco-db-0.1.0.tgz --name emco-db --namespace emco`
-`$ helm install dist/packages/emco-services-0.1.0.tgz --name rel-services --namespace emco`
+`$ helm install dist/packages/emco-services-0.1.0.tgz --name emco-services --namespace emco`
**4. Deploy tools (Optional)**
@@ -65,10 +65,11 @@ Optional if tools were installed
After deleting the db package and before installing the package again following error happens:
- `Error: release rel01 failed: object is being deleted: persistentvolumes "rel-emco-etcd-data-0" already exists`
+ `Error: release emco-db failed: object is being deleted: persistentvolumes "emco-db-emco-etcd-data-0" already exists`
Workaround :
- `kubectl edit persistentvolumes rel01-emco-etcd-data-0`
+ `kubectl edit persistentvolumes emco-db-emco-etcd-data-0 -n emco`
+
+ and remover finalizers section
- and remover finalizers section \ No newline at end of file
diff --git a/deployments/helm/v2/onap4k8s/ncm/resources/config/config.json b/deployments/helm/v2/onap4k8s/ncm/resources/config/config.json
index 81728ea9..f1fad4b2 100644
--- a/deployments/helm/v2/onap4k8s/ncm/resources/config/config.json
+++ b/deployments/helm/v2/onap4k8s/ncm/resources/config/config.json
@@ -3,5 +3,6 @@
"database-type": "mongo",
"database-ip": "emco-mongo",
"etcd-ip": "emco-etcd",
- "service-port": "9016"
-} \ No newline at end of file
+ "service-port": "9031"
+}
+
diff --git a/deployments/helm/v2/onap4k8s/ncm/values.yaml b/deployments/helm/v2/onap4k8s/ncm/values.yaml
index e495cd61..afd3f3f2 100644
--- a/deployments/helm/v2/onap4k8s/ncm/values.yaml
+++ b/deployments/helm/v2/onap4k8s/ncm/values.yaml
@@ -54,7 +54,7 @@ readiness:
periodSeconds: 30
service:
- type: ClusterIP
+ type: NodePort
name: ncm
portName: ncm
internalPort: 9031
diff --git a/deployments/helm/v2/onap4k8s/ovnaction/templates/deployment.yaml b/deployments/helm/v2/onap4k8s/ovnaction/templates/deployment.yaml
index 56c62699..261b6ef2 100644
--- a/deployments/helm/v2/onap4k8s/ovnaction/templates/deployment.yaml
+++ b/deployments/helm/v2/onap4k8s/ovnaction/templates/deployment.yaml
@@ -43,8 +43,8 @@ spec:
args: [{{ .Values.args }}]
workingDir: {{ .Values.workingDir }}
ports:
- - containerPort: {{ .Values.service.internalPort }}
- containerPort: {{ .Values.serviceInternal.internalPort }}
+ - containerPort: {{ .Values.service.internalPort }}
{{- if eq .Values.liveness.enabled true }}
livenessProbe:
tcpSocket:
diff --git a/deployments/helm/v2/onap4k8s/ovnaction/templates/service.yaml b/deployments/helm/v2/onap4k8s/ovnaction/templates/service.yaml
index e9e59d38..9bf887ed 100644
--- a/deployments/helm/v2/onap4k8s/ovnaction/templates/service.yaml
+++ b/deployments/helm/v2/onap4k8s/ovnaction/templates/service.yaml
@@ -26,16 +26,7 @@ metadata:
spec:
type: {{ .Values.service.type }}
ports:
- - name: {{ .Values.service.name }}
- {{if eq .Values.service.type "NodePort" -}}
- port: {{ .Values.service.internalPort }}
- nodePort: {{ .Values.global.nodePortPrefixExt | default "302" }}{{ .Values.service.nodePort }}
- {{- else -}}
- port: {{ .Values.service.externalPort }}
- targetPort: {{ .Values.service.internalPort }}
- {{- end}}
- protocol: TCP
- - name: {{ .Values.serviceInternal.name }}
+ - name: {{ .Values.serviceInternal.portName }}
{{if eq .Values.serviceInternal.type "NodePort" -}}
port: {{ .Values.serviceInternal.internalPort }}
nodePort: {{ .Values.global.nodePortPrefixExt | default "302" }}{{ .Values.serviceInternal.nodePort }}
@@ -44,6 +35,15 @@ spec:
targetPort: {{ .Values.serviceInternal.internalPort }}
{{- end}}
protocol: TCP
+ - name: {{ .Values.service.portName }}
+ {{if eq .Values.service.type "NodePort" -}}
+ port: {{ .Values.service.internalPort }}
+ nodePort: {{ .Values.global.nodePortPrefixExt | default "302" }}{{ .Values.service.nodePort }}
+ {{- else -}}
+ port: {{ .Values.service.externalPort }}
+ targetPort: {{ .Values.service.internalPort }}
+ {{- end}}
+ protocol: TCP
selector:
app: {{ include "common.name" . }}
release: {{ .Release.Name }} \ No newline at end of file
diff --git a/deployments/helm/v2/onap4k8s/ovnaction/values.yaml b/deployments/helm/v2/onap4k8s/ovnaction/values.yaml
index 1773592f..411e5d0e 100644
--- a/deployments/helm/v2/onap4k8s/ovnaction/values.yaml
+++ b/deployments/helm/v2/onap4k8s/ovnaction/values.yaml
@@ -57,17 +57,17 @@ readiness:
service:
type: NodePort
name: ovnaction
- portName: ovnaction
- internalPort: 9071
- externalPort: 9071
+ portName: http
+ internalPort: 9051
+ externalPort: 9051
nodePort: 71
serviceInternal:
type: NodePort
name: internal
portName: internal
- internalPort: 9073
- externalPort: 9073
+ internalPort: 9053
+ externalPort: 9053
nodePort: 73
ingress:
diff --git a/deployments/helm/v2/onap4k8s/rsync/resources/config/config.json b/deployments/helm/v2/onap4k8s/rsync/resources/config/config.json
index 484bdf04..56744d63 100644
--- a/deployments/helm/v2/onap4k8s/rsync/resources/config/config.json
+++ b/deployments/helm/v2/onap4k8s/rsync/resources/config/config.json
@@ -2,5 +2,5 @@
"database-type": "mongo",
"database-ip": "emco-mongo",
"etcd-ip": "emco-etcd",
- "service-port": "9017"
+ "service-port": "9041"
} \ No newline at end of file
diff --git a/docs/EMCO.postman_collection.json b/docs/EMCO.postman_collection.json
new file mode 100644
index 00000000..0dad51e0
--- /dev/null
+++ b/docs/EMCO.postman_collection.json
@@ -0,0 +1,15748 @@
+{
+ "info": {
+ "_postman_id": "902ab7b7-5f6d-4a19-ad18-5e1004bd71a0",
+ "name": "EMCO",
+ "description": "EMCO - Edge Multi Cluster Orchestrator\n# Introduction\nApplication Orchestration - For applications and services delivered across multiple administrative infrastructures\n",
+ "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
+ },
+ "item": [
+ {
+ "name": "projects",
+ "item": [
+ {
+ "name": "{project-name}",
+ "item": [
+ {
+ "name": "composite-apps",
+ "item": [
+ {
+ "name": "{composite-app-name}/{composite-app-version}",
+ "item": [
+ {
+ "name": "apps",
+ "item": [
+ {
+ "name": "{app-name}",
+ "item": [
+ {
+ "name": "Get Application",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/apps/:app-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "apps",
+ ":app-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Application"
+ }
+ ]
+ },
+ "description": "Get `application`\n"
+ },
+ "response": [
+ {
+ "name": "Application not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/apps/:app-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "apps",
+ ":app-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "app-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/apps/:app-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "apps",
+ ":app-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "app-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Update app in Composite Application",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "multipart/form-data"
+ }
+ ],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "metadata",
+ "value": "{\"name\":\"<string>\",\"description\":\"<string>\",\"userData1\":\"<string>\",\"userData2\":\"<string>\"}",
+ "type": "text"
+ },
+ {
+ "key": "file",
+ "value": "<binary>",
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/apps/:app-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "apps",
+ ":app-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Application"
+ }
+ ]
+ },
+ "description": "Update app in `Composite Application`"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "metadata",
+ "value": "{\"name\":\"ResName\",\"description\":\"Resource description\",\"userData1\":\"Some data\",\"userData2\":\"Some more data\"}",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ },
+ {
+ "key": "file",
+ "value": "<binary>",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/apps/:app-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "apps",
+ ":app-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "app-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "metadata",
+ "value": "{\"name\":\"ResName\",\"description\":\"Resource description\",\"userData1\":\"Some data\",\"userData2\":\"Some more data\"}",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ },
+ {
+ "key": "file",
+ "value": "<binary>",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/apps/:app-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "apps",
+ ":app-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "app-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Application not found",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "metadata",
+ "value": "{\"name\":\"ResName\",\"description\":\"Resource description\",\"userData1\":\"Some data\",\"userData2\":\"Some more data\"}",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ },
+ {
+ "key": "file",
+ "value": "<binary>",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/apps/:app-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "apps",
+ ":app-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "app-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Delete Application",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/apps/:app-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "apps",
+ ":app-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Application"
+ }
+ ]
+ },
+ "description": "Delete `application`\n"
+ },
+ "response": [
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/apps/:app-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "apps",
+ ":app-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "app-name"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Application not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/apps/:app-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "apps",
+ ":app-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "app-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/apps/:app-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "apps",
+ ":app-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "app-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Add app to Composite Application",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "multipart/form-data"
+ }
+ ],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "metadata",
+ "value": "{\"name\":\"<string>\",\"description\":\"<string>\",\"userData1\":\"<string>\",\"userData2\":\"<string>\"}",
+ "type": "text"
+ },
+ {
+ "key": "file",
+ "value": "<binary>",
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/apps",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "apps"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ }
+ ]
+ },
+ "description": "Add a new `app to composite application`"
+ },
+ "response": [
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "metadata",
+ "value": "{\"name\":\"ResName\",\"description\":\"Resource description\",\"userData1\":\"Some data\",\"userData2\":\"Some more data\"}",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ },
+ {
+ "key": "file",
+ "value": "<binary>",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/apps",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "apps"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "metadata",
+ "value": "{\"name\":\"ResName\",\"description\":\"Resource description\",\"userData1\":\"Some data\",\"userData2\":\"Some more data\"}",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ },
+ {
+ "key": "file",
+ "value": "<binary>",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/apps",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "apps"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Get all apps in Composite Application",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/apps",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "apps"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ }
+ ]
+ },
+ "description": "Get all `apps in composite application`\n"
+ },
+ "response": [
+ {
+ "name": "No Apps found in Composite Application",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/apps",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "apps"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/apps",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "apps"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "[\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n },\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n }\n]"
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "composite-profiles",
+ "item": [
+ {
+ "name": "{composite-profile-name}",
+ "item": [
+ {
+ "name": "profiles",
+ "item": [
+ {
+ "name": "{profile-name}",
+ "item": [
+ {
+ "name": "Get profile from Composite Profile",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles/:profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles",
+ ":profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "composite-profile-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Profile"
+ },
+ {
+ "key": "profile-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Profile"
+ }
+ ]
+ },
+ "description": "Get `profile from composite profile`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles/:profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles",
+ ":profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ },
+ {
+ "key": "profile-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"spec\": {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"app-name\": \"Application1\"\n }\n}"
+ },
+ {
+ "name": "Profile not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles/:profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles",
+ ":profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ },
+ {
+ "key": "profile-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Update Composite Profile for an app",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "multipart/form-data"
+ }
+ ],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "file",
+ "value": "<binary>",
+ "type": "text"
+ },
+ {
+ "key": "metadata",
+ "value": "{\"spec\":{\"metadata\":{\"name\":\"<string>\",\"description\":\"<string>\",\"userData1\":\"<string>\",\"userData2\":\"<string>\"},\"app-name\":\"<string>\"}}",
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles/:profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles",
+ ":profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "composite-profile-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Profile"
+ },
+ {
+ "key": "profile-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Profile"
+ }
+ ]
+ },
+ "description": "Update `Profile`"
+ },
+ "response": [
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "file",
+ "value": "<binary>",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ },
+ {
+ "key": "metadata",
+ "value": "{\"spec\":{\"metadata\":{\"name\":\"ResName\",\"description\":\"Resource description\",\"userData1\":\"Some data\",\"userData2\":\"Some more data\"},\"app-name\":\"Application1\"}}",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles/:profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles",
+ ":profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ },
+ {
+ "key": "profile-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Profile not found",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "file",
+ "value": "<binary>",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ },
+ {
+ "key": "metadata",
+ "value": "{\"spec\":{\"metadata\":{\"name\":\"ResName\",\"description\":\"Resource description\",\"userData1\":\"Some data\",\"userData2\":\"Some more data\"},\"app-name\":\"Application1\"}}",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles/:profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles",
+ ":profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ },
+ {
+ "key": "profile-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "file",
+ "value": "<binary>",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ },
+ {
+ "key": "metadata",
+ "value": "{\"spec\":{\"metadata\":{\"name\":\"ResName\",\"description\":\"Resource description\",\"userData1\":\"Some data\",\"userData2\":\"Some more data\"},\"app-name\":\"Application1\"}}",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles/:profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles",
+ ":profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ },
+ {
+ "key": "profile-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"spec\": {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"app-name\": \"Application1\"\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Delete Profile",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles/:profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles",
+ ":profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "composite-profile-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Profile"
+ },
+ {
+ "key": "profile-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Profile"
+ }
+ ]
+ },
+ "description": "Delete `profile in Composite Profile`\n"
+ },
+ "response": [
+ {
+ "name": "Profile not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles/:profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles",
+ ":profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ },
+ {
+ "key": "profile-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles/:profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles",
+ ":profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ },
+ {
+ "key": "profile-name"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles/:profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles",
+ ":profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ },
+ {
+ "key": "profile-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Add app profile to Composite Profile",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "multipart/form-data"
+ }
+ ],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "file",
+ "value": "<binary>",
+ "type": "text"
+ },
+ {
+ "key": "metadata",
+ "value": "{\"spec\":{\"metadata\":{\"name\":\"<string>\",\"description\":\"<string>\",\"userData1\":\"<string>\",\"userData2\":\"<string>\"},\"app-name\":\"<string>\"}}",
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "composite-profile-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Profile"
+ }
+ ]
+ },
+ "description": "Add a `profile for application`"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "file",
+ "value": "<binary>",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ },
+ {
+ "key": "metadata",
+ "value": "{\"spec\":{\"metadata\":{\"name\":\"ResName\",\"description\":\"Resource description\",\"userData1\":\"Some data\",\"userData2\":\"Some more data\"},\"app-name\":\"Application1\"}}",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ }
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"spec\": {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"app-name\": \"Application1\"\n }\n}"
+ },
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "file",
+ "value": "<binary>",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ },
+ {
+ "key": "metadata",
+ "value": "{\"spec\":{\"metadata\":{\"name\":\"ResName\",\"description\":\"Resource description\",\"userData1\":\"Some data\",\"userData2\":\"Some more data\"},\"app-name\":\"Application1\"}}",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ }
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Get all app profiles in Composite Profiles",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "composite-profile-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Profile"
+ }
+ ]
+ },
+ "description": "Get all `app profiles in a composite Profile`\n"
+ },
+ "response": [
+ {
+ "name": "No profile found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "[\n {\n \"spec\": {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"app-name\": \"Application1\"\n }\n },\n {\n \"spec\": {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"app-name\": \"Application1\"\n }\n }\n]"
+ }
+ ]
+ },
+ {
+ "name": "Query profile for an application",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles/?app-name=<string>",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles",
+ ""
+ ],
+ "query": [
+ {
+ "key": "app-name",
+ "value": "<string>",
+ "description": "(Required) "
+ }
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "composite-profile-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Profile"
+ }
+ ]
+ },
+ "description": "Query `profile for an application`\n"
+ },
+ "response": [
+ {
+ "name": "Profile for application not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles/?app-name=<string>",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles",
+ ""
+ ],
+ "query": [
+ {
+ "key": "app-name",
+ "value": "<string>"
+ }
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name/profiles/?app-name=<string>",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name",
+ "profiles",
+ ""
+ ],
+ "query": [
+ {
+ "key": "app-name",
+ "value": "<string>"
+ }
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"spec\": {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"app-name\": \"Application1\"\n }\n}"
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Get Composite Profile",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "composite-profile-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Profile"
+ }
+ ]
+ },
+ "description": "Get `composite profile`\n"
+ },
+ "response": [
+ {
+ "name": "Composite Profile not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Update Composite Profile",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "composite-profile-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Profile"
+ }
+ ]
+ },
+ "description": "Update `Composite Profile`"
+ },
+ "response": [
+ {
+ "name": "Composite Profile not found",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Delete Composite Profile",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "composite-profile-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Profile"
+ }
+ ]
+ },
+ "description": "Delete `Composite Profile`\n"
+ },
+ "response": [
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Composite Profile not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles/:composite-profile-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles",
+ ":composite-profile-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "composite-profile-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Add Composite Profile",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ }
+ ]
+ },
+ "description": "Add a new `composite profile`"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Get all Composite Profiles",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ }
+ ]
+ },
+ "description": "Get all `profiles in a composite application`\n"
+ },
+ "response": [
+ {
+ "name": "No composite profile found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/composite-profiles",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "composite-profiles"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "[\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n },\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n }\n]"
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "generic-placement-intents",
+ "item": [
+ {
+ "name": "{generic-placement-intent-name}",
+ "item": [
+ {
+ "name": "app-intents",
+ "item": [
+ {
+ "name": "{intent-name}",
+ "item": [
+ {
+ "name": "Get intent",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "generic-placement-intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent"
+ },
+ {
+ "key": "intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent for application"
+ }
+ ]
+ },
+ "description": "Get `generic placement intent`\n"
+ },
+ "response": [
+ {
+ "name": "Intent not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ },
+ {
+ "key": "intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ },
+ {
+ "key": "intent-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"app-name\": \"appl\",\n \"allOf\": [\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n },\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n }\n ],\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ]\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Update intent for an application",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"app-name\": \"<string>\",\n \"allOf\": [\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"<string>\",\n \"cluster-name\": \"<string>\",\n \"provider-name\": \"<string>\"\n },\n {\n \"cluster-label-name\": \"<string>\",\n \"cluster-name\": \"<string>\",\n \"provider-name\": \"<string>\"\n }\n ],\n \"cluster-label-name\": \"<string>\",\n \"cluster-name\": \"<string>\",\n \"provider-name\": \"<string>\"\n },\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"<string>\",\n \"cluster-name\": \"<string>\",\n \"provider-name\": \"<string>\"\n },\n {\n \"cluster-label-name\": \"<string>\",\n \"cluster-name\": \"<string>\",\n \"provider-name\": \"<string>\"\n }\n ],\n \"cluster-label-name\": \"<string>\",\n \"cluster-name\": \"<string>\",\n \"provider-name\": \"<string>\"\n }\n ],\n \"anyOf\": [\n {\n \"cluster-label-name\": \"<string>\",\n \"cluster-name\": \"<string>\",\n \"provider-name\": \"<string>\"\n },\n {\n \"cluster-label-name\": \"<string>\",\n \"cluster-name\": \"<string>\",\n \"provider-name\": \"<string>\"\n }\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "generic-placement-intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent"
+ },
+ {
+ "key": "intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent for application"
+ }
+ ]
+ },
+ "description": "Update `generic placement intent for application`"
+ },
+ "response": [
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"app-name\": \"appl\",\n \"allOf\": [\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n },\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n }\n ],\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ },
+ {
+ "key": "intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"app-name\": \"appl\",\n \"allOf\": [\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n },\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n }\n ],\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ },
+ {
+ "key": "intent-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"app-name\": \"appl\",\n \"allOf\": [\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n },\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n }\n ],\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ]\n }\n}"
+ },
+ {
+ "name": "Generic placement intent not found",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"app-name\": \"appl\",\n \"allOf\": [\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n },\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n }\n ],\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ },
+ {
+ "key": "intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Delete intent",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "generic-placement-intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent"
+ },
+ {
+ "key": "intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent for application"
+ }
+ ]
+ },
+ "description": "Delete `generic placement intent`\n"
+ },
+ "response": [
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ },
+ {
+ "key": "intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ },
+ {
+ "key": "intent-name"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Intent not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ },
+ {
+ "key": "intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Add intent for an application",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"app-name\": \"<string>\",\n \"allOf\": [\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"<string>\",\n \"cluster-name\": \"<string>\",\n \"provider-name\": \"<string>\"\n },\n {\n \"cluster-label-name\": \"<string>\",\n \"cluster-name\": \"<string>\",\n \"provider-name\": \"<string>\"\n }\n ],\n \"cluster-label-name\": \"<string>\",\n \"cluster-name\": \"<string>\",\n \"provider-name\": \"<string>\"\n },\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"<string>\",\n \"cluster-name\": \"<string>\",\n \"provider-name\": \"<string>\"\n },\n {\n \"cluster-label-name\": \"<string>\",\n \"cluster-name\": \"<string>\",\n \"provider-name\": \"<string>\"\n }\n ],\n \"cluster-label-name\": \"<string>\",\n \"cluster-name\": \"<string>\",\n \"provider-name\": \"<string>\"\n }\n ],\n \"anyOf\": [\n {\n \"cluster-label-name\": \"<string>\",\n \"cluster-name\": \"<string>\",\n \"provider-name\": \"<string>\"\n },\n {\n \"cluster-label-name\": \"<string>\",\n \"cluster-name\": \"<string>\",\n \"provider-name\": \"<string>\"\n }\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "generic-placement-intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent"
+ }
+ ]
+ },
+ "description": "Add a `intent for application`"
+ },
+ "response": [
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"app-name\": \"appl\",\n \"allOf\": [\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n },\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n }\n ],\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"app-name\": \"appl\",\n \"allOf\": [\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n },\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n }\n ],\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"app-name\": \"appl\",\n \"allOf\": [\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n },\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n }\n ],\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ]\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Get all Intents in Generic Placement",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "generic-placement-intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent"
+ }
+ ]
+ },
+ "description": "Get all ` Intents in Generic Placement Intent`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "[\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"app-name\": \"appl\",\n \"allOf\": [\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n },\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n }\n ],\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ]\n }\n },\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"app-name\": \"appl\",\n \"allOf\": [\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n },\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n }\n ],\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ]\n }\n }\n]"
+ },
+ {
+ "name": "No Generic Placement Intent found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Query intent for an application",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents/?app-name=<string>",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents",
+ ""
+ ],
+ "query": [
+ {
+ "key": "app-name",
+ "value": "<string>",
+ "description": "(Required) "
+ }
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "generic-placement-intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent"
+ }
+ ]
+ },
+ "description": "Query `generic placement intent for application`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents/?app-name=<string>",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents",
+ ""
+ ],
+ "query": [
+ {
+ "key": "app-name",
+ "value": "<string>"
+ }
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"app-name\": \"appl\",\n \"allOf\": [\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n },\n {\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ],\n \"cluster-label-name\": \"west\",\n \"cluster-name\": \"cluster2\",\n \"provider-name\": \"provider2\"\n }\n ],\n \"anyOf\": [\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n },\n {\n \"cluster-label-name\": \"east\",\n \"cluster-name\": \"cluster1\",\n \"provider-name\": \"provider1\"\n }\n ]\n }\n}"
+ },
+ {
+ "name": "Generic Placement Intent for application not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name/app-intents/?app-name=<string>",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name",
+ "app-intents",
+ ""
+ ],
+ "query": [
+ {
+ "key": "app-name",
+ "value": "<string>"
+ }
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Get Generic Placement Intent",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "generic-placement-intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent"
+ }
+ ]
+ },
+ "description": "Get `generic placement intent`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"spec\": {\n \"logical-cloud\": \"cloud1\"\n },\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ {
+ "name": "Generic Placement Intent not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Update Generic Placement Intent",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"spec\": {\n \"logical-cloud\": \"<string>\"\n },\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "generic-placement-intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent"
+ }
+ ]
+ },
+ "description": "Update `Generic Placement Intent`"
+ },
+ "response": [
+ {
+ "name": "Generic Placement Intent not found",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"spec\": {\n \"logical-cloud\": \"cloud1\"\n },\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"spec\": {\n \"logical-cloud\": \"cloud1\"\n },\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"spec\": {\n \"logical-cloud\": \"cloud1\"\n },\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"spec\": {\n \"logical-cloud\": \"cloud1\"\n },\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Delete Generic Placement Intent",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "generic-placement-intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent"
+ }
+ ]
+ },
+ "description": "Delete `Generic Placement Intent`\n"
+ },
+ "response": [
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Generic Placement Intent not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents/:generic-placement-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents",
+ ":generic-placement-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "generic-placement-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Add Generic Placement Intent",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"spec\": {\n \"logical-cloud\": \"<string>\"\n },\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ }
+ ]
+ },
+ "description": "Add a new `generic placement intent`"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"spec\": {\n \"logical-cloud\": \"cloud1\"\n },\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"spec\": {\n \"logical-cloud\": \"cloud1\"\n },\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"spec\": {\n \"logical-cloud\": \"cloud1\"\n },\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Get all Generic Placement Intents",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ }
+ ]
+ },
+ "description": "Get all `Generic Placement Intents`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "[\n {\n \"spec\": {\n \"logical-cloud\": \"cloud1\"\n },\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n },\n {\n \"spec\": {\n \"logical-cloud\": \"cloud1\"\n },\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n }\n]"
+ },
+ {
+ "name": "No Generic Placement Intent found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/generic-placement-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "generic-placement-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "deployment-intent-groups",
+ "item": [
+ {
+ "name": "{deployment-intent-group-name}",
+ "item": [
+ {
+ "name": "intents",
+ "item": [
+ {
+ "name": "{intent-name}",
+ "item": [
+ {
+ "name": "Get intent for an application",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "deployment-intent-group-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent for application"
+ },
+ {
+ "key": "intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent for application"
+ }
+ ]
+ },
+ "description": "Get `Deployment Intent`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ },
+ {
+ "key": "intent-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"intent\": \"<object>\"\n }\n}"
+ },
+ {
+ "name": "Deployment Intent not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ },
+ {
+ "key": "intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Update intent",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"intent\": \"<object>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "deployment-intent-group-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent for application"
+ },
+ {
+ "key": "intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent for application"
+ }
+ ]
+ },
+ "description": "Update `deployment intent`"
+ },
+ "response": [
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"intent\": \"<object>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ },
+ {
+ "key": "intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Intent not found",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"intent\": \"<object>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ },
+ {
+ "key": "intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"intent\": \"<object>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ },
+ {
+ "key": "intent-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"intent\": \"<object>\"\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Delete intent",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "deployment-intent-group-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent for application"
+ },
+ {
+ "key": "intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent for application"
+ }
+ ]
+ },
+ "description": "Delete `intent`\n"
+ },
+ "response": [
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ },
+ {
+ "key": "intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ },
+ {
+ "key": "intent-name"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Deployment intent not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents/:intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents",
+ ":intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ },
+ {
+ "key": "intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Add Intent",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"intent\": \"<object>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents/",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents",
+ ""
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "deployment-intent-group-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent for application"
+ }
+ ]
+ },
+ "description": "Add `deployment Intent`"
+ },
+ "response": [
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"intent\": \"<object>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents/",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents",
+ ""
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ }
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"intent\": \"<object>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents/",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents",
+ ""
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ }
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"intent\": \"<object>\"\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Get all intents in Deployment Intent Group",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents/",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents",
+ ""
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "deployment-intent-group-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent for application"
+ }
+ ]
+ },
+ "description": "Get all `intents in deployment intent group`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents/",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents",
+ ""
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "[\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"intent\": \"<object>\"\n }\n },\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"intent\": \"<object>\"\n }\n }\n]"
+ },
+ {
+ "name": "No Deployment Intent Group found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents/",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents",
+ ""
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Query intent",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents?intent=<string>",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents"
+ ],
+ "query": [
+ {
+ "key": "intent",
+ "value": "<string>",
+ "description": "(Required) "
+ }
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "deployment-intent-group-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent for application"
+ }
+ ]
+ },
+ "description": "Query `Deployment Intent`\n"
+ },
+ "response": [
+ {
+ "name": "Deployment Intent not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents?intent=<string>",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents"
+ ],
+ "query": [
+ {
+ "key": "intent",
+ "value": "<string>"
+ }
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/intents?intent=<string>",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "intents"
+ ],
+ "query": [
+ {
+ "key": "intent",
+ "value": "<string>"
+ }
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"intent\": \"<object>\"\n }\n}"
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Get Deployment Intent Group",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "deployment-intent-group-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent for application"
+ }
+ ]
+ },
+ "description": "Get `Deployment Intent Group`\n"
+ },
+ "response": [
+ {
+ "name": "Deployment Intent Group not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"profile\": \"<string>\",\n \"version\": \"<string>\",\n \"override-values\": [\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n },\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n }\n ]\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Update Deployment Intent Group",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"profile\": \"<string>\",\n \"version\": \"<string>\",\n \"override-values\": [\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n },\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n }\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "deployment-intent-group-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent for application"
+ }
+ ]
+ },
+ "description": "Update `Deployment Intent Group`"
+ },
+ "response": [
+ {
+ "name": "Deployment Intent Group not found",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"profile\": \"<string>\",\n \"version\": \"<string>\",\n \"override-values\": [\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n },\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n }\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"profile\": \"<string>\",\n \"version\": \"<string>\",\n \"override-values\": [\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n },\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n }\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"profile\": \"<string>\",\n \"version\": \"<string>\",\n \"override-values\": [\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n },\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n }\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"profile\": \"<string>\",\n \"version\": \"<string>\",\n \"override-values\": [\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n },\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n }\n ]\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Delete Deployment Intent Group",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "deployment-intent-group-name",
+ "value": "<string>",
+ "description": "(Required) Name of Generic Placement Intent for application"
+ }
+ ]
+ },
+ "description": "Delete `Deployment Intent Group`\n"
+ },
+ "response": [
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Deployment Intent Group not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "deployment-intent-group-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Approve a Deployment",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/approve",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "approve"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": ""
+ },
+ {
+ "key": "composite-app-name",
+ "value": ""
+ },
+ {
+ "key": "composite-app-version",
+ "value": ""
+ },
+ {
+ "key": "deployment-intent-group-name",
+ "value": ""
+ }
+ ]
+ },
+ "description": "Approve a Deployment"
+ },
+ "response": []
+ },
+ {
+ "name": "Instantiate a Deployment",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/instantiate",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "instantiate"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": ""
+ },
+ {
+ "key": "composite-app-name",
+ "value": ""
+ },
+ {
+ "key": "composite-app-version",
+ "value": ""
+ },
+ {
+ "key": "deployment-intent-group-name",
+ "value": ""
+ }
+ ]
+ },
+ "description": "Instantiate a Deployment"
+ },
+ "response": []
+ },
+ {
+ "name": "Destroy a Deployment",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/destroy",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "destroy"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": ""
+ },
+ {
+ "key": "composite-app-name",
+ "value": ""
+ },
+ {
+ "key": "composite-app-version",
+ "value": ""
+ },
+ {
+ "key": "deployment-intent-group-name",
+ "value": ""
+ }
+ ]
+ },
+ "description": "Destroy a Deployment"
+ },
+ "response": []
+ },
+ {
+ "name": "Status of a Deployment",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups/:deployment-intent-group-name/status",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups",
+ ":deployment-intent-group-name",
+ "status"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": ""
+ },
+ {
+ "key": "composite-app-name",
+ "value": ""
+ },
+ {
+ "key": "composite-app-version",
+ "value": ""
+ },
+ {
+ "key": "deployment-intent-group-name",
+ "value": ""
+ }
+ ]
+ },
+ "description": "Status of a Deployment"
+ },
+ "response": []
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Add Deployment Intent Group",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"profile\": \"<string>\",\n \"version\": \"<string>\",\n \"override-values\": [\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n },\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n }\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ }
+ ]
+ },
+ "description": "Add a new `deployment intent group`"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"profile\": \"<string>\",\n \"version\": \"<string>\",\n \"override-values\": [\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n },\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n }\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"profile\": \"<string>\",\n \"version\": \"<string>\",\n \"override-values\": [\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n },\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n }\n ]\n }\n}"
+ },
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"profile\": \"<string>\",\n \"version\": \"<string>\",\n \"override-values\": [\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n },\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n }\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Get all Deployment Intent Group",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ }
+ ]
+ },
+ "description": "Get all `Deployment Intent Group`\n"
+ },
+ "response": [
+ {
+ "name": "No Deployment Intent Group found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/deployment-intent-groups",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "deployment-intent-groups"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "[\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"profile\": \"<string>\",\n \"version\": \"<string>\",\n \"override-values\": [\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n },\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n }\n ]\n }\n },\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"profile\": \"<string>\",\n \"version\": \"<string>\",\n \"override-values\": [\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n },\n {\n \"app-name\": \"<string>\",\n \"values\": \"<object>\"\n }\n ]\n }\n }\n]"
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "network-controller-intent",
+ "item": [
+ {
+ "name": "{net-control-intent}",
+ "item": [
+ {
+ "name": "workload-intents",
+ "item": [
+ {
+ "name": "{workload-intent-name}",
+ "item": [
+ {
+ "name": "interfaces",
+ "item": [
+ {
+ "name": "{interface-name}",
+ "item": [
+ {
+ "name": "Get Network Controller Workload Interface",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name/interfaces/:interface-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name",
+ "interfaces",
+ ":interface-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "net-control-intent",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ },
+ {
+ "key": "workload-intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ },
+ {
+ "key": "interface-name",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ }
+ ]
+ },
+ "description": "Get `network controller workload interface`\n"
+ },
+ "response": [
+ {
+ "name": "Network Controller Workload Interface not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name/interfaces/:interface-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name",
+ "interfaces",
+ ":interface-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ },
+ {
+ "key": "interface-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name/interfaces/:interface-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name",
+ "interfaces",
+ ":interface-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ },
+ {
+ "key": "interface-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"interface\": \"eth0\",\n \"name\": \"provider-1\",\n \"defaultGateway\": false,\n \"ipAddress\": \"0.0.0.0\",\n \"macAddress\": \"x.x.x.x\"\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Update Network Controller Workload Interface",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"interface\": \"<string>\",\n \"name\": \"<string>\",\n \"defaultGateway\": \"<boolean>\",\n \"ipAddress\": \"<string>\",\n \"macAddress\": \"<string>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name/interfaces/:interface-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name",
+ "interfaces",
+ ":interface-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "net-control-intent",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ },
+ {
+ "key": "workload-intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ },
+ {
+ "key": "interface-name",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ }
+ ]
+ },
+ "description": "Update `Network Controller Workload Interface`"
+ },
+ "response": [
+ {
+ "name": "Network Controller Workload Interface not found",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"interface\": \"eth0\",\n \"name\": \"provider-1\",\n \"defaultGateway\": false,\n \"ipAddress\": \"0.0.0.0\",\n \"macAddress\": \"x.x.x.x\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name/interfaces/:interface-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name",
+ "interfaces",
+ ":interface-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ },
+ {
+ "key": "interface-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"interface\": \"eth0\",\n \"name\": \"provider-1\",\n \"defaultGateway\": false,\n \"ipAddress\": \"0.0.0.0\",\n \"macAddress\": \"x.x.x.x\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name/interfaces/:interface-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name",
+ "interfaces",
+ ":interface-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ },
+ {
+ "key": "interface-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"interface\": \"eth0\",\n \"name\": \"provider-1\",\n \"defaultGateway\": false,\n \"ipAddress\": \"0.0.0.0\",\n \"macAddress\": \"x.x.x.x\"\n }\n}"
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"interface\": \"eth0\",\n \"name\": \"provider-1\",\n \"defaultGateway\": false,\n \"ipAddress\": \"0.0.0.0\",\n \"macAddress\": \"x.x.x.x\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name/interfaces/:interface-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name",
+ "interfaces",
+ ":interface-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ },
+ {
+ "key": "interface-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Delete Network Controller Workload Interface",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name/interfaces/:interface-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name",
+ "interfaces",
+ ":interface-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "net-control-intent",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ },
+ {
+ "key": "workload-intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ },
+ {
+ "key": "interface-name",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ }
+ ]
+ },
+ "description": "Delete `Network Controller Workload Interface`\n"
+ },
+ "response": [
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name/interfaces/:interface-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name",
+ "interfaces",
+ ":interface-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ },
+ {
+ "key": "interface-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name/interfaces/:interface-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name",
+ "interfaces",
+ ":interface-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ },
+ {
+ "key": "interface-name"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Network Controller Workload Interface not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name/interfaces/:interface-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name",
+ "interfaces",
+ ":interface-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ },
+ {
+ "key": "interface-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Network Controller Workload Interface API's",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"interface\": \"<string>\",\n \"name\": \"<string>\",\n \"defaultGateway\": \"<boolean>\",\n \"ipAddress\": \"<string>\",\n \"macAddress\": \"<string>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name/interfaces",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name",
+ "interfaces"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "net-control-intent",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ },
+ {
+ "key": "workload-intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ }
+ ]
+ },
+ "description": "Add a new `network controller workload interface`"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"interface\": \"eth0\",\n \"name\": \"provider-1\",\n \"defaultGateway\": false,\n \"ipAddress\": \"0.0.0.0\",\n \"macAddress\": \"x.x.x.x\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name/interfaces",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name",
+ "interfaces"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"interface\": \"eth0\",\n \"name\": \"provider-1\",\n \"defaultGateway\": false,\n \"ipAddress\": \"0.0.0.0\",\n \"macAddress\": \"x.x.x.x\"\n }\n}"
+ },
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"interface\": \"eth0\",\n \"name\": \"provider-1\",\n \"defaultGateway\": false,\n \"ipAddress\": \"0.0.0.0\",\n \"macAddress\": \"x.x.x.x\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name/interfaces",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name",
+ "interfaces"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Get all Network Controller Workload Interface",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name/interfaces",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name",
+ "interfaces"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "net-control-intent",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ },
+ {
+ "key": "workload-intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ }
+ ]
+ },
+ "description": "Get all `network controller workload interface`\n"
+ },
+ "response": [
+ {
+ "name": "No Network Controller Workload Interface found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name/interfaces",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name",
+ "interfaces"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name/interfaces",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name",
+ "interfaces"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "[\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"interface\": \"eth0\",\n \"name\": \"provider-1\",\n \"defaultGateway\": false,\n \"ipAddress\": \"0.0.0.0\",\n \"macAddress\": \"x.x.x.x\"\n }\n },\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"interface\": \"eth0\",\n \"name\": \"provider-1\",\n \"defaultGateway\": false,\n \"ipAddress\": \"0.0.0.0\",\n \"macAddress\": \"x.x.x.x\"\n }\n }\n]"
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Get Network Controller Workload Intent",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "net-control-intent",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ },
+ {
+ "key": "workload-intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ }
+ ]
+ },
+ "description": "Get `network controller workload intent`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"spec\": {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"application-name\": \"Application1\",\n \"workload-resource\": \"firewall\",\n \"type\": \"deployment\"\n }\n }\n}"
+ },
+ {
+ "name": "Network Controller Workload Intent not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Update Network Controller Workload Intent",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"spec\": {\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"application-name\": \"<string>\",\n \"workload-resource\": \"<string>\",\n \"type\": \"<string>\"\n }\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "net-control-intent",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ },
+ {
+ "key": "workload-intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ }
+ ]
+ },
+ "description": "Update `Network Controller Workload Intent`"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"spec\": {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"application-name\": \"Application1\",\n \"workload-resource\": \"firewall\",\n \"type\": \"deployment\"\n }\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"spec\": {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"application-name\": \"Application1\",\n \"workload-resource\": \"firewall\",\n \"type\": \"deployment\"\n }\n }\n}"
+ },
+ {
+ "name": "Network Controller Workload Intent not found",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"spec\": {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"application-name\": \"Application1\",\n \"workload-resource\": \"firewall\",\n \"type\": \"deployment\"\n }\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"spec\": {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"application-name\": \"Application1\",\n \"workload-resource\": \"firewall\",\n \"type\": \"deployment\"\n }\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Delete Network Controller Workload Intent",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "net-control-intent",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ },
+ {
+ "key": "workload-intent-name",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ }
+ ]
+ },
+ "description": "Delete `Network Controller Workload Intent`\n"
+ },
+ "response": [
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Network Controller Workload Intent not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents/:workload-intent-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents",
+ ":workload-intent-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ },
+ {
+ "key": "workload-intent-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Network Controller Workload Intent API's",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"spec\": {\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"application-name\": \"<string>\",\n \"workload-resource\": \"<string>\",\n \"type\": \"<string>\"\n }\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "net-control-intent",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ }
+ ]
+ },
+ "description": "Add a new `network controller workload intent`"
+ },
+ "response": [
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"spec\": {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"application-name\": \"Application1\",\n \"workload-resource\": \"firewall\",\n \"type\": \"deployment\"\n }\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ }
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"spec\": {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"application-name\": \"Application1\",\n \"workload-resource\": \"firewall\",\n \"type\": \"deployment\"\n }\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ }
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"spec\": {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"application-name\": \"Application1\",\n \"workload-resource\": \"firewall\",\n \"type\": \"deployment\"\n }\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Get Network Controller Workload Intent",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "net-control-intent",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ }
+ ]
+ },
+ "description": "Get all `network controller workload intent`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "[\n {\n \"spec\": {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"application-name\": \"Application1\",\n \"workload-resource\": \"firewall\",\n \"type\": \"deployment\"\n }\n }\n },\n {\n \"spec\": {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"application-name\": \"Application1\",\n \"workload-resource\": \"firewall\",\n \"type\": \"deployment\"\n }\n }\n }\n]"
+ },
+ {
+ "name": "No Network Controller Workload Intent found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent/workload-intents",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent",
+ "workload-intents"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Get Network Controller Intent",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "net-control-intent",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ }
+ ]
+ },
+ "description": "Get `network controller intent`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ {
+ "name": "Network Controller Intent not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Update Network Controller Intent",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "net-control-intent",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ }
+ ]
+ },
+ "description": "Update `Network Controller Intent`"
+ },
+ "response": [
+ {
+ "name": "Network Controller Intent not found",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Delete Network Controller Intent",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ },
+ {
+ "key": "net-control-intent",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ }
+ ]
+ },
+ "description": "Delete `Network Controller Intent`\n"
+ },
+ "response": [
+ {
+ "name": "Network Controller Intent not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent/:net-control-intent",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent",
+ ":net-control-intent"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ },
+ {
+ "key": "net-control-intent"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Network Controller Intent API's",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ }
+ ]
+ },
+ "description": "Add a new `network controller intent`"
+ },
+ "response": [
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Get all Network Controller Intent",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ }
+ ]
+ },
+ "description": "Get all `network controller intent`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "[\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n },\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n }\n]"
+ },
+ {
+ "name": "No Network Controller Intent found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version/network-controller-intent",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version",
+ "network-controller-intent"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Get Composite Application",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ }
+ ]
+ },
+ "description": "Get `composite application`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"version\": \"v1\"\n }\n}"
+ },
+ {
+ "name": "Composite Application not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Update a Composite Application",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"version\": \"<string>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ }
+ ]
+ },
+ "description": "Update a `Composite Application`"
+ },
+ "response": [
+ {
+ "name": "Composite Application not found",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"version\": \"v1\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"version\": \"v1\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"version\": \"v1\"\n }\n}"
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"version\": \"v1\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Delete Composite Application",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ },
+ {
+ "key": "composite-app-name",
+ "value": "<string>",
+ "description": "(Required) Name of the Composite Application"
+ },
+ {
+ "key": "composite-app-version",
+ "value": "<string>",
+ "description": "(Required) Version of the Composite Application"
+ }
+ ]
+ },
+ "description": "Delete `Composite Application`\n"
+ },
+ "response": [
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Composite Application not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps/:composite-app-name/:composite-app-version",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps",
+ ":composite-app-name",
+ ":composite-app-version"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ },
+ {
+ "key": "composite-app-name"
+ },
+ {
+ "key": "composite-app-version"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Add Composite Application",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"version\": \"<string>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ }
+ ]
+ },
+ "description": "Add a new `composite application`"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"version\": \"v1\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ }
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"version\": \"v1\"\n }\n}"
+ },
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"version\": \"v1\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ }
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Get all Composite Applications",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ }
+ ]
+ },
+ "description": "Get all `composite applications`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "[\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"version\": \"v1\"\n }\n },\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"version\": \"v1\"\n }\n }\n]"
+ },
+ {
+ "name": "No Composite App found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name/composite-apps",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name",
+ "composite-apps"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Get project by project name",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ }
+ ]
+ },
+ "description": "Get `project`\n"
+ },
+ "response": [
+ {
+ "name": "Project not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Update project",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ }
+ ]
+ },
+ "description": "Update `project`"
+ },
+ "response": [
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Project not found",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Delete project by project name",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name",
+ "value": "<string>",
+ "description": "(Required) Name of the project"
+ }
+ ]
+ },
+ "description": "Delete `project`\n"
+ },
+ "response": [
+ {
+ "name": "Project not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects/:project-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects",
+ ":project-name"
+ ],
+ "variable": [
+ {
+ "key": "project-name"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Project",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects"
+ ]
+ },
+ "description": "Add a new `project`"
+ },
+ "response": [
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects"
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/projects",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects"
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Get all projects",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects"
+ ]
+ },
+ "description": "Get all `projects`\n"
+ },
+ "response": [
+ {
+ "name": "No Project found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects"
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/projects",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "projects"
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "[\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n },\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n }\n]"
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {}
+ },
+ {
+ "name": "controllers",
+ "item": [
+ {
+ "name": "{controller-name}",
+ "item": [
+ {
+ "name": "Get controller by name",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/controllers/:controller-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "controllers",
+ ":controller-name"
+ ],
+ "variable": [
+ {
+ "key": "controller-name",
+ "value": "<string>",
+ "description": "(Required) Controller name"
+ }
+ ]
+ },
+ "description": "Get `controller`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/controllers/:controller-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "controllers",
+ ":controller-name"
+ ],
+ "variable": [
+ {
+ "key": "controller-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"host\": \"10.7.100.4\",\n \"port\": \"9029\",\n \"type\": \"placement\",\n \"priority\": \"4\"\n }\n}"
+ },
+ {
+ "name": "Controller not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/controllers/:controller-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "controllers",
+ ":controller-name"
+ ],
+ "variable": [
+ {
+ "key": "controller-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Update controller",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"host\": \"<string>\",\n \"port\": \"<string>\",\n \"type\": \"<string>\",\n \"priority\": \"<string>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/controllers/:controller-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "controllers",
+ ":controller-name"
+ ],
+ "variable": [
+ {
+ "key": "controller-name",
+ "value": "<string>",
+ "description": "(Required) Controller name"
+ }
+ ]
+ },
+ "description": "Update `controller`"
+ },
+ "response": [
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"host\": \"10.7.100.4\",\n \"port\": \"9029\",\n \"type\": \"placement\",\n \"priority\": \"4\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/controllers/:controller-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "controllers",
+ ":controller-name"
+ ],
+ "variable": [
+ {
+ "key": "controller-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"host\": \"10.7.100.4\",\n \"port\": \"9029\",\n \"type\": \"placement\",\n \"priority\": \"4\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/controllers/:controller-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "controllers",
+ ":controller-name"
+ ],
+ "variable": [
+ {
+ "key": "controller-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"host\": \"10.7.100.4\",\n \"port\": \"9029\",\n \"type\": \"placement\",\n \"priority\": \"4\"\n }\n}"
+ },
+ {
+ "name": "Controller not found",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"host\": \"10.7.100.4\",\n \"port\": \"9029\",\n \"type\": \"placement\",\n \"priority\": \"4\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/controllers/:controller-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "controllers",
+ ":controller-name"
+ ],
+ "variable": [
+ {
+ "key": "controller-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Delete controller",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/controllers/:controller-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "controllers",
+ ":controller-name"
+ ],
+ "variable": [
+ {
+ "key": "controller-name",
+ "value": "<string>",
+ "description": "(Required) Controller name"
+ }
+ ]
+ },
+ "description": "Delete `controller`\n"
+ },
+ "response": [
+ {
+ "name": "Controller not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/controllers/:controller-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "controllers",
+ ":controller-name"
+ ],
+ "variable": [
+ {
+ "key": "controller-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/controllers/:controller-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "controllers",
+ ":controller-name"
+ ],
+ "variable": [
+ {
+ "key": "controller-name"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/controllers/:controller-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "controllers",
+ ":controller-name"
+ ],
+ "variable": [
+ {
+ "key": "controller-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Controller Registration",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"host\": \"<string>\",\n \"port\": \"<string>\",\n \"type\": \"<string>\",\n \"priority\": \"<string>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/controllers",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "controllers"
+ ]
+ },
+ "description": "Add a new `controller`"
+ },
+ "response": [
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"host\": \"10.7.100.4\",\n \"port\": \"9029\",\n \"type\": \"placement\",\n \"priority\": \"4\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/controllers",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "controllers"
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"host\": \"10.7.100.4\",\n \"port\": \"9029\",\n \"type\": \"placement\",\n \"priority\": \"4\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/controllers",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "controllers"
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"host\": \"10.7.100.4\",\n \"port\": \"9029\",\n \"type\": \"placement\",\n \"priority\": \"4\"\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Get all controllers",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/controllers",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "controllers"
+ ]
+ },
+ "description": "Get all `controllers`\n"
+ },
+ "response": [
+ {
+ "name": "No controllers found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/controllers",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "controllers"
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/controllers",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "controllers"
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "[\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"host\": \"10.7.100.4\",\n \"port\": \"9029\",\n \"type\": \"placement\",\n \"priority\": \"4\"\n }\n },\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"host\": \"10.7.100.4\",\n \"port\": \"9029\",\n \"type\": \"placement\",\n \"priority\": \"4\"\n }\n }\n]"
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {}
+ },
+ {
+ "name": "cluster-providers",
+ "item": [
+ {
+ "name": "{cluster-providers-name}",
+ "item": [
+ {
+ "name": "clusters",
+ "item": [
+ {
+ "name": "{cluster-name}",
+ "item": [
+ {
+ "name": "labels",
+ "item": [
+ {
+ "name": "{cluster-label-name}",
+ "item": [
+ {
+ "name": "Get label",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/labels/:cluster-label-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "labels",
+ ":cluster-label-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ },
+ {
+ "key": "cluster-label-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Get `cluster label`\n"
+ },
+ "response": [
+ {
+ "name": "label not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/labels/:cluster-label-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "labels",
+ ":cluster-label-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "cluster-label-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/labels/:cluster-label-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "labels",
+ ":cluster-label-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "cluster-label-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"label-name\": \"cluster-label-1\"\n}"
+ }
+ ]
+ },
+ {
+ "name": "Update label",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"label-name\": \"<string>\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/labels/:cluster-label-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "labels",
+ ":cluster-label-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ },
+ {
+ "key": "cluster-label-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Update label for `cluster`"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"label-name\": \"cluster-label-1\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/labels/:cluster-label-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "labels",
+ ":cluster-label-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "cluster-label-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"label-name\": \"cluster-label-1\"\n}"
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"label-name\": \"cluster-label-1\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/labels/:cluster-label-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "labels",
+ ":cluster-label-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "cluster-label-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Label not found",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"label-name\": \"cluster-label-1\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/labels/:cluster-label-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "labels",
+ ":cluster-label-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "cluster-label-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Delete cluster label",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/labels/:cluster-label-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "labels",
+ ":cluster-label-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ },
+ {
+ "key": "cluster-label-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Delete `label`\n"
+ },
+ "response": [
+ {
+ "name": "Label not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/labels/:cluster-label-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "labels",
+ ":cluster-label-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "cluster-label-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/labels/:cluster-label-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "labels",
+ ":cluster-label-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "cluster-label-name"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/labels/:cluster-label-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "labels",
+ ":cluster-label-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "cluster-label-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Add label to Cluster",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"label-name\": \"<string>\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/labels",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "labels"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Add a new label to `cluster`"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"label-name\": \"cluster-label-1\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/labels",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "labels"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"label-name\": \"cluster-label-1\"\n}"
+ },
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"label-name\": \"cluster-label-1\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/labels",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "labels"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Get all Labels",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/labels",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "labels"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Get all `labels`\n"
+ },
+ "response": [
+ {
+ "name": "No labels found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/labels",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "labels"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/labels",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "labels"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"label-name\": \"cluster-label-1\"\n}"
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "kv-pairs",
+ "item": [
+ {
+ "name": "{kv-pair-name}",
+ "item": [
+ {
+ "name": "Get KV Pair",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs/:kv-pair-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs",
+ ":kv-pair-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ },
+ {
+ "key": "kv-pair-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Get `KV pair` for cluster\n"
+ },
+ "response": [
+ {
+ "name": "KV pair not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs/:kv-pair-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs",
+ ":kv-pair-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "kv-pair-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs/:kv-pair-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs",
+ ":kv-pair-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "kv-pair-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"kv\": [\n \"<object>\",\n \"<object>\"\n ]\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Update KV Pair",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"kv\": [\n \"<object>\",\n \"<object>\"\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs/:kv-pair-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs",
+ ":kv-pair-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ },
+ {
+ "key": "kv-pair-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Update KV Pair for `cluster`"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"kv\": [\n \"<object>\",\n \"<object>\"\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs/:kv-pair-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs",
+ ":kv-pair-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "kv-pair-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"kv\": [\n \"<object>\",\n \"<object>\"\n ]\n }\n}"
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"kv\": [\n \"<object>\",\n \"<object>\"\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs/:kv-pair-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs",
+ ":kv-pair-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "kv-pair-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "KV Pair not found",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"kv\": [\n \"<object>\",\n \"<object>\"\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs/:kv-pair-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs",
+ ":kv-pair-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "kv-pair-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Delete cluster KV pair",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs/:kv-pair-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs",
+ ":kv-pair-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ },
+ {
+ "key": "kv-pair-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Delete `KV pair`\n"
+ },
+ "response": [
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs/:kv-pair-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs",
+ ":kv-pair-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "kv-pair-name"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "KV pair not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs/:kv-pair-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs",
+ ":kv-pair-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "kv-pair-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs/:kv-pair-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs",
+ ":kv-pair-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "kv-pair-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Query KV Pair",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs/:kv-pair-name/?key=<string>",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs",
+ ":kv-pair-name",
+ ""
+ ],
+ "query": [
+ {
+ "key": "key",
+ "value": "<string>",
+ "description": "(Required) "
+ }
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ },
+ {
+ "key": "kv-pair-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Query `KV pair` for cluster\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs/:kv-pair-name/?key=<string>",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs",
+ ":kv-pair-name",
+ ""
+ ],
+ "query": [
+ {
+ "key": "key",
+ "value": "<string>"
+ }
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "kv-pair-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"value\": \"Ut \"\n}"
+ },
+ {
+ "name": "KV pair not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs/:kv-pair-name/?key=<string>",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs",
+ ":kv-pair-name",
+ ""
+ ],
+ "query": [
+ {
+ "key": "key",
+ "value": "<string>"
+ }
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "kv-pair-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Add kv pair to Cluster",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"kv\": [\n \"<object>\",\n \"<object>\"\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Add kv pair to `cluster`"
+ },
+ "response": [
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"kv\": [\n \"<object>\",\n \"<object>\"\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"kv\": [\n \"<object>\",\n \"<object>\"\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"kv\": [\n \"<object>\",\n \"<object>\"\n ]\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Get all KV Pairs",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Get all `KV Pairs`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"kv\": [\n \"<object>\",\n \"<object>\"\n ]\n }\n}"
+ },
+ {
+ "name": "No labels found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/kv-pairs",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "kv-pairs"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "networks",
+ "item": [
+ {
+ "name": "{network-name}",
+ "item": [
+ {
+ "name": "Get virtual network",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/networks/:network-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "networks",
+ ":network-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ },
+ {
+ "key": "network-name",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ }
+ ]
+ },
+ "description": "Get `virtual network`\n"
+ },
+ "response": [
+ {
+ "name": "Network not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/networks/:network-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "networks",
+ ":network-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "network-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/networks/:network-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "networks",
+ ":network-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "network-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"cniType\": \"<string>\",\n \"ipv4Subnets\": [\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n },\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n }\n ]\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Delete virtual network",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/networks/:network-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "networks",
+ ":network-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ },
+ {
+ "key": "network-name",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ }
+ ]
+ },
+ "description": "Delete `virtual network`\n"
+ },
+ "response": [
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/networks/:network-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "networks",
+ ":network-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "network-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Network not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/networks/:network-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "networks",
+ ":network-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "network-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/networks/:network-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "networks",
+ ":network-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "network-name"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Add virtual network in cluster",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"cniType\": \"<string>\",\n \"ipv4Subnets\": [\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n },\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n }\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/networks",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "networks"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Add a `virtual network in cluster`"
+ },
+ "response": [
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"cniType\": \"<string>\",\n \"ipv4Subnets\": [\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n },\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n }\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/networks",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "networks"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"cniType\": \"<string>\",\n \"ipv4Subnets\": [\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n },\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n }\n ]\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/networks",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "networks"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"cniType\": \"<string>\",\n \"ipv4Subnets\": [\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n },\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n }\n ]\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Get all cluster virtual networks",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/networks",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "networks"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Get all `virtual networks for a cluster`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/networks",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "networks"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"cniType\": \"<string>\",\n \"ipv4Subnets\": [\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n },\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n }\n ]\n }\n}"
+ },
+ {
+ "name": "No virtual networks found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/networks",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "networks"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "provider-networks",
+ "item": [
+ {
+ "name": "{network-name}",
+ "item": [
+ {
+ "name": "Get Provider Network",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/provider-networks/:network-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "provider-networks",
+ ":network-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ },
+ {
+ "key": "network-name",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ }
+ ]
+ },
+ "description": "Get `provider network`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/provider-networks/:network-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "provider-networks",
+ ":network-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "network-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"cniType\": \"<string>\",\n \"ipv4Subnets\": [\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n },\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n }\n ],\n \"providerNetType\": \"<string>\",\n \"vlan\": {\n \"logicalInterfaceName\": \"<string>\",\n \"nodeLabelList\": [\n \"<string>\",\n \"<string>\"\n ],\n \"providerInterfaceName\": \"<string>\",\n \"vlanID\": \"<string>\",\n \"vlanNodeSelector\": \"<string>\"\n }\n }\n}"
+ },
+ {
+ "name": "Provider network not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/provider-networks/:network-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "provider-networks",
+ ":network-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "network-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Delete Provider Network",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/provider-networks/:network-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "provider-networks",
+ ":network-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ },
+ {
+ "key": "network-name",
+ "value": "<string>",
+ "description": "(Required) Name of the network"
+ }
+ ]
+ },
+ "description": "Delete `Provider Network`\n"
+ },
+ "response": [
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/provider-networks/:network-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "provider-networks",
+ ":network-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "network-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/provider-networks/:network-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "provider-networks",
+ ":network-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "network-name"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Name not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/provider-networks/:network-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "provider-networks",
+ ":network-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ },
+ {
+ "key": "network-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Add provider network in cluster",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n },\n \"spec\": {\n \"cniType\": \"<string>\",\n \"ipv4Subnets\": [\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n },\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n }\n ],\n \"providerNetType\": \"<string>\",\n \"vlan\": {\n \"logicalInterfaceName\": \"<string>\",\n \"nodeLabelList\": [\n \"<string>\",\n \"<string>\"\n ],\n \"providerInterfaceName\": \"<string>\",\n \"vlanID\": \"<string>\",\n \"vlanNodeSelector\": \"<string>\"\n }\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/provider-networks",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "provider-networks"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Add a `provider network in cluster`"
+ },
+ "response": [
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"cniType\": \"<string>\",\n \"ipv4Subnets\": [\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n },\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n }\n ],\n \"providerNetType\": \"<string>\",\n \"vlan\": {\n \"logicalInterfaceName\": \"<string>\",\n \"nodeLabelList\": [\n \"<string>\",\n \"<string>\"\n ],\n \"providerInterfaceName\": \"<string>\",\n \"vlanID\": \"<string>\",\n \"vlanNodeSelector\": \"<string>\"\n }\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/provider-networks",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "provider-networks"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"cniType\": \"<string>\",\n \"ipv4Subnets\": [\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n },\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n }\n ],\n \"providerNetType\": \"<string>\",\n \"vlan\": {\n \"logicalInterfaceName\": \"<string>\",\n \"nodeLabelList\": [\n \"<string>\",\n \"<string>\"\n ],\n \"providerInterfaceName\": \"<string>\",\n \"vlanID\": \"<string>\",\n \"vlanNodeSelector\": \"<string>\"\n }\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/provider-networks",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "provider-networks"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"cniType\": \"<string>\",\n \"ipv4Subnets\": [\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n },\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n }\n ],\n \"providerNetType\": \"<string>\",\n \"vlan\": {\n \"logicalInterfaceName\": \"<string>\",\n \"nodeLabelList\": [\n \"<string>\",\n \"<string>\"\n ],\n \"providerInterfaceName\": \"<string>\",\n \"vlanID\": \"<string>\",\n \"vlanNodeSelector\": \"<string>\"\n }\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Get all cluster provider networks",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/provider-networks",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "provider-networks"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Get all `provider networks for a cluster`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/provider-networks",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "provider-networks"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n },\n \"spec\": {\n \"cniType\": \"<string>\",\n \"ipv4Subnets\": [\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n },\n {\n \"excludeIps\": \"<string>\",\n \"gateway\": \"<string>\",\n \"name\": \"<string>\",\n \"subnet\": \"<string>\"\n }\n ],\n \"providerNetType\": \"<string>\",\n \"vlan\": {\n \"logicalInterfaceName\": \"<string>\",\n \"nodeLabelList\": [\n \"<string>\",\n \"<string>\"\n ],\n \"providerInterfaceName\": \"<string>\",\n \"vlanID\": \"<string>\",\n \"vlanNodeSelector\": \"<string>\"\n }\n }\n}"
+ },
+ {
+ "name": "No provider networks found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/provider-networks",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "provider-networks"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Get Cluster",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Get `cluster`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ {
+ "name": "Cluster not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Update Cluster",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "multipart/form-data"
+ }
+ ],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "metadata",
+ "value": "{\"name\":\"<string>\",\"description\":\"<string>\",\"userData1\":\"<string>\",\"userData2\":\"<string>\"}",
+ "type": "text"
+ },
+ {
+ "key": "file",
+ "value": "<binary>",
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Update `cluster`"
+ },
+ "response": [
+ {
+ "name": "Cluster not found",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "metadata",
+ "value": "{\"name\":\"ResName\",\"description\":\"Resource description\",\"userData1\":\"Some data\",\"userData2\":\"Some more data\"}",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ },
+ {
+ "key": "file",
+ "value": "<binary>",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "metadata",
+ "value": "{\"name\":\"ResName\",\"description\":\"Resource description\",\"userData1\":\"Some data\",\"userData2\":\"Some more data\"}",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ },
+ {
+ "key": "file",
+ "value": "<binary>",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "metadata",
+ "value": "{\"name\":\"ResName\",\"description\":\"Resource description\",\"userData1\":\"Some data\",\"userData2\":\"Some more data\"}",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ },
+ {
+ "key": "file",
+ "value": "<binary>",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Delete cluster",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ },
+ {
+ "key": "cluster-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster"
+ }
+ ]
+ },
+ "description": "Delete `cluster`\n"
+ },
+ "response": [
+ {
+ "name": "Cluster not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ },
+ {
+ "key": "cluster-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Apply Network configuration",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/apply",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "apply"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": ""
+ },
+ {
+ "key": "cluster-name",
+ "value": ""
+ }
+ ]
+ },
+ "description": "Apply Network configuration"
+ },
+ "response": []
+ },
+ {
+ "name": "Terminate Network configuration ",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/:cluster-name/terminate",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ":cluster-name",
+ "terminate"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": ""
+ },
+ {
+ "key": "cluster-name",
+ "value": ""
+ }
+ ]
+ },
+ "description": "Terminate Network configuration"
+ },
+ "response": []
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Add Cluster",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "multipart/form-data"
+ }
+ ],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "metadata",
+ "value": "{\"name\":\"<string>\",\"description\":\"<string>\",\"userData1\":\"<string>\",\"userData2\":\"<string>\"}",
+ "type": "text"
+ },
+ {
+ "key": "file",
+ "value": "<binary>",
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ }
+ ]
+ },
+ "description": "Add a new `cluster`"
+ },
+ "response": [
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "metadata",
+ "value": "{\"name\":\"ResName\",\"description\":\"Resource description\",\"userData1\":\"Some data\",\"userData2\":\"Some more data\"}",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ },
+ {
+ "key": "file",
+ "value": "<binary>",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ }
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "metadata",
+ "value": "{\"name\":\"ResName\",\"description\":\"Resource description\",\"userData1\":\"Some data\",\"userData2\":\"Some more data\"}",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ },
+ {
+ "key": "file",
+ "value": "<binary>",
+ "description": {
+ "content": "",
+ "type": "text/plain"
+ },
+ "type": "text"
+ }
+ ]
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ }
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Get all clusters for cluster provider",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ }
+ ]
+ },
+ "description": "Get all `clusters for cluster provider`\n"
+ },
+ "response": [
+ {
+ "name": "No clusters found in cluster provider",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "[\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n },\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n }\n]"
+ }
+ ]
+ },
+ {
+ "name": "Get clusters for label",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/?label=<string>",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ""
+ ],
+ "query": [
+ {
+ "key": "label",
+ "value": "<string>",
+ "description": "(Required) "
+ }
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ }
+ ]
+ },
+ "description": "Get `clusters for label`\n"
+ },
+ "response": [
+ {
+ "name": "label not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/?label=<string>",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ""
+ ],
+ "query": [
+ {
+ "key": "label",
+ "value": "<string>"
+ }
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name/clusters/?label=<string>",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name",
+ "clusters",
+ ""
+ ],
+ "query": [
+ {
+ "key": "label",
+ "value": "<string>"
+ }
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "[\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n },\n {\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n }\n]"
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Get cluster provider by name",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ }
+ ]
+ },
+ "description": "Get `cluster provider`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ {
+ "name": "Cluster Provider not found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Update cluster provider",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ }
+ ]
+ },
+ "description": "Update `cluster providers`"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ }
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Cluster Provider not found",
+ "originalRequest": {
+ "method": "PUT",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Delete cluster provider by name",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name",
+ "value": "<string>",
+ "description": "(Required) Name of the cluster provider"
+ }
+ ]
+ },
+ "description": "Delete `cluster provider`\n"
+ },
+ "response": [
+ {
+ "name": "Cluster Provider not found",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ }
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Deleted",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ }
+ ]
+ }
+ },
+ "status": "No Content",
+ "code": 204,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Invalid data",
+ "originalRequest": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers/:cluster-providers-name",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers",
+ ":cluster-providers-name"
+ ],
+ "variable": [
+ {
+ "key": "cluster-providers-name"
+ }
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {},
+ "_postman_isSubFolder": true
+ },
+ {
+ "name": "Cluster Providers",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"userData1\": \"<string>\",\n \"userData2\": \"<string>\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers"
+ ]
+ },
+ "description": "Add a new `cluster provider`"
+ },
+ "response": [
+ {
+ "name": "Invalid Input",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers"
+ ]
+ }
+ },
+ "status": "Method Not Allowed",
+ "code": 405,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers"
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ }
+ ]
+ },
+ {
+ "name": "Get all cluster providers",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers"
+ ]
+ },
+ "description": "Get all `cluster providers`\n"
+ },
+ "response": [
+ {
+ "name": "Success",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers"
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "cookie": [],
+ "body": "{\n \"metadata\": {\n \"name\": \"ResName\",\n \"description\": \"Resource description\",\n \"userData1\": \"Some data\",\n \"userData2\": \"Some more data\"\n }\n}"
+ },
+ {
+ "name": "No cluster provider found",
+ "originalRequest": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "{{baseUrl}}/cluster-providers",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "cluster-providers"
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {}
+ }
+ ],
+ "variable": [
+ {
+ "id": "baseUrl",
+ "key": "baseUrl",
+ "value": "/",
+ "type": "string"
+ }
+ ],
+ "protocolProfileBehavior": {}
+} \ No newline at end of file
diff --git a/docs/emco_apis.yaml b/docs/emco_apis.yaml
index 643ac7b0..419c1316 100644
--- a/docs/emco_apis.yaml
+++ b/docs/emco_apis.yaml
@@ -1284,7 +1284,7 @@ paths:
requestBody:
content: {}
- /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/destroy:
+ /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/terminate:
parameters:
- $ref: '#/components/parameters/projectName'
- $ref: '#/components/parameters/compositeAppName'
@@ -1293,9 +1293,9 @@ paths:
post:
tags:
- Deployment Lifecycle
- summary: Destroy a Deployment
- description: Destroy a Deployment
- operationId: destroyDeploymentIntentGroup
+ summary: Terminate a Deployment
+ description: Terminate a Deployment
+ operationId: terminateDeploymentIntentGroup
responses:
'200':
description: Success
@@ -3277,4 +3277,4 @@ components:
required: true
schema:
type: string
- maxLength: 128 \ No newline at end of file
+ maxLength: 128
diff --git a/kud/tests/m3db-operator-test.sh b/kud/tests/m3db-operator-test.sh
index 1962c3f3..d5ea90db 100755
--- a/kud/tests/m3db-operator-test.sh
+++ b/kud/tests/m3db-operator-test.sh
@@ -366,7 +366,7 @@ function deleteData {
deleteOrchestratorData
}
function instantiate {
- # call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/approve"
+ call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/approve"
call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${operators_compositeapp_name}/${compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/instantiate"
}
diff --git a/kud/tests/plugin_collection_v2.sh b/kud/tests/plugin_collection_v2.sh
index 05ff4265..84f5ca27 100755
--- a/kud/tests/plugin_collection_v2.sh
+++ b/kud/tests/plugin_collection_v2.sh
@@ -47,12 +47,12 @@ composite_app_name="test_composite_app_collection"
composite_app_description="test_project_description"
composite_app_version="test_composite_app_version"
app1_helm_path="$CSAR_DIR/$csar_id/collectd.tar.gz"
-app2_helm_path="$CSAR_DIR/$csar_id/prometheus.tar.gz"
+app2_helm_path="$CSAR_DIR/$csar_id/prometheus-operator.tar.gz"
app1_profile_path="$CSAR_DIR/$csar_id/collectd_profile.tar.gz"
-app2_profile_path="$CSAR_DIR/$csar_id/prometheus_profile.tar.gz"
+app2_profile_path="$CSAR_DIR/$csar_id/prometheus-operator_profile.tar.gz"
app1_name="collectd"
-app2_name="prometheus"
+app2_name="prometheus-operator"
app1_desc="collectd_desc"
app2_desc="prometheus_desc"
@@ -467,7 +467,7 @@ payload="$(cat <<EOF
"spec":{
"intent":{
"${genericPlacementIntent}":"${genericPlacementIntentName}",
- "${hpaIntent}" : "${hpaControllerIntentName}",
+ "${hpaIntent}" : "${hpaControllerIntentName}",
"${trafficIntent}" : "${trafficControllerIntentName}",
"${CostBasedIntent}" : "${CostBasedIntentName}",
"${OVNintent}" : "${OVNintentName}"
@@ -563,5 +563,6 @@ call_api -d "${payload}" "${base_url}/controllers"
#BEGIN: Instantiation
print_msg "Getting the sorted templates for each of the apps.."
+call_api -d "" "${base_url}/projects/${project_name}/composite-apps/${composite_app_name}/${composite_app_version}/deployment-intent-groups/${deploymentIntentGroupName}/approve"
call_api -d "" "${base_url}/projects/${project_name}/composite-apps/${composite_app_name}/${composite_app_version}/deployment-intent-groups/${deploymentIntentGroupName}/instantiate"
# END: Instantiation
diff --git a/kud/tests/prometheus-test.sh b/kud/tests/prometheus-test.sh
index d9c38a15..ca995ba0 100755
--- a/kud/tests/prometheus-test.sh
+++ b/kud/tests/prometheus-test.sh
@@ -580,7 +580,7 @@ function deleteData {
# }
function instantiate {
- # call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/approve"
+ call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/approve"
call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/instantiate"
}
diff --git a/kud/tests/sanity-check-for-v2.sh b/kud/tests/sanity-check-for-v2.sh
new file mode 100755
index 00000000..d350f712
--- /dev/null
+++ b/kud/tests/sanity-check-for-v2.sh
@@ -0,0 +1,509 @@
+#!/bin/bash
+
+# Copyright 2020 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.
+#
+
+
+set -o errexit
+set -o nounset
+set -o pipefail
+
+
+source _common_test.sh
+source _functions.sh
+#source _common.sh
+
+
+base_url_orchestrator=${base_url_orchestrator:-"http://localhost:9015/v2"}
+base_url_clm=${base_url_clm:-"http://localhost:9019/v2"}
+
+
+CSAR_DIR="/opt/csar"
+csar_id="cb009bfe-bbee-11e8-9766-525400435678"
+
+
+app1_helm_path="$CSAR_DIR/$csar_id/prometheus-operator.tar.gz"
+app1_profile_path="$CSAR_DIR/$csar_id/prometheus-operator_profile.tar.gz"
+app2_helm_path="$CSAR_DIR/$csar_id/collectd.tar.gz"
+app2_profile_path="$CSAR_DIR/$csar_id/collectd_profile.tar.gz"
+
+kubeConfigLocal="/home/otc/.kube/config"
+
+
+
+function populate_CSAR_composite_app_helm {
+ _checks_args "$1"
+ pushd "${CSAR_DIR}/$1"
+ print_msg "Create Helm Chart Archives for compositeApp"
+ rm -f *.tar.gz
+ tar -czf collectd.tar.gz -C $test_folder/vnfs/comp-app/collection/app1/helm .
+ tar -czf prometheus-operator.tar.gz -C $test_folder/vnfs/comp-app/collection/app2/helm .
+ tar -czf collectd_profile.tar.gz -C $test_folder/vnfs/comp-app/collection/app1/profile .
+ tar -czf prometheus-operator_profile.tar.gz -C $test_folder/vnfs/comp-app/collection/app2/profile .
+ popd
+}
+
+
+# ---------BEGIN: SET CLM DATA---------------
+
+clusterprovidername="sanity-test-cluster-provider"
+clusterproviderdata="$(cat<<EOF
+{
+ "metadata": {
+ "name": "$clusterprovidername",
+ "description": "description of $clusterprovidername",
+ "userData1": "$clusterprovidername user data 1",
+ "userData2": "$clusterprovidername user data 2"
+ }
+}
+EOF
+)"
+
+clustername="LocalEdge1"
+clusterdata="$(cat<<EOF
+{
+ "metadata": {
+ "name": "$clustername",
+ "description": "description of $clustername",
+ "userData1": "$clustername user data 1",
+ "userData2": "$clustername user data 2"
+ }
+}
+EOF
+)"
+
+
+labelname="LocalLabel"
+labeldata="$(cat<<EOF
+{"label-name": "$labelname"}
+EOF
+)"
+
+
+# add the rsync controller entry
+rsynccontrollername="rsync"
+rsynccontrollerdata="$(cat<<EOF
+{
+ "metadata": {
+ "name": "rsync",
+ "description": "description of $rsynccontrollername controller",
+ "userData1": "user data 1 for $rsynccontrollername",
+ "userData2": "user data 2 for $rsynccontrollername"
+ },
+ "spec": {
+ "host": "localhost",
+ "port": 9031
+ }
+}
+EOF
+)"
+
+# ------------END: SET CLM DATA--------------
+
+
+#-------------BEGIN:SET ORCH DATA------------------
+
+# define a project
+projectname="Sanity-Test-Project"
+projectdata="$(cat<<EOF
+{
+ "metadata": {
+ "name": "$projectname",
+ "description": "description of $projectname controller",
+ "userData1": "$projectname user data 1",
+ "userData2": "$projectname user data 2"
+ }
+}
+EOF
+)"
+
+# define a composite application
+collection_compositeapp_name="CollectionCompositeApp"
+compositeapp_version="v1"
+compositeapp_data="$(cat <<EOF
+{
+ "metadata": {
+ "name": "${collection_compositeapp_name}",
+ "description": "description of ${collection_compositeapp_name}",
+ "userData1": "user data 1 for ${collection_compositeapp_name}",
+ "userData2": "user data 2 for ${collection_compositeapp_name}"
+ },
+ "spec":{
+ "version":"${compositeapp_version}"
+ }
+}
+EOF
+)"
+
+# add app entries for the prometheus app into
+# compositeApp
+
+prometheus_app_name="prometheus-operator"
+prometheus_helm_chart=${app1_helm_path}
+
+prometheus_app_data="$(cat <<EOF
+{
+ "metadata": {
+ "name": "${prometheus_app_name}",
+ "description": "description for app ${prometheus_app_name}",
+ "userData1": "user data 2 for ${prometheus_app_name}",
+ "userData2": "user data 2 for ${prometheus_app_name}"
+ }
+}
+EOF
+)"
+
+# add app entries for the collectd app into
+# compositeApp
+
+collectd_app_name="collectd"
+collectd_helm_chart=${app2_helm_path}
+
+collectd_app_data="$(cat <<EOF
+{
+ "metadata": {
+ "name": "${collectd_app_name}",
+ "description": "description for app ${collectd_app_name}",
+ "userData1": "user data 2 for ${collectd_app_name}",
+ "userData2": "user data 2 for ${collectd_app_name}"
+ }
+}
+EOF
+)"
+
+
+# Add the composite profile
+collection_composite_profile_name="collection_composite-profile"
+collection_composite_profile_data="$(cat <<EOF
+{
+ "metadata":{
+ "name":"${collection_composite_profile_name}",
+ "description":"description of ${collection_composite_profile_name}",
+ "userData1":"user data 1 for ${collection_composite_profile_name}",
+ "userData2":"user data 2 for ${collection_composite_profile_name}"
+ }
+}
+EOF
+)"
+
+# Add the prometheus profile data into collection profile data
+prometheus_profile_name="prometheus-profile"
+prometheus_profile_file=$app1_profile_path
+prometheus_profile_data="$(cat <<EOF
+{
+ "metadata":{
+ "name":"${prometheus_profile_name}",
+ "description":"description of ${prometheus_profile_name}",
+ "userData1":"user data 1 for ${prometheus_profile_name}",
+ "userData2":"user data 2 for ${prometheus_profile_name}"
+ },
+ "spec":{
+ "app-name": "${prometheus_app_name}"
+ }
+}
+EOF
+)"
+
+# Add the collectd profile data into collection profile data
+collectd_profile_name="collectd-profile"
+collectd_profile_file=$app2_profile_path
+collectd_profile_data="$(cat <<EOF
+{
+ "metadata":{
+ "name":"${collectd_profile_name}",
+ "description":"description of ${collectd_profile_name}",
+ "userData1":"user data 1 for ${collectd_profile_name}",
+ "userData2":"user data 2 for ${collectd_profile_name}"
+ },
+ "spec":{
+ "app-name": "${collectd_app_name}"
+ }
+}
+EOF
+)"
+
+
+# define the generic placement intent
+generic_placement_intent_name="test-generic-placement-intent"
+generic_placement_intent_data="$(cat <<EOF
+{
+ "metadata":{
+ "name":"${generic_placement_intent_name}",
+ "description":"${generic_placement_intent_name}",
+ "userData1":"${generic_placement_intent_name}",
+ "userData2":"${generic_placement_intent_name}"
+ },
+ "spec":{
+ "logical-cloud":"unused_logical_cloud"
+ }
+}
+EOF
+)"
+
+# define app placement intent for prometheus
+prometheus_placement_intent_name="prometheus-placement-intent"
+prometheus_placement_intent_data="$(cat <<EOF
+{
+ "metadata":{
+ "name":"${prometheus_placement_intent_name}",
+ "description":"description of ${prometheus_placement_intent_name}",
+ "userData1":"user data 1 for ${prometheus_placement_intent_name}",
+ "userData2":"user data 2 for ${prometheus_placement_intent_name}"
+ },
+ "spec":{
+ "app-name":"${prometheus_app_name}",
+ "intent":{
+ "allOf":[
+ { "provider-name":"${clusterprovidername}",
+ "cluster-label-name":"${labelname}"
+ }
+ ]
+ }
+ }
+}
+EOF
+)"
+
+# define app placement intent for collectd
+collectd_placement_intent_name="collectd-placement-intent"
+collectd_placement_intent_data="$(cat <<EOF
+{
+ "metadata":{
+ "name":"${collectd_placement_intent_name}",
+ "description":"description of ${collectd_placement_intent_name}",
+ "userData1":"user data 1 for ${collectd_placement_intent_name}",
+ "userData2":"user data 2 for ${collectd_placement_intent_name}"
+ },
+ "spec":{
+ "app-name":"${collectd_app_name}",
+ "intent":{
+ "allOf":[
+ { "provider-name":"${clusterprovidername}",
+ "cluster-label-name":"${labelname}"
+ }
+ ]
+ }
+ }
+}
+EOF
+)"
+
+
+# define a deployment intent group
+release="test-collection"
+deployment_intent_group_name="collection_deployment_intent_group"
+deployment_intent_group_data="$(cat <<EOF
+{
+ "metadata":{
+ "name":"${deployment_intent_group_name}",
+ "description":"descriptiont of ${deployment_intent_group_name}",
+ "userData1":"user data 1 for ${deployment_intent_group_name}",
+ "userData2":"user data 2 for ${deployment_intent_group_name}"
+ },
+ "spec":{
+ "profile":"${collection_composite_profile_name}",
+ "version":"${release}",
+ "override-values":[]
+ }
+}
+EOF
+)"
+
+# define the intents to be used by the group
+deployment_intents_in_group_name="collection_deploy_intents"
+deployment_intents_in_group_data="$(cat <<EOF
+{
+ "metadata":{
+ "name":"${deployment_intents_in_group_name}",
+ "description":"descriptionf of ${deployment_intents_in_group_name}",
+ "userData1":"user data 1 for ${deployment_intents_in_group_name}",
+ "userData2":"user data 2 for ${deployment_intents_in_group_name}"
+ },
+ "spec":{
+ "intent":{
+ "genericPlacementIntent":"${generic_placement_intent_name}"
+ }
+ }
+}
+EOF
+)"
+
+
+#---------END: SET ORCH DATA--------------------
+
+
+function createOrchestratorData {
+
+ print_msg "creating controller entries"
+ call_api -d "${rsynccontrollerdata}" "${base_url_orchestrator}/controllers"
+ print_msg "creating project entry"
+ call_api -d "${projectdata}" "${base_url_orchestrator}/projects"
+
+ print_msg "creating collection composite app entry"
+ call_api -d "${compositeapp_data}" "${base_url_orchestrator}/projects/${projectname}/composite-apps"
+
+ print_msg "adding prometheus app to the composite app"
+ call_api -F "metadata=${prometheus_app_data}" \
+ -F "file=@${prometheus_helm_chart}" \
+ "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/apps"
+
+ print_msg "adding collectd app to the composite app"
+ call_api -F "metadata=${collectd_app_data}" \
+ -F "file=@${collectd_helm_chart}" \
+ "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/apps"
+
+ print_msg "creating collection composite profile entry"
+ call_api -d "${collection_composite_profile_data}" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/composite-profiles"
+
+ print_msg "adding prometheus app profiles to the composite profile"
+ call_api -F "metadata=${prometheus_profile_data}" \
+ -F "file=@${prometheus_profile_file}" \
+ "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/composite-profiles/${collection_composite_profile_name}/profiles"
+
+ print_msg "adding collectd app profiles to the composite profile"
+ call_api -F "metadata=${collectd_profile_data}" \
+ -F "file=@${collectd_profile_file}" \
+ "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/composite-profiles/${collection_composite_profile_name}/profiles"
+
+ print_msg "create the generic placement intent"
+ call_api -d "${generic_placement_intent_data}" \
+ "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/generic-placement-intents"
+
+ print_msg "add the prometheus app placement intent to the generic placement intent"
+ call_api -d "${prometheus_placement_intent_data}" \
+ "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/generic-placement-intents/${generic_placement_intent_name}/app-intents"
+
+ print_msg "add the collectd app placement intent to the generic placement intent"
+ call_api -d "${collectd_placement_intent_data}" \
+ "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/generic-placement-intents/${generic_placement_intent_name}/app-intents"
+
+
+ print_msg "create the deployment intent group"
+ call_api -d "${deployment_intent_group_data}" \
+ "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/deployment-intent-groups"
+ call_api -d "${deployment_intents_in_group_data}" \
+ "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/intents"
+
+}
+
+function deleteOrchestratorData {
+
+ print_msg "Begin deleteOrchestratorData"
+
+ delete_resource "${base_url_orchestrator}/controllers/${rsynccontrollername}"
+
+ delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/intents/${deployment_intents_in_group_name}"
+
+ delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}"
+
+ delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/generic-placement-intents/${generic_placement_intent_name}/app-intents/${prometheus_placement_intent_name}"
+ delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/generic-placement-intents/${generic_placement_intent_name}/app-intents/${collectd_placement_intent_name}"
+ delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/generic-placement-intents/${generic_placement_intent_name}"
+
+ delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/composite-profiles/${collection_composite_profile_name}/profiles/${prometheus_profile_name}"
+ delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/composite-profiles/${collection_composite_profile_name}/profiles/${collectd_profile_name}"
+
+
+ delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/composite-profiles/${collection_composite_profile_name}"
+
+ delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/apps/${prometheus_app_name}"
+
+ delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/apps/${collectd_app_name}"
+
+
+ delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}"
+ delete_resource "${base_url_orchestrator}/projects/${projectname}"
+
+ print_msg "deleteOrchestratorData done"
+}
+
+
+function createClmData {
+ print_msg "Creating cluster provider and cluster"
+ call_api -d "${clusterproviderdata}" "${base_url_clm}/cluster-providers"
+
+ call_api -H "Content-Type: multipart/form-data" -F "metadata=$clusterdata" -F "file=@$kubeConfigLocal" "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters"
+
+ call_api -d "${labeldata}" "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${clustername}/labels"
+
+
+}
+
+function deleteClmData {
+ print_msg "begin deleteClmData"
+ delete_resource "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${clustername}/labels/${labelname}"
+ delete_resource "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${clustername}"
+ delete_resource "${base_url_clm}/cluster-providers/${clusterprovidername}"
+ print_msg "deleteClmData done"
+}
+
+function createData {
+ createClmData
+ createOrchestratorData
+}
+
+function deleteData {
+ deleteClmData
+ deleteOrchestratorData
+}
+
+function instantiate {
+ call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/approve"
+ call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/instantiate"
+}
+
+
+function terminateOrchData {
+ call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/terminate"
+}
+
+# Setup
+
+function setup {
+ install_deps
+ populate_CSAR_composite_app_helm "$csar_id"
+}
+
+function usage {
+ echo ""
+ echo " Usage: $0 start | stop"
+ echo ""
+ echo " start - creates the orchstrator and cluster management data, instantiates the resources for collectd and prometheus and then deploys them on the local cluster"
+ echo ""
+ echo " stop - terminates the resources for collectd and prometheus and uninstalls the compositeApp"
+ echo ""
+ exit
+}
+
+if [ "$#" -ne 1 ] ; then
+ usage
+fi
+
+
+case "$1" in
+ "start" )
+ deleteData
+ print_msg "deleting the data success"
+ createData
+ print_msg "creating the data success"
+ instantiate
+ print_msg "instantiate success"
+ ;;
+ "stop" )
+ terminateOrchData
+ print_msg "terminated the resources"
+ ;;
+ *) usage ;;
+esac
diff --git a/kud/tests/vfw-test.sh b/kud/tests/vfw-test.sh
index b14ad95b..f4f96b2e 100755
--- a/kud/tests/vfw-test.sh
+++ b/kud/tests/vfw-test.sh
@@ -976,7 +976,7 @@ function terminateVfw {
}
function instantiateVfw {
- # call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/approve"
+ call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/approve"
call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/instantiate"
}
diff --git a/src/clm/api/clusterhandler_test.go b/src/clm/api/clusterhandler_test.go
index 4bbc91b1..076718df 100644
--- a/src/clm/api/clusterhandler_test.go
+++ b/src/clm/api/clusterhandler_test.go
@@ -28,8 +28,8 @@ import (
"testing"
"github.com/onap/multicloud-k8s/src/clm/pkg/cluster"
- "github.com/onap/multicloud-k8s/src/orchestrator/pkg/appcontext"
types "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module/types"
+ "github.com/onap/multicloud-k8s/src/orchestrator/pkg/state"
pkgerrors "github.com/pkg/errors"
)
@@ -43,7 +43,7 @@ type mockClusterManager struct {
ClusterProviderItems []cluster.ClusterProvider
ClusterItems []cluster.Cluster
ClusterContentItems []cluster.ClusterContent
- ClusterContextItems []appcontext.AppContext
+ ClusterStateInfo []state.StateInfo
ClusterLabelItems []cluster.ClusterLabel
ClusterKvPairsItems []cluster.ClusterKvPairs
ClusterList []string
@@ -102,12 +102,12 @@ func (m *mockClusterManager) GetClusterContent(provider, name string) (cluster.C
return m.ClusterContentItems[0], nil
}
-func (m *mockClusterManager) GetClusterContext(provider, name string) (appcontext.AppContext, string, error) {
+func (m *mockClusterManager) GetClusterState(provider, name string) (state.StateInfo, error) {
if m.Err != nil {
- return appcontext.AppContext{}, "", m.Err
+ return state.StateInfo{}, m.Err
}
- return m.ClusterContextItems[0], "", nil
+ return m.ClusterStateInfo[0], nil
}
func (m *mockClusterManager) GetClusters(provider string) ([]cluster.Cluster, error) {
diff --git a/src/clm/go.mod b/src/clm/go.mod
index 0e655566..1d174b12 100644
--- a/src/clm/go.mod
+++ b/src/clm/go.mod
@@ -2,25 +2,24 @@ module github.com/onap/multicloud-k8s/src/clm
require (
github.com/ghodss/yaml v1.0.0
- github.com/go-stack/stack v1.8.0 // indirect
github.com/golang/snappy v0.0.1 // indirect
github.com/gorilla/handlers v1.3.0
- github.com/gorilla/mux v1.6.2
+ github.com/gorilla/mux v1.7.3
github.com/k8snetworkplumbingwg/network-attachment-definition-client v0.0.0-20200127152046-0ee521d56061
- github.com/onap/multicloud-k8s/src/orchestrator v0.0.0-20200601021239-7959bd4c6fd4
+ github.com/onap/multicloud-k8s/src/orchestrator v0.0.0-20200721211210-783ed87fb39a
github.com/opencontainers/go-digest v1.0.0 // indirect
- github.com/pkg/errors v0.8.1
- github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c // indirect
- github.com/xdg/stringprep v1.0.0 // indirect
- google.golang.org/grpc v1.27.1
+ github.com/pkg/errors v0.9.1
+ google.golang.org/grpc v1.28.0
gopkg.in/yaml.v2 v2.2.8
k8s.io/api v0.0.0-20190831074750-7364b6bdad65
- k8s.io/apimachinery v0.0.0-20190831074630-461753078381
+ k8s.io/apimachinery v0.18.2
k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible
k8s.io/kubernetes v1.14.1
)
replace (
+ github.com/onap/multicloud-k8s/src/orchestrator => ../orchestrator
+ github.com/onap/multicloud-k8s/src/clm => ../clm
k8s.io/api => k8s.io/api v0.0.0-20190409021203-6e4e0e4f393b
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.0.0-20190409022649-727a075fdec8
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20190404173353-6a84e37a896d
diff --git a/src/clm/pkg/cluster/cluster.go b/src/clm/pkg/cluster/cluster.go
index ac7f31f7..9505bd97 100644
--- a/src/clm/pkg/cluster/cluster.go
+++ b/src/clm/pkg/cluster/cluster.go
@@ -17,9 +17,9 @@
package cluster
import (
- appcontext "github.com/onap/multicloud-k8s/src/orchestrator/pkg/appcontext"
"github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/db"
mtypes "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module/types"
+ "github.com/onap/multicloud-k8s/src/orchestrator/pkg/state"
pkgerrors "github.com/pkg/errors"
)
@@ -28,7 +28,7 @@ type clientDbInfo struct {
storeName string // name of the mongodb collection to use for client documents
tagMeta string // attribute key name for the json data of a client document
tagContent string // attribute key name for the file data of a client document
- tagContext string // attribute key name for context object in App Context
+ tagState string // attribute key name for StateInfo object in the cluster
}
// ClusterProvider contains the parameters needed for ClusterProviders
@@ -101,7 +101,7 @@ type ClusterManager interface {
CreateCluster(provider string, pr Cluster, qr ClusterContent) (Cluster, error)
GetCluster(provider, name string) (Cluster, error)
GetClusterContent(provider, name string) (ClusterContent, error)
- GetClusterContext(provider, name string) (appcontext.AppContext, string, error)
+ GetClusterState(provider, name string) (state.StateInfo, error)
GetClusters(provider string) ([]Cluster, error)
GetClustersWithLabel(provider, label string) ([]string, error)
DeleteCluster(provider, name string) error
@@ -129,7 +129,7 @@ func NewClusterClient() *ClusterClient {
storeName: "cluster",
tagMeta: "clustermetadata",
tagContent: "clustercontent",
- tagContext: "clustercontext",
+ tagState: "stateInfo",
},
}
}
@@ -254,6 +254,17 @@ func (v *ClusterClient) CreateCluster(provider string, p Cluster, q ClusterConte
return Cluster{}, pkgerrors.Wrap(err, "Creating DB Entry")
}
+ // Add the stateInfo record
+ stateInfo := state.StateInfo{
+ State: state.StateEnum.Created,
+ ContextId: "",
+ }
+
+ err = db.DBconn.Insert(v.db.storeName, key, nil, v.db.tagState, stateInfo)
+ if err != nil {
+ return Cluster{}, pkgerrors.Wrap(err, "Creating cluster StateInfo")
+ }
+
return p, nil
}
@@ -309,31 +320,29 @@ func (v *ClusterClient) GetClusterContent(provider, name string) (ClusterContent
return ClusterContent{}, pkgerrors.New("Error getting Cluster Content")
}
-// GetClusterContext returns the AppContext for corresponding provider and name
-func (v *ClusterClient) GetClusterContext(provider, name string) (appcontext.AppContext, string, error) {
+// GetClusterState returns the StateInfo structure for corresponding cluster provider and cluster
+func (v *ClusterClient) GetClusterState(provider, name string) (state.StateInfo, error) {
//Construct key and tag to select the entry
key := ClusterKey{
ClusterProviderName: provider,
ClusterName: name,
}
- value, err := db.DBconn.Find(v.db.storeName, key, v.db.tagContext)
+ result, err := db.DBconn.Find(v.db.storeName, key, v.db.tagState)
if err != nil {
- return appcontext.AppContext{}, "", pkgerrors.Wrap(err, "Get Cluster Context")
+ return state.StateInfo{}, pkgerrors.Wrap(err, "Get Cluster StateInfo")
}
- //value is a byte array
- if value != nil {
- ctxVal := string(value[0])
- var cc appcontext.AppContext
- _, err = cc.LoadAppContext(ctxVal)
+ if result != nil {
+ s := state.StateInfo{}
+ err = db.DBconn.Unmarshal(result[0], &s)
if err != nil {
- return appcontext.AppContext{}, "", pkgerrors.Wrap(err, "Reinitializing Cluster AppContext")
+ return state.StateInfo{}, pkgerrors.Wrap(err, "Unmarshalling Cluster StateInfo")
}
- return cc, ctxVal, nil
+ return s, nil
}
- return appcontext.AppContext{}, "", pkgerrors.New("Error getting Cluster AppContext")
+ return state.StateInfo{}, pkgerrors.New("Error getting Cluster StateInfo")
}
// GetClusters returns all the Clusters for corresponding provider
@@ -393,9 +402,9 @@ func (v *ClusterClient) DeleteCluster(provider, name string) error {
ClusterProviderName: provider,
ClusterName: name,
}
- _, _, err := v.GetClusterContext(provider, name)
- if err == nil {
- return pkgerrors.Errorf("Cannot delete cluster until context is deleted: %v, %v", provider, name)
+ s, err := v.GetClusterState(provider, name)
+ if err == nil && s.State == state.StateEnum.Applied {
+ return pkgerrors.Errorf("Cluster network intents must be terminated before it can be deleted: " + name)
}
err = db.DBconn.Remove(v.db.storeName, key)
diff --git a/src/dcm/api/api.go b/src/dcm/api/api.go
index 87ad77b5..de1d5c97 100644
--- a/src/dcm/api/api.go
+++ b/src/dcm/api/api.go
@@ -14,143 +14,142 @@ limitations under the License.
package api
import (
+ "github.com/onap/multicloud-k8s/src/dcm/pkg/module"
- "github.com/onap/multicloud-k8s/src/dcm/pkg/module"
-
- "github.com/gorilla/mux"
+ "github.com/gorilla/mux"
)
// NewRouter creates a router that registers the various urls that are
// supported
func NewRouter(
- logicalCloudClient module.LogicalCloudManager,
- clusterClient module.ClusterManager,
- userPermissionClient module.UserPermissionManager,
- quotaClient module.QuotaManager,
- keyValueClient module.KeyValueManager) *mux.Router {
-
- router := mux.NewRouter()
-
- // Set up Logical Cloud handler routes
- if logicalCloudClient == nil {
- logicalCloudClient = module.NewLogicalCloudClient()
- }
-
- if clusterClient == nil {
- clusterClient = module.NewClusterClient()
- }
-
- if quotaClient == nil {
- quotaClient = module.NewQuotaClient()
- }
-
- logicalCloudHandler := logicalCloudHandler{client: logicalCloudClient,
- clusterClient: clusterClient,
- quotaClient: quotaClient,
- }
- lcRouter := router.PathPrefix("/v2/projects/{project-name}").Subrouter()
- lcRouter.HandleFunc(
- "/logical-clouds",
- logicalCloudHandler.createHandler).Methods("POST")
- lcRouter.HandleFunc(
- "/logical-clouds",
- logicalCloudHandler.getHandler).Methods("GET")
- lcRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}",
- logicalCloudHandler.getHandler).Methods("GET")
- lcRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}",
- logicalCloudHandler.deleteHandler).Methods("DELETE")
- lcRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}",
- logicalCloudHandler.updateHandler).Methods("PUT")
- lcRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/apply",
- logicalCloudHandler.applyHandler).Methods("POST")
- // To Do
- // get kubeconfig
- /*lcRouter.HandleFunc(
- "/logical-clouds/{name}/kubeconfig?cluster-reference={cluster}",
- logicalCloudHandler.getConfigHandler).Methods("GET")
- //get status
- lcRouter.HandleFunc(
- "/logical-clouds/{name}/cluster-references/",
- logicalCloudHandler.associateHandler).Methods("GET")*/
-
- // Set up Cluster API
-
- clusterHandler := clusterHandler{client: clusterClient}
- clusterRouter := router.PathPrefix("/v2/projects/{project-name}").Subrouter()
- clusterRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/cluster-references",
- clusterHandler.createHandler).Methods("POST")
- clusterRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/cluster-references",
- clusterHandler.getHandler).Methods("GET")
- clusterRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/cluster-references/{cluster-reference}",
- clusterHandler.getHandler).Methods("GET")
- clusterRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/cluster-references/{cluster-reference}",
- clusterHandler.updateHandler).Methods("PUT")
- clusterRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/cluster-references/{cluster-reference}",
- clusterHandler.deleteHandler).Methods("DELETE")
-
- // Set up User Permission API
- if userPermissionClient == nil {
- userPermissionClient = module.NewUserPermissionClient()
- }
- userPermissionHandler := userPermissionHandler{client: userPermissionClient}
- upRouter := router.PathPrefix("/v2/projects/{project-name}").Subrouter()
- upRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/user-permissions",
- userPermissionHandler.createHandler).Methods("POST")
- upRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/user-permissions/{permission-name}",
- userPermissionHandler.getHandler).Methods("GET")
- upRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/user-permissions/{permission-name}",
- userPermissionHandler.updateHandler).Methods("PUT")
- upRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/user-permissions/{permission-name}",
- userPermissionHandler.deleteHandler).Methods("DELETE")
-
- // Set up Quota API
-
- quotaHandler := quotaHandler{client: quotaClient}
- quotaRouter := router.PathPrefix("/v2/projects/{project-name}").Subrouter()
- quotaRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/cluster-quotas",
- quotaHandler.createHandler).Methods("POST")
- quotaRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/cluster-quotas/{quota-name}",
- quotaHandler.getHandler).Methods("GET")
- quotaRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/cluster-quotas/{quota-name}",
- quotaHandler.updateHandler).Methods("PUT")
- quotaRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/cluster-quotas/{quota-name}",
- quotaHandler.deleteHandler).Methods("DELETE")
-
- // Set up Key Value API
- if keyValueClient == nil {
- keyValueClient = module.NewKeyValueClient()
- }
- keyValueHandler := keyValueHandler{client: keyValueClient}
- kvRouter := router.PathPrefix("/v2/projects/{project-name}").Subrouter()
- kvRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/kv-pairs",
- keyValueHandler.createHandler).Methods("POST")
- kvRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/kv-pairs/{kv-pair-name}",
- keyValueHandler.getHandler).Methods("GET")
- kvRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/kv-pairs/{kv-pair-name}",
- keyValueHandler.updateHandler).Methods("PUT")
- kvRouter.HandleFunc(
- "/logical-clouds/{logical-cloud-name}/kv-pairs/{kv-pair-name}",
- keyValueHandler.deleteHandler).Methods("DELETE")
- return router
+ logicalCloudClient module.LogicalCloudManager,
+ clusterClient module.ClusterManager,
+ userPermissionClient module.UserPermissionManager,
+ quotaClient module.QuotaManager,
+ keyValueClient module.KeyValueManager) *mux.Router {
+
+ router := mux.NewRouter()
+
+ // Set up Logical Cloud handler routes
+ if logicalCloudClient == nil {
+ logicalCloudClient = module.NewLogicalCloudClient()
+ }
+
+ if clusterClient == nil {
+ clusterClient = module.NewClusterClient()
+ }
+
+ if quotaClient == nil {
+ quotaClient = module.NewQuotaClient()
+ }
+
+ logicalCloudHandler := logicalCloudHandler{client: logicalCloudClient,
+ clusterClient: clusterClient,
+ quotaClient: quotaClient,
+ }
+ lcRouter := router.PathPrefix("/v2/projects/{project-name}").Subrouter()
+ lcRouter.HandleFunc(
+ "/logical-clouds",
+ logicalCloudHandler.createHandler).Methods("POST")
+ lcRouter.HandleFunc(
+ "/logical-clouds",
+ logicalCloudHandler.getHandler).Methods("GET")
+ lcRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}",
+ logicalCloudHandler.getHandler).Methods("GET")
+ lcRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}",
+ logicalCloudHandler.deleteHandler).Methods("DELETE")
+ lcRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}",
+ logicalCloudHandler.updateHandler).Methods("PUT")
+ lcRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/apply",
+ logicalCloudHandler.applyHandler).Methods("POST")
+ // To Do
+ // get kubeconfig
+ /*lcRouter.HandleFunc(
+ "/logical-clouds/{name}/kubeconfig?cluster-reference={cluster}",
+ logicalCloudHandler.getConfigHandler).Methods("GET")
+ //get status
+ lcRouter.HandleFunc(
+ "/logical-clouds/{name}/cluster-references/",
+ logicalCloudHandler.associateHandler).Methods("GET")*/
+
+ // Set up Cluster API
+
+ clusterHandler := clusterHandler{client: clusterClient}
+ clusterRouter := router.PathPrefix("/v2/projects/{project-name}").Subrouter()
+ clusterRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/cluster-references",
+ clusterHandler.createHandler).Methods("POST")
+ clusterRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/cluster-references",
+ clusterHandler.getHandler).Methods("GET")
+ clusterRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/cluster-references/{cluster-reference}",
+ clusterHandler.getHandler).Methods("GET")
+ clusterRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/cluster-references/{cluster-reference}",
+ clusterHandler.updateHandler).Methods("PUT")
+ clusterRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/cluster-references/{cluster-reference}",
+ clusterHandler.deleteHandler).Methods("DELETE")
+
+ // Set up User Permission API
+ if userPermissionClient == nil {
+ userPermissionClient = module.NewUserPermissionClient()
+ }
+ userPermissionHandler := userPermissionHandler{client: userPermissionClient}
+ upRouter := router.PathPrefix("/v2/projects/{project-name}").Subrouter()
+ upRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/user-permissions",
+ userPermissionHandler.createHandler).Methods("POST")
+ upRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/user-permissions/{permission-name}",
+ userPermissionHandler.getHandler).Methods("GET")
+ upRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/user-permissions/{permission-name}",
+ userPermissionHandler.updateHandler).Methods("PUT")
+ upRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/user-permissions/{permission-name}",
+ userPermissionHandler.deleteHandler).Methods("DELETE")
+
+ // Set up Quota API
+
+ quotaHandler := quotaHandler{client: quotaClient}
+ quotaRouter := router.PathPrefix("/v2/projects/{project-name}").Subrouter()
+ quotaRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/cluster-quotas",
+ quotaHandler.createHandler).Methods("POST")
+ quotaRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/cluster-quotas/{quota-name}",
+ quotaHandler.getHandler).Methods("GET")
+ quotaRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/cluster-quotas/{quota-name}",
+ quotaHandler.updateHandler).Methods("PUT")
+ quotaRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/cluster-quotas/{quota-name}",
+ quotaHandler.deleteHandler).Methods("DELETE")
+
+ // Set up Key Value API
+ if keyValueClient == nil {
+ keyValueClient = module.NewKeyValueClient()
+ }
+ keyValueHandler := keyValueHandler{client: keyValueClient}
+ kvRouter := router.PathPrefix("/v2/projects/{project-name}").Subrouter()
+ kvRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/kv-pairs",
+ keyValueHandler.createHandler).Methods("POST")
+ kvRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/kv-pairs/{kv-pair-name}",
+ keyValueHandler.getHandler).Methods("GET")
+ kvRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/kv-pairs/{kv-pair-name}",
+ keyValueHandler.updateHandler).Methods("PUT")
+ kvRouter.HandleFunc(
+ "/logical-clouds/{logical-cloud-name}/kv-pairs/{kv-pair-name}",
+ keyValueHandler.deleteHandler).Methods("DELETE")
+ return router
}
diff --git a/src/dcm/api/logicalCloudHandler.go b/src/dcm/api/logicalCloudHandler.go
index d8fcf268..d9a3e5f5 100644
--- a/src/dcm/api/logicalCloudHandler.go
+++ b/src/dcm/api/logicalCloudHandler.go
@@ -14,182 +14,181 @@
* See the License for the specific language governing permissions
* and
* limitations under the License.
-*/
+ */
package api
import (
- "encoding/json"
- "net/http"
- "io"
- "github.com/onap/multicloud-k8s/src/dcm/pkg/module"
- "github.com/gorilla/mux"
-)
+ "encoding/json"
+ "io"
+ "net/http"
+ "github.com/gorilla/mux"
+ "github.com/onap/multicloud-k8s/src/dcm/pkg/module"
+)
// logicalCloudHandler is used to store backend implementations objects
type logicalCloudHandler struct {
- client module.LogicalCloudManager
- clusterClient module.ClusterManager
- quotaClient module.QuotaManager
+ client module.LogicalCloudManager
+ clusterClient module.ClusterManager
+ quotaClient module.QuotaManager
}
// CreateHandler handles creation of the logical cloud entry in the database
func (h logicalCloudHandler) createHandler(w http.ResponseWriter, r *http.Request) {
- vars := mux.Vars(r)
- project := vars["project-name"]
- var v module.LogicalCloud
-
- err := json.NewDecoder(r.Body).Decode(&v)
- switch {
- case err == io.EOF:
- http.Error(w, "Empty body", http.StatusBadRequest)
- return
- case err != nil:
- http.Error(w, err.Error(), http.StatusUnprocessableEntity)
- return
- }
-
- // Logical Cloud Name is required.
- if v.MetaData.LogicalCloudName == "" {
- http.Error(w, "Missing name in POST request", http.StatusBadRequest)
- return
- }
-
- ret, err := h.client.Create(project, v)
- if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
-
- w.Header().Set("Content-Type", "application/json")
- w.WriteHeader(http.StatusCreated)
- err = json.NewEncoder(w).Encode(ret)
- if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
+ vars := mux.Vars(r)
+ project := vars["project-name"]
+ var v module.LogicalCloud
+
+ err := json.NewDecoder(r.Body).Decode(&v)
+ switch {
+ case err == io.EOF:
+ http.Error(w, "Empty body", http.StatusBadRequest)
+ return
+ case err != nil:
+ http.Error(w, err.Error(), http.StatusUnprocessableEntity)
+ return
+ }
+
+ // Logical Cloud Name is required.
+ if v.MetaData.LogicalCloudName == "" {
+ http.Error(w, "Missing name in POST request", http.StatusBadRequest)
+ return
+ }
+
+ ret, err := h.client.Create(project, v)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ w.Header().Set("Content-Type", "application/json")
+ w.WriteHeader(http.StatusCreated)
+ err = json.NewEncoder(w).Encode(ret)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
}
// getHandler handle GET operations on a particular name
// Returns a Logical Cloud
func (h logicalCloudHandler) getHandler(w http.ResponseWriter, r *http.Request) {
- vars := mux.Vars(r)
- project := vars["project-name"]
- name := vars["logical-cloud-name"]
- var ret interface{}
- var err error
-
- if len(name) == 0 {
- ret, err = h.client.GetAll(project)
- if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
- } else {
- ret, err = h.client.Get(project, name)
- if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
- }
-
- w.Header().Set("Content-Type", "application/json")
- w.WriteHeader(http.StatusOK)
- err = json.NewEncoder(w).Encode(ret)
- if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
+ vars := mux.Vars(r)
+ project := vars["project-name"]
+ name := vars["logical-cloud-name"]
+ var ret interface{}
+ var err error
+
+ if len(name) == 0 {
+ ret, err = h.client.GetAll(project)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+ } else {
+ ret, err = h.client.Get(project, name)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+ }
+
+ w.Header().Set("Content-Type", "application/json")
+ w.WriteHeader(http.StatusOK)
+ err = json.NewEncoder(w).Encode(ret)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
}
// UpdateHandler handles Update operations on a particular logical cloud
func (h logicalCloudHandler) updateHandler(w http.ResponseWriter, r *http.Request) {
- var v module.LogicalCloud
- vars := mux.Vars(r)
- project := vars["project-name"]
- name := vars["logical-cloud-name"]
-
- err := json.NewDecoder(r.Body).Decode(&v)
- switch {
- case err == io.EOF:
- http.Error(w, "Empty body", http.StatusBadRequest)
- return
- case err != nil:
- http.Error(w, err.Error(), http.StatusUnprocessableEntity)
- return
- }
-
- if v.MetaData.LogicalCloudName == "" {
- http.Error(w, "Missing name in PUT request", http.StatusBadRequest)
- return
- }
-
- ret, err := h.client.Update(project, name, v)
- if err != nil {
- http.Error(w, err.Error(),
- http.StatusInternalServerError)
- return
- }
- w.Header().Set("Content-Type", "application/json")
- w.WriteHeader(http.StatusCreated)
- err = json.NewEncoder(w).Encode(ret)
- if err != nil {
- http.Error(w, err.Error(),
- http.StatusInternalServerError)
- return
- }
+ var v module.LogicalCloud
+ vars := mux.Vars(r)
+ project := vars["project-name"]
+ name := vars["logical-cloud-name"]
+
+ err := json.NewDecoder(r.Body).Decode(&v)
+ switch {
+ case err == io.EOF:
+ http.Error(w, "Empty body", http.StatusBadRequest)
+ return
+ case err != nil:
+ http.Error(w, err.Error(), http.StatusUnprocessableEntity)
+ return
+ }
+
+ if v.MetaData.LogicalCloudName == "" {
+ http.Error(w, "Missing name in PUT request", http.StatusBadRequest)
+ return
+ }
+
+ ret, err := h.client.Update(project, name, v)
+ if err != nil {
+ http.Error(w, err.Error(),
+ http.StatusInternalServerError)
+ return
+ }
+ w.Header().Set("Content-Type", "application/json")
+ w.WriteHeader(http.StatusCreated)
+ err = json.NewEncoder(w).Encode(ret)
+ if err != nil {
+ http.Error(w, err.Error(),
+ http.StatusInternalServerError)
+ return
+ }
}
func (h logicalCloudHandler) deleteHandler(w http.ResponseWriter, r *http.Request) {
- vars := mux.Vars(r)
- project := vars["project-name"]
- name := vars["logical-cloud-name"]
+ vars := mux.Vars(r)
+ project := vars["project-name"]
+ name := vars["logical-cloud-name"]
- err := h.client.Delete(project, name)
- if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
+ err := h.client.Delete(project, name)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
- w.WriteHeader(http.StatusNoContent)
+ w.WriteHeader(http.StatusNoContent)
}
func (h logicalCloudHandler) applyHandler(w http.ResponseWriter, r *http.Request) {
- vars := mux.Vars(r)
- project := vars["project-name"]
- name := vars["logical-cloud-name"]
-
- // Get logical cloud
- lc, err := h.client.Get(project, name)
- if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
-
- // Get Clusters
- clusters, err := h.clusterClient.GetAllClusters(project, name)
-
- if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
-
-
- //Get Quotas
- quotas, err := h.quotaClient.GetAllQuotas(project, name)
- if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
-
- err = module.CreateEtcdContext(lc, clusters, quotas)
- if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
-
- return
+ vars := mux.Vars(r)
+ project := vars["project-name"]
+ name := vars["logical-cloud-name"]
+
+ // Get logical cloud
+ lc, err := h.client.Get(project, name)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ // Get Clusters
+ clusters, err := h.clusterClient.GetAllClusters(project, name)
+
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ //Get Quotas
+ quotas, err := h.quotaClient.GetAllQuotas(project, name)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ err = module.CreateEtcdContext(lc, clusters, quotas)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ return
}
diff --git a/src/dcm/pkg/module/apply.go b/src/dcm/pkg/module/apply.go
index c918f749..dbcbf8ac 100644
--- a/src/dcm/pkg/module/apply.go
+++ b/src/dcm/pkg/module/apply.go
@@ -1,451 +1,424 @@
-/*
-* Copyright 2020 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 module
-
-import (
- "strings"
- "fmt"
- "crypto/rsa"
- "crypto/rand"
- "crypto/x509"
- "crypto/x509/pkix"
- "encoding/json"
- "encoding/pem"
- "encoding/base64"
- "github.com/onap/multicloud-k8s/src/orchestrator/pkg/appcontext"
- log "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/logutils"
- "gopkg.in/yaml.v2"
- pkgerrors "github.com/pkg/errors"
-
-)
-
-type Resource struct {
- ApiVersion string `yaml:"apiVersion"`
- Kind string `yaml:"kind"`
- MetaData MetaDatas `yaml:"metadata"`
- Specification Specs `yaml:"spec,omitempty"`
- Rules []RoleRules `yaml:"rules,omitempty"`
- Subjects []RoleSubjects `yaml:"subjects,omitempty"`
- RoleRefs RoleRef `yaml:"roleRef,omitempty"`
-}
-
-type MetaDatas struct {
- Name string `yaml:"name"`
- Namespace string `yaml:"namespace,omitempty"`
-}
-
-type Specs struct {
- Request string `yaml:"request,omitempty"`
- Usages []string `yaml:"usages,omitempty"`
- //Hard logicalcloud.QSpec `yaml:"hard,omitempty"`
- Hard QSpec `yaml:"hard,omitempty"`
-}
-
-type RoleRules struct {
- ApiGroups []string `yaml:"apiGroups"`
- Resources []string `yaml:"resources"`
- Verbs []string `yaml:"verbs"`
-}
-
-type RoleSubjects struct {
- Kind string `yaml:"kind"`
- Name string `yaml:"name"`
- ApiGroup string `yaml:"apiGroup"`
-}
-
-type RoleRef struct {
- Kind string `yaml:"kind"`
- Name string `yaml:"name"`
- ApiGroup string `yaml:"apiGroup"`
-}
-
-
-func createNamespace(logicalcloud LogicalCloud) (string, error) {
-
- namespace := Resource{
- ApiVersion: "v1",
- Kind: "Namespace",
- MetaData: MetaDatas{
- Name: logicalcloud.Specification.NameSpace,
- },
- }
-
- nsData, err := yaml.Marshal(&namespace)
- if err != nil {
- return "", err
- }
-
-
- return string(nsData), nil
-}
-
-func createRole(logicalcloud LogicalCloud) (string, error) {
-
- userPermissions := logicalcloud.Specification.User.UserPermissions[0]
-
- role := Resource{
- ApiVersion: "rbac.authorization.k8s.io/v1beta1",
- Kind: "Role",
- MetaData: MetaDatas{
- Name: strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "-role"}, ""),
- Namespace: logicalcloud.Specification.NameSpace,
- },
- Rules: []RoleRules{ RoleRules{
- ApiGroups: userPermissions.APIGroups,
- Resources: userPermissions.Resources,
- Verbs: userPermissions.Verbs,
- },
- },
-
- }
-
- roleData, err := yaml.Marshal(&role)
- if err != nil {
- return "", err
- }
-
- return string(roleData), nil
-}
-
-func createRoleBinding(logicalcloud LogicalCloud) (string, error) {
-
- roleBinding := Resource{
- ApiVersion: "rbac.authorization.k8s.io/v1beta1",
- Kind: "RoleBinding",
- MetaData: MetaDatas{
- Name: strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "-roleBinding"}, ""),
- Namespace: logicalcloud.Specification.NameSpace,
- },
- Subjects: []RoleSubjects{ RoleSubjects{
- Kind: "User",
- Name: logicalcloud.Specification.User.UserName,
- ApiGroup: "",
- },
- },
-
- RoleRefs: RoleRef{
- Kind: "Role",
- Name: strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "-role"}, ""),
- ApiGroup: "",
- },
- }
-
- rBData, err := yaml.Marshal(&roleBinding)
- if err != nil {
- return "", err
- }
-
-
- return string(rBData), nil
-
-}
-
-func createQuota(quota []Quota, namespace string) (string, error) {
- lcQuota := quota[0]
-
- q := Resource{
- ApiVersion: "v1",
- Kind: "ResourceQuota",
- MetaData: MetaDatas{
- Name: lcQuota.MetaData.QuotaName,
- Namespace: namespace,
- },
- Specification: Specs{
- Hard: lcQuota.Specification,
- },
- }
-
- qData, err := yaml.Marshal(&q)
- if err != nil {
- return "", err
- }
-
-
-
- return string(qData), nil
-
-}
-
-func createUserCSR(logicalcloud LogicalCloud) (string, error) {
- KEYSIZE := 4096
- userName := logicalcloud.Specification.User.UserName
-
- key, err := rsa.GenerateKey(rand.Reader, KEYSIZE)
- if err != nil {
- return "", err
- }
-
- csrTemplate := x509.CertificateRequest{Subject: pkix.Name{CommonName: userName,},
- }
-
- csrCert, err := x509.CreateCertificateRequest(rand.Reader, &csrTemplate, key)
- if err != nil {
- return "", err
- }
-
- //Encode csr
- csr := pem.EncodeToMemory(&pem.Block{
- Type: "CERTIFICATE REQUEST",
- Bytes: csrCert,
- })
-
- csrObj := Resource{
- ApiVersion: "certificates.k8s.io/v1beta1",
- Kind: "CertificateSigningRequest",
- MetaData: MetaDatas{
- Name: strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "-user-csr"}, ""),
- Namespace: logicalcloud.Specification.NameSpace,
- },
- Specification: Specs{
- Request: base64.StdEncoding.EncodeToString(csr),
- Usages: []string{"digital signature", "key encipherment"},
- },
- }
-
- csrData, err := yaml.Marshal(&csrObj)
- if err != nil {
- return "", err
- }
-
-
- return string(csrData), nil
-
-
-}
-
-// TODO:
-// Install istio
-// Store user key for user creation
-// Code to run kubectl commands for user
-// kubectl certificate approve lc1-user-cert
-// kubectl get csr lc1-user-cert -o jsonpath='{.status.certificate}' | base64 --decode > user.crt
-// kubectl config set-credentials user --client-certificate=<user.crt> --client-key=<user.key>
-// kubectl config set-context user-context --cluster=cluster-name --namespace=lc1 --user=user
-
-
-func CreateEtcdContext(logicalcloud LogicalCloud, clusterList []Cluster,
- quotaList []Quota ) error {
-
- APP := "logical-cloud"
- logicalCloudName := logicalcloud.MetaData.LogicalCloudName
-
-
- //Resource Names
- namespaceName := strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "+namespace"}, "")
- roleName := strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "+role"}, "")
- roleBindingName := strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "+roleBinding"}, "")
- quotaName := strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "+quota"}, "")
- csrName := strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "+CertificateSigningRequest"}, "")
-
- // Get resources to be added
- namespace, err := createNamespace(logicalcloud)
- if err != nil {
- return pkgerrors.Wrap(err, "Error Creating Namespace YAML for logical cloud")
- }
-
- role, err := createRole(logicalcloud)
- if err != nil {
- return pkgerrors.Wrap(err, "Error Creating Role YAML for logical cloud")
- }
-
- roleBinding, err := createRoleBinding(logicalcloud)
- if err != nil {
- return pkgerrors.Wrap(err, "Error Creating RoleBinding YAML for logical cloud")
- }
-
- quota, err := createQuota(quotaList, logicalcloud.Specification.NameSpace)
- if err != nil {
- return pkgerrors.Wrap(err, "Error Creating Quota YAML for logical cloud")
- }
-
- csr, err := createUserCSR(logicalcloud)
- if err != nil {
- return pkgerrors.Wrap(err, "Error Creating User CSR for logical cloud")
- }
-
-
- context := appcontext.AppContext{}
- ctxVal, err := context.InitAppContext()
- if err != nil {
- return pkgerrors.Wrap(err, "Error creating AppContext")
- }
-
- fmt.Printf("%v\n", ctxVal)
-
- handle, err := context.CreateCompositeApp()
- if err != nil {
- return pkgerrors.Wrap(err, "Error creating AppContext CompositeApp")
- }
-
-
- appHandle, err := context.AddApp(handle, APP)
- if err != nil {
- cleanuperr := context.DeleteCompositeApp()
- if cleanuperr != nil {
- log.Warn("Error cleaning AppContext CompositeApp create failure", log.Fields{
- "logical-cloud": logicalCloudName,
- })
- }
- return pkgerrors.Wrap(err, "Error adding App to AppContext")
- }
-
-
- // Iterate through cluster list and add all the clusters
- for _, cluster:= range clusterList {
- clusterName := strings.Join([]string{cluster.Specification.ClusterProvider, "+", cluster.Specification.ClusterName, }, "")
- clusterHandle, err := context.AddCluster(appHandle, clusterName)
-
- if err != nil {
- cleanuperr := context.DeleteCompositeApp()
- if cleanuperr != nil {
- log.Warn("Error cleaning AppContext after add cluster failure", log.Fields{
- "cluster-provider": cluster.Specification.ClusterProvider,
- "cluster": cluster.Specification.ClusterName,
- "logical-cloud": logicalCloudName,
-
- })
- }
- return pkgerrors.Wrap(err, "Error adding Cluster to AppContext")
- }
-
- // Add namespace resource to each cluster
- _, err = context.AddResource(clusterHandle, namespaceName, namespace)
- if err != nil {
- cleanuperr := context.DeleteCompositeApp()
- if cleanuperr != nil {
- log.Warn("Error cleaning AppContext after add namespace resource failure", log.Fields{
- "cluster-provider": cluster.Specification.ClusterProvider,
- "cluster": cluster.Specification.ClusterName,
- "logical-cloud": logicalCloudName,
-
- })
- }
- return pkgerrors.Wrap(err, "Error adding Namespace Resource to AppContext")
- }
-
- // Add csr resource to each cluster
- _, err = context.AddResource(clusterHandle, csrName, csr)
- if err != nil {
- cleanuperr := context.DeleteCompositeApp()
- if cleanuperr != nil {
- log.Warn("Error cleaning AppContext after add CSR resource failure", log.Fields{
- "cluster-provider": cluster.Specification.ClusterProvider,
- "cluster": cluster.Specification.ClusterName,
- "logical-cloud": logicalCloudName,
-
- })
- }
- return pkgerrors.Wrap(err, "Error adding CSR Resource to AppContext")
- }
-
-
-
- // Add Role resource to each cluster
- _, err = context.AddResource(clusterHandle, roleName, role)
- if err != nil {
- cleanuperr := context.DeleteCompositeApp()
- if cleanuperr != nil {
- log.Warn("Error cleaning AppContext after add role resource failure", log.Fields{
- "cluster-provider": cluster.Specification.ClusterProvider,
- "cluster": cluster.Specification.ClusterName,
- "logical-cloud": logicalCloudName,
-
- })
- }
- return pkgerrors.Wrap(err, "Error adding role Resource to AppContext")
- }
-
- // Add RoleBinding resource to each cluster
- _, err = context.AddResource(clusterHandle, roleBindingName, roleBinding)
- if err != nil {
- cleanuperr := context.DeleteCompositeApp()
- if cleanuperr != nil {
- log.Warn("Error cleaning AppContext after add roleBinding resource failure", log.Fields{
- "cluster-provider": cluster.Specification.ClusterProvider,
- "cluster": cluster.Specification.ClusterName,
- "logical-cloud": logicalCloudName,
-
- })
- }
- return pkgerrors.Wrap(err, "Error adding roleBinding Resource to AppContext")
- }
-
- // Add quota resource to each cluster
- _, err = context.AddResource(clusterHandle, quotaName, quota)
- if err != nil {
- cleanuperr := context.DeleteCompositeApp()
- if cleanuperr != nil {
- log.Warn("Error cleaning AppContext after add quota resource failure", log.Fields{
- "cluster-provider": cluster.Specification.ClusterProvider,
- "cluster": cluster.Specification.ClusterName,
- "logical-cloud": logicalCloudName,
-
- })
- }
- return pkgerrors.Wrap(err, "Error adding quota Resource to AppContext")
- }
-
- // Add Resource Order and Resource Dependency
- resOrder, err := json.Marshal(map[string][]string{"resorder" : []string{namespaceName, quotaName, csrName, roleName, roleBindingName}})
- if err != nil {
- return pkgerrors.Wrap(err, "Error creating resource order JSON")
- }
-
- resDependency, err := json.Marshal(map[string]map[string]string{"resdependency" : map[string]string{namespaceName : "go",
- quotaName : strings.Join([]string{"wait on ", namespaceName}, ""), csrName: strings.Join([]string{"wait on ", quotaName}, ""),
- roleName : strings.Join([]string{"wait on ", csrName}, ""), roleBindingName: strings.Join([]string{"wait on ", roleName}, ""),}})
-
- if err != nil {
- return pkgerrors.Wrap(err, "Error creating resource dependency JSON")
- }
-
- _, err = context.AddInstruction(clusterHandle, "resource", "order", string(resOrder))
- if err != nil {
- cleanuperr := context.DeleteCompositeApp()
- if cleanuperr != nil {
- log.Warn("Error cleaning AppContext after add instruction failure", log.Fields{
- "cluster-provider": cluster.Specification.ClusterProvider,
- "cluster": cluster.Specification.ClusterName,
- "logical-cloud": logicalCloudName,
-
- })
- }
- return pkgerrors.Wrap(err, "Error adding instruction order to AppContext")
- }
-
- _, err = context.AddInstruction(clusterHandle, "resource", "dependency", string(resDependency))
- if err != nil {
- cleanuperr := context.DeleteCompositeApp()
- if cleanuperr != nil {
- log.Warn("Error cleaning AppContext after add instruction failure", log.Fields{
- "cluster-provider": cluster.Specification.ClusterProvider,
- "cluster": cluster.Specification.ClusterName,
- "logical-cloud": logicalCloudName,
-
- })
- }
- return pkgerrors.Wrap(err, "Error adding instruction dependency to AppContext")
- }
-
-
-
- }
-
- return nil
-
-
-}
+/*
+* Copyright 2020 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 module
+
+import (
+ "crypto/rand"
+ "crypto/rsa"
+ "crypto/x509"
+ "crypto/x509/pkix"
+ "encoding/base64"
+ "encoding/json"
+ "encoding/pem"
+ "fmt"
+ "strings"
+
+ "github.com/onap/multicloud-k8s/src/orchestrator/pkg/appcontext"
+ log "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/logutils"
+ pkgerrors "github.com/pkg/errors"
+ "gopkg.in/yaml.v2"
+)
+
+type Resource struct {
+ ApiVersion string `yaml:"apiVersion"`
+ Kind string `yaml:"kind"`
+ MetaData MetaDatas `yaml:"metadata"`
+ Specification Specs `yaml:"spec,omitempty"`
+ Rules []RoleRules `yaml:"rules,omitempty"`
+ Subjects []RoleSubjects `yaml:"subjects,omitempty"`
+ RoleRefs RoleRef `yaml:"roleRef,omitempty"`
+}
+
+type MetaDatas struct {
+ Name string `yaml:"name"`
+ Namespace string `yaml:"namespace,omitempty"`
+}
+
+type Specs struct {
+ Request string `yaml:"request,omitempty"`
+ Usages []string `yaml:"usages,omitempty"`
+ //Hard logicalcloud.QSpec `yaml:"hard,omitempty"`
+ Hard QSpec `yaml:"hard,omitempty"`
+}
+
+type RoleRules struct {
+ ApiGroups []string `yaml:"apiGroups"`
+ Resources []string `yaml:"resources"`
+ Verbs []string `yaml:"verbs"`
+}
+
+type RoleSubjects struct {
+ Kind string `yaml:"kind"`
+ Name string `yaml:"name"`
+ ApiGroup string `yaml:"apiGroup"`
+}
+
+type RoleRef struct {
+ Kind string `yaml:"kind"`
+ Name string `yaml:"name"`
+ ApiGroup string `yaml:"apiGroup"`
+}
+
+func createNamespace(logicalcloud LogicalCloud) (string, error) {
+
+ namespace := Resource{
+ ApiVersion: "v1",
+ Kind: "Namespace",
+ MetaData: MetaDatas{
+ Name: logicalcloud.Specification.NameSpace,
+ },
+ }
+
+ nsData, err := yaml.Marshal(&namespace)
+ if err != nil {
+ return "", err
+ }
+
+ return string(nsData), nil
+}
+
+func createRole(logicalcloud LogicalCloud) (string, error) {
+
+ userPermissions := logicalcloud.Specification.User.UserPermissions[0]
+
+ role := Resource{
+ ApiVersion: "rbac.authorization.k8s.io/v1beta1",
+ Kind: "Role",
+ MetaData: MetaDatas{
+ Name: strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "-role"}, ""),
+ Namespace: logicalcloud.Specification.NameSpace,
+ },
+ Rules: []RoleRules{RoleRules{
+ ApiGroups: userPermissions.APIGroups,
+ Resources: userPermissions.Resources,
+ Verbs: userPermissions.Verbs,
+ },
+ },
+ }
+
+ roleData, err := yaml.Marshal(&role)
+ if err != nil {
+ return "", err
+ }
+
+ return string(roleData), nil
+}
+
+func createRoleBinding(logicalcloud LogicalCloud) (string, error) {
+
+ roleBinding := Resource{
+ ApiVersion: "rbac.authorization.k8s.io/v1beta1",
+ Kind: "RoleBinding",
+ MetaData: MetaDatas{
+ Name: strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "-roleBinding"}, ""),
+ Namespace: logicalcloud.Specification.NameSpace,
+ },
+ Subjects: []RoleSubjects{RoleSubjects{
+ Kind: "User",
+ Name: logicalcloud.Specification.User.UserName,
+ ApiGroup: "",
+ },
+ },
+
+ RoleRefs: RoleRef{
+ Kind: "Role",
+ Name: strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "-role"}, ""),
+ ApiGroup: "",
+ },
+ }
+
+ rBData, err := yaml.Marshal(&roleBinding)
+ if err != nil {
+ return "", err
+ }
+
+ return string(rBData), nil
+
+}
+
+func createQuota(quota []Quota, namespace string) (string, error) {
+ lcQuota := quota[0]
+
+ q := Resource{
+ ApiVersion: "v1",
+ Kind: "ResourceQuota",
+ MetaData: MetaDatas{
+ Name: lcQuota.MetaData.QuotaName,
+ Namespace: namespace,
+ },
+ Specification: Specs{
+ Hard: lcQuota.Specification,
+ },
+ }
+
+ qData, err := yaml.Marshal(&q)
+ if err != nil {
+ return "", err
+ }
+
+ return string(qData), nil
+
+}
+
+func createUserCSR(logicalcloud LogicalCloud) (string, error) {
+ KEYSIZE := 4096
+ userName := logicalcloud.Specification.User.UserName
+
+ key, err := rsa.GenerateKey(rand.Reader, KEYSIZE)
+ if err != nil {
+ return "", err
+ }
+
+ csrTemplate := x509.CertificateRequest{Subject: pkix.Name{CommonName: userName}}
+
+ csrCert, err := x509.CreateCertificateRequest(rand.Reader, &csrTemplate, key)
+ if err != nil {
+ return "", err
+ }
+
+ //Encode csr
+ csr := pem.EncodeToMemory(&pem.Block{
+ Type: "CERTIFICATE REQUEST",
+ Bytes: csrCert,
+ })
+
+ csrObj := Resource{
+ ApiVersion: "certificates.k8s.io/v1beta1",
+ Kind: "CertificateSigningRequest",
+ MetaData: MetaDatas{
+ Name: strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "-user-csr"}, ""),
+ Namespace: logicalcloud.Specification.NameSpace,
+ },
+ Specification: Specs{
+ Request: base64.StdEncoding.EncodeToString(csr),
+ Usages: []string{"digital signature", "key encipherment"},
+ },
+ }
+
+ csrData, err := yaml.Marshal(&csrObj)
+ if err != nil {
+ return "", err
+ }
+
+ return string(csrData), nil
+
+}
+
+// TODO:
+// Install istio
+// Store user key for user creation
+// Code to run kubectl commands for user
+// kubectl certificate approve lc1-user-cert
+// kubectl get csr lc1-user-cert -o jsonpath='{.status.certificate}' | base64 --decode > user.crt
+// kubectl config set-credentials user --client-certificate=<user.crt> --client-key=<user.key>
+// kubectl config set-context user-context --cluster=cluster-name --namespace=lc1 --user=user
+
+func CreateEtcdContext(logicalcloud LogicalCloud, clusterList []Cluster,
+ quotaList []Quota) error {
+
+ APP := "logical-cloud"
+ logicalCloudName := logicalcloud.MetaData.LogicalCloudName
+
+ //Resource Names
+ namespaceName := strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "+namespace"}, "")
+ roleName := strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "+role"}, "")
+ roleBindingName := strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "+roleBinding"}, "")
+ quotaName := strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "+quota"}, "")
+ csrName := strings.Join([]string{logicalcloud.MetaData.LogicalCloudName, "+CertificateSigningRequest"}, "")
+
+ // Get resources to be added
+ namespace, err := createNamespace(logicalcloud)
+ if err != nil {
+ return pkgerrors.Wrap(err, "Error Creating Namespace YAML for logical cloud")
+ }
+
+ role, err := createRole(logicalcloud)
+ if err != nil {
+ return pkgerrors.Wrap(err, "Error Creating Role YAML for logical cloud")
+ }
+
+ roleBinding, err := createRoleBinding(logicalcloud)
+ if err != nil {
+ return pkgerrors.Wrap(err, "Error Creating RoleBinding YAML for logical cloud")
+ }
+
+ quota, err := createQuota(quotaList, logicalcloud.Specification.NameSpace)
+ if err != nil {
+ return pkgerrors.Wrap(err, "Error Creating Quota YAML for logical cloud")
+ }
+
+ csr, err := createUserCSR(logicalcloud)
+ if err != nil {
+ return pkgerrors.Wrap(err, "Error Creating User CSR for logical cloud")
+ }
+
+ context := appcontext.AppContext{}
+ ctxVal, err := context.InitAppContext()
+ if err != nil {
+ return pkgerrors.Wrap(err, "Error creating AppContext")
+ }
+
+ fmt.Printf("%v\n", ctxVal)
+
+ handle, err := context.CreateCompositeApp()
+ if err != nil {
+ return pkgerrors.Wrap(err, "Error creating AppContext CompositeApp")
+ }
+
+ appHandle, err := context.AddApp(handle, APP)
+ if err != nil {
+ cleanuperr := context.DeleteCompositeApp()
+ if cleanuperr != nil {
+ log.Warn("Error cleaning AppContext CompositeApp create failure", log.Fields{
+ "logical-cloud": logicalCloudName,
+ })
+ }
+ return pkgerrors.Wrap(err, "Error adding App to AppContext")
+ }
+
+ // Iterate through cluster list and add all the clusters
+ for _, cluster := range clusterList {
+ clusterName := strings.Join([]string{cluster.Specification.ClusterProvider, "+", cluster.Specification.ClusterName}, "")
+ clusterHandle, err := context.AddCluster(appHandle, clusterName)
+
+ if err != nil {
+ cleanuperr := context.DeleteCompositeApp()
+ if cleanuperr != nil {
+ log.Warn("Error cleaning AppContext after add cluster failure", log.Fields{
+ "cluster-provider": cluster.Specification.ClusterProvider,
+ "cluster": cluster.Specification.ClusterName,
+ "logical-cloud": logicalCloudName,
+ })
+ }
+ return pkgerrors.Wrap(err, "Error adding Cluster to AppContext")
+ }
+
+ // Add namespace resource to each cluster
+ _, err = context.AddResource(clusterHandle, namespaceName, namespace)
+ if err != nil {
+ cleanuperr := context.DeleteCompositeApp()
+ if cleanuperr != nil {
+ log.Warn("Error cleaning AppContext after add namespace resource failure", log.Fields{
+ "cluster-provider": cluster.Specification.ClusterProvider,
+ "cluster": cluster.Specification.ClusterName,
+ "logical-cloud": logicalCloudName,
+ })
+ }
+ return pkgerrors.Wrap(err, "Error adding Namespace Resource to AppContext")
+ }
+
+ // Add csr resource to each cluster
+ _, err = context.AddResource(clusterHandle, csrName, csr)
+ if err != nil {
+ cleanuperr := context.DeleteCompositeApp()
+ if cleanuperr != nil {
+ log.Warn("Error cleaning AppContext after add CSR resource failure", log.Fields{
+ "cluster-provider": cluster.Specification.ClusterProvider,
+ "cluster": cluster.Specification.ClusterName,
+ "logical-cloud": logicalCloudName,
+ })
+ }
+ return pkgerrors.Wrap(err, "Error adding CSR Resource to AppContext")
+ }
+
+ // Add Role resource to each cluster
+ _, err = context.AddResource(clusterHandle, roleName, role)
+ if err != nil {
+ cleanuperr := context.DeleteCompositeApp()
+ if cleanuperr != nil {
+ log.Warn("Error cleaning AppContext after add role resource failure", log.Fields{
+ "cluster-provider": cluster.Specification.ClusterProvider,
+ "cluster": cluster.Specification.ClusterName,
+ "logical-cloud": logicalCloudName,
+ })
+ }
+ return pkgerrors.Wrap(err, "Error adding role Resource to AppContext")
+ }
+
+ // Add RoleBinding resource to each cluster
+ _, err = context.AddResource(clusterHandle, roleBindingName, roleBinding)
+ if err != nil {
+ cleanuperr := context.DeleteCompositeApp()
+ if cleanuperr != nil {
+ log.Warn("Error cleaning AppContext after add roleBinding resource failure", log.Fields{
+ "cluster-provider": cluster.Specification.ClusterProvider,
+ "cluster": cluster.Specification.ClusterName,
+ "logical-cloud": logicalCloudName,
+ })
+ }
+ return pkgerrors.Wrap(err, "Error adding roleBinding Resource to AppContext")
+ }
+
+ // Add quota resource to each cluster
+ _, err = context.AddResource(clusterHandle, quotaName, quota)
+ if err != nil {
+ cleanuperr := context.DeleteCompositeApp()
+ if cleanuperr != nil {
+ log.Warn("Error cleaning AppContext after add quota resource failure", log.Fields{
+ "cluster-provider": cluster.Specification.ClusterProvider,
+ "cluster": cluster.Specification.ClusterName,
+ "logical-cloud": logicalCloudName,
+ })
+ }
+ return pkgerrors.Wrap(err, "Error adding quota Resource to AppContext")
+ }
+
+ // Add Resource Order and Resource Dependency
+ resOrder, err := json.Marshal(map[string][]string{"resorder": []string{namespaceName, quotaName, csrName, roleName, roleBindingName}})
+ if err != nil {
+ return pkgerrors.Wrap(err, "Error creating resource order JSON")
+ }
+
+ resDependency, err := json.Marshal(map[string]map[string]string{"resdependency": map[string]string{namespaceName: "go",
+ quotaName: strings.Join([]string{"wait on ", namespaceName}, ""), csrName: strings.Join([]string{"wait on ", quotaName}, ""),
+ roleName: strings.Join([]string{"wait on ", csrName}, ""), roleBindingName: strings.Join([]string{"wait on ", roleName}, "")}})
+
+ if err != nil {
+ return pkgerrors.Wrap(err, "Error creating resource dependency JSON")
+ }
+
+ _, err = context.AddInstruction(clusterHandle, "resource", "order", string(resOrder))
+ if err != nil {
+ cleanuperr := context.DeleteCompositeApp()
+ if cleanuperr != nil {
+ log.Warn("Error cleaning AppContext after add instruction failure", log.Fields{
+ "cluster-provider": cluster.Specification.ClusterProvider,
+ "cluster": cluster.Specification.ClusterName,
+ "logical-cloud": logicalCloudName,
+ })
+ }
+ return pkgerrors.Wrap(err, "Error adding instruction order to AppContext")
+ }
+
+ _, err = context.AddInstruction(clusterHandle, "resource", "dependency", string(resDependency))
+ if err != nil {
+ cleanuperr := context.DeleteCompositeApp()
+ if cleanuperr != nil {
+ log.Warn("Error cleaning AppContext after add instruction failure", log.Fields{
+ "cluster-provider": cluster.Specification.ClusterProvider,
+ "cluster": cluster.Specification.ClusterName,
+ "logical-cloud": logicalCloudName,
+ })
+ }
+ return pkgerrors.Wrap(err, "Error adding instruction dependency to AppContext")
+ }
+
+ }
+
+ return nil
+
+}
diff --git a/src/dcm/pkg/module/logicalcloud.go b/src/dcm/pkg/module/logicalcloud.go
index 9fb1b6fb..51ee387d 100644
--- a/src/dcm/pkg/module/logicalcloud.go
+++ b/src/dcm/pkg/module/logicalcloud.go
@@ -12,280 +12,277 @@
* 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 module
import (
- "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/db"
- "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module"
+ "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/db"
+ "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module"
- pkgerrors "github.com/pkg/errors"
+ pkgerrors "github.com/pkg/errors"
)
// LogicalCloud contains the parameters needed for a Logical Cloud
type LogicalCloud struct {
- MetaData MetaDataList `json:"metadata"`
- Specification Spec `json:"spec"`
+ MetaData MetaDataList `json:"metadata"`
+ Specification Spec `json:"spec"`
}
-
// MetaData contains the parameters needed for metadata
type MetaDataList struct {
- LogicalCloudName string `json:"name"`
- Description string `json:"description"`
- UserData1 string `json:"userData1"`
- UserData2 string `json:"userData2"`
+ LogicalCloudName string `json:"name"`
+ Description string `json:"description"`
+ UserData1 string `json:"userData1"`
+ UserData2 string `json:"userData2"`
}
// Spec contains the parameters needed for spec
type Spec struct {
- NameSpace string `json:"namespace"`
- User UserData `json:"user"`
-
+ NameSpace string `json:"namespace"`
+ User UserData `json:"user"`
}
// UserData contains the parameters needed for user
type UserData struct {
- UserName string `json:"user-name"`
- Type string `json:"type"`
- UserPermissions []UserPerm `json:"user-permissions"`
+ UserName string `json:"user-name"`
+ Type string `json:"type"`
+ UserPermissions []UserPerm `json:"user-permissions"`
}
// UserPerm contains the parameters needed for user permissions
type UserPerm struct {
- PermName string `json:"permission-name"`
- APIGroups []string `json:"apiGroups"`
- Resources []string `json:"resources"`
- Verbs []string `json:"verbs"`
+ PermName string `json:"permission-name"`
+ APIGroups []string `json:"apiGroups"`
+ Resources []string `json:"resources"`
+ Verbs []string `json:"verbs"`
}
// LogicalCloudKey is the key structure that is used in the database
type LogicalCloudKey struct {
- Project string `json:"project"`
- LogicalCloudName string `json:"logical-cloud-name"`
+ Project string `json:"project"`
+ LogicalCloudName string `json:"logical-cloud-name"`
}
// LogicalCloudManager is an interface that exposes the connection
// functionality
type LogicalCloudManager interface {
- Create(project string, c LogicalCloud) (LogicalCloud, error)
- Get(project, name string) (LogicalCloud, error)
- GetAll(project string) ([]LogicalCloud, error)
- Delete(project, name string) error
- Update(project, name string, c LogicalCloud) (LogicalCloud, error)
-
+ Create(project string, c LogicalCloud) (LogicalCloud, error)
+ Get(project, name string) (LogicalCloud, error)
+ GetAll(project string) ([]LogicalCloud, error)
+ Delete(project, name string) error
+ Update(project, name string, c LogicalCloud) (LogicalCloud, error)
}
// Interface facilitates unit testing by mocking functions
type Utility interface {
- DBInsert(storeName string, key db.Key, query interface{}, meta string, c interface{}) error
- DBFind(storeName string, key db.Key, meta string) ([][]byte, error)
- DBUnmarshal(value []byte, out interface{}) error
- DBRemove(storeName string, key db.Key) error
- CheckProject(project string) error
- CheckLogicalCloud(project, logicalCloud string) error
+ DBInsert(storeName string, key db.Key, query interface{}, meta string, c interface{}) error
+ DBFind(storeName string, key db.Key, meta string) ([][]byte, error)
+ DBUnmarshal(value []byte, out interface{}) error
+ DBRemove(storeName string, key db.Key) error
+ CheckProject(project string) error
+ CheckLogicalCloud(project, logicalCloud string) error
}
// LogicalCloudClient implements the LogicalCloudManager
// It will also be used to maintain some localized state
type LogicalCloudClient struct {
- storeName string
- tagMeta string
- util Utility
+ storeName string
+ tagMeta string
+ util Utility
}
// Added for unit testing; implements Utility interface
-type DBService struct {}
+type DBService struct{}
// LogicalCloudClient returns an instance of the LogicalCloudClient
// which implements the LogicalCloudManager
func NewLogicalCloudClient() *LogicalCloudClient {
- service := DBService{}
- return &LogicalCloudClient{
- storeName: "orchestrator",
- tagMeta: "logicalcloud",
- util: service,
- }
+ service := DBService{}
+ return &LogicalCloudClient{
+ storeName: "orchestrator",
+ tagMeta: "logicalcloud",
+ util: service,
+ }
}
// Create entry for the logical cloud resource in the database
func (v *LogicalCloudClient) Create(project string, c LogicalCloud) (LogicalCloud, error) {
- //Construct key consisting of name
- key := LogicalCloudKey{
- Project: project,
- LogicalCloudName: c.MetaData.LogicalCloudName,
- }
-
- //Check if project exists
- err := v.util.CheckProject(project)
- if err != nil {
- return LogicalCloud{}, pkgerrors.New("Unable to find the project")
- }
-
- //Check if this Logical Cloud already exists
- _, err = v.Get(project, c.MetaData.LogicalCloudName)
- if err == nil {
- return LogicalCloud{}, pkgerrors.New("Logical Cloud already exists")
- }
-
- err = v.util.DBInsert(v.storeName, key, nil, v.tagMeta, c)
- if err != nil {
- return LogicalCloud{}, pkgerrors.Wrap(err, "Creating DB Entry")
- }
-
- return c, nil
+ //Construct key consisting of name
+ key := LogicalCloudKey{
+ Project: project,
+ LogicalCloudName: c.MetaData.LogicalCloudName,
+ }
+
+ //Check if project exists
+ err := v.util.CheckProject(project)
+ if err != nil {
+ return LogicalCloud{}, pkgerrors.New("Unable to find the project")
+ }
+
+ //Check if this Logical Cloud already exists
+ _, err = v.Get(project, c.MetaData.LogicalCloudName)
+ if err == nil {
+ return LogicalCloud{}, pkgerrors.New("Logical Cloud already exists")
+ }
+
+ err = v.util.DBInsert(v.storeName, key, nil, v.tagMeta, c)
+ if err != nil {
+ return LogicalCloud{}, pkgerrors.Wrap(err, "Creating DB Entry")
+ }
+
+ return c, nil
}
// Get returns Logical Cloud corresponding to logical cloud name
func (v *LogicalCloudClient) Get(project, logicalCloudName string) (LogicalCloud, error) {
- //Construct the composite key to select the entry
- key := LogicalCloudKey{
- Project: project,
- LogicalCloudName: logicalCloudName,
- }
- value, err := v.util.DBFind(v.storeName, key, v.tagMeta)
- if err != nil {
- return LogicalCloud{}, pkgerrors.Wrap(err, "Get Logical Cloud")
- }
-
- //value is a byte array
- if value != nil {
- lc := LogicalCloud{}
- err = v.util.DBUnmarshal(value[0], &lc)
- if err != nil {
- return LogicalCloud{}, pkgerrors.Wrap(err, "Unmarshaling value")
- }
- return lc, nil
- }
-
- return LogicalCloud{}, pkgerrors.New("Error getting Logical Cloud")
+ //Construct the composite key to select the entry
+ key := LogicalCloudKey{
+ Project: project,
+ LogicalCloudName: logicalCloudName,
+ }
+ value, err := v.util.DBFind(v.storeName, key, v.tagMeta)
+ if err != nil {
+ return LogicalCloud{}, pkgerrors.Wrap(err, "Get Logical Cloud")
+ }
+
+ //value is a byte array
+ if value != nil {
+ lc := LogicalCloud{}
+ err = v.util.DBUnmarshal(value[0], &lc)
+ if err != nil {
+ return LogicalCloud{}, pkgerrors.Wrap(err, "Unmarshaling value")
+ }
+ return lc, nil
+ }
+
+ return LogicalCloud{}, pkgerrors.New("Error getting Logical Cloud")
}
// GetAll returns Logical Clouds in the project
func (v *LogicalCloudClient) GetAll(project string) ([]LogicalCloud, error) {
- //Construct the composite key to select the entry
- key := LogicalCloudKey{
- Project: project,
- LogicalCloudName: "",
- }
-
- var resp []LogicalCloud
- values, err := v.util.DBFind(v.storeName, key, v.tagMeta)
- if err != nil {
- return []LogicalCloud{}, pkgerrors.Wrap(err, "Get Logical Clouds")
- }
-
- for _, value := range values {
- lc := LogicalCloud{}
- err = v.util.DBUnmarshal(value, &lc)
- if err != nil {
- return []LogicalCloud{}, pkgerrors.Wrap(err, "Unmarshaling values")
- }
- resp = append(resp, lc)
- }
-
- return resp, nil
+ //Construct the composite key to select the entry
+ key := LogicalCloudKey{
+ Project: project,
+ LogicalCloudName: "",
+ }
+
+ var resp []LogicalCloud
+ values, err := v.util.DBFind(v.storeName, key, v.tagMeta)
+ if err != nil {
+ return []LogicalCloud{}, pkgerrors.Wrap(err, "Get Logical Clouds")
+ }
+
+ for _, value := range values {
+ lc := LogicalCloud{}
+ err = v.util.DBUnmarshal(value, &lc)
+ if err != nil {
+ return []LogicalCloud{}, pkgerrors.Wrap(err, "Unmarshaling values")
+ }
+ resp = append(resp, lc)
+ }
+
+ return resp, nil
}
// Delete the Logical Cloud entry from database
func (v *LogicalCloudClient) Delete(project, logicalCloudName string) error {
- //Construct the composite key to select the entry
- key := LogicalCloudKey{
- Project: project,
- LogicalCloudName: logicalCloudName,
- }
- err := v.util.DBRemove(v.storeName, key)
- if err != nil {
- return pkgerrors.Wrap(err, "Delete Logical Cloud")
- }
-
- return nil
+ //Construct the composite key to select the entry
+ key := LogicalCloudKey{
+ Project: project,
+ LogicalCloudName: logicalCloudName,
+ }
+ err := v.util.DBRemove(v.storeName, key)
+ if err != nil {
+ return pkgerrors.Wrap(err, "Delete Logical Cloud")
+ }
+
+ return nil
}
// Update an entry for the Logical Cloud in the database
func (v *LogicalCloudClient) Update(project, logicalCloudName string, c LogicalCloud) (LogicalCloud, error) {
- key := LogicalCloudKey{
- Project: project,
- LogicalCloudName: logicalCloudName,
- }
- // Check for mismatch, logicalCloudName and payload logical cloud name
- if c.MetaData.LogicalCloudName != logicalCloudName {
- return LogicalCloud{}, pkgerrors.New("Update Error - Logical Cloud name mismatch")
- }
- //Check if this Logical Cloud exists
- _, err := v.Get(project, logicalCloudName)
- if err != nil {
- return LogicalCloud{}, pkgerrors.New("Update Error - Logical Cloud doesn't exist")
- }
- err = v.util.DBInsert(v.storeName, key, nil, v.tagMeta, c)
- if err != nil {
- return LogicalCloud{}, pkgerrors.Wrap(err, "Updating DB Entry")
- }
- return c, nil
+ key := LogicalCloudKey{
+ Project: project,
+ LogicalCloudName: logicalCloudName,
+ }
+ // Check for mismatch, logicalCloudName and payload logical cloud name
+ if c.MetaData.LogicalCloudName != logicalCloudName {
+ return LogicalCloud{}, pkgerrors.New("Update Error - Logical Cloud name mismatch")
+ }
+ //Check if this Logical Cloud exists
+ _, err := v.Get(project, logicalCloudName)
+ if err != nil {
+ return LogicalCloud{}, pkgerrors.New("Update Error - Logical Cloud doesn't exist")
+ }
+ err = v.util.DBInsert(v.storeName, key, nil, v.tagMeta, c)
+ if err != nil {
+ return LogicalCloud{}, pkgerrors.Wrap(err, "Updating DB Entry")
+ }
+ return c, nil
}
func (d DBService) DBInsert(storeName string, key db.Key, query interface{}, meta string, c interface{}) error {
- err := db.DBconn.Insert(storeName, key, nil, meta, c)
- if err != nil {
- return pkgerrors.Wrap(err, "Creating DB Entry")
- }
+ err := db.DBconn.Insert(storeName, key, nil, meta, c)
+ if err != nil {
+ return pkgerrors.Wrap(err, "Creating DB Entry")
+ }
- return nil
+ return nil
}
func (d DBService) DBFind(storeName string, key db.Key, meta string) ([][]byte, error) {
- value, err := db.DBconn.Find(storeName, key, meta)
- if err != nil {
- return [][]byte{}, pkgerrors.Wrap(err, "Get Resource")
- }
+ value, err := db.DBconn.Find(storeName, key, meta)
+ if err != nil {
+ return [][]byte{}, pkgerrors.Wrap(err, "Get Resource")
+ }
- return value, nil
+ return value, nil
}
func (d DBService) DBUnmarshal(value []byte, out interface{}) error {
- err := db.DBconn.Unmarshal(value, out)
- if err != nil {
- return pkgerrors.Wrap(err, "Unmarshaling Value")
- }
+ err := db.DBconn.Unmarshal(value, out)
+ if err != nil {
+ return pkgerrors.Wrap(err, "Unmarshaling Value")
+ }
- return nil
+ return nil
}
func (d DBService) DBRemove(storeName string, key db.Key) error {
- err := db.DBconn.Remove(storeName, key)
- if err != nil {
- return pkgerrors.Wrap(err, "Delete Resource")
- }
+ err := db.DBconn.Remove(storeName, key)
+ if err != nil {
+ return pkgerrors.Wrap(err, "Delete Resource")
+ }
- return nil
+ return nil
}
func (d DBService) CheckProject(project string) error {
- // Check if project exists
- _, err := module.NewProjectClient().GetProject(project)
- if err != nil {
- return pkgerrors.New("Unable to find the project")
- }
+ // Check if project exists
+ _, err := module.NewProjectClient().GetProject(project)
+ if err != nil {
+ return pkgerrors.New("Unable to find the project")
+ }
- return nil
+ return nil
}
func (d DBService) CheckLogicalCloud(project, logicalCloud string) error {
- // Check if logical cloud exists
- _, err := NewLogicalCloudClient().Get(project, logicalCloud)
- if err != nil {
- return pkgerrors.New("Unable to find the logical cloud")
- }
+ // Check if logical cloud exists
+ _, err := NewLogicalCloudClient().Get(project, logicalCloud)
+ if err != nil {
+ return pkgerrors.New("Unable to find the logical cloud")
+ }
- return nil
+ return nil
}
diff --git a/src/ncm/pkg/module/types/module_definitions.go b/src/ncm/pkg/module/types/module_definitions.go
index 0dd657ac..0c85cdb1 100644
--- a/src/ncm/pkg/module/types/module_definitions.go
+++ b/src/ncm/pkg/module/types/module_definitions.go
@@ -20,5 +20,5 @@ type ClientDbInfo struct {
StoreName string // name of the mongodb collection to use for client documents
TagMeta string // attribute key name for the json data of a client document
TagContent string // attribute key name for the file data of a client document
- TagContext string // attribute key name for context object in App Context
+ TagState string // attribute key name for context object in App Context
}
diff --git a/src/ncm/pkg/networkintents/network.go b/src/ncm/pkg/networkintents/network.go
index de8ee504..58480cc8 100644
--- a/src/ncm/pkg/networkintents/network.go
+++ b/src/ncm/pkg/networkintents/network.go
@@ -22,6 +22,7 @@ import (
nettypes "github.com/onap/multicloud-k8s/src/ncm/pkg/networkintents/types"
"github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/db"
mtypes "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module/types"
+ "github.com/onap/multicloud-k8s/src/orchestrator/pkg/state"
pkgerrors "github.com/pkg/errors"
)
@@ -89,11 +90,25 @@ func (v *NetworkClient) CreateNetwork(p Network, clusterProvider, cluster string
NetworkName: p.Metadata.Name,
}
- //Check if cluster exists
- _, err := clusterPkg.NewClusterClient().GetCluster(clusterProvider, cluster)
+ //Check if cluster exists and in a state for adding network intents
+ s, err := clusterPkg.NewClusterClient().GetClusterState(clusterProvider, cluster)
if err != nil {
return Network{}, pkgerrors.New("Unable to find the cluster")
}
+ switch s.State {
+ case state.StateEnum.Approved:
+ return Network{}, pkgerrors.Errorf("Cluster is in an invalid state: " + cluster + " " + state.StateEnum.Approved)
+ case state.StateEnum.Terminated:
+ break
+ case state.StateEnum.Created:
+ break
+ case state.StateEnum.Applied:
+ return Network{}, pkgerrors.Errorf("Existing cluster network intents must be terminated before creating: " + cluster)
+ case state.StateEnum.Instantiated:
+ return Network{}, pkgerrors.Errorf("Cluster is in an invalid state: " + cluster + " " + state.StateEnum.Instantiated)
+ default:
+ return Network{}, pkgerrors.Errorf("Cluster is in an invalid state: " + cluster + " " + s.State)
+ }
//Check if this Network already exists
_, err = v.GetNetwork(p.Metadata.Name, clusterProvider, cluster)
@@ -167,6 +182,25 @@ func (v *NetworkClient) GetNetworks(clusterProvider, cluster string) ([]Network,
// Delete the Network from database
func (v *NetworkClient) DeleteNetwork(name, clusterProvider, cluster string) error {
+ // verify cluster is in a state where network intent can be deleted
+ s, err := clusterPkg.NewClusterClient().GetClusterState(clusterProvider, cluster)
+ if err != nil {
+ return pkgerrors.New("Unable to find the cluster")
+ }
+ switch s.State {
+ case state.StateEnum.Approved:
+ return pkgerrors.Errorf("Cluster is in an invalid state: " + cluster + " " + state.StateEnum.Approved)
+ case state.StateEnum.Terminated:
+ break
+ case state.StateEnum.Created:
+ break
+ case state.StateEnum.Applied:
+ return pkgerrors.Errorf("Cluster network intents must be terminated before deleting: " + cluster)
+ case state.StateEnum.Instantiated:
+ return pkgerrors.Errorf("Cluster is in an invalid state: " + cluster + " " + state.StateEnum.Instantiated)
+ default:
+ return pkgerrors.Errorf("Cluster is in an invalid state: " + cluster + " " + s.State)
+ }
//Construct key and tag to select the entry
key := NetworkKey{
@@ -175,7 +209,7 @@ func (v *NetworkClient) DeleteNetwork(name, clusterProvider, cluster string) err
NetworkName: name,
}
- err := db.DBconn.Remove(v.db.StoreName, key)
+ err = db.DBconn.Remove(v.db.StoreName, key)
if err != nil {
return pkgerrors.Wrap(err, "Delete Network Entry;")
}
diff --git a/src/ncm/pkg/networkintents/providernet.go b/src/ncm/pkg/networkintents/providernet.go
index 072e07f6..dbe6e46c 100644
--- a/src/ncm/pkg/networkintents/providernet.go
+++ b/src/ncm/pkg/networkintents/providernet.go
@@ -22,6 +22,7 @@ import (
nettypes "github.com/onap/multicloud-k8s/src/ncm/pkg/networkintents/types"
"github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/db"
mtypes "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module/types"
+ "github.com/onap/multicloud-k8s/src/orchestrator/pkg/state"
pkgerrors "github.com/pkg/errors"
)
@@ -84,6 +85,26 @@ func NewProviderNetClient() *ProviderNetClient {
// CreateProviderNet - create a new ProviderNet
func (v *ProviderNetClient) CreateProviderNet(p ProviderNet, clusterProvider, cluster string, exists bool) (ProviderNet, error) {
+ // verify cluster exists and in state to add provider networks
+ s, err := clusterPkg.NewClusterClient().GetClusterState(clusterProvider, cluster)
+ if err != nil {
+ return ProviderNet{}, pkgerrors.New("Unable to find the cluster")
+ }
+ switch s.State {
+ case state.StateEnum.Approved:
+ return ProviderNet{}, pkgerrors.Wrap(err, "Cluster is in an invalid state: "+cluster+" "+state.StateEnum.Approved)
+ case state.StateEnum.Terminated:
+ break
+ case state.StateEnum.Created:
+ break
+ case state.StateEnum.Applied:
+ return ProviderNet{}, pkgerrors.Wrap(err, "Existing cluster provider network intents must be terminated before creating: "+cluster)
+ case state.StateEnum.Instantiated:
+ return ProviderNet{}, pkgerrors.Wrap(err, "Cluster is in an invalid state: "+cluster+" "+state.StateEnum.Instantiated)
+ default:
+ return ProviderNet{}, pkgerrors.Wrap(err, "Cluster is in an invalid state: "+cluster+" "+s.State)
+ }
+
//Construct key and tag to select the entry
key := ProviderNetKey{
ClusterProviderName: clusterProvider,
@@ -91,12 +112,6 @@ func (v *ProviderNetClient) CreateProviderNet(p ProviderNet, clusterProvider, cl
ProviderNetName: p.Metadata.Name,
}
- //Check if cluster exists
- _, err := clusterPkg.NewClusterClient().GetCluster(clusterProvider, cluster)
- if err != nil {
- return ProviderNet{}, pkgerrors.New("Unable to find the cluster")
- }
-
//Check if this ProviderNet already exists
_, err = v.GetProviderNet(p.Metadata.Name, clusterProvider, cluster)
if err == nil && !exists {
@@ -169,6 +184,25 @@ func (v *ProviderNetClient) GetProviderNets(clusterProvider, cluster string) ([]
// Delete the ProviderNet from database
func (v *ProviderNetClient) DeleteProviderNet(name, clusterProvider, cluster string) error {
+ // verify cluster is in a state where provider network intent can be deleted
+ s, err := clusterPkg.NewClusterClient().GetClusterState(clusterProvider, cluster)
+ if err != nil {
+ return pkgerrors.New("Unable to find the cluster")
+ }
+ switch s.State {
+ case state.StateEnum.Approved:
+ return pkgerrors.Wrap(err, "Cluster is in an invalid state: "+cluster+" "+state.StateEnum.Approved)
+ case state.StateEnum.Terminated:
+ break
+ case state.StateEnum.Created:
+ break
+ case state.StateEnum.Applied:
+ return pkgerrors.Wrap(err, "Cluster provider network intents must be terminated before deleting: "+cluster)
+ case state.StateEnum.Instantiated:
+ return pkgerrors.Wrap(err, "Cluster is in an invalid state: "+cluster+" "+state.StateEnum.Instantiated)
+ default:
+ return pkgerrors.Wrap(err, "Cluster is in an invalid state: "+cluster+" "+s.State)
+ }
//Construct key and tag to select the entry
key := ProviderNetKey{
@@ -177,7 +211,7 @@ func (v *ProviderNetClient) DeleteProviderNet(name, clusterProvider, cluster str
ProviderNetName: name,
}
- err := db.DBconn.Remove(v.db.StoreName, key)
+ err = db.DBconn.Remove(v.db.StoreName, key)
if err != nil {
return pkgerrors.Wrap(err, "Delete ProviderNet Entry;")
}
diff --git a/src/ncm/pkg/scheduler/scheduler.go b/src/ncm/pkg/scheduler/scheduler.go
index 4886a67e..8ced68b8 100644
--- a/src/ncm/pkg/scheduler/scheduler.go
+++ b/src/ncm/pkg/scheduler/scheduler.go
@@ -27,6 +27,7 @@ import (
"github.com/onap/multicloud-k8s/src/orchestrator/pkg/grpc/installappclient"
"github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/db"
log "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/logutils"
+ "github.com/onap/multicloud-k8s/src/orchestrator/pkg/state"
pkgerrors "github.com/pkg/errors"
)
@@ -51,7 +52,7 @@ func NewSchedulerClient() *SchedulerClient {
StoreName: "cluster",
TagMeta: "clustermetadata",
TagContent: "clustercontent",
- TagContext: "clustercontext",
+ TagState: "stateInfo",
},
}
}
@@ -59,9 +60,23 @@ func NewSchedulerClient() *SchedulerClient {
// Apply Network Intents associated with a cluster
func (v *SchedulerClient) ApplyNetworkIntents(clusterProvider, cluster string) error {
- _, _, err := clusterPkg.NewClusterClient().GetClusterContext(clusterProvider, cluster)
- if err == nil {
- return pkgerrors.Errorf("Cluster network intents have already been applied: %v, %v", clusterProvider, cluster)
+ s, err := clusterPkg.NewClusterClient().GetClusterState(clusterProvider, cluster)
+ if err != nil {
+ return pkgerrors.Errorf("Error finding cluster: %v %v", clusterProvider, cluster)
+ }
+ switch s.State {
+ case state.StateEnum.Approved:
+ return pkgerrors.Wrap(err, "Cluster is in an invalid state: "+cluster+" "+state.StateEnum.Approved)
+ case state.StateEnum.Terminated:
+ break
+ case state.StateEnum.Created:
+ break
+ case state.StateEnum.Applied:
+ return nil
+ case state.StateEnum.Instantiated:
+ return pkgerrors.Wrap(err, "Cluster is in an invalid state: "+cluster+" "+state.StateEnum.Instantiated)
+ default:
+ return pkgerrors.Wrap(err, "Cluster is in an invalid state: "+cluster+" "+s.State)
}
// Make an app context for the network intent resources
@@ -135,12 +150,17 @@ func (v *SchedulerClient) ApplyNetworkIntents(clusterProvider, cluster string) e
return pkgerrors.Wrap(err, "Error adding Cluster to AppContext")
}
- // save the context in the cluster db record
+ // update the StateInfo in the cluster db record
key := clusterPkg.ClusterKey{
ClusterProviderName: clusterProvider,
ClusterName: cluster,
}
- err = db.DBconn.Insert(v.db.StoreName, key, nil, v.db.TagContext, ctxVal)
+ stateInfo := state.StateInfo{
+ State: state.StateEnum.Applied,
+ ContextId: ctxVal.(string),
+ }
+
+ err = db.DBconn.Insert(v.db.StoreName, key, nil, v.db.TagState, stateInfo)
if err != nil {
cleanuperr := ac.DeleteCompositeApp()
if cleanuperr != nil {
@@ -149,7 +169,7 @@ func (v *SchedulerClient) ApplyNetworkIntents(clusterProvider, cluster string) e
"cluster": cluster,
})
}
- return pkgerrors.Wrap(err, "Error adding AppContext to DB")
+ return pkgerrors.Wrap(err, "Error updating the stateInfo of cluster: "+cluster)
}
// call resource synchronizer to instantiate the CRs in the cluster
@@ -163,37 +183,55 @@ func (v *SchedulerClient) ApplyNetworkIntents(clusterProvider, cluster string) e
// Terminate Network Intents associated with a cluster
func (v *SchedulerClient) TerminateNetworkIntents(clusterProvider, cluster string) error {
- context, ctxVal, err := clusterPkg.NewClusterClient().GetClusterContext(clusterProvider, cluster)
+ s, err := clusterPkg.NewClusterClient().GetClusterState(clusterProvider, cluster)
if err != nil {
- return pkgerrors.Wrapf(err, "Error finding AppContext for cluster: %v, %v", clusterProvider, cluster)
+ return pkgerrors.Wrapf(err, "Error finding StateInfo for cluster: %v, %v", clusterProvider, cluster)
+ }
+ switch s.State {
+ case state.StateEnum.Approved:
+ return pkgerrors.Wrap(err, "Cluster is in an invalid state: "+cluster+" "+state.StateEnum.Approved)
+ case state.StateEnum.Terminated:
+ return nil
+ case state.StateEnum.Created:
+ return pkgerrors.Wrap(err, "Cluster network intents have not been applied: "+cluster)
+ case state.StateEnum.Applied:
+ break
+ case state.StateEnum.Instantiated:
+ return pkgerrors.Wrap(err, "Cluster is in an invalid state: "+cluster+" "+state.StateEnum.Instantiated)
+ default:
+ return pkgerrors.Wrap(err, "Cluster is in an invalid state: "+cluster+" "+s.State)
}
// call resource synchronizer to terminate the CRs in the cluster
- err = installappclient.InvokeUninstallApp(ctxVal)
+ err = installappclient.InvokeUninstallApp(s.ContextId)
if err != nil {
return err
}
// remove the app context
- cleanuperr := context.DeleteCompositeApp()
- if cleanuperr != nil {
- log.Warn("Error deleted AppContext", log.Fields{
- "cluster-provider": clusterProvider,
- "cluster": cluster,
- })
+ context, err := state.GetAppContextFromStateInfo(s)
+ if err != nil {
+ return pkgerrors.Wrap(err, "Error getting appcontext from cluster StateInfo : "+clusterProvider+" "+cluster)
+ }
+ err = context.DeleteCompositeApp()
+ if err != nil {
+ return pkgerrors.Wrap(err, "Error deleting appcontext of cluster : "+clusterProvider+" "+cluster)
}
- // remove the app context field from the cluster db record
+ // update StateInfo
key := clusterPkg.ClusterKey{
ClusterProviderName: clusterProvider,
ClusterName: cluster,
}
- err = db.DBconn.RemoveTag(v.db.StoreName, key, v.db.TagContext)
+ stateInfo := state.StateInfo{
+ State: state.StateEnum.Terminated,
+ ContextId: "",
+ }
+
+ err = db.DBconn.Insert(v.db.StoreName, key, nil, v.db.TagState, stateInfo)
if err != nil {
- log.Warn("Error removing AppContext from Cluster document", log.Fields{
- "cluster-provider": clusterProvider,
- "cluster": cluster,
- })
+ return pkgerrors.Wrap(err, "Error updating the stateInfo of cluster: "+cluster)
}
+
return nil
}
diff --git a/src/orchestrator/api/api.go b/src/orchestrator/api/api.go
index 097b9ab3..72b444b7 100644
--- a/src/orchestrator/api/api.go
+++ b/src/orchestrator/api/api.go
@@ -56,6 +56,7 @@ func NewRouter(projectClient moduleLib.ProjectManager,
client: ControllerClient,
}
router.HandleFunc("/projects", projHandler.createHandler).Methods("POST")
+ router.HandleFunc("/projects/{project-name}", projHandler.updateHandler).Methods("PUT")
router.HandleFunc("/projects/{project-name}", projHandler.getHandler).Methods("GET")
router.HandleFunc("/projects", projHandler.getHandler).Methods("GET")
router.HandleFunc("/projects/{project-name}", projHandler.deleteHandler).Methods("DELETE")
@@ -188,6 +189,8 @@ func NewRouter(projectClient moduleLib.ProjectManager,
client: instantiationClient,
}
+ router.HandleFunc("/projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/approve", instantiationHandler.approveHandler).Methods("POST")
+ router.HandleFunc("/projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/terminate", instantiationHandler.terminateHandler).Methods("POST")
router.HandleFunc("/projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/instantiate", instantiationHandler.instantiateHandler).Methods("POST")
router.HandleFunc("/projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/terminate", instantiationHandler.terminateHandler).Methods("POST")
router.HandleFunc("/projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/status", instantiationHandler.statusHandler).Methods("GET")
diff --git a/src/orchestrator/api/instantiation_handler.go b/src/orchestrator/api/instantiation_handler.go
index ce50e5b8..eeac8a00 100644
--- a/src/orchestrator/api/instantiation_handler.go
+++ b/src/orchestrator/api/instantiation_handler.go
@@ -31,6 +31,23 @@ type instantiationHandler struct {
client moduleLib.InstantiationManager
}
+func (h instantiationHandler) approveHandler(w http.ResponseWriter, r *http.Request) {
+
+ vars := mux.Vars(r)
+ p := vars["project-name"]
+ ca := vars["composite-app-name"]
+ v := vars["composite-app-version"]
+ di := vars["deployment-intent-group-name"]
+
+ iErr := h.client.Approve(p, ca, v, di)
+ if iErr != nil {
+ http.Error(w, iErr.Error(), http.StatusInternalServerError)
+ return
+ }
+ w.WriteHeader(http.StatusAccepted)
+
+}
+
func (h instantiationHandler) instantiateHandler(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
diff --git a/src/orchestrator/api/projecthandler.go b/src/orchestrator/api/projecthandler.go
index 09b24096..83211b64 100644
--- a/src/orchestrator/api/projecthandler.go
+++ b/src/orchestrator/api/projecthandler.go
@@ -54,7 +54,7 @@ func (h projectHandler) createHandler(w http.ResponseWriter, r *http.Request) {
return
}
- ret, err := h.client.CreateProject(p)
+ ret, err := h.client.CreateProject(p, false)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
@@ -69,6 +69,50 @@ func (h projectHandler) createHandler(w http.ResponseWriter, r *http.Request) {
}
}
+// Update handles updating the Project entry in the database
+func (h projectHandler) updateHandler(w http.ResponseWriter, r *http.Request) {
+ vars := mux.Vars(r)
+ name := vars["project-name"]
+
+ var p moduleLib.Project
+
+ err := json.NewDecoder(r.Body).Decode(&p)
+ switch {
+ case err == io.EOF:
+ http.Error(w, "Empty body", http.StatusBadRequest)
+ return
+ case err != nil:
+ http.Error(w, err.Error(), http.StatusUnprocessableEntity)
+ return
+ }
+
+ // Name is required.
+ if p.MetaData.Name == "" {
+ http.Error(w, "Missing name in PUT request", http.StatusBadRequest)
+ return
+ }
+
+ // Name in URL should match name in body
+ if p.MetaData.Name != name {
+ http.Error(w, "Mismatched name in PUT request", http.StatusBadRequest)
+ return
+ }
+
+ ret, err := h.client.CreateProject(p, true)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ w.Header().Set("Content-Type", "application/json")
+ w.WriteHeader(http.StatusOK)
+ err = json.NewEncoder(w).Encode(ret)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+}
+
// Get handles GET operations on a particular Project Name
// Returns a Project
func (h projectHandler) getHandler(w http.ResponseWriter, r *http.Request) {
diff --git a/src/orchestrator/api/projecthandler_test.go b/src/orchestrator/api/projecthandler_test.go
index dae87e2b..6810099f 100644
--- a/src/orchestrator/api/projecthandler_test.go
+++ b/src/orchestrator/api/projecthandler_test.go
@@ -40,7 +40,7 @@ type mockProjectManager struct {
Err error
}
-func (m *mockProjectManager) CreateProject(inp moduleLib.Project) (moduleLib.Project, error) {
+func (m *mockProjectManager) CreateProject(inp moduleLib.Project, exists bool) (moduleLib.Project, error) {
if m.Err != nil {
return moduleLib.Project{}, m.Err
}
@@ -144,6 +144,99 @@ func TestProjectCreateHandler(t *testing.T) {
}
}
+func TestProjectUpdateHandler(t *testing.T) {
+ testCases := []struct {
+ label, name string
+ reader io.Reader
+ expected moduleLib.Project
+ expectedCode int
+ projectClient *mockProjectManager
+ }{
+ {
+ label: "Missing Project Name in Request Body",
+ name: "testProject",
+ reader: bytes.NewBuffer([]byte(`{
+ "description":"test description"
+ }`)),
+ expectedCode: http.StatusBadRequest,
+ projectClient: &mockProjectManager{},
+ },
+ {
+ label: "Missing Body Failure",
+ name: "testProject",
+ expectedCode: http.StatusBadRequest,
+ projectClient: &mockProjectManager{},
+ },
+ {
+ label: "Mismatched Name Failure",
+ name: "testProject",
+ expectedCode: http.StatusBadRequest,
+ reader: bytes.NewBuffer([]byte(`{
+ "metadata" : {
+ "name": "testProjectNameMismatch",
+ "description": "Test Project used for unit testing"
+ }
+ }`)),
+ projectClient: &mockProjectManager{},
+ },
+ {
+ label: "Update Project",
+ name: "testProject",
+ expectedCode: http.StatusOK,
+ reader: bytes.NewBuffer([]byte(`{
+ "metadata" : {
+ "name": "testProject",
+ "description": "Test Project used for unit testing"
+ }
+ }`)),
+ expected: moduleLib.Project{
+ MetaData: moduleLib.ProjectMetaData{
+ Name: "testProject",
+ Description: "Test Project used for unit testing",
+ UserData1: "update data1",
+ UserData2: "update data2",
+ },
+ },
+ projectClient: &mockProjectManager{
+ //Items that will be returned by the mocked Client
+ Items: []moduleLib.Project{
+ {
+ MetaData: moduleLib.ProjectMetaData{
+ Name: "testProject",
+ Description: "Test Project used for unit testing",
+ UserData1: "update data1",
+ UserData2: "update data2",
+ },
+ },
+ },
+ },
+ },
+ }
+
+ for _, testCase := range testCases {
+ t.Run(testCase.label, func(t *testing.T) {
+ request := httptest.NewRequest("PUT", "/v2/projects/"+testCase.name, testCase.reader)
+ resp := executeRequest(request, NewRouter(testCase.projectClient, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil))
+
+ //Check returned code
+ if resp.StatusCode != testCase.expectedCode {
+ t.Fatalf("Expected %d; Got: %d", testCase.expectedCode, resp.StatusCode)
+ }
+
+ //Check returned body only if statusOK
+ if resp.StatusCode == http.StatusOK {
+ got := moduleLib.Project{}
+ json.NewDecoder(resp.Body).Decode(&got)
+
+ if reflect.DeepEqual(testCase.expected, got) == false {
+ t.Errorf("updateHandler returned unexpected body: got %v;"+
+ " expected %v", got, testCase.expected)
+ }
+ }
+ })
+ }
+}
+
func TestProjectGetHandler(t *testing.T) {
testCases := []struct {
diff --git a/src/orchestrator/examples/example_module.go b/src/orchestrator/examples/example_module.go
index 9138b085..7edbb758 100644
--- a/src/orchestrator/examples/example_module.go
+++ b/src/orchestrator/examples/example_module.go
@@ -31,7 +31,14 @@ func ExampleClient_Project() {
return
}
// Perform operations on Project Module
- _, err := c.Project.CreateProject(moduleLib.Project{MetaData: moduleLib.ProjectMetaData{Name: "test", Description: "test", UserData1: "userData1", UserData2: "userData2"}})
+ // POST request (exists == false)
+ _, err := c.Project.CreateProject(moduleLib.Project{MetaData: moduleLib.ProjectMetaData{Name: "test", Description: "test", UserData1: "userData1", UserData2: "userData2"}}, false)
+ if err != nil {
+ log.Println(err)
+ return
+ }
+ // PUT request (exists == true)
+ _, err = c.Project.CreateProject(moduleLib.Project{MetaData: moduleLib.ProjectMetaData{Name: "test", Description: "test", UserData1: "userData1", UserData2: "userData2"}}, true)
if err != nil {
log.Println(err)
return
diff --git a/src/orchestrator/go.mod b/src/orchestrator/go.mod
index 22e1aba1..f05343cd 100644
--- a/src/orchestrator/go.mod
+++ b/src/orchestrator/go.mod
@@ -16,7 +16,6 @@ require (
github.com/lib/pq v1.6.0 // indirect
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect
github.com/mitchellh/copystructure v1.0.0 // indirect
- github.com/onap/multicloud-k8s/src/clm v0.0.0-00010101000000-000000000000
github.com/onap/multicloud-k8s/src/monitor v0.0.0-20200630152613-7c20f73e7c5d
github.com/onap/multicloud-k8s/src/ncm v0.0.0-20200515060444-c77850a75eee
github.com/onap/multicloud-k8s/src/rsync v0.0.0-20200630152613-7c20f73e7c5d
diff --git a/src/orchestrator/pkg/module/deployment_intent_groups.go b/src/orchestrator/pkg/module/deployment_intent_groups.go
index c7237032..d017c1e9 100644
--- a/src/orchestrator/pkg/module/deployment_intent_groups.go
+++ b/src/orchestrator/pkg/module/deployment_intent_groups.go
@@ -20,8 +20,8 @@ import (
"encoding/json"
"reflect"
- appcontext "github.com/onap/multicloud-k8s/src/orchestrator/pkg/appcontext"
"github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/db"
+ "github.com/onap/multicloud-k8s/src/orchestrator/pkg/state"
pkgerrors "github.com/pkg/errors"
)
@@ -62,7 +62,7 @@ type OverrideValues struct {
type DeploymentIntentGroupManager interface {
CreateDeploymentIntentGroup(d DeploymentIntentGroup, p string, ca string, v string) (DeploymentIntentGroup, error)
GetDeploymentIntentGroup(di string, p string, ca string, v string) (DeploymentIntentGroup, error)
- GetDeploymentIntentGroupContext(di string, p string, ca string, v string) (appcontext.AppContext, string, error)
+ GetDeploymentIntentGroupState(di string, p string, ca string, v string) (state.StateInfo, error)
DeleteDeploymentIntentGroup(di string, p string, ca string, v string) error
GetAllDeploymentIntentGroups(p string, ca string, v string) ([]DeploymentIntentGroup, error)
}
@@ -89,7 +89,7 @@ func (dk DeploymentIntentGroupKey) String() string {
type DeploymentIntentGroupClient struct {
storeName string
tagMetaData string
- tagContext string
+ tagState string
}
// NewDeploymentIntentGroupClient return an instance of DeploymentIntentGroupClient which implements DeploymentIntentGroupManager
@@ -97,7 +97,7 @@ func NewDeploymentIntentGroupClient() *DeploymentIntentGroupClient {
return &DeploymentIntentGroupClient{
storeName: "orchestrator",
tagMetaData: "deploymentintentgroupmetadata",
- tagContext: "contextid",
+ tagState: "stateInfo",
}
}
@@ -134,6 +134,17 @@ func (c *DeploymentIntentGroupClient) CreateDeploymentIntentGroup(d DeploymentIn
return DeploymentIntentGroup{}, pkgerrors.Wrap(err, "Create DB entry error")
}
+ // Add the stateInfo record
+ stateInfo := state.StateInfo{
+ State: state.StateEnum.Created,
+ ContextId: "",
+ }
+
+ err = db.DBconn.Insert(c.storeName, gkey, nil, c.tagState, stateInfo)
+ if err != nil {
+ return DeploymentIntentGroup{}, pkgerrors.Wrap(err, "Error updating the stateInfo of the DeploymentIntentGroup: "+d.MetaData.Name)
+ }
+
return d, nil
}
@@ -205,8 +216,8 @@ func (c *DeploymentIntentGroupClient) GetAllDeploymentIntentGroups(p string, ca
}
-// 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) {
+// GetDeploymentIntentGroupState returns the AppContent with a given DeploymentIntentname, project, compositeAppName and version of compositeApp
+func (c *DeploymentIntentGroupClient) GetDeploymentIntentGroupState(di string, p string, ca string, v string) (state.StateInfo, error) {
key := DeploymentIntentGroupKey{
Name: di,
@@ -215,22 +226,21 @@ func (c *DeploymentIntentGroupClient) GetDeploymentIntentGroupContext(di string,
Version: v,
}
- result, err := db.DBconn.Find(c.storeName, key, c.tagContext)
+ result, err := db.DBconn.Find(c.storeName, key, c.tagState)
if err != nil {
- return appcontext.AppContext{}, "", pkgerrors.Wrap(err, "Get DeploymentIntentGroup Context error")
+ return state.StateInfo{}, pkgerrors.Wrap(err, "Get DeploymentIntentGroup StateInfo error")
}
if result != nil {
- ctxVal := string(result[0])
- var cc appcontext.AppContext
- _, err = cc.LoadAppContext(ctxVal)
+ s := state.StateInfo{}
+ err = db.DBconn.Unmarshal(result[0], &s)
if err != nil {
- return appcontext.AppContext{}, "", pkgerrors.Wrap(err, "Error loading DeploymentIntentGroup Appcontext")
+ return state.StateInfo{}, pkgerrors.Wrap(err, "Unmarshalling DeploymentIntentGroup StateInfo")
}
- return cc, ctxVal, nil
+ return s, nil
}
- return appcontext.AppContext{}, "", pkgerrors.New("Error getting DeploymentIntentGroup AppContext")
+ return state.StateInfo{}, pkgerrors.New("Error getting DeploymentIntentGroup StateInfo")
}
// DeleteDeploymentIntentGroup deletes a DeploymentIntentGroup
@@ -241,9 +251,9 @@ func (c *DeploymentIntentGroupClient) DeleteDeploymentIntentGroup(di string, p s
CompositeApp: ca,
Version: v,
}
- _, _, err := c.GetDeploymentIntentGroupContext(di, p, ca, v)
- if err == nil {
- return pkgerrors.Wrap(err, "DeploymentIntentGroup must be terminated before it can be deleted "+di)
+ s, err := c.GetDeploymentIntentGroupState(di, p, ca, v)
+ if err == nil && s.State == state.StateEnum.Instantiated {
+ return pkgerrors.Errorf("DeploymentIntentGroup must be terminated before it can be deleted " + di)
}
err = db.DBconn.Remove(c.storeName, k)
diff --git a/src/orchestrator/pkg/module/instantiation.go b/src/orchestrator/pkg/module/instantiation.go
index f4e75861..9c0c9e31 100644
--- a/src/orchestrator/pkg/module/instantiation.go
+++ b/src/orchestrator/pkg/module/instantiation.go
@@ -25,6 +25,7 @@ import (
gpic "github.com/onap/multicloud-k8s/src/orchestrator/pkg/gpic"
"github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/db"
log "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/logutils"
+ "github.com/onap/multicloud-k8s/src/orchestrator/pkg/state"
"github.com/onap/multicloud-k8s/src/orchestrator/utils/helm"
pkgerrors "github.com/pkg/errors"
)
@@ -71,32 +72,67 @@ type InstantiationKey struct {
// InstantiationManager is an interface which exposes the
// InstantiationManager functionalities
type InstantiationManager interface {
- //ApproveInstantiation(p string, ca string, v string, di string) (error)
+ Approve(p string, ca string, v string, di string) error
Instantiate(p string, ca string, v string, di string) error
Status(p string, ca string, v string, di string) (StatusData, error)
Terminate(p string, ca string, v string, di string) error
}
-// InstantiationClientDbInfo consists of storeName and tagContext
+// InstantiationClientDbInfo consists of storeName and tagState
type InstantiationClientDbInfo struct {
- storeName string // name of the mongodb collection to use for Instantiationclient documents
- tagContext string // attribute key name for context object in App Context
+ storeName string // name of the mongodb collection to use for Instantiationclient documents
+ tagState string // attribute key name for context object in App Context
}
// NewInstantiationClient returns an instance of InstantiationClient
func NewInstantiationClient() *InstantiationClient {
return &InstantiationClient{
db: InstantiationClientDbInfo{
- storeName: "orchestrator",
- tagContext: "contextid",
+ storeName: "orchestrator",
+ tagState: "stateInfo",
},
}
}
-// TODO
-//ApproveInstantiation approves an instantiation
-// func (c InstantiationClient) ApproveInstantiation(p string, ca string, v string, di string) (error){
-// }
+//Approve approves an instantiation
+func (c InstantiationClient) Approve(p string, ca string, v string, di string) error {
+ s, err := NewDeploymentIntentGroupClient().GetDeploymentIntentGroupState(di, p, ca, v)
+ if err != nil {
+ return pkgerrors.Wrap(err, "DeploymentIntentGroup has no state info: "+di)
+ }
+ switch s.State {
+ case state.StateEnum.Approved:
+ return nil
+ case state.StateEnum.Terminated:
+ break
+ case state.StateEnum.Created:
+ break
+ case state.StateEnum.Applied:
+ return pkgerrors.Errorf("DeploymentIntentGroup is in an invalid state" + s.State)
+ case state.StateEnum.Instantiated:
+ return pkgerrors.Errorf("DeploymentIntentGroup has already been instantiated" + di)
+ default:
+ return pkgerrors.Errorf("DeploymentIntentGroup is in an unknown state" + s.State)
+ }
+
+ key := DeploymentIntentGroupKey{
+ Name: di,
+ Project: p,
+ CompositeApp: ca,
+ Version: v,
+ }
+ stateInfo := state.StateInfo{
+ State: state.StateEnum.Approved,
+ ContextId: "",
+ }
+
+ err = db.DBconn.Insert(c.db.storeName, key, nil, c.db.tagState, stateInfo)
+ if err != nil {
+ return pkgerrors.Wrap(err, "Error updating the stateInfo of the DeploymentIntentGroup: "+di)
+ }
+
+ return nil
+}
func getOverrideValuesByAppName(ov []OverrideValues, a string) map[string]string {
for _, eachOverrideVal := range ov {
@@ -189,9 +225,23 @@ func (c InstantiationClient) Instantiate(p string, ca string, v string, di strin
return pkgerrors.Wrap(err, "Not finding the deploymentIntentGroup")
}
- _, _, err = NewDeploymentIntentGroupClient().GetDeploymentIntentGroupContext(di, p, ca, v)
- if err == nil {
- return pkgerrors.Errorf("DeploymentIntentGroup has already been instantiated: " + di)
+ s, err := NewDeploymentIntentGroupClient().GetDeploymentIntentGroupState(di, p, ca, v)
+ if err != nil {
+ return pkgerrors.Errorf("Error retrieving DeploymentIntentGroup stateInfo: " + di)
+ }
+ switch s.State {
+ case state.StateEnum.Approved:
+ break
+ case state.StateEnum.Terminated:
+ break // TODO - ideally, should check that all resources have completed being terminated
+ case state.StateEnum.Created:
+ return pkgerrors.Errorf("DeploymentIntentGroup must be Approved before instantiating" + di)
+ case state.StateEnum.Applied:
+ return pkgerrors.Errorf("DeploymentIntentGroup is in an invalid state" + di)
+ case state.StateEnum.Instantiated:
+ return pkgerrors.Errorf("DeploymentIntentGroup has already been instantiated" + di)
+ default:
+ return pkgerrors.Errorf("DeploymentIntentGroup is in an unknown state" + s.State)
}
rName := dIGrp.Spec.Version //rName is releaseName
@@ -292,8 +342,11 @@ func (c InstantiationClient) Instantiate(p string, ca string, v string, di strin
CompositeApp: ca,
Version: v,
}
-
- err = db.DBconn.Insert(c.db.storeName, key, nil, c.db.tagContext, ctxval)
+ stateInfo := state.StateInfo{
+ State: state.StateEnum.Instantiated,
+ ContextId: ctxval.(string),
+ }
+ err = db.DBconn.Insert(c.db.storeName, key, nil, c.db.tagState, stateInfo)
if err != nil {
cleanuperr := context.DeleteCompositeApp()
if cleanuperr != nil {
@@ -348,11 +401,16 @@ the deployment, which is made available in the appcontext.
*/
func (c InstantiationClient) Status(p string, ca string, v string, di string) (StatusData, error) {
- ac, _, err := NewDeploymentIntentGroupClient().GetDeploymentIntentGroupContext(di, p, ca, v)
+ s, err := NewDeploymentIntentGroupClient().GetDeploymentIntentGroupState(di, p, ca, v)
if err != nil {
return StatusData{}, pkgerrors.Wrap(err, "deploymentIntentGroup not found: "+di)
}
+ ac, err := state.GetAppContextFromStateInfo(s)
+ if err != nil {
+ return StatusData{}, pkgerrors.Wrap(err, "AppContext for deploymentIntentGroup not found: "+di)
+ }
+
// Get all apps in this composite app
allApps, err := NewAppClient().GetApps(p, ca, v)
if err != nil {
@@ -409,12 +467,19 @@ DeploymentIntentName and calls rsync to terminate.
*/
func (c InstantiationClient) Terminate(p string, ca string, v string, di string) error {
- ac, ctxval, err := NewDeploymentIntentGroupClient().GetDeploymentIntentGroupContext(di, p, ca, v)
+ s, err := NewDeploymentIntentGroupClient().GetDeploymentIntentGroupState(di, p, ca, v)
+ if err != nil {
+ return pkgerrors.Wrap(err, "DeploymentIntentGroup has no state info: "+di)
+ } else if s.State != state.StateEnum.Instantiated {
+ return pkgerrors.Errorf("DeploymentIntentGroup is not instantiated" + di)
+ }
+
+ ac, err := state.GetAppContextFromStateInfo(s)
if err != nil {
- return pkgerrors.Wrap(err, "DeploymentIntentGroup has no app context: "+di)
+ return pkgerrors.Wrap(err, "AppContext for deploymentIntentGroup not found: "+di)
}
- err = callRsyncUninstall(ctxval)
+ err = callRsyncUninstall(s.ContextId)
if err != nil {
return err
}
@@ -430,10 +495,14 @@ func (c InstantiationClient) Terminate(p string, ca string, v string, di string)
CompositeApp: ca,
Version: v,
}
+ stateInfo := state.StateInfo{
+ State: state.StateEnum.Terminated,
+ ContextId: "",
+ }
- err = db.DBconn.RemoveTag(c.db.storeName, key, c.db.tagContext)
+ err = db.DBconn.Insert(c.db.storeName, key, nil, c.db.tagState, stateInfo)
if err != nil {
- return pkgerrors.Wrap(err, "Error removing the app context tag from DeploymentIntentGroup: "+di)
+ return pkgerrors.Wrap(err, "Error updating the stateInfo of the DeploymentIntentGroup: "+di)
}
return nil
diff --git a/src/orchestrator/pkg/module/project.go b/src/orchestrator/pkg/module/project.go
index 02f6d827..e86266b9 100644
--- a/src/orchestrator/pkg/module/project.go
+++ b/src/orchestrator/pkg/module/project.go
@@ -55,7 +55,7 @@ func (pk ProjectKey) String() string {
// ProjectManager is an interface exposes the Project functionality
type ProjectManager interface {
- CreateProject(pr Project) (Project, error)
+ CreateProject(pr Project, exists bool) (Project, error)
GetProject(name string) (Project, error)
DeleteProject(name string) error
GetAllProjects() ([]Project, error)
@@ -78,7 +78,7 @@ func NewProjectClient() *ProjectClient {
}
// CreateProject a new collection based on the project
-func (v *ProjectClient) CreateProject(p Project) (Project, error) {
+func (v *ProjectClient) CreateProject(p Project, exists bool) (Project, error) {
//Construct the composite key to select the entry
key := ProjectKey{
@@ -87,7 +87,7 @@ func (v *ProjectClient) CreateProject(p Project) (Project, error) {
//Check if this Project already exists
_, err := v.GetProject(p.MetaData.Name)
- if err == nil {
+ if err == nil && !exists {
return Project{}, pkgerrors.New("Project already exists")
}
diff --git a/src/orchestrator/pkg/module/project_test.go b/src/orchestrator/pkg/module/project_test.go
index f6856f86..947478b4 100644
--- a/src/orchestrator/pkg/module/project_test.go
+++ b/src/orchestrator/pkg/module/project_test.go
@@ -62,13 +62,39 @@ func TestCreateProject(t *testing.T) {
Err: pkgerrors.New("Error Creating Project"),
},
},
+ {
+ label: "Create Existing Project",
+ inp: Project{
+ MetaData: ProjectMetaData{
+ Name: "testProject",
+ Description: "A sample Project used for unit testing",
+ UserData1: "data1",
+ UserData2: "data2",
+ },
+ },
+ expectedError: "Project already exists",
+ mockdb: &db.MockDB{
+ Items: map[string]map[string][]byte{
+ ProjectKey{ProjectName: "testProject"}.String(): {
+ "projectmetadata": []byte(
+ "{" +
+ "\"metadata\" : {" +
+ "\"Name\":\"testProject\"," +
+ "\"Description\":\"Test project for unit testing\"," +
+ "\"UserData1\":\"userData1\"," +
+ "\"UserData2\":\"userData2\"}" +
+ "}"),
+ },
+ },
+ },
+ },
}
for _, testCase := range testCases {
t.Run(testCase.label, func(t *testing.T) {
db.DBconn = testCase.mockdb
impl := NewProjectClient()
- got, err := impl.CreateProject(testCase.inp)
+ got, err := impl.CreateProject(testCase.inp, false)
if err != nil {
if testCase.expectedError == "" {
t.Fatalf("Create returned an unexpected error %s", err)
@@ -86,6 +112,85 @@ func TestCreateProject(t *testing.T) {
}
}
+func TestUpdateProject(t *testing.T) {
+ testCases := []struct {
+ label string
+ inp Project
+ expectedError string
+ mockdb *db.MockDB
+ expected Project
+ }{
+ {
+ label: "Update Project",
+ inp: Project{
+ MetaData: ProjectMetaData{
+ Name: "testProject",
+ Description: "Test project for unit testing",
+ UserData1: "update userData1",
+ UserData2: "update userData2",
+ },
+ },
+ expected: Project{
+ MetaData: ProjectMetaData{
+ Name: "testProject",
+ Description: "Test project for unit testing",
+ UserData1: "update userData1",
+ UserData2: "update userData2",
+ },
+ },
+ expectedError: "",
+ mockdb: &db.MockDB{
+ Items: map[string]map[string][]byte{
+ ProjectKey{ProjectName: "testProject"}.String(): {
+ "projectmetadata": []byte(
+ "{" +
+ "\"metadata\" : {" +
+ "\"Name\":\"testProject\"," +
+ "\"Description\":\"Test project for unit testing\"," +
+ "\"UserData1\":\"userData1\"," +
+ "\"UserData2\":\"userData2\"}" +
+ "}"),
+ },
+ },
+ },
+ },
+ {
+ label: "Failed Update Project",
+ inp: Project{
+ MetaData: ProjectMetaData{
+ Name: "unknownProject",
+ Description: "Unknown project for unit testing",
+ },
+ },
+ expectedError: "Creating DB Entry",
+ mockdb: &db.MockDB{
+ Err: pkgerrors.New("Error Updating Project"),
+ },
+ },
+ }
+
+ for _, testCase := range testCases {
+ t.Run(testCase.label, func(t *testing.T) {
+ db.DBconn = testCase.mockdb
+ impl := NewProjectClient()
+ got, err := impl.CreateProject(testCase.inp, true)
+ if err != nil {
+ if testCase.expectedError == "" {
+ t.Fatalf("Update returned an unexpected error %s", err)
+ }
+ if strings.Contains(err.Error(), testCase.expectedError) == false {
+ t.Fatalf("Update returned an unexpected error %s", err)
+ }
+ } else {
+ if reflect.DeepEqual(testCase.expected, got) == false {
+ t.Errorf("Update returned unexpected body: got %v;"+
+ " expected %v", got, testCase.expected)
+ }
+ }
+ })
+ }
+}
+
func TestGetProject(t *testing.T) {
testCases := []struct {
diff --git a/src/orchestrator/pkg/state/state_helper.go b/src/orchestrator/pkg/state/state_helper.go
new file mode 100644
index 00000000..a65cea8d
--- /dev/null
+++ b/src/orchestrator/pkg/state/state_helper.go
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2020 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 state
+
+import "github.com/onap/multicloud-k8s/src/orchestrator/pkg/appcontext"
+
+// GetAppContextFromStateInfo loads the appcontext present in the StateInfo input
+func GetAppContextFromStateInfo(s StateInfo) (appcontext.AppContext, error) {
+ var cc appcontext.AppContext
+ _, err := cc.LoadAppContext(s.ContextId)
+ if err != nil {
+ return appcontext.AppContext{}, err
+ }
+ return cc, nil
+}
diff --git a/src/orchestrator/pkg/state/types.go b/src/orchestrator/pkg/state/types.go
new file mode 100644
index 00000000..25fb60d2
--- /dev/null
+++ b/src/orchestrator/pkg/state/types.go
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2020 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 state
+
+// StateInfo struct is used to maintain the values for state, contextid, (and other)
+// information about resources which can be instantiated via rsync.
+type StateInfo struct {
+ State StateValue
+ ContextId string
+}
+
+type StateValue = string
+
+type states struct {
+ Created StateValue
+ Approved StateValue
+ Applied StateValue
+ Instantiated StateValue
+ Terminated StateValue
+}
+
+var StateEnum = &states{
+ Created: "Created",
+ Approved: "Approved",
+ Applied: "Applied",
+ Instantiated: "Instantiated",
+ Terminated: "Terminated",
+}