Hello community,
here is the log from the commit of package python-ovsdbapp for openSUSE:Factory
checked in at 2019-05-03 22:43:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ovsdbapp (Old)
and /work/SRC/openSUSE:Factory/.python-ovsdbapp.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ovsdbapp"
Fri May 3 22:43:06 2019 rev:3 rq:692873 version:0.15.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ovsdbapp/python-ovsdbapp.changes
2019-03-07 10:50:35.897850980 +0100
+++
/work/SRC/openSUSE:Factory/.python-ovsdbapp.new.5148/python-ovsdbapp.changes
2019-05-03 22:43:06.799328217 +0200
@@ -1,0 +2,30 @@
+Mon Apr 8 13:52:13 UTC 2019 - [email protected]
+
+- update to version 0.15.0
+ - Update home-page
+ - Check for oslo library usage
+ - Pass posargs to pylint, not flake8
+ - Fix functional tests timeout race condition
+ - Expand retry behavior to cover other python-ovs methods
+ - update pylint to 1.9.2
+ - import zuul job settings from project-config
+ - NBDB API: Add param if_exists for methods using db_remove()
+ - Change openstack-dev to openstack-discuss
+ - Add Gateway_Chassis support
+ - Update reno for stable/rocky
+ - Attempt to fetch the schema from any remote
+ - Fix a typo in docstring
+ - add python 3.6 unit test job
+ - Add WaitEvent to the API
+ - Ensure timeout on queueing transaction
+ - Remove the oslo-utils dependency
+ - Group tests in same class to run in same group
+ - Move ovsdbapp jobs to its tree
+ - Convert base commands to ReadOnlyCommand
+ - fix tox python3 overrides
+ - Allow read-only Commands to bypass txns in execute()
+ - Migrate tempest job to zuul v3 native
+ - ut: Patch get_ident for race transaction test
+ - Make nested transaction thread aware
+
+-------------------------------------------------------------------
Old:
----
ovsdbapp-0.12.3.tar.gz
New:
----
ovsdbapp-0.15.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-ovsdbapp.spec ++++++
--- /var/tmp/diff_new_pack.zbJsUc/_old 2019-05-03 22:43:08.327331433 +0200
+++ /var/tmp/diff_new_pack.zbJsUc/_new 2019-05-03 22:43:08.347331476 +0200
@@ -18,69 +18,77 @@
%define with_tests 0
Name: python-ovsdbapp
-Version: 0.12.3
+Version: 0.15.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-%{version}.tar.gz
+Source0:
https://files.pythonhosted.org/packages/source/o/ovsdbapp/ovsdbapp-0.15.0.tar.gz
BuildRequires: openstack-macros
-BuildRequires: python-devel
-BuildRequires: python-fixtures >= 3.0.0
-BuildRequires: python-os-testr
-BuildRequires: python-oslotest
-BuildRequires: python-ovs >= 2.8.0
-BuildRequires: python-pbr >= 2.0.0
-BuildRequires: python-stestr
-BuildRequires: python-testscenarios
-BuildRequires: python-testtools
+BuildRequires: python2-fixtures >= 3.0.0
+BuildRequires: python2-oslotest
+BuildRequires: python2-ovs >= 2.8.0
+BuildRequires: python2-pbr >= 2.0.0
+BuildRequires: python2-stestr
+BuildRequires: python2-testscenarios
+BuildRequires: python2-testtools
+BuildRequires: python3-fixtures >= 3.0.0
+BuildRequires: python3-oslotest
+BuildRequires: python3-ovs >= 2.8.0
+BuildRequires: python3-pbr >= 2.0.0
+BuildRequires: python3-stestr
+BuildRequires: python3-testscenarios
+BuildRequires: python3-testtools
Requires: python-fixtures >= 3.0.0
+Requires: python-netaddr >= 0.7.18
Requires: python-ovs >= 2.8.0
Requires: python-pbr >= 2.0.0
+Requires: python-six >= 1.10.0
BuildArch: noarch
+%python_subpackages
%description
The ovdsbapp library is useful for creating applications that communicate via
Open_vSwitchs OVSDB protocol (https://tools.ietf.org/html/rfc7047). It wraps
the Python 'ovs' and adds an event loop and friendly transactions.
-%package doc
+%package -n python-ovsdbapp-doc
Summary: Documentation for OpenStack log library
Group: Development/Languages/Python
BuildRequires: python-Sphinx
BuildRequires: python-openstackdocstheme
-%description doc
+%description -n python-ovsdbapp-doc
Documentation for the ovsdbap library.
%prep
%autosetup -p1 -n ovsdbapp-%{version}
%py_req_cleanup
-sed -i 's/^warning-is-error.*/warning-is-error = 0/g' setup.cfg
%build
-%{py2_build}
+%{python_build}
# generate html docs
-%{__python2} setup.py build_sphinx
+PBR_VERSION=0.15.0 PYTHONPATH=. \
+ sphinx-build -b html doc/source doc/build/html
rm -rf doc/build/html/.{doctrees,buildinfo}
%install
-%{py2_install}
+%{python_install}
%if 0%{?with_tests}
%check
-stestr run
+%python_exec -m stestr.cli run
%endif
-%files
+%files %{python_files}
%license LICENSE
%doc ChangeLog README.rst
-%{python2_sitelib}/ovsdbapp
-%{python2_sitelib}/*.egg-info
+%{python_sitelib}/ovsdbapp
+%{python_sitelib}/*.egg-info
-%files doc
+%files -n python-ovsdbapp-doc
%license LICENSE
%doc doc/build/html
++++++ _service ++++++
--- /var/tmp/diff_new_pack.zbJsUc/_old 2019-05-03 22:43:08.699332217 +0200
+++ /var/tmp/diff_new_pack.zbJsUc/_new 2019-05-03 22:43:08.731332284 +0200
@@ -1,8 +1,8 @@
<services>
<service mode="disabled" name="renderspec">
- <param
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/rocky/openstack/ovsdbapp/ovsdbapp.spec.j2</param>
+ <param
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/stein/openstack/ovsdbapp/ovsdbapp.spec.j2</param>
<param name="output-name">python-ovsdbapp.spec</param>
- <param
name="requirements">https://raw.githubusercontent.com/openstack/ovsdbapp/stable/rocky/requirements.txt</param>
+ <param
name="requirements">https://raw.githubusercontent.com/openstack/ovsdbapp/stable/stein/requirements.txt</param>
<param name="changelog-email">[email protected]</param>
<param name="changelog-provider">gh,openstack,ovsdbapp</param>
</service>
++++++ ovsdbapp-0.12.3.tar.gz -> ovsdbapp-0.15.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/.pylintrc
new/ovsdbapp-0.15.0/.pylintrc
--- old/ovsdbapp-0.12.3/.pylintrc 2019-02-06 23:10:01.000000000 +0100
+++ new/ovsdbapp-0.15.0/.pylintrc 2019-01-30 17:05:07.000000000 +0100
@@ -37,6 +37,9 @@
too-many-locals,
too-many-public-methods,
too-many-return-statements,
+ inconsistent-return-statements,
+ catching-non-exception,
+ using-constant-test,
too-many-statements
[BASIC]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/.stestr.conf
new/ovsdbapp-0.15.0/.stestr.conf
--- old/ovsdbapp-0.12.3/.stestr.conf 2019-02-06 23:10:01.000000000 +0100
+++ new/ovsdbapp-0.15.0/.stestr.conf 2019-01-30 17:05:07.000000000 +0100
@@ -1,4 +1,4 @@
[DEFAULT]
test_path=${OS_TEST_PATH}
top_dir=./
-
+group_regex=([^\.]+\.)+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/AUTHORS new/ovsdbapp-0.15.0/AUTHORS
--- old/ovsdbapp-0.12.3/AUTHORS 2019-02-06 23:10:52.000000000 +0100
+++ new/ovsdbapp-0.15.0/AUTHORS 2019-01-30 17:05:56.000000000 +0100
@@ -9,6 +9,7 @@
Bhagyashri Shewale <[email protected]>
Bo Wang <[email protected]>
Boden R <[email protected]>
+Chuck Short <[email protected]>
Cyril Roelandt <[email protected]>
Daniel Alvarez <[email protected]>
Davanum Srinivas <[email protected]>
@@ -39,6 +40,7 @@
Petr Horáček <[email protected]>
Richard Theis <[email protected]>
Sean Mooney <[email protected]>
+Ted Elhourani <[email protected]>
Terry Wilson <[email protected]>
Terry Wilson <[email protected]>
Vu Cong Tuan <[email protected]>
@@ -48,7 +50,10 @@
chenxing <[email protected]>
gengchc2 <[email protected]>
hgangwx <[email protected]>
+huang.zhiping <[email protected]>
lzklibj <[email protected]>
+melissaml <[email protected]>
+qingszhao <[email protected]>
rossella <[email protected]>
yan.haifeng <[email protected]>
zhangzs <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/ChangeLog
new/ovsdbapp-0.15.0/ChangeLog
--- old/ovsdbapp-0.12.3/ChangeLog 2019-02-06 23:10:52.000000000 +0100
+++ new/ovsdbapp-0.15.0/ChangeLog 2019-01-30 17:05:56.000000000 +0100
@@ -1,27 +1,43 @@
CHANGES
=======
-0.12.3
+0.15.0
------
* Convert base commands to ReadOnlyCommand
* Allow read-only Commands to bypass txns in execute()
-* Move ovsdbapp jobs to its tree
+* Update home-page
-0.12.2
+0.14.0
------
-* ut: Patch get\_ident for race transaction test
-* Make nested transaction thread aware
-* import zuul job settings from project-config
+* Attempt to fetch the schema from any remote
+* Fix a typo in docstring
+* Change openstack-dev to openstack-discuss
+* Add Gateway\_Chassis support
+* Group tests in same class to run in same group
+* Fix functional tests timeout race condition
+* Migrate tempest job to zuul v3 native
+* Expand retry behavior to cover other python-ovs methods
+* Add WaitEvent to the API
-0.12.1
+0.13.0
------
+* ut: Patch get\_ident for race transaction test
+* Move ovsdbapp jobs to its tree
+* Make nested transaction thread aware
+* NBDB API: Add param if\_exists for methods using db\_remove()
+* add python 3.6 unit test job
+* import zuul job settings from project-config
* Check for oslo library usage
+* fix tox python3 overrides
+* Pass posargs to pylint, not flake8
+* update pylint to 1.9.2
* Remove the oslo-utils dependency
-* Update UPPER\_CONSTRAINTS\_FILE for stable/rocky
-* Update .gitreview for stable/rocky
+* Update reno for stable/rocky
+* Update reno for stable/rocky
+* Ensure timeout on queueing transaction
0.12.0
------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/PKG-INFO new/ovsdbapp-0.15.0/PKG-INFO
--- old/ovsdbapp-0.12.3/PKG-INFO 2019-02-06 23:10:53.000000000 +0100
+++ new/ovsdbapp-0.15.0/PKG-INFO 2019-01-30 17:05:56.000000000 +0100
@@ -1,10 +1,10 @@
Metadata-Version: 1.1
Name: ovsdbapp
-Version: 0.12.3
+Version: 0.15.0
Summary: A library for creating OVSDB applications
-Home-page: http://www.openstack.org/
+Home-page: https://pypi.org/project/ovsdbapp/
Author: OpenStack
-Author-email: [email protected]
+Author-email: [email protected]
License: UNKNOWN
Description: ===============================
ovsdbapp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/lower-constraints.txt
new/ovsdbapp-0.15.0/lower-constraints.txt
--- old/ovsdbapp-0.12.3/lower-constraints.txt 2019-02-06 23:10:01.000000000
+0100
+++ new/ovsdbapp-0.15.0/lower-constraints.txt 2019-01-30 17:05:07.000000000
+0100
@@ -31,7 +31,7 @@
pep8==1.5.7
pyflakes==0.8.1
Pygments==2.2.0
-pylint==1.4.5
+pylint==1.9.2
python-mimeparse==1.6.0
python-subunit==1.0.0
pytz==2013.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ovsdbapp-0.12.3/ovsdbapp/backend/ovs_idl/connection.py
new/ovsdbapp-0.15.0/ovsdbapp/backend/ovs_idl/connection.py
--- old/ovsdbapp-0.12.3/ovsdbapp/backend/ovs_idl/connection.py 2019-02-06
23:10:01.000000000 +0100
+++ new/ovsdbapp-0.15.0/ovsdbapp/backend/ovs_idl/connection.py 2019-01-30
17:05:07.000000000 +0100
@@ -12,6 +12,7 @@
# License for the specific language governing permissions and limitations
# under the License.
+import logging
import os
import threading
import traceback
@@ -21,12 +22,15 @@
from six.moves import queue as Queue
from ovsdbapp.backend.ovs_idl import idlutils
+from ovsdbapp import exceptions
if os.name == 'nt':
from ovsdbapp.backend.ovs_idl.windows import connection_utils
else:
from ovsdbapp.backend.ovs_idl.linux import connection_utils
+LOG = logging.getLogger(__name__)
+
class TransactionQueue(Queue.Queue, object):
def __init__(self, *args, **kwargs):
@@ -85,14 +89,33 @@
self.thread.start()
def run(self):
+ errors = 0
while self._is_running:
- self.idl.wait(self.poller)
- self.poller.fd_wait(self.txns.alert_fileno, poller.POLLIN)
- # TODO(jlibosva): Remove next line once losing connection to ovsdb
- # is solved.
- self.poller.timer_wait(self.timeout * 1000)
- self.poller.block()
- self.idl.run()
+ # If we fail in an Idl call, we could have missed an update
+ # from the server, leaving us out of sync with ovsdb-server.
+ # It is not safe to continue without restarting the connection,
+ # though it is likely that the error is unrecoverable, so only try
+ # a few times before bailing completely.
+ try:
+ self.idl.wait(self.poller)
+ self.poller.fd_wait(self.txns.alert_fileno, poller.POLLIN)
+ # TODO(jlibosva): Remove next line once losing connection to
+ # ovsdb is solved.
+ self.poller.timer_wait(self.timeout * 1000)
+ self.poller.block()
+ self.idl.run()
+ except Exception as e:
+ # This shouldn't happen, but is possible if there is a bug
+ # in python-ovs
+ errors += 1
+ LOG.exception(e)
+ if errors <= 3:
+ self.idl.force_reconnect()
+ idlutils.wait_for_change(self.idl, self.timeout)
+ continue
+ self._is_running = False
+ break
+ errors = 0
txn = self.txns.get_nowait()
if txn is not None:
try:
@@ -117,7 +140,11 @@
def queue_txn(self, txn):
# Even if we aren't started, we can queue a transaction and it will
# run when we are started
- self.txns.put(txn)
+ try:
+ self.txns.put(txn, timeout=self.timeout)
+ except Queue.Full:
+ raise exceptions.TimeoutException(commands=txn.commands,
+ timeout=self.timeout)
class OvsdbIdl(idl.Idl):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/ovsdbapp/backend/ovs_idl/event.py
new/ovsdbapp-0.15.0/ovsdbapp/backend/ovs_idl/event.py
--- old/ovsdbapp-0.12.3/ovsdbapp/backend/ovs_idl/event.py 2019-02-06
23:10:01.000000000 +0100
+++ new/ovsdbapp-0.15.0/ovsdbapp/backend/ovs_idl/event.py 2019-01-30
17:05:07.000000000 +0100
@@ -39,3 +39,7 @@
LOG.debug("%s : Matched %s, %s, %s %s", self.event_name, self.table,
self.events, self.conditions, self.old_conditions)
return True
+
+
+class WaitEvent(RowEvent, ovsdb_event.WaitEvent):
+ pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/ovsdbapp/backend/ovs_idl/idlutils.py
new/ovsdbapp-0.15.0/ovsdbapp/backend/ovs_idl/idlutils.py
--- old/ovsdbapp-0.12.3/ovsdbapp/backend/ovs_idl/idlutils.py 2019-02-06
23:10:01.000000000 +0100
+++ new/ovsdbapp-0.15.0/ovsdbapp/backend/ovs_idl/idlutils.py 2019-01-30
17:05:07.000000000 +0100
@@ -13,6 +13,7 @@
# under the License.
import collections
+import logging
import os
import sys
import time
@@ -27,6 +28,7 @@
from ovsdbapp import api
from ovsdbapp import exceptions
+LOG = logging.getLogger(__name__)
RowLookup = collections.namedtuple('RowLookup',
['table', 'column', 'uuid_column'])
@@ -114,21 +116,48 @@
:param schema_name: The schema on the server to pull
:type schema_name: string
"""
- err, strm = stream.Stream.open_block(
- stream.Stream.open(connection))
- if err:
- raise Exception("Could not connect to %s" % connection)
- rpc = jsonrpc.Connection(strm)
- req = jsonrpc.Message.create_request('get_schema', [schema_name])
- err, resp = rpc.transact_block(req)
- rpc.close()
- if err:
- raise Exception("Could not retrieve schema from %(conn)s: "
- "%(err)s" % {'conn': connection,
- 'err': os.strerror(err)})
- elif resp.error:
- raise Exception(resp.error)
- return idl.SchemaHelper(None, resp.result)
+ parsed_connections = parse_connection(connection)
+
+ for c in parsed_connections:
+ err, strm = stream.Stream.open_block(
+ stream.Stream.open(c))
+ if err:
+ LOG.error("Unable to open stream to %(conn)s to retrieve schema: "
+ "%(err)s", {'conn': c,
+ 'err': os.strerror(err)})
+ continue
+ rpc = jsonrpc.Connection(strm)
+ req = jsonrpc.Message.create_request('get_schema', [schema_name])
+ err, resp = rpc.transact_block(req)
+ rpc.close()
+ if err:
+ LOG.info("Could not retrieve schema from %(conn)s: "
+ "%(err)s", {'conn': c,
+ 'err': os.strerror(err)})
+ continue
+ elif resp.error:
+ LOG.error("TRXN error, failed to retrieve schema from %(conn)s: "
+ "%(err)s", {'conn': c,
+ 'err': resp.error})
+ continue
+ return idl.SchemaHelper(None, resp.result)
+ raise Exception("Could not retrieve schema from %s" % connection)
+
+
+def parse_connection(connection_string):
+ """Parse a connection string.
+
+ The connection string must be of the form
+ proto:address:port,proto:address:port,...
+
+ The parsing logic here must be identical to the one at
+ https://github.com/openvswitch/ovs/blob/master/python/ovs/db/idl.py#L162
+ for remote connections.
+
+ :param connection_string: The ovsdb-server connection string
+ :type connection_string: string
+ """
+ return [c.strip() for c in connection_string.split(',')]
def wait_for_change(_idl, timeout, seqno=None):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ovsdbapp-0.12.3/ovsdbapp/backend/ovs_idl/windows/utils.py
new/ovsdbapp-0.15.0/ovsdbapp/backend/ovs_idl/windows/utils.py
--- old/ovsdbapp-0.12.3/ovsdbapp/backend/ovs_idl/windows/utils.py
2019-02-06 23:10:01.000000000 +0100
+++ new/ovsdbapp-0.15.0/ovsdbapp/backend/ovs_idl/windows/utils.py
2019-01-30 17:05:07.000000000 +0100
@@ -39,5 +39,4 @@
# loop greenlet.
if eventlet.getcurrent().parent:
return tpool.execute(f, *args, **kwargs)
- else:
- return f(*args, **kwargs)
+ return f(*args, **kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/ovsdbapp/event.py
new/ovsdbapp-0.15.0/ovsdbapp/event.py
--- old/ovsdbapp-0.12.3/ovsdbapp/event.py 2019-02-06 23:10:01.000000000
+0100
+++ new/ovsdbapp-0.15.0/ovsdbapp/event.py 2019-01-30 17:05:07.000000000
+0100
@@ -68,6 +68,26 @@
"""Method to run when the event matches"""
+class WaitEvent(RowEvent):
+ event_name = 'WaitEvent'
+ ONETIME = True
+
+ def __init__(self, *args, **kwargs):
+ self.event = threading.Event()
+ self.timeout = kwargs.pop('timeout', None)
+ super(WaitEvent, self).__init__(*args, **kwargs)
+
+ @abc.abstractmethod
+ def matches(self, event, row, old=None):
+ """Test that `event on `row` matches watched events. See: RowEvent"""
+
+ def run(self, event, row, old):
+ self.event.set()
+
+ def wait(self):
+ return self.event.wait(self.timeout)
+
+
class RowEventHandler(object):
def __init__(self):
self.__watched_events = set()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/ovsdbapp/exceptions.py
new/ovsdbapp-0.15.0/ovsdbapp/exceptions.py
--- old/ovsdbapp-0.12.3/ovsdbapp/exceptions.py 2019-02-06 23:10:01.000000000
+0100
+++ new/ovsdbapp-0.15.0/ovsdbapp/exceptions.py 2019-01-30 17:05:07.000000000
+0100
@@ -37,7 +37,7 @@
if six.PY2:
def __unicode__(self):
- return unicode(self.msg) # noqa
+ return unicode(self.msg) # noqa pylint: disable=undefined-variable
def __str__(self):
return self.msg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ovsdbapp-0.12.3/ovsdbapp/schema/ovn_northbound/api.py
new/ovsdbapp-0.15.0/ovsdbapp/schema/ovn_northbound/api.py
--- old/ovsdbapp-0.12.3/ovsdbapp/schema/ovn_northbound/api.py 2019-02-06
23:10:01.000000000 +0100
+++ new/ovsdbapp-0.15.0/ovsdbapp/schema/ovn_northbound/api.py 2019-01-30
17:05:07.000000000 +0100
@@ -86,9 +86,16 @@
"""
@abc.abstractmethod
- def ls_remove_dns_record(self, switch_uuid, dns_uuid):
+ def ls_remove_dns_record(self, switch_uuid, dns_uuid, if_exists=False):
"""Remove the 'dns_record' from the switch's 'dns_records' list
+ :param switch_uuid: The uuid of the switch
+ :type switch_uuid: string or uuid.UUID
+ :param dns_uuid: The uuid of the DNS record
+ :type dns_uuid: string or uuid.UUID
+ :param if_exists: If True, don't fail if the DNS record
+ doesn't exist
+ :type if_exists: boolean
:returns: :class:`Command` with RowView result
"""
@@ -852,12 +859,15 @@
"""
@abc.abstractmethod
- def dns_remove_record(self, uuid, hostname):
+ def dns_remove_record(self, uuid, hostname, if_exists=False):
"""Remove the 'hostname' from the 'records' field of the DNS row
:param uuid: The uuid of the DNS row to set the records with
:type uuid: string or uuid.UUID
:param hostname: hostname as the key to the record dict
+ :param if_exists: If True, don't fail if the DNS record
+ doesn't exist
+ :type if_exists: boolean
:returns: :class:`Command` with no result
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ovsdbapp-0.12.3/ovsdbapp/schema/ovn_northbound/commands.py
new/ovsdbapp-0.15.0/ovsdbapp/schema/ovn_northbound/commands.py
--- old/ovsdbapp-0.12.3/ovsdbapp/schema/ovn_northbound/commands.py
2019-02-06 23:10:01.000000000 +0100
+++ new/ovsdbapp-0.15.0/ovsdbapp/schema/ovn_northbound/commands.py
2019-01-30 17:05:07.000000000 +0100
@@ -739,6 +739,13 @@
if self.peer:
lrp.peer = self.peer
lr.addvalue('ports', lrp)
+ gwcs = self.columns.pop('gateway_chassis', [])
+ for n, chassis in enumerate(gwcs):
+ gwc_name = '%s_%s' % (lrp.name, chassis)
+ cmd = GatewayChassisAddCommand(self.api, gwc_name, chassis,
+ len(gwcs) - n, may_exist=True)
+ cmd.run_idl(txn)
+ lrp.addvalue('gateway_chassis', cmd.result)
self.set_columns(lrp, **self.columns)
self.result = lrp.uuid
@@ -1291,3 +1298,30 @@
class PgGetCommand(cmd.BaseGetRowCommand):
table = 'Port_Group'
+
+
+class GatewayChassisAddCommand(cmd.AddCommand):
+ table_name = 'Gateway_Chassis'
+
+ def __init__(self, api, name, chassis_name, priority=0, may_exist=False,
+ **columns):
+ super(GatewayChassisAddCommand, self).__init__(api)
+ self.name = name
+ self.chassis_name = chassis_name
+ self.priority = priority
+ self.may_exist = may_exist
+ self.columns = columns
+
+ def run_idl(self, txn):
+ if self.may_exist:
+ gwc = self.api.lookup(self.table_name, self.name, None)
+ else:
+ gwc = None
+ if not gwc:
+ # If gwc exists with name, this will properly fail if not may_exist
+ # since 'name' is indexed
+ gwc = txn.insert(self.api.tables[self.table_name])
+ gwc.name = self.name
+ gwc.priority = self.priority
+ self.set_columns(gwc, **self.columns)
+ self.result = gwc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ovsdbapp-0.12.3/ovsdbapp/schema/ovn_northbound/impl_idl.py
new/ovsdbapp-0.15.0/ovsdbapp/schema/ovn_northbound/impl_idl.py
--- old/ovsdbapp-0.12.3/ovsdbapp/schema/ovn_northbound/impl_idl.py
2019-02-06 23:10:01.000000000 +0100
+++ new/ovsdbapp-0.15.0/ovsdbapp/schema/ovn_northbound/impl_idl.py
2019-01-30 17:05:07.000000000 +0100
@@ -49,9 +49,9 @@
return self.db_add('Logical_Switch', switch_uuid, 'dns_records',
dns_uuid)
- def ls_remove_dns_record(self, switch_uuid, dns_uuid):
+ def ls_remove_dns_record(self, switch_uuid, dns_uuid, if_exists=False):
return self.db_remove('Logical_Switch', switch_uuid, 'dns_records',
- dns_uuid)
+ dns_uuid, if_exists=if_exists)
def acl_add(self, switch, direction, priority, match, action, log=False,
may_exist=False, **external_ids):
@@ -269,8 +269,9 @@
ips = " ".join(utils.normalize_ip_port(ip) for ip in ips)
return self.db_add('DNS', uuid, 'records', {hostname: ips})
- def dns_remove_record(self, uuid, hostname):
- return self.db_remove('DNS', uuid, 'records', hostname)
+ def dns_remove_record(self, uuid, hostname, if_exists=False):
+ return self.db_remove('DNS', uuid, 'records', hostname,
+ if_exists=if_exists)
def dns_set_external_ids(self, uuid, **external_ids):
return cmd.DnsSetExternalIdsCommand(self, uuid, **external_ids)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ovsdbapp-0.12.3/ovsdbapp/tests/functional/schema/open_vswitch/test_impl_idl.py
new/ovsdbapp-0.15.0/ovsdbapp/tests/functional/schema/open_vswitch/test_impl_idl.py
---
old/ovsdbapp-0.12.3/ovsdbapp/tests/functional/schema/open_vswitch/test_impl_idl.py
2019-02-06 23:10:01.000000000 +0100
+++
new/ovsdbapp-0.15.0/ovsdbapp/tests/functional/schema/open_vswitch/test_impl_idl.py
2019-01-30 17:05:07.000000000 +0100
@@ -40,6 +40,21 @@
cleanup_cmd = self.api.del_br(self.brname)
self.addCleanup(cleanup_cmd.execute)
+ def test_idl_run_exception_terminates(self):
+ run = self.api.idl.run
+ with mock.patch.object(self.api.idl, "run") as runmock:
+ exceptions = iter([Exception("TestException")])
+
+ def side_effect():
+ try:
+ raise next(exceptions)
+ except StopIteration:
+ return run()
+
+ runmock.side_effect = side_effect
+ exists = self.api.br_exists(self.brname).execute(check_error=True)
+ self.assertFalse(exists)
+
def test_br_exists_false(self):
exists = self.api.br_exists(self.brname).execute(check_error=True)
self.assertFalse(exists)
@@ -182,5 +197,6 @@
def test_post_commit_vswitchd_incomplete_timeout(self, *args):
# Due to timing issues we may rarely hit the global timeout, which
# raises RuntimeError to match the vsctl implementation
- self.api.ovsdb_connection.timeout = 1
+ mock.patch('ovsdbapp.backend.ovs_idl.transaction.'
+ 'Transaction.timeout_exceeded', return_value=True).start()
self.assertRaises((exc.TimeoutException, RuntimeError), self._add_br)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ovsdbapp-0.12.3/ovsdbapp/tests/functional/schema/ovn_northbound/test_impl_idl.py
new/ovsdbapp-0.15.0/ovsdbapp/tests/functional/schema/ovn_northbound/test_impl_idl.py
---
old/ovsdbapp-0.12.3/ovsdbapp/tests/functional/schema/ovn_northbound/test_impl_idl.py
2019-02-06 23:10:01.000000000 +0100
+++
new/ovsdbapp-0.15.0/ovsdbapp/tests/functional/schema/ovn_northbound/test_impl_idl.py
2019-01-30 17:05:07.000000000 +0100
@@ -940,6 +940,15 @@
self.assertEqual(options, lrp.options)
self.assertEqual(external_ids, lrp.external_ids)
+ def test_lrp_add_gw_chassis(self):
+ name, c1, c2 = [utils.get_rand_device_name() for _ in range(3)]
+ args = (name, 'de:ad:be:ef:4d:ad')
+ lrp = self._lrp_add(*args, gateway_chassis=(c1, c2))
+ c1 = self.api.lookup('Gateway_Chassis', "%s_%s" % (lrp.name, c1))
+ c2 = self.api.lookup('Gateway_Chassis', "%s_%s" % (lrp.name, c2))
+ self.assertIn(c1, lrp.gateway_chassis)
+ self.assertIn(c2, lrp.gateway_chassis)
+
def test_lrp_del_uuid(self):
lrp = self._lrp_add(None)
self.api.lrp_del(lrp.uuid).execute(check_error=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ovsdbapp-0.12.3/ovsdbapp/tests/functional/schema/ovn_southbound/test_impl_idl.py
new/ovsdbapp-0.15.0/ovsdbapp/tests/functional/schema/ovn_southbound/test_impl_idl.py
---
old/ovsdbapp-0.12.3/ovsdbapp/tests/functional/schema/ovn_southbound/test_impl_idl.py
2019-02-06 23:10:01.000000000 +0100
+++
new/ovsdbapp-0.15.0/ovsdbapp/tests/functional/schema/ovn_southbound/test_impl_idl.py
2019-01-30 17:05:07.000000000 +0100
@@ -10,8 +10,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-import threading
-
from ovsdbapp.backend.ovs_idl import event
from ovsdbapp.backend.ovs_idl import idlutils
from ovsdbapp import event as ovsdb_event
@@ -22,21 +20,13 @@
from ovsdbapp.tests import utils
-class WaitForPortBindingEvent(event.RowEvent):
+class WaitForPortBindingEvent(event.WaitEvent):
event_name = 'WaitForPortBindingEvent'
- ONETIME = True
def __init__(self, port, timeout=5):
- self.event = threading.Event()
- self.timeout = timeout
super(WaitForPortBindingEvent, self).__init__(
- (self.ROW_CREATE,), 'Port_Binding', (('logical_port', '=', port),))
-
- def run(self, event, row, old):
- self.event.set()
-
- def wait(self):
- self.event.wait(self.timeout)
+ (self.ROW_CREATE,), 'Port_Binding', (('logical_port', '=', port),),
+ timeout=timeout)
class OvnSouthboundTest(base.FunctionalTestCase):
@@ -109,7 +99,7 @@
with self.nbapi.transaction(check_error=True) as txn:
switch = txn.add(self.nbapi.ls_add(sname))
port = txn.add(self.nbapi.lsp_add(sname, pname))
- row_event.wait()
+ self.assertTrue(row_event.wait())
return chassis, switch.result, port.result
def test_lsp_bind(self):
@@ -121,12 +111,12 @@
return chassis, switch, port
def test_lsp_bind_exists(self):
- chassis, switch, port = self.test_lsp_bind()
+ chassis, _switch, port = self.test_lsp_bind()
cmd = self.api.lsp_bind(port.name, chassis.name)
self.assertRaises(RuntimeError, cmd.execute, check_error=True)
def test_lsp_bind_may_exist(self):
- chassis, switch, port = self.test_lsp_bind()
+ chassis, _switch, port = self.test_lsp_bind()
other = self._chassis_add(['vxlan'], '192.0.2.2',
chassis=utils.get_rand_device_name())
self.api.lsp_bind(port.name, other.name, may_exist=True).execute(
@@ -137,7 +127,7 @@
self.assertIn(chassis, binding.chassis)
def test_lsp_unbind(self):
- chassis, switch, port = self.test_lsp_bind()
+ _chassis, _switch, port = self.test_lsp_bind()
self.api.lsp_unbind(port.name).execute(check_error=True)
binding = idlutils.row_by_value(self.api.idl, 'Port_Binding',
'logical_port', port.name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ovsdbapp-0.12.3/ovsdbapp/tests/unit/backend/ovs_idl/test_connection.py
new/ovsdbapp-0.15.0/ovsdbapp/tests/unit/backend/ovs_idl/test_connection.py
--- old/ovsdbapp-0.12.3/ovsdbapp/tests/unit/backend/ovs_idl/test_connection.py
2019-02-06 23:10:01.000000000 +0100
+++ new/ovsdbapp-0.15.0/ovsdbapp/tests/unit/backend/ovs_idl/test_connection.py
2019-01-30 17:05:07.000000000 +0100
@@ -49,7 +49,8 @@
def test_queue_txn(self):
self.conn.start()
self.conn.queue_txn('blah')
- self.conn.txns.put.assert_called_once_with('blah')
+ self.conn.txns.put.assert_called_once_with('blah',
+ timeout=self.conn.timeout)
class TestTransactionQueue(base.TestCase):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ovsdbapp-0.12.3/ovsdbapp/tests/unit/backend/ovs_idl/test_idlutils.py
new/ovsdbapp-0.15.0/ovsdbapp/tests/unit/backend/ovs_idl/test_idlutils.py
--- old/ovsdbapp-0.12.3/ovsdbapp/tests/unit/backend/ovs_idl/test_idlutils.py
2019-02-06 23:10:01.000000000 +0100
+++ new/ovsdbapp-0.15.0/ovsdbapp/tests/unit/backend/ovs_idl/test_idlutils.py
2019-01-30 17:05:07.000000000 +0100
@@ -62,7 +62,7 @@
* if column type is_optional and value is a single element, value is
transformed to a length-1-list
- * any other value is returned as it is, no type convertions
+ * any other value is returned as it is, no type conversions
"""
table = MockTable("SomeTable",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/ovsdbapp/utils.py
new/ovsdbapp-0.15.0/ovsdbapp/utils.py
--- old/ovsdbapp-0.12.3/ovsdbapp/utils.py 2019-02-06 23:10:01.000000000
+0100
+++ new/ovsdbapp-0.15.0/ovsdbapp/utils.py 2019-01-30 17:05:07.000000000
+0100
@@ -10,9 +10,10 @@
# License for the specific language governing permissions and limitations
# under the License.
-import netaddr
import uuid
+import netaddr
+
# NOTE(twilson) Clearly these are silly, but they are good enough for now
# I'm happy for someone to replace them with better parsing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/ovsdbapp.egg-info/PKG-INFO
new/ovsdbapp-0.15.0/ovsdbapp.egg-info/PKG-INFO
--- old/ovsdbapp-0.12.3/ovsdbapp.egg-info/PKG-INFO 2019-02-06
23:10:52.000000000 +0100
+++ new/ovsdbapp-0.15.0/ovsdbapp.egg-info/PKG-INFO 2019-01-30
17:05:56.000000000 +0100
@@ -1,10 +1,10 @@
Metadata-Version: 1.1
Name: ovsdbapp
-Version: 0.12.3
+Version: 0.15.0
Summary: A library for creating OVSDB applications
-Home-page: http://www.openstack.org/
+Home-page: https://pypi.org/project/ovsdbapp/
Author: OpenStack
-Author-email: [email protected]
+Author-email: [email protected]
License: UNKNOWN
Description: ===============================
ovsdbapp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/ovsdbapp.egg-info/SOURCES.txt
new/ovsdbapp-0.15.0/ovsdbapp.egg-info/SOURCES.txt
--- old/ovsdbapp-0.12.3/ovsdbapp.egg-info/SOURCES.txt 2019-02-06
23:10:53.000000000 +0100
+++ new/ovsdbapp-0.15.0/ovsdbapp.egg-info/SOURCES.txt 2019-01-30
17:05:56.000000000 +0100
@@ -97,15 +97,13 @@
ovsdbapp/tests/unit/schema/__init__.py
ovsdbapp/tests/unit/schema/open_vswitch/__init__.py
ovsdbapp/tests/unit/schema/open_vswitch/test_impl_idl.py
-playbooks/legacy/tempest-post-common.yml
-playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release-ovsdbapp-src/post.yaml
-playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release-ovsdbapp-src/run.yaml
releasenotes/notes/.placeholder
releasenotes/notes/configure-ovsdb-manager-a29a148b241a125e.yaml
releasenotes/source/conf.py
releasenotes/source/index.rst
releasenotes/source/pike.rst
releasenotes/source/queens.rst
+releasenotes/source/rocky.rst
releasenotes/source/unreleased.rst
releasenotes/source/_static/.placeholder
releasenotes/source/_templates/.placeholder
@@ -114,5 +112,5 @@
tools/debug_venv.py
tools/setup-ovs.sh
tools/test-setup.sh
-zuul.d/legacy-ovsdbapp-jobs.yaml
+zuul.d/ovsdbapp-jobs.yaml
zuul.d/project.yaml
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/ovsdbapp.egg-info/pbr.json
new/ovsdbapp-0.15.0/ovsdbapp.egg-info/pbr.json
--- old/ovsdbapp-0.12.3/ovsdbapp.egg-info/pbr.json 2019-02-06
23:10:52.000000000 +0100
+++ new/ovsdbapp-0.15.0/ovsdbapp.egg-info/pbr.json 2019-01-30
17:05:56.000000000 +0100
@@ -1 +1 @@
-{"git_version": "547777a", "is_release": true}
\ No newline at end of file
+{"git_version": "bc06517", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ovsdbapp-0.12.3/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release-ovsdbapp-src/post.yaml
new/ovsdbapp-0.15.0/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release-ovsdbapp-src/post.yaml
---
old/ovsdbapp-0.12.3/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release-ovsdbapp-src/post.yaml
2019-02-06 23:10:01.000000000 +0100
+++
new/ovsdbapp-0.15.0/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release-ovsdbapp-src/post.yaml
1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-- hosts: primary
- tasks:
-
- - include: ../tempest-post-common.yml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ovsdbapp-0.12.3/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release-ovsdbapp-src/run.yaml
new/ovsdbapp-0.15.0/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release-ovsdbapp-src/run.yaml
---
old/ovsdbapp-0.12.3/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release-ovsdbapp-src/run.yaml
2019-02-06 23:10:01.000000000 +0100
+++
new/ovsdbapp-0.15.0/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release-ovsdbapp-src/run.yaml
1970-01-01 01:00:00.000000000 +0100
@@ -1,88 +0,0 @@
-- hosts: all
- name: Autoconverted job
legacy-tempest-dsvm-networking-ovn-ovs-release-ovsdbapp-src
- from old job gate-tempest-dsvm-networking-ovn-ovs-release-ovsdbapp-src-nv
- tasks:
-
- - name: Ensure legacy workspace directory
- file:
- path: '{{ ansible_user_dir }}/workspace'
- state: directory
-
- - shell:
- cmd: |
- set -e
- set -x
- cat > clonemap.yaml << EOF
- clonemap:
- - name: openstack-infra/devstack-gate
- dest: devstack-gate
- EOF
- /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
- git://git.openstack.org \
- openstack-infra/devstack-gate
- executable: /bin/bash
- chdir: '{{ ansible_user_dir }}/workspace'
- environment: '{{ zuul | zuul_legacy_vars }}'
-
- - shell:
- cmd: |
- set -e
- set -x
- cat << 'EOF' >>"/tmp/dg-local.conf"
- [[local|localrc]]
- enable_plugin networking-ovn
git://git.openstack.org/openstack/networking-ovn
- enable_plugin neutron-tempest-plugin
git://git.openstack.org/openstack/neutron-tempest-plugin
- enable_plugin octavia git://git.openstack.org/openstack/octavia
- enable_service ovn-octavia
- enable_service o-api
- enable_service o-hk
- LIBS_FROM_GIT="ovsdbapp"
- OVN_DBS_LOG_LEVEL="dbg"
-
- EOF
- executable: /bin/bash
- chdir: '{{ ansible_user_dir }}/workspace'
- environment: '{{ zuul | zuul_legacy_vars }}'
-
- - shell:
- cmd: |
- set -e
- set -x
- export PYTHONUNBUFFERED=true
- export DEVSTACK_GATE_NEUTRON=1
- export DEVSTACK_GATE_TEMPEST=1
- export DEVSTACK_GATE_TEMPEST_ALL_PLUGINS=1
- export BRANCH_OVERRIDE=default
- if [ "$BRANCH_OVERRIDE" != "default" ] ; then
- export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
- fi
- # Because we are testing a non standard project, add
- # our project repository. This makes zuul do the right
- # reference magic for testing changes.
- export PROJECTS="openstack/networking-ovn
openstack/neutron-tempest-plugin openstack/octavia $PROJECTS"
- export PROJECTS="openstack/ovsdbapp $PROJECTS"
-
- # Keep localrc to be able to set some vars in pre_test_hook
- export KEEP_LOCALRC=1
-
- function pre_test_hook {
- if [ -f $BASE/new/networking-ovn/devstack/pre_test_hook.sh ] ;
then
- . $BASE/new/networking-ovn/devstack/pre_test_hook.sh
- fi
- }
- export -f pre_test_hook
-
- function post_test_hook {
- if [ -f $BASE/new/networking-ovn/devstack/post_test_hook.sh ] ;
then
- . $BASE/new/networking-ovn/devstack/post_test_hook.sh
- fi
- }
- export -f post_test_hook
-
- export
DEVSTACK_GATE_SETTINGS="/opt/stack/new/networking-ovn/devstack/devstackgaterc
latest-release"
-
- cp devstack-gate/devstack-vm-gate-wrap.sh
./safe-devstack-vm-gate-wrap.sh
- ./safe-devstack-vm-gate-wrap.sh
- executable: /bin/bash
- chdir: '{{ ansible_user_dir }}/workspace'
- environment: '{{ zuul | zuul_legacy_vars }}'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ovsdbapp-0.12.3/playbooks/legacy/tempest-post-common.yml
new/ovsdbapp-0.15.0/playbooks/legacy/tempest-post-common.yml
--- old/ovsdbapp-0.12.3/playbooks/legacy/tempest-post-common.yml
2019-02-06 23:10:01.000000000 +0100
+++ new/ovsdbapp-0.15.0/playbooks/legacy/tempest-post-common.yml
1970-01-01 01:00:00.000000000 +0100
@@ -1,56 +0,0 @@
-#
-# Copy OVN SB & NB database files: those files can be handy for debugging
issues as the
-# ovsdb files are stored as logs.
-#
-
-- name: Check whether OVNSB DB was created
- stat:
- path: /opt/stack/data/ovs/ovnsb_db.db
- register: ovnsb_file
-
-- name: Create destination directory to collect OVN database logs
- file: path={{ ansible_user_dir }}/workspace/logs/ovs_dbs state=directory
- when: ovnsb_file.stat.exists
-
-- name: Collect OVN databases
- copy:
- remote_src: true
- src: '/opt/stack/data/ovs/{{ item }}.db'
- dest: '{{ ansible_user_dir }}/workspace/logs/ovs_dbs/{{ item }}.txt'
- with_items:
- - conf
- - ovnnb_db
- - ovnsb_db
- when: ovnsb_file.stat.exists
-
-- name: Copy OVN database logs
- copy:
- remote_src: true
- src: '/opt/stack/new/{{ item }}.log'
- dest: '{{ ansible_user_dir }}/workspace/logs/ovs_dbs/{{ item }}.log.txt'
- with_items:
- - ovsdb-server-nb
- - ovsdb-server-sb
- when: ovnsb_file.stat.exists
- become: true
-
-- name: Compress OVN databases in individual files
- shell: gzip -9 {{ ansible_user_dir }}/workspace/logs/ovs_dbs/*
- when: ovnsb_file.stat.exists
-
-#
-# Synchronize files from workspace in node to the zuul log_root which will be
stored
-#
-
-- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
- synchronize:
- src: '{{ ansible_user_dir }}/workspace/'
- dest: '{{ zuul.executor.log_root }}'
- mode: pull
- copy_links: true
- verify_host: true
- rsync_opts:
- - --include=/logs/**
- - --include=*/
- - --exclude=*
- - --prune-empty-dirs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/releasenotes/source/index.rst
new/ovsdbapp-0.15.0/releasenotes/source/index.rst
--- old/ovsdbapp-0.12.3/releasenotes/source/index.rst 2019-02-06
23:10:01.000000000 +0100
+++ new/ovsdbapp-0.15.0/releasenotes/source/index.rst 2019-01-30
17:05:07.000000000 +0100
@@ -6,5 +6,6 @@
:maxdepth: 1
unreleased
+ rocky
queens
pike
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/releasenotes/source/rocky.rst
new/ovsdbapp-0.15.0/releasenotes/source/rocky.rst
--- old/ovsdbapp-0.12.3/releasenotes/source/rocky.rst 1970-01-01
01:00:00.000000000 +0100
+++ new/ovsdbapp-0.15.0/releasenotes/source/rocky.rst 2019-01-30
17:05:07.000000000 +0100
@@ -0,0 +1,6 @@
+===================================
+ Rocky Series Release Notes
+===================================
+
+.. release-notes::
+ :branch: stable/rocky
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/setup.cfg
new/ovsdbapp-0.15.0/setup.cfg
--- old/ovsdbapp-0.12.3/setup.cfg 2019-02-06 23:10:53.000000000 +0100
+++ new/ovsdbapp-0.15.0/setup.cfg 2019-01-30 17:05:56.000000000 +0100
@@ -4,8 +4,8 @@
description-file =
README.rst
author = OpenStack
-author-email = [email protected]
-home-page = http://www.openstack.org/
+author-email = [email protected]
+home-page = https://pypi.org/project/ovsdbapp/
classifier =
Environment :: OpenStack
Intended Audience :: Information Technology
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/test-requirements.txt
new/ovsdbapp-0.15.0/test-requirements.txt
--- old/ovsdbapp-0.12.3/test-requirements.txt 2019-02-06 23:10:01.000000000
+0100
+++ new/ovsdbapp-0.15.0/test-requirements.txt 2019-01-30 17:05:07.000000000
+0100
@@ -10,7 +10,7 @@
openstackdocstheme>=1.18.1 # Apache-2.0
oslotest>=3.2.0 # Apache-2.0
os-testr>=1.0.0 # Apache-2.0
-pylint==1.4.5 # GPLv2
+pylint==1.9.2 # GPLv2
stestr>=2.0.0 # Apache-2.0
testscenarios>=0.4 # Apache-2.0/BSD
testtools>=2.2.0 # MIT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/tox.ini new/ovsdbapp-0.15.0/tox.ini
--- old/ovsdbapp-0.12.3/tox.ini 2019-02-06 23:10:01.000000000 +0100
+++ new/ovsdbapp-0.15.0/tox.ini 2019-01-30 17:05:07.000000000 +0100
@@ -11,30 +11,35 @@
OS_TEST_PATH=./ovsdbapp/tests/unit
install_command = pip install {opts} {packages}
deps =
-
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=stable/rocky}
+
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
-r{toxinidir}/test-requirements.txt
-r{toxinidir}/requirements.txt
commands = stestr run --slowest {posargs}
[testenv:pep8]
-basepython = python2.7
+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
[testenv:releasenotes]
+basepython = python3
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]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/zuul.d/legacy-ovsdbapp-jobs.yaml
new/ovsdbapp-0.15.0/zuul.d/legacy-ovsdbapp-jobs.yaml
--- old/ovsdbapp-0.12.3/zuul.d/legacy-ovsdbapp-jobs.yaml 2019-02-06
23:10:01.000000000 +0100
+++ new/ovsdbapp-0.15.0/zuul.d/legacy-ovsdbapp-jobs.yaml 1970-01-01
01:00:00.000000000 +0100
@@ -1,13 +0,0 @@
-- job:
- name: ovsdbapp-tempest-dsvm-networking-ovn-ovs-release
- parent: legacy-networking-ovn-dsvm-base
- run:
playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release-ovsdbapp-src/run.yaml
- post-run:
playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release-ovsdbapp-src/post.yaml
- timeout: 7800
- required-projects:
- - openstack-infra/devstack-gate
- - openstack/networking-ovn
- - openstack/neutron-tempest-plugin
- - openstack/ovsdbapp
- - openstack/octavia
- - openstack/tempest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/zuul.d/ovsdbapp-jobs.yaml
new/ovsdbapp-0.15.0/zuul.d/ovsdbapp-jobs.yaml
--- old/ovsdbapp-0.12.3/zuul.d/ovsdbapp-jobs.yaml 1970-01-01
01:00:00.000000000 +0100
+++ new/ovsdbapp-0.15.0/zuul.d/ovsdbapp-jobs.yaml 2019-01-30
17:05:07.000000000 +0100
@@ -0,0 +1,7 @@
+- job:
+ name: ovsdbapp-tempest-dsvm-networking-ovn-ovs-release
+ description: Job testing for devstack/tempest testing networking-ovn with
the latest released OVN branch and ovsdbapp from source
+ parent: networking-ovn-tempest-dsvm-ovs-release
+ vars:
+ devstack_localrc:
+ LIBS_FROM_GIT: ovsdbapp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ovsdbapp-0.12.3/zuul.d/project.yaml
new/ovsdbapp-0.15.0/zuul.d/project.yaml
--- old/ovsdbapp-0.12.3/zuul.d/project.yaml 2019-02-06 23:10:01.000000000
+0100
+++ new/ovsdbapp-0.15.0/zuul.d/project.yaml 2019-01-30 17:05:07.000000000
+0100
@@ -2,6 +2,7 @@
templates:
- openstack-python-jobs
- openstack-python35-jobs
+ - openstack-python36-jobs
- check-requirements
check:
jobs: