Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejs
titleGET, DELETE
linenumberstrue
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

DELETEGET (Query)
URL: /v2/project/{project-name}/composite-apps/{composite-app-name}/{version}/composite-profiles/{composite-profile-name}/profiles/{profile?app-name}=<app-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
languagejs
titlePOST
linenumberstrue
URL: /v2/projects/{project-name}/composite-apps/200
RETURN BODY: 
{
      "app-name":  "<name>"
}
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
languagejs
titlePOST
linenumberstrue
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/generic-placement-intents
POST BODY:
{
   "metadata":{/generic-placement-intents
POST BODY:
{
   "metadata":{
      "name":"<name>",
      "description":"<description>",
      "userData1":"<user data>",
      "name":"<name>",
      "description":"<description>",
      "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
   }
}

RETURN STATUS: 201
RETURN BODY: 
{
   "metadata":{
      "name":"<name>",
      "description":"<description>",
      "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
   }
}

...

Code Block
languagejs
titleGet, Delete
linenumberstrue
GET
URL:  /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/generic-placement-intents/{intent-name}

RETURN STATUS: 200
RETURN BODY: 
{
   "metadata":{
      "name":"<name>",
      "description":"<description>",
      "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
   }
}

DELETE
URL: /v2/project/{project-name}/composite-apps/{composite-app-name}/{version}/generic-placement-intentintents/{intent-name}

RETURN STATUS: 204

...

Code Block
languagejs
titlePOST
linenumberstrue
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
RETURN BODY: 
{
   "metadata":{
      "name":"<name>",
      "description":"<description>",
      "userData1":"<user data>",
      "userData2":"<user data>"
   },
   "spec":{
      "app-name":"name",
      "intent":{
         "allOf":[
            {
               "clusterprovider-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"
                  }
               ]
            }
         ]
      }
   }
}

...

Code Block
languagejs
titleGet, Delete
linenumberstrue
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":[
	{
        "name":"app1",
        "anyOf":[
           {
              "provider-name":"aws" 
			  "cluster-name":"edge1"
           },
           {
              "provider-name":"aws" 
			  "cluster-name":"edge2"
           }
        ]
     },
     {
        "name":"app2",
        "allOf":[
           {
              "provider-name":"aws" 
			   "cluster-name":"edge1"
           },
           {
              "clusterprovider-name":"edge2aws"
  
				"cluster-name":"edge2"
           }
        ]
     },
     {
        "name":"app3",
        "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: 200
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":"edge2"
            },
            {
               "anyOf":[
                  {
                     ""provider-name":"aws"  
					"cluster-label-name":"east-us1"
                  },
                  {
                    "provider-name":"aws"  
					"cluster-label-name":"east-us2"
                  }
               ]
            }
         ]
      }
   }
}

DELETEGET (Query)
URL: /v2/project/{project-name}/composite-apps/{composite-app-name}/{version}/generic-placement-intent/{intent-name}/appsapp-intents/{intent?app-name}=<app-name>

RETURN STATUS: 200
RETURN BODY: 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
languagejs
titlePOST
linenumberstrue
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups
POST BODY:
{
   "metadata":{
 
{
   "intent":{
      "allOf":[
         {
            "provider-name":"<name>aws",
      "description 
			"cluster-name":"<description>edge1",
      "userData1":"<user data>",
      "userData2":"<user data>"
   },
   "spec":   },
         {
      "profile":"<profile-name>",
      "versionprovider-name":"<version of the deployment>",
      "override-values":[aws" 
			"cluster-name":"edge2"
         {},
            "app-name":"<name>",{
            "valuesanyOf":[
               {
                  "imageRepositoryprovider-name":"registry.hub.docker.com"
    aws" 
					"cluster-label-name":"east-us1"
           }
      },
      ]
         },{
         {
            "appprovider-name":"<name>",
            "values":[
               {
                  "imageRepository":"registry.hub.docker.comaws" 
					"cluster-label-name":"east-us2"
               }
            ]
         }
      ]
   }
}
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
languagejs
titlePOST
linenumberstrue
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups
POST BODY:
{
   "metadata":{
      "name":"<name>",
      "description":"<description>",
      "userData1":"<user data>",
      "userData2":"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":[
               {
                  "imageRepository":"registry.hub.docker.com"
               }
            ]
         },
         {
            "app-name":"<name>",
            "values":[
               {
                  "imageRepository":"registry.hub.docker.com"
               }
            ]
         }
      ]
   }
}

GET, DELETE

Code Block
languagejs
titleGet, Delete
linenumberstrue
GET
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}

RETURN STATUS: 200
RETURN BODY: 
{
   "metadata"

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":[
               {
                  "imageRepository":"registry.hub.docker.com"
               }
            ]
         },
         {
            "app-name":"<name>",
            "values":[
               {
                  "imageRepository":"registry.hub.docker.com"
               }
            ]
         }
      ]
   }
}

GET, DELETE

Code Block
languagejs
titleGet, Delete
linenumberstrue
GETDELETE
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
languagejs
titlePOST
linenumberstrue
URL: v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/intents
POST BODY:
{ 
   200
RETURN BODY: 
{
   "metadata":{ 
      "name":"<name>",
      "description":"<description>",
      "userData1":"<user data>",
      "userData2":"<user data>"
   },
   "spec":{ 
      "intentprofile":{ "<profile-name>",
         "generic-placement-intent"version":"xyz-generic-placement-intent"
<version of the deployment>",
       }
   }
}

RETURN STATUS: 201
RETURN BODY: 
{ 
   "metadata":{ 
"status": "approved", // approved or not-approved 
      "override-values":[
         {
            "app-name":"<name>",
      "description":"<description>",
      "userData1values":"<user data>",

        "userData2":"<user data>"
   },
   "spec":{
 
       "intent":{ 
         "generic-placement-intentimageRepository":"xyz-generic-placement-intent"
 registry.hub.docker.com",
				  "another_key":"another_value"
     }
    }
}

GET, DELETE

Code Block
languagejs
titleGet, Delete
linenumberstrue
GET
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/intents/{intent-name}
{ 
   "metadata":{ }
      "name":"<name>",
      "description":"<description>",

       "userData1":"<user data>",
  },
         {
            "userData2app-name":"<user data><name>",
       },
     "specvalues":
               {
    
      "intent":{ 
       "imageRepository":"registry.hub.docker.com",
				  "generic-placement-intentanother_key":"xyz-generic-placement-intentanother_value"
      }
   }      }
            
         }
      ]
   }
}

GETDELETE
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/intents

RETURN STATUS: 200204
RETURN BODY: 
{
     "intent":[
      {
         "generic-placement-intent":"generic-

Adding intents to an Intent group

POST

Code Block
languagejs
titlePOST
linenumberstrue
URL: v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/intents
POST BODY:
{ 
   "metadata":{ 
placement-intent-name"
      },
      {
         "hpa-placement-intentname":"hpa-placement-intent-name"<name>",
      }"description":"<description>",
       {"userData1":"<user data>",
         "traffic-intent"userData2":"traffic-intent-name<user data>"
   },
   }
   ]
}

DELETE
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/intents/{intent-name"spec":{ 
      "intent":{ 
         "generic-placement-intent":"xyz-generic-placement-intent"
      }
   }
}

RETURN STATUS: 201
RETURN BODY: 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

{ 
   "metadata":{ 
      "name":"<name>",
      "description":"<description>",
      "userData1":"<user data>",
      "userData2":"<user data>"
   },
   "spec":{ 
      "intent":{ 
         "generic-placement-intent":"xyz-generic-placement-intent"
      }
   }
}

GET, DELETE

Code Block
languagejs
titleGet, Delete
linenumberstrue
GET
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/intents/{intent-name}
{ 
   "metadata":{ 
      "name":"<name>",
      "description":"<description>",
      "userData1":"<user data>",
      "userData2":"<user data>"
   },
   "spec":{ 
      "intent":{ 
         "generic-placement-intent":"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: 
{
     "intent":[
      {
         "generic-placement-intent":"generic-placement-intent-name"
      },
      {
         "hpa":"hpa-placement-intent-name"
      },
      {
         "traffic":"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>
{  
         "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
languagejs
titlePOST
linenumberstrue
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: 
{  
}

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: 
{  
}


URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-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: 
{  
  "name": "<name>",
  "composite-app-name": "test-app",
  "composite-app-version": "v1",
  "profile-name": "test-app-profile",
  "intent-group": "intent-group-1"
  "namespace": "testinstallns",
  "resources": 
[
  {
    "app-name": "collectd",
    "clusters": [
      {
        "name": "cluster1",
        "resources": [
          {
            "GVK": {
              "Group": "",
              "Version": "v1",
              "Kind": "Service"
            },
            "Name": "mongo",
            "status": "Running"
          },
          {
            "GVK": {
              "Group": "",
              "Version": "v1",
              "Kind": "Service"
            },
    
Code Block
languagejs
titlePOST
linenumberstrue
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: 
{  
}

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: 
{  
}

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": [
    {
      "GVK": {
        "GroupName": "mongo-read",
            "Versionstatus": "v1Terminated",
          }
       "Kind": "Service" ]
      },
    ]
  "cluster-name": "cluster1",
      "Name": "mongo",
      "status": "Running"
    },
    {
      "GVK": {
        "Group": "",
        "Version": "v1",
   }
]

Status Queries:
URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/status?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
languagejs
titlePOST
linenumberstrue
URL: /v2/cluster-providers
POST BODY:
{
   "metadata":{
      "Kindname": "Service"
      }<name>",
      "cluster-namedescription": "cluster2<description>",
      "NameuserData1": "mongo-read"<user data>",
      "statususerData2":"<user "Terminated"
    }
  ]
  
}

URL: /v2/projects/{project-name}/composite-apps/{composite-app-name}/{version}/deployment-intent-groups/{deployment-intent-group-name}/destroy
POST BODY:
{
}data>"
   }
}


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

...

   "metadata":{
      "name":"<name>",
      "description":"<description>",
      "userData1":"<user data>",
      "userData2":"<user data>"
   }
}


GET, DELETE

Code Block
languagejs
titlePOSTGet, Delete
linenumberstrue
GET
URL: /v2/cluster-providers
POST/{provider-name}

RETURN STATUS: 200
RETURN BODY: 
{
   "metadata":{
      "name":"<name>",
      "description":"<description>",
      "userData1":"<user data>",
      "userData2":"<user data>"
   }
}


DELETE
URL: /v2/cluster-providers/{provider-name}

RETURN STATUS: 204

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
languagejs
titlePOST
linenumberstrue
URL: /v2/cluster-providers/{provider-name}/clusters
POST BODY:: 201
RETURN BODY: 
{
   "metadata":{
      "name":"<name>",
      "description":"<description>",
      "userData1":"<user data>",
      "userData2":"<user data>"
   }
}

...

Code Block
languagejs
titleGet, Delete
linenumberstrue
GET
URL: /v2/cluster-providers/{provider-name}

RETURN STATUS: 200201
RETURN BODY: 
{
   "metadata":{
      "name":"<name>",
      "description":"<description>",
      "userData1":"<user data>",
      "userData2":"<user data>"
   }
}


DELETE
URL: /v2/cluster-providers/{provider-name}

RETURN STATUS: 204

POST

...


GET, DELETE

Code Block
languagejs
titlePOSTGet, Delete
linenumberstrue
GET
URL: /v2/cluster-providers/{provider-name}/clusters
POST/{cluster-name}

RETURN STATUS: 200
RETURN BODY: 
{
   "metadata":{
      "name":"<name>",
      "description":"<description>",
      "userData1":"<user data>",
      "userData2":"<user data>"
   }
}


RETURN STATUS: 201DELETE
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}

RETURN BODYSTATUS: 204
{
   "metadata":{
      "name":"<name>",
      "description":"<description>",
      "userData1":"<user data>",
      "userData2":"<user data>"
   }

Add Label to a cluster

POST

Code Block
languagejs
titlePOST
linenumberstrue
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
languagejs
titleGet, Delete
linenumberstrue
GET
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}

RETURN STATUS: 200
RETURN BODY: 
{
   "metadata":{
      "name":"<name>",
      "description":"<description>",
      "userData1":"<user data>",
      "userData2":"<user data>"
   }
}/labels/<label>

RETURN STATUS: 200
RETURN BODY: 
{
      “label-name” : “<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
languagejs
titlePOST
linenumberstrue
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}/labelskv-pairs
POST BODY:
{
   "metadata":{
    “label-name” : “<label>”
}

RETURN STATUS: 201
RETURN BODY: 
{ 
     “label-name” : “<label>”
}

GET, DELETE

Code Block
languagejs
titleGet, Delete
linenumberstrue
GET
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}/labels/<label>

RETURN STATUS: 200
RETURN BODY: 
{
      “label-name” : “<label>”
}

GET
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
languagejs
titlePOST
linenumberstrue
URL: /v2/cluster-providers/{provider-name}/clusters/{cluster-name}/kv-pairs
POST BODY:
      "name":"<name>",
      "description":"<description>",
      "userData1":"<user data>",
      "userData2":"<user data>"
   },
   "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
languagejs
titleGet, Delete
linenumberstrue
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
languagejs
titleGet, Delete
linenumberstrue
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
languagebash
titlePOST
linenumberstrue
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 Controller Registration API

This API allows controllers 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
languagebash
titlePOSTGET, DELETE
linenumberstrue
POST/PUTGET
URL: /v2/controllers
POST BODY:
{
  "name": "HPA-Placement-Controller",
 /{controller-name}

RETURN STATUS: 200
RETURN BODY: 
{
   "metadata":{
      "name":"<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
languagebash
titleGET, DELETEPOST
linenumberstrue
curl -X GET "http://10.7.100.1:9015GET
URL: /v2/controllers/{controller-name}

RETURN STATUS: 200
RETURN BODY: 
{
  "name": "HPA-Placement-Controller",
  "host": "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/controllers/{controller-name}

RETURN STATUS: 204hpa-placement-controller" -H "accept: */*"