shovel/api/swagger.json
Andre Keedy 50ec0f2000 Add support to run an ansible playbook
- Add an API to upload a playbook
- Add an API to run an ansible playbook on a rackHD node
- fix new eslint errors
- Add unit tests

Change-Id: Ibe623c228c6ac13cab0f2726e267878bec1bdb6e
Implements: blueprint shovel-deployment-capability
2016-03-08 15:31:50 +00:00

882 lines
20 KiB
JSON

{
"swagger": "2.0",
"info": {
"title": "Shovel APIs",
"description": "",
"version": "1.0.0"
},
"produces": [ "application/json" ],
"basePath": "/api/1.1",
"paths": {
"/info": {
"get": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Shovel Config" ],
"operationId": "infoGet",
"summary": "Get nodes info",
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/shovel/config": {
"get": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Shovel Config" ],
"operationId": "configget",
"summary": "Get shovel config file",
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/shovel/set-config": {
"post": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Shovel Config" ],
"operationId": "configset",
"summary": "set shovel config file",
"parameters": [
{
"name": "Shovel Config Info",
"in": "body",
"description": "Shovel Config Info",
"required": true,
"schema": {
"$ref": "#/definitions/config"
}
}
],
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/shovel/monorail/set-config": {
"post": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Shovel Config" ],
"operationId": "configsetmono",
"summary": "set shovel- monorail info",
"parameters": [
{
"name": "Shovel Config Info",
"in": "body",
"description": "Shovel Config Info",
"required": true,
"schema": {
"$ref": "#/definitions/monorail"
}
}
],
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/shovel/ironic/set-config": {
"post": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Shovel Config" ],
"operationId": "configsetironic",
"summary": "set shovel ironic info",
"parameters": [
{
"name": "Shovel Config Info",
"in": "body",
"description": "Shovel Config Info",
"required": true,
"schema": {
"$ref": "#/definitions/ironic"
}
}
],
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/shovel/glance/set-config": {
"post": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Shovel Config" ],
"operationId": "configsetglance",
"summary": "set shovel glance info",
"parameters": [
{
"name": "Shovel Config Info",
"in": "body",
"description": "Shovel Config Info",
"required": true,
"schema": {
"$ref": "#/definitions/glance"
}
}
],
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/shovel/keystone/set-config": {
"post": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Shovel Config" ],
"operationId": "configsetkeystone",
"summary": "set shovel Keystone info",
"parameters": [
{
"name": "Shovel Config Info",
"in": "body",
"description": "Shovel Config Info",
"required": true,
"schema": {
"$ref": "#/definitions/keystone"
}
}
],
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/catalogs/{identifier}": {
"get": {
"x-swagger-router-controller": "Shovel",
"tags": [ "RackHD API Wrappers" ],
"operationId": "catalogsGet",
"parameters": [
{
"name": "identifier",
"in": "path",
"description": "rackhd node ID",
"required": true,
"type": "string"
}
],
"summary": "Get catalog for a specified node",
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/catalogs/{identifier}/{source}": {
"get": {
"x-swagger-router-controller": "Shovel",
"tags": [ "RackHD API Wrappers" ],
"operationId": "catalogsbysourceGet",
"parameters": [
{
"name": "identifier",
"in": "path",
"description": "rackhd node ID",
"required": true,
"type": "string"
},
{
"name": "source",
"in": "path",
"description": "source",
"required": true,
"type": "string"
}
],
"summary": "Get source in the catalog for a specified node",
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/nodes/{identifier}": {
"get": {
"x-swagger-router-controller": "Shovel",
"tags": [ "RackHD API Wrappers" ],
"operationId": "nodeGet",
"parameters": [
{
"name": "identifier",
"in": "path",
"description": "rackhd node ID",
"required": true,
"type": "string"
}
],
"summary": "get specific node by id",
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/nodes": {
"get": {
"x-swagger-router-controller": "Shovel",
"tags": [ "RackHD API Wrappers" ],
"operationId": "nodesGet",
"summary": "get All rackhd Nodes that been discovered with BMC,DMI information",
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/nodes/{identifier}/sel": {
"get": {
"x-swagger-router-controller": "Shovel",
"tags": [ "RackHD API Wrappers" ],
"operationId": "getSeldata",
"parameters": [
{
"name": "identifier",
"in": "path",
"description": "Node SEL information",
"required": true,
"type": "string"
}
],
"summary": "get current SEL data for specified node ID",
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/ironic/nodes": {
"get": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Ironic API Wrappers" ],
"operationId": "ironicnodesGet",
"summary": "get All ironic Nodes",
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/ironic/node/{identifier}": {
"patch": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Ironic API Wrappers" ],
"operationId": "ironicnodePatch",
"summary": "patch specified ironic node",
"parameters": [
{
"name": "identifier",
"in": "path",
"description": "Ironic node ID",
"required": true,
"type": "string"
},
{
"name": "patchnode",
"in": "body",
"description": "Node patch form data",
"required": true,
"schema": {
"$ref": "#/definitions/patchnode"
}
}
],
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/ironic/chassis/{identifier}": {
"get": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Ironic API Wrappers" ],
"operationId": "ironicchassisGet",
"summary": "get Ironic chassis by id",
"parameters": [
{
"name": "identifier",
"in": "path",
"description": "Ironic node ID",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/ironic/nodes/{identifier}": {
"get": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Ironic API Wrappers" ],
"operationId": "ironicnodeGet",
"summary": "get Ironic node by name",
"parameters": [
{
"name": "identifier",
"in": "path",
"description": "Ironic node name or ID",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/register": {
"post": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Shoveling" ],
"operationId": "registerpost",
"summary": "Register an rackhd node in Ironic",
"parameters": [
{
"name": "Node Info",
"in": "body",
"description": "Node Registration info",
"required": true,
"schema": {
"$ref": "#/definitions/regnode"
}
}
],
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/unregister/{identifier}": {
"delete": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Shoveling" ],
"operationId": "unregisterdel",
"summary": "UnRegister a node from Ironic",
"parameters": [
{
"name": "identifier",
"in": "path",
"description": "Ironic node ID",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/ironic/drivers": {
"get": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Ironic API Wrappers" ],
"operationId": "driversGet",
"summary": "Get all the drivers used in Ironic",
"responses": {
"200": {
"description": "Not implemented",
"headers": {
"x-expires": {
"type": "string"
}
}
},
"default": {
"description": "unexpected error"
}
}
}
},
"/glance/images": {
"get": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Glance API Wrappers" ],
"operationId": "imagesGet",
"summary": "Get all the images in Glance",
"responses": {
"200": {
"description": "Not implemented",
"headers": {
"x-expires": {
"type": "string"
}
}
},
"default": {
"description": "unexpected error"
}
}
}
},
"/deployos/{identifier}/": {
"post": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Nodes Provisionning" ],
"operationId": "deployOS",
"summary": "Deploy OS to a specific node",
"parameters": [
{
"name": "identifier",
"in": "path",
"description": "rackHD node ID",
"required": true,
"type": "string"
},
{
"name": "Config",
"in": "body",
"description": "OS Configuration",
"required": true,
"schema": {
"$ref": "#/definitions/deployos"
}
}
],
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/worflow-status/{identifier}": {
"get": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Nodes Provisionning" ],
"operationId": "workflowStatus",
"summary": "Get status of an active worflow running on a certain node in rackHD",
"parameters": [
{
"name": "identifier",
"in": "path",
"description": "rackHD node ID",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
},
"/run/ansible-playbook/{identifier}": {
"post": {
"x-swagger-router-controller": "Shovel",
"tags": [ "Nodes Provisionning" ],
"operationId": "runAnsible",
"summary": "run the uploaded ansible playbook",
"parameters": [
{
"name": "identifier",
"in": "path",
"description": "rackHD node ID",
"required": true,
"type": "string"
},
{
"name": "Config",
"in": "body",
"description": "OS Configuration",
"required": true,
"schema": {
"$ref": "#/definitions/run-ansible"
}
}
],
"responses": {
"200": {
"description": "Not Implemented"
},
"default": {
"description": "unexpected error"
}
}
}
}
},
"definitions": {
"monorail": {
"type": "object",
"properties": {
"httpHost": {
"type": "string"
},
"httpPort": {
"type": "string"
},
"version": {
"type": "string"
}
}
},
"config": {
"type": "object",
"properties": {
"httpPort": {
"type": "integer",
"format": "int32"
}
}
},
"ironic": {
"type": "object",
"properties": {
"httpHost": {
"type": "string"
},
"httpPort": {
"type": "string"
},
"version": {
"type": "string"
},
"os_username": {
"type": "string"
},
"os_password": {
"type": "string"
},
"os_tenant_name": {
"type": "string"
},
"os_auth_token": {
"type": "string"
},
"insecure": {
"type": "string"
}
}
},
"glance": {
"type": "object",
"properties": {
"httpHost": {
"type": "string"
},
"httpPort": {
"type": "string"
},
"version": {
"type": "string"
},
"os_username": {
"type": "string"
},
"os_password": {
"type": "string"
},
"os_tenant_name": {
"type": "string"
},
"os_auth_token": {
"type": "string"
},
"insecure": {
"type": "string"
}
}
},
"keystone": {
"type": "object",
"properties": {
"httpHost": {
"type": "string"
},
"httpPort": {
"type": "string"
},
"version": {
"type": "string"
}
}
},
"regnode": {
"type": "object",
"required": [
"uuid",
"kernel",
"ramdisk",
"port"
],
"properties": {
"uuid": {
"type": "string"
},
"driver": {
"type": "string"
},
"ipmihost": {
"type": "string"
},
"ipmiuser": {
"type": "string"
},
"ipmipass": {
"type": "string"
},
"sshhost": {
"type": "string"
},
"sshuser": {
"type": "string"
},
"sshpass": {
"type": "string"
},
"sshport": {
"type": "string"
},
"name": {
"type": "string"
},
"kernel": {
"type": "string"
},
"ramdisk": {
"type": "string"
},
"port": {
"type": "string"
}
}
},
"patchnode": {
"type": "array",
"items": {
"type": "object"
}
},
"deployos": {
"type": "object",
"required": [
"name",
"options"
],
"properties": {
"name": {
"type": "string",
"example": "Graph.InstallCentOS"
},
"options": {
"type": "object",
"required": [
"defaults"
],
"properties": {
"defaults": {
"type": "object",
"properties": {
"obmServiceName": {
"type": "string",
"example": "ipmi-obm-service"
}
}
},
"install-os": {
"type": "object",
"properties": {
"repo": {
"type": "string"
},
"rootPassword": {
"type": "string"
},
"users": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"password"
],
"properties": {
"name": {
"type": "string"
},
"password": {
"type": "string"
},
"uid": {
"type": "integer"
}
}
}
},
"networkDevices": {
"type": "array",
"items": {
"type": "object",
"required": [
"device",
"ipv4"
],
"properties": {
"device": {
"type": "string"
},
"ipv4": {
"type": "object"
}
}
}
}
}
}
}
}
}
},
"run-ansible": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"example": "runExample"
},
"vars": {
"type": "object"
},
"playbookPath": {
"type": "string",
"example": "files/extract/main.yml"
}
}
}
}
}