Update Virtual Network Appliance

Summary

Update Virtual Network Appliance.

Type

  • Update

Synchronous/Asynchronous

  • Asynchronous

Request

HTTP Request Method

  • PATCH

HTTP Request Path

{api_endpoint}/v1.0/virtual_network_appliances/{virtual_network_appliance_id}

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

Input Parameters

name

style

datatype

format

update type

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

-

optional

virtual_network_appliance_id

URL

String

Hyph-uuid

-

ID of the Virtual Network Appliance

required

Terminate

404

virtual_network_appliance

Body

Object

-

-

required

Terminate

400

name

Body

String

String(0-255)

MetaData

Name of the Virtual Network Appliance

optional

Terminate

400

description

Body

String

String(0-255)

MetaData

Description of the Virtual Network Appliance

optional

Terminate

400

tags

Body

Object

-

MetaData

Tags of the Virtual Network Appliance

optional

Terminate

400

interfaces

Body

Object

-

-

Attached interfaces

optional

Terminate

400

interface_<slot_number>

Body

Object

-

-

optional

Terminate

400

interfaces.interface_<slot_number>.name

Body

String

String(0-255)

MetaData

Name of the Interface

optional

ge-0/0/<slot_number - 1>

Terminate

400

interfaces.interface_<slot_number>.description

Body

String

String(0-255)

MetaData

Description of the Interface

optional

Terminate

400

interfaces.interface_<slot_number>.tags

Body

Object

-

MetaData

Tags of the Interface

optional

Terminate

400

interfaces.interface_<slot_number>.network_id

Body

String

Hyph-uuid

Interface

The ID of network this Interface belongs to.

optional

Terminate

400

interfaces.interface_<slot_number>.fixed_ips

Body

Array<Object>

-

Interface

List of fixes IP addresses assign to Interface.

optional

See notes

Terminate

400

interfaces.interface_<slot_number>.fixed_ips.ip_address

Body

String

Ipv4

Interface

The IP address assign to Interface within subnet.

required

Terminate

400

interfaces.interface_<slot_number>.allowed_address_pairs

Body

Array<Object>

-

Allowed_Address_Pairs

Allowed address pairs

optional

Terminate

400

interfaces.interface_<slot_number>.allowed_address_pairs.ip_address

Body

String

Ipv4

Allowed_Address_Pairs

required

Terminate

400

interfaces.interface_<slot_number>.allowed_address_pairs.mac_address

Body

String

Mac_Address

Allowed_Address_Pairs

required

Terminate

400

interfaces.interface_<slot_number>.allowed_address_pairs.type

Body

String

String(0-255)

Allowed_Address_Pairs

required

Terminate

400

interfaces.interface_<slot_number>.allowed_address_pairs.vrid

Body

Integer

Integer(0-255)

Allowed_Address_Pairs

required

Terminate

400

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 Code

Response Codes

response code

condition

200

OK

400

Bad Request

401

Unauthorized

404

Not Found

409

Conflicted

500

Internal Server Error

Response Body

Format

{
  "virtual_network_appliance": {
    "name": "<name>",
    "id": "<id>",
    "appliance_type": "<appliance_type>",
    "description": "<description>",
    "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>",
    "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

Response Parameters

item

datatype

format

description

virtual_network_appliance

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 appliance

description

String

String(0-255)

Description of the Virtual Network Appliance

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)

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/{virtual_network_appliance_id}

Request Header

Content-Type: application/json
Accept: application/json
X-Auth-Token: 69105c889f824efdafb56af224208ad4

Request Body (When the Update Type is Allowed_Address_Pairs)

{
  "virtual_network_appliance": {
    "name": "update_name_of_virtual_network_appliance",
    "description": "update_description_of_virtual_network_appliance",
    "tags": {},
    "interfaces": {
      "interface_1": {
        "name": "update_name_of_virtual_network_appliance_interface_1",
        "description": "update_description_of_virtual_network_appliance_interface_1",
        "tags": {},
        "allowed_address_pairs": [
          {
            "ip_address": "192.168.10.110",
            "mac_address": "",
            "type": "vrrp",
            "vrid": 10
          }
        ]
      },
      "interface_2": {
        "name": "update_name_of_virtual_network_appliance_interface_2",
        "description": "update_description_of_virtual_network_appliance_interface_2",
        "tags": {},
        "allowed_address_pairs": [
          {
            "ip_address": "172.16.0.120",
            "mac_address": "00:00:5e:00:01:01",
            "type": "",
            "vrid": null
          }
        ]
      }
    }
  }
}

Request Body (When Update Type is Interface)

Case 1: Attaching a network to an interface to which no network is attached or Changing network_id and fixed_ips of an interface to which a network is already attached

{
  "virtual_network_appliance": {
    "name": "update_name_of_virtual_network_appliance",
    "description": "update_description_of_virtual_network_appliance",
    "tags": {},
    "interfaces": {
      "interface_1": {
        "name": "update_name_of_virtual_network_appliance_interface_1",
        "description": "update_description_of_virtual_network_appliance_interface_1",
        "tags": {},
        "network_id": "01effce6-459d-47e3-a17a-e40ac437ae10",
        "fixed_ips": [
          {
            "ip_address": "192.168.10.100"
          }
        ]
      }
    }
  }
}

Case2: Changing only fixed_ips (not network_id) of an interface to which a network is already attached

{
  "virtual_network_appliance": {
    "interfaces": {
      "interface_1": {
        "fixed_ips": [
          {
            "ip_address": "192.168.10.200"
          }
        ]
      }
    }
  }
}

Case3: Detaching an interface

{
  "virtual_network_appliance": {
    "interfaces": {
      "interface_1": {
        "network_id": ""
      }
    }
  }
}

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": "ACTIVE",
    "os_login_status": "ACTIVE",
    "vm_status": "ACTIVE",
    "operation_status" : "ACTIVE",
    "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": "01effce6-459d-47e3-a17a-e40ac437ae10",
        "updatable": true,
        "tags": {},
        "fixed_ips": [
          {
            "ip_address": "192.168.10.100",
            "subnet_id": "8c2cdf01-1aa5-49e4-9c8b-34bba452fe88"
          }
        ],
        "allowed_address_pairs": [
          {
            "ip_address": "192.168.10.110",
            "mac_address": "00:00:5e:00:01:0a",
            "type": "vrrp",
            "vrid": 10
          }
        ]
      },
      "interface_2": {
        "name": "interface_2_name",
        "description": "interface_2_description",
        "network_id": "6f3fe4d9-f504-4f0b-8ffc-26ed4513ccd7",
        "updatable": true,
        "tags": {},
        "fixed_ips": [
          {
            "ip_address": "172.16.0.100",
            "subnet_id": "298d6d30-7148-4335-a780-f57532fc41a7"
          },
          {
            "ip_address": "172.16.0.110",
            "subnet_id": "298d6d30-7148-4335-a780-f57532fc41a7"
          }
        ],
        "allowed_address_pairs": [
          {
            "ip_address": "172.16.0.120",
            "mac_address": "00:00:5e:00:01:01",
            "type": "",
            "vrid": null
          }
        ]
      }
      (snip)
    }
  }
}

Example Error Message

HTTP Request

PATCH /v1.0/virtual_network_appliances/{virtual_network_appliance_id} 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 404 Not Found
Server: nginx
Date: Wed, 07 Feb 2018 06:49:20 GMT
Content-Type: application/json
Content-Length: 25
Connection: keep-alive

{
    "message": "Not Found."
}