diff --git a/ceilometer/network/notifications.py b/ceilometer/network/notifications.py index 7fec76403..5ad728109 100644 --- a/ceilometer/network/notifications.py +++ b/ceilometer/network/notifications.py @@ -153,3 +153,19 @@ class Port(NetworkNotificationBase): ] resource_name = 'port' + + +class Router(NetworkNotificationBase): + """Listen for Quantum notifications in order to mediate with the + metering framework. + + """ + + metadata_keys = [ + "status", + "external_gateway_info", + "admin_state_up", + "name", + ] + + resource_name = 'router' diff --git a/doc/source/measurements.rst b/doc/source/measurements.rst index 1b49a9e6c..dc80a51e3 100644 --- a/doc/source/measurements.rst +++ b/doc/source/measurements.rst @@ -73,6 +73,9 @@ subnet.update Delta request subnt ID Update requests for thi port Gauge 1 port ID Duration of port port.create Delta request port ID Creation requests for this port port.update Delta request port ID Update requests for this port +router Gauge 1 rtr ID Duration of router +router.create Delta request rtr ID Creation requests for this router +router.update Delta request rtr ID Update requests for this router ip.floating Gauge 1 ip ID Duration of floating ip ======================== ========== ======= ======== ======================================================= diff --git a/setup.py b/setup.py index 2b5671792..aa81841a6 100755 --- a/setup.py +++ b/setup.py @@ -94,6 +94,7 @@ setuptools.setup( network = ceilometer.network.notifications:Network subnet = ceilometer.network.notifications:Subnet port = ceilometer.network.notifications:Port + router = ceilometer.network.notifications:Router [ceilometer.poll.compute] libvirt_diskio = ceilometer.compute.libvirt:DiskIOPollster diff --git a/tests/network/test_notifications.py b/tests/network/test_notifications.py index 05fa1282d..b57982411 100644 --- a/tests/network/test_notifications.py +++ b/tests/network/test_notifications.py @@ -157,6 +157,29 @@ NOTIFICATION_NETWORK_EXISTS = { u'message_id': u'9e839576-cc47-4c60-a7d8-5743681213b1'} +NOTIFICATION_ROUTER_EXISTS = { + u'_context_roles': [u'anotherrole', + u'Member'], + u'_context_read_deleted': u'no', + u'event_type': u'router.exists', + u'timestamp': u'2012-09-27 14:11:27.086575', + u'_context_tenant_id': u'82ed0c40ebe64d0bb3310027039c8ed2', + u'payload': {u'router': + {'status': u'ACTIVE', + 'external_gateway_info': + {'network_id': u'89d55642-4dec-43a4-a617-6cec051393b5'}, + 'name': u'router1', + 'admin_state_up': True, + 'tenant_id': u'bb04a2b769c94917b57ba49df7783cfd', + 'id': u'ab8bb3ed-df23-4ca0-8f03-b887abcd5c23'}}, + u'priority': u'INFO', + u'_context_is_admin': False, + u'_context_timestamp': u'2012-09-27 14:11:26.924779', + u'_context_user_id': u'b44b7ce67fc84414a5c1660a92a1b862', + u'publisher_id': u'network.ubuntu-VirtualBox', + u'message_id': u'9e839576-cc47-4c60-a7d8-5743681213b1'} + + class TestNotifications(unittest.TestCase): def test_network_create(self): v = notifications.Network() @@ -183,6 +206,11 @@ class TestNotifications(unittest.TestCase): counters = v.process_notification(NOTIFICATION_NETWORK_EXISTS) self.assertEqual(len(list(counters)), 1) + def test_router_exists(self): + v = notifications.Router() + counters = v.process_notification(NOTIFICATION_ROUTER_EXISTS) + self.assertEqual(len(list(counters)), 1) + class TestEventTypes(unittest.TestCase): @@ -200,3 +228,6 @@ class TestEventTypes(unittest.TestCase): v = notifications.Port() events = v.get_event_types() assert events + + def test_router(self): + assert notifications.Router().get_event_types()