]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Merge "[qos] ovs: removed TODO for getting integration bridge from arguments" into...
authorJenkins <jenkins@review.openstack.org>
Mon, 10 Aug 2015 17:28:48 +0000 (17:28 +0000)
committerGerrit Code Review <review@openstack.org>
Mon, 10 Aug 2015 17:28:48 +0000 (17:28 +0000)
1  2 
neutron/plugins/ml2/drivers/openvswitch/agent/extension_drivers/qos_driver.py

index 2584611d5f7c40d22dbc4dab3375251fb45f3e00,182851176ad96f895d7e354260b36b841bfeb16e..51c6564f58f871ce43bb0e472d7d5f0efbcff185
@@@ -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))