![Andre Keedy](/assets/img/avatar_default.png)
- 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
882 lines
20 KiB
JSON
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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|