From bd81d3536e611ae8282f82edd38256e0f5e57537 Mon Sep 17 00:00:00 2001 From: Deepthi V V Date: Tue, 4 Jul 2017 12:39:01 +0530 Subject: [PATCH] Project_id for SDN controller meters Enable project_id config from SDN controller drivers. Current code Project_id was set to None. With this commit, project_id will be set by the driver. Existing drivers will set project_id to None. OpenDayliht v2 driver will set project_id as the uuid of the tenant owning the port for port meters and admin tenant id for switch, switch.port and table meters. Change-Id: I0e65d25e71d2d258ff0db76f020924170f380ec2 Implements: blueprint network-statistics-from-opendaylight Closes-Bug: #1369428 --- ceilometer/network/statistics/__init__.py | 4 +- .../network/statistics/opencontrail/driver.py | 2 +- .../network/statistics/opendaylight/driver.py | 2 +- .../statistics/opencontrail/test_driver.py | 30 ++- .../statistics/opendaylight/test_driver.py | 222 +++++++++--------- .../network/statistics/test_statistics.py | 46 ++-- 6 files changed, 160 insertions(+), 146 deletions(-) diff --git a/ceilometer/network/statistics/__init__.py b/ceilometer/network/statistics/__init__.py index 5c14b06c..ef44238e 100644 --- a/ceilometer/network/statistics/__init__.py +++ b/ceilometer/network/statistics/__init__.py @@ -86,7 +86,7 @@ class _Base(plugin_base.PollsterBase): if not isinstance(data, list): data = [data] for (volume, resource_id, - resource_metadata) in data: + resource_metadata, project_id) in data: yield sample.Sample( name=self.meter_name, @@ -94,7 +94,7 @@ class _Base(plugin_base.PollsterBase): unit=self.meter_unit, volume=volume, user_id=None, - project_id=None, + project_id=project_id, resource_id=resource_id, resource_metadata=resource_metadata ) diff --git a/ceilometer/network/statistics/opencontrail/driver.py b/ceilometer/network/statistics/opencontrail/driver.py index f17a77b5..433b7878 100644 --- a/ceilometer/network/statistics/opencontrail/driver.py +++ b/ceilometer/network/statistics/opencontrail/driver.py @@ -110,7 +110,7 @@ class OpencontrailDriver(driver.Driver): for sample in iter(extractor, value, ports_map, resource, virtual_network): if sample is not None: - yield sample + yield sample + (None, ) def _get_iter(self, meter_name): if meter_name.startswith('switch.port'): diff --git a/ceilometer/network/statistics/opendaylight/driver.py b/ceilometer/network/statistics/opendaylight/driver.py index 79692935..444b02a5 100644 --- a/ceilometer/network/statistics/opendaylight/driver.py +++ b/ceilometer/network/statistics/opendaylight/driver.py @@ -200,7 +200,7 @@ class OpenDayLightDriver(driver.Driver): sample[2]['controller'] = 'OpenDaylight' sample[2]['container'] = name - samples.append(sample) + samples.append(sample + (None, )) return samples diff --git a/ceilometer/tests/unit/network/statistics/opencontrail/test_driver.py b/ceilometer/tests/unit/network/statistics/opencontrail/test_driver.py index ed1cfe53..96bbcb3d 100644 --- a/ceilometer/tests/unit/network/statistics/opencontrail/test_driver.py +++ b/ceilometer/tests/unit/network/statistics/opencontrail/test_driver.py @@ -137,7 +137,8 @@ class TestOpencontrailDriver(base.BaseTestCase): 'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b', 'project': 'demo', 'project_id': '89271fa581ab4380bf172f868c3615f9', - 'resource': 'if_stats_list'},), + 'resource': 'if_stats_list'}, + None), (13, '96d49cc3-4e01-40ce-9cac-c0e32642a442', {'device_owner_id': @@ -146,7 +147,8 @@ class TestOpencontrailDriver(base.BaseTestCase): 'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b', 'project': 'demo', 'project_id': '89271fa581ab4380bf172f868c3615f9', - 'resource': 'if_stats_list'},)] + 'resource': 'if_stats_list'}, + None)] self._test_meter('switch.port.receive.packets', expected, self.fake_port_stats_with_node()) @@ -159,7 +161,8 @@ class TestOpencontrailDriver(base.BaseTestCase): 'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b', 'project': 'demo', 'project_id': '89271fa581ab4380bf172f868c3615f9', - 'resource': 'if_stats_list'},)] + 'resource': 'if_stats_list'}, + None)] self._test_meter('switch.port.receive.packets', expected) def test_switch_port_transmit_packets(self): @@ -171,7 +174,8 @@ class TestOpencontrailDriver(base.BaseTestCase): 'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b', 'project': 'demo', 'project_id': '89271fa581ab4380bf172f868c3615f9', - 'resource': 'if_stats_list'},)] + 'resource': 'if_stats_list'}, + None)] self._test_meter('switch.port.transmit.packets', expected) def test_switch_port_receive_bytes(self): @@ -183,7 +187,8 @@ class TestOpencontrailDriver(base.BaseTestCase): 'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b', 'project': 'demo', 'project_id': '89271fa581ab4380bf172f868c3615f9', - 'resource': 'if_stats_list'},)] + 'resource': 'if_stats_list'}, + None)] self._test_meter('switch.port.receive.bytes', expected) def test_switch_port_transmit_bytes(self): @@ -195,7 +200,8 @@ class TestOpencontrailDriver(base.BaseTestCase): 'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b', 'project': 'demo', 'project_id': '89271fa581ab4380bf172f868c3615f9', - 'resource': 'if_stats_list'},)] + 'resource': 'if_stats_list'}, + None)] self._test_meter('switch.port.transmit.bytes', expected) def test_switch_port_receive_packets_fip(self): @@ -208,7 +214,8 @@ class TestOpencontrailDriver(base.BaseTestCase): 'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b', 'project': 'demo', 'project_id': '89271fa581ab4380bf172f868c3615f9', - 'resource': 'fip_stats_list'},)] + 'resource': 'fip_stats_list'}, + None)] self._test_meter('switch.port.receive.packets', expected) def test_switch_port_transmit_packets_fip(self): @@ -221,7 +228,8 @@ class TestOpencontrailDriver(base.BaseTestCase): 'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b', 'project': 'demo', 'project_id': '89271fa581ab4380bf172f868c3615f9', - 'resource': 'fip_stats_list'},)] + 'resource': 'fip_stats_list'}, + None)] self._test_meter('switch.port.transmit.packets', expected) def test_switch_port_receive_bytes_fip(self): @@ -234,7 +242,8 @@ class TestOpencontrailDriver(base.BaseTestCase): 'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b', 'project': 'demo', 'project_id': '89271fa581ab4380bf172f868c3615f9', - 'resource': 'fip_stats_list'},)] + 'resource': 'fip_stats_list'}, + None)] self._test_meter('switch.port.receive.bytes', expected) def test_switch_port_transmit_bytes_fip(self): @@ -247,7 +256,8 @@ class TestOpencontrailDriver(base.BaseTestCase): 'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b', 'project': 'demo', 'project_id': '89271fa581ab4380bf172f868c3615f9', - 'resource': 'fip_stats_list'},)] + 'resource': 'fip_stats_list'}, + None)] self._test_meter('switch.port.transmit.bytes', expected) def test_switch_port_transmit_bytes_non_existing_network(self): diff --git a/ceilometer/tests/unit/network/statistics/opendaylight/test_driver.py b/ceilometer/tests/unit/network/statistics/opendaylight/test_driver.py index 51a2c482..3fffdfac 100644 --- a/ceilometer/tests/unit/network/statistics/opendaylight/test_driver.py +++ b/ceilometer/tests/unit/network/statistics/opendaylight/test_driver.py @@ -17,7 +17,6 @@ import abc import mock from oslotest import base import six -from six import moves from six.moves.urllib import parse as url_parse from ceilometer.network.statistics.opendaylight import driver @@ -119,10 +118,7 @@ class _Base(base.BaseTestCase): self.fake_params, {}) - for sample, expected in moves.zip(sample_data, expected_data): - self.assertEqual(expected[0], sample[0]) # check volume - self.assertEqual(expected[1], sample[1]) # check resource id - self.assertEqual(expected[2], sample[2]) # check resource metadata + self.assertEqual(expected_data, list(sample_data)) class TestOpenDayLightDriverSpecial(_Base): @@ -352,7 +348,7 @@ class TestOpenDayLightDriverSimple(_Base): 'container': 'default', "properties_actions": "4095", "properties_timeStamp_connectedSince": "1377291227877" - }), + }, None), ] self._test_for_meter('switch', expected_data) @@ -363,7 +359,7 @@ class TestOpenDayLightDriverSimple(_Base): 'controller': 'OpenDaylight', 'container': 'default', 'port': '4', - }), + }, None), ] self._test_for_meter('switch.port', expected_data) @@ -372,7 +368,7 @@ class TestOpenDayLightDriverSimple(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), ] self._test_for_meter('switch.port.receive.packets', expected_data) @@ -381,7 +377,7 @@ class TestOpenDayLightDriverSimple(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), ] self._test_for_meter('switch.port.transmit.packets', expected_data) @@ -390,7 +386,7 @@ class TestOpenDayLightDriverSimple(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), ] self._test_for_meter('switch.port.receive.bytes', expected_data) @@ -399,7 +395,7 @@ class TestOpenDayLightDriverSimple(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), ] self._test_for_meter('switch.port.transmit.bytes', expected_data) @@ -408,7 +404,7 @@ class TestOpenDayLightDriverSimple(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), ] self._test_for_meter('switch.port.receive.drops', expected_data) @@ -417,7 +413,7 @@ class TestOpenDayLightDriverSimple(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), ] self._test_for_meter('switch.port.transmit.drops', expected_data) @@ -426,7 +422,7 @@ class TestOpenDayLightDriverSimple(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), ] self._test_for_meter('switch.port.receive.errors', expected_data) @@ -435,7 +431,7 @@ class TestOpenDayLightDriverSimple(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), ] self._test_for_meter('switch.port.transmit.errors', expected_data) @@ -444,7 +440,7 @@ class TestOpenDayLightDriverSimple(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), ] self._test_for_meter('switch.port.receive.frame_error', expected_data) @@ -453,7 +449,7 @@ class TestOpenDayLightDriverSimple(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), ] self._test_for_meter('switch.port.receive.overrun_error', expected_data) @@ -463,7 +459,7 @@ class TestOpenDayLightDriverSimple(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), ] self._test_for_meter('switch.port.receive.crc_error', expected_data) @@ -472,7 +468,7 @@ class TestOpenDayLightDriverSimple(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), ] self._test_for_meter('switch.port.collision.count', expected_data) @@ -481,7 +477,7 @@ class TestOpenDayLightDriverSimple(_Base): (1, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'table_id': '0'}), + 'table_id': '0'}, None), ] self._test_for_meter('switch.table', expected_data) @@ -490,7 +486,7 @@ class TestOpenDayLightDriverSimple(_Base): (11, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'table_id': '0'}), + 'table_id': '0'}, None), ] self._test_for_meter('switch.table.active.entries', expected_data) @@ -499,7 +495,7 @@ class TestOpenDayLightDriverSimple(_Base): (816, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'table_id': '0'}), + 'table_id': '0'}, None), ] self._test_for_meter('switch.table.lookup.packets', expected_data) @@ -508,7 +504,7 @@ class TestOpenDayLightDriverSimple(_Base): (220, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'table_id': '0'}), + 'table_id': '0'}, None), ] self._test_for_meter('switch.table.matched.packets', expected_data) @@ -532,7 +528,7 @@ class TestOpenDayLightDriverSimple(_Base): "flow_hardTimeout": "0", "flow_idleTimeout": "0", "flow_priority": "1" - }), + }, None), ] self._test_for_meter('switch.flow', expected_data) @@ -555,7 +551,7 @@ class TestOpenDayLightDriverSimple(_Base): "flow_actions_port_type": "OF", "flow_hardTimeout": "0", "flow_idleTimeout": "0", - "flow_priority": "1"}), + "flow_priority": "1"}, None), ] self._test_for_meter('switch.flow.duration_seconds', expected_data) @@ -578,7 +574,7 @@ class TestOpenDayLightDriverSimple(_Base): "flow_actions_port_type": "OF", "flow_hardTimeout": "0", "flow_idleTimeout": "0", - "flow_priority": "1"}), + "flow_priority": "1"}, None), ] self._test_for_meter('switch.flow.duration_nanoseconds', expected_data) @@ -601,7 +597,7 @@ class TestOpenDayLightDriverSimple(_Base): "flow_actions_port_type": "OF", "flow_hardTimeout": "0", "flow_idleTimeout": "0", - "flow_priority": "1"}), + "flow_priority": "1"}, None), ] self._test_for_meter('switch.flow.packets', expected_data) @@ -624,7 +620,7 @@ class TestOpenDayLightDriverSimple(_Base): "flow_actions_port_type": "OF", "flow_hardTimeout": "0", "flow_idleTimeout": "0", - "flow_priority": "1"}), + "flow_priority": "1"}, None), ] self._test_for_meter('switch.flow.bytes', expected_data) @@ -1078,7 +1074,7 @@ class TestOpenDayLightDriverComplex(_Base): "properties_macAddress": "00:00:00:00:00:02", "properties_tables": "-1", "properties_timeStamp_connectedSince": "1377291227877" - }), + }, None), (1, "00:00:00:00:00:00:00:03", { 'controller': 'OpenDaylight', 'container': 'default', @@ -1089,7 +1085,7 @@ class TestOpenDayLightDriverComplex(_Base): "properties_macAddress": "00:00:00:00:00:03", "properties_tables": "10", "properties_timeStamp_connectedSince": "1377291228000" - }), + }, None), ] self._test_for_meter('switch', expected_data) @@ -1100,7 +1096,7 @@ class TestOpenDayLightDriverComplex(_Base): 'controller': 'OpenDaylight', 'container': 'default', 'port': '4', - }), + }, None), (1, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', @@ -1109,7 +1105,7 @@ class TestOpenDayLightDriverComplex(_Base): 'user_link_node_port': '5', 'user_link_status': 'Success', 'user_link_name': 'link1', - }), + }, None), (1, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', @@ -1121,7 +1117,7 @@ class TestOpenDayLightDriverComplex(_Base): "topology_name": "s2-eth3", "topology_state": 1, "topology_timeStamp_creation": 1379527162648 - }), + }, None), (1, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', @@ -1131,7 +1127,7 @@ class TestOpenDayLightDriverComplex(_Base): 'host_networkAddress': '2.2.2.2', 'host_staticHost': 'true', 'host_vlan': '0', - }), + }, None), (1, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', @@ -1141,7 +1137,7 @@ class TestOpenDayLightDriverComplex(_Base): 'host_networkAddress': '2.2.2.4', 'host_staticHost': 'false', 'host_vlan': '1', - }), + }, None), ] self._test_for_meter('switch.port', expected_data) @@ -1150,23 +1146,23 @@ class TestOpenDayLightDriverComplex(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), (182, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '3'}), + 'port': '3'}, None), (174, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '2'}), + 'port': '2'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '1'}), + 'port': '1'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '0'}), + 'port': '0'}, None), ] self._test_for_meter('switch.port.receive.packets', expected_data) @@ -1175,23 +1171,23 @@ class TestOpenDayLightDriverComplex(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), (173, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '3'}), + 'port': '3'}, None), (181, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '2'}), + 'port': '2'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '1'}), + 'port': '1'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '0'}), + 'port': '0'}, None), ] self._test_for_meter('switch.port.transmit.packets', expected_data) @@ -1200,23 +1196,23 @@ class TestOpenDayLightDriverComplex(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), (12740, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '3'}), + 'port': '3'}, None), (12180, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '2'}), + 'port': '2'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '1'}), + 'port': '1'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '0'}), + 'port': '0'}, None), ] self._test_for_meter('switch.port.receive.bytes', expected_data) @@ -1225,23 +1221,23 @@ class TestOpenDayLightDriverComplex(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), (12110, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '3'}), + 'port': '3'}, None), (12670, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '2'}), + 'port': '2'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '1'}), + 'port': '1'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '0'}), + 'port': '0'}, None), ] self._test_for_meter('switch.port.transmit.bytes', expected_data) @@ -1250,23 +1246,23 @@ class TestOpenDayLightDriverComplex(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '3'}), + 'port': '3'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '2'}), + 'port': '2'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '1'}), + 'port': '1'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '0'}), + 'port': '0'}, None), ] self._test_for_meter('switch.port.receive.drops', expected_data) @@ -1275,23 +1271,23 @@ class TestOpenDayLightDriverComplex(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '3'}), + 'port': '3'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '2'}), + 'port': '2'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '1'}), + 'port': '1'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '0'}), + 'port': '0'}, None), ] self._test_for_meter('switch.port.transmit.drops', expected_data) @@ -1300,23 +1296,23 @@ class TestOpenDayLightDriverComplex(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '3'}), + 'port': '3'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '2'}), + 'port': '2'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '1'}), + 'port': '1'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '0'}), + 'port': '0'}, None), ] self._test_for_meter('switch.port.receive.errors', expected_data) @@ -1325,23 +1321,23 @@ class TestOpenDayLightDriverComplex(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '3'}), + 'port': '3'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '2'}), + 'port': '2'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '1'}), + 'port': '1'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '0'}), + 'port': '0'}, None), ] self._test_for_meter('switch.port.transmit.errors', expected_data) @@ -1350,23 +1346,23 @@ class TestOpenDayLightDriverComplex(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '3'}), + 'port': '3'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '2'}), + 'port': '2'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '1'}), + 'port': '1'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '0'}), + 'port': '0'}, None), ] self._test_for_meter('switch.port.receive.frame_error', expected_data) @@ -1375,23 +1371,23 @@ class TestOpenDayLightDriverComplex(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '3'}), + 'port': '3'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '2'}), + 'port': '2'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '1'}), + 'port': '1'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '0'}), + 'port': '0'}, None), ] self._test_for_meter('switch.port.receive.overrun_error', expected_data) @@ -1401,23 +1397,23 @@ class TestOpenDayLightDriverComplex(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '3'}), + 'port': '3'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '2'}), + 'port': '2'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '1'}), + 'port': '1'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '0'}), + 'port': '0'}, None), ] self._test_for_meter('switch.port.receive.crc_error', expected_data) @@ -1426,23 +1422,23 @@ class TestOpenDayLightDriverComplex(_Base): (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '4'}), + 'port': '4'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '3'}), + 'port': '3'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '2'}), + 'port': '2'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '1'}), + 'port': '1'}, None), (0, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'port': '0'}), + 'port': '0'}, None), ] self._test_for_meter('switch.port.collision.count', expected_data) @@ -1451,11 +1447,11 @@ class TestOpenDayLightDriverComplex(_Base): (1, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'table_id': '0'}), + 'table_id': '0'}, None), (1, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'table_id': '1'}), + 'table_id': '1'}, None), ] self._test_for_meter('switch.table', expected_data) @@ -1464,11 +1460,11 @@ class TestOpenDayLightDriverComplex(_Base): (11, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'table_id': '0'}), + 'table_id': '0'}, None), (20, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'table_id': '1'}), + 'table_id': '1'}, None), ] self._test_for_meter('switch.table.active.entries', expected_data) @@ -1477,11 +1473,11 @@ class TestOpenDayLightDriverComplex(_Base): (816, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'table_id': '0'}), + 'table_id': '0'}, None), (10, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'table_id': '1'}), + 'table_id': '1'}, None), ] self._test_for_meter('switch.table.lookup.packets', expected_data) @@ -1490,11 +1486,11 @@ class TestOpenDayLightDriverComplex(_Base): (220, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'table_id': '0'}), + 'table_id': '0'}, None), (5, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', - 'table_id': '1'}), + 'table_id': '1'}, None), ] self._test_for_meter('switch.table.matched.packets', expected_data) @@ -1518,7 +1514,7 @@ class TestOpenDayLightDriverComplex(_Base): "flow_hardTimeout": "0", "flow_idleTimeout": "0", "flow_priority": "1" - }), + }, None), (1, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', @@ -1537,7 +1533,7 @@ class TestOpenDayLightDriverComplex(_Base): "flow_hardTimeout": "0", "flow_idleTimeout": "0", "flow_priority": "1" - }), + }, None), ] self._test_for_meter('switch.flow', expected_data) @@ -1560,7 +1556,7 @@ class TestOpenDayLightDriverComplex(_Base): "flow_actions_port_type": "OF", "flow_hardTimeout": "0", "flow_idleTimeout": "0", - "flow_priority": "1"}), + "flow_priority": "1"}, None), (5648, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', @@ -1578,7 +1574,7 @@ class TestOpenDayLightDriverComplex(_Base): "flow_actions_port_type": "OF", "flow_hardTimeout": "0", "flow_idleTimeout": "0", - "flow_priority": "1"}), + "flow_priority": "1"}, None), ] self._test_for_meter('switch.flow.duration_seconds', expected_data) @@ -1601,7 +1597,7 @@ class TestOpenDayLightDriverComplex(_Base): "flow_actions_port_type": "OF", "flow_hardTimeout": "0", "flow_idleTimeout": "0", - "flow_priority": "1"}), + "flow_priority": "1"}, None), (200000, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', @@ -1619,7 +1615,7 @@ class TestOpenDayLightDriverComplex(_Base): "flow_actions_port_type": "OF", "flow_hardTimeout": "0", "flow_idleTimeout": "0", - "flow_priority": "1"}), + "flow_priority": "1"}, None), ] self._test_for_meter('switch.flow.duration_nanoseconds', expected_data) @@ -1642,7 +1638,7 @@ class TestOpenDayLightDriverComplex(_Base): "flow_actions_port_type": "OF", "flow_hardTimeout": "0", "flow_idleTimeout": "0", - "flow_priority": "1"}), + "flow_priority": "1"}, None), (30, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', @@ -1660,7 +1656,7 @@ class TestOpenDayLightDriverComplex(_Base): "flow_actions_port_type": "OF", "flow_hardTimeout": "0", "flow_idleTimeout": "0", - "flow_priority": "1"}), + "flow_priority": "1"}, None), ] self._test_for_meter('switch.flow.packets', expected_data) @@ -1683,7 +1679,7 @@ class TestOpenDayLightDriverComplex(_Base): "flow_actions_port_type": "OF", "flow_hardTimeout": "0", "flow_idleTimeout": "0", - "flow_priority": "1"}), + "flow_priority": "1"}, None), (89, "00:00:00:00:00:00:00:02", { 'controller': 'OpenDaylight', 'container': 'default', @@ -1701,6 +1697,6 @@ class TestOpenDayLightDriverComplex(_Base): "flow_actions_port_type": "OF", "flow_hardTimeout": "0", "flow_idleTimeout": "0", - "flow_priority": "1"}), + "flow_priority": "1"}, None), ] self._test_for_meter('switch.flow.bytes', expected_data) diff --git a/ceilometer/tests/unit/network/statistics/test_statistics.py b/ceilometer/tests/unit/network/statistics/test_statistics.py index d1efdb5c..f8f50733 100644 --- a/ceilometer/tests/unit/network/statistics/test_statistics.py +++ b/ceilometer/tests/unit/network/statistics/test_statistics.py @@ -16,6 +16,7 @@ import datetime from oslo_utils import timeutils +from oslo_utils import uuidutils from oslotest import base from ceilometer.network import statistics @@ -23,6 +24,8 @@ from ceilometer.network.statistics import driver from ceilometer import sample from ceilometer import service +PROJECT_ID = uuidutils.generate_uuid() + class TestBase(base.BaseTestCase): @@ -111,46 +114,50 @@ class TestBaseGetSamples(base.BaseTestCase): return [v for v in self.pollster.get_samples(self, {}, resources)] - def _assert_sample(self, s, volume, resource_id, resource_metadata): + def _assert_sample(self, s, volume, resource_id, resource_metadata, + project_id): self.assertEqual('foo', s.name) self.assertEqual(sample.TYPE_CUMULATIVE, s.type) self.assertEqual('bar', s.unit) self.assertEqual(volume, s.volume) self.assertIsNone(s.user_id) - self.assertIsNone(s.project_id) + self.assertEqual(project_id, s.project_id) self.assertEqual(resource_id, s.resource_id) self.assertEqual(resource_metadata, s.resource_metadata) def test_get_samples_one_driver_one_resource(self): - fake_driver = self._make_fake_driver((1, 'a', {'spam': 'egg'},), - (2, 'b', None)) + fake_driver = self._make_fake_driver((1, 'a', {'spam': 'egg'}, + PROJECT_ID), + (2, 'b', None, None)) self._setup_ext_mgr(http=fake_driver(self.CONF)) samples = self._get_samples('http://foo') self.assertEqual(1, len(samples)) - self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'}) + self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'}, PROJECT_ID) def test_get_samples_one_driver_two_resource(self): - fake_driver = self._make_fake_driver((1, 'a', {'spam': 'egg'},), - (2, 'b', None), - (3, 'c', None)) + fake_driver = self._make_fake_driver((1, 'a', {'spam': 'egg'}, + None), + (2, 'b', None, None), + (3, 'c', None, None)) self._setup_ext_mgr(http=fake_driver(self.CONF)) samples = self._get_samples('http://foo', 'http://bar') self.assertEqual(2, len(samples)) - self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'}) - self._assert_sample(samples[1], 2, 'b', {}) + self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'}, None) + self._assert_sample(samples[1], 2, 'b', {}, None) def test_get_samples_two_driver_one_resource(self): - fake_driver1 = self._make_fake_driver((1, 'a', {'spam': 'egg'},), - (2, 'b', None)) + fake_driver1 = self._make_fake_driver((1, 'a', {'spam': 'egg'}, + None), + (2, 'b', None, None)) - fake_driver2 = self._make_fake_driver((11, 'A', None), - (12, 'B', None)) + fake_driver2 = self._make_fake_driver((11, 'A', None, None), + (12, 'B', None, None)) self._setup_ext_mgr(http=fake_driver1(self.CONF), https=fake_driver2(self.CONF)) @@ -158,19 +165,20 @@ class TestBaseGetSamples(base.BaseTestCase): samples = self._get_samples('http://foo') self.assertEqual(1, len(samples)) - self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'}) + self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'}, None) def test_get_samples_multi_samples(self): - fake_driver = self._make_fake_driver([(1, 'a', {'spam': 'egg'},), - (2, 'b', None)]) + fake_driver = self._make_fake_driver([(1, 'a', {'spam': 'egg'}, + None), + (2, 'b', None, None)]) self._setup_ext_mgr(http=fake_driver(self.CONF)) samples = self._get_samples('http://foo') self.assertEqual(2, len(samples)) - self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'}) - self._assert_sample(samples[1], 2, 'b', {}) + self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'}, None) + self._assert_sample(samples[1], 2, 'b', {}, None) def test_get_samples_return_none(self): fake_driver = self._make_fake_driver(None)