commit python-ovsdbapp for openSUSE:Factory
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 - cloud-devel@suse.de + +- 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.ta... 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">cloud-devel@suse.de</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 <bhagyashri.shewale@nttdata.com> Bo Wang <bo.wang@easystack.cn> Boden R <bodenvmw@gmail.com> +Chuck Short <chucks@redhat.com> Cyril Roelandt <cyril.roelandt@enovance.com> Daniel Alvarez <dalvarez@redhat.com> Davanum Srinivas <davanum@gmail.com> @@ -39,6 +40,7 @@ Petr Horáček <phoracek@redhat.com> Richard Theis <rtheis@us.ibm.com> Sean Mooney <sean.k.mooney@intel.com> +Ted Elhourani <theodore.elhourani@gmail.com> Terry Wilson <terry@logivox.net> Terry Wilson <twilson@redhat.com> Vu Cong Tuan <tuanvc@vn.fujitsu.com> @@ -48,7 +50,10 @@ chenxing <chen.xing@99cloud.net> gengchc2 <geng.changcai2@zte.com.cn> hgangwx <hgangwx@cn.ibm.com> +huang.zhiping <huang.zhiping@99cloud.net> lzklibj <lzklibj@cn.ibm.com> +melissaml <ma.lei@99cloud.net> +qingszhao <zhao.daqing@99cloud.net> rossella <rsblendido@suse.com> yan.haifeng <yanheven@qq.com> zhangzs <zhangzhaoshan@inspur.com> 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: openstack-dev@lists.openstack.org +Author-email: openstack-discuss@lists.openstack.org 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: openstack-dev@lists.openstack.org +Author-email: openstack-discuss@lists.openstack.org 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 = openstack-dev@lists.openstack.org -home-page = http://www.openstack.org/ +author-email = openstack-discuss@lists.openstack.org +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:
participants (1)
-
root