Hello community,

here is the log from the commit of package python-ovsdbapp for openSUSE:Factory 
checked in at 2020-06-05 20:15:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ovsdbapp (Old)
 and      /work/SRC/openSUSE:Factory/.python-ovsdbapp.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-ovsdbapp"

Fri Jun  5 20:15:53 2020 rev:6 rq:803606 version:1.1.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ovsdbapp/python-ovsdbapp.changes  
2020-03-12 23:12:32.383329454 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-ovsdbapp.new.3606/python-ovsdbapp.changes    
    2020-06-05 20:19:53.803801712 +0200
@@ -1,0 +2,26 @@
+Tue May 12 10:03:38 UTC 2020 - [email protected]
+
+- update to version 1.1.0
+  - Log invalid address values in lsp_set_addresses
+  - Make it possible to reference a newly created object within a transaction
+  - Help with troubleshooting failures from venv.py
+  - Handle unset OVN_SRCDIR
+  - Change EAFP to LBYL style in nested transaction
+  - Drop python 2 support and testing
+  - Update master for stable/train
+  - Do not try to execute transaction if command list is empty
+  - ovn_northbound: make all list commands ReadOnlyCommand
+  - Handle the ovs/ovn split
+  - More robustly handle venv ovs/ovn paths
+  - PDF documentation build
+  - Add consts for OVN install path
+  - Fix the url, change http to https
+  - Make ovndir configurable
+  - Default testenv to basepython = python3
+  - Switch to Ussuri jobs
+  - Update Zuul jobs: Enable docs publishing
+  - Fix debug_venv for ovn split
+  - Call row.verify() when updating map columns with db_set
+  - Fix building OVS after python2 removal
+
+-------------------------------------------------------------------

Old:
----
  ovsdbapp-0.17.0.tar.gz

New:
----
  ovsdbapp-1.1.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-ovsdbapp.spec ++++++
--- /var/tmp/diff_new_pack.TWz8uI/_old  2020-06-05 20:19:54.623804501 +0200
+++ /var/tmp/diff_new_pack.TWz8uI/_new  2020-06-05 20:19:54.623804501 +0200
@@ -18,13 +18,13 @@
 
 %define with_tests 1
 Name:           python-ovsdbapp
-Version:        0.17.0
+Version:        1.1.0
 Release:        0
 Summary:        A library for creating OVSDB applications
 License:        Apache-2.0
 Group:          Development/Languages/Python
 URL:            https://launchpad.net/ovsdbapp
-Source0:        
https://files.pythonhosted.org/packages/source/o/ovsdbapp/ovsdbapp-0.17.0.tar.gz
+Source0:        
https://files.pythonhosted.org/packages/source/o/ovsdbapp/ovsdbapp-1.1.0.tar.gz
 BuildRequires:  openstack-macros
 BuildRequires:  python3-fixtures >= 3.0.0
 BuildRequires:  python3-netaddr >= 0.7.18
@@ -72,7 +72,7 @@
 %{py3_build}
 
 # generate html docs
-PBR_VERSION=0.17.0 PYTHONPATH=. \
+PBR_VERSION=1.1.0 PYTHONPATH=. \
     %sphinx_build -b html doc/source doc/build/html
 rm -rf doc/build/html/.{doctrees,buildinfo}
 

++++++ _service ++++++
--- /var/tmp/diff_new_pack.TWz8uI/_old  2020-06-05 20:19:54.647804583 +0200
+++ /var/tmp/diff_new_pack.TWz8uI/_new  2020-06-05 20:19:54.647804583 +0200
@@ -1,8 +1,8 @@
 <services>
   <service mode="disabled" name="renderspec">
-    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/train/openstack/ovsdbapp/ovsdbapp.spec.j2</param>
+    <param 
name="input-template">https://opendev.org/openstack/rpm-packaging/raw/branch/stable/ussuri/openstack/ovsdbapp/ovsdbapp.spec.j2</param>
     <param name="output-name">python-ovsdbapp.spec</param>
-    <param 
name="requirements">https://raw.githubusercontent.com/openstack/ovsdbapp/stable/train/requirements.txt</param>
+    <param 
name="requirements">https://opendev.org/openstack/ovsdbapp/raw/branch/stable/ussuri/requirements.txt</param>
     <param name="changelog-email">[email protected]</param>
     <param name="changelog-provider">gh,openstack,ovsdbapp</param>
   </service>

++++++ ovsdbapp-0.17.0.tar.gz -> ovsdbapp-1.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/AUTHORS new/ovsdbapp-1.1.0/AUTHORS
--- old/ovsdbapp-0.17.0/AUTHORS 2019-08-29 11:53:59.000000000 +0200
+++ new/ovsdbapp-1.1.0/AUTHORS  2020-04-02 19:56:42.000000000 +0200
@@ -7,6 +7,7 @@
 Andreas Jaeger <[email protected]>
 Aradhana Singh <[email protected]>
 Arundhati Surpur <[email protected]>
+Bernard Cafarelli <[email protected]>
 Bhagyashri Shewale <[email protected]>
 Bo Wang <[email protected]>
 Boden R <[email protected]>
@@ -19,6 +20,7 @@
 Doug Hellmann <[email protected]>
 Doug Wiegley <[email protected]>
 Emma Foley <[email protected]>
+Flavio Fernandes <[email protected]>
 Frank Wang <[email protected]>
 Gal Sagie <[email protected]>
 Gary Kotton <[email protected]>
@@ -34,6 +36,7 @@
 Kevin Benton <[email protected]>
 Lucas Alvares Gomes <[email protected]>
 Luong Anh Tuan <[email protected]>
+Maciej Józefczyk <[email protected]>
 Marcin Mirecki <[email protected]>
 Martin Hickey <[email protected]>
 Miguel Duarte Barroso <[email protected]>
@@ -61,8 +64,10 @@
 ljhuang <[email protected]>
 lzklibj <[email protected]>
 melissaml <[email protected]>
+pengyuesheng <[email protected]>
 qingszhao <[email protected]>
 reedip <[email protected]>
 rossella <[email protected]>
 yan.haifeng <[email protected]>
 zhangzs <[email protected]>
+zhouguowei <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/CONTRIBUTING.rst 
new/ovsdbapp-1.1.0/CONTRIBUTING.rst
--- old/ovsdbapp-0.17.0/CONTRIBUTING.rst        2019-08-29 11:53:03.000000000 
+0200
+++ new/ovsdbapp-1.1.0/CONTRIBUTING.rst 2020-04-02 19:55:17.000000000 +0200
@@ -1,17 +1,17 @@
 If you would like to contribute to the development of OpenStack, you must
 follow the steps in this page:
 
-   https://docs.openstack.org/infra/manual/developers.html
+  https://docs.openstack.org/infra/manual/developers.html
 
 If you already have a good understanding of how the system works and your
 OpenStack accounts are set up, you can skip to the development workflow
 section of this documentation to learn how changes to OpenStack should be
 submitted for review via the Gerrit tool:
 
-   https://docs.openstack.org/infra/manual/developers.html#development-workflow
+  https://docs.openstack.org/infra/manual/developers.html#development-workflow
 
 Pull requests submitted through GitHub will be ignored.
 
 Bugs should be filed on Launchpad, not GitHub:
 
-   https://bugs.launchpad.net/ovsdbapp
+  https://bugs.launchpad.net/ovsdbapp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/ChangeLog 
new/ovsdbapp-1.1.0/ChangeLog
--- old/ovsdbapp-0.17.0/ChangeLog       2019-08-29 11:53:59.000000000 +0200
+++ new/ovsdbapp-1.1.0/ChangeLog        2020-04-02 19:56:42.000000000 +0200
@@ -1,10 +1,43 @@
 CHANGES
 =======
 
+1.1.0
+-----
+
+* Call row.verify() when updating map columns with db\_set
+* Do not try to execute transaction if command list is empty
+
+1.0.0
+-----
+
+* More robustly handle venv ovs/ovn paths
+* Log invalid address values in lsp\_set\_addresses
+* Make it possible to reference a newly created object within a transaction
+* Make ovndir configurable
+* Drop python 2 support and testing
+* Fix debug\_venv for ovn split
+* Add consts for OVN install path
+* Switch to Ussuri jobs
+* ovn\_northbound: make all list commands ReadOnlyCommand
+
+0.18.0
+------
+
+* Handle unset OVN\_SRCDIR
+* Default testenv to basepython = python3
+* Fix building OVS after python2 removal
+* Change EAFP to LBYL style in nested transaction
+* Handle the ovs/ovn split
+* Update master for stable/train
+* Help with troubleshooting failures from venv.py
+* PDF documentation build
+* Update Zuul jobs: Enable docs publishing
+
 0.17.0
 ------
 
 * Add HA Chassis Group related commands
+* Fix the url, change http to https
 * Add commands to set and get LRP options
 * Add Python 3 Train unit tests
 * Sync Sphinx requirement
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/PKG-INFO new/ovsdbapp-1.1.0/PKG-INFO
--- old/ovsdbapp-0.17.0/PKG-INFO        2019-08-29 11:53:59.000000000 +0200
+++ new/ovsdbapp-1.1.0/PKG-INFO 2020-04-02 19:56:42.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
 Name: ovsdbapp
-Version: 0.17.0
+Version: 1.1.0
 Summary: A library for creating OVSDB applications
 Home-page: https://pypi.org/project/ovsdbapp/
 Author: OpenStack
@@ -18,10 +18,9 @@
         
         * Free software: Apache license
         * Source: https://opendev.org/openstack/ovsdbapp/
-        * Bugs: http://bugs.launchpad.net/ovsdbapp
+        * Bugs: https://bugs.launchpad.net/ovsdbapp
         
-        Features
-        --------
+        Features:
         
         * An thread-based event loop for using ovs.db.Idl
         * Transaction support
@@ -35,8 +34,7 @@
 Classifier: License :: OSI Approved :: Apache Software License
 Classifier: Operating System :: POSIX :: Linux
 Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
+Requires-Python: >=3.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/README.rst 
new/ovsdbapp-1.1.0/README.rst
--- old/ovsdbapp-0.17.0/README.rst      2019-08-29 11:53:03.000000000 +0200
+++ new/ovsdbapp-1.1.0/README.rst       2020-04-02 19:55:17.000000000 +0200
@@ -10,10 +10,9 @@
 
 * Free software: Apache license
 * Source: https://opendev.org/openstack/ovsdbapp/
-* Bugs: http://bugs.launchpad.net/ovsdbapp
+* Bugs: https://bugs.launchpad.net/ovsdbapp
 
-Features
---------
+Features:
 
 * An thread-based event loop for using ovs.db.Idl
 * Transaction support
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/doc/requirements.txt 
new/ovsdbapp-1.1.0/doc/requirements.txt
--- old/ovsdbapp-0.17.0/doc/requirements.txt    1970-01-01 01:00:00.000000000 
+0100
+++ new/ovsdbapp-1.1.0/doc/requirements.txt     2020-04-02 19:55:17.000000000 
+0200
@@ -0,0 +1,6 @@
+sphinx!=1.6.6,!=1.6.7,>=1.6.2,<2.0.0;python_version=='2.7'  # BSD
+sphinx!=1.6.6,!=1.6.7,>=1.6.2;python_version>='3.4'  # BSD
+openstackdocstheme>=1.20.0 # Apache-2.0
+
+# releasenotes
+reno>=2.5.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/doc/source/conf.py 
new/ovsdbapp-1.1.0/doc/source/conf.py
--- old/ovsdbapp-0.17.0/doc/source/conf.py      2019-08-29 11:53:03.000000000 
+0200
+++ new/ovsdbapp-1.1.0/doc/source/conf.py       2020-04-02 19:55:17.000000000 
+0200
@@ -63,8 +63,6 @@
 # html_static_path = ['static']
 html_theme = 'openstackdocs'
 
-html_last_updated_fmt = '%Y-%m-%d %H:%M'
-
 # Output file base name for HTML help builder.
 htmlhelp_basename = '%sdoc' % project
 
@@ -73,9 +71,9 @@
 # [howto/manual]).
 latex_documents = [
     ('index',
-     '%s.tex' % project,
+     'doc-ovsdbapp.tex',
      u'%s Documentation' % project,
-     u'OpenStack Foundation', 'manual'),
+     u'OpenStack Foundation', 'howto'),
 ]
 
 # Example configuration for intersphinx: refer to the Python standard library.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/doc/source/index.rst 
new/ovsdbapp-1.1.0/doc/source/index.rst
--- old/ovsdbapp-0.17.0/doc/source/index.rst    2019-08-29 11:53:03.000000000 
+0200
+++ new/ovsdbapp-1.1.0/doc/source/index.rst     2020-04-02 19:55:17.000000000 
+0200
@@ -1,14 +1,8 @@
-.. ovsdbapp documentation master file, created by
-   sphinx-quickstart on Tue Jul  9 22:26:36 2013.
-   You can adapt this file completely to your liking, but it should at least
-   contain the root `toctree` directive.
-
 .. the main title comes from README.rst
 
 .. include:: ../../README.rst
 
-Contents
---------
+----
 
 .. toctree::
    :maxdepth: 2
@@ -17,10 +11,10 @@
    user/index
    contributor/index
 
-Indices and tables
-------------------
+.. only:: html
 
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
+   .. rubric:: Indices and tables
 
+   * :ref:`genindex`
+   * :ref:`modindex`
+   * :ref:`search`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/ovsdbapp/api.py 
new/ovsdbapp-1.1.0/ovsdbapp/api.py
--- old/ovsdbapp-0.17.0/ovsdbapp/api.py 2019-08-29 11:53:03.000000000 +0200
+++ new/ovsdbapp-1.1.0/ovsdbapp/api.py  2020-04-02 19:55:17.000000000 +0200
@@ -107,9 +107,9 @@
         nested = nested and self._nested_txns
         cur_thread_id = thread.get_ident() if nested else object()
 
-        try:
+        if cur_thread_id in self._nested_txns_map:
             yield self._nested_txns_map[cur_thread_id]
-        except KeyError:
+        else:
             with self.create_transaction(
                     check_error, log_errors, **kwargs) as txn:
                 self._nested_txns_map[cur_thread_id] = txn
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/ovsdbapp/backend/ovs_idl/__init__.py 
new/ovsdbapp-1.1.0/ovsdbapp/backend/ovs_idl/__init__.py
--- old/ovsdbapp-0.17.0/ovsdbapp/backend/ovs_idl/__init__.py    2019-08-29 
11:53:03.000000000 +0200
+++ new/ovsdbapp-1.1.0/ovsdbapp/backend/ovs_idl/__init__.py     2020-04-02 
19:55:17.000000000 +0200
@@ -114,6 +114,10 @@
         if record == "":
             raise TypeError("Cannot look up record by empty string")
 
+        # Handle commands by simply returning its result
+        if isinstance(record, cmd.BaseCommand):
+            return record.result
+
         t = self.tables[table]
         try:
             if isinstance(record, uuid.UUID):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/ovsdbapp/backend/ovs_idl/command.py 
new/ovsdbapp-1.1.0/ovsdbapp/backend/ovs_idl/command.py
--- old/ovsdbapp-0.17.0/ovsdbapp/backend/ovs_idl/command.py     2019-08-29 
11:53:03.000000000 +0200
+++ new/ovsdbapp-1.1.0/ovsdbapp/backend/ovs_idl/command.py      2020-04-02 
19:55:17.000000000 +0200
@@ -123,17 +123,25 @@
     def run_idl(self, txn):
         record = self.api.lookup(self.table, self.record)
         for col, val in self.col_values:
-            # TODO(twilson) Ugh, the OVS library doesn't like OrderedDict
-            # We're only using it to make a unit test work, so we should fix
-            # this soon.
-            if isinstance(val, collections.OrderedDict):
-                val = dict(val)
-            if isinstance(val, dict):
-                # NOTE(twilson) OVS 2.6's Python IDL has mutate methods that
-                # would make this cleaner, but it's too early to rely on them.
+            if isinstance(val, collections.Mapping):
+                # TODO(twilson) This is to make a unit/functional test that
+                # used OrderedDict work. In Python 3.7, insertion order is
+                # guaranteed to not change, but I need to verify this is is
+                # still even needed
+                if isinstance(val, collections.OrderedDict):
+                    val = dict(val)
                 existing = getattr(record, col, {})
                 existing.update(val)
                 val = existing
+                # Since we are updating certain keys and leaving existing keys
+                # but rewriting the whole external_ids column, we must verify()
+                record.verify(col)
+                # After https://patchwork.ozlabs.org/patch/1254735/ is merged,
+                # and common, we should handle dicts with setkey like this:
+                # for k, v in val.items():
+                #     record.setkey(col, k, v)
+            # For non-map columns, we unconditionally overwrite the values that
+            # exist, so prior state doesn't matter and we don't need verify()
             self.set_column(record, col, val)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ovsdbapp-0.17.0/ovsdbapp/backend/ovs_idl/transaction.py 
new/ovsdbapp-1.1.0/ovsdbapp/backend/ovs_idl/transaction.py
--- old/ovsdbapp-0.17.0/ovsdbapp/backend/ovs_idl/transaction.py 2019-08-29 
11:53:03.000000000 +0200
+++ new/ovsdbapp-1.1.0/ovsdbapp/backend/ovs_idl/transaction.py  2020-04-02 
19:55:17.000000000 +0200
@@ -72,6 +72,9 @@
     def do_commit(self):
         self.start_time = time.time()
         attempts = 0
+        if not self.commands:
+            LOG.debug("There are no commands to commit")
+            return []
         while True:
             if attempts > 0 and self.timeout_exceeded():
                 raise RuntimeError("OVS transaction timed out")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/ovsdbapp/constants.py 
new/ovsdbapp-1.1.0/ovsdbapp/constants.py
--- old/ovsdbapp-0.17.0/ovsdbapp/constants.py   2019-08-29 11:53:03.000000000 
+0200
+++ new/ovsdbapp-1.1.0/ovsdbapp/constants.py    2020-04-02 19:55:17.000000000 
+0200
@@ -12,6 +12,7 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+
 DEFAULT_OVSDB_CONNECTION = 'tcp:127.0.0.1:6640'
 DEFAULT_OVNNB_CONNECTION = 'tcp:127.0.0.1:6641'
 DEFAULT_TIMEOUT = 5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ovsdbapp-0.17.0/ovsdbapp/schema/ovn_northbound/commands.py 
new/ovsdbapp-1.1.0/ovsdbapp/schema/ovn_northbound/commands.py
--- old/ovsdbapp-0.17.0/ovsdbapp/schema/ovn_northbound/commands.py      
2019-08-29 11:53:03.000000000 +0200
+++ new/ovsdbapp-1.1.0/ovsdbapp/schema/ovn_northbound/commands.py       
2020-04-02 19:55:17.000000000 +0200
@@ -70,7 +70,7 @@
             raise RuntimeError(msg)
 
 
-class LsListCommand(cmd.BaseCommand):
+class LsListCommand(cmd.ReadOnlyCommand):
     def run_idl(self, txn):
         table = self.api.tables['Logical_Switch']
         self.result = [rowview.RowView(r) for r in table.rows.values()]
@@ -190,7 +190,7 @@
     lookup_table = 'Port_Group'
 
 
-class _AclListHelper(cmd.BaseCommand):
+class _AclListHelper(cmd.ReadOnlyCommand):
     def __init__(self, api, entity):
         super(_AclListHelper, self).__init__(api)
         self.entity = entity
@@ -294,7 +294,7 @@
                 row.delete()
 
 
-class QoSListCommand(cmd.BaseCommand):
+class QoSListCommand(cmd.ReadOnlyCommand):
     def __init__(self, api, switch):
         super(QoSListCommand, self).__init__(api)
         self.switch = switch
@@ -398,7 +398,7 @@
             if_exists)
 
 
-class LspListCommand(cmd.BaseCommand):
+class LspListCommand(cmd.ReadOnlyCommand):
     def __init__(self, api, switch=None):
         super(LspListCommand, self).__init__(api)
         self.switch = switch
@@ -443,8 +443,8 @@
         for addr in addresses:
             if not self.addr_re.match(addr):
                 raise TypeError(
-                    "address must be router/unknown/dynamic/"
-                    "ethaddr[ ipaddr...]")
+                    "address (%s) must be router/unknown/dynamic/"
+                    "ethaddr[ ipaddr...]" % (addr,))
         super(LspSetAddressesCommand, self).__init__(api)
         self.port = port
         self.addresses = addresses
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/ovsdbapp/tests/functional/base.py 
new/ovsdbapp-1.1.0/ovsdbapp/tests/functional/base.py
--- old/ovsdbapp-0.17.0/ovsdbapp/tests/functional/base.py       2019-08-29 
11:53:03.000000000 +0200
+++ new/ovsdbapp-1.1.0/ovsdbapp/tests/functional/base.py        2020-04-02 
19:55:17.000000000 +0200
@@ -24,6 +24,7 @@
     _connections = None
     ovsvenv = venv.OvsOvnVenvFixture(tempfile.mkdtemp(),
                                      ovsdir=os.getenv('OVS_SRCDIR'),
+                                     ovndir=os.getenv('OVN_SRCDIR'),
                                      remove=not bool(os.getenv('KEEP_VENV')))
     atexit.register(ovsvenv.cleanUp)
     ovsvenv.setUp()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ovsdbapp-0.17.0/ovsdbapp/tests/functional/schema/ovn_northbound/test_impl_idl.py
 
new/ovsdbapp-1.1.0/ovsdbapp/tests/functional/schema/ovn_northbound/test_impl_idl.py
--- 
old/ovsdbapp-0.17.0/ovsdbapp/tests/functional/schema/ovn_northbound/test_impl_idl.py
        2019-08-29 11:53:03.000000000 +0200
+++ 
new/ovsdbapp-1.1.0/ovsdbapp/tests/functional/schema/ovn_northbound/test_impl_idl.py
 2020-04-02 19:55:17.000000000 +0200
@@ -489,7 +489,7 @@
     def test_lsp_set_addresses_invalid(self):
         self.assertRaises(
             TypeError,
-            self.api.lsp_set_addresses, 'fake', 'invalidaddress')
+            self.api.lsp_set_addresses, 'fake', ['invalidaddress'])
 
     def test_lsp_get_addresses(self):
         addresses = [
@@ -1546,3 +1546,44 @@
         hcg1 = cmd.execute(check_error=True)
         hcg2 = cmd.execute(check_error=True)
         self.assertEqual(hcg1, hcg2)
+
+
+class TestReferencedObjects(OvnNorthboundTest):
+    """Exercise adding a ls, lsp and lsp_address in a single transaction.
+
+    The main goal of this test is to make sure a transaction can use either
+    a name or an object notation in order to create an ls+lsp while in a
+    transaction context.
+    """
+    def setUp(self):
+        super(TestReferencedObjects, self).setUp()
+        self.ls_name = utils.get_rand_device_name()
+        self.lsp_name = utils.get_rand_device_name()
+        self.lsp_test_addresses = ['de:ad:be:ef:4d:ad 192.0.2.1']
+
+    def _check_values(self):
+        # Check: Make sure ls_get and lsp_get work (no RowNotFound exception)
+        self.api.ls_get(self.ls_name).execute(check_error=True)
+        self.api.lsp_get(self.lsp_name).execute(check_error=True)
+        self.assertEqual(self.lsp_test_addresses,
+                         self.api.lsp_get_addresses(self.lsp_name).execute(
+                             check_error=True))
+
+    def test_lsp_add_by_name(self):
+        with self.api.transaction(check_error=True) as txn:
+            txn.add(self.api.ls_add(self.ls_name))
+            txn.add(self.api.lsp_add(self.ls_name, self.lsp_name))
+            txn.add(self.api.lsp_set_addresses(self.lsp_name,
+                                               self.lsp_test_addresses))
+        self._check_values()
+
+    def test_lsp_add_by_object_via_db_create(self):
+        with self.api.transaction(check_error=True) as txn:
+            sw = txn.add(self.api.db_create_row('Logical_Switch',
+                                                name=self.ls_name))
+            prt = txn.add(self.api.db_create_row('Logical_Switch_Port',
+                                                 name=self.lsp_name))
+            txn.add(self.api.db_add('Logical_Switch', sw, "ports", prt))
+            txn.add(self.api.db_add('Logical_Switch_Port', prt,
+                                    "addresses", self.lsp_test_addresses[0]))
+        self._check_values()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/ovsdbapp/venv.py 
new/ovsdbapp-1.1.0/ovsdbapp/venv.py
--- old/ovsdbapp-0.17.0/ovsdbapp/venv.py        2019-08-29 11:53:03.000000000 
+0200
+++ new/ovsdbapp-1.1.0/ovsdbapp/venv.py 2020-04-02 19:55:17.000000000 +0200
@@ -28,8 +28,12 @@
 
 class OvsVenvFixture(fixtures.Fixture):
     PATH_VAR_TEMPLATE = "{0}/ovsdb:{0}/vswitchd:{0}/utilities"
+    OVS_PATHS = (
+        os.path.join(os.path.sep, 'usr', 'local', 'share', 'openvswitch'),
+        os.path.join(os.path.sep, 'usr', 'share', 'openvswitch'))
 
-    def __init__(self, venv, ovsdir, dummy=DUMMY_OVERRIDE_ALL, remove=False):
+    def __init__(self, venv, ovsdir=None, dummy=DUMMY_OVERRIDE_ALL,
+                 remove=False):
         """Initialize fixture
 
         :param venv: Path to venv directory.
@@ -42,21 +46,34 @@
         self.venv = venv
         self.env = {'OVS_RUNDIR': self.venv, 'OVS_LOGDIR': self.venv,
                     'OVS_DBDIR': self.venv, 'OVS_SYSCONFDIR': self.venv}
-        if ovsdir:
-            self.ovsdir = ovsdir
-            self.env['PATH'] = (self.PATH_VAR_TEMPLATE.format(self.ovsdir) +
+        if ovsdir and os.path.isdir(ovsdir):
+            # From source directory
+            self.env['PATH'] = (self.PATH_VAR_TEMPLATE.format(ovsdir) +
                                 ":%s" % os.getenv('PATH'))
         else:
+            # Use installed OVS
             self.env['PATH'] = os.getenv('PATH')
-            self.ovsdir = os.path.join('/usr', 'local', 'share', 'openvswitch')
-            if not os.path.isdir(self.ovsdir):
-                self.ovsdir = os.path.join('/usr', 'share', 'openvswitch')
-        if not os.path.isdir(self.ovsdir):
-            raise Exception("%s is not a directory" % self.ovsdir)
+
+        self.ovsdir = self._share_path(self.OVS_PATHS, ovsdir)
         self._dummy = dummy
         self.remove = remove
         self.ovsdb_server_dbs = []
 
+    @staticmethod
+    def _share_path(paths, override=None, files=tuple()):
+        if not override:
+            try:
+                return next(
+                    p for p in paths if os.path.isdir(p) and
+                    all(os.path.isfile(os.path.join(p, f)) for f in files))
+            except StopIteration:
+                pass
+        elif os.path.isdir(override):
+            return override
+
+        raise Exception("Invalid directories: %s" %
+                        ", ".join(paths + (str(override),)))
+
     @property
     def ovs_schema(self):
         path = os.path.join(self.ovsdir, 'vswitchd', 'vswitch.ovsschema')
@@ -113,7 +130,8 @@
     def call(self, cmd, *args, **kwargs):
         cwd = kwargs.pop('cwd', self.venv)
         return subprocess.check_call(
-            cmd, *args, env=self.env, cwd=cwd, **kwargs)
+            cmd, *args, env=self.env, stderr=subprocess.STDOUT,
+            cwd=cwd, **kwargs)
 
     def get_pids(self):
         files = glob.glob(os.path.join(self.venv, "*.pid"))
@@ -129,26 +147,31 @@
 
 
 class OvsOvnVenvFixture(OvsVenvFixture):
-    PATH_VAR_TEMPLATE = OvsVenvFixture.PATH_VAR_TEMPLATE + (
-        ":{0}/ovn/controller:{0}/ovn/northd:{0}/ovn/utilities")
-
-    def __init__(self, *args, **kwargs):
-        self.add_chassis = kwargs.pop('add_chassis', False)
-        super(OvsOvnVenvFixture, self).__init__(*args, **kwargs)
+    OVN_PATHS = (
+        os.path.join(os.path.sep, 'usr', 'local', 'share', 'ovn'),
+        os.path.join(os.path.sep, 'usr', 'share', 'ovn')) + (
+            OvsVenvFixture.OVS_PATHS)
+    NBSCHEMA = 'ovn-nb.ovsschema'
+    SBSCHEMA = 'ovn-sb.ovsschema'
+
+    def __init__(self, venv, ovndir=None, add_chassis=False, **kwargs):
+        self.add_chassis = add_chassis
+        if ovndir and os.path.isdir(ovndir):
+            # Use OVN source dir
+            self.PATH_VAR_TEMPLATE += (
+                ":{0}/controller:{0}/northd:{0}/utilities".format(ovndir))
+        super(OvsOvnVenvFixture, self).__init__(venv, **kwargs)
+        self.ovndir = self._share_path(self.OVN_PATHS, ovndir,
+                                       [self.SBSCHEMA, self.NBSCHEMA])
+        self.env.update({'OVN_RUNDIR': self.venv})
 
     @property
     def ovnsb_schema(self):
-        path = os.path.join(self.ovsdir, 'ovn', 'ovn-sb.ovsschema')
-        if os.path.isfile(path):
-            return path
-        return os.path.join(self.ovsdir, 'ovn-sb.ovsschema')
+        return os.path.join(self.ovndir, self.SBSCHEMA)
 
     @property
     def ovnnb_schema(self):
-        path = os.path.join(self.ovsdir, 'ovn', 'ovn-nb.ovsschema')
-        if os.path.isfile(path):
-            return path
-        return os.path.join(self.ovsdir, 'ovn-nb.ovsschema')
+        return os.path.join(self.ovndir, self.NBSCHEMA)
 
     @property
     def ovnnb_connection(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/ovsdbapp.egg-info/PKG-INFO 
new/ovsdbapp-1.1.0/ovsdbapp.egg-info/PKG-INFO
--- old/ovsdbapp-0.17.0/ovsdbapp.egg-info/PKG-INFO      2019-08-29 
11:53:59.000000000 +0200
+++ new/ovsdbapp-1.1.0/ovsdbapp.egg-info/PKG-INFO       2020-04-02 
19:56:42.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
 Name: ovsdbapp
-Version: 0.17.0
+Version: 1.1.0
 Summary: A library for creating OVSDB applications
 Home-page: https://pypi.org/project/ovsdbapp/
 Author: OpenStack
@@ -18,10 +18,9 @@
         
         * Free software: Apache license
         * Source: https://opendev.org/openstack/ovsdbapp/
-        * Bugs: http://bugs.launchpad.net/ovsdbapp
+        * Bugs: https://bugs.launchpad.net/ovsdbapp
         
-        Features
-        --------
+        Features:
         
         * An thread-based event loop for using ovs.db.Idl
         * Transaction support
@@ -35,8 +34,7 @@
 Classifier: License :: OSI Approved :: Apache Software License
 Classifier: Operating System :: POSIX :: Linux
 Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
+Requires-Python: >=3.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/ovsdbapp.egg-info/SOURCES.txt 
new/ovsdbapp-1.1.0/ovsdbapp.egg-info/SOURCES.txt
--- old/ovsdbapp-0.17.0/ovsdbapp.egg-info/SOURCES.txt   2019-08-29 
11:53:59.000000000 +0200
+++ new/ovsdbapp-1.1.0/ovsdbapp.egg-info/SOURCES.txt    2020-04-02 
19:56:42.000000000 +0200
@@ -15,6 +15,7 @@
 setup.py
 test-requirements.txt
 tox.ini
+doc/requirements.txt
 doc/source/conf.py
 doc/source/index.rst
 doc/source/contributor/index.rst
@@ -100,14 +101,15 @@
 ovsdbapp/tests/unit/schema/open_vswitch/test_impl_idl.py
 releasenotes/notes/.placeholder
 releasenotes/notes/configure-ovsdb-manager-a29a148b241a125e.yaml
+releasenotes/notes/drop-py27-support-c426980520444bfa.yaml
 releasenotes/source/conf.py
 releasenotes/source/index.rst
 releasenotes/source/pike.rst
 releasenotes/source/queens.rst
 releasenotes/source/rocky.rst
 releasenotes/source/stein.rst
+releasenotes/source/train.rst
 releasenotes/source/unreleased.rst
-releasenotes/source/_static/.placeholder
 releasenotes/source/_templates/.placeholder
 tools/coding-checks.sh
 tools/debug_venv
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/ovsdbapp.egg-info/pbr.json 
new/ovsdbapp-1.1.0/ovsdbapp.egg-info/pbr.json
--- old/ovsdbapp-0.17.0/ovsdbapp.egg-info/pbr.json      2019-08-29 
11:53:59.000000000 +0200
+++ new/ovsdbapp-1.1.0/ovsdbapp.egg-info/pbr.json       2020-04-02 
19:56:42.000000000 +0200
@@ -1 +1 @@
-{"git_version": "74b52bb", "is_release": true}
\ No newline at end of file
+{"git_version": "85d6323", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ovsdbapp-0.17.0/releasenotes/notes/drop-py27-support-c426980520444bfa.yaml 
new/ovsdbapp-1.1.0/releasenotes/notes/drop-py27-support-c426980520444bfa.yaml
--- 
old/ovsdbapp-0.17.0/releasenotes/notes/drop-py27-support-c426980520444bfa.yaml  
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/ovsdbapp-1.1.0/releasenotes/notes/drop-py27-support-c426980520444bfa.yaml   
    2020-04-02 19:55:17.000000000 +0200
@@ -0,0 +1,6 @@
+---
+upgrade:
+  - |
+    Python 2.7 support has been dropped. Last release of ovsdbapp to support
+    python 2.7 is OpenStack Train. The minimum version of Python now supported
+    by ovsdbapp is Python 3.6.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/releasenotes/source/conf.py 
new/ovsdbapp-1.1.0/releasenotes/source/conf.py
--- old/ovsdbapp-0.17.0/releasenotes/source/conf.py     2019-08-29 
11:53:03.000000000 +0200
+++ new/ovsdbapp-1.1.0/releasenotes/source/conf.py      2020-04-02 
19:55:17.000000000 +0200
@@ -12,9 +12,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Glance Release Notes documentation build configuration file, created by
-# sphinx-quickstart on Tue Nov  3 17:40:50 2015.
-#
 # This file is execfile()d with the current directory set to its
 # containing dir.
 #
@@ -145,7 +142,7 @@
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
+# html_static_path = ['_static']
 
 # Add any extra paths that contain custom files (such as robots.txt or
 # .htaccess) here, relative to this directory. These files are copied
@@ -154,7 +151,7 @@
 
 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
 # using the given strftime format.
-html_last_updated_fmt = '%Y-%m-%d %H:%M'
+# html_last_updated_fmt = '%Y-%m-%d %H:%M'
 
 # If true, SmartyPants will be used to convert quotes and dashes to
 # typographically correct entities.
@@ -194,7 +191,7 @@
 # html_file_suffix = None
 
 # Output file base name for HTML help builder.
-htmlhelp_basename = 'GlanceReleaseNotesdoc'
+htmlhelp_basename = 'ovsdbappReleaseNotesdoc'
 
 
 # -- Options for LaTeX output ---------------------------------------------
@@ -214,8 +211,8 @@
 # (source start file, target name, title,
 #  author, documentclass [howto, manual, or own class]).
 latex_documents = [
-    ('index', 'GlanceReleaseNotes.tex', u'Glance Release Notes Documentation',
-     u'Glance Developers', 'manual'),
+    ('index', 'ovsdbappNotes.tex', u'ovsdbapp Release Notes Documentation',
+     u'ovsdbapp Developers', 'manual'),
 ]
 
 # The name of an image file (relative to this directory) to place at the top of
@@ -239,42 +236,5 @@
 # latex_domain_indices = True
 
 
-# -- Options for manual page output ---------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [
-    ('index', 'glancereleasenotes', u'Glance Release Notes Documentation',
-     [u'Glance Developers'], 1)
-]
-
-# If true, show URL addresses after external links.
-# man_show_urls = False
-
-
-# -- Options for Texinfo output -------------------------------------------
-
-# Grouping the document tree into Texinfo files. List of tuples
-# (source start file, target name, title, author,
-#  dir menu entry, description, category)
-texinfo_documents = [
-    ('index', 'GlanceReleaseNotes', u'Glance Release Notes Documentation',
-     u'Glance Developers', 'GlanceReleaseNotes',
-     'One line description of project.',
-     'Miscellaneous'),
-]
-
-# Documents to append as an appendix to all manuals.
-# texinfo_appendices = []
-
-# If false, no module index is generated.
-# texinfo_domain_indices = True
-
-# How to display URL addresses: 'footnote', 'no', or 'inline'.
-# texinfo_show_urls = 'footnote'
-
-# If true, do not generate a @detailmenu in the "Top" node's menu.
-# texinfo_no_detailmenu = False
-
 # -- Options for Internationalization output ------------------------------
 locale_dirs = ['locale/']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/releasenotes/source/index.rst 
new/ovsdbapp-1.1.0/releasenotes/source/index.rst
--- old/ovsdbapp-0.17.0/releasenotes/source/index.rst   2019-08-29 
11:53:03.000000000 +0200
+++ new/ovsdbapp-1.1.0/releasenotes/source/index.rst    2020-04-02 
19:55:17.000000000 +0200
@@ -6,6 +6,7 @@
    :maxdepth: 1
 
    unreleased
+   train
    stein
    rocky
    queens
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/releasenotes/source/train.rst 
new/ovsdbapp-1.1.0/releasenotes/source/train.rst
--- old/ovsdbapp-0.17.0/releasenotes/source/train.rst   1970-01-01 
01:00:00.000000000 +0100
+++ new/ovsdbapp-1.1.0/releasenotes/source/train.rst    2020-04-02 
19:55:17.000000000 +0200
@@ -0,0 +1,6 @@
+==========================
+Train Series Release Notes
+==========================
+
+.. release-notes::
+   :branch: stable/train
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/setup.cfg 
new/ovsdbapp-1.1.0/setup.cfg
--- old/ovsdbapp-0.17.0/setup.cfg       2019-08-29 11:53:59.000000000 +0200
+++ new/ovsdbapp-1.1.0/setup.cfg        2020-04-02 19:56:42.000000000 +0200
@@ -6,6 +6,7 @@
 author = OpenStack
 author-email = [email protected]
 home-page = https://pypi.org/project/ovsdbapp/
+python-requires = >=3.6
 classifier = 
        Environment :: OpenStack
        Intended Audience :: Information Technology
@@ -13,8 +14,6 @@
        License :: OSI Approved :: Apache Software License
        Operating System :: POSIX :: Linux
        Programming Language :: Python
-       Programming Language :: Python :: 2
-       Programming Language :: Python :: 2.7
        Programming Language :: Python :: 3
        Programming Language :: Python :: 3.6
        Programming Language :: Python :: 3.7
@@ -23,15 +22,6 @@
 packages = 
        ovsdbapp
 
-[build_sphinx]
-source-dir = doc/source
-build-dir = doc/build
-all_files = 1
-warning-is-error = 1
-
-[upload_sphinx]
-upload-dir = doc/build/html
-
 [compile_catalog]
 directory = ovsdbapp/locale
 domain = ovsdbapp
@@ -46,11 +36,6 @@
 mapping_file = babel.cfg
 output_file = ovsdbapp/locale/ovsdbapp.pot
 
-[build_releasenotes]
-all_files = 1
-build-dir = releasenotes/build
-source-dir = releasenotes/source
-
 [egg_info]
 tag_build = 
 tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/test-requirements.txt 
new/ovsdbapp-1.1.0/test-requirements.txt
--- old/ovsdbapp-0.17.0/test-requirements.txt   2019-08-29 11:53:03.000000000 
+0200
+++ new/ovsdbapp-1.1.0/test-requirements.txt    2020-04-02 19:55:17.000000000 
+0200
@@ -6,15 +6,9 @@
 
 coverage!=4.4,>=4.0 # Apache-2.0
 python-subunit>=1.0.0 # Apache-2.0/BSD
-sphinx!=1.6.6,!=1.6.7,>=1.6.2,<2.0.0;python_version=='2.7'  # BSD
-sphinx!=1.6.6,!=1.6.7,>=1.6.2;python_version>='3.4'  # BSD
-openstackdocstheme>=1.18.1 # Apache-2.0
 oslotest>=3.2.0 # Apache-2.0
 os-testr>=1.0.0 # Apache-2.0
 pylint==1.9.2 # GPLv2
 stestr>=2.0.0 # Apache-2.0
 testscenarios>=0.4 # Apache-2.0/BSD
 testtools>=2.2.0 # MIT
-
-# releasenotes
-reno>=2.5.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/tools/debug_venv 
new/ovsdbapp-1.1.0/tools/debug_venv
--- old/ovsdbapp-0.17.0/tools/debug_venv        2019-08-29 11:53:03.000000000 
+0200
+++ new/ovsdbapp-1.1.0/tools/debug_venv 2020-04-02 19:55:17.000000000 +0200
@@ -60,4 +60,4 @@
     ovsvenv=$(head -1 $test_file)
 fi
 echo "Debugging OVS virtual environment: $ovsvenv$test_match"
-tools/debug_venv.py $ovsvenv $VIRTUAL_ENV/src/ovs
+tools/debug_venv.py $ovsvenv $VIRTUAL_ENV/src/ovs $VIRTUAL_ENV/src/ovn
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/tools/debug_venv.py 
new/ovsdbapp-1.1.0/tools/debug_venv.py
--- old/ovsdbapp-0.17.0/tools/debug_venv.py     2019-08-29 11:53:03.000000000 
+0200
+++ new/ovsdbapp-1.1.0/tools/debug_venv.py      2020-04-02 19:55:17.000000000 
+0200
@@ -22,8 +22,8 @@
 
 from ovsdbapp import venv
 
-if len(sys.argv) != 3:
-    print("Requires two arguments: venvdir ovsdir", file=sys.stderr)
+if len(sys.argv) != 4:
+    print("Requires three arguments: venvdir ovsdir ovndir", file=sys.stderr)
     sys.exit(1)
 
 for d in sys.argv[1:]:
@@ -33,8 +33,9 @@
 
 venvdir = os.path.abspath(sys.argv[1])
 ovsdir = os.path.abspath(sys.argv[2])
+ovndir = os.path.abspath(sys.argv[3])
 
-v = venv.OvsOvnVenvFixture(venvdir, ovsdir)
+v = venv.OvsOvnVenvFixture(venvdir, ovsdir, ovndir=ovndir)
 try:
     atexit.register(v.cleanUp)
     v.setUp()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/tools/setup-ovs.sh 
new/ovsdbapp-1.1.0/tools/setup-ovs.sh
--- old/ovsdbapp-0.17.0/tools/setup-ovs.sh      2019-08-29 11:53:03.000000000 
+0200
+++ new/ovsdbapp-1.1.0/tools/setup-ovs.sh       2020-04-02 19:55:17.000000000 
+0200
@@ -1,11 +1,25 @@
 #!/bin/bash -xe
 
+OVS_BRANCH=${OVS_BRANCH:-master}
+OVN_BRANCH=${OVN_BRANCH:-$OVS_BRANCH}
+
+function use_new_ovn_repository {
+    # If OVN_BRANCH > branch-2.12 return 0
+    return $(! printf "%s\n%s" $OVN_BRANCH branch-2.12 | sort -C -V)
+}
+
 # We require at least OVS 2.7. Testing infrastructure doesn't support it yet,
 # so build it. Eventually, we should run some checks to see what is actually
 # installed and see if we can use it instead.
 if [ "$OVS_SRCDIR" -a ! -d "$OVS_SRCDIR" ]; then
-    echo "Building OVS in $OVS_SRCDIR"
+    echo "Building OVS branch $OVS_BRANCH in $OVS_SRCDIR"
     mkdir -p $OVS_SRCDIR
     git clone git://github.com/openvswitch/ovs.git $OVS_SRCDIR
-    (cd $OVS_SRCDIR && ./boot.sh && PYTHON=/usr/bin/python ./configure && make 
-j$(($(nproc) + 1)))
+    (cd $OVS_SRCDIR && git checkout $OVS_BRANCH && ./boot.sh && 
PYTHON=/usr/bin/python ./configure && make -j$(($(nproc) + 1)))
+fi
+if use_new_ovn_repository && [ "$OVN_SRCDIR" -a ! -d "$OVN_SRCDIR" ]; then
+    echo "Building OVN branch $OVN_BRANCH in $OVN_SRCDIR"
+    mkdir -p $OVN_SRCDIR
+    git clone git://github.com/ovn-org/ovn.git $OVN_SRCDIR
+    (cd $OVN_SRCDIR && git checkout $OVN_BRANCH && ./boot.sh && 
PYTHON=/usr/bin/python ./configure --with-ovs-source=$OVS_SRCDIR && make 
-j$(($(nproc) + 1)))
 fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/tox.ini new/ovsdbapp-1.1.0/tox.ini
--- old/ovsdbapp-0.17.0/tox.ini 2019-08-29 11:53:03.000000000 +0200
+++ new/ovsdbapp-1.1.0/tox.ini  2020-04-02 19:55:17.000000000 +0200
@@ -1,6 +1,6 @@
 [tox]
-minversion = 2.0
-envlist = py27,py37,pypy,pep8
+minversion = 3.1.1
+envlist = py36,py37,pypy,pep8
 skipsdist = True
 
 [testenv]
@@ -17,46 +17,51 @@
 commands = stestr run --slowest {posargs}
 
 [testenv:pep8]
-basepython = python3
 commands = flake8
            {toxinidir}/tools/coding-checks.sh --all '{posargs}'
 
 [testenv:venv]
-basepython = python3
 commands = {posargs}
 
 [testenv:cover]
-basepython = python3
 commands = python setup.py test --coverage --testr-args='{posargs}'
 
 [testenv:docs]
-basepython = python3
-commands = python setup.py build_sphinx
+deps =
+  -r{toxinidir}/doc/requirements.txt
+commands =
+  sphinx-build -W -b html -d doc/build/doctrees doc/source doc/build/html
+
+[testenv:pdf-docs]
+envdir = {toxworkdir}/docs
+deps = {[testenv:docs]deps}
+whitelist_externals =
+  make
+commands =
+  sphinx-build -W -b latex doc/source doc/build/pdf
+  make -C doc/build/pdf
 
 [testenv:releasenotes]
-basepython = python3
+deps =
+  -r{toxinidir}/doc/requirements.txt
 commands =
   sphinx-build -a -E -W -d releasenotes/build/doctrees -b html 
releasenotes/source releasenotes/build/html
 
 [testenv:debug]
-basepython = python3
 commands = oslo_debug_helper {posargs}
 
 [testenv:functional]
 setenv = {[testenv]setenv}
          OS_TEST_PATH=./ovsdbapp/tests/functional
          OVS_SRCDIR={envdir}/src/ovs
+         OVN_SRCDIR={envdir}/src/ovn
+         OVS_BRANCH={env:OVS_BRANCH:}
+         OVN_BRANCH={env:OVN_BRANCH:}
 passenv = KEEP_VENV
 commands =
          {toxinidir}/tools/setup-ovs.sh
          {[testenv]commands}
 
-[testenv:functional-py36]
-basepython = python3.6
-setenv = {[testenv:functional]setenv}
-passenv = {[testenv:functional]passenv}
-commands = {[testenv:functional]commands}
-
 [flake8]
 # E123, E125 skipped as they are invalid PEP-8.
 
@@ -65,7 +70,6 @@
 exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build
 
 [testenv:lower-constraints]
-basepython = python3
 deps =
   -c{toxinidir}/lower-constraints.txt
   -r{toxinidir}/test-requirements.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ovsdbapp-0.17.0/zuul.d/project.yaml 
new/ovsdbapp-1.1.0/zuul.d/project.yaml
--- old/ovsdbapp-0.17.0/zuul.d/project.yaml     2019-08-29 11:53:03.000000000 
+0200
+++ new/ovsdbapp-1.1.0/zuul.d/project.yaml      2020-04-02 19:55:17.000000000 
+0200
@@ -1,17 +1,14 @@
 - project:
     templates:
-      - openstack-python-jobs
-      - openstack-python3-train-jobs
       - check-requirements
+      - openstack-lower-constraints-jobs
+      - openstack-python3-ussuri-jobs
+      - publish-openstack-docs-pti
     check:
       jobs:
-        - openstack-tox-lower-constraints
         - openstack-tox-functional
-        - openstack-tox-functional-py36
         - ovsdbapp-tempest-dsvm-networking-ovn-ovs-release
     gate:
       jobs:
-        - openstack-tox-lower-constraints
         - openstack-tox-functional
-        - openstack-tox-functional-py36
         - ovsdbapp-tempest-dsvm-networking-ovn-ovs-release


Reply via email to