Gateway Device Management API

MidoNet provides a Neutron extension API called Gateway Device Management to provide device-level gateway management service to the operators. This API is required in order to propagate device connectivity details to enable Midonet to manage VTEP Logical Switch configuration upon Logical Gateway definition. Gateway Device Management API is required for management IP and Port settings. Gateway device should be identified by user driven name in order to correlate it with Logical Gateway entity.

VTEP status, VTEP configuration, such as Tunnel IP are out of the scope of current version of this API. MidoNet currently does not support secure connection settings.

Proposed Change

REST API

GatewayDevice

Attribute Name Type CRUD Required Description
id string (UUID) CR generated ID of the Gateway Device
name string CRU No User defined device name
management_ip string (ip addr) CR Yes Manangement IP of device
management_port int CR Yes Management port of device

Currently, only the VTEP device is supported.

GatewayDevicePeer

To support Active Active Hardware VTEP, MidoNet has an API in place to set peers of VTEP gateway devices.

Attribute Name Type CRUD Required Description
id string (UUID) CR generated ID of the device peering
name string CRU No User defined peering name
device1_id string (UUID) CR Yes ID of the first device
device2_id string (UUID) CR Yes ID of the second device

DB Model

midonet_gateway_devices

Name Type Description
id String ID of the gateway device
name String Name of the gateway device
management_ip String Management IP address of the gateway device
management_port int Management port of the gateway device

midonet_gateway_device_peers

Name Type Description
id String ID of the gateway peering
name String Name of the gateway peering
device1_id String ID of the first gateway device
device2_id String ID of the second gateway device

Client

The following command creates a gateway device:

::
neutron gateway-device-create [–name NAME] [–ip MGMT_IP]
[–port MGMT_PORT]

The following command updates a gateway device:

::
neutron gateway-device-update DEVICE_ID [–name NAME] [–ip MGMT_IP]
[–port MGMT_PORT]

The following command views a gateway device:

::
neutron gateway-device-show DEVICE_ID

The following command deletes a gateway device:

::
neutron gateway-device-delete DEVICE_ID

The following command creates a gateway device peering:

::
neutron gateway-device-peering-create [–name NAME] [–device1 DEV1]
[–device2 DEV2]

The following command views a gateway device peering:

::
neutron gateway-device-peering-show DEVICE_PEER_ID

The following command deletes (tears down) a gateway device peering:

::
neutron gateway-device-peering-delete DEVICE_PEER_ID

Alternative Proposal

Instead of managing Gateway devices using REST API, do so using configuration files, which is the approach more familiar to those coming from Neutron background. The REST API approach was chosen to simplify and possibly automate the gateway device management.