Files
kubevela/documentation/api/vela-restful-api-reference.md
2020-10-06 00:25:16 -07:00

17 KiB
Raw Blame History

vela Restful API Reference

API response introduction

The API response contains two keys: code and data

The API response is in json format which contains two keys: code and data.

{
	"code": RESPONSE_CODE,
	"data": RESPONSE_DATA
}

code represents the status of a request

The type of code is Number, currently it allows two codes.

  • 200 - StatusOK
  • 500 - StatusInternalServerError

data represents the response data.

  • code == 500

data contains the error message.

  • code == 200

The type of data is Object or Object list if method is Get, or is String type the content of which represents the successful message.

API list

Env

POST /api/envs/ (env init)

  • example

sample request:

{"envName":"ccc","namespace":"ccc"}

sample response:

{
"code": 200,
"data": "Create env succeed"
}

GET /api/envs/ (env list)

  • Response current of the elment of data indicates the currently using environment.

  • example

sample response:

{
	"code": 200,
	"data": [{
		"envName": "ccc",
		"current": "*",
		"namespace": "ccc"
	}, {
		"envName": "default",
		"namespace": "default"
	}, {
		"envName": "env-application",
		"namespace": "env-application"
	}, {
		"envName": "env-hello",
		"namespace": "env-hello"
	}, {
		"envName": "env-poc",
		"namespace": "env-poc"
	}, {
		"envName": "env-trait",
		"namespace": "env-trait"
	}, {
		"envName": "env-workload",
		"namespace": "env-workload"
	}]
}

Get /api/envs/:envName (env description)

  • example sample response
{"code":200,"data":[{"envName":"ccc","namespace":"ccc"}]}

DELETE /api/envs/:envName (env delete)

  • example sample response
{
"code": 200,
"data": "abcd deleted"
}
{
"code": 500,
"data": "you can't delete current using env abc"
}

PATCH /api/envs/:envName (env set)

  • example sample response
{"code":200,"data":"Set env succeed"}
{"code":500,"data":"abcd not exist"}

PUT /api/envs/:envName (env update)

  • example

sample request:

{"namespace":"ccc"}

sample response:

{
"code": 200,
"data": "Update env succeed"
}
{
"code":500,
"data":"env <envName> does not exist"
}

Application

GET /api/envs/default/apps/ (app list)

  • response status of the element of data represents the status of the application

    • Truenormal
    • Falsefatal
    • UNKNOWNdeploying
  • example sample response

{
	"code": 200,
	"data": [{
		"name": "poc2040",
		"workload": "ContainerizedWorkload",
		"status": "True",
		"created": "2020-08-17 15:09:27 +0800 CST"
	}]
}
{
	"code": 500,
	"data": "hit some issues"
}

GET /api/envs/:envName/apps/:appName (app description)

  • example sample response
{
    "code": 200,
    "data": {
        "Status": "True",
        "Components": [
            {
                "name": "web-comp",
                "Status": "True",
                "workload": {
                    "apiVersion": "standard.oam.dev/v1alpha1",
                    "kind": "PodSpecWorkload",
                    "metadata": {
                        "name": "web-comp"
                    },
                    "spec": {
                        "podSpec": {
                            "containers": [
                                {
                                    "image": "nginx:1.9.4",
                                    "name": "web-comp",
                                    "ports": [
                                        {
                                            "containerPort": 80,
                                            "name": "default",
                                            "protocol": "TCP"
                                        }
                                    ]
                                }
                            ]
                        },
                        "replicas": 1
                    }
                },
                "Traits": [
                    {
                        "trait": {
                            "apiVersion": "standard.oam.dev/v1alpha1",
                            "kind": "Route",
                            "metadata": {
                                "annotations": {
                                    "trait.oam.dev/name": "route"
                                }
                            },
                            "spec": {
                                "backend": {
                                    "port": 0
                                },
                                "host": "web-comp.poc.oam.dev",
                                "path": "",
                                "tls": {
                                    "issuerName": "oam-env-default"
                                }
                            }
                        }
                    }
                ]
            },
            {
                "name": "comp1",
                "Status": "True",
                "workload": {
                    "apiVersion": "standard.oam.dev/v1alpha1",
                    "kind": "PodSpecWorkload",
                    "metadata": {
                        "name": "comp1"
                    },
                    "spec": {
                        "podSpec": {
                            "containers": [
                                {
                                    "image": "nginx:1.9.4",
                                    "name": "comp1",
                                    "ports": [
                                        {
                                            "containerPort": 6379,
                                            "name": "default",
                                            "protocol": "TCP"
                                        }
                                    ]
                                }
                            ]
                        },
                        "replicas": 1
                    }
                }
            }
        ]
    }
}

