def test_create_delete_policy_rule(self): qos_obj = self._test_create_policy() qos_rule = {'max_burst_kbps': 1000, 'max_kbps': 100} qos_rule_obj = self.qos_plugin.create_policy_rule( self.context, rule.QosBandwidthLimitRule, qos_obj['id'], {'bandwidth_limit_rule': qos_rule}) qos_rule_obj.pop('qos_policy_id', None) new_qos_obj = self.qos_plugin.get_policy(self.context, qos_obj['id']) self.assertGreater(new_qos_obj['revision_number'], qos_obj['revision_number']) self.qos_driver.nb_api.update.assert_called_with(qos.QosPolicy( id=qos_obj['id'], topic='project1', name='policy1', rules=[qos_rule_obj], version=new_qos_obj['revision_number'])) self.qos_plugin.delete_policy_rule(self.context, rule.QosBandwidthLimitRule, qos_rule_obj['id'], qos_obj['id']) newer_qos_obj = self.qos_plugin.get_policy(self.context, qos_obj['id']) self.assertGreater(newer_qos_obj['revision_number'], new_qos_obj['revision_number']) self.qos_driver.nb_api.update.assert_called_with(qos.QosPolicy( id=qos_obj['id'], topic='project1', name='policy1', rules=[], version=newer_qos_obj['revision_number']))
def test_qospolicy_version(self): qospolicy = objects.QosPolicyTestObj(self.neutron, self.nb_api) self.addCleanup(qospolicy.close) policy_id = qospolicy.create() self.assertTrue(qospolicy.exists()) version = self.nb_api.get(qos.QosPolicy(id=policy_id)).version rule = {'max_kbps': '1000', 'max_burst_kbps': '100'} qospolicy.create_rule(policy_id, rule, 'bandwidth_limit') self.assertTrue(qospolicy.exists()) new_version = self.nb_api.get(qos.QosPolicy(id=policy_id)).version self.assertGreater(new_version, version) qospolicy.close() self.assertFalse(qospolicy.exists())
def _test_create_policy(self): qos_policy = {'policy': {'name': "policy1", 'project_id': 'project1'}} qos_obj = self.qos_plugin.create_policy(self.context, qos_policy) self.assertEqual(qos_obj['revision_number'], 0) self.qos_driver.nb_api.create.assert_called_with(qos.QosPolicy( id=qos_obj['id'], topic='project1', name='policy1', rules=[], version=qos_obj['revision_number'])) return qos_obj
def test_update_policy(self): qos_obj = self._test_create_policy() new_qos_obj = self.qos_plugin.update_policy( self.context, qos_obj['id'], {'policy': {'name': 'policy2'}}) self.assertGreater(new_qos_obj['revision_number'], qos_obj['revision_number']) self.qos_driver.nb_api.update.assert_called_with(qos.QosPolicy( id=qos_obj['id'], topic='project1', name='policy2', rules=[], version=new_qos_obj['revision_number']))
def get_port_qos(self, port_id): port_qoses = self.ovsdb.db_find( 'QoS', ('external_ids', '=', {'iface-id': port_id}), columns=['external_ids', '_uuid']).execute() if port_qoses: ovsdb_qos = port_qoses[0] external_ids = ovsdb_qos['external_ids'] return qos.QosPolicy( id=external_ids.get('qos-id'), topic=external_ids.get('qos-topic'), version=external_ids.get('version'), )
def qos_policy_from_neutron_qos_policy(policy): policy_dict = { 'id': policy['id'], 'topic': policy['project_id'], 'name': policy['name'], 'version': policy['revision_number'], } rules = policy.get('rules') if rules: policy_dict['rules'] = [ qos_rule_from_neutron_qos_rule(rule) for rule in rules ] return qos.QosPolicy(**policy_dict)
def delete_policy(self, context, policy): policy_id = policy['id'] self.nb_api.delete(qos.QosPolicy(id=policy_id))
def test_delete_policy(self): qos_obj = self._test_create_policy() self.qos_plugin.delete_policy(self.context, qos_obj['id']) self.qos_driver.nb_api.delete.assert_called_with(qos.QosPolicy( id=qos_obj['id']))
def exists(self): qospolicy = self.nb_api.get(qos.QosPolicy(id=self.policy_id)) if qospolicy: return True return False