Create Virtual Network Appliance¶
Summary¶
Create Virtual Network Appliance.
Type¶
- Create
Synchronous/Asynchronous¶
- Asynchronous
Request¶
HTTP Request Method¶
- POST
HTTP Request Path¶
{api_endpoint}/v1.0/virtual_network_appliances
HTTP Request Header¶
Content-Type: application/json
Accept: application/json
X-Auth-Token: <token_id>
X-VNA-Request-Id: <request_id>
注釈
- Field names in HTTP request header are case-insensitive.
- You can set the request_id for a specific request.
- The request_id is unique for each tenant.
- If you make the request again with the same Path and the same method and the same request_id, the request is ignored and you can receive a response similar to show virtual_network_appliance at the current time.
- For example, when you failed to receive a response after requested, you can confirm whether the request succeeded or failed by requesting again with the same request_id. Also, this prevents duplicate execution of requests.
HTTP Request Body¶
Parameters¶
name | style | datatype | format | description | required/optional | default value | action for invalid parameter | response code for invalid parameter |
---|---|---|---|---|---|---|---|---|
token_id | Header | String | Non-Hyph-uuid | keystone authentication token | required | Terminate | 401 | |
request_id | Header | String | Hyph-uuid | A request_id to identify requests. | optional | Terminate | 400 | |
virtual_network_appliance | Body | Object | - | required | Terminate | 400 | ||
name | Body | String | String(0-255) | Name of the Virtual Network Appliance | optional | Terminate | 400 | |
description | Body | String | String(0-255) | Description of the Virtual Network Appliance | optional | Terminate | 400 | |
default_gateway | Body | String | Ipv4 | IP address of default gateway | optional | See notes | Terminate | 400 |
availability_zone | Body | String | String(0-255) | Availability Zone, this can be referred to using Virtual Server (Nova)’s list availability zones | optional | Terminate | 400 | |
virtual_network_appliance_plan_id | Body | String | Hyph-uuid | ID of the Virtual Network Appliance Plan | required | Terminate | 400 | |
tenant_id | Body | String | Non-Hyph-uuid | Tenant ID of the owner (UUID) | optional | Terminate | 400 | |
tags | Body | Object | - | Tags of the Virtual Network Appliance | optional | Terminate | 400 | |
interfaces | Body | Object | - | Attached interfaces | optional | Terminate | 400 | |
interfaces.interface_<slot_number> | Body | Object | - | optional | Terminate | 400 | ||
interfaces.interface_<slot_number>.name | Body | String | String(0-255) | Name of the Interface | optional | ge-0/0/<slot_number - 1> | Terminate | 400 |
interfaces.interface_<slot_number>.description | Body | String | String(0-255) | Description of the Interface | optional | Terminate | 400 | |
interfaces.interface_<slot_number>.network_id | Body | String | Hyph-uuid | The ID of network this Interface belongs to. | required | Terminate | 400 | |
interfaces.interface_<slot_number>.tags | Body | Object | - | Tags of the Interface | optional | Terminate | 400 | |
interfaces.interface_<slot_number>.fixed_ips | Body | Array<Object> | - | List of fixes IP addresses assign to Interface. | optional | See notes | Terminate | 400 |
interfaces.interface_<slot_number>.fixed_ips.ip_address | Body | String | Ipv4 | The IP address assign to Interface within subnet. | required | Terminate | 400 | |
initial_config | Body | Object | - | Initial configuration of the Virtual_Network_Appliance | optional | Terminate | 400 | |
initial_config.format | Body | string | - | Initial configuration format(set, text) | required | See notes | Terminate | 400 |
initial_config.data | Body | string | Base64 | Initial configuration data in base64 encoded format | required | See notes | Terminate | 400 |
注釈
- You can not set default_gateway and interfaces.interface_<slot_number>.fixed_ips.ip_address to the same ip_address.
- You can not set default_gateway (or interfaces.interface_<slot_number>.fixed_ips.ip_address) which does not belong to the subnet of interfaces.interface_<slot_number>.network_id.
- You can not set the network address or broadcast address of the subnet to default_gateway (or interfaces.interface_<slot_number>.fixed_ips.ip_address).
- It is allowed to specify only "data-plane" network for interfaces.interface_<slot_number>.network_id.
- You can not create a Virtual_Network_Appliacne with a virtual_network_appliacne_plan_id of which "enabled" attribute is false.
- Fixed_Ips
- If you don't specify interfaces.interface_<slot_number>.fixed_ips, an IP address is automatically assigned from your subnets and the address is associated with the OS.
- If you specify [] for interfaces.interface_<slot_number>.fixed_ips, an IP address is not assigned.
- If you specify multiple ip_address in interfaces.interface_<slot_number>.fixed_ips, all specified IP addresses are assigned and those addresses are associated with the OS.
- initial_config
- The initial_config.format can be set to the following formats:
[set]
: Commands for Junos OS configuration mode.[text]
: Formatted ASCII configuration statements to merge.
- The initial_config.data does not exceed 512KB in size before base64 encoding.
- The initial_config.data can have the following meta variables dynamically embedded within the configuration:
{{ management_interface_ip_address }}
: The IP address of the management interface(fxp0). e.g.,100.***.***.***
{{ management_interface_prefix_length }}
: The prefix length of the management interface(fxp0). e.g.,/24
{{ interface_<slot_number>_ip_address_<fixed_ips_index> }}
: The IP address of interface_<slot_number>. e.g.,192.168.1.1
{{ interface_<slot_number>_prefix_length }}
: The prefix length of interface_<slot_number>. e.g.,/24
- The initial_config.format can be set to the following formats:
Response¶
Response Header¶
Format¶
HTTP/1.1 <response_code> <message> (ex. 200 OK)
- <response_code>: see "HTTP Responses" section
- <message>: message based on the response code
Response Body¶
Format¶
{
"virtual_network_appliance": {
"name": "<name>",
"id": "<id>",
"appliance_type": "<appliance_type>",
"description": "<description>",
"default_gateway": "<default_gateway>",
"availability_zone": "<availability_zone>",
"os_monitoring_status": "<os_monitoring_status>",
"os_login_status": "<os_login_status>",
"vm_status": "<vm_status>",
"operation_status" : "<operation_status>",
"virtual_network_appliance_plan_id": "<virtual_network_appliance_plan_id>",
"tenant_id": "<tenant_id>",
"username": "<username>",
"password": "<password>",
"tags": {},
"interfaces": {
"interface_<slot_number>": {
"name": "<name>",
"description": "<description>",
"network_id": "<network_id>",
"updatable": "<updatable>",
"tags": {},
"fixed_ips": [
{
"ip_address": "<ip_address>",
"subnet_id": "<subnet_id>"
}
],
"allowed_address_pairs":[
{
"ip_address": "<ip_address>",
"mac_address": "<mac_address>",
"type": "<type>",
"vrid": "<vrid>"
}
]
}
}
}
}
Parameters¶
item | datatype | format | description |
virtual_network_appliances | Array<Object> | - | |
name | String | String(0-255) | Name of the Virtual Network Appliance |
id | String | Hyph-uuid | It identifies a Virtual Network Appliance uniquely. |
appliance_type | String | String(0-255) | Type of the appliance |
description | String | String(0-255) | Description of the Virtual Network Appliance |
default_gateway | String | Ipv4 | IP address of default gateway |
availability_zone | String | String(0-255) | Availability Zone, this can be referred to using Virtual Server (Nova)’s list availability zones |
os_monitoring_status | String | String(0-255) | OS Monitoring Status |
os_login_status | String | String(0-255) | OS Login Status |
vm_status | String | String(0-255) | VM Status |
operation_status | String | String(0-255) | Operation Status |
virtual_network_appliance_plan_id | String | Hyph-uuid | It identifies a Virtual Network Appliance Plan uniquely. |
tenant_id | String | Non-Hyph-uuid | Tenant ID of the owner (UUID) |
username | String | String(0-255) | Username with user access to VNA instance |
password | String | Passowrd(12) | Password for user |
tags | Object | - | Tags of the Virtual Network Appliance |
interfaces | Object | - | Attached interfaces |
interfaces.interface_<slot_number> | Object | - | |
interfaces.interface_<slot_number>.name | String | String(0-255) | Name of the Interface |
interfaces.interface_<slot_number>.description | String | String(0-255) | Description of the Interface |
interfaces.interface_<slot_number>.network_id | String | Hyph-uuid | The ID of network this Interface belongs to. |
interfaces.interface_<slot_number>.updatable | Boolean | - | |
interfaces.interface_<slot_number>.tags | Object | - | Tags of the Interface |
interfaces.interface_<slot_number>.fixed_ips | Array<Object> | - | List of fixes IP addresses assign to Interface. |
interfaces.interface_<slot_number>.fixed_ips.ip_address | String | Ipv4 | The IP address assign to Interface within subnet. |
interfaces.interface_<slot_number>.fixed_ips.subnet_id | String | Hyph-uuid | The ID of subnet from which IP address is allocated. |
interfaces.interface_<slot_number>.allowed_address_pairs | Array<Object> | - | Allowed address pairs |
interfaces.interface_<slot_number>.allowed_address_pairs.ip_address | String | Ipv4 | |
interfaces.interface_<slot_number>.allowed_address_pairs.mac_address | String | Mac_Address | |
interfaces.interface_<slot_number>.allowed_address_pairs.type | String | String(0-255) | |
interfaces.interface_<slot_number>.allowed_address_pairs.vrid | Integer | Integer(0-255) |
Sample Request and Response¶
Sample API Request¶
Request URI¶
https://{api_endpoint}/v1.0/virtual_network_appliances
Request Header¶
Content-Type: application/json
Accept: application/json
X-Auth-Token: 69105c889f824efdafb56af224208ad4
Request Body¶
{
"virtual_network_appliance": {
"name": "virtual_network_appliance_name",
"description": "virtual_network_appliance_name_description",
"default_gateway": "192.168.0.1",
"availability_zone": "zone1-groupa",
"virtual_network_appliance_plan_id": "b0cdb8c5-aaf0-48eb-81ac-f211b54da53c",
"tenant_id": "13572f6f42a74d2b82f7099f78d0393a",
"tags": {},
"interfaces": {
"interface_1": {
"name": "interface_1_name",
"description": "interface_1_description",
"network_id": "0967afc2-73a8-4c1f-869a-54c3b07dc199",
"tags":{},
"fixed_ips": [
{
"ip_address": "192.168.0.100"
}
]
}
},
"initial_config": {
"format": "set",
"data": "c2V0IGludGVyZmFjZXMgZ2UtMC8wLzAgZGVzY3JpcHRpb24gInZuYTAiCnNldCBpbnRlcmZhY2VzIGdlLTAvMC8xIGRlc2NyaXB0aW9uICJ2bmExIgo="
}
}
}
Sample API Response¶
Response Header¶
HTTP/1.1 200 OK
Response Body¶
{
"virtual_network_appliance": {
"name": "virtual_network_appliance_name",
"id": "a80c1728-cc0c-11e6-8080-525400060300",
"appliance_type": "ECL::VirtualNetworkAppliance::VSRX",
"description": "virtual_network_appliance_name_description",
"default_gateway": "192.168.0.1",
"availability_zone": "zone1-groupa",
"os_monitoring_status": "initial",
"os_login_status": "initial",
"vm_status": "initial",
"operation_status" : "PROCESSING",
"virtual_network_appliance_plan_id": "b0cdb8c5-aaf0-48eb-81ac-f211b54da53c",
"tenant_id": "13572f6f42a74d2b82f7099f78d0393a",
"username": "root",
"password": "4AeC36ac1k1P",
"tags": {},
"interfaces": {
"interface_1": {
"name": "interface_1_name",
"description": "interface_1_description",
"network_id": "0967afc2-73a8-4c1f-869a-54c3b07dc199",
"updatable": true,
"tags": {},
"fixed_ips": [
{
"ip_address": "192.168.0.100",
"subnet_id": ""
}
],
"allowed_address_pairs": []
}
(snip)
}
}
}
Example Error Message¶
HTTP Request¶
POST /v1.0/virtual_network_appliances HTTP/1.1
User-Agent: curl/7.51.0
Host: 10.1.131.140
Accept:application/json
X-Auth-Token:4e54395a12b740d585d74190ba4eb14b
Content-Type: application/json
HTTP Response¶
HTTP/1.1 400 Bad Request
Server: nginx
Date: Wed, 07 Feb 2018 06:49:20 GMT
Content-Type: application/json
Content-Length: 41
Connection: keep-alive
{
"message": "ip_address is not in cidr."
}