DELETE /api/envs/:envName/apps/:appName (app delete)

  • example sample response
{
    "code": 200,
    "data": "delete apps succeed <appName> from <envName>"
}

Components

GET /api/envs/:envName/apps/:appName/components/:compName (component details)

  • example sample response
{
    "code": 200,
    "data": {
        "name": "web-comp",
        "Status": "True",
        "workload": {
            "apiVersion": "standard.oam.dev/v1alpha1",
            "kind": "PodSpecWorkload",
            "metadata": {
                "name": "web-comp"
            },
            "spec": {
                "podSpec": {
                    "containers": [
                        {
                            "image": "nginx:1.9.4",
                            "name": "web-comp",
                            "ports": [
                                {
                                    "containerPort": 80,
                                    "name": "default",
                                    "protocol": "TCP"
                                }
                            ]
                        }
                    ]
                },
                "replicas": 1
            }
        },
        "Traits": [
            {
                "trait": {
                    "apiVersion": "standard.oam.dev/v1alpha1",
                    "kind": "Route",
                    "metadata": {
                        "annotations": {
                            "trait.oam.dev/name": "route"
                        }
                    },
                    "spec": {
                        "backend": {
                            "port": 0
                        },
                        "host": "web-comp.poc.oam.dev",
                        "path": "",
                        "tls": {
                            "issuerName": "oam-env-default"
                        }
                    }
                }
            }
        ]
    }
}

GET /api/envs/:envName/apps/:appName/components/ (component list)

Same as GET /api/envs/:envName/apps/:appName (app description).

DELETE /api/envs/:envName/apps/:appName/components/:compName (component delete)

  • example sample response
{
"code": 200,
"data": "delete apps succeed a1 from default"
}

Workloads

POST /api/workloads/ (workload create, component create)

  • parameters
type WorkloadRunBody struct {
	EnvName      string       `json:"env_name"`
	WorkloadType string       `json:"workload_type"`
	WorkloadName string       `json:"workload_name"`
	AppGroup     string       `json:"app_group,omitempty"`
	Flags        []CommonFlag `json:"flags"`
	Staging      bool         `json:"staging,omitempty"`
	Traits       []TraitBody  `json:"traits,omitempty"`
}

The parameter should in TraitBody format and Trait should be in the following format.

type TraitBody struct {
	EnvName      string       `json:"env_name"`
	Name         string       `json:"name"`
	Flags        []CommonFlag `json:"flags"`
	WorkloadName string       `json:"workload_name"`
	AppGroup     string       `json:"app_group,omitempty"`
}
  • example sample request
{
  "env_name": "default",
  "workload_type": "podspecworkload",
  "workload_name": "poc2",
  "flags": [
    {
      "name": "image",
      "value": "nginx:1.9.4"
    },
    {
      "name": "port",
      "value": "80"
    }
  ],
}

sample response

{
"code": 200,
"data": "Creating App poc2 SUCCEED"
}

Please also specify traits values if need to attach a trait to several traits to the application during workload creation.

{
  "env_name": "default",
  "workload_type": "podspecworkload",
  "workload_name": "poc5",
  "app_group": "",
  "flags": [
    {
      "name": "port",
      "value": "80"
    },
    {
      "name": "image",
      "value": "nginx:1.9.4"
    }
  ],
  "staging": false,
  "traits": [
    {
      "name": "scale",
      "env_name": "default",
      "workload_name": "poc5",
      "flags": [
        {
          "name": "replica",
          "value": "4"
        }
      ]
    }
  ]
}

