network: floating IP account in Quantum
Change-Id: I0e4a8245bd524dd2073f52f7a808e9456816c4df Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
parent
16c892bbfa
commit
55d52bab01
@ -71,7 +71,9 @@ class NetworkNotificationBase(plugin.NotificationBase):
|
|||||||
LOG.info('network notification %r', message)
|
LOG.info('network notification %r', message)
|
||||||
message['payload'] = message['payload'][self.resource_name]
|
message['payload'] = message['payload'][self.resource_name]
|
||||||
metadata = self.notification_to_metadata(message)
|
metadata = self.notification_to_metadata(message)
|
||||||
yield counter.Counter(name=self.resource_name,
|
counter_name = getattr(self, "counter_name", self.resource_name)
|
||||||
|
|
||||||
|
yield counter.Counter(name=counter_name,
|
||||||
type=counter.TYPE_GAUGE,
|
type=counter.TYPE_GAUGE,
|
||||||
volume=1,
|
volume=1,
|
||||||
user_id=message['_context_user_id'],
|
user_id=message['_context_user_id'],
|
||||||
@ -81,9 +83,10 @@ class NetworkNotificationBase(plugin.NotificationBase):
|
|||||||
resource_metadata=metadata,
|
resource_metadata=metadata,
|
||||||
)
|
)
|
||||||
|
|
||||||
network_counter_name = message['event_type'].rpartition('.')[0]
|
event_type_split = message['event_type'].split('.')
|
||||||
if network_counter_name != self.resource_name:
|
if len(event_type_split) > 2:
|
||||||
yield counter.Counter(name=network_counter_name,
|
yield counter.Counter(name=counter_name
|
||||||
|
+ "." + event_type_split[1],
|
||||||
type=counter.TYPE_DELTA,
|
type=counter.TYPE_DELTA,
|
||||||
volume=1,
|
volume=1,
|
||||||
user_id=message['_context_user_id'],
|
user_id=message['_context_user_id'],
|
||||||
@ -167,3 +170,21 @@ class Router(NetworkNotificationBase):
|
|||||||
]
|
]
|
||||||
|
|
||||||
resource_name = 'router'
|
resource_name = 'router'
|
||||||
|
|
||||||
|
|
||||||
|
class FloatingIP(NetworkNotificationBase):
|
||||||
|
"""Listen for Quantum notifications in order to mediate with the
|
||||||
|
metering framework.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
metadata_keys = [
|
||||||
|
"router_id",
|
||||||
|
"floating_network_id",
|
||||||
|
"fixed_ip_address",
|
||||||
|
"floating_ip_address",
|
||||||
|
"port_id",
|
||||||
|
]
|
||||||
|
|
||||||
|
resource_name = 'floatingip'
|
||||||
|
counter_name = 'ip.floating'
|
||||||
|
@ -77,6 +77,8 @@ router Gauge 1 rtr ID Duration of router
|
|||||||
router.create Delta request rtr ID Creation requests for this router
|
router.create Delta request rtr ID Creation requests for this router
|
||||||
router.update Delta request rtr ID Update 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
|
ip.floating Gauge 1 ip ID Duration of floating ip
|
||||||
|
ip.floating.create Delta 1 ip ID Creation requests for this floating ip
|
||||||
|
ip.floating.update Delta 1 ip ID Update requests for this floating ip
|
||||||
======================== ========== ======= ======== =======================================================
|
======================== ========== ======= ======== =======================================================
|
||||||
|
|
||||||
Image (Glance)
|
Image (Glance)
|
||||||
|
1
setup.py
1
setup.py
@ -95,6 +95,7 @@ setuptools.setup(
|
|||||||
subnet = ceilometer.network.notifications:Subnet
|
subnet = ceilometer.network.notifications:Subnet
|
||||||
port = ceilometer.network.notifications:Port
|
port = ceilometer.network.notifications:Port
|
||||||
router = ceilometer.network.notifications:Router
|
router = ceilometer.network.notifications:Router
|
||||||
|
floatingip = ceilometer.network.notifications:FloatingIP
|
||||||
|
|
||||||
[ceilometer.poll.compute]
|
[ceilometer.poll.compute]
|
||||||
libvirt_diskio = ceilometer.compute.libvirt:DiskIOPollster
|
libvirt_diskio = ceilometer.compute.libvirt:DiskIOPollster
|
||||||
|
@ -180,26 +180,54 @@ NOTIFICATION_ROUTER_EXISTS = {
|
|||||||
u'message_id': u'9e839576-cc47-4c60-a7d8-5743681213b1'}
|
u'message_id': u'9e839576-cc47-4c60-a7d8-5743681213b1'}
|
||||||
|
|
||||||
|
|
||||||
|
NOTIFICATION_FLOATINGIP_EXISTS = {
|
||||||
|
u'_context_roles': [u'anotherrole',
|
||||||
|
u'Member'],
|
||||||
|
u'_context_read_deleted': u'no',
|
||||||
|
u'event_type': u'floatingip.exists',
|
||||||
|
u'timestamp': u'2012-09-27 14:11:27.086575',
|
||||||
|
u'_context_tenant_id': u'82ed0c40ebe64d0bb3310027039c8ed2',
|
||||||
|
u'payload': {u'floatingip':
|
||||||
|
{'router_id': None,
|
||||||
|
'tenant_id': u'6e5f9df9b3a249ab834f25fe1b1b81fd',
|
||||||
|
'floating_network_id':
|
||||||
|
u'001400f7-1710-4245-98c3-39ba131cc39a',
|
||||||
|
'fixed_ip_address': None,
|
||||||
|
'floating_ip_address': u'172.24.4.227',
|
||||||
|
'port_id': None,
|
||||||
|
'id': u'2b7cc28c-6f78-4735-9246-257168405de6'}},
|
||||||
|
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):
|
class TestNotifications(unittest.TestCase):
|
||||||
def test_network_create(self):
|
def test_network_create(self):
|
||||||
v = notifications.Network()
|
v = notifications.Network()
|
||||||
counters = v.process_notification(NOTIFICATION_NETWORK_CREATE)
|
counters = list(v.process_notification(NOTIFICATION_NETWORK_CREATE))
|
||||||
self.assertEqual(len(list(counters)), 2)
|
self.assertEqual(len(counters), 2)
|
||||||
|
self.assertEqual(counters[1].name, "network.create")
|
||||||
|
|
||||||
def test_subnet_create(self):
|
def test_subnet_create(self):
|
||||||
v = notifications.Subnet()
|
v = notifications.Subnet()
|
||||||
counters = v.process_notification(NOTIFICATION_SUBNET_CREATE)
|
counters = list(v.process_notification(NOTIFICATION_SUBNET_CREATE))
|
||||||
self.assertEqual(len(list(counters)), 2)
|
self.assertEqual(len(counters), 2)
|
||||||
|
self.assertEqual(counters[1].name, "subnet.create")
|
||||||
|
|
||||||
def test_port_create(self):
|
def test_port_create(self):
|
||||||
v = notifications.Port()
|
v = notifications.Port()
|
||||||
counters = v.process_notification(NOTIFICATION_PORT_CREATE)
|
counters = list(v.process_notification(NOTIFICATION_PORT_CREATE))
|
||||||
self.assertEqual(len(list(counters)), 2)
|
self.assertEqual(len(counters), 2)
|
||||||
|
self.assertEqual(counters[1].name, "port.create")
|
||||||
|
|
||||||
def test_port_update(self):
|
def test_port_update(self):
|
||||||
v = notifications.Port()
|
v = notifications.Port()
|
||||||
counters = v.process_notification(NOTIFICATION_PORT_UPDATE)
|
counters = list(v.process_notification(NOTIFICATION_PORT_UPDATE))
|
||||||
self.assertEqual(len(list(counters)), 2)
|
self.assertEqual(len(counters), 2)
|
||||||
|
self.assertEqual(counters[1].name, "port.update")
|
||||||
|
|
||||||
def test_network_exists(self):
|
def test_network_exists(self):
|
||||||
v = notifications.Network()
|
v = notifications.Network()
|
||||||
@ -211,6 +239,12 @@ class TestNotifications(unittest.TestCase):
|
|||||||
counters = v.process_notification(NOTIFICATION_ROUTER_EXISTS)
|
counters = v.process_notification(NOTIFICATION_ROUTER_EXISTS)
|
||||||
self.assertEqual(len(list(counters)), 1)
|
self.assertEqual(len(list(counters)), 1)
|
||||||
|
|
||||||
|
def test_floatingip_exists(self):
|
||||||
|
v = notifications.FloatingIP()
|
||||||
|
counters = list(v.process_notification(NOTIFICATION_FLOATINGIP_EXISTS))
|
||||||
|
self.assertEqual(len(counters), 1)
|
||||||
|
self.assertEqual(counters[0].name, "ip.floating")
|
||||||
|
|
||||||
|
|
||||||
class TestEventTypes(unittest.TestCase):
|
class TestEventTypes(unittest.TestCase):
|
||||||
|
|
||||||
@ -231,3 +265,6 @@ class TestEventTypes(unittest.TestCase):
|
|||||||
|
|
||||||
def test_router(self):
|
def test_router(self):
|
||||||
assert notifications.Router().get_event_types()
|
assert notifications.Router().get_event_types()
|
||||||
|
|
||||||
|
def test_floatingip(self):
|
||||||
|
assert notifications.FloatingIP().get_event_types()
|
||||||
|
Loading…
Reference in New Issue
Block a user