diff options
Diffstat (limited to 'networking-odl/networking_odl/db')
6 files changed, 2 insertions, 148 deletions
diff --git a/networking-odl/networking_odl/db/db.py b/networking-odl/networking_odl/db/db.py index 31f4ce2..a8e7ade 100644 --- a/networking-odl/networking_odl/db/db.py +++ b/networking-odl/networking_odl/db/db.py @@ -12,8 +12,6 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. -import datetime - from sqlalchemy import asc from sqlalchemy import func from sqlalchemy import or_ @@ -163,72 +161,3 @@ def create_pending_row(session, object_type, object_uuid, # Keep session flush for unit tests. NOOP for L2/L3 events since calls are # made inside database session transaction with subtransactions=True. session.flush() - - -@db_api.retry_db_errors -def delete_pending_rows(session, operations_to_delete): - with session.begin(): - session.query(models.OpendaylightJournal).filter( - models.OpendaylightJournal.operation.in_(operations_to_delete), - models.OpendaylightJournal.state == odl_const.PENDING).delete( - synchronize_session=False) - session.expire_all() - - -@db_api.retry_db_errors -def _update_maintenance_state(session, expected_state, state): - with session.begin(): - row = session.query(models.OpendaylightMaintenance).filter_by( - state=expected_state).with_for_update().one_or_none() - if row is None: - return False - - row.state = state - return True - - -def lock_maintenance(session): - return _update_maintenance_state(session, odl_const.PENDING, - odl_const.PROCESSING) - - -def unlock_maintenance(session): - return _update_maintenance_state(session, odl_const.PROCESSING, - odl_const.PENDING) - - -def update_maintenance_operation(session, operation=None): - """Update the current maintenance operation details. - - The function assumes the lock is held, so it mustn't be run outside of a - locked context. - """ - op_text = None - if operation: - op_text = operation.__name__ - - with session.begin(): - row = session.query(models.OpendaylightMaintenance).one_or_none() - row.processing_operation = op_text - - -def delete_rows_by_state_and_time(session, state, time_delta): - with session.begin(): - now = session.execute(func.now()).scalar() - session.query(models.OpendaylightJournal).filter( - models.OpendaylightJournal.state == state, - models.OpendaylightJournal.last_retried < now - time_delta).delete( - synchronize_session=False) - session.expire_all() - - -def reset_processing_rows(session, max_timedelta): - with session.begin(): - now = session.execute(func.now()).scalar() - max_timedelta = datetime.timedelta(seconds=max_timedelta) - rows = session.query(models.OpendaylightJournal).filter( - models.OpendaylightJournal.last_retried < now - max_timedelta, - models.OpendaylightJournal.state == odl_const.PROCESSING, - ).update({'state': odl_const.PENDING}) - - return rows diff --git a/networking-odl/networking_odl/db/migration/alembic_migrations/versions/EXPAND_HEAD b/networking-odl/networking_odl/db/migration/alembic_migrations/versions/EXPAND_HEAD index 34912ba..95ad199 100644 --- a/networking-odl/networking_odl/db/migration/alembic_migrations/versions/EXPAND_HEAD +++ b/networking-odl/networking_odl/db/migration/alembic_migrations/versions/EXPAND_HEAD @@ -1 +1 @@ -703dbf02afde +37e242787ae5 diff --git a/networking-odl/networking_odl/db/migration/alembic_migrations/versions/mitaka/contract/383acb0d38a0_initial_contract.py b/networking-odl/networking_odl/db/migration/alembic_migrations/versions/mitaka/contract/383acb0d38a0_initial_contract.py index 43959c0..5a81be5 100644 --- a/networking-odl/networking_odl/db/migration/alembic_migrations/versions/mitaka/contract/383acb0d38a0_initial_contract.py +++ b/networking-odl/networking_odl/db/migration/alembic_migrations/versions/mitaka/contract/383acb0d38a0_initial_contract.py @@ -19,7 +19,6 @@ Create Date: 2015-09-03 22:27:49.306394 """ -from neutron.db import migration from neutron.db.migration import cli @@ -28,9 +27,6 @@ revision = '383acb0d38a0' down_revision = 'b89a299e19f9' branch_labels = (cli.CONTRACT_BRANCH,) -# milestone identifier, used by neutron-db-manage -neutron_milestone = [migration.MITAKA] - def upgrade(): pass diff --git a/networking-odl/networking_odl/db/migration/alembic_migrations/versions/mitaka/expand/37e242787ae5_opendaylight_neutron_mechanism_driver_.py b/networking-odl/networking_odl/db/migration/alembic_migrations/versions/mitaka/expand/37e242787ae5_opendaylight_neutron_mechanism_driver_.py index 71d8273..b78993d 100644 --- a/networking-odl/networking_odl/db/migration/alembic_migrations/versions/mitaka/expand/37e242787ae5_opendaylight_neutron_mechanism_driver_.py +++ b/networking-odl/networking_odl/db/migration/alembic_migrations/versions/mitaka/expand/37e242787ae5_opendaylight_neutron_mechanism_driver_.py @@ -20,17 +20,10 @@ Revises: 247501328046 Create Date: 2015-10-30 22:09:27.221767 """ -from neutron.db import migration - - # revision identifiers, used by Alembic. revision = '37e242787ae5' down_revision = '247501328046' -# milestone identifier, used by neutron-db-manage -neutron_milestone = [migration.MITAKA] - - from alembic import op import sqlalchemy as sa @@ -44,8 +37,7 @@ def upgrade(): sa.Column('operation', sa.String(36), nullable=False), sa.Column('data', sa.PickleType, nullable=True), sa.Column('state', - sa.Enum('pending', 'processing', 'failed', 'completed', - name='state'), + sa.Enum('pending', 'processing', 'failed', 'completed'), nullable=False, default='pending'), sa.Column('retry_count', sa.Integer, default=0), sa.Column('created_at', sa.DateTime, default=sa.func.now()), diff --git a/networking-odl/networking_odl/db/migration/alembic_migrations/versions/newton/expand/703dbf02afde_add_journal_maintenance_table.py b/networking-odl/networking_odl/db/migration/alembic_migrations/versions/newton/expand/703dbf02afde_add_journal_maintenance_table.py deleted file mode 100644 index bbe0c46..0000000 --- a/networking-odl/networking_odl/db/migration/alembic_migrations/versions/newton/expand/703dbf02afde_add_journal_maintenance_table.py +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright 2016 Red Hat Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -# - -"""Add journal maintenance table - -Revision ID: 703dbf02afde -Revises: 37e242787ae5 -Create Date: 2016-04-12 10:49:31.802663 - -""" - -# revision identifiers, used by Alembic. -revision = '703dbf02afde' -down_revision = '37e242787ae5' - -from alembic import op -from oslo_utils import uuidutils -import sqlalchemy as sa - -from networking_odl.common import constants as odl_const - - -def upgrade(): - maint_table = op.create_table( - 'opendaylight_maintenance', - sa.Column('id', sa.String(36), primary_key=True), - sa.Column('state', sa.Enum(odl_const.PENDING, odl_const.PROCESSING, - name='state'), - nullable=False), - sa.Column('processing_operation', sa.String(70)), - sa.Column('lock_updated', sa.TIMESTAMP, nullable=False, - server_default=sa.func.now(), - onupdate=sa.func.now()) - ) - - # Insert the only row here that is used to synchronize the lock between - # different Neutron processes. - op.bulk_insert(maint_table, - [{'id': uuidutils.generate_uuid(), - 'state': odl_const.PENDING}]) diff --git a/networking-odl/networking_odl/db/models.py b/networking-odl/networking_odl/db/models.py index 0416ed1..94c3ef0 100644 --- a/networking-odl/networking_odl/db/models.py +++ b/networking-odl/networking_odl/db/models.py @@ -34,14 +34,3 @@ class OpendaylightJournal(model_base.BASEV2, HasId): created_at = sa.Column(sa.DateTime, server_default=sa.func.now()) last_retried = sa.Column(sa.TIMESTAMP, server_default=sa.func.now(), onupdate=sa.func.now()) - - -class OpendaylightMaintenance(model_base.BASEV2, HasId): - __tablename__ = 'opendaylight_maintenance' - - state = sa.Column(sa.Enum(odl_const.PENDING, odl_const.PROCESSING), - nullable=False) - processing_operation = sa.Column(sa.String(70)) - lock_updated = sa.Column(sa.TIMESTAMP, nullable=False, - server_default=sa.func.now(), - onupdate=sa.func.now()) |