ServerCreate
(Created page with "Creates a new server. The server creation is asynchronous the progress can be check with at the URL in the response Location header or the self link in the body. '''POST''' /...") |
Mike.robski (Talk | contribs) m (1 revision: Release 98) |
||
(18 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | + | This operation will create a new server. Server creation is asynchronous, the progress can be checked with the URL in the response Location header or the self link in the body. | |
− | '''POST''' /servers | + | ='''POST''' /accounts/''{accountId}''/flexcloud/servers= |
+ | This operation will create a new server. Server creation is asynchronous, the progress can be checked with the URL in the response Location header or the self link in the body. | ||
+ | |||
+ | == Request == | ||
+ | === Request Parameters === | ||
+ | ; accountId - ''string'' | ||
+ | : The selected account Id. | ||
− | |||
=== JSON === | === JSON === | ||
<nowiki> | <nowiki> | ||
{ | { | ||
"server":{ | "server":{ | ||
− | "name":" | + | "name":"{display_server_name}", |
− | "imageRef":"http:// | + | "imageRef":"http://{server_name}/accounts/{accountId}/flexcloud/images/{image_id}/", |
− | "flavorRef":"http:// | + | "flavorRef":"http://{server_name}/accounts/{accountId}/flexcloud/flavors/{flavor_id}/", |
− | } | + | "securityGroupRef":"http://{server_name}/accounts/{accountId}/flexcloud/os-security-groups/{security_group_id}/", |
− | </nowiki> | + | "adminPass":"{initial_password}", |
+ | "zone": "{zone_textkey}" | ||
+ | } | ||
+ | }</nowiki> | ||
; name - ''string'' | ; name - ''string'' | ||
Line 22: | Line 30: | ||
; flavorRef - ''string'' | ; flavorRef - ''string'' | ||
: Absolute URL of the [[Flavor]] to use | : Absolute URL of the [[Flavor]] to use | ||
+ | |||
+ | ; securityGroupRef - ''string'' | ||
+ | : Absolute URL of the [[SecurityGroup]] to use | ||
+ | |||
+ | ; adminPass - ''string'' | ||
+ | : Initial admin password. If not specified, the automatically generated password would be returned. | ||
+ | |||
+ | ; zone | ||
+ | : Zone textkey | ||
== Result == | == Result == | ||
Line 28: | Line 45: | ||
{ | { | ||
"server":{ | "server":{ | ||
− | "status":" | + | "status":"{state_status}", |
"updated":null, | "updated":null, | ||
− | "hostId":" | + | "hostId":"", |
"addresses":{ | "addresses":{ | ||
"public":[ | "public":[ | ||
{ | { | ||
"version":4, | "version":4, | ||
− | "addr":" | + | "addr":"{ip_address}" |
} | } | ||
], | ], | ||
Line 41: | Line 58: | ||
{ | { | ||
"version":4, | "version":4, | ||
− | "addr":" | + | "addr":"{ip_address}" |
} | } | ||
] | ] | ||
Line 47: | Line 64: | ||
"links":[ | "links":[ | ||
{ | { | ||
− | "href":"http:// | + | "href":"http://{server_name}/accounts/{accountId}/flexcloud/servers/{server_id}/", |
"rel":"self" | "rel":"self" | ||
} | } | ||
], | ], | ||
"image":{ | "image":{ | ||
− | "name":" | + | "name":"{display_image_name}", |
"links":[ | "links":[ | ||
{ | { | ||
− | "href":"http:// | + | "href":"http://{server_name}/accounts/{accountId}/flexcloud/images/{image_id}/", |
"rel":"self" | "rel":"self" | ||
} | } | ||
], | ], | ||
− | "id":" | + | "id":"{image_id}" |
}, | }, | ||
− | "userId":" | + | "securityGroup": { |
+ | "id":"{security_group_id}", | ||
+ | "links":[ | ||
+ | { | ||
+ | "href":"http://{api_server}/accounts/{accountId}/flexcloud/os-security-groups/{security_group_id}/", | ||
+ | "rel":"self" | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | "userId":"{user_account_id}", | ||
"flavor":{ | "flavor":{ | ||
− | "name":" | + | "name":"{display_flavor_name}", |
"links":[ | "links":[ | ||
{ | { | ||
− | "href":" | + | "href":"{server_name}/accounts/{accountId}/flexcloud/flavors/{flavor_id}/", |
"rel":"self" | "rel":"self" | ||
} | } | ||
], | ], | ||
− | "id": | + | "id":{flavor_id} |
}, | }, | ||
− | "id":" | + | "id":"{server_id}", |
− | "name":" | + | "zone": "{zone_textkey}", |
− | " | + | "name":"{display_server_name}", |
+ | "adminPass": "{initial_password}" | ||
+ | "created":"", | ||
"tenantId":null, | "tenantId":null, | ||
− | "accessIPv4":" | + | "accessIPv4":"{ip_address}", |
"accessIPv6":null, | "accessIPv6":null, | ||
− | "progress": | + | "progress":0, |
"metadata":{ | "metadata":{ | ||
− | |||
} | } | ||
} | } | ||
− | } | + | }</nowiki> |
− | </nowiki> | + | |
+ | * When a server is in pending status (has not completed the provisioning process), the creation timestamp and hostId that are returned will be empty strings. | ||
==== server ==== | ==== server ==== | ||
; id - ''string'' | ; id - ''string'' | ||
Line 94: | Line 121: | ||
; status - ''string'' | ; status - ''string'' | ||
− | : Current state of the server. Values: '''BUILD''', '''ACTIVE''', '''SUSPENDED''', '''DELETED''', '''UNKNOWN''' | + | : Current state of the server. Values: '''BUILD''', '''ACTIVE''', '''PROCESSING''', '''SUSPENDED''', '''DELETED''', '''UNKNOWN''' |
; hostId - ''string'' | ; hostId - ''string'' | ||
Line 103: | Line 130: | ||
; name - ''string'' | ; name - ''string'' | ||
− | : | + | : Display name for this server. |
; created - ''string'' | ; created - ''string'' | ||
Line 113: | Line 140: | ||
; progress - ''number'' | ; progress - ''number'' | ||
: The progress of the current this server while in the BUILD status. The value is in the range of 0 - 100, but currently will only even be 0, 50, 100. | : The progress of the current this server while in the BUILD status. The value is in the range of 0 - 100, but currently will only even be 0, 50, 100. | ||
+ | |||
+ | ; adminPass - ''string'' | ||
+ | : The admin password. Not null only in the creating server response. | ||
; metadata - ''object'' | ; metadata - ''object'' | ||
Line 125: | Line 155: | ||
; updated | ; updated | ||
: Unused always null. | : Unused always null. | ||
+ | |||
+ | ; zone | ||
+ | : Zone text key | ||
==== addresses ==== | ==== addresses ==== | ||
Line 159: | Line 192: | ||
: Unique identifier for flavor this server is based on. | : Unique identifier for flavor this server is based on. | ||
− | < | + | ==== securityGroup ==== |
+ | ; securityGroup.id - ''string'' | ||
+ | : the name of the security group that is assigned to this server | ||
+ | |||
+ | ; securityGroup.links - ''list'' | ||
+ | : [[Hypermedia]] for the securityGroup. | ||
+ | |||
+ | == Response Codes == | ||
+ | ; Success: | ||
+ | :''HTTP/1.1 202 Accepted'' | ||
+ | ::Request is accepted. | ||
+ | |||
+ | ; Failure: | ||
+ | :''HTTP/1.1 400 Bad Request'' | ||
+ | ::The resource used for creating server is not found. | ||
+ | |||
+ | ; Failure: | ||
+ | :''HTTP/1.1 404 Bad Request'' | ||
+ | ::The resource does not exist (when account number is not valid) | ||
+ | |||
+ | == Examples == | ||
+ | '''Successfully create a new server''' | ||
+ | :'''POST''' <nowiki>http://{api_server}/accounts/{accountId}/flexcloud/servers</nowiki> | ||
+ | |||
+ | ''Request Headers:'' | ||
+ | Content-Type:application/json | ||
+ | Charset=UTF-8 | ||
+ | Authorization:Base64-encoded username & password string | ||
+ | |||
+ | ''Request Body:'' | ||
+ | <nowiki> | ||
+ | { | ||
+ | "server" : | ||
+ | { | ||
+ | "flavorRef" : "http://{api_server}/accounts/{accountId}/flexcloud/flavors/1", | ||
+ | "securityGroupRef":"http://{server_name}/accounts/{accountId}/flexcloud/os-security-groups/{security_group_id}/", | ||
+ | "name" : "test_server_create", | ||
+ | "imageRef" : "http://{api_server}/accounts/{accountId}/flexcloud/images/test_public_image", | ||
+ | "zone": "AUS001" | ||
+ | } | ||
+ | } </nowiki> | ||
+ | ''Response Code:'' | ||
+ | <pre>HTTP/1.1 202 Accepted</pre> | ||
+ | |||
+ | ''Response Body:'' | ||
+ | <nowiki> | ||
+ | { | ||
+ | "server": | ||
+ | { | ||
+ | "status": "BUILD", | ||
+ | "updated": null, | ||
+ | "hostId": "", | ||
+ | "addresses": | ||
+ | { | ||
+ | "public": [ | ||
+ | { | ||
+ | "version": 4, | ||
+ | "addr": "{ip_address}" | ||
+ | } | ||
+ | ], | ||
+ | "private": [ | ||
+ | { | ||
+ | "version": 4, | ||
+ | "addr": "{ip_address}" | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | "links": [ | ||
+ | { | ||
+ | "href": "http://{api_server}/accounts/{accountId}/flexcloud/servers/167/", | ||
+ | "rel": "self" | ||
+ | } | ||
+ | ], | ||
+ | "imageRef": | ||
+ | { | ||
+ | "name": "CentOS 5 Plesk", | ||
+ | "links": [ | ||
+ | { | ||
+ | "href": "http://{api_server}/accounts/{accountId}/flexcloud/images/test_public_image/", | ||
+ | "rel": "self" | ||
+ | } | ||
+ | ], | ||
+ | "id": "test_public_image" | ||
+ | }, | ||
+ | "securityGroup": | ||
+ | { | ||
+ | "id":"group2012Nov02_jD6NX8BsK", | ||
+ | "links":[ | ||
+ | { | ||
+ | "href":"http://{server_name}/accounts/{accountId}/flexcloud/os-security-groups/group2012Nov02_jD6NX8BsK/", | ||
+ | "rel":"self" | ||
+ | } | ||
+ | ], | ||
+ | }, | ||
+ | "userId": "{user_account_id}", | ||
+ | "flavorRef": | ||
+ | { | ||
+ | "name": "", | ||
+ | "links": [ | ||
+ | { | ||
+ | "href": "http://{api_server}/accounts/{accountId}/flexcloud/flavors/1/", | ||
+ | "rel": "self" | ||
+ | } | ||
+ | ], | ||
+ | "id": "1" | ||
+ | }, | ||
+ | "id": "167", | ||
+ | "zone": "AUS001", | ||
+ | "name": "test_server_create", | ||
+ | "adminPass": "{auto_generated_password}" | ||
+ | "created": "", | ||
+ | "tenantId": null, | ||
+ | "accessIPv4": "{ip_address}", | ||
+ | "accessIPv6": null, | ||
+ | "progress": 0, | ||
+ | "metadata": {} | ||
+ | } | ||
+ | }</nowiki> | ||
+ | |||
+ | * When a server is in pending status (has not completed the provisioning process), the creation timestamp and hostId that are returned will be empty strings. | ||
+ | |||
+ | |||
+ | '''Failure while trying to create a server with a bad request body''' | ||
+ | :'''POST''' <nowiki>http://{api_server}/accounts/{accountId}/flexcloud/servers</nowiki> | ||
+ | |||
+ | ''Request Headers:'' | ||
+ | Content-Type:application/json | ||
+ | Charset=UTF-8 | ||
+ | Authorization:Base64-encoded username & password string | ||
+ | |||
+ | ''Request Body:'' | ||
+ | <nowiki> | ||
+ | { | ||
+ | "server" : | ||
+ | { | ||
+ | "flavorRef" : "http://{api_server}/accounts/{accountId}/flexcloud/flavors/{flavor_id}", | ||
+ | "securityGroupRef" : "http://{api_server}/accounts/{accountId}/flexcloud/os-security-groups/{security_group_id}", | ||
+ | "name" : "{display_server_name}", | ||
+ | "imageRef" : "http://{api_server}/accounts/{accountId}/flexcloud/images/{fake_image_id}", | ||
+ | "zone": "AUS001" | ||
+ | } | ||
+ | }</nowiki> | ||
+ | |||
+ | ''Response Code:'' | ||
+ | <pre>HTTP/1.1 400 Bad Request</pre> | ||
+ | |||
+ | ''Response Body:'' | ||
+ | <nowiki> | ||
+ | { | ||
+ | "computeFault": | ||
+ | { | ||
+ | "message": "Bad imageRef", | ||
+ | "code": 400, | ||
+ | "details": "", | ||
+ | "errorid": "59e0b3dd-2173-432a-8ff5-60efe16e83bf" | ||
+ | } | ||
+ | }</nowiki> | ||
+ | |||
+ | '''Failure while trying to pass invalid account number''' | ||
+ | :'''POST''' http(s)://{api_server}/accounts/fake/flexcloud/servers | ||
+ | |||
+ | ''Response Code:'' | ||
+ | <pre>HTTP/1.1 404 Not Found</pre> | ||
+ | |||
+ | ''Response Body:'' | ||
+ | <nowiki> | ||
+ | { | ||
+ | "itemNotFound" : { | ||
+ | "message": "Resource not found", | ||
+ | "code": 404, | ||
+ | "details": "", | ||
+ | "errorid": "59e0b3dd-2173-432a-8ff5-60efe16e83bf" | ||
+ | } | ||
+ | }</nowiki> | ||
+ | |||
+ | == Alternative URI /servers == | ||
+ | An alternative way to execute this call is to omit the ''accountId'' portion of the URI. In this case the system assumes the request is executed for the account identified in the [[Authentication|authorization header]]. | ||
− | + | <code>POST /servers</code> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | [[Category:Hostway API]] | |
+ | [[Category:FlexCloud Server API]] |
Latest revision as of 07:52, 15 September 2014
This operation will create a new server. Server creation is asynchronous, the progress can be checked with the URL in the response Location header or the self link in the body.
Contents |
POST /accounts/{accountId}/flexcloud/servers
This operation will create a new server. Server creation is asynchronous, the progress can be checked with the URL in the response Location header or the self link in the body.
Request
Request Parameters
- accountId - string
- The selected account Id.
JSON
{ "server":{ "name":"{display_server_name}", "imageRef":"http://{server_name}/accounts/{accountId}/flexcloud/images/{image_id}/", "flavorRef":"http://{server_name}/accounts/{accountId}/flexcloud/flavors/{flavor_id}/", "securityGroupRef":"http://{server_name}/accounts/{accountId}/flexcloud/os-security-groups/{security_group_id}/", "adminPass":"{initial_password}", "zone": "{zone_textkey}" } }
- name - string
- Display name for this server
- imageRef - string
- Absolute URL of the Image to use
- flavorRef - string
- Absolute URL of the Flavor to use
- securityGroupRef - string
- Absolute URL of the SecurityGroup to use
- adminPass - string
- Initial admin password. If not specified, the automatically generated password would be returned.
- zone
- Zone textkey
Result
JSON
{ "server":{ "status":"{state_status}", "updated":null, "hostId":"", "addresses":{ "public":[ { "version":4, "addr":"{ip_address}" } ], "private":[ { "version":4, "addr":"{ip_address}" } ] }, "links":[ { "href":"http://{server_name}/accounts/{accountId}/flexcloud/servers/{server_id}/", "rel":"self" } ], "image":{ "name":"{display_image_name}", "links":[ { "href":"http://{server_name}/accounts/{accountId}/flexcloud/images/{image_id}/", "rel":"self" } ], "id":"{image_id}" }, "securityGroup": { "id":"{security_group_id}", "links":[ { "href":"http://{api_server}/accounts/{accountId}/flexcloud/os-security-groups/{security_group_id}/", "rel":"self" } ] }, "userId":"{user_account_id}", "flavor":{ "name":"{display_flavor_name}", "links":[ { "href":"{server_name}/accounts/{accountId}/flexcloud/flavors/{flavor_id}/", "rel":"self" } ], "id":{flavor_id} }, "id":"{server_id}", "zone": "{zone_textkey}", "name":"{display_server_name}", "adminPass": "{initial_password}" "created":"", "tenantId":null, "accessIPv4":"{ip_address}", "accessIPv6":null, "progress":0, "metadata":{ } } }
- When a server is in pending status (has not completed the provisioning process), the creation timestamp and hostId that are returned will be empty strings.
server
- id - string
- Unique identifier for this server.
- links - list
- Hypermedia for this resource.
- status - string
- Current state of the server. Values: BUILD, ACTIVE, PROCESSING, SUSPENDED, DELETED, UNKNOWN
- hostId - string
- Id of the physical host this virtual machine is running on.
- userId - string
- Unique identifier for the owner of this server.
- name - string
- Display name for this server.
- created - string
- The date and time this server was created. ISO 8601 format, YYYY-MM-DDTHH:MM:SS.
- accessIPv4 - string
- The default included public IPv4 address.
- progress - number
- The progress of the current this server while in the BUILD status. The value is in the range of 0 - 100, but currently will only even be 0, 50, 100.
- adminPass - string
- The admin password. Not null only in the creating server response.
- metadata - object
- Unused always an empty object.
- tenantId
- Unused always always null.
- accessIPv6
- Unused always null.
- updated
- Unused always null.
- zone
- Zone text key
addresses
- addresses.public.version - number
- IP version of this address. Values: 4
- addresses.public.addr = string
- Public IP address of this server
- addresses.private.version - number
- IP version of this address. Values: 4
- addresses.private.addr - string
- Private IP address of this server
image
- image.name - string
- The display name of the image this server is based on.
- image.links - list
- Hypermedia for the image.
- image.id - string
- Unique identifier for image this server is based on.
flavor
- flavor.name - string
- The display name of the flavor this server is based on.
- flavor.links - list
- Hypermedia for the flavor.
- flavor.id - string
- Unique identifier for flavor this server is based on.
securityGroup
- securityGroup.id - string
- the name of the security group that is assigned to this server
- securityGroup.links - list
- Hypermedia for the securityGroup.
Response Codes
- Success
- HTTP/1.1 202 Accepted
- Request is accepted.
- Failure
- HTTP/1.1 400 Bad Request
- The resource used for creating server is not found.
- Failure
- HTTP/1.1 404 Bad Request
- The resource does not exist (when account number is not valid)
Examples
Successfully create a new server
- POST http://{api_server}/accounts/{accountId}/flexcloud/servers
Request Headers:
Content-Type:application/json Charset=UTF-8 Authorization:Base64-encoded username & password string
Request Body:
{ "server" : { "flavorRef" : "http://{api_server}/accounts/{accountId}/flexcloud/flavors/1", "securityGroupRef":"http://{server_name}/accounts/{accountId}/flexcloud/os-security-groups/{security_group_id}/", "name" : "test_server_create", "imageRef" : "http://{api_server}/accounts/{accountId}/flexcloud/images/test_public_image", "zone": "AUS001" } }
Response Code:
HTTP/1.1 202 Accepted
Response Body:
{ "server": { "status": "BUILD", "updated": null, "hostId": "", "addresses": { "public": [ { "version": 4, "addr": "{ip_address}" } ], "private": [ { "version": 4, "addr": "{ip_address}" } ] }, "links": [ { "href": "http://{api_server}/accounts/{accountId}/flexcloud/servers/167/", "rel": "self" } ], "imageRef": { "name": "CentOS 5 Plesk", "links": [ { "href": "http://{api_server}/accounts/{accountId}/flexcloud/images/test_public_image/", "rel": "self" } ], "id": "test_public_image" }, "securityGroup": { "id":"group2012Nov02_jD6NX8BsK", "links":[ { "href":"http://{server_name}/accounts/{accountId}/flexcloud/os-security-groups/group2012Nov02_jD6NX8BsK/", "rel":"self" } ], }, "userId": "{user_account_id}", "flavorRef": { "name": "", "links": [ { "href": "http://{api_server}/accounts/{accountId}/flexcloud/flavors/1/", "rel": "self" } ], "id": "1" }, "id": "167", "zone": "AUS001", "name": "test_server_create", "adminPass": "{auto_generated_password}" "created": "", "tenantId": null, "accessIPv4": "{ip_address}", "accessIPv6": null, "progress": 0, "metadata": {} } }
- When a server is in pending status (has not completed the provisioning process), the creation timestamp and hostId that are returned will be empty strings.
Failure while trying to create a server with a bad request body
- POST http://{api_server}/accounts/{accountId}/flexcloud/servers
Request Headers:
Content-Type:application/json Charset=UTF-8 Authorization:Base64-encoded username & password string
Request Body:
{ "server" : { "flavorRef" : "http://{api_server}/accounts/{accountId}/flexcloud/flavors/{flavor_id}", "securityGroupRef" : "http://{api_server}/accounts/{accountId}/flexcloud/os-security-groups/{security_group_id}", "name" : "{display_server_name}", "imageRef" : "http://{api_server}/accounts/{accountId}/flexcloud/images/{fake_image_id}", "zone": "AUS001" } }
Response Code:
HTTP/1.1 400 Bad Request
Response Body:
{ "computeFault": { "message": "Bad imageRef", "code": 400, "details": "", "errorid": "59e0b3dd-2173-432a-8ff5-60efe16e83bf" } }
Failure while trying to pass invalid account number
- POST http(s)://{api_server}/accounts/fake/flexcloud/servers
Response Code:
HTTP/1.1 404 Not Found
Response Body:
{ "itemNotFound" : { "message": "Resource not found", "code": 404, "details": "", "errorid": "59e0b3dd-2173-432a-8ff5-60efe16e83bf" } }
Alternative URI /servers
An alternative way to execute this call is to omit the accountId portion of the URI. In this case the system assumes the request is executed for the account identified in the authorization header.
POST /servers