Neutron Network and Port Plugin

Registered by Steve McLellan

Summary
=======
If neutron provides enough through notifications that we're able to index it in a meaningful way (and it does, see the whiteboard), we should try to.

Requested data at the Mitaka summit is:

  * routers, networks, subnets, ports. Question is how to map it. Separate (as neutron does)? Nested objects? - leaning towards parent/child, since nested will require e.g. on a network change to reindex all attached ports or resort to script-based updating, and make it harder to treat ports as first-class query objects

Motivation
========
Ultimately it would be good to be able to search on an IP and get back instance info (and dns, networks etc)

Description
=========

Testing
======
Brief instruction for reviewers to exercise the changes, including expected results where non-obvious.

Outside Dependencies
==================
Is this functionality already supported in other services? List the appropriate API calls and if they are extensions or base API functionality.

This should describe any cross project dependencies. This should include:
  * changes to OpenStack services
  * changes to OpenStack services clients (python-*client)
  * changes in external projects
Links to particular patches should be included in the whiteboard area.

Requirements Update Required
========================

Blueprint information

Status:
Complete
Approver:
None
Priority:
High
Drafter:
Steve McLellan
Direction:
Approved
Assignee:
Steve McLellan
Definition:
Approved
Series goal:
Accepted for mitaka
Implementation:
Implemented
Milestone target:
milestone icon mitaka-3
Started by
Travis Tripp
Completed by
Travis Tripp

Related branches

Sprints

Whiteboard

Notifications and payloads from various events (devstack):

NETWORK CREATE:
{"_context_domain": null, "_context_roles": ["admin"], "event_type": "network.create.start", "_context_request_id": "req-f1ab2d5d-98e4-4b77-8be0-e6cdbbe89d9d", "timestamp": "2016-01-05 21:46:57.396031", "_context_tenant_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_user": "8c0e8ada54be4c2e911be779806d6bc9", "_unique_id": "20debd42426d4b25af104c0bfad13d52", "_context_resource_uuid": null, "_context_tenant_name": "admin", "_context_user_id": "8c0e8ada54be4c2e911be779806d6bc9", "payload": {"network": {"name": "test", "admin_state_up": true}}, "_context_project_name": "admin", "_context_user_identity": "8c0e8ada54be4c2e911be779806d6bc9 8eaac046b2c44ab99246cb0850c7f06d - - -", "_context_auth_token": "a3da36d2cfca4aacbc255052bf8581b0", "_context_show_deleted": false, "_context_tenant": "8eaac046b2c44ab99246cb0850c7f06d", "priority": "INFO", "_context_read_only": false, "_context_is_admin": true, "_context_project_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_project_domain": null, "_context_timestamp": "2016-01-05 21:46:57.395286", "_context_user_domain": null, "_context_user_name": "admin", "publisher_id": "network.devstack", "message_id": "59643300-6057-490e-98b4-75c717f003b2"}

{"_context_domain": null, "_context_roles": ["admin"], "event_type": "network.create.end", "_context_request_id": "req-f1ab2d5d-98e4-4b77-8be0-e6cdbbe89d9d", "timestamp": "2016-01-05 21:46:57.448869", "_context_tenant_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_user": "8c0e8ada54be4c2e911be779806d6bc9", "_unique_id": "82b323d2500e4a27aa7f3e26b6c4254c", "_context_resource_uuid": null, "_context_tenant_name": "admin", "_context_user_id": "8c0e8ada54be4c2e911be779806d6bc9", "payload": {"network": {"status": "ACTIVE", "subnets": [], "name": "test", "provider:physical_network": null, "admin_state_up": true, "tenant_id": "8eaac046b2c44ab99246cb0850c7f06d", "mtu": 0, "router:external": false, "shared": false, "port_security_enabled": true, "provider:network_type": "vxlan", "id": "ef14a7a7-4808-4c88-8c3b-56fb48f2b1db", "provider:segmentation_id": 1078}}, "_context_project_name": "admin", "_context_user_identity": "8c0e8ada54be4c2e911be779806d6bc9 8eaac046b2c44ab99246cb0850c7f06d - - -", "_context_auth_token": "a3da36d2cfca4aacbc255052bf8581b0", "_context_show_deleted": false, "_context_tenant": "8eaac046b2c44ab99246cb0850c7f06d", "priority": "INFO", "_context_read_only": false, "_context_is_admin": true, "_context_project_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_project_domain": null, "_context_timestamp": "2016-01-05 21:46:57.395286", "_context_user_domain": null, "_context_user_name": "admin", "publisher_id": "network.devstack", "message_id": "ad69571b-a29a-4abf-947e-16589671d4b2"}

