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.