"Fossies" - the Fresh Open Source Software Archive

Member "neutron-14.0.3/neutron/db/migration/connection.py" (22 Oct 2019, 1502 Bytes) of package /linux/misc/openstack/neutron-14.0.3.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Python source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. For more information about "connection.py" see the Fossies "Dox" file reference documentation.

    1 #    Licensed under the Apache License, Version 2.0 (the "License"); you may
    2 #    not use this file except in compliance with the License. You may obtain
    3 #    a copy of the License at
    4 #
    5 #         http://www.apache.org/licenses/LICENSE-2.0
    6 #
    7 #    Unless required by applicable law or agreed to in writing, software
    8 #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
    9 #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
   10 #    License for the specific language governing permissions and limitations
   11 #    under the License.
   12 
   13 from oslo_db.sqlalchemy import session
   14 
   15 
   16 class DBConnection(object):
   17     """Context manager class which handles a DB connection.
   18 
   19        An existing connection can be passed as a parameter. When
   20        nested block is complete the new connection will be closed.
   21        This class is not thread safe.
   22     """
   23 
   24     def __init__(self, connection_url, connection=None):
   25         self.connection = connection
   26         self.connection_url = connection_url
   27         self.new_engine = False
   28 
   29     def __enter__(self):
   30         self.new_engine = self.connection is None
   31         if self.new_engine:
   32             self.engine = session.create_engine(self.connection_url)
   33             self.connection = self.engine.connect()
   34         return self.connection
   35 
   36     def __exit__(self, type, value, traceback):
   37         if self.new_engine:
   38             try:
   39                 self.connection.close()
   40             finally:
   41                 self.engine.dispose()