13.7. Attaching network interfaces to virtual machines

POST /servers/{server_id}/os-interface

Create a network interface and attach it to the given virtual machine.

Source: https://docs.openstack.org/api-ref/compute/?expanded=create-interface-detail

13.7.1. Request

Name In Type Description
server_id path string The UUID of the server.
interfaceAttachmentEx body string Specify the interfaceAttachmentEx action in the request body.
port_id (Optional) body string The ID of the port for which you want to create an interface. The net_id and port_id parameters are mutually exclusive. If you do not specify the port_id parameter, the OpenStack Networking API v2.0 allocates a port and creates an interface for it on the network.
net_id (Optional) body string The ID of the network for which you want to create a port interface. The net_id and port_id parameters are mutually exclusive. If you do not specify the net_id parameter, the OpenStack Networking API v2.0 uses the network information cache that is associated with the instance.
fixed_ips (Optional) body array Fixed IP addresses. If you request a specific fixed IP address without a network’s uuid or net_id, the request returns a Bad Request (400) response code.
ip_address (Optional) body string The IP address.
ip_version (Optional) body integer The IP protocol version. Valid value is 4 or 6. Default is 4.
tag (Optional) body string

A device role tag that can be applied to a network interface when attaching it to the VM. The guest OS of a server that has devices tagged in this manner can access hardware metadata about the tagged devices from the metadata API and on the config drive, if enabled.

New in version 2.49

13.7.1.1. Examples

Create a network interface in the specified network, assign the IP address automatically from the IPv4 subnet, and attach it to a VM with the specified ID.

# curl -ks -H 'Content-Type: application/json' -H 'X-OpenStack-Nova-API-Version: 2.67' -H 'X-Auth-Token: gAAAAA<...>' -d '
{
  "interfaceAttachment": {
    "net_id": "a1d8d6ae-c89d-4307-8a0c-3cc2ee55d7e3",
    "fixed_ips": [{"ip_version": 4}],
    "port_security_enabled": true,
    "security_groups": ["5e2db579-c3a0-468b-aecd-b7930bf1507e"]
  }
}' https://<node_IP_addr>:8774/v2.1/b906404c55bb44729da99987536ac5bc/servers/0785ee80-1eca-426b-b8c4-5b499fc7f614/os-interface

Create a network interface in the specified network, assign the IP address manually, and attach it to a VM with the specified ID.

# curl -ks -H 'Content-Type: application/json' -H 'X-OpenStack-Nova-API-Version: 2.67' -H 'X-Auth-Token: gAAAAA<...>' -d '
{
  "interfaceAttachment": {
    "net_id": "0bb6b7a7-da8d-432c-b8d5-12139f7924d1",
    "fixed_ips": [{"ip_address": "192.168.128.20"}],
    "port_security_enabled": true,
    "security_groups": ["5e2db579-c3a0-468b-aecd-b7930bf1507e"]
  }
}' https://<node_IP_addr>:8774/v2.1/b906404c55bb44729da99987536ac5bc/servers/0785ee80-1eca-426b-b8c4-5b499fc7f614/os-interface

13.7.2. Response

Name In Type Description
interfaceAttachment body object The interface attachment.
port_state body string The port state.
fixed_ips body array Fixed IP addresses with subnet IDs.
subnet_id body string The UUID of the subnet.
ip_address body string The IP address.
port_id body string The port ID.
net_id body string The network ID.
mac_addr body string The MAC address.
tag body string

The device tag applied to the virtual network interface or null.

New in version 2.70

13.7.2.1. Status codes

13.7.2.1.1. Success

Code Reason
200 - OK Request was successful.

13.7.2.1.2. Error

Code Reason
400 - Bad Request Some content in the request was invalid.
401 - Unauthorized User must authenticate before making a request.
403 - Forbidden Policy does not allow current user to do this operation.
404 - Not Found The requested resource could not be found.
409 - Conflict This operation conflicted with another operation on this resource.
500 - Internal Server Error Something went wrong inside the service. This should not happen usually. If it does happen, it means the server has experienced some serious problems.

13.7.2.2. Example

{
  "interfaceAttachment": {
    "port_state": "ACTIVE",
    "fixed_ips": [
      {
        "subnet_id": "d52aa9f4-6a4b-4268-a71d-1a50f9b60aa9", 
        "ip_address": "10.136.18.138"
      }
    ],
    "port_id": "bfc3228d-384e-4864-a583-54157225a4ef",
    "net_id": "a1d8d6ae-c89d-4307-8a0c-3cc2ee55d7e3",
    "mac_addr": "fa:16:3e:3b:0b:c3"
  }
}