...
Code Block |
---|
language | bash |
---|
title | GET, DELETE |
---|
linenumbers | true |
---|
|
GET
URL: /v2/projects/{project-name}
RETURN STATUS: 200
RETURN BODY:
{
"metadata": {
"name": "<name>",
"description": "<description>",
"userData1": "<user data>",
"userData2": "<user data>"
}
}
DELETE
URL: /v2/projects/{project-name}
RETURN STATUS: 204 |
Composite Application API
Composite Application names are unique within a Project. Composite application resource represents a collection of applications and each application is represented by helm charts. Each Helm chart is wrapped in tar.gz format.
...
Code Block |
---|
language | jsbash |
---|
title | POSTGET, DELETE |
---|
linenumbers | true |
---|
|
GET
URL: /v2/projects/{project-name}/composite-apps
POST
RETURN STATUS: 200
RETURN BODY:
{
"metadata": {
"name": "<name>",
"description": "<description>",
"userData1": "<user data>",
"userData2": "<user data>"
}
},
DELETE
URL: /v2/projects/{project-name}
RETURN STATUS: 204
|
Composite Application API
Composite Application names are unique within a Project. Composite application resource represents a collection of applications and each application is represented by helm charts. Each Helm chart is wrapped in tar.gz format.
POST
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: /v2/projects/{project-name}/composite-apps
POST BODY: "spec":{
"version":"<version of the composite app>"
}
}
RETURN STATUS: 201
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"version":"<version of the composite app>"
}
} |
GET, DELETE
Code Block |
---|
language | js |
---|
title | GET, DELETE |
---|
linenumbers | true |
---|
|
GET
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}
RETURN
RETURN STATUS: 200201
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"version":"<version of the composite app>"
}
} |
GET, DELETE
Code Block |
---|
language | js |
---|
title | GET, DELETE |
---|
linenumbers | true |
---|
|
GET
DELETE
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}
RETURN STATUS: 200
RETURN BODY: 204 |
Adding applications to composite app
Format of the Helm chart for the application wrapped in tar.gz
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"version":"<version of the composite app>"
}
}
DELETE
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}
RETURN STATUS: 204 |
Adding applications to composite app
Format of the Helm chart for the application wrapped in tar.gz
> cd vagrant /tests/vnfs/test/helm
> find vault-consul-dev
vault-consul-dev
vault-consul-dev /Chart > cd vagrant /tests/vnfs/test/helm
> find vault-consul-dev
vault-consul-dev
vault-consul-dev /Chart .yaml
vault-consul-dev /values .yaml
vault-consul-dev /templates
vault-consul-dev /templates/service .yaml
vault-consul-dev /templates/deployment .yaml
vault-consul-dev /charts
vault-consul-dev /charts/common/values .yaml
vault-consul-dev /charts/common/templates/_service .tpl values .yaml
vault-consul-dev /charts/common/templates/_repository .tpl
vault-consul-dev /charts/common/templates/_nameservice .tplyaml
vault-consul-dev /charts/common/templates/_namespacedeployment .tplyaml
vault-consul-dev /charts/common/templates
vault-consul-dev /charts/common/Chartvalues .yaml
vault-consul-dev /charts/common
/templates/_service .tpl
vault-consul-dev /charts/common/templates/_repository .tpl
vault-consul-dev /charts/common/templates/_name .tpl
vault-consul-dev /charts/common/templates/_namespace .tpl
vault-consul-dev /charts/common/templates
vault-consul-dev /charts/common/Chart .yaml
vault-consul-dev /charts/common
> tar -cf vault-consul-dev. tar vault-consul-dev
> vault-consul-dev
> gzip vault-consul-dev. tar
|
POST
...
gzip vault-consul-dev. tar
|
POST
This POST is a multipart POST. With the POST body containing the data about the application and the tar.gz uploaded in multipart form.
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/apps
POST BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
}
}
RETURN STATUS: 201
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
}
} |
GET, DELETE
Code Block |
---|
language | js |
---|
title | GET, DELETE |
---|
linenumbers | true |
---|
|
GET
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/apps/{app-name}
RETURN STATUS: 200
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
}
}
Multipart response containing the tar.gz of the Helm chart for the app
DELETE
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/apps/{app-name}
RETURN STATUS: 204 |
Profile API
Once the definitions for applications are created, profiles are created to customize the applications. Later on, they are instantiated in Kubernetes by the instantiation API.
POST
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{verison}/composite-profiles
POST BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
}
}
RETURN STATUS: 201
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
}
} |
GET, DELETE
Code Block |
---|
language | js |
---|
title | GET, DELETE |
---|
linenumbers | true |
---|
|
GET
URL: /v2/project/{project-name}/composite-apps/{composite-app-name}/{version}/composite-profiles/{composite-profile-name}
RETURN STATUS: 200
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
}
}
DELETE
URL: /v2/projects/{project-name}/composite-apps/{app-name}/{app-version}/composite-profiles/{composite-profile-name}
RETURN STATUS: 204 |
Adding profile per application
A per application profile contains the following:
- manifest.yaml
- Contains the details for the profile and everything contained within
- A HELM values override yaml file.
- It can have any name as long as it matches the corresponding entry in the manifest.yaml
- Any number of files organized in a folder structure
- All these files should have a corresponding entry in manifest.yaml file
Sample Profile is described below:
Create the profile artifact
Creating a Profile Artifact
1 2 3 4 5 6 7 8 9 10 11 12 13 | > cd vagrant /tests/vnfs/test/helm/profile
> find .
manifest.yaml
override_values.yaml
testfol
testfol /subdir
testfol /subdir/deployment .yaml
> cd profile
> tar -cf profile. tar *
> gzip profile. tar
> mv profile. tar .gz ../
|
The manifest file contains the following:
manifest.yaml
1 2 3 4 5 6 7 | ---
version: v1
type:
values: "values_override.yaml"
configresource:
- filepath : testfol/subdir/deployment.yaml
chartpath: vault-consul-dev/templates/deployment.yaml
|
POST
This POST is a multipart POST. With the POST body containing the data about the profile and the profile tar.gz uploaded in multipart form.
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{verison}/composite-profiles/{composite-profile-name}/profiles
POST BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"app-name": "<name>", // Must match the name given in composite-apps/apps API
}
}
Multipart request containg tar.gz of the profile
RETURN STATUS: 201
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"app-name": "<name>", // Must match the name given in composite-apps/apps API
}
} |
GET, DELETE
Code Block |
---|
language | js |
---|
title | POSTGET, DELETE |
---|
linenumbers | true |
---|
|
GET
URL: /v2/projectsproject/{project-name-name}/composite-apps/{composite-app-name}/{version}/composite-appsprofiles/{composite-appprofile-name}/profiles/{version}/apps
POSTprofile-name}
RETURN STATUS: 200
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"app-name": "<name>", // Must match the name given in composite-apps/apps API
}
}
Multipart response containing the tar.gz of "userData2":"<user data>"
}
}the profile
GET (Query)
URL: /v2/project/{project-name}/composite-apps/{composite-app-name}/{version}/composite-profiles/{composite-profile-name}/profiles?app-name=<app-name>
RETURN STATUS: 201200
RETURN BODY:
{
"metadata":{
"app-name": "<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
}
} |
...
}
Multipart response containing the tar.gz of the profile
DELETE
URL: /v2/project/{project-name}/composite-apps/{composite-app-name}/{version}/composite-profiles/{composite-profile-name}/profiles/{profile-name}
RETURN STATUS: 204 |
Generic Placement Intent API
Generic Placement Intent API is used to create generic placement intents for sub-applications in an application. Intent created using this API will be added to an Intent Group for use during instantiation.
POST
Code Block |
---|
language | js |
---|
title | GET, DELETEPOST |
---|
linenumbers | true |
---|
|
GET
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/apps/{app-name}
RETURN STATUS: 200
RETURNgeneric-placement-intents
POST BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
}
Multipart response containing the tar.gz of the Helm chart for the app
DELETE
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/apps/{app-name}
RETURN STATUS: 204 |
Profile API
Once the definitions for applications are created, profiles are created to customize the applications. Later on, they are instantiated in Kubernetes by the instantiation API.
POST
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{verison}/composite-profiles
POST BODY: "spec":{
"logical-cloud": "logical-cloud-name" //name of logical cloud to use for instantiation. The DCM API will provide the list of clusters that are part of the logical-cloud
}
}
RETURN STATUS: 201
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
}
}
RETURN STATUS: 201
RETURN BODY:
{,
"metadataspec":{
"namelogical-cloud": "<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"logical-cloud-name" //name of logical cloud to use for instantiation. The DCM API will provide the list of clusters that are part of the logical-cloud
}
} |
GET, DELETE
Code Block |
---|
language | js |
---|
title | GETGet, DELETEDelete |
---|
linenumbers | true |
---|
|
GET
URL: /v2/projectprojects/{project-name}/composite-apps/{composite-app-name}/{version}/compositegeneric-placement-profilesintents/{composite-profileintent-name}
RETURN STATUS: 200
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>" data>"
},
"spec":{
"logical-cloud": "logical-cloud-name" //name of logical cloud to use for instantiation. The DCM API will provide the list of clusters that are part of the logical-cloud
}
}
DELETE
URL: /v2/projectsproject/{project-name}/composite-apps/{composite-app-name}/{app-version}/compositegeneric-placement-profiles/{composite-profile-name}
RETURN STATUS: 204 |
Adding profile per application
A per application profile contains the following:
- manifest.yaml
- Contains the details for the profile and everything contained within
- A HELM values override yaml file.
- It can have any name as long as it matches the corresponding entry in the manifest.yaml
- Any number of files organized in a folder structure
- All these files should have a corresponding entry in manifest.yaml file
Sample Profile is described below:
Create the profile artifact
Creating a Profile Artifact
...
1
2
3
4
5
6
7
8
9
10
11
12
13
...
>
cd
vagrant
/tests/vnfs/test/helm/profile
>
find
.
manifest.yaml
override_values.yaml
testfol
testfol
/subdir
testfol
/subdir/deployment
.yaml
>
cd
profile
>
tar
-cf profile.
tar
*
>
gzip
profile.
tar
>
mv
profile.
tar
.gz ../
intents/{intent-name}
RETURN STATUS: 204
|
Adding placement intent for each application in the composite-app
POST
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: /v2/project/{project-name}/composite-apps/{composite-app-name}/{version}/generic-placement-intent/{intent-name}/app-intents
POST BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"app-name":"name",
"intent":{
"allOf":[
{
"provider-name":"aws"
"cluster-name":"edge1"
},
{
"provider-name":"aws"
"cluster-name":"edge2"
},
{
"anyOf":[
{
"provider-name":"aws"
"cluster-label-name":"east-us1"
},
{
"provider-name":"aws"
"cluster-label-name":"east-us2"
}
]
}
]
}
}
}
RETURN STATUS: 201 |
The manifest file contains the following:
manifest.yaml
...
1
2
3
4
5
6
7
...
---
version:
v1
type:
values:
"values_override.yaml"
configresource:
-
filepath
:
testfol/subdir/deployment.yaml
chartpath:
vault-consul-dev/templates/deployment.yaml
POST
This POST is a multipart POST. With the POST body containing the data about the profile and the profile tar.gz uploaded in multipart form.
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{verison}/composite-profiles/{composite-profile-name}/profiles
POST BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"app-name": "<name>", // Must match the name given in composite-apps/apps API
}
}
Multipart request containg tar.gz of the profile
RETURN STATUS: 201
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"app-name": "<name>", // Must match the name given in composite-apps/apps API
}
} |
GET, DELETE
Code Block |
---|
language | js |
---|
title | GET, DELETE |
---|
linenumbers | true |
---|
|
GET
URL: /v2/project/{project-name}/composite-apps/{composite-app-name}/{version}/composite-profiles/{composite-profile-name}/profiles/{profile-name}
RETURN STATUS: 200
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"app-name": "<name>", // Must match the name given in composite-apps/apps API
}
}
Multipart response containing the tar.gz of the profile
DELETE
URL: /v2/project/{project-name}/composite-apps/{composite-app-name}/{version}/composite-profiles/{composite-profile-name}/profiles/{profile-name}
RETURN STATUS: 204 |
Generic Placement Intent API
Generic Placement Intent API is used to create generic placement intents for sub-applications in an application. Intent created using this API will be added to an Intent Group for use during instantiation.
POST
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/generic-placement-intents
POST BODY:
{
"metadata":{
"name":"<name>",
"app-name":"name",
"intent":{
"allOf":[
{
"provider-name":"aws"
"cluster-name":"edge1"
},
{
"provider-name":"aws"
"cluster-name":"edge2"
},
{
"description":"<description>",
anyOf":[
"userData1":"<user data>", {
"userData2":"<user data>"
},
"spec":{
"logicalprovider-cloudname":"aws" "logical-cloud
"cluster-label-name":"east-us1"
//name of logical cloud to},
use for instantiation. The DCM API will provide the list of clusters that are part of the logical-cloud{
}
}
RETURN STATUS: 201
RETURN BODY:
{
"metadata":{
"provider-name":"<name>aws",
"description
"cluster-label-name":"<description>east-us2",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
]
"logical-cloud": "logical-cloud-name" //name of logical cloud to use for instantiation.}
The DCM API will provide the list of clusters]
that are part of the logical-cloud}
}
} |
GET, DELETE
Code Block |
---|
language | js |
---|
title | Get, Delete |
---|
linenumbers | true |
---|
|
GET
URL: /v2/projectsproject/{project-name}/composite-apps/{composite-app-name}/{version}/generic-placement-intents/{intent-name}
RETURN STATUS: 200
RETURN BODY:
{
"metadata":{
-placement-intent/{intent-name}/app-intents
RETURN STATUS: 200
RETURN BODY:
{
"applications":[
{
"name":"app1",
"anyOf":[
{
"provider-name":"aws"
"cluster-name":"edge1"
},
{
"provider-name":"<name>aws",
"descriptioncluster-name":"<description>edge2",
"userData1":"<user data>",
}
"userData2":"<user data>" ]
},
"spec":{
"logical-cloudname": "logical-cloud-name" //name of logical cloud to use for instantiation. The DCM API will provide the list of clusters that are part of the logical-cloud
}
}
DELETE
URL: /v2/project/{project-name}/composite-apps/{composite-app-name}/{version}/generic-placement-intent/{intent-name}
RETURN STATUS: 204
|
Adding placement intent for each application in the composite-app
POST
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: /v2/project/{project-name}/composite-apps/{composite-app-name}/{version}/generic-placement-intent/{intent-name}/app-intents
POST BODY:
{
"metadata":{
app2",
"allOf":[
{
"provider-name":"aws"
"cluster-name":"edge1"
},
{
"provider-name":"<name>aws",
"description
"cluster-name":"<description>edge2",
"userData1":"<user data>",
}
"userData2":"<user data>" ]
},
"spec":{
"app-name":"nameapp3",
"intent":{
"allOf":[
{
"provider-name":"aws"
"cluster-name":"edge1"
},
{
"provider-name":"aws"
"cluster-name":"edge2"
},
{
"anyOf":[
{
"provider-name":"aws"
"cluster-label-name":"east-us1"
},
{
"provider-name":"aws"
"cluster-label-name":"east-us2"
}
]
}
]
}
]
}
}
]
}
GET
URL: /v2/project/{project-name}/composite-apps/{composite-app-name}/{version}/generic-placement-intent/{intent-name}/app-intents/{intent-name}
RETURN STATUS: 201200
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"app-name":"name",
"intent":{
"allOf":[":[
{
"provider-name":"aws"
"cluster-name":"edge1"
},
{
"provider-name":"aws"
"cluster-name":"edge1edge2"
},
{
"cluster-nameanyOf":"edge2"[
},
{
{
"provider-name":"aws" "anyOf":[
"cluster-label-name":"east-us1"
},
{
"provider-name":"aws"
"cluster-label-name":"east-us1"
us2"
}
},
]
{}
]
}
}
}
GET "cluster-label-name":"east-us2"
(Query)
URL: /v2/project/{project-name}/composite-apps/{composite-app-name}/{version}/generic-placement-intent/{intent-name}/app-intents?app-name=<app-name>
RETURN STATUS: 200
RETURN BODY:
{
"intent":{
"allOf":[
}
{
]
"provider-name":"aws"
"cluster-name":"edge1"
},
]{
}
}
} |
GET, DELETE
Code Block |
---|
language | js |
---|
title | Get, Delete |
---|
linenumbers | true |
---|
|
GET
URL: /v2/project/{project-name}/composite-apps/{composite-app-name}/{version}/generic-placement-intent/{intent-name}/app-intents
RETURN STATUS: 200
RETURN BODY:
{
"applications":[
{
"provider-name":"aws"
"cluster-name":"edge2"
},
{
"anyOf":[
{
"provider-name":"aws"
"cluster-label-name":"app1east-us1",
},
"anyOf":[
{
"provider-name":"aws"
"cluster-label-name":"edge1east-us2"
},
{}
"cluster-name":"edge2"]
}
]
},
{
"name":"app2",
"allOf":[
{
"cluster-name":"edge1"
},
{
"cluster-name":"edge2"
}
]
}
}
DELETE
URL: /v2/project/{project-name}/composite-apps/{composite-app-name}/{version}/generic-placement-intent/{intent-name}/apps-intents/{intent-name}
RETURN STATUS: 204
|
Deployment Intent Group API
Deployment Intent Group API is used to create Intent Groups that can then will be used at instantiation time. Some intents that can be part of an Intent Group are Generic Placement Intent, HPA Intent, and traffic controller Intent.
POST
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups
POST BODY:
{
"metadata": },
{
"name":"app3<name>",
"allOf":[
{
"cluster-namedescription":"edge1"
},
{
<description>",
"cluster-nameuserData1":"edge2<user data>",
"userData2":"<user data>"
},
"spec":{
{
"profile":"<profile-name>",
"version":"<version of the deployment>",
"anyOfoverride-values":[
{
"cluster-label"app-name":"east-us1<name>",
"values":[
},
{
{
"imageRepository":"registry.hub.docker.com"
"cluster-label-name":"east-us2"
}
]
},
{
]
"app-name":"<name>",
}
]
"values":[
}
]
}
GET
URL: /v2/project/{project-name}/composite-apps/{composite-app-name}/{version}/generic-placement-intent/{intent-name}/app-intents/{intent-name}
RETURN STATUS: 200
RETURN BODY:
{
"metadata":{
"name":"<name>",
"descriptionimageRepository":"<description>",registry.hub.docker.com"
"userData1":"<user data>",
"userData2":"<user data>" }
},
"spec":{
"app-name":"name",]
"intent":{ }
]
"allOf":[
}
}
RETURN STATUS: 201
RETURN BODY:
{
"metadata":{
{"name":"<name>",
"description":"<description>",
"cluster-name"userData1":"edge1<user data>",
"userData2":"<user data>"
},
"spec":{
{"profile":"<profile-name>",
"version":"<version of the deployment>",
"clusteroverride-namevalues":"edge2"[
},{
{
"app-name":"<name>",
"anyOfvalues":[
{
"cluster-label-nameimageRepository":"east-us1registry.hub.docker.com"
}
},
]
{},
{
"cluster-labelapp-name":"east-us2<name>",
}"values":[
]{
}
]"imageRepository":"registry.hub.docker.com"
}
}
}
DELETE
URL: /v2/project/{project-name}/composite-apps/{composite-app-name}/{version}/generic-placement-intent/{intent-name}/apps-intents/{intent-name}
RETURN STATUS: 204
|
Deployment Intent Group API
Deployment Intent Group API is used to create Intent Groups that can then will be used at instantiation time. Some intents that can be part of an Intent Group are Generic Placement Intent, HPA Intent, and traffic controller Intent.
...
GET, DELETE
Code Block |
---|
language | js |
---|
title | POSTGet, Delete |
---|
linenumbers | true |
---|
|
GET
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-groups
POST-group-name}
RETURN STATUS: 200
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"profile":"<profile-name>",
"version":"<version of the deployment>",
"status": "approved"<transaction status>”, // Someapproved of the possible values include Created, Tested, Readyor not-approved
"override-values":[
{
"app-name":"<name>",
"values":[
{
"imageRepository":"registry.hub.docker.com",
"another_key":"another_value"
}
]
},
{
"app-name":"<name>",
"values":[
{
"imageRepository":"registry.hub.docker.com",
}
]
"another_key":"another_value"
}
]
}
}
RETURN STATUS: 201
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
}
"userData1":"<user data>",
]
"userData2":"<user data>"
},
"spec":{
"profile":"<profile-name>",
"version":"<version of the deployment>",
"override-values":[
{
"app-name":"<name>",
"values":[
{
}
}
DELETE
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}
RETURN STATUS: 204
|
Adding intents to an Intent group
POST
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/intents
POST BODY:
{
"metadata":{
"imageRepositoryname":"registry.hub.docker.com"
<name>",
"description":"<description>",
}
"userData1":"<user data>",
]
"userData2":"<user data>"
},
"spec":{
"intent":{
"appgeneric-placement-nameintent":"<name>",xyz-generic-placement-intent"
}
}
}
RETURN STATUS: "values":[
201
RETURN BODY:
{
"metadata":{
{
"name":"<name>",
"description":"<description>",
"imageRepositoryuserData1":"registry.hub.docker.com"<user data>",
"userData2":"<user data>"
},
"spec":{
"intent":{ ]
}"generic-placement-intent":"xyz-generic-placement-intent"
]}
}
} |
GET, DELETE
Code Block |
---|
language | js |
---|
title | Get, Delete |
---|
linenumbers | true |
---|
|
GET
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/intents/{intent-name}
RETURN STATUS: 200
RETURN BODY:
{{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"intent":{
"profilegeneric-placement-intent":"<profile-name>",
"version":"<version of the deployment>",xyz-generic-placement-intent"
}
}
}
GET
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/intents
RETURN STATUS: 200
RETURN BODY:
{
"override-valuesintent":[
{
"appgeneric-placement-nameintent":"<name>",generic-placement-intent-name"
},
"values":[{
"hpa":"hpa-placement-intent-name"
{},
{
"imageRepositorytraffic":"registry.hub.docker.com"traffic-intent-name"
}
]
}
GET }
(Query)
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/intents?intent=<intent>
{
]
},
{
"app-name":"<name>",
"values":[
{
"imageRepository":"registry.hub.docker.com"
}
]
}
"generic-placement-intent":"xyz-generic-placement-intent"
}
DELETE
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/intents/{intent-name}
RETURN STATUS: 204
|
Instantiation, Destroy, Status API
Instantiation API to instantiate composite app based on intent-group. Destroy API deletes the app and Status API returns the resources
POST
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/approve
POST BODY:
{
}
RETURN STATUS: 201
RETURN BODY:
{
}
]
}
}
DELETE
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/instantiate
POST BODY:
{
}
RETURN STATUS: 201
RETURN BODY: 204
|
Adding intents to an Intent group
POST
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
{
}
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/intents
POST BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"intent":{
"generic":"xyz-generic-placement-intent"
}
}name}/destroy
POST BODY:
{
}
RETURN STATUS: 201
RETURN BODY:
{
}
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/status
POST BODY:
{
}
RETURN STATUS: 201
RETURN BODY:
{
"metadataname":{
"name":"<name>",
"descriptioncomposite-app-name": "<description>test-app",
"userData1composite-app-version": "<user data>v1",
"userData2profile-name":"<user data>"
},
"test-app-profile",
"specintent-group":{
"intent":{
-group-1"
"genericnamespace":"xyz-generic-placement-intent" "testinstallns",
"resources":
[
}{
}
} |
GET, DELETE
Code Block |
---|
language | js |
---|
title | Get, Delete |
---|
linenumbers | true |
---|
|
GET
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/intents/{intent-name}
{
"app-name": "collectd",
"metadataclusters": [
{
"name": "<name>cluster1",
"description":"<description>",
resources": [
{
"userData1GVK":"<user data>",
{
"userData2Group": "<user data>",
},
"spec":{
"intentVersion":{ "v1",
"genericKind":"xyz-generic-placement-intent "Service"
}
}
}
GET
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/intents
RETURN STATUS: 200
RETURN BODY:
{
,
"intentName":[
"mongo",
{
"generic-placement-intentstatus":"generic-placement-intent-name"
"Running"
},
},
{
"hpa-placement-intent":"hpa-placement-intent-name"
}, "GVK": {
{
"traffic-intentGroup": "traffic-intent-name",
}
]
}
DELETE
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/intents/{intent-name}
RETURN STATUS: 204
|
Instantiation, Destroy, Status API
Instantiation API to instantiate composite app based on intent-group. Destroy API deletes the app and Status API returns the resources
POST
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/initantiate
POST BODY:
{
}
RETURN STATUS: 201
RETURN BODY:
{
}
"Version": "v1",
"Kind": "Service"
},
"Name": "mongo-read",
"status": "Terminated"
}
]
}
]
}
]
Status Queries:
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/status
POST BODY:
{
}
RETURN STATUS: 201
RETURN BODY:
{
"name": "<name>",
"composite-app-name": "test-app",
"composite-app-version": "v1",
"profile-name": "test-app-profile",
"intent-group": "intent-group-1"
"namespace": "testinstallns",
"resources": [
{?output=<output-type>&app=<app-name>&cluster=<cluster-name>&resource=<resource-name>
output-type can be small or full.
Query can be a combination of the app, cluster and resources.
|
Cluster Registration API
API to support Reachability for a Kubernetes Cloud. This API will be used to upload configuration information for the cluster
POST
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: /v2/cluster-providers
POST BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"GVKuserData1": {
"Group": ""<user data>",
"VersionuserData2":"<user data>"v1",
}
}
RETURN STATUS: 201
RETURN BODY:
{
"Kindmetadata": "Service"{
}"name":"<name>",
"cluster-namedescription": "cluster1<description>",
"NameuserData1":"<user data>"mongo",
"statususerData2":"<user data>"Running"
},
{
"GVK": {
"Group": "",
"Version": "v1",}
} |
GET, DELETE
Code Block |
---|
language | js |
---|
title | Get, Delete |
---|
linenumbers | true |
---|
|
GET
URL: /v2/cluster-providers/{provider-name}
RETURN STATUS: 200
RETURN BODY:
{
"metadata":{
"Kindname": "Service"
}<name>",
"cluster-namedescription": "cluster2<description>",
"NameuserData1": "mongo-read"<user data>",
"statususerData2":"<user "Terminated"
}
]data>"
}
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/destroy
POST BODY:
{
} }
}
DELETE
URL: /v2/cluster-providers/{provider-name}
RETURN STATUS: 201
RETURN BODY:
{
} |
Cluster Registration API
API to support Reachability for a Kubernetes Cloud. This API will be used to upload configuration information for the cluster
POST
This POST is a multipart POST. With the POST body containing the data about the cluster and the kubeconfig uploaded in multipart form.
...
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: /v2/cluster-providers/{provider-name}/clusters
POST BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
}
}
RETURN STATUS: 201
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
}
} |
GET, DELETE
Code Block |
---|
language | js |
---|
title | Get, Delete |
---|
linenumbers | true |
---|
|
GET
URL: /v2/cluster-providers/{provider/cluster-providers/{provider-name}/clusters/{cluster-name}
RETURN STATUS: 200
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
}
}
DELETE
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}
RETURN STATUS: 204
|
POST
...
Add Label to a cluster
POST
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}/labels
POST BODY:
{
“label-name” "metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
}
}
: “<label>”
}
RETURN STATUS: 201
RETURN BODY:
{
“label-name” : “<label>”
} |
GET, DELETE
Code Block |
---|
language | js |
---|
title | Get, Delete |
---|
linenumbers | true |
---|
|
GET
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}/labels/<label>
RETURN STATUS: 201200
RETURN BODY:
{
“label-name” : "metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
}
} |
...
“<label>”
}
GET (Query)
URL: /v2/cluster-providers/{provider-name}/clusters?label=<label>
RETURN STATUS: 200
RETURN BODY:
[<list of clusters>]
DELETE
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}/labels/<label>
RETURN STATUS: 204
|
Add key-value pair to a cluster
Add property to a cluster without the need for change to the API.
POST
Code Block |
---|
language | js |
---|
title | Get, DeletePOST |
---|
linenumbers | true |
---|
|
GET
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}
RETURN STATUS: 200
RETURN BODY: /kv-pairs
POST BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
}
}
DELETE
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}
RETURN STATUS: 204
|
Add Label to a cluster
POST
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}/labels
POST BODY:
{
“label-name” : “<label>”
}
RETURN STATUS: 201
RETURN BODY:
{
“label-name” : “<label>”
} |
GET, DELETE
Code Block |
---|
language | js |
---|
title | Get, Delete |
---|
linenumbers | true |
---|
|
GET
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}/labels/<label>
RETURN STATUS: 200
RETURN BODY:
{
“label-name” : “<label>”
}
DELETE
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}/labels/<label>
RETURN STATUS: 204
|
Add key-value pair to a cluster
Add property to a cluster without the need for change to the API.
POST
Code Block |
---|
language | js |
---|
title | POST |
---|
linenumbers | true |
---|
|
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}/kv-pairs
POST BODY: },
"spec":{
"kv":[
{
"key1":"val1"
},
{
"key2":"val2"
}
]
}
}
RETURN STATUS: 201
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"kv":[
{
"key1":"val1"
},
{
"key2":"val2"
}
]
}
} |
GET, DELETE
Code Block |
---|
language | js |
---|
title | Get, Delete |
---|
linenumbers | true |
---|
|
GET
}
}
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}/kv-pairs/<name>
RETURN STATUS: 201200
RETURN BODY:
{
"metadata":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"kv":[
{
"key1":"val1"
},
{
"key2":"val2"
}
]
}
} |
GET, DELETE
Code Block |
---|
language | js |
---|
title | Get, Delete |
---|
linenumbers | true |
---|
|
GET
GET (Query)
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}/kv-pairs/<name>?key=<key>
RETURN STATUS: 200
RETURN BODY:
{
"metadatavalue":{
"name":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"kv":[
{
<value>"
}
DELETE
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}/kv-pairs/<name>
RETURN STATUS: 204
|
Orchestrator Controller Registration API
This API allows controllers to register themselves as gRPC servers consumed by the orchestrator.
POST
Code Block |
---|
language | bash |
---|
title | POST |
---|
linenumbers | true |
---|
|
POST/PUT
URL: /v2/controllers
POST BODY:
{
"metadata":{
"key1name":"val1<name>",
}"description":"<description>",
{
"userData1":"<user data>",
"key2userData2":"val2<user data>"
},
"spec":{
]
}
}
GET
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}/kv-pairs/key/<key>
RETURN STATUS: 200
RETURN BODY:
{
"value": "<value>"
}
DELETE
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}/kv-pairs/<name>
RETURN STATUS: 204
|
Orchestrator Micro-service Registration API
This API allows micro-services to register themselves as gRPC servers consumed by the orchestrator.
IN-PROGRESS
"host": "10.7.100.4",
"port": 9029,
"type": "<type of controller>, // placement, action are 2 types supported
"priority": 2
}
} |
GET, DELETE
...
Code Block |
---|
language | bash |
---|
title | POSTGET, DELETE |
---|
linenumbers | true |
---|
|
POST/PUTGET
URL: /v2/microservices
POST/controllers/{controller-name}
RETURN STATUS: 200
RETURN BODY:
{
"metadata":{
"name": "HPA-Placement-Controller",
"ip-address":"<name>",
"description":"<description>",
"userData1":"<user data>",
"userData2":"<user data>"
},
"spec":{
"host": "10.7.100.4",
"port": 9029,
"type": "<type of controller>,
"priority": 8800
}
|
...
2
}
}
DELETE
URL: /v2/controllers/{controller-name}
RETURN STATUS: 204 |
Example CURL Command:
Code Block |
---|
language | bash |
---|
title | GET, DELETEPOST |
---|
linenumbers | true |
---|
|
GET
URL: curl -X GET "http://10.7.100.1:9015/v2/microservices/{microservice-name}
RETURN STATUS: 200
RETURN BODY:
{
"name": "HPA-Placement-Controller",
"ip-address": "controllers/hpa-placement-controller" -H "accept: */*" -H "Content-Type: application/json"
curl -X DELETE "http://10.7.100.4",
"port": 8800
}
DELETE
URL: 1:9015/v2/microservices/{microservice-name}
RETURN STATUS: 204controllers/hpa-placement-controller" -H "accept: */*" |