SUBNET CREATE:

{"_context_domain": null, "_context_roles": ["admin"], "event_type": "subnet.create.start", "_context_request_id": "req-21566203-b971-4ef2-9424-beb2eadb05c6", "timestamp": "2016-01-05 21:47:41.411283", "_context_tenant_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_user": "8c0e8ada54be4c2e911be779806d6bc9", "_unique_id": "886977af70554cbe8e146823c7b22437", "_context_resource_uuid": null, "_context_tenant_name": "admin", "_context_user_id": "8c0e8ada54be4c2e911be779806d6bc9", "payload": {"subnet": {"network_id": "ef14a7a7-4808-4c88-8c3b-56fb48f2b1db", "ip_version": 4, "cidr": "10.0.90.0/24"}}, "_context_project_name": "admin", "_context_user_identity": "8c0e8ada54be4c2e911be779806d6bc9 8eaac046b2c44ab99246cb0850c7f06d - - -", "_context_auth_token": "2146cf9ba35246b688f12cf38716381a", "_context_show_deleted": false, "_context_tenant": "8eaac046b2c44ab99246cb0850c7f06d", "priority": "INFO", "_context_read_only": false, "_context_is_admin": true, "_context_project_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_project_domain": null, "_context_timestamp": "2016-01-05 21:47:41.410422", "_context_user_domain": null, "_context_user_name": "admin", "publisher_id": "network.devstack", "message_id": "4ac1d9b8-4637-4de7-ae71-6dc22e445a64"}

{"_context_domain": null, "_context_roles": ["admin"], "event_type": "subnet.create.end", "_context_request_id": "req-21566203-b971-4ef2-9424-beb2eadb05c6", "timestamp": "2016-01-05 21:47:41.525643", "_context_tenant_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_user": "8c0e8ada54be4c2e911be779806d6bc9", "_unique_id": "9e3ec511e7f94ca080254b80201b3fd4", "_context_resource_uuid": null, "_context_tenant_name": "admin", "_context_user_id": "8c0e8ada54be4c2e911be779806d6bc9", "payload": {"subnet": {"name": "", "enable_dhcp": true, "network_id": "ef14a7a7-4808-4c88-8c3b-56fb48f2b1db", "tenant_id": "8eaac046b2c44ab99246cb0850c7f06d", "dns_nameservers": [], "gateway_ip": "10.0.90.1", "ipv6_ra_mode": null, "allocation_pools": [{"start": "10.0.90.2", "end": "10.0.90.254"}], "host_routes": [], "ip_version": 4, "ipv6_address_mode": null, "cidr": "10.0.90.0/24", "id": "63785b90-f3d1-4124-b2e9-1e62dd7c8dab", "subnetpool_id": null}}, "_context_project_name": "admin", "_context_user_identity": "8c0e8ada54be4c2e911be779806d6bc9 8eaac046b2c44ab99246cb0850c7f06d - - -", "_context_auth_token": "2146cf9ba35246b688f12cf38716381a", "_context_show_deleted": false, "_context_tenant": "8eaac046b2c44ab99246cb0850c7f06d", "priority": "INFO", "_context_read_only": false, "_context_is_admin": true, "_context_project_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_project_domain": null, "_context_timestamp": "2016-01-05 21:47:41.410422", "_context_user_domain": null, "_context_user_name": "admin", "publisher_id": "network.devstack", "message_id": "e749b78f-d392-45c2-b464-b34f9d706c81"}

PORT CREATE:

{"_context_domain": null, "_context_roles": ["admin"], "event_type": "port.create.start", "_context_request_id": "req-d4aecbbb-0348-47d6-8cf4-36f4ec46459f", "timestamp": "2016-01-05 21:52:20.262428", "_context_tenant_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_user": "8c0e8ada54be4c2e911be779806d6bc9", "_unique_id": "89d70237b9df4d3588388877af62138f", "_context_resource_uuid": null, "_context_tenant_name": "admin", "_context_user_id": "8c0e8ada54be4c2e911be779806d6bc9", "payload": {"port": {"network_id": "ef14a7a7-4808-4c88-8c3b-56fb48f2b1db", "fixed_ips": [{"subnet_id": "63785b90-f3d1-4124-b2e9-1e62dd7c8dab"}], "admin_state_up": true}}, "_context_project_name": "admin", "_context_user_identity": "8c0e8ada54be4c2e911be779806d6bc9 8eaac046b2c44ab99246cb0850c7f06d - - -", "_context_auth_token": "36958a12c9544d87950341e26f0f1bc9", "_context_show_deleted": false, "_context_tenant": "8eaac046b2c44ab99246cb0850c7f06d", "priority": "INFO", "_context_read_only": false, "_context_is_admin": true, "_context_project_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_project_domain": null, "_context_timestamp": "2016-01-05 21:52:20.261724", "_context_user_domain": null, "_context_user_name": "admin", "publisher_id": "network.devstack", "message_id": "71dbdb2c-ecde-4db0-afc7-89249abaf5ca"}

{"_context_domain": null, "_context_roles": ["admin"], "event_type": "port.create.end", "_context_request_id": "req-d4aecbbb-0348-47d6-8cf4-36f4ec46459f", "timestamp": "2016-01-05 21:52:20.400570", "_context_tenant_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_user": "8c0e8ada54be4c2e911be779806d6bc9", "_unique_id": "6b4992e9c4fd410cbd042da3e4a531fb", "_context_resource_uuid": null, "_context_tenant_name": "admin", "_context_user_id": "8c0e8ada54be4c2e911be779806d6bc9", "payload": {"port": {"status": "DOWN", "binding:host_id": "", "allowed_address_pairs": [], "dns_assignment": [{"hostname": "host-10-0-90-3", "ip_address": "10.0.90.3", "fqdn": "host-10-0-90-3.openstacklocal."}], "device_owner": "", "binding:profile": {}, "port_security_enabled": true, "fixed_ips": [{"subnet_id": "63785b90-f3d1-4124-b2e9-1e62dd7c8dab", "ip_address": "10.0.90.3"}], "id": "b5ea0a60-7c67-4186-88cb-baef06b75532", "security_groups": ["ab725e3e-4a24-4965-853b-578c5fc8a7a4"], "device_id": "", "name": "", "admin_state_up": true, "network_id": "ef14a7a7-4808-4c88-8c3b-56fb48f2b1db", "dns_name": "", "binding:vif_details": {}, "binding:vnic_type": "normal", "binding:vif_type": "unbound", "tenant_id": "8eaac046b2c44ab99246cb0850c7f06d", "mac_address": "fa:16:3e:52:87:04"}}, "_context_project_name": "admin", "_context_user_identity": "8c0e8ada54be4c2e911be779806d6bc9 8eaac046b2c44ab99246cb0850c7f06d - - -", "_context_auth_token": "36958a12c9544d87950341e26f0f1bc9", "_context_show_deleted": false, "_context_tenant": "8eaac046b2c44ab99246cb0850c7f06d", "priority": "INFO", "_context_read_only": false, "_context_is_admin": true, "_context_project_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_project_domain": null, "_context_timestamp": "2016-01-05 21:52:20.261724", "_context_user_domain": null, "_context_user_name": "admin", "publisher_id": "network.devstack", "message_id": "2263d5b8-ac97-4641-a105-99a9fcebcd6f"}

ROUTER CREATE:

{"_context_domain": null, "_context_roles": ["admin"], "event_type": "router.create.start", "_context_request_id": "req-2934a1e9-4177-47d6-8071-67c0af31ab22", "timestamp": "2016-01-05 21:52:59.997668", "_context_tenant_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_user": "8c0e8ada54be4c2e911be779806d6bc9", "_unique_id": "a017094c476d4e3697012c0c6fcfacc4", "_context_resource_uuid": null, "_context_tenant_name": "admin", "_context_user_id": "8c0e8ada54be4c2e911be779806d6bc9", "payload": {"router": {"name": "test-router", "admin_state_up": true}}, "_context_project_name": "admin", "_context_user_identity": "8c0e8ada54be4c2e911be779806d6bc9 8eaac046b2c44ab99246cb0850c7f06d - - -", "_context_auth_token": "f9b491ae35824023995295982b56fbd5", "_context_show_deleted": false, "_context_tenant": "8eaac046b2c44ab99246cb0850c7f06d", "priority": "INFO", "_context_read_only": false, "_context_is_admin": true, "_context_project_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_project_domain": null, "_context_timestamp": "2016-01-05 21:52:59.996889", "_context_user_domain": null, "_context_user_name": "admin", "publisher_id": "network.devstack", "message_id": "0dfaa543-c7db-4600-9c4b-2048d2fe13d4"}

