Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-ovsdbapp for openSUSE:Factory checked in at 2023-03-07 16:49:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-ovsdbapp (Old) and /work/SRC/openSUSE:Factory/.python-ovsdbapp.new.31432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ovsdbapp" Tue Mar 7 16:49:38 2023 rev:13 rq:1069689 version:2.2.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-ovsdbapp/python-ovsdbapp.changes 2022-12-02 13:13:07.117845724 +0100 +++ /work/SRC/openSUSE:Factory/.python-ovsdbapp.new.31432/python-ovsdbapp.changes 2023-03-07 16:50:13.125548076 +0100 @@ -1,0 +2,8 @@ +Mon Mar 6 15:50:49 UTC 2023 - cloud-de...@suse.de + +- update to version 2.2.1 + - Update tox.ini for tox4 + - Accept HA chassis group commands in HAChassisGroupAdd* + - Define "LbAddIpPortMappingCommand" with latin chars + +------------------------------------------------------------------- Old: ---- ovsdbapp-2.2.0.tar.gz New: ---- ovsdbapp-2.2.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-ovsdbapp.spec ++++++ --- /var/tmp/diff_new_pack.488qj7/_old 2023-03-07 16:50:13.713551171 +0100 +++ /var/tmp/diff_new_pack.488qj7/_new 2023-03-07 16:50:13.721551213 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-ovsdbapp # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,13 +18,13 @@ %define with_tests 1 Name: python-ovsdbapp -Version: 2.2.0 +Version: 2.2.1 Release: 0 Summary: A library for creating OVSDB applications License: Apache-2.0 Group: Development/Languages/Python URL: https://docs.openstack.org/ovsdbapp -Source0: https://files.pythonhosted.org/packages/source/o/ovsdbapp/ovsdbapp-2.2.0.tar.gz +Source0: https://files.pythonhosted.org/packages/source/o/ovsdbapp/ovsdbapp-2.2.1.tar.gz BuildRequires: openstack-macros BuildRequires: python3-fixtures >= 3.0.0 BuildRequires: python3-netaddr >= 0.7.18 @@ -70,7 +70,7 @@ %{py3_build} # generate html docs -PBR_VERSION=2.2.0 PYTHONPATH=. \ +PBR_VERSION=2.2.1 PYTHONPATH=. \ %sphinx_build -b html doc/source doc/build/html rm -rf doc/build/html/.{doctrees,buildinfo} @@ -79,7 +79,7 @@ %if 0%{?with_tests} %check -OS_TEST_PATH=./ovsdbapp/tests/unit PYTHONPATH=. python3 -m stestr.cli run +OS_TEST_PATH=./ovsdbapp/tests/unit PYTHONPATH=. %{openstack_stestr_run} %endif %files -n python3-ovsdbapp ++++++ ovsdbapp-2.2.0.tar.gz -> ovsdbapp-2.2.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.2.0/ChangeLog new/ovsdbapp-2.2.1/ChangeLog --- old/ovsdbapp-2.2.0/ChangeLog 2022-11-16 15:11:02.000000000 +0100 +++ new/ovsdbapp-2.2.1/ChangeLog 2023-02-10 17:02:53.000000000 +0100 @@ -1,6 +1,13 @@ CHANGES ======= +2.2.1 +----- + +* Define "LbAddIpPortMappingCommand" with latin chars +* Accept HA chassis group commands in HAChassisGroupAdd\* +* Update tox.ini for tox4 + 2.2.0 ----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.2.0/PKG-INFO new/ovsdbapp-2.2.1/PKG-INFO --- old/ovsdbapp-2.2.0/PKG-INFO 2022-11-16 15:11:02.537545000 +0100 +++ new/ovsdbapp-2.2.1/PKG-INFO 2023-02-10 17:02:54.134330700 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.2 Name: ovsdbapp -Version: 2.2.0 +Version: 2.2.1 Summary: A library for creating OVSDB applications Home-page: https://pypi.org/project/ovsdbapp/ Author: OpenStack diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.2.0/ovsdbapp/api.py new/ovsdbapp-2.2.1/ovsdbapp/api.py --- old/ovsdbapp-2.2.0/ovsdbapp/api.py 2022-11-16 15:09:53.000000000 +0100 +++ new/ovsdbapp-2.2.1/ovsdbapp/api.py 2023-02-10 17:02:24.000000000 +0100 @@ -33,6 +33,16 @@ :param transaction_options: Options to pass to the transaction """ + @property + @abc.abstractmethod + def result(self): + """Returned value from the command execution""" + + @result.setter + @abc.abstractmethod + def result(self, value): + """Setter of the result property""" + class Transaction(object, metaclass=abc.ABCMeta): @abc.abstractmethod diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.2.0/ovsdbapp/backend/ovs_idl/__init__.py new/ovsdbapp-2.2.1/ovsdbapp/backend/ovs_idl/__init__.py --- old/ovsdbapp-2.2.0/ovsdbapp/backend/ovs_idl/__init__.py 2022-11-16 15:09:53.000000000 +0100 +++ new/ovsdbapp-2.2.1/ovsdbapp/backend/ovs_idl/__init__.py 2023-02-10 17:02:24.000000000 +0100 @@ -13,8 +13,10 @@ import logging import uuid +from ovs.db import idl from ovsdbapp.backend.ovs_idl import command as cmd from ovsdbapp.backend.ovs_idl import idlutils +from ovsdbapp.backend.ovs_idl import rowview from ovsdbapp.backend.ovs_idl import transaction from ovsdbapp import exceptions @@ -190,7 +192,11 @@ # Handle commands by simply returning its result if isinstance(record, cmd.BaseCommand): - return record.result + if isinstance(record.result, (rowview.RowView, idl.Row)): + # In case the command (creation) returns an existing record. + return record.result + else: + record = record.result t = self.tables[table] if isinstance(record, uuid.UUID): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.2.0/ovsdbapp/backend/ovs_idl/command.py new/ovsdbapp-2.2.1/ovsdbapp/backend/ovs_idl/command.py --- old/ovsdbapp-2.2.0/ovsdbapp/backend/ovs_idl/command.py 2022-11-16 15:09:53.000000000 +0100 +++ new/ovsdbapp-2.2.1/ovsdbapp/backend/ovs_idl/command.py 2023-02-10 17:02:24.000000000 +0100 @@ -30,7 +30,15 @@ def __init__(self, api): self.api = api - self.result = None + self._result = None + + @property + def result(self): + return self._result + + @result.setter + def result(self, value): + self._result = value def execute(self, check_error=False, log_errors=True, **kwargs): try: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.2.0/ovsdbapp/schema/ovn_northbound/commands.py new/ovsdbapp-2.2.1/ovsdbapp/schema/ovn_northbound/commands.py --- old/ovsdbapp-2.2.0/ovsdbapp/schema/ovn_northbound/commands.py 2022-11-16 15:09:53.000000000 +0100 +++ new/ovsdbapp-2.2.1/ovsdbapp/schema/ovn_northbound/commands.py 2023-02-10 17:02:24.000000000 +0100 @@ -1418,7 +1418,7 @@ raise RuntimeError(msg) -class LbAddIpPortMappingСommand(cmd.BaseCommand): +class LbAddIpPortMappingCommand(cmd.BaseCommand): table = 'Load_Balancer' def __init__(self, api, lb, endpoint_ip, port_name, source_ip): @@ -1804,16 +1804,15 @@ def __init__(self, api, hcg_id, chassis, priority, **columns): super().__init__(api) - self.hcg_id = hcg_id + self.hcg = hcg_id self.chassis = chassis self.priority = priority self.columns = columns def run_idl(self, txn): - hc_group = self.api.lookup('HA_Chassis_Group', self.hcg_id) + hc_group = self.api.lookup('HA_Chassis_Group', self.hcg) found = False - hc = None - for hc in hc_group.ha_chassis: + for hc in getattr(hc_group, 'ha_chassis', []): if hc.chassis_name != self.chassis: continue found = True @@ -1835,26 +1834,29 @@ def __init__(self, api, hcg_id, chassis, if_exists=False): super().__init__(api) - self.hcg_id = hcg_id + self.hcg = hcg_id self.chassis = chassis self.if_exists = if_exists def run_idl(self, txn): try: - hc_group = self.api.lookup('HA_Chassis_Group', self.hcg_id) - except idlutils.RowNotFound: + hc_group = self.api.lookup('HA_Chassis_Group', self.hcg) + except idlutils.RowNotFound as exc: if self.if_exists: return + raise RuntimeError('HA Chassis Group %s does not exist' % + utils.get_uuid(self.hcg)) from exc + hc = None - for hc in hc_group.ha_chassis: + for hc in getattr(hc_group, 'ha_chassis', []): if hc.chassis_name == self.chassis: break else: if self.if_exists: return raise RuntimeError( - 'HA Chassis %s does not exist' % self.hcg_id) + 'HA Chassis %s does not exist' % utils.get_uuid(self.hcg)) hc_group.delvalue('ha_chassis', hc) hc.delete() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.2.0/ovsdbapp/schema/ovn_northbound/impl_idl.py new/ovsdbapp-2.2.1/ovsdbapp/schema/ovn_northbound/impl_idl.py --- old/ovsdbapp-2.2.0/ovsdbapp/schema/ovn_northbound/impl_idl.py 2022-11-16 15:09:53.000000000 +0100 +++ new/ovsdbapp-2.2.1/ovsdbapp/schema/ovn_northbound/impl_idl.py 2023-02-10 17:02:24.000000000 +0100 @@ -289,7 +289,7 @@ return cmd.LbDelHealthCheckCommand(self, lb, hc_uuid, if_exists) def lb_add_ip_port_mapping(self, lb, endport_ip, port_name, source_ip): - return cmd.LbAddIpPortMappingСommand(self, lb, endport_ip, + return cmd.LbAddIpPortMappingCommand(self, lb, endport_ip, port_name, source_ip) def lb_del_ip_port_mapping(self, lb, endport_ip): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.2.0/ovsdbapp/tests/functional/schema/ovn_northbound/test_impl_idl.py new/ovsdbapp-2.2.1/ovsdbapp/tests/functional/schema/ovn_northbound/test_impl_idl.py --- old/ovsdbapp-2.2.0/ovsdbapp/tests/functional/schema/ovn_northbound/test_impl_idl.py 2022-11-16 15:09:53.000000000 +0100 +++ new/ovsdbapp-2.2.1/ovsdbapp/tests/functional/schema/ovn_northbound/test_impl_idl.py 2023-02-10 17:02:24.000000000 +0100 @@ -2192,6 +2192,37 @@ check_error=True) self.assertEqual([], hcg.ha_chassis) + def test_ha_chassis_group_add_delete_chassis_within_txn(self): + with self.api.create_transaction(check_error=True) as txn: + hcg_cmd = txn.add(self.api.ha_chassis_group_add(self.hcg_name)) + priority = 20 + txn.add(self.api.ha_chassis_group_add_chassis( + hcg_cmd, self.chassis, priority)) + + # Assert that the HA Chassis entry was created + hcg = self.api.ha_chassis_group_get(self.hcg_name).execute( + check_error=True) + hc = self.api.db_find( + 'HA_Chassis', + ('chassis_name', '=', self.chassis)).execute(check_error=True) + self.assertEqual(priority, hc[0]['priority']) + ha_chassis_uuid_list = [hc.uuid for hc in hcg.ha_chassis] + self.assertEqual(ha_chassis_uuid_list, [hc[0]['_uuid']]) + + with self.api.create_transaction(check_error=True) as txn: + hcg_cmd = txn.add(self.api.ha_chassis_group_add(self.hcg_name, + may_exist=True)) + txn.add(self.api.ha_chassis_group_del_chassis(hcg_cmd, + self.chassis)) + + hcg = self.api.ha_chassis_group_get(self.hcg_name).execute( + check_error=True) + ha = self.api.db_find( + 'HA_Chassis', + ('chassis_name', '=', self.chassis)).execute(check_error=True) + self.assertEqual([], ha) + self.assertEqual([], hcg.ha_chassis) + def test_ha_chassis_group_if_exists(self): self.api.ha_chassis_group_add(self.hcg_name).execute(check_error=True) self.api.ha_chassis_group_add_chassis( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.2.0/ovsdbapp/tests/unit/backend/ovs_idl/test_idlutils.py new/ovsdbapp-2.2.1/ovsdbapp/tests/unit/backend/ovs_idl/test_idlutils.py --- old/ovsdbapp-2.2.0/ovsdbapp/tests/unit/backend/ovs_idl/test_idlutils.py 2022-11-16 15:09:53.000000000 +0100 +++ new/ovsdbapp-2.2.1/ovsdbapp/tests/unit/backend/ovs_idl/test_idlutils.py 2023-02-10 17:02:24.000000000 +0100 @@ -50,11 +50,19 @@ class MockCommand(api.Command): def __init__(self, result): - self.result = result + self._result = result def execute(self, **kwargs): pass + @property + def result(self): + return self._result + + @result.setter + def result(self, value): + self._result = value + class TestIdlUtils(base.TestCase): def test_condition_match(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.2.0/ovsdbapp/utils.py new/ovsdbapp-2.2.1/ovsdbapp/utils.py --- old/ovsdbapp-2.2.0/ovsdbapp/utils.py 2022-11-16 15:09:53.000000000 +0100 +++ new/ovsdbapp-2.2.1/ovsdbapp/utils.py 2023-02-10 17:02:24.000000000 +0100 @@ -13,6 +13,11 @@ import uuid import netaddr +from ovs.db import idl + +from ovsdbapp import api +from ovsdbapp.backend.ovs_idl import rowview + # NOTE(twilson) Clearly these are silly, but they are good enough for now # I'm happy for someone to replace them with better parsing @@ -76,3 +81,15 @@ return str(uuid.UUID(val)).replace('-', '') == _format_uuid_string(val) except (TypeError, ValueError, AttributeError): return False + + +def get_uuid(reg_uuid_or_cmd): + """Return the UUID of a UUID itself or a BaseCommand""" + if isinstance(reg_uuid_or_cmd, api.Command): + reg_uuid = reg_uuid_or_cmd.result + if isinstance(reg_uuid, (rowview.RowView, idl.Row)): + reg_uuid = reg_uuid.uuid + else: + reg_uuid = reg_uuid_or_cmd + + return reg_uuid diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.2.0/ovsdbapp.egg-info/PKG-INFO new/ovsdbapp-2.2.1/ovsdbapp.egg-info/PKG-INFO --- old/ovsdbapp-2.2.0/ovsdbapp.egg-info/PKG-INFO 2022-11-16 15:11:02.000000000 +0100 +++ new/ovsdbapp-2.2.1/ovsdbapp.egg-info/PKG-INFO 2023-02-10 17:02:53.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.2 Name: ovsdbapp -Version: 2.2.0 +Version: 2.2.1 Summary: A library for creating OVSDB applications Home-page: https://pypi.org/project/ovsdbapp/ Author: OpenStack diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.2.0/ovsdbapp.egg-info/pbr.json new/ovsdbapp-2.2.1/ovsdbapp.egg-info/pbr.json --- old/ovsdbapp-2.2.0/ovsdbapp.egg-info/pbr.json 2022-11-16 15:11:02.000000000 +0100 +++ new/ovsdbapp-2.2.1/ovsdbapp.egg-info/pbr.json 2023-02-10 17:02:53.000000000 +0100 @@ -1 +1 @@ -{"git_version": "5f429b7", "is_release": true} \ No newline at end of file +{"git_version": "7733f0c", "is_release": true} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.2.0/tox.ini new/ovsdbapp-2.2.1/tox.ini --- old/ovsdbapp-2.2.0/tox.ini 2022-11-16 15:09:53.000000000 +0100 +++ new/ovsdbapp-2.2.1/tox.ini 2023-02-10 17:02:24.000000000 +0100 @@ -1,11 +1,10 @@ [tox] -minversion = 3.1.1 +minversion = 3.18.0 envlist = py3,pep8 -skipsdist = True ignore_basepython_conflict = True [testenv] -basepython = python3 +basepython = {env:TOX_PYTHON:python3} usedevelop = True setenv = VIRTUAL_ENV={envdir} @@ -25,10 +24,11 @@ [testenv:pep8] commands = flake8 - {toxinidir}/tools/coding-checks.sh --all '{posargs}' + bash {toxinidir}/tools/coding-checks.sh --all '{posargs}' deps = {[testenv]deps} pylint==2.5.3 # GPLv2 +allowlist_externals = bash [testenv:venv] commands = {posargs} @@ -46,7 +46,7 @@ [testenv:pdf-docs] envdir = {toxworkdir}/docs deps = {[testenv:docs]deps} -whitelist_externals = +allowlist_externals = make commands = sphinx-build -W -b latex doc/source doc/build/pdf @@ -71,8 +71,9 @@ OVN_BRANCH={env:OVN_BRANCH:} passenv = KEEP_VENV commands = - {toxinidir}/tools/setup-ovs.sh + bash {toxinidir}/tools/setup-ovs.sh {[testenv]commands} +allowlist_externals = bash [flake8] # W504 line break after binary operator