本文地址:http://blog.csdn.net/spch2008/article/details/9281779
创建数据库以及相应的操作:
/usr/share/pyshared/quantum/plugins/openvswitch/ 下创建ovs_qos_db.py,
然后将其连接到/usr/lib/python2.7/dist-packages/quantum/plugins/openvswitch下,可参见Quantum 数据库增加新表
ovs_qos_db.py
import sqlalchemy as sa from sqlalchemy import orm from sqlalchemy.orm import exc from quantum.db import model_base from quantum.db import models_v2 from quantum.openstack.common import log as logging from quantum.plugins.openvswitch.extensions import ovsqos LOG = logging.getLogger(__name__) class QualityOfServicePortBinding(model_base.BASEV2): __tablename__ = 'ovs_qos_port_bindings' port_id = sa.Column(sa.String(255), primary_key=True) rule_id = sa.Column(sa.String(255)) class QualityOfServiceRule(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant): __tablename__ = 'ovs_qos_rules' name = sa.Column(sa.String(255)) rate = sa.Column(sa.Integer) burst = sa.Column(sa.Integer) class QualityOfServiceDbMixin(ovsqos.OVSPluginBase): __native_bulk_support = True def create_ovsqos(self, context, ovsqos): qos_rule = ovsqos['ovsqos'] with context.session.begin(subtransactions=True): qos = QualityOfServiceRule( name=qos_rule.get('name'), rate=qos_rule.get('rate'), burst=qos_rule.get('burst'), tenant_id=qos_rule.get('tenant_id')) context.session.add(qos) return self._make_qos_rule_dict(qos) def get_ovsqoss(self, context, filters, fields): return self._get_collection(context, QualityOfServiceRule, self._make_qos_rule_dict, filters=filters, fields=fields) def get_ovsqos(self, context, rule_id, fields=None): return self._make_qos_rule_dict( self._get_ovsqos(context, rule_id), fields) def _get_ovsqos(self, context, rule_id): try: return self._get_by_id(context, QualityOfServiceRule, rule_id) except exc.NoResultFound: return None def delete_ovsqos(self, context, rule_id): qos = self._get_ovsqos(context, rule_id) with context.session.begin(subtransactions=True): context.session.delete(qos) def update_ovsqos(self, context, rule_id, ovsqos): rule = ovsqos['ovsqos'] with context.session.begin(subtransactions=True): qos = self._get_ovsqos(context, rule_id) qos.update(rule) return self._make_qos_rule_dict(qos) def _make_qos_rule_dict(self, qos, fields=None): res = {'id': qos.id, 'name': qos.name, 'rate': qos.rate, 'burst': qos.burst, 'tenant_id':qos.tenant_id} return self._fields(res, fields)
数据库很简陋,只有一些基本功能。