GET /api/workloads/:workloadName (workload description)

  • example sample response
{
	"code": 200,
	"data": {
		"name": "podspecworkload",
		"type": "workload",
		"template": "#Template: {\n\tapiVersion: \"core.oam.dev/v1alpha2\"\n\tkind:       \"PodSpecWorkload\"\n\tmetadata: name: podspecworkload.name\n\tspec: {\n\t\tcontainers: [{\n\t\t\timage: containerized.image\n\t\t\tname:  containerized.name\n\t\t\tports: [{\n\t\t\t\tcontainerPort: containerized.port\n\t\t\t\tprotocol:      \"TCP\"\n\t\t\t\tname:          \"default\"\n\t\t\t}]\n\t\t}]\n\t}\n}\ncontainerized: {\n\tname: string\n\t// +usage=specify app image\n\t// +short=i\n\timage: string\n\t// +usage=specify port for container\n\t// +short=p\n\tport: *6379 | int\n}\n",
		"parameters": [{
			"name": "name",
			"required": true,
			"default": "",
			"type": 16
		}, {
			"name": "image",
			"short": "i",
			"required": true,
			"default": "",
			"usage": "specify app image",
			"type": 16
		}, {
			"name": "port",
			"short": "p",
			"default": 6379,
			"usage": "specify port for container",
			"type": 4
		}],
		"definition": "/Users/zhouzhengxi/.vela/capabilities/containerizedworkloads.core.oam.dev.cue",
		"crdName": "containerizedworkloads.core.oam.dev",
		"crdInfo": {
			"apiVersion": "core.oam.dev/v1alpha2",
			"kind": "ContainerizedWorkload"
		}
	}
}

GET /api/workloads/ (workloads list)

  • example sample response
{
	"code": 200,
	"data": [{
		"name": "podspecworkload",
		"parameters": [{
			"name": "name",
			"required": true,
			"default": "",
			"type": 16
		}, {
			"name": "image",
			"short": "i",
			"required": true,
			"default": "",
			"usage": "specify app image",
			"type": 16
		}, {
			"name": "port",
			"short": "p",
			"default": 6379,
			"usage": "specify port for container",
			"type": 4
		}]
	}, {
		"name": "deployment",
		"parameters": [{
			"name": "name",
			"required": true,
			"default": "",
			"type": 16
		}, {
			"name": "env",
			"type": 128
		}, {
			"name": "image",
			"required": true,
			"default": "",
			"type": 16
		}, {
			"name": "port",
			"default": 8080,
			"type": 4
		}]
	}]
}

Trait

POST /envs/:envName/apps/:appName/components/:compName/traits/ (attach a trait)

  • example sample request
{
  "name": "scale",
  "flags": [
    {
      "name": "replica",
      "value": "4"
    }
  ]
}

sample response

{
"code": 200,
"data": "Succeeded!"
}

GET /api/traits/:traitName (trait description)

  • example sample response
{
	"code": 200,
	"data": {
		"name": "manualscaler",
		"type": "trait",
		"template": "#Template: {\n\tapiVersion: \"core.oam.dev/v1alpha2\"\n\tkind:       \"ManualScalerTrait\"\n\tspec: {\n\t\treplicaCount: manualscaler.replica\n\t}\n}\nmanualscaler: {\n\t//+short=r\n\treplica: *2 | int\n}\n",
		"parameters": [{
			"name": "replica",
			"short": "r",
			"default": 2,
			"type": 4
		}],
		"definition": "/Users/zhouzhengxi/.vela/capabilities/manualscalertraits.core.oam.dev.cue",
		"crdName": "manualscalertraits.core.oam.dev",
		"appliesTo": ["containerizedworkload"],
		"crdInfo": {
			"apiVersion": "core.oam.dev/v1alpha2",
			"kind": "ManualScalerTrait"
		}
	}
}

GET /api/traits/ (traits list)

  • response applies_to shows the workload list which the trait can be attached.

  • example sample response

{
	"code": 200,
	"data": [{
		"name": "manualscaler",
		"definition": "manualscalertraits.core.oam.dev",
		"applies_to": ["podspecworkload"]
	}, {
		"name": "rollout",
		"definition": "simplerollouttraits.extend.oam.dev",
		"applies_to": ["podspecworkload", "deployment"]
	}, {
		"name": "scale",
		"definition": "manualscalertraits.core.oam.dev",
		"applies_to": ["podspecworkload", "deployment"]
	}]
}

DELETE /envs/:envName/apps/:appName/components/:compName/traits/:traitName (detach a trait)

  • example sample response
{"code":200,"data":"Succeeded!"}

Capability

GET /capability-centers/ (Capability Center list)

  • example sample response
{
	"code": 200,
	"data": [{
		"name": "poc",
		"url": "https://github.com/wonderflow/catalog/tree/repos/repos"
	}, {
		"name": "abc",
		"url": "http://abc.com"
	}]
}

PUT /capability-centers/ (Capability Center add)

  • example sample request
{"Name":"c1","Address":"https://github.com/wonderflow/catalog/tree/repos/repos"}

DELETE /capability-centers/:capabilityCenterName/ (Capability Center delete)

  • example sample response
{
"code": 200,
"data": "mycenter capability center removed successfully"
}

PUT /capability-centers/:capabilityCenterName/capabilities/ (Capability Center sync)

  • example
    • response
{
"code": 200,
"data": "sync finished"
}

PUT /capability-centers/:capabilityCenterName/capabilities/:capabilityName (install a capability)

  • example sample API url /api/capability-centers/c1/capabilities/rollout sample response
{"code":200,"data":"Successfully installed capability rollout from c1"}

DELETE /api/capabilities/:capabilityName (delete the capability)

  • example sample response
{"code":200,"data":"podspecworkload removed successfully"}

GET /api/capabilities/ (capability list)

  • example sample response
{
	"code": 200,
	"data": [{
		"name": "podspecworkload",
		"type": "workload",
		"template": "#Template: {\n\tapiVersion: \"core.oam.dev/v1alpha2\"\n\tkind:       \"ContainerizedWorkload\"\n\tmetadata: name: podspecworkload.name\n\tspec: {\n\t\tcontainers: [{\n\t\t\timage: containerized.image\n\t\t\tname:  containerized.name\n\t\t\tports: [{\n\t\t\t\tcontainerPort: containerized.port\n\t\t\t\tprotocol:      \"TCP\"\n\t\t\t\tname:          \"default\"\n\t\t\t}]\n\t\t}]\n\t}\n}\ncontainerized: {\n\tname: string\n\t// +usage=specify app image\n\t// +short=i\n\timage: string\n\t// +usage=specify port for container\n\t// +short=p\n\tport: *6379 | int\n}\n",
		"parameters": [{
			"name": "name",
			"required": true,
			"default": "",
			"type": 16
		}, {
			"name": "image",
			"short": "i",
			"required": true,
			"default": "",
			"usage": "specify app image",
			"type": 16
		}, {
			"name": "port",
			"short": "p",
			"default": 6379,
			"usage": "specify port for container",
			"type": 4
		}],
		"definition": "/Users/zhouzhengxi/.vela/centers/c1/.tmp/containerizedworkloads.core.oam.dev.cue",
		"crdName": "containerizedworkloads.core.oam.dev",
		"center": "c1",
		"status": "uninstalled"
	},{
		"name": "rollout",
		"type": "trait",
		"template": "#Template: {\n\tapiVersion: \"extend.oam.dev/v1alpha2\"\n\tkind:       \"SimpleRolloutTrait\"\n\tspec: {\n\t\treplica:        rollout.replica\n\t\tmaxUnavailable: rollout.maxUnavailable\n\t\tbatch:          rollout.batch\n\t}\n}\nrollout: {\n\treplica:        *3 | int\n\tmaxUnavailable: *1 | int\n\tbatch:          *2 | int\n}\n",
		"parameters": [{
			"name": "replica",
			"default": 3,
			"type": 4
		}, {
			"name": "maxUnavailable",
			"default": 1,
			"type": 4
		}, {
			"name": "batch",
			"default": 2,
			"type": 4
		}],
		"definition": "/Users/zhouzhengxi/.vela/centers/poc/.tmp/simplerollouttraits.extend.oam.dev.cue",
		"crdName": "simplerollouttraits.extend.oam.dev",
		"center": "poc",
		"appliesTo": ["podspecworkload", "deployment"],
		"status": "uninstalled"
	}]
}

Others

  • applications search