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
This commit is contained in:
Deepthi V V 2017-07-04 12:39:01 +05:30
parent 5621e1cc32
commit bd81d3536e
6 changed files with 160 additions and 146 deletions

View File

@ -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
)

View File

@ -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'):

View File

@ -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

View File

@ -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):

View File

@ -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)

View File

@ -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)