diff --git a/wan_qos/db/migration/alembic_migrations/versions/ocata/contract/45194b1d3492_first_rev.py b/wan_qos/db/migration/alembic_migrations/versions/ocata/contract/45194b1d3492_first_rev.py index b232ee0..6c7f4a8 100644 --- a/wan_qos/db/migration/alembic_migrations/versions/ocata/contract/45194b1d3492_first_rev.py +++ b/wan_qos/db/migration/alembic_migrations/versions/ocata/contract/45194b1d3492_first_rev.py @@ -43,11 +43,17 @@ def upgrade(): sa.PrimaryKeyConstraint('id') ) + op.create_foreign_key( + 'fk_wtc_class', + 'wan_tc_class', 'wan_tc_class', + ['parent'], ['id'], ondelete='CASCADE' + ) + op.create_table('wan_tc_selector', sa.Column('id', sa.String(length=36), nullable=False), sa.Column('class_id', sa.String(length=36), nullable=False), - sa.Column('network_id', sa.String(length=36)), + sa.Column('network', sa.String(length=36)), sa.Column('protocol', sa.String(length=15)), sa.Column('match', sa.String(length=15)), sa.PrimaryKeyConstraint('id') diff --git a/wan_qos/db/models/wan_tc.py b/wan_qos/db/models/wan_tc.py index a3d1a11..f53f64e 100644 --- a/wan_qos/db/models/wan_tc.py +++ b/wan_qos/db/models/wan_tc.py @@ -52,8 +52,8 @@ class WanTcSelector(model_base.BASEV2, sa.ForeignKey('wan_tc_class.id', ondelete='CASCADE'), nullable=False) - network_id = sa.Column(sa.String(36), - sa.ForeignKey('network.id', - ondelete='CASCADE')) + network = sa.Column(sa.String(36), + sa.ForeignKey('network.id', + ondelete='CASCADE')) protocol = sa.Column(sa.String(15)) match = sa.Column(sa.String(15)) diff --git a/wan_qos/db/wan_qos_db.py b/wan_qos/db/wan_qos_db.py index df18422..6dadc94 100644 --- a/wan_qos/db/wan_qos_db.py +++ b/wan_qos/db/wan_qos_db.py @@ -76,6 +76,8 @@ class WanTcDb(object): parent = wtc_class['parent'] if parent: wtc_class_db.parent = parent + else: + wtc_class_db.parent = wtc_class_db.id with context.session.begin(subtransactions=True): @@ -108,14 +110,19 @@ class WanTcDb(object): return wtc_classes def _class_to_dict(self, wtc_class): + class_dict = { 'id': wtc_class.id, 'direction': wtc_class.direction, 'min': wtc_class.min, - 'max': wtc_class.max, - 'parent': wtc_class.parent + 'max': wtc_class.max } + if wtc_class.parent == wtc_class.id: + class_dict['parent'] = '' + else: + class_dict['parent'] = wtc_class.parent + return class_dict def _device_to_dict(self, device):