{"_context_domain": null, "_context_roles": ["admin"], "event_type": "router.create.end", "_context_request_id": "req-2934a1e9-4177-47d6-8071-67c0af31ab22", "timestamp": "2016-01-05 21:53:00.042669", "_context_tenant_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_user": "8c0e8ada54be4c2e911be779806d6bc9", "_unique_id": "48ce9d7930c04839a97d68f93adaeda1", "_context_resource_uuid": null, "_context_tenant_name": "admin", "_context_user_id": "8c0e8ada54be4c2e911be779806d6bc9", "payload": {"router": {"status": "ACTIVE", "external_gateway_info": null, "name": "test-router", "admin_state_up": true, "tenant_id": "8eaac046b2c44ab99246cb0850c7f06d", "distributed": false, "routes": [], "ha": false, "id": "0b646f55-8eab-4fcd-a303-6a485f44153f"}}, "_context_project_name": "admin", "_context_user_identity": "8c0e8ada54be4c2e911be779806d6bc9 8eaac046b2c44ab99246cb0850c7f06d - - -", "_context_auth_token": "f9b491ae35824023995295982b56fbd5", "_context_show_deleted": false, "_context_tenant": "8eaac046b2c44ab99246cb0850c7f06d", "priority": "INFO", "_context_read_only": false, "_context_is_admin": true, "_context_project_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_project_domain": null, "_context_timestamp": "2016-01-05 21:52:59.996889", "_context_user_domain": null, "_context_user_name": "admin", "publisher_id": "network.devstack", "message_id": "d28e4364-b1a2-4966-8010-7810d3068e59"}

INTERFACE (add port to router)

{"_context_domain": null, "_context_roles": ["admin"], "event_type": "router.interface.create", "_context_request_id": "req-9c3fb701-1b72-41e7-a3f7-46b4bae13b74", "timestamp": "2016-01-05 21:54:39.457769", "_context_tenant_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_user": "8c0e8ada54be4c2e911be779806d6bc9", "_unique_id": "2bf69cadf4fb422790b53e65856ef428", "_context_resource_uuid": null, "_context_tenant_name": "admin", "_context_user_id": "8c0e8ada54be4c2e911be779806d6bc9", "payload": {"router_interface": {"subnet_id": "63785b90-f3d1-4124-b2e9-1e62dd7c8dab", "tenant_id": "8eaac046b2c44ab99246cb0850c7f06d", "subnet_ids": ["63785b90-f3d1-4124-b2e9-1e62dd7c8dab"], "port_id": "b5ea0a60-7c67-4186-88cb-baef06b75532", "id": "0b646f55-8eab-4fcd-a303-6a485f44153f"}}, "_context_project_name": "admin", "_context_user_identity": "8c0e8ada54be4c2e911be779806d6bc9 8eaac046b2c44ab99246cb0850c7f06d - - -", "_context_auth_token": "37084c2a5359480391fb31e2544acb3d", "_context_show_deleted": false, "_context_tenant": "8eaac046b2c44ab99246cb0850c7f06d", "priority": "INFO", "_context_read_only": false, "_context_is_admin": true, "_context_project_id": "8eaac046b2c44ab99246cb0850c7f06d", "_context_project_domain": null, "_context_timestamp": "2016-01-05 21:54:39.333571", "_context_user_domain": null, "_context_user_name": "admin", "publisher_id": "network.devstack", "message_id": "1fdb1dfc-a7a0-4ac5-9144-2f16c0171aee"}

ATTACH PORT TO INSTANCE:

{"_context_domain": null, "_context_roles": ["service"], "event_type": "port.update.start", "_context_request_id": "req-23f71fc4-2292-40ae-b5c8-5e3494e1f452", "timestamp": "2016-01-05 21:59:11.293073", "_context_tenant_id": "3886bf528b204946865ddb3cbadae9a0", "_context_user": "6b3dcc8d1b8e4764856df1cb51f02b81", "_unique_id": "c11d7d97137a40d695eaacc8eafedb1d", "_context_resource_uuid": null, "_context_tenant_name": "service", "_context_user_id": "6b3dcc8d1b8e4764856df1cb51f02b81", "payload": {"port": {"device_owner": "compute:None", "binding:host_id": "devstack", "device_id": "02b1c1e4-a6c2-439c-9527-62c964f2788b"}, "id": "ea4970b8-deff-49ea-9b33-bce8a807e6c8"}, "_context_project_name": "service", "_context_user_identity": "6b3dcc8d1b8e4764856df1cb51f02b81 3886bf528b204946865ddb3cbadae9a0 - - -", "_context_auth_token": "ca11f1aa229f45d0a28517c0a91708f9", "_context_show_deleted": false, "_context_tenant": "3886bf528b204946865ddb3cbadae9a0", "priority": "INFO", "_context_read_only": false, "_context_is_admin": true, "_context_project_id": "3886bf528b204946865ddb3cbadae9a0", "_context_project_domain": null, "_context_timestamp": "2016-01-05 21:59:11.291261", "_context_user_domain": null, "_context_user_name": "neutron", "publisher_id": "network.devstack", "message_id": "f8c360de-f4bc-4e4f-a9ad-66c6393888a2"}

{"_context_domain": null, "_context_roles": ["service"], "event_type": "port.update.end", "_context_request_id": "req-23f71fc4-2292-40ae-b5c8-5e3494e1f452", "timestamp": "2016-01-05 21:59:11.395454", "_context_tenant_id": "3886bf528b204946865ddb3cbadae9a0", "_context_user": "6b3dcc8d1b8e4764856df1cb51f02b81", "_unique_id": "a48be7cc7b6844e39a6929b21d883b8a", "_context_resource_uuid": null, "_context_tenant_name": "service", "_context_user_id": "6b3dcc8d1b8e4764856df1cb51f02b81", "payload": {"port": {"status": "DOWN", "binding:host_id": "devstack", "allowed_address_pairs": [], "extra_dhcp_opts": [], "device_owner": "compute:None", "port_security_enabled": true, "binding:profile": {}, "fixed_ips": [{"subnet_id": "63785b90-f3d1-4124-b2e9-1e62dd7c8dab", "ip_address": "10.0.90.4"}], "id": "ea4970b8-deff-49ea-9b33-bce8a807e6c8", "security_groups": ["ab725e3e-4a24-4965-853b-578c5fc8a7a4"], "device_id": "02b1c1e4-a6c2-439c-9527-62c964f2788b", "name": "", "admin_state_up": true, "network_id": "ef14a7a7-4808-4c88-8c3b-56fb48f2b1db", "dns_name": "", "binding:vif_details": {"port_filter": true, "ovs_hybrid_plug": true}, "binding:vnic_type": "normal", "binding:vif_type": "ovs", "tenant_id": "8eaac046b2c44ab99246cb0850c7f06d", "mac_address": "fa:16:3e:27:53:58"}}, "_context_project_name": "service", "_context_user_identity": "6b3dcc8d1b8e4764856df1cb51f02b81 3886bf528b204946865ddb3cbadae9a0 - - -", "_context_auth_token": "ca11f1aa229f45d0a28517c0a91708f9", "_context_show_deleted": false, "_context_tenant": "3886bf528b204946865ddb3cbadae9a0", "priority": "INFO", "_context_read_only": false, "_context_is_admin": true, "_context_project_id": "3886bf528b204946865ddb3cbadae9a0", "_context_project_domain": null, "_context_timestamp": "2016-01-05 21:59:11.291261", "_context_user_domain": null, "_context_user_name": "neutron", "publisher_id": "network.devstack", "message_id": "19d12dc7-44b7-41fa-9e74-53864861d25c"}

API OUTPUT (v2)
NETWORK

 {u'admin_state_up': True,
   u'id': u'ef14a7a7-4808-4c88-8c3b-56fb48f2b1db',
   u'mtu': 0,
   u'name': u'test',
   u'port_security_enabled': True,
   u'provider:network_type': u'vxlan',
   u'provider:physical_network': None,
   u'provider:segmentation_id': 1078,
   u'router:external': False,
   u'shared': False,
   u'status': u'ACTIVE',
   u'subnets': [u'63785b90-f3d1-4124-b2e9-1e62dd7c8dab'],
   u'tenant_id': u'8eaac046b2c44ab99246cb0850c7f06d'}

SUBNET
{u'allocation_pools': [{u'end': u'172.25.255.254', u'start': u'172.25.0.2'}],
   u'cidr': u'172.25.0.0/16',
   u'dns_nameservers': [],
   u'enable_dhcp': False,
   u'gateway_ip': u'172.25.0.1',
   u'host_routes': [],
   u'id': u'98dc1a0e-6c3e-45d4-93d9-03ed30325f33',
   u'ip_version': 4,
   u'ipv6_address_mode': None,
   u'ipv6_ra_mode': None,
   u'name': u'public-subnet',
   u'network_id': u'88fd6aac-7dac-46e7-b7a4-b4875171d59c',
   u'subnetpool_id': None,
   u'tenant_id': u'8eaac046b2c44ab99246cb0850c7f06d'},

  {u'allocation_pools': [{u'end': u'2001:db8::ffff:ffff:ffff:ffff',
     u'start': u'2001:db8::3'},
    {u'end': u'2001:db8::1', u'start': u'2001:db8::1'}],
   u'cidr': u'2001:db8::/64',
   u'dns_nameservers': [],
   u'enable_dhcp': False,
   u'gateway_ip': u'2001:db8::2',
   u'host_routes': [],
   u'id': u'30adcd14-6ca4-4c4c-81dd-83dfb45cdb7b',
   u'ip_version': 6,
   u'ipv6_address_mode': None,
   u'ipv6_ra_mode': None,
   u'name': u'ipv6-public-subnet',
   u'network_id': u'88fd6aac-7dac-46e7-b7a4-b4875171d59c',
   u'subnetpool_id': None,
   u'tenant_id': u'8eaac046b2c44ab99246cb0850c7f06d'}

PORT
 {u'admin_state_up': True,
   u'allowed_address_pairs': [],
   u'binding:host_id': u'devstack',
   u'binding:profile': {},
   u'binding:vif_details': {u'ovs_hybrid_plug': True, u'port_filter': True},
   u'binding:vif_type': u'ovs',
   u'binding:vnic_type': u'normal',
   u'device_id': u'881d8582-abe1-4c8f-8c5a-2925fc421e8b',
   u'device_owner': u'network:router_interface',
   u'dns_assignment': [{u'fqdn': u'host-fd70-b64a-666f--1.openstacklocal.',
     u'hostname': u'host-fd70-b64a-666f--1',
     u'ip_address': u'fd70:b64a:666f::1'}],
   u'dns_name': u'',
   u'extra_dhcp_opts': [],
   u'fixed_ips': [{u'ip_address': u'fd70:b64a:666f::1',
     u'subnet_id': u'356bbedc-2bb2-467a-b380-8bfd0ed2fbdf'}],
   u'id': u'f971a26e-63de-4fe5-bd54-8d7e780b504c',
   u'mac_address': u'fa:16:3e:19:c8:f5',
   u'name': u'',
   u'network_id': u'bc0adf22-3aef-4e7b-8b99-12670b5a76b5',
   u'port_security_enabled': True,
   u'security_groups': [u'38fb9110-0365-46c2-acff-68f604ef6358'],
   u'status': u'ACTIVE',
   u'tenant_id': u'3ae2ba1152364ec49f284de38c326cd1'},

ROUTERS

  {u'admin_state_up': True,
   u'distributed': False,
   u'external_gateway_info': {u'enable_snat': True,
    u'external_fixed_ips': [{u'ip_address': u'172.25.0.2',
      u'subnet_id': u'98dc1a0e-6c3e-45d4-93d9-03ed30325f33'},
     {u'ip_address': u'2001:db8::3',
      u'subnet_id': u'30adcd14-6ca4-4c4c-81dd-83dfb45cdb7b'}],
    u'network_id': u'88fd6aac-7dac-46e7-b7a4-b4875171d59c'},
   u'ha': False,
   u'id': u'881d8582-abe1-4c8f-8c5a-2925fc421e8b',
   u'name': u'router1',
   u'routes': [],
   u'status': u'ACTIVE',
   u'tenant_id': u'3ae2ba1152364ec49f284de38c326cd1'}

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.