From: Jenkins Date: Mon, 10 Aug 2015 17:28:48 +0000 (+0000) Subject: Merge "[qos] ovs: removed TODO for getting integration bridge from arguments" into... X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=c279f7049d4434895ab6b0dd609dd3e3a43e51ba;p=openstack-build%2Fneutron-build.git Merge "[qos] ovs: removed TODO for getting integration bridge from arguments" into feature/qos --- c279f7049d4434895ab6b0dd609dd3e3a43e51ba diff --cc neutron/plugins/ml2/drivers/openvswitch/agent/extension_drivers/qos_driver.py index 2584611d5,182851176..51c6564f5 --- a/neutron/plugins/ml2/drivers/openvswitch/agent/extension_drivers/qos_driver.py +++ b/neutron/plugins/ml2/drivers/openvswitch/agent/extension_drivers/qos_driver.py @@@ -31,43 -26,39 +31,41 @@@ class QosOVSAgentDriver(qos.QosAgentDri def __init__(self): super(QosOVSAgentDriver, self).__init__() - # TODO(QoS) check if we can get this configuration - # as constructor arguments self.br_int_name = cfg.CONF.OVS.integration_bridge self.br_int = None - self.handlers = {} def initialize(self): - self.handlers[('update', qos_consts.RULE_TYPE_BANDWIDTH_LIMIT)] = ( - self._update_bw_limit_rule) - self.handlers[('create', qos_consts.RULE_TYPE_BANDWIDTH_LIMIT)] = ( - self._update_bw_limit_rule) - self.handlers[('delete', qos_consts.RULE_TYPE_BANDWIDTH_LIMIT)] = ( - self._delete_bw_limit_rule) - self.br_int = ovs_lib.OVSBridge(self.br_int_name) - def create(self, port, rules): - self._handle_rules('create', port, rules) + def create(self, port, qos_policy): + self._handle_rules('create', port, qos_policy) - def update(self, port, rules): - self._handle_rules('update', port, rules) + def update(self, port, qos_policy): + self._handle_rules('update', port, qos_policy) - def delete(self, port, rules): - self._handle_rules('delete', port, rules) + def delete(self, port, qos_policy): + # TODO(QoS): consider optimizing flushing of all QoS rules from the + # port by inspecting qos_policy.rules contents + self._delete_bandwidth_limit(port) - def _handle_rules(self, action, port, rules): - for rule in rules: - handler = self.handlers.get((action, rule.get('type'))) - if handler is not None: + def _handle_rules(self, action, port, qos_policy): + for rule in qos_policy.rules: + if rule.rule_type in self._SUPPORTED_RULES: + handler_name = ("".join(("_", action, "_", rule.rule_type))) + handler = getattr(self, handler_name) handler(port, rule) + else: + LOG.warning(_LW('Unsupported QoS rule type for %(rule_id)s: ' + '%(rule_type)s; skipping'), + {'rule_id': rule.id, 'rule_type': rule.rule_type}) + + def _create_bandwidth_limit(self, port, rule): + self._update_bandwidth_limit(port, rule) - def _update_bw_limit_rule(self, port, rule): - port_name = port.get('name') - max_kbps = rule.get('max_kbps') - max_burst_kbps = rule.get('max_burst_kbps') + def _update_bandwidth_limit(self, port, rule): + port_name = port['vif_port'].port_name + max_kbps = rule.max_kbps + max_burst_kbps = rule.max_burst_kbps current_max_kbps, current_max_burst = ( self.br_int.get_qos_bw_limit_for_port(port_name))