From 29da11770a48115b70f76ed1b70f0031abb121d6 Mon Sep 17 00:00:00 2001 From: Lei Lei Date: Mon, 27 Apr 2015 10:49:44 -0700 Subject: [PATCH] Add api.raml 1.create the api raml file add it to code base. 2.generate an api console from api raml file on syscompass.org. 3.update api.py and api.raml at the same time to keep in sync. Change-Id: I6636a1b4a40c703d36ce3c194f5c030f31ad33f8 --- compass/api/api.raml | 3297 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 3297 insertions(+) create mode 100644 compass/api/api.raml diff --git a/compass/api/api.raml b/compass/api/api.raml new file mode 100644 index 00000000..82f23eca --- /dev/null +++ b/compass/api/api.raml @@ -0,0 +1,3297 @@ +#%RAML 0.8 +title: Compass +version: v1 +baseUri: http://syscompass.org +/permissions: + get: + responses: + 200: + body: + application/json: + example: | + [ + { + "alias": "list permissions", + "description": "list all permissions", + "id": 1, + "name": "list_permissions" + }, + ] + description: List all permissions + /{permission_id}: + get: + responses: + 200: + body: + application/json: + example: | + [ + { + "alias": "list permissions", + "description": "list all permissions", + "id": 1, + "name": "list_permissions" + } + ] + 404: + body: + application/json: + example: | + { + message: "Cannot find the record in table Permission: {'id': ''}" + } + description: List a specific permission info +/users: + get: + responses: + 200: + body: + application/json: + example: | + [ + { + “id”: 1, + “email”: “someuser@email.com”, + “first_name”: “”, + “last_name”: “”, + “is_admin”: false, + “active”: true, + “created_at”: “--timestamp---”, + “last_login_at”: “--timestamp---” + }, + ] + + description: Lists information for all users + queryParameters: + email: + is_admin: + active: + post: + responses: + 201: + body: + application/json: + example: | + { + “id”: 3, + “email”: “user3@someemail.com”, + “first_name”: “”, + “last_name”: “”, + “is_admin”: false, + “active”: true, + “created_at”: “--timestamp---”, + “last_login_at”: “--timestamp---” + } + 400: + body: + application/json: + example: | + { + "bad request" + } + 403: + body: + application/json: + example: | + { + "forbidden" + } + 409: + body: + application/json: + example: | + { + “message”: “The user already exists!” + } + queryParameters: + email: + example: "user3@someemail.com" + required: true + password: + example: "123456" + required: true + first_name: + required: false + last_name: + required: false + description: Creates a user(admin only) + /{user_id}: + get: + responses: + 200: + body: + application/json: + example: | + { + “id”: 1, + “email”: “someuser@email.com”, + “first_name”: “”, + “last_name”: “”, + “is_admin”: false, + “active”: true, + “created_at”: “2014-03-25 12:00:00”, + “last_login_at”: “2014-03-25 12:05:00 + } + 404: + body: + application/json: + example: | + { + “message”: “The user with id ‘some--id--’ cannot be found!” + } + description: Lists information for a specific user + put: + responses: + 201: + body: + application/json: + example: | + { + “id”: 3, + “email”: “user3@someemail.com”, + “first_name”: “”, + “last_name”: “”, + “is_admin”: false, + “active”: true + } + 409: + body: + application/json: + example: | + { + “message”: “The user with id ‘some--id--’ cannot be found!” + } + queryParameters: + password: + example: "78910" + description: Updates user’s information + delete: + responses: + 200: + body: + application/json: + example: | + { + “id”: 3, + “email”: “user3@someemail.com”, + “first_name”: “”, + “last_name”: “”, + “is_admin”: false, + “active”: true + } + 409: + body: + application/json: + example: | + { + “message”: “The user cannot be found!” + } + description: Deletes a user(admin only) + /permissions: + get: + responses: + 200: + body: + application/json: + example: | + [ + { + "created_at": "2014-10-17 16:28:21", + "user_id": 1, + "description": "list all permissions", + "permission_id": 1, + "updated_at": "2014-10-17 16:28:21", + "alias": "list permissions", + "id": 1, + "name": "list_permissions" + } + ] + 409: + body: + application/json: + example: | + { + “type”: “itemNotFound”, + “message”: “The user with id ‘some--id--’ cannot be found!” + } + description: Lists permissions for a specified user + /action: + post: + responses: + 200: + body: + application/json: + example: | + Add permission: + + [ + { + "created_at": "2014-10-17 16:28:21", + "user_id": 1, + "description": "list all permissions", + "permission_id": 1, + "updated_at": "2014-10-17 16:28:21", + "alias": "list permissions", + "id": 1, + "name": "list_permissions" + } + ] + + Remove permission: + + [ + { + "created_at": "2014-10-17 16:28:21", + "user_id": 1, + "description": "list all permissions", + "permission_id": 1, + "updated_at": "2014-10-17 16:28:21", + "alias": "list permissions", + "id": 1, + "name": "list_permissions" + } + ] + + Set Permission: + + [ + { + "created_at": "2014-10-17 16:28:21", + "user_id": 1, + "description": "list all permissions", + "permission_id": 1, + "updated_at": "2014-10-17 16:28:21", + "alias": "list permissions", + "id": 1, + "name": "list_permissions" + } + ] + + Enable user: + + { + "created_at": "2014-10-17 16:28:21", + "updated_at": "2014-10-17 16:28:21", + "email": "admin@huawei.com", + "is_admin": true, + "active": true, + "id": 1 + } + + Disable user: + + { + "created_at": "2014-10-17 16:28:21", + "updated_at": "2014-10-17 16:28:21", + "email": "admin@huawei.com", + "is_admin": true, + "active": true, + "id": 1 + } + 409: + body: + application/json: + example: | + { + “type”: “itemNotFound”, + “message”: “The user cannot be found!” + } + queryParameters: + add_permissions: + example: "[1,2,3]" + remove_permissions: + example: "{ + “permissions” : [1] + }" + set_permissions: + example: '{"permissions" : "all"}' + enable_user: + example: null + disable_user: + example: null + description: Adds/Removes permissions, Enable/Disable a user (admin only) + /token: + post: + responses: + 200: + body: + application/json: + example: | + { + "expire_timestamp": "2014-10-06 13:25:23", + "token": "$1$c1ZWGYEn$WTg57cnP4pEwd9JMJ7beS/", + "user_id": 1, + "id": 3 + } + 409: + body: + application/json: + example: | + { + “type”: “unauthorized”, + “message”: “Either email or password is wrong!” + } + queryParameters: + email: + example: someone@someemail.com + password: + example: 123456 + description: Authenticates and generates a token + /login: + post: + responses: + 200: + body: + application/json: + example: | + { + "expire_timestamp": "2014-10-06 13:25:23", + "token": "$1$c1ZWGYEn$WTg57cnP4pEwd9JMJ7beS/", + "user_id": 1, + "id": 3 + } + 401: + body: + application/json: + example: | + { + “type”: “unauthorized”, + “message”: “Either email or password is wrong!” + } + 403: + body: + application/json: + example: | + { + “type”: “userDisabled”, + “message”: “User is disabled !” + } + queryParameters: + email: + example: someone@someemail.com + password: + example: 123456 + description: Login + /logout: + post: + responses: + 200: + body: + application/json: + example: | + [ + { + "expire_timestamp": "2014-10-17 18:30:29", + "token": "$1$AFqIS5Kn$1ASgOkPv.G1a7pkRRHKY.0", + "user_id": 1, + "id": 1 + } + ] + 401: + body: + application/json: + example: | + { + "message": "invalid user token: $1$AFqIS5Kn$1ASgOkPv.G1a7pkRRHKY.0", + } + description: Logout + + + + + +/switches: + get: + responses: + 200: + body: + application/json: + example: | + [ + { + "ip": "172.29.8.40", + "created_at": "2014-10-17 17:28:06", + "updated_at": "2014-10-17 17:28:06", + "state": "initialized", + "filters": "", + "credentials": { + "version": "2c", + "community": "public" + }, + "id": 2 + } + ] + description: Lists switches + post: + responses: + 200: + body: + application/json: + example: | + { + "ip": "172.29.8.40", + "created_at": "2014-10-17 17:28:06", + "updated_at": "2014-10-17 17:28:06", + "state": "initialized", + "filters": "", + "credentials": { + "version": "2c", + "community": "public" + }, + "id": 2 + } + 409: + body: + application/json: + example: | + { + “message”: “IP address ‘192.168.1.1’ already exists” + } + queryParameters: + ip: + example: 172.29.8.40 + credentials: + example: '{ + “version”: “2c”, + “community”: “public” + }' + + description: Creates a switch + /{switch_id}: + get: + responses: + 200: + body: + application/json: + example: | + { + "ip": "172.29.8.40", + "created_at": "2014-10-17 17:28:06", + "updated_at": "2014-10-17 17:28:06", + "state": "initialized", + "filters": "", + "credentials": { + "version": "2c", + "community": "public" + }, + "id": 2 + } + 404: + body: + application/json: + example: | + { + “message”: “Cannot find the switch which id is ‘1’.” + } + description: Lists a switch + put: + responses: + 200: + body: + application/json: + example: | + { + "ip": "172.29.8.40", + "created_at": "2014-10-17 17:28:06", + "updated_at": "2014-10-17 17:28:06", + "state": "initialized", + "filters": "", + "credentials": { + "version": "2c", + "community": "private" + }, + "id": 2 + } + 404: + body: + application/json: + example: | + { + “message”: “Cannot update the switch which id is ‘1’! The switch does not exists.” + } + queryParameters: + ip: + credentials: + example: '{ + “version”: “2c”, + “community”: “private” + }' + vendor: + state: + err_msg: + filters: + description: Set the switch properties + patch: + responses: + 200: + body: + application/json: + example: | + { + "ip": "172.29.8.40", + "created_at": "2014-10-17 17:28:06", + "updated_at": "2014-10-17 17:28:06", + "state": "initialized", + "filters": "", + "credentials": { + "version": "3", + "community": "public" + }, + "id": 2 + } + 404: + body: + application/json: + example: | + { + “message”: “Cannot update the switch which id is ‘1’! The switch does not exists.” + } + queryParameters: + ip: + credentials: + example: '{ + “version”: “3” + }' + filters: + description: Updates the switch properties + delete: + responses: + 200: + body: + application/json: + example: | + { + "ip": "172.29.8.41", + "created_at": "2014-10-17 17:45:17", + "updated_at": "2014-10-17 17:45:17", + "state": "initialized", + "filters": "", + "credentials": { + "version": "2c", + "community": "public" + }, + "id": 3 + } + 404: + body: + application/json: + example: | + { + "message": "Cannot find the record in table Switch: {'id': 4}" + } + description: Delete switch + /machines: + get: + responses: + 200: + body: + application/json: + example: | + Get: + [ + { + "vlans": [], + "updated_at": "2014-10-17 18:02:21", + "created_at": "2014-10-17 18:02:21", + "switch_id": 3, + "id": 1, + "mac": "28:6e:d4:46:c4:25", + "tag": {}, + "location": {}, + "switch_ip": "172.29.8.41", + "ipmi_credentials": {}, + "machine_id": 1, + "port": "10", + "switch_machine_id": 204 + } + ] + queryParameters: + port: + portStart: + portEnd: + portRange: + PortPrefix: + PortSuffix: + vlans: + mac: + tag: + location: + description: Lists machines for a specified switch + post: + responses: + 200: + body: + application/json: + example: | + { + “id”: 1, + “mac”: “28:6e:d4:47:c8:6c”, + “vlan”: 1, + “port”: “10” + } + 404: + body: + application/json: + example: | + { + “message”: “ The switch does not exists.” + } + queryParameters: + mac: + example: “28:6e:d4:47:c8:6c” + required: true + port: + example: “10” + required: true + vlans: + example: 1 + ipmi_credentials: + example: '{ + “ip”: “---some--ip---”, + “username”: “--some--username--”, + “password”: “---some---password---” + }' + tag: + location: + example: '{ + “column”: “xxx”, + “row”: “xxx”, + “unit”: “xxx”, + “building”: “xxx”, + “city”: “xxx” + }' + description: Manually add a machine + /{id}/machines/{machine_id}: + get: + responses: + 200: + body: + application/json: + example: | + { + "vlans": [ + 88 + ], + "updated_at": "2014-10-17 17:40:13", + "created_at": "2014-10-17 17:40:13", + "switch_id": 2, + "id": 1, + "mac": "28:6e:d4:46:c4:25", + "tag": {}, + "location": {}, + "switch_ip": "172.29.8.40", + "ipmi_credentials": {}, + "machine_id": 1, + "port": "7", + "switch_machine_id": 1 + } + 404: + body: + application/json: + example: | + { + "message": "Cannot find the record in table SwitchMachine: {'machine_id': 1000, 'switch_id': 2}" + } + description: Get machine of a specified switch + put: + responses: + 200: + body: + application/json: + example: | + { + "vlans": [ + 88 + ], + "updated_at": "2014-10-17 17:40:13", + "created_at": "2014-10-17 17:40:13", + "switch_id": 2, + "id": 1, + "mac": "28:6e:d4:46:c4:25", + "tag": {}, + "location": { + "building": "E5" + }, + "switch_ip": "172.29.8.40", + "ipmi_credentials": {}, + "machine_id": 1, + "port": "7", + "switch_machine_id": 1 + } + 404: + body: + application/json: + example: | + { + "message": "Cannot find the record in table SwitchMachine: {'machine_id': 1000, 'switch_id': 2}" + } + queryParameters: + port: + vlans: + ipmi_credentials: + tag: + location: + example: + '{"building": "E5"}' + description: set machine property of a specified switch + patch: + responses: + 200: + body: + application/json: + example: | + { + "vlans": [ + 88 + ], + "updated_at": "2014-10-17 17:40:13", + "created_at": "2014-10-17 17:40:13", + "switch_id": 2, + "id": 1, + "mac": "28:6e:d4:46:c4:25", + "tag": {}, + "location": { + "building": "E5", + "city": "beijing" + }, + "switch_ip": "172.29.8.40", + "ipmi_credentials": {}, + "machine_id": 1, + "port": "7", + "switch_machine_id": 1 + } + 404: + body: + application/json: + example: | + { + "message": "Cannot find the record in table SwitchMachine: {'machine_id': 1000, 'switch_id': 2}" + } + queryParameters: + vlans: + ipmi_credentials: + tag: + location: + example: '{"city": "beijing"}' + description: update machine property of a specified switch + delete: + responses: + 200: + body: + application/json: + example: | + { + "vlans": [ + 88 + ], + "updated_at": "2014-10-17 17:40:13", + "created_at": "2014-10-17 17:40:13", + "switch_id": 2, + "id": 1, + "mac": "28:6e:d4:46:c4:25", + "tag": {}, + "location": { + "building": "E5", + "city": "beijing" + }, + "switch_ip": "172.29.8.40", + "ipmi_credentials": {}, + "machine_id": 1, + "port": "7", + "switch_machine_id": 1 + } + 404: + body: + application/json: + example: | + { + "message": "Cannot find the record in table SwitchMachine: {'machine_id': 1000, 'switch_id': 2}" + } + description: Delete a machine from a switch + /{switch_id}/action: + post: + responses: + 202: + body: + application/json: + example: | + find_machines: + + + { + "status": "action {'find_machines': None} sent", + "details": {} + } + 200: + body: + application/json: + example: | + add_machines: + + + [ + { + "vlans": [], + "updated_at": "2014-10-17 17:56:44", + "created_at": "2014-10-17 17:56:44", + "switch_id": 3, + "id": 1, + "mac": "28:6e:d4:46:c4:25", + "tag": {}, + "location": {}, + "switch_ip": "172.29.8.41", + "ipmi_credentials": {}, + "machine_id": 1, + "port": "10", + "switch_machine_id": 203 + } + ] + + remove_machines: + + [] + + set_machines: + + + [ + { + "vlans": [], + "updated_at": "2014-10-17 17:56:44", + "created_at": "2014-10-17 17:56:44", + "switch_id": 3, + "id": 1, + "mac": "28:6e:d4:46:c4:25", + "tag": {}, + "location": {}, + "switch_ip": "172.29.8.41", + "ipmi_credentials": {}, + "machine_id": 1, + "port": "10", + "switch_machine_id": 203 + } + ] + 404: + body: + application/json: + example: | + { + “message”: “Cannot update the switch which id is ‘1’! The switch does not exists.” + } + queryParameters: + find_machines: + example: "null" + add_machines: + example: '[{"machine_id": 1, "port": "10"}]' + remove_machines: + example: "[1]" + set_machines: + example: '[{"machine_id": 1, "port": "10"}]' + description: switch action like Polls a switch’s machines +/machines: + get: + responses: + 200: + body: + application/json: + example: | + [ + { + "created_at": "2014-10-17 17:40:13", + "updated_at": "2014-10-17 23:22:53", + "switches": [], + "mac": "28:6e:d4:46:c4:25", + "tag": {}, + "location": { + "building": "E5", + "city": "beijing" + }, + "ipmi_credentials": {}, + "id": 1 + }, + ] + queryParameters: + mac: + tag: + location: + description: Lists machines + /{machine_id}: + get: + responses: + 200: + body: + application/json: + example: | + { + "created_at": "2014-10-17 17:40:13", + "updated_at": "2014-10-17 23:22:53", + "switches": [], + "mac": "28:6e:d4:46:c4:25", + "tag": {}, + "location": { + "building": "E5", + "city": "beijing" + }, + "ipmi_credentials": {}, + "id": 1 + } + 404: + body: + application/json: + example: | + { + “message”: “The machine witch ID “$machine_id” cannot be found!” + } + description: Lists machines of a specific machine + put: + responses: + 200: + body: + application/json: + example: | + { + "created_at": "2014-10-17 17:40:13", + "updated_at": "2014-10-17 23:58:46", + "switches": [], + "mac": "28:6e:d4:46:c4:25", + "tag": { + "builder": "huawei" + }, + "location": { + "building": "E5", + "city": "beijing" + }, + "ipmi_credentials": {}, + "id": 1 + } + 404: + body: + application/json: + example: | + { + “message”: “The machine witch ID “$machine_id” cannot be found!” + } + queryParameters: + ipmi_credentials: + tag: + example: '{“builder”: “huawei”} ' + location: + description: set machine properties + patch: + responses: + 200: + body: + application/json: + example: | + { + "created_at": "2014-10-17 17:40:13", + "updated_at": "2014-10-18 00:03:12", + "switches": [], + "mac": "28:6e:d4:46:c4:25", + "tag": { + "type": "ES200" + }, + "location": { + "building": "E5", + "city": "beijing" + }, + "ipmi_credentials": {}, + "id": 1 + } + 404: + body: + application/json: + example: | + { + “message”: “The machine witch ID “$machine_id” cannot be found!” + } + queryParameters: + ipmi_credentials: + tag: + example: '{"type": "ES200"}' + location: + description: updatge machine properties + delete: + responses: + 200: + body: + application/json: + example: | + { + "created_at": "2014-10-17 17:40:13", + "updated_at": "2014-10-18 00:03:12", + "switches": [], + "mac": "28:6e:d4:46:c4:25", + "tag": { + "type": "ES200" + }, + "location": { + "building": "E5", + "city": "beijing" + }, + "ipmi_credentials": {}, + "id": 1 + } + 404: + body: + application/json: + example: | + { + “message”: “The machine witch ID “$machine_id” cannot be found!” + } + description: Delete a machine (admin only) + /action: + post: + responses: + 200: + body: + application/json: + example: | + tag example: + + { + "created_at": "2014-10-17 17:40:13", + "updated_at": "2014-10-18 00:10:58", + "id": 2, + "switches": [ + { + "switch_ip": "172.29.8.40", + "vlans": [ + 88 + ], + "port": "4" + } + ], + "mac": "00:0c:29:2b:c9:d4", + "tag": { + "builder": "huawei" + }, + "location": {}, + "switch_ip": "172.29.8.40", + "ipmi_credentials": {}, + "vlans": [ + 88 + ], + "port": "4" + } + + poweron/ poweroff / reset is null example: + + { + "status": "poweron 00:0c:29:2b:c9:d4 action sent", + } + 404: + body: + application/json: + example: | + { + “message”: “The machine witch ID “$machine_id” cannot be found!” + } + 400: + body: + application/json: + example: | + { + “message”: “The machine haven’t set IPMI info!” + } + queryParameters: + tag: + example: '{“builder”: “huawei”}' + poweron: + poweroff: + reset: + description: machine actions +/flavors: + /{flavor_id}/metadata: + get: + responses: + 200: + body: + application/json: + example: | + { + "flavor_config“: { + "neutron_config": {……}, + "security”: {……}, + "ha_proxy": {……}, + "network_mapping": {……} + + } + } + 404: + body: + application/json: + example: | + {message: "flavor does not exist"} + description: List specific flavor metadata. + /{flavor_id}/ui_metadata: + get: + responses: + 200: + body: + application/json: + example: | + { + "flavor_config": + { + "category": "service_credentials", + "modifiable_data": [ + "username", + "password", + ] + "table_display_header": [ + "Service", + "UserName", + "Password", + "Action", + ] + "accordion_heading": "OpenStack Database and Queue Credentials", + "action”: true, + "data_structure": "table" + }, + {...}, + {...} + } + 404: + body: + application/json: + example: | + {message: "flavor does not exist"} + description: List specific flavor ui metadata. +/adapters: + get: + responses: + 200: + body: + application/json: + example: | + [{ + "flavors": [ + { + "roles": [ + { + "display_name": "all in one compute", + "description": "all in one compute", + "adapter_id": 3, + "role_id": 35, + "flavor_id": 4, + "optional": true, + "id": 35, + "name": "allinone-compute" + } + ], + "display_name": "All-In-One", + "id": 4, + "template": "allinone.tmpl", + "name": "allinone" + }, + ], + "package_installer": { + "id": 1, + "alias": "chef_installer", + "name": "chef_installer", + "settings": { + "chef_server_ip": "10.145.88.211", + "client_name": "", + "chef_server_dns": "compass", + "databags": [], + "chef_url": "https://10.145.88.211", + "key_dir": "" + } + }, + "name": "openstack_icehouse", + "os_installer": { + "id": 1, + "alias": "cobbler", + "name": "cobbler", + "settings": { + "credentials": { + "username": "cobbler", + "password": "cobbler" + }, + "cobbler_url": "http://10.145.88.211/cobbler_api" + } + }, + "distributed_system_id": 1, + "supported_oses": [ + { + "os_id": 1, + "id": 1, + "name": "Ubuntu-12.04-x86_64" + }, + { + "os_id": 2, + "id": 2, + "name": "CentOS-6.5-x86_64" + } + ], + "distributed_system_name": "openstack", + "display_name": "OpenStack Icehouse", + "id": 3 + }] + queryParameters: + name: + distributed_system_name: + description: Lists information for all adapters + /{id}: + get: + responses: + 200: + body: + application/json: + example: | + { + “id” : 1, + “name”: “openstack”, + “display”: “OpenStack”, + “os_installer”: “cobbler”, + “package_installer”: “chef”, + “roles”: [ { “display_name”: “compute”, + “name”: “os-compute-worker” + }, + { “display_name”: “controller”, + “name”: “os-controller” + }, + { “display_name”: “network”, + “name”: “os-network” + }, + { “display_name”: “storage”, + “name”: “os-block-storage-worker” + ], + “compatible_os”: [ + { + “name”: “CentOs”, + “os_id”: 1 + }, + { + “name”: “Ubuntu”, + “os_id”: 2 + } + ] + } + 404: + body: + application/json: + example: | + { + “message”: “The adapter with id ‘some_id’ cannot be found!” + } + description: Lists information for a specified adapter + /oses/{os_id}/metadata: + get: + responses: + 200: + body: + application/json: + example: | + { + "package_config": { + "security": { + "_self": { + "mapping_to": "", + "description": null, + "required_in_whole_config": true, + "display_type": null, + "js_validator": null, + "default_value": null, + "field_type": "dict", + "name": "security", + "required_in_options": false, + "is_required": false, + "options": null + }, + }, + "os_config": { + "server_credentials": { + "_self": { + "mapping_to": "server_credentials", + "description": null, + "required_in_whole_config": true, + "display_type": null, + "js_validator": null, + "default_value": null, + "field_type": "dict", + "name": "server_credentials", + "required_in_options": false, + "is_required": false, + "options": null + }, + "username": { + "_self": { + "mapping_to": "username", + "description": "username", + "required_in_whole_config": false, + "display_type": "text", + "js_validator": null, + "default_value": "root", + "field_type": "basestring", + "name": "username", + "required_in_options": false, + "is_required": true, + "options": null + } + }, + }, + }, + } + 404: + body: + application/json: + example: | + { + “message”: “The adapter with id ‘some_id’ cannot be found!” + } + description: Lists config formats for a specified adapter and os + /oses/{os_id}/ui_metadata: + get: + responses: + 200: + body: + application/json: + example: | + { + "os_global_config": [ + { + "title": "Server Credentials", + "data": [ + { + "default_value": "root", + "display_name": "User name", + "name": "username", + "display_type": "text", + "is_required": "true", + "placeholder": "Username", + "order": 1 + }, + { + "display_name": "Confirm Password", + "name": "confirmPassword", + "datamatch": "password", + "display_type": "password", + "is_required": "true", + "placeholder": "Confirm Password", + "order": 3 + }, + { + "display_name": "Password", + "name": "password", + "display_type": "password", + "is_required": "true", + "placeholder": "Password", + "order": 2 + }], + "order": 2, + "name": "server_credentials" + }, + } + }] + } + 404: + body: + application/json: + example: | + { + “message”: “os does not exist” + } + description: List specified os ui metadata. + +/subnets: + get: + responses: + 200: + body: + application/json: + example: | + [{ + "updated_at": "2014-10-18 21:24:46", + "subnet": "10.145.88.0/23", + "created_at": "2014-10-18 21:24:46", + "id": 1, + "name": "10.145.88.0/23" + }] + description: Gets all subnetworks information + post: + responses: + 200: + body: + application/json: + example: | + { + "updated_at": "2014-10-18 21:24:46", + "subnet": "10.145.88.0/23", + "created_at": "2014-10-18 21:24:46", + "id": 1, + "name": "10.145.88.0/23" + } + 400: + body: + application/json: + example: | + { + “message”: “Keyword ‘$somekey’ cannot be recognized!” + } + 409: + body: + application/json: + example: | + { + “message”: “Subnet already exists!” + } + queryParameters: + subnet: + example: “10.145.88.0/23” + description: Creates one subnetwork + /{subnet_id}: + get: + responses: + 200: + body: + application/json: + example: | + { + "updated_at": "2014-10-18 21:24:46", + "subnet": "10.145.88.0/23", + "created_at": "2014-10-18 21:24:46", + "id": 1, + "name": "10.145.88.0/23" + } + 404: + body: + application/json: + example: | + { + “message”: “Subnetwork with id ‘some_id’ cannot be found!” + } + description: Gets one subnetwork info + put: + responses: + 200: + body: + application/json: + example: | + { + "updated_at": "2014-10-18 21:44:17", + "subnet": "10.145.86.0/23", + "created_at": "2014-10-18 21:43:50", + "id": 1, + "name": "10.145.86.0/23" + } + 404: + body: + application/json: + example: | + { + “message”: “Subnetwork with id ‘some_id’ cannot be found!” + } + 409: + body: + application/json: + example: | + { + “message”: “Subnet name already exists!” + } + queryParameters: + name: + subnet: + example: "10.145.86.0/23" + description: set subnet properties + delete: + responses: + 403: + body: + application/json: + example: | + { + “message”: “Subnetwork is in use by some interface. Cannot delete it.” + } + + + { + “message”: “Subnetwork can only be deleted by creator or admin!” + } + 404: + body: + application/json: + example: | + { + “message”: “Subnetwork with id ‘some_id’ cannot be found!” + } + description: Deletes a subnetwork (owner, admin only) +/clusters: + get: + responses: + 200: + body: + application/json: + example: | + [ + { + "created_at": "2014-10-18 23:01:23", + "os_name": "CentOS-6.5-x86_64", + "name": "cluster1", + "reinstall_distributed_system": true, + "distributed_system_id": 1, + "adapter_id": 3, + "updated_at": "2014-10-18 23:01:23", + "owner": "admin@huawei.com", + "os_id": 2, + "distributed_system_name": "openstack", + "distributed_system_installed": false, + "flavor": { + "display_name": "All-In-One", + "name": "allinone", + "roles": [ + { + "display_name": "all in one compute", + "description": "all in one compute", + "adapter_id": 3, + "role_id": 35, + "flavor_id": 4, + "optional": true, + "id": 35, + "name": "allinone-compute" + } + ], + "adapter_id": 3, + "template": "allinone.tmpl", + "id": 4 + }, + "id": 1 + } + ] + queryParameters: + name: + os_name: + distributed_system_name: + owner: + adapter_name: + flavor_name: + description: Lists all information for all clusters + post: + responses: + 201: + body: + application/json: + example: | + { + "created_at": "2014-10-18 23:01:23", + "os_name": "CentOS-6.5-x86_64", + "name": "cluster1", + "reinstall_distributed_system": true, + "distributed_system_id": 1, + "adapter_id": 3, + "updated_at": "2014-10-18 23:01:23", + "owner": "admin@huawei.com", + "os_id": 2, + "distributed_system_name": "openstack", + "distributed_system_installed": false, + "flavor": { + "display_name": "All-In-One", + "name": "allinone", + "roles": [ + { + "display_name": "all in one compute", + "description": "all in one compute", + "adapter_id": 3, + "role_id": 35, + "flavor_id": 4, + "optional": true, + "id": 35, + "name": "allinone-compute" + } + ], + "adapter_id": 3, + "template": "allinone.tmpl", + "id": 4 + }, + "id": 1 + } + 409: + body: + application/json: + example: | + { + “message”: “Cluster with name ‘cluster_01’ already exists!” + } + queryParameters: + adapter_id: + example: 3 + required: true + os_id: + example: 2 + required: true + name: + example: "cluster1" + required: true + flavor_id: + example: 4 + required: false + description: Creates a new cluster + /{cluster_id}: + get: + responses: + 200: + body: + application/json: + example: | + { + "created_at": "2014-10-18 23:01:23", + "os_name": "CentOS-6.5-x86_64", + "name": "cluster1", + "reinstall_distributed_system": true, + "distributed_system_id": 1, + "adapter_id": 3, + "updated_at": "2014-10-18 23:01:23", + "owner": "admin@huawei.com", + "os_id": 2, + "distributed_system_name": "openstack", + "distributed_system_installed": false, + "flavor": { + "display_name": "All-In-One", + "name": "allinone", + "roles": [ + { + "display_name": "all in one compute", + "description": "all in one compute", + "adapter_id": 3, + "role_id": 35, + "flavor_id": 4, + "optional": true, + "id": 35, + "name": "allinone-compute" + } + ], + "adapter_id": 3, + "template": "allinone.tmpl", + "id": 4 + }, + "id": 1 + } + 404: + body: + application/json: + example: | + { + “message”: “Cluster with id ‘some_id’ cannot be found! ” + } + description: Lists information for a specified cluster + put: + responses: + 200: + body: + application/json: + example: | + { + "created_at": "2014-10-18 23:16:02", + "os_name": "CentOS-6.5-x86_64", + "name": "cluster_new", + "reinstall_distributed_system": true, + "distributed_system_id": 1, + "adapter_id": 3, + "updated_at": "2014-10-18 23:16:39", + "owner": "admin@huawei.com", + "os_id": 2, + "distributed_system_name": "openstack", + "distributed_system_installed": false, + "flavor": { + "display_name": "All-In-One", + "name": "allinone", + "roles": [ + { + "display_name": "all in one compute", + "description": "all in one compute", + "adapter_id": 3, + "role_id": 35, + "flavor_id": 4, + "optional": true, + "id": 35, + "name": "allinone-compute" + } + ], + "adapter_id": 3, + "template": "allinone.tmpl", + "id": 4 + }, + "id": 2 + } + 400: + body: + application/json: + example: | + { + “message”: “Cluster not found” + } + description: set properties of cluster + delete: + responses: + 200: + body: + application/json: + example: | + { + "created_at": "2014-10-18 23:01:23", + "os_name": "CentOS-6.5-x86_64", + "name": "cluster1", + "reinstall_distributed_system": true, + "distributed_system_id": 1, + "adapter_id": 3, + "updated_at": "2014-10-18 23:01:23", + "owner": "admin@huawei.com", + "os_id": 2, + "distributed_system_name": "openstack", + "distributed_system_installed": false, + "flavor": { + "display_name": "All-In-One", + "name": "allinone", + "roles": [ + { + "display_name": "all in one compute", + "description": "all in one compute", + "adapter_id": 3, + "role_id": 35, + "flavor_id": 4, + "optional": true, + "id": 35, + "name": "allinone-compute" + } + ], + "adapter_id": 3, + "template": "allinone.tmpl", + "id": 4 + }, + "id": 1 + } + 403: + body: + application/json: + example: | + { + “message”: “Cluster has been deployed or is being installed. Not allowed to delete it now!” + } + description: Deletes a specific cluster before deploy (admin, owner only). Hosts will be still kept even cluster(s) is deleted + /config: + get: + responses: + 200: + body: + application/json: + example: | + { + “package_config”: { + }, + “os_config”: { + } + } + 404: + body: + application/json: + example: | + { + message”: “Cluster with id ‘some_id’ cannot be found!” + } + description: Gets config information for a specified cluster + put: + responses: + 200: + body: + application/json: + example: | + { + “os_config”: { + “general”: { + “language”: “EN”, + “timezone”: “PDT”, + “domain”: “xxx”, + “default_gateway”: “10.0.0.1” + }, + “server_crendentials”: { + “username”: “admin”, + “password”: “admin” + }, + “partition”: { + "/var" : { + "max_size": "20", + "size_percentage": "20", + }, + } + } + + { + “package_config”: { + “network_mapping”: { + “management”: { + “interface”: “eth0” + }, + “tenant”: { + “interface”: “eth1” + }, + “storage”: { + “interface”:“eth2” + }, + “public”: { + “interface”: “eth3” + } + } + } + } + 404: + body: + application/json: + example: | + { + “message”: “Cluster with id ‘some_id’ cannot be found!” + } + queryParameters: + os_config: + example: '{ + “general”: { + “language”: “EN”, + “timezone”: “PDT”, + “domain”: “xxx”, + “default_gateway”: “10.0.0.1” + }, + “server_credentials”: { + “username”: “admin”, + “password”: “admin” + }, + “partition”: { + "/var" : { + "_type": "$path", + "max_size": "20", + "size_percentage": "20", + } + } + }' + package_config: + example: '{ + “network_mapping”: { + “management”: { + “interface”: “eth0” + }, + “tenant”: { + “interface”: “eth1” + }, + “storage”: { + “interface”:“eth2” + }, + “public”: { + “interface”: “eth3” + } + } + }' + description: set properties in cluster config + patch: + responses: + 200: + body: + application/json: + example: | + { + “package_config”:{ + “security”: { + “service_crendentials”: { + “image”: { + “username”: “admin”, + “password”: “admin” + }, + …….. + }, + “dashboard_credentials”:{ + “username”: “root”, + “password”: “admin” + } + } + } + } + 404: + body: + application/json: + example: | + { + “message”: “Cluster with id ‘some_id’ cannot be found!” + } + queryParameters: + os_config: + example: '{ + “package_config”: { + “security”: { + “dashboard_credentials”: { + “username”: “root” + } + } + } + }' + package_config: + description: update properties in cluster config + delete: + responses: + 200: + body: + application/json: + example: | + { + “package_config”:{ + “security”: { + “service_crendentials”: { + “image”: { + “username”: “admin”, + “password”: “admin” + }, + …….. + } + } + } + } + 404: + body: + application/json: + example: | + { + “message”: “Cluster with id ‘some_id’ cannot be found!” + } + description: delete cluster config + /state: + get: + responses: + 200: + body: + application/json: + example: | + { + “package_config”: { + }, + “os_config”: { + } + } + 404: + body: + application/json: + example: | + { + message”: “Cluster with id ‘some_id’ cannot be found!” + } + description: get cluster state + /hosts: + get: + responses: + 200: + body: + application/json: + example: | + [ + { + “id” : 1, + “name”: “host_01”, + “dns”: “xxx”, + “os”: “Centos”, + “mac”: “---MAC-address---”, + “machine_id”: 1, + “os_installed”: true, + }, + …... + ] + 404: + body: + application/json: + example: | + { + “message”: “Cluster with id ‘some_id’ cannot be found!” + } + description: Gets the information of the hosts belonging to this cluster + post: + responses: + 200: + body: + application/json: + example: | + { + "os_installer": { + "id": 1, + "alias": "cobbler", + "name": "cobbler", + "settings": { + "credentials": { + "username": "cobbler", + "password": "cobbler" + }, + "cobbler_url": "http://10.145.88.211/cobbler_api" + } + }, + "ip": null, + "clusterhost_id": 2, + "updated_at": "2014-10-18 23:47:47", + "switches": [ + { + "switch_ip": "172.29.8.40", + "vlans": [ + 88 + ], + "port": "4" + } + ], + "os_installed": false, + "tag": {}, + "cluster_id": 2, + "id": 2, + "switch_ip": "172.29.8.40", + "networks": { + }, + "hostname": null, + "reinstall_os": true, + "owner": "admin@huawei.com", + "port": "4", + "location": {}, + "distributed_system_name": "openstack", + "os_name": "CentOS-6.5-x86_64", + "reinstall_distributed_system": true, + "mac": "00:0c:29:2b:c9:d4", + "host_id": 2, + "distributed_system_installed": false, + "name": "None.cluster_new", + "roles": [], + "clustername": "cluster_new", + "created_at": "2014-10-18 23:47:47", + "machine_id": 2 + } + 409: + body: + application/json: + example: | + { + “message”: “host already exists” + } + queryParameters: + machine_id: + example: 2 + required: true + name: + reinstall_os: + roles: + description: add host to a cluster + /{host_id}: + get: + responses: + 200: + body: + application/json: + example: | + { + “id” : 1, + “name”: “host_01”, + “dns”: “xxx”, + “os”: “Centos”, + “mac”: “---MAC-address---”, + “machine_id”: 1, + “os_installed”: true, + “links”: [ + { + “href” : “/hosts/1”, + “rel”: “self” + }, + { + “href”: “/clusters/1/hosts/1/config”, + “rel”: “host package config” + } + ] + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + description: get host of a cluster + put: + responses: + 200: + body: + application/json: + example: | + { + "os_installer": { + "id": 1, + "alias": "cobbler", + "name": "cobbler", + "settings": { + "credentials": { + "username": "cobbler", + "password": "cobbler" + }, + "cobbler_url": "http://10.145.88.211/cobbler_api" + } + }, + "ip": null, + "clusterhost_id": 2, + "updated_at": "2014-10-19 00:10:43", + "switches": [ + { + "switch_ip": "172.29.8.40", + "vlans": [ + 88 + ], + "port": "4" + } + ], + "os_installed": false, + "tag": {}, + "cluster_id": 2, + "id": 2, + "switch_ip": "172.29.8.40", + "networks": {}, + "hostname": null, + "reinstall_os": true, + "owner": "admin@huawei.com", + "port": "4", + "location": {}, + "distributed_system_name": "openstack", + "os_name": "CentOS-6.5-x86_64", + "reinstall_distributed_system": true, + "mac": "00:0c:29:2b:c9:d4", + "host_id": 2, + "distributed_system_installed": false, + "name": "None.cluster_new", + "roles": [ + { + "display_name": "all in one compute", + "description": "all in one compute", + "adapter_id": 3, + "optional": true, + "id": 35, + "name": "allinone-compute" + } + ], + "clustername": "cluster_new", + "created_at": "2014-10-18 23:47:47", + "machine_id": 2 + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + queryParameters: + roles: + example: + '["allinone-compute"]' + description: set host properties of a cluster + patch: + responses: + 200: + body: + application/json: + example: | + { + "os_installer": { + "id": 1, + "alias": "cobbler", + "name": "cobbler", + "settings": { + "credentials": { + "username": "cobbler", + "password": "cobbler" + }, + "cobbler_url": "http://10.145.88.211/cobbler_api" + } + }, + "ip": null, + "clusterhost_id": 2, + "updated_at": "2014-10-19 00:10:43", + "switches": [ + { + "switch_ip": "172.29.8.40", + "vlans": [ + 88 + ], + "port": "4" + } + ], + "os_installed": false, + "tag": {}, + "cluster_id": 2, + "id": 2, + "switch_ip": "172.29.8.40", + "networks": {}, + "hostname": null, + "reinstall_os": true, + "owner": "admin@huawei.com", + "port": "4", + "location": {}, + "distributed_system_name": "openstack", + "os_name": "CentOS-6.5-x86_64", + "reinstall_distributed_system": true, + "mac": "00:0c:29:2b:c9:d4", + "host_id": 2, + "distributed_system_installed": false, + "name": "None.cluster_new", + "roles": [ + { + "display_name": "all in one compute", + "description": "all in one compute", + "adapter_id": 3, + "optional": true, + "id": 35, + "name": "allinone-compute" + }, + { + “name”: “new-role”, + ... + } + ], + "clustername": "cluster_new", + "created_at": "2014-10-18 23:47:47", + "machine_id": 2 + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + queryParameters: + roles: + example: + '["new-role"]' + description: update host properties of a cluster + delete: + description: delete host from a cluster + /config: + get: + responses: + 200: + body: + application/json: + example: | + { + “os_config”: { + …... + }, + “package_config”: { + …... + } + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + description: get config of a host + put: + responses: + 200: + body: + application/json: + example: | + { + ….. + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + queryParameters: + JSON: + example: '{ + “package_config”: { + “network_mapping”: { + “management”: { + “interface”: “eth0” + }, + “tenant”: { + “interface”: “eth1” + }, + “storage”: { + “interface”:“eth2” + }, + “public”: { + “interface”: “eth3” + } + } + “services_credentials”: { + “image”: { + “username”: “xxx”, + “password”: “xxx” + }, + “metering”: { + “username”: “xxx”, + “password”: “xxx” + }, + ……. + } + } + }' + description: set host config + patch: + responses: + 200: + body: + application/json: + example: | + { + “os_config”: { + …..//the same as PATCH cluster config + } + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + queryParameters: + JSON: + example: + '{ + “os_config”: { + …..//the same as PATCH cluster config + } + }' + description: update host config + delete: + responses: + 200: + body: + application/json: + example: | + { + “os_config”: { + …..//the same as PATCH cluster config + } + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + description: delete host config + /state: + get: + responses: + 200: + body: + application/json: + example: | + { + “cluster_id” : 1, + “host_id”: 10 + “state”: “INSTALLING”, + “percentage”: 0.5, + “severity”: “INFO”, + “message”: “-----some--message-----”, + “updated_at”: “---timestamp---” + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + description: get host state of a cluster + put: + responses: + 200: + body: + application/json: + example: | + { + “cluster_id” : 1, + “host_id”: 10 + “state”: “SUCCESSFUL”, + “percentage”: 1, + “severity”: “INFO”, + “message”: “-----some--message-----”, + “updated_at”: “---timestamp---” + } + OR + { + “cluster_id” : 1, + “host_id”: 10 + “state”: “ERROR”, + “percentage”: 0.7, + “severity”: “ERROR”, + “message”: “---some-error-message---”, + “updated_at”: “---timestamp---” + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + queryParameters: + state: + example: “SUCCESSFUL” / “ERROR” + percentage: + message: + example: '“The installation is completed!” / “---some-error-message---”' + severity: + example: “INFO” / “ERROR” + description: set host state properties of a cluster + /action: + post: + responses: + 200: + body: + application/json: + example: | + { + “hosts”: [ + { + “id” : 5, + “machine_id”: 10 + }, + { + “id” : 6, + “machine_id”: 11 + }, + { + “id” : 7, + “machine_id”: 12 + } + ] + } + + OR + + { + “hosts”: [ + { + “id” : 1, + “machine_id”: 13 + }, + { + “id” : 2, + “machine_id”: 14 + }, + { + “id” : 3, + “machine_id”: 15 + } + ] + } + + OR + + { + “hosts”: [ + { + “id” : 1, + “machine_id”: 13 + } + ] + } + + OR + { + “hosts”: [ + { + “id” : 1, + “machine_id”: 10 + }, + { + “id” : 2, + “machine_id”: 11 + }, + { + “id” : 3, + “machine_id”: 12 + } + ] + } + + OR + + { + “cluster: {“id”: 1}, + “hosts”: [{“id”: 1}, {“id”: 2}, {“id”: 3}] + } + + OR + + { + “status”: “deploy action sent”, + “cluster”: { + “id”: 1, + }, + “hosts”: [ + { + “id”: 3 + } + ] + } + + + 404: + body: + application/json: + example: | + { + “message”: “Cluster with id ‘some_id’ cannot be found!” + } + queryParameters: + JSON 1: + example: '{ + “add_hosts”: { + “machines” : [ + { + “machine_id”: 10, //“host_id”: 5, + “reinstall_os”: true + }, + { + “machine_id”: 11 // “host_id”: 6 + }, + { + “machine_id”: 12 + } + ] + } + }' + JSON 2: + example: '{ + “set_hosts”: { + “machines” : [ + { + “machine_id”: 13 + }, + { + “machine_id”: 14 + }, + { + “machine_id”: 15 + } + ] + } + }' + JSON 3: + example: '{ + “remove_hosts”: { + “hosts” : [1] + } + }' + JSON 4: + example: '{ + “remove_hosts”: { + “hosts” : “all” + } + }' + JSON 5: + example: '{ + “review” : { + “hosts”: [1, 2, 3] + } + }' + JSON 6: + example: '{ + “deploy” : { + “hosts” : [3] + } + }' + description: Takes an action for a specific cluster + /metadata: + get: + responses: + 200: + body: + application/json: + example: | + { + “package_config”: { + }, + “os_config”: { + } + } + 404: + body: + application/json: + example: | + { + “message”: “Cluster with id ‘some_id’ cannot be found!” + } + description: Get metadata of a specific cluster + +/hosts: + get: + responses: + 200: + body: + application/json: + example: | + [ + { + “id” : 1, + “name”: “host_01”, + “machine_id”: 1, + “mac”: “---MAC-address--”, + “ip”: “192.168.1.2”, + “os”: “CentOS”, + “os_installed”: false, + “clusters”: [“cluster_01”], + “created_by”: “user1@email.com”, + “created_at”: “---timestamp---”, + “updated_at”: “---timestamp---”, + “links”: [ + { + “href” : “/hosts/1”, + “rel”: “self” + } + ] + }, + …… + ] + queryParameters: + name: + os_name: + owner: + mac: + description: Lists information for all hosts + /{host_id}: + get: + responses: + 200: + body: + application/json: + example: | + { + “id” : 1, + “name”: “host_01”, + “machine_id”: 1, + “mac”: “---MAC-address--”, + “ip”: “192.168.1.2” + “os”: “CentOs”, + “os_installed”: false, + “domain”: “xxx”, + “dns”: “xxx”, + “created_by”: “user1@email.com”, + “created_at”: “---timestamp---”, + “updated_at”: “---timestamp---” + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + description: Lists information for a specified host + put: + responses: + 200: + body: + application/json: + example: | + { + “id” : 1, + “name”: “host1” + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + queryParameters: + name: + example: “host1” + reinstall_os: + description: set host properties. + delete: + responses: + 200: + body: + application/json: + example: | + { + “id” : 1, + “name”: “host_01_new”, + “mac”: “---MAC-address--”, + “os_name”: “CentOs”, + “os_installed”: false + } + 404: + body: + application/json: + example: | + { + “type”: “itemNotFound”, + “message”: “ Host with id ‘some_id’ cannot be found!” + } + description: Deletes a host (admin only). The host must be not in any cluster. + /action: + post: + responses: + 200: + body: + application/json: + example: | + { + “status”: “host power action sent”, + “host”: {...} + } + 404: + body: + application/json: + example: | + { + “message”: “The host witch ID “$host_id” cannot be found!” + } + 400: + body: + application/json: + example: | + { + “message”: “The host didnot set IPMI info!” + } + queryParameters: + JSON 1: + example: '{ + “poweron”: null + }' + JSON 2: + example: '{ + “poweroff”: null + }' + JSON 3: + example: '{ + “reset”: null + }' + description: Poweron, poweroff, reset this host by IPMI + /clusters: + get: + responses: + 200: + body: + application/json: + example: | + [ + { + "os_name": "CentOS-6.5-x86_64", + "name": "cluster_new", + "reinstall_distributed_system": true, + "created_at": "2014-10-18 23:16:02", + "adapter_id": 3, + "updated_at": "2014-10-18 23:16:39", + "distributed_system_name": "openstack", + "owner": "admin@huawei.com", + "distributed_system_installed": false, + "id": 2 + } + ] + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + description: Lists clusters which the host belongs to + /config: + get: + responses: + 200: + body: + application/json: + example: | + { + “os_config”: { + “global”: { + “language”; “EN”, + “timezone”: “PDT”, + } + “partition”: { + “/var”: { + “max_size”: “20”, + “size_percentage”: “30” + }, + “/home”: { + “max_size”: “20”, + “size_percentage”: “40” + } + } + } + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + description: Lists config information for a specified host + put: + responses: + 200: + body: + application/json: + example: | + { + “os_config”: { + … + } + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + queryParameters: + os_config: + description: set config properties for a specified host + patch: + responses: + 200: + body: + application/json: + example: | + { + .... + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + queryParameters: + os_config: + description: update host config properties + delete: + responses: + 200: + body: + application/json: + example: | + { + “os_config”: { + … + } + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + description: delete host config + /state: + get: + responses: + 200: + body: + application/json: + example: | + { + “state”: “INSTALLING”, + “percentage”: 0.5, + “severity”: “INFO”, + “message”: “-----some--message-----”, + “updated_at”: “---timestamp---” + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + description: get host state + put: + responses: + 200: + body: + application/json: + example: | + { + “cluster_id” : 1, + “host_id”: 10 + “state”: “SUCCESSFUL”, + “percentage”: 1, + “severity”: “INFO”, + “message”: “-----some--message-----”, + “updated_at”: “---timestamp---” + } + + OR + + { + “cluster_id” : 1, + “host_id”: 10 + “state”: “ERROR”, + “percentage”: 0.7, + “severity”: “ERROR”, + “message”: “---some-error-message---”, + “updated_at”: “---timestamp---” + } + + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + queryParameters: + state: + example: “SUCCESSFUL” / “ERROR” + percentage: + message: + example: “The installation is completed!” / “---some-error-message---” + severity: + example: “INFO” / “ERROR” + description: set host state properties + /network: + get: + responses: + 200: + body: + application/json: + example: | + { + “eth0”: { + “id”: 1, + “interface”: “eth0”, + “ip”: “192.168.10.1”, + “is_mgmt”: true, + “is_promiscuous”: false, + “subnet_id”: 1, + }, + “eth1”: { + “id”: 2, + “interface”: “eth1”, + “ip”: “10.12.123.1”, + “is_promiscuous”: true, + “subnet_id”: 2, + }, + ….. + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + queryParameters: + interface: + ip: + is_mgmt: + is_promiscuous: + description: Lists network info for a specified host + post: + responses: + 200: + body: + application/json: + example: | + { + “id”: 3, + “interface”: “eth3”, + “ip”: “12.140.10.1”, + “is_promiscuous”: true, + “is_mgmt”: false, + “subnet_id”: 3, + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + queryParameters: + interface: + example: “eth3” + required: true + ip: + example: “12.140.10.1” + required: true + subnet_id: + example: 3 + required: true + is_mgmt: + example: false + is_promiscuous: + example: true + description: Creates an interface config entry + /{interface}: + get: + description: list host network information + put: + responses: + 200: + body: + application/json: + example: | + { + “id”: 3, + “interface”: “eth3”, + “ip”: “12.140.10.2”, + “is_promiscuous”: true, + “is_mgmt”: false, + “subnet_id”: 4, + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + queryParameters: + interface: + ip: + example: “12.140.10.2” + subnet_id: + example: 4 + is_mgmt: + is_promiscuous: + description: set host network properties + delete: + responses: + 200: + body: + application/json: + example: | + { + “id”: 3, + “interface”: “eth3”, + “ip”: “12.140.10.1”, + “is_promiscuous”: true, + “is_mgmt”: false, + “subnet_id”: 3 + } + 404: + body: + application/json: + example: | + { + “message”: “ Host with id ‘some_id’ cannot be found!” + } + description: delete a host network +/proxy/{path}: + get: + responses: + 200: + body: + application/json: + example: | + [ + { + "created_at": "2014-10-19 10:50:04", + "updated_at": "2014-10-19 10:50:04", + "email": "admin@huawei.com", + "is_admin": true, + "active": true, + "id": 1 + } + ] + queryParameters: + URL: + example: http://10.145.88.211/api/proxy/users + description: proxy get request + post: + responses: + 200: + body: + application/json: + example: | + { + "subnet": "10.145.86.0/23", + "created_at": "2014-10-19 11:25:33", + "updated_at": "2014-10-19 11:25:33", + "name": "10.145.86.0/23", + "id": 3 + } + queryParameters: + URL: + example: http://10.145.88.211/api/proxy/subnets + description: proxy post request + put: + responses: + 200: + body: + application/json: + example: | + { + "subnet": "10.145.84.0/23", + "created_at": "2014-10-19 11:25:33", + "updated_at": "2014-10-19 11:29:08", + "name": "10.145.84.0/23", + "id": 3 + } + queryParameters: + URL: + example: http://10.145.88.211/api/proxy/subnets/3 + description: proxy put request + patch: + responses: + 200: + body: + application/json: + example: | + { + "ip": "172.29.8.42", + "created_at": "2014-10-19 11:31:40", + "updated_at": "2014-10-19 11:33:46", + "state": "initialized", + "filters": "", + "credentials": { + "version": "2c", + "community": "private" + }, + "id": 3 + } + queryParameters: + URL: + example: http://10.145.88.211/api/proxy/switches/3 + description: proxy patch request + delete: + responses: + 200: + body: + application/json: + example: | + { + "ip": "172.29.8.42", + "created_at": "2014-10-19 11:31:40", + "updated_at": "2014-10-19 11:33:46", + "state": "initialized", + "filters": "", + "credentials": { + "version": "2c", + "community": "private" + }, + "id": 3 + } + queryParameters: + URL: + example: http://10.145.88.211/api/proxy/switches/3 + description: proxy delete request +/host/networks: + get: + responses: + 200: + body: + application/json: + example: | + { + "eth1": { + "ip": "192.168.100.155", + "created_at": "2015-04-17 14:55:55", + "is_promiscuous": true, + "updated_at": "2015-04-17 14:55:55", + "netmask": "255.255.254.0", + "is_mgmt": false, + "interface": "eth1", + "id": 1 + }, + "eth0": { + "ip": "10.145.89.155", + "created_at": "2015-04-17 14:55:55", + "is_promiscuous": false, + "updated_at": "2015-04-17 14:55:55", + "netmask": "255.255.254.0", + "is_mgmt": true, + "interface": "eth0", + "id": 2 + } + } + description: List all host networks + /{host_network_id}: + get: + responses: + 200: + body: + application/json: + example: | + { + "ip": "192.168.100.155", + "created_at": "2015-04-17 14:55:55", + "is_promiscuous": true, + "updated_at: "2015-04-17 14:55:55", + "netmask": "255.255.254.0", + "is_mgmt": false, + "interface": "eth1", + "id": 1 + } + 404: + body: + application/json: + example: | + { + "message": "Cannot find the record in table HostNetwork: {'id': }", + } + description: List specifig host network info +/host-networks/{host_network_id}: + put: + responses: + 200: + body: + application/json: + example: | + { + "ip": "192.168.100.159", + "created_at": "2015-04-17 14:55:55", + "is_promiscuous": true, + "updated_at: "2015-04-17 14:55:55", + "netmask": "255.255.254.0", + "is_mgmt": false, + "interface": "eth1", + "id": 1 + } + 404: + body: + application/json: + example: | + { + message: "Cannot find the record in table HostNetwork: {'id': }" + } + queryParameters: + interface: + ip: + example: "10.145.89.159" + description: Update a specific host network info. + delete: + responses: + 200: + body: + application/json: + example: | + { + "ip: "10.145.89.155", + "created_at": "2015-04-17 15:44:54" + "is_promiscuous": false, + "updated_at": "2015-04-17 15:44:54", + "netmask": "255.255.254.0", + "is_mgmt": false + "interface": "eth0", + "id": 1 + } + 404: + body: + application/json: + example: | + { + message: "Cannot find the record in table HostNetwork: {'id': }" + } + description: Delete a host network. + + +