diff -pruN 10.0.0-1.1/.gitignore 11.0.0-0ubuntu1/.gitignore
--- 10.0.0-1.1/.gitignore	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/.gitignore	1970-01-01 00:00:00.000000000 +0000
@@ -1,58 +0,0 @@
-*.py[cod]
-
-# C extensions
-*.so
-
-# Packages
-*.egg
-*.egg-info
-dist
-build
-.eggs
-eggs
-parts
-bin
-var
-sdist
-develop-eggs
-.installed.cfg
-lib
-lib64
-
-# Installer logs
-pip-log.txt
-
-# Unit test / coverage reports
-.coverage
-.tox
-nosetests.xml
-.testrepository
-.stestr
-.venv
-
-# Translations
-*.mo
-
-# Mr Developer
-.mr.developer.cfg
-.project
-.pydevproject
-
-# Complexity
-output/*.html
-output/*/index.html
-
-# Sphinx
-doc/build
-
-# pbr generates these
-AUTHORS
-ChangeLog
-
-# Editors
-*~
-.*.swp
-.*sw?
-
-# Files created by releasenotes build
-releasenotes/build
diff -pruN 10.0.0-1.1/.gitreview 11.0.0-0ubuntu1/.gitreview
--- 10.0.0-1.1/.gitreview	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/.gitreview	1970-01-01 00:00:00.000000000 +0000
@@ -1,4 +0,0 @@
-[gerrit]
-host=review.opendev.org
-port=29418
-project=openstack/tap-as-a-service.git
diff -pruN 10.0.0-1.1/.pylintrc 11.0.0-0ubuntu1/.pylintrc
--- 10.0.0-1.1/.pylintrc	1970-01-01 00:00:00.000000000 +0000
+++ 11.0.0-0ubuntu1/.pylintrc	2023-03-22 12:41:36.000000000 +0000
@@ -0,0 +1,125 @@
+# The format of this file isn't really documented; just use --generate-rcfile
+[MASTER]
+# Add <file or directory> to the black list. It should be a base name, not a
+# path. You may set this option multiple times.
+ignore=.git,tests
+
+[MESSAGES CONTROL]
+# NOTE(gus): This is a long list.  A number of these are important and
+# should be re-enabled once the offending code is fixed (or marked
+# with a local disable)
+disable=
+# "F" Fatal errors that prevent further processing
+ import-error,
+# "I" Informational noise
+ c-extension-no-member,
+ locally-disabled,
+# "E" Error for important programming issues (likely bugs)
+ access-member-before-definition,
+ no-member,
+ no-method-argument,
+ no-self-argument,
+ not-an-iterable,
+# "W" Warnings for stylistic problems or minor programming issues
+ abstract-method,
+ arguments-differ,
+ attribute-defined-outside-init,
+ bad-indentation,
+ broad-except,
+ dangerous-default-value,
+ expression-not-assigned,
+ fixme,
+ global-statement,
+ keyword-arg-before-vararg,
+ literal-comparison,
+ non-parent-init-called,
+ not-callable,
+ protected-access,
+ raise-missing-from,
+ redefined-builtin,
+ redefined-outer-name,
+ signature-differs,
+ super-init-not-called,
+ unpacking-non-sequence,
+ unused-argument,
+ unused-import,
+ unused-variable,
+ useless-super-delegation,
+# TODO(dougwig) - disable nonstandard-exception while we have neutron_lib shims
+# "C" Coding convention violations
+ consider-iterating-dictionary,
+ consider-using-enumerate,
+ consider-using-f-string,
+ invalid-name,
+ len-as-condition,
+ missing-docstring,
+ multiple-statements,
+ singleton-comparison,
+ superfluous-parens,
+ ungrouped-imports,
+ wrong-import-order,
+# "R" Refactor recommendations
+ consider-merging-isinstance,
+ consider-using-ternary,
+ duplicate-code,
+ inconsistent-return-statements,
+ no-else-return,
+ redefined-argument-from-local,
+ simplifiable-if-statement,
+ too-few-public-methods,
+ too-many-ancestors,
+ too-many-arguments,
+ too-many-branches,
+ too-many-instance-attributes,
+ too-many-lines,
+ too-many-locals,
+ too-many-nested-blocks,
+ too-many-public-methods,
+ too-many-return-statements,
+ too-many-statements,
+# new for python3 version of pylint
+ consider-using-set-comprehension,
+ unnecessary-pass,
+ useless-object-inheritance
+
+[BASIC]
+# Variable names can be 1 to 31 characters long, with lowercase and underscores
+variable-rgx=[a-z_][a-z0-9_]{0,30}$
+
+# Argument names can be 2 to 31 characters long, with lowercase and underscores
+argument-rgx=[a-z_][a-z0-9_]{1,30}$
+
+# Method names should be at least 3 characters long
+# and be lowercased with underscores
+method-rgx=([a-z_][a-z0-9_]{2,}|setUp|tearDown)$
+
+# Module names matching neutron-* are ok (files in bin/)
+module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+)|(neutron-[a-z0-9_-]+))$
+
+# Don't require docstrings on tests.
+no-docstring-rgx=((__.*__)|([tT]est.*)|setUp|tearDown)$
+
+[FORMAT]
+# Maximum number of characters on a single line.
+max-line-length=79
+
+[VARIABLES]
+# List of additional names supposed to be defined in builtins. Remember that
+# you should avoid to define new builtins when possible.
+# _ is used by our localization
+additional-builtins=_
+
+[IMPORTS]
+# Deprecated modules which should not be used, separated by a comma
+deprecated-modules=
+# should use oslo_serialization.jsonutils
+ json,
+ six
+
+[TYPECHECK]
+# List of module names for which member attributes should not be checked
+ignored-modules=_MovedItems
+
+[REPORTS]
+# Tells whether to display a full report or only the messages
+reports=no
diff -pruN 10.0.0-1.1/.zuul.yaml 11.0.0-0ubuntu1/.zuul.yaml
--- 10.0.0-1.1/.zuul.yaml	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/.zuul.yaml	2023-03-22 12:41:36.000000000 +0000
@@ -3,7 +3,7 @@
       - openstack-cover-jobs-neutron
       - build-openstack-docs-pti
       - check-requirements
-      - openstack-python3-zed-jobs-neutron
+      - openstack-python3-jobs-neutron
     check:
       jobs:
         - neutron-tempest-plugin-tap-as-a-service
@@ -13,4 +13,5 @@
     periodic-weekly:
       jobs:
         - openstack-tox-py39
+        - openstack-tox-py39-with-oslo-master
         - neutron-tempest-plugin-tap-as-a-service
diff -pruN 10.0.0-1.1/AUTHORS 11.0.0-0ubuntu1/AUTHORS
--- 10.0.0-1.1/AUTHORS	1970-01-01 00:00:00.000000000 +0000
+++ 11.0.0-0ubuntu1/AUTHORS	2023-03-22 12:42:08.000000000 +0000
@@ -0,0 +1,57 @@
+Abhishek Raut <rauta@vmware.com>
+Andrea Frittoli <andrea.frittoli@gmail.com>
+Andreas Jaeger <aj@suse.com>
+Anh Tran <anhtt@vn.fujitsu.com>
+Anil Rao <arao012@gmail.com>
+Boden R <bodenvmw@gmail.com>
+Corey Bryant <corey.bryant@canonical.com>
+Deepak Tiwari <deepak.tiwari@aricent.com>
+Dongcan Ye <hellochosen@gmail.com>
+Doug Hellmann <doug@doughellmann.com>
+Duong Ha-Quang <duonghq@vn.fujitsu.com>
+Elod Illes <elod.illes@est.tech>
+Fawad Khaliq <fawad@plumgrid.com>
+Gary Kotton <gkotton@vmware.com>
+Ghanshyam Mann <gmann@ghanshyammann.com>
+Hangdong Zhang <hdzhang@fiberhome.com>
+Henry Gessau <HenryG@gessau.net>
+Henry Gessau <gessau@gmail.com>
+Ian Wienand <iwienand@redhat.com>
+James Page <james.page@ubuntu.com>
+Jeremy Stanley <fungi@yuggoth.org>
+Kazuhiro Suzuki <kaz@jp.fujitsu.com>
+Monty Taylor <mordred@inaugust.com>
+Nguyen Hung Phuong <phuongnh@vn.fujitsu.com>
+Ondřej Nový <ondrej.novy@firma.seznam.cz>
+OpenStack Release Bot <infra-root@openstack.org>
+Reedip <reedip.banerjee@gmail.com>
+Reedip <reedip.banerjee@nectechnologies.in>
+Reedip <reedip14@gmail.com>
+Reedip Banerjee <reedip.banerjee@nectechnologies.in>
+Robert Simon <robert.simon@est.tech>
+Rodolfo Alonso Hernandez <ralonsoh@redhat.com>
+Rui Zang <rui.zang@intel.com>
+Slawek Kaplonski <skaplons@redhat.com>
+Thomas Morin <thomas.morin@orange.com>
+Trevor McCasland <TM2086@att.com>
+Viktor Krivak <viktor.krivak@ultimum.io>
+YAMAMOTO Takashi <yamamoto@midokura.com>
+Yatin Kumbhare <yatinkumbhare@gmail.com>
+Yoichiro Iura <iura.yoichiro@jp.fujitsu.com>
+bhavani.cr <bhavani.r@nectechnologies.in>
+bk160f <bk160f@att.com>
+cheng <tangch318@gmail.com>
+daohanli <dhli5759@fiberhome.com>
+elajkat <lajos.katona@est.tech>
+ghanshyam <ghanshyammann@gmail.com>
+huang.zhiping <huang.zhiping@99cloud.net>
+jessegler <jess.egler@gmail.com>
+liyou01 <liyou01@inspur.com>
+reedip <reedip.banerjee@nectechnologies.in>
+ricolin <rico.lin@easystack.cn>
+sunqingliang6 <sunqingliang@inspur.com>
+venkatamahesh <venkatamaheshkotha@gmail.com>
+vnyyad <vinay.yadhav@ericsson.com>
+yatinkarel <ykarel@redhat.com>
+zitptan <nitish.patcherla@est.tech>
+zoushilin <zoushl@fiberhome.com>
diff -pruN 10.0.0-1.1/ChangeLog 11.0.0-0ubuntu1/ChangeLog
--- 10.0.0-1.1/ChangeLog	1970-01-01 00:00:00.000000000 +0000
+++ 11.0.0-0ubuntu1/ChangeLog	2023-03-22 12:42:08.000000000 +0000
@@ -0,0 +1,275 @@
+CHANGES
+=======
+
+11.0.0
+------
+
+* CI: Add openstack-tox-py39-with-oslo-master to periodic weekly queue
+* Add pylint to pep8 and adopt code to the results
+* Switch away from Mock auto\_spec=True
+* Fix tox.ini for tox4
+* Cleanup tox.ini
+* Switch to 2023.1 Python3 unit tests and generic template name
+* Update master for stable/zed
+
+10.0.0
+------
+
+* Py3: Remove six
+* Add WebTest as dependency for testing
+* Modify taas extensions to use neutron-lib API def
+* setup.cfg: Replace dashes with underscores
+* Make neutron tempest plugin job voting again
+* Add context for all SQL transactions
+* Update python testing as per zed cycle teting runtime
+* test: Make py310 passing
+* py310: Add rpm packages to bindep.txt
+* Code cleaning: make RPC method signatures more meaningful
+* Add weekly jobs
+* tests: Use Zed job definitions
+* Update master for stable/yoga
+* Do not try to call status setting methods in case of periodic task
+* Remove ovs-vsctl direct calls
+
+9.0.0
+-----
+
+* Use ovs TUNNEL\_ constants from new location
+* Execute neutron-db-manage only if q-svc is enabled
+* CLI: remove leftover logs from tap-flow create
+* Update leftover x namespace to openstack
+
+8.0.0
+-----
+
+* Tests: remove tempest plugin from taas repository
+* Use payload for PORT PRECOMMIT\_DELETE event
+* Use ovs constants from neutron-lib
+* CFG: Remove unnused cfg options
+* taas OSC commands
+* Add condition for the create\_tap\_service method in ovs\_taas.py
+* Make master working again
+
+7.0.0
+-----
+
+* Change tempest job to run on Ubuntu Focal
+* Switch to hacking 3.0.1 and to testing on focal
+* Enhancements to TaaS agent driver failure handling
+* Enable doc building job
+* Complete removal of dependency on the "mock" package
+* Update master for stable/train
+* Remove python2 jobs for tap-as-a-service
+* Adds policy in code to Tap-as-a-Service
+* Update deliverables for 6.0.0/train
+
+6.0.0
+-----
+
+* Add local bindep.txt
+* Switch to stestr
+* Update URLs after opendev.org migration
+* OpenDev Migration Patch
+* DB migration milestone for Stein
+* Update master for stable/stein
+* Update deliverables for 5.0.0/stein
+
+5.0.0
+-----
+
+* Add SRIOV mirroring support to Tap as a Service
+* Add a job from tap-as-a-service-tempest-plugin
+* Update psycopg2 to fix lower constraint issue
+* Replace openstack.org git:// URLs with https://
+* stop using common db mixin
+* Clear associated tap resources on port delete
+* use rpc from neutron-lib
+* Change openstack-dev to openstack-discuss
+* Use template for lower-constraints
+* Changes to tap service and flow update tests in taas Client
+* use neutron-lib for \_model\_query
+* use common rpc and exceptions from neutron-lib
+* DB migration milestone for Rocky
+* Update deliverables for 4.0.0/rocky
+
+4.0.0
+-----
+
+* Fix non-absolute imports
+* add local tox targets for pep8 and py3
+* Opt-in for neutron-lib consumption patches
+* Require neutron-lib explicitly
+* Update to use setup\_extension
+* add lower-constraints job
+* modify grammer mistake
+* fix a code annotation
+* Avoid tox-install.sh
+* remove unused plugin.get\_plugin\_name()
+* Updated from global requirements
+* DB migration milestone for Queens
+* Update reno for stable/queens
+* Add deliverables info
+* Zuul: Remove project name
+
+3.0.0
+-----
+
+* Add release notes
+* Update for os-testr 1.0.0 / stestr
+* Switch to tempest.common.utils.requires\_ext
+* Updated from global requirements
+* Move legacy jobs to project
+* Migration of Agent Extension to Neutron-Lib
+* Shrink Tempest scenario manager copy
+* DB migration milestone for Pike
+
+2.0.0
+-----
+
+* Add coverage threshold
+* tox.ini: Fix cover target
+* Update the documentation link for doc migration
+* Update neutron cli unit tests
+* L2 agent extension support for Tap-as-a-Service
+* Replace the usage of 'admin\_manager' with 'os\_admin'
+* Remove MANIFEST.in
+* devstackgaterc: Enable n-api-meta
+* Updated from global requirements
+* Fixes enable taas id reuse
+* Enable to stop taas\_openvswitch\_agent on unstack
+* Updated from global requirements
+* devstack: Update after systemd change
+* Remove get\_namespace from API extensions
+* Drop py34 target in tox.ini and setup.cfg
+* Undefined name '\_'
+* Remove log translations
+* Fix breakage due to neutron-lib update
+* Use data\_utils from tempest.lib
+* Use get\_random\_mac from neutron-lib
+* Updated from global requirements
+* [Fix gate]Update test requirement
+* Use neutron-lib's context module
+* tempest: Switch to local copy of tempset/scenario/manager.py
+* devstack: Adapt to lib/neutron
+* Remove unused logging import
+* Updated from global requirements
+
+1.0.0
+-----
+
+* Prepare for using standard python tests
+* devstack: Stop using Q\_PLUGIN\_EXTRA\_CONF\_FILES
+* Added link for modindex
+* Add DB migration milestone for Ocata
+* Enable placement on gate
+* Switch to decorators.idempotent\_id
+* Add tap-as-a-service spec
+* Remove unnecessary executable mode of some source files
+* Updated from global requirements
+* Updated from global requirements
+* Use ExtensionDescriptor from neutron-lib
+* Use tox\_install convention
+* Remove PLURALS
+* Use the new neutron manager
+* Import model\_base from neutron-lib rather than neutron
+* Include alembic migrations in module
+* Updated from global requirements
+* Updated from global requirements
+* Add status field in the TaaS API
+* Use neutron-lib modules for neutron\_taas
+* Disable VLAN id checks in create\_tap\_flow and delete\_tap\_flow
+* Fix i18n translation imports
+* Tag the alembic migration revisions for Newton
+* Fix Bug 1623457
+* Switch to internal \_i18n pattern, as per oslo\_i18n guidelines
+* Updated from global requirements
+* Rename DB columns: tenant -> project
+* Enable DeprecationWarning in test environments
+* Bring models in sync with migrations, add test
+* Fix a few db vs migration mismatch
+* UT: Fix "RuntimeError: stop called on unstarted patcher"
+* presentations.rst: Add another TaaS related Austin presentation
+* Fix can't delete tap service on agent site
+* Add Python 3.5 classifier and venv
+* Add more unit tests to test DB mixin class for TaaS
+* Add testresources to test-requirements
+* Make get\_plugin\_type classmethod
+* Provide support for tap-\*-update
+* Updated from global requirements
+* Fix validation of direction on TapFlow
+* Add unit tests to test DB mixin class for TaaS
+* Fix typo in class name
+* Updated from global requirements
+* Support service framework to separate plugin logic
+* Remove network-id from tap-service
+* Use call\_and\_ignore\_notfound\_exc directly
+* doc: reference OpenStack Austin presentation
+* CLI: Turn comments into docstring
+* Fix tap-flow CLI to take service parameter
+* Fix help text for tap flow command
+* Remove new= argument from create\_connection
+* Initialize alembic branches for TaaS repo
+* devstackgaterc: Remove stale reference to n-obj
+* Dont pass tenant-id in request unless given
+* Improve exception messages
+* Fix API end point for tapservice/tapflow
+* Updated from global requirements
+* devstackgaterc: Disable unrelated services
+* Update tempest plugin after tempest-lib deprecation
+* Fix Gate tests
+* Avoid using \_get\_tenant\_id\_for\_create
+* Add report to coverage
+* Deprecated tox -downloadcache option removed
+* Change stackforge to openstack
+* Fix in install and api guide
+* Remove old TaaS CLI repo, update API reference
+* Re-implement TaaS CLI as a NeutronClient extension
+* Fix db error when running python34 unit tests
+* Fix TempestPlugin function signature
+* Delete python bytecode before every test run
+* Create specs directory
+* devstackgaterc: Specify tests to run on gate
+* Add a few dumb api tests
+* Add TaaS services client for tempest
+* Add a skeleton tempest plugin
+* Remove old install instructions and script
+* Add a minimum documentation for devstack plugin
+* Add devstack plugin
+* unit tests: Use the correct base class
+* Add alembic migration
+* Add an entry point for the service plugin
+* Add entry points for cli commands
+* Fix taas\_init\_ops
+* INSTALL.rst: Tweak the description of ML2 extension driver
+* Updated from global requirements
+* Remove repos.py replacement
+* Move constants.TAAS to our local module for now
+* Update .gitreview for new namespace
+* Add tests for the rest of plugin methods
+* Add some more tests
+* tox.ini: Fix cover by giving the source directory explicitly
+* tox.ini: Fix a typo in cover env
+* Add a few more tests
+* setup.cfg: Drop python 2.6 and 3.3
+* Start writing tests
+* Move topics definitions to our own module for now
+* Python3 support improvement
+* test-requirements: Remove discover
+* Remove some commented out code
+* Misc documentation improvements
+* Change ignore-errors to ignore\_errors
+* Improved install script and updated the install readme file
+* Removing the reference shell script as now its part of the taas linux ovs driver
+* Deleting neutron configuration file as its no longer needed in the dependencies folder
+* Edited the READEM.rst file to refer API Reference document
+* Adding the API Reference guide for TaaS
+* Bug fix in the \_\_init\_\_.py file
+* Fixed misssing path prefix in taas\_plugin.py
+* Changing all oslo.config to oslo\_config
+* This is the initial commit of TaaS sources code
+* Changed tox.ini file to reflect only py27 and pep8
+* Adding an install script to install TaaS
+* Changing the README.rst file for tap-as-a-service
+* Changed the Readme file and Added INSTALL.rst file
+* Initial Cookiecutter Commit
+* Added .gitreview
diff -pruN 10.0.0-1.1/PKG-INFO 11.0.0-0ubuntu1/PKG-INFO
--- 10.0.0-1.1/PKG-INFO	1970-01-01 00:00:00.000000000 +0000
+++ 11.0.0-0ubuntu1/PKG-INFO	2023-03-22 12:42:09.068151200 +0000
@@ -0,0 +1,44 @@
+Metadata-Version: 1.1
+Name: tap-as-a-service
+Version: 11.0.0
+Summary: Tap-as-a-Service (TaaS) is an extension to the OpenStack network service (Neutron), it provides remote port mirroring capability for tenant virtual networks.
+Home-page: http://www.openstack.org/
+Author: OpenStack
+Author-email: openstack-discuss@lists.openstack.org
+License: UNKNOWN
+Description: ================
+        Tap as a Service
+        ================
+        Tap-as-a-Service (TaaS) is an extension to the OpenStack network service (Neutron).
+        It provides remote port mirroring capability for tenant virtual networks.
+        
+        Port mirroring involves sending a copy of packets entering and/or leaving one
+        port to another port, which is usually different from the original destinations
+        of the packets being mirrored.
+        
+        
+        This service has been primarily designed to help tenants (or the cloud administrator)
+        debug complex virtual networks and gain visibility into their VMs, by monitoring the
+        network traffic associated with them. TaaS honors tenant boundaries and its mirror
+        sessions are capable of spanning across multiple compute and network nodes. It serves
+        as an essential infrastructure component that can be utilized for supplying data to a
+        variety of network analytics and security applications (e.g. IDS).
+        
+        * Free software: Apache license
+        * API Reference: https://opendev.org/openstack/tap-as-a-service/src/branch/master/API_REFERENCE.rst
+        * Source: https://opendev.org/openstack/tap-as-a-service/
+        * Bugs: https://bugs.launchpad.net/tap-as-a-service
+        
+        For installing Tap-as-a-Service with Devstack please read the INSTALL.rst file
+        
+        
+Platform: UNKNOWN
+Classifier: Environment :: OpenStack
+Classifier: Intended Audience :: Information Technology
+Classifier: Intended Audience :: System Administrators
+Classifier: License :: OSI Approved :: Apache Software License
+Classifier: Operating System :: POSIX :: Linux
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
diff -pruN 10.0.0-1.1/debian/changelog 11.0.0-0ubuntu1/debian/changelog
--- 10.0.0-1.1/debian/changelog	2022-10-15 10:27:32.000000000 +0000
+++ 11.0.0-0ubuntu1/debian/changelog	2023-03-23 19:09:10.000000000 +0000
@@ -1,126 +1,204 @@
-neutron-taas (10.0.0-1.1) unstable; urgency=medium
+neutron-taas (11.0.0-0ubuntu1) lunar; urgency=medium
 
-  * Non-maintainer upload.
-  * No source change upload to rebuild with debhelper 13.10.
+  * New upstream release for OpenStack Antelope.
 
- -- Michael Biebl <biebl@debian.org>  Sat, 15 Oct 2022 12:27:32 +0200
+ -- Corey Bryant <corey.bryant@canonical.com>  Thu, 23 Mar 2023 15:09:10 -0400
 
-neutron-taas (10.0.0-1) unstable; urgency=medium
+neutron-taas (11.0.0~rc1-0ubuntu1) lunar; urgency=medium
 
-  * New upstream release.
-  * Add python3-webtest as build-depends.
-  * Rebased remove-auto_spec.patch.
+  * d/watch: Get tarballs from tarballs.opendev.org.
+  * New upstream release for OpenStack Antelope.
 
- -- Thomas Goirand <zigo@debian.org>  Thu, 06 Oct 2022 10:57:34 +0200
+ -- Corey Bryant <corey.bryant@canonical.com>  Wed, 01 Mar 2023 10:11:09 -0500
 
-neutron-taas (9.0.0-1) unstable; urgency=medium
+neutron-taas (10.0.0+git2023011010.1ffcb341-0ubuntu1) lunar; urgency=medium
 
-  * New upstream release.
+  * New upstream snapshot for OpenStack Antelope.
+  * d/control: Align (Build-)Depends with upstream.
 
- -- Thomas Goirand <zigo@debian.org>  Wed, 30 Mar 2022 22:47:13 +0200
+ -- Corey Bryant <corey.bryant@canonical.com>  Tue, 10 Jan 2023 10:23:59 -0500
 
-neutron-taas (9.0.0~rc1-2) unstable; urgency=medium
+neutron-taas (10.0.0-0ubuntu1) kinetic; urgency=medium
 
-  * Uploading to unstable.
+  * New upstream release for OpenStack Zed.
+  * d/control: Align (Build-)Depends with upstream.
 
- -- Thomas Goirand <zigo@debian.org>  Fri, 25 Mar 2022 15:46:06 +0100
+ -- Corey Bryant <corey.bryant@canonical.com>  Wed, 05 Oct 2022 17:18:23 -0400
 
-neutron-taas (9.0.0~rc1-1) experimental; urgency=medium
+neutron-taas (9.0.0+git2022091316.fc72381-0ubuntu1) kinetic; urgency=medium
 
-  * New upstream release.
-  * Fixed (build-)depends for this release.
+  * New upstream snapshot for OpenStack Zed.
+  * d/control: Align (Build-)Depends with upstream.
 
- -- Thomas Goirand <zigo@debian.org>  Mon, 14 Mar 2022 17:03:55 +0100
+ -- Corey Bryant <corey.bryant@canonical.com>  Tue, 13 Sep 2022 16:46:56 -0400
 
-neutron-taas (8.0.0-1) unstable; urgency=medium
+neutron-taas (9.0.0+git2022071815.fedca42-0ubuntu1) kinetic; urgency=medium
 
-  * New upstream release.
-  * Debhelper compat level 11.
-  * Fixed (build-)depends for this release, and remove versions when satisfied
-    in Bullseye.
-  * Add remove-auto_spec.patch (Closes: #1002427).
+  * New upstream snapshot for OpenStack Zed.
+  * d/control: Ensure openstack-pkg-tools has CIS hardening for log files
+    and pkgos_adduser.
 
- -- Thomas Goirand <zigo@debian.org>  Thu, 23 Dec 2021 14:46:43 +0100
+ -- Corey Bryant <corey.bryant@canonical.com>  Mon, 18 Jul 2022 15:28:42 -0400
 
-neutron-taas (7.0.0-1) unstable; urgency=medium
+neutron-taas (9.0.0+git2022060610.2d3d736-0ubuntu1) kinetic; urgency=medium
 
-  [ Ondřej Nový ]
-  * Run wrap-and-sort -bastk.
-  * Bump Standards-Version to 4.4.1.
+  * New upstream snapshot for OpenStack Zed.
+  * d/control: Update standards version to 4.6.1.
+  * d/p/*: Dropped. Fixed in upstream snapshot.
 
-  [ Thomas Goirand ]
-  * Replaced upstream VCS URLs, as it's not mirrored in Github anymore.
-  * New upstream release.
-  * Fixed (build-)depends for this release. (Closes: #973116).
+ -- Corey Bryant <corey.bryant@canonical.com>  Mon, 06 Jun 2022 10:01:25 -0400
 
- -- Thomas Goirand <zigo@debian.org>  Mon, 02 Nov 2020 10:20:07 +0100
+neutron-taas (8.0.0+git2022011308.c9d0468-0ubuntu1) jammy; urgency=medium
 
-neutron-taas (5.0.0-1) unstable; urgency=medium
+  * New upstream snapshot for OpenStack Yoga.
+  * d/control, d/rules: Bump debhelper compat to 13.
+  * d/control: Remove remaining py2 BDs.
 
-  [ Ondřej Nový ]
-  * Use debhelper-compat instead of debian/compat.
+ -- Corey Bryant <corey.bryant@canonical.com>  Thu, 13 Jan 2022 08:49:28 -0500
 
-  [ Thomas Goirand ]
-  * New upstream release.
+neutron-taas (8.0.0+git2021120910.351c1fb-0ubuntu1) jammy; urgency=medium
+
+  * New upstream snapshot for OpenStack Yoga.
+  * d/control: Align (Build-)Depends with upstream.
+  * d/p/switch-away-from-mock-auto-spec.patch: Fix unit test failure
+    due to use of Mock with autospec=True.
+
+ -- Corey Bryant <corey.bryant@canonical.com>  Thu, 09 Dec 2021 10:09:10 -0500
+
+neutron-taas (7.0.0+git2021090913.5088e8e-0ubuntu1) impish; urgency=medium
+
+  * New upstream snapshot for OpenStack Xena.
+
+ -- Corey Bryant <corey.bryant@canonical.com>  Thu, 09 Sep 2021 13:27:34 -0400
+
+neutron-taas (7.0.0+git2021062816.33c25b5-0ubuntu1) impish; urgency=medium
+
+  * New upstream snapshot for OpenStack Xena.
+  * d/control: Align (Build-)Depends with upstream.
 
- -- Thomas Goirand <zigo@debian.org>  Sat, 20 Jul 2019 17:35:20 +0200
+ -- Corey Bryant <corey.bryant@canonical.com>  Mon, 28 Jun 2021 16:47:27 -0400
 
-neutron-taas (3.0.0+2018.08.05.git.84846d52fd-1) unstable; urgency=medium
+neutron-taas (7.0.0-0ubuntu2) impish; urgency=medium
 
-  [ Ondřej Nový ]
-  * d/control: Use team+openstack@tracker.debian.org as maintainer
+  * d/control: Drop python-pbr.
 
-  [ Thomas Goirand ]
-  * New upstream release:
-    - Fix FTBFS with latest Neutron (Closes: #909371).
-  * Fixed (build-)depends for this release.
+ -- Chris MacNaughton <chris.macnaughton@ubuntu.com>  Wed, 23 Jun 2021 08:04:26 +0000
 
- -- Thomas Goirand <zigo@debian.org>  Mon, 24 Sep 2018 10:10:34 +0200
+neutron-taas (7.0.0-0ubuntu1) hirsute; urgency=medium
 
-neutron-taas (3.0.0-1) unstable; urgency=medium
+  * d/watch: Get tarballs from pypi.debian.net.
+  * New upstream release for OpenStack Wallaby.
+  * d/control: Add vim BD as tests are failing without it.
 
-  [ Ondřej Nový ]
-  * d/control: Set Vcs-* to salsa.debian.org
+ -- Corey Bryant <corey.bryant@canonical.com>  Fri, 09 Apr 2021 11:09:42 -0400
+
+neutron-taas (6.0.1~git2020101510.b0dac61-0ubuntu1) groovy; urgency=medium
+
+  [ Chris MacNaughton ]
+  * d/control: Update VCS paths for move to lp:~ubuntu-openstack-dev.
+
+  [ Corey Bryant ]
+  * New upstream snapshot for OpenStack Victoria.
+  * d/control: Align (Build-)Depends with upstream.
+
+ -- Corey Bryant <corey.bryant@canonical.com>  Thu, 15 Oct 2020 10:12:17 -0400
+
+neutron-taas (6.0.1~git2020091616.8332a39-0ubuntu1) groovy; urgency=medium
+
+  * New upstream snapshot for OpenStack Victoria.
+  * d/control: Align (Build-)Depends with upstream.
+
+ -- Corey Bryant <corey.bryant@canonical.com>  Wed, 16 Sep 2020 16:10:28 -0400
+
+neutron-taas (6.0.1~git2020021315.0fc14ac-0ubuntu1) focal; urgency=medium
+
+  * New upstream snapshot for OpenStack Ussuri.
+  * d/control: Align (Build-)Depends with upstream.
+
+ -- Corey Bryant <corey.bryant@canonical.com>  Thu, 13 Feb 2020 15:31:47 -0500
+
+neutron-taas (5.0.0-0ubuntu1) eoan; urgency=medium
 
-  [ Thomas Goirand ]
   * New upstream release.
-  * Fixed (build-)depends for this release.
-  * Switched to Python 3 (Closes: #892884).
-  * Updated debian/copyright for this release.
-
- -- Thomas Goirand <zigo@debian.org>  Thu, 15 Mar 2018 23:52:27 +0100
-
-neutron-taas (2.0.0-2) unstable; urgency=medium
-
-  * Uploading to unstable.
-
- -- Thomas Goirand <zigo@debian.org>  Fri, 17 Nov 2017 15:01:17 +0000
-
-neutron-taas (2.0.0-1) experimental; urgency=medium
-
-  [ Daniel Baumann ]
-  * Updating vcs fields.
-  * Updating copyright format url.
-  * Updating maintainer field.
-  * Running wrap-and-sort -bast.
-  * Updating standards version to 4.0.0.
-  * Removing gbp.conf, not used anymore or should be specified in the
-    developers dotfiles.
-  * Updating standards version to 4.0.1.
-  * Updating standards version to 4.1.0.
-
-  [ Thomas Goirand ]
-  * New upstream release:
-    - Fixes unit tests (Closes: #877242).
-  * Fixed (build-)depends for this release.
-  * neutron-taas-openvswitch-agent depends on lsb-base.
-  * Standards-Version is now 4.1.1.
-  * Added myself as uploader.
-  * Do not define OSLO_PACKAGE_VERSION, defined in openstack-pkg-tools.
-  * Using debhelper 10.
-  * python-neutron-taas in section python.
+  * d/control: Align (Build-)Depends with upstream.
+
+ -- James Page <james.page@ubuntu.com>  Thu, 13 Jun 2019 12:04:59 +0100
+
+neutron-taas (5.0.0~b1~git2019031936.9e82992-0ubuntu1) disco; urgency=medium
+
+  * New upstream snapshot for OpensStack Stein.
+
+ -- James Page <james.page@ubuntu.com>  Tue, 19 Mar 2019 11:17:51 +0000
+
+neutron-taas (5.0.0~b1~git2019013155.aee5d28-0ubuntu1) disco; urgency=medium
+
+  * New upstream snapshot for OpensStack Stein.
+  * d/control: Align (Build-)Depends with upstream.
+
+ -- James Page <james.page@ubuntu.com>  Fri, 01 Feb 2019 09:39:34 +0000
+
+neutron-taas (5.0.0~b1~git2018112049.5ffd2b7-0ubuntu1) disco; urgency=medium
+
+  * New upstream snapshot for OpensStack Stein.
+  * d/control,rules: Drop Python 2 support.
+
+ -- James Page <james.page@ubuntu.com>  Tue, 20 Nov 2018 12:00:13 +0000
+
+neutron-taas (4.0.0~a1~git2018083141.84846d5-0ubuntu1) cosmic; urgency=medium
+
+  * New upstream snapshot for OpenStack Rocky.
+  * Add support for Python 3.
+  * Drop neutron-taas-openvswitch-agent package, no longer required as taas is
+    integrated as a L2 agent extension.
+  * d/control: Bumped Standards-Version to 4.2.1.
+
+ -- James Page <james.page@ubuntu.com>  Fri, 31 Aug 2018 14:59:37 +0100
+
+neutron-taas (2.0.0-0ubuntu1) artful; urgency=medium
+
+  * New upstream release for OpenStack Pike.
+  * d/control: Align (Build-)Depends with upstream.
+  * d/neutron-taas-openvswitch-agent.init.in, d/python-neutron-taas.install:
+    Dropped init file and install of /usr/bin as neutron-taas-openvswitch-agent
+    has been dropped in switch to supporting L2 agent extensions.
+
+ -- Corey Bryant <corey.bryant@canonical.com>  Wed, 30 Aug 2017 17:08:37 -0400
+
+neutron-taas (1.0.1~git20170522.e15cbf3-0ubuntu1) artful; urgency=medium
+
+  * d/python-neutron-taas.install: Install any binaries as well as
+    python modules (LP: #1689747).
+  * New upstream snapshot for OpenStack Pike.
+
+ -- James Page <james.page@ubuntu.com>  Tue, 23 May 2017 10:18:20 +0100
+
+neutron-taas (1.0.0-0ubuntu1) zesty; urgency=medium
+
+  [ Chuck Short ]
+  * d/gbp.conf: Update gbp configuration file.
+  * d/control: Update Vcs-* links and maintainers.
+
+  [ James Page ]
+  * New upstream release for OpenStack Mitaka.
+  * Drop all patches, no longer required.
+
+ -- James Page <james.page@ubuntu.com>  Thu, 09 Mar 2017 16:55:51 +0000
+
+neutron-taas (0.0.0+git20161126.094be-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot for Openstack Ocata.
+  * debian/control: Bump version dependencies 
+
+ -- Chuck Short <zulcss@ubuntu.com>  Sat, 26 Nov 2016 09:32:04 -0500
+
+neutron-taas (0.0.0+git20160926.675af77-0ubuntu1) yakkety; urgency=medium
+
+  * New upstream snapshot for OpenStack Newton.
+  * d/p/0001-Include-alembic-migrations-in-module.patch: Cherry pick fix to
+    ensure that alembic migrations are installed as part of the module
+    (LP: #1627656).
 
- -- Thomas Goirand <zigo@debian.org>  Tue, 31 Oct 2017 12:15:23 +0100
+ -- James Page <james.page@ubuntu.com>  Mon, 26 Sep 2016 12:51:34 +0100
 
 neutron-taas (0.0.0+git20160808.c612a729-1) experimental; urgency=medium
 
diff -pruN 10.0.0-1.1/debian/control 11.0.0-0ubuntu1/debian/control
--- 10.0.0-1.1/debian/control	2022-10-06 08:57:34.000000000 +0000
+++ 11.0.0-0ubuntu1/debian/control	2023-03-23 19:09:10.000000000 +0000
@@ -1,51 +1,55 @@
 Source: neutron-taas
 Section: net
 Priority: optional
-Maintainer: Debian OpenStack <team+openstack@tracker.debian.org>
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+XSBC-Original-Maintainer: PKG OpenStack <openstack-devel@lists.alioth.debian.org>
 Uploaders:
  James Page <james.page@ubuntu.com>,
- Thomas Goirand <zigo@debian.org>,
 Build-Depends:
- debhelper-compat (= 11),
+ debhelper-compat (= 13),
  dh-python,
- openstack-pkg-tools,
+ openstack-pkg-tools (>= 119ubuntu1~),
  python3-all,
- python3-pbr,
+ python3-pbr (>= 5.5.0),
  python3-setuptools,
- python3-sphinx,
+ python3-sphinx (>= 2.0.0),
 Build-Depends-Indep:
- python3-babel,
+ python3-babel (>= 2.8.0),
  python3-coverage,
- python3-hacking,
- python3-mock,
- python3-neutron,
+ python3-mock (>= 3.0.0),
+ python3-neutron (>= 2:19.0.0),
  python3-neutron-lib (>= 2.11.0),
- python3-oslosphinx,
- python3-oslotest,
- python3-psycopg2,
- python3-pymysql,
- python3-stestr,
- python3-requests-mock,
- python3-testresources,
- python3-testscenarios,
- python3-testtools,
- python3-webtest,
- subunit,
- testrepository,
-Standards-Version: 4.4.1
-Homepage: https://opendev.org/x/tap-as-a-service
-Vcs-Browser: https://salsa.debian.org/openstack-team/services/neutron-taas
-Vcs-Git: https://salsa.debian.org/openstack-team/services/neutron-taas.git
+ python3-openstackdocstheme (>= 2.2.1),
+ python3-os-testr (>= 0.8.0),
+ python3-oslosphinx (>= 4.7.0),
+ python3-oslotest (>= 1:4.4.1),
+ python3-psycopg2 (>= 2.8.5),
+ python3-pymysql (>= 0.10.0),
+ python3-requests-mock (>= 1.5.0),
+ python3-sphinxcontrib.blockdiag (>= 1.5.4),
+ python3-sphinxcontrib.seqdiag (>= 0.8.4),
+ python3-stestr (>= 3.0.1),
+ python3-subunit (>= 1.4.0),
+ python3-testresources (>= 2.0.1),
+ python3-testscenarios (>= 0.5.0),
+ python3-testtools (>= 2.4.0),
+ python3-webtest (>= 2.0.27),
+ vim,
+Standards-Version: 4.6.1
+Vcs-Git: git://git.launchpad.net/~ubuntu-openstack-dev/ubuntu/+source/neutron-taas
+Homepage: https://opendev.org/openstack/tap-as-a-service
 
-Package: neutron-taas-openvswitch-agent
+Package: neutron-taas-common
 Architecture: all
 Depends:
- neutron-common (>= 2:16.0.0),
- python3-neutron-taas (= ${binary:Version}),
  ${misc:Depends},
- ${ostack-lsb-base},
- ${python3:Depends},
-Description: OpenStack virtual network service - Tap-as-a-Service agent
+Breaks:
+ neutron-taas-openvswitch-agent (<< 4.0.0~a1~git2018083141.84846d5-0ubuntu1~),
+ python-neutron-taas (<< 4.0.0~a1~git2018083141.84846d5-0ubuntu1~),
+Replaces:
+ neutron-taas-openvswitch-agent (<< 4.0.0~a1~git2018083141.84846d5-0ubuntu1~),
+ python-neutron-taas (<< 4.0.0~a1~git2018083141.84846d5-0ubuntu1~),
+Description: OpenStack virtual network service - Tap-as-a-Service common files
  Neutron provides an API to dynamically request and configure virtual networks.
  These networks connect "interfaces" from other OpenStack services (such as
  vNICs from Nova VMs). The Neutron API supports extensions to provide advanced
@@ -67,24 +71,20 @@ Description: OpenStack virtual network s
  component that can be utilized for supplying data to a variety of network
  analytics and security applications (e.g. IDS).
  .
- This package provides the Tap-as-a-Service agent for Open vSwitch.
+ This package provides the common files for the Tap-as-a-Service (TaaS)
+ extension.
 
 Package: python3-neutron-taas
 Architecture: all
-Section: python
 Depends:
- python3-babel,
- python3-neutron,
+ python3-babel (>= 2.8.0),
+ python3-neutron (>= 2:19.0.0),
  python3-neutron-lib (>= 2.11.0),
- python3-pbr,
+ python3-pbr (>= 5.5.0),
  ${misc:Depends},
  ${python3:Depends},
 Enhances:
- python3-neutronclient,
-Breaks:
- python-neutron-taas,
-Replaces:
- python-neutron-taas,
+ python-neutronclient,
 Description: OpenStack virtual network service - Tap-as-a-Service extension
  Neutron provides an API to dynamically request and configure virtual networks.
  These networks connect "interfaces" from other OpenStack services (such as
@@ -107,5 +107,5 @@ Description: OpenStack virtual network s
  component that can be utilized for supplying data to a variety of network
  analytics and security applications (e.g. IDS).
  .
- This package provides the Python files for the Tap-as-a-Service (TaaS)
+ This package provides the Python 2 files for the Tap-as-a-Service (TaaS)
  extension.
diff -pruN 10.0.0-1.1/debian/copyright 11.0.0-0ubuntu1/debian/copyright
--- 10.0.0-1.1/debian/copyright	2022-10-06 08:57:34.000000000 +0000
+++ 11.0.0-0ubuntu1/debian/copyright	2023-03-23 19:09:10.000000000 +0000
@@ -1,22 +1,19 @@
-Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 Upstream-Name: tap-as-a-service
-Source: https://opendev.org/x/tap-as-a-service
+Source: https://github.com/openstack/tap-as-a-service
 
 Files: *
-Copyright: (c) 2011-2016, OpenStack Foundation
-           (c) 2013, Hewlett-Packard Development Company, L.P
-           (c) 2015-2016, NEC Corporation
-           (c) 2015-2016, Midokura SARL
-           (c) 2015, Gigamon
-           (c) 2015, Ericsson AB
-           (c) 2016, VMware, Inc
-           (c) 2016-2017, FUJITSU LABORATORIES LTD.
-           (c) 2013, IBM Corp.
+Copyright: 2011-2015, OpenStack Foundation
+           2013, Hewlett-Packard Development Company, L.P
+           2015, NEC Corporation
+           2015-2016, Midokura SARL
+           2015, Gigamon
+           2015, Ericsson AB
+           2016, VMware, Inc
 License: Apache-2.0
 
 Files: debian/*
 Copyright: (c) 2016, Canonical Ltd
-           (c) 2017-2018, Thomas Goirand <zigo@debian.org>
 License: Apache-2.0
 
 License: Apache-2.0
diff -pruN 10.0.0-1.1/debian/debian_control_vars 11.0.0-0ubuntu1/debian/debian_control_vars
--- 10.0.0-1.1/debian/debian_control_vars	2022-10-06 08:57:34.000000000 +0000
+++ 11.0.0-0ubuntu1/debian/debian_control_vars	1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-ostack-lsb-base= lsb-base (>= 3.0.6)
diff -pruN 10.0.0-1.1/debian/gbp.conf 11.0.0-0ubuntu1/debian/gbp.conf
--- 10.0.0-1.1/debian/gbp.conf	1970-01-01 00:00:00.000000000 +0000
+++ 11.0.0-0ubuntu1/debian/gbp.conf	2023-03-23 19:09:10.000000000 +0000
@@ -0,0 +1,7 @@
+[DEFAULT]
+debian-branch = master
+upstream-tag = %(version)s
+pristine-tar = True
+
+[buildpackage]
+export-dir = ../build-area
diff -pruN 10.0.0-1.1/debian/neutron-taas-common.install 11.0.0-0ubuntu1/debian/neutron-taas-common.install
--- 10.0.0-1.1/debian/neutron-taas-common.install	1970-01-01 00:00:00.000000000 +0000
+++ 11.0.0-0ubuntu1/debian/neutron-taas-common.install	2023-03-23 19:09:10.000000000 +0000
@@ -0,0 +1 @@
+etc/* /etc/neutron
diff -pruN 10.0.0-1.1/debian/neutron-taas-openvswitch-agent.init.in 11.0.0-0ubuntu1/debian/neutron-taas-openvswitch-agent.init.in
--- 10.0.0-1.1/debian/neutron-taas-openvswitch-agent.init.in	2022-10-06 08:57:34.000000000 +0000
+++ 11.0.0-0ubuntu1/debian/neutron-taas-openvswitch-agent.init.in	1970-01-01 00:00:00.000000000 +0000
@@ -1,19 +0,0 @@
-#!/bin/sh
-### BEGIN INIT INFO
-# Provides:          neutron-taas-openvswitch-agent
-# Required-Start:    $network $local_fs $remote_fs $syslog
-# Required-Stop:     $remote_fs openvswitch-switch
-# Should-Start:      mysql postgresql rabbitmq-server keystone neutron-openvswitch-agent
-# Should-Stop:       mysql postgresql rabbitmq-server keystone
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: Neutron Tap-as-a-Service Open vSwitch Agent
-# Description:       Open vSwitch agent for OpenStack Neutron TaaS extension
-### END INIT INFO
-
-
-DESC="Openstack Neutron - TaaS Open vSwitch Agent"
-PROJECT_NAME=neutron
-NAME=${PROJECT_NAME}-taas-openvswitch-agent
-DAEMON=/usr/bin/neutron-taas-openvswitch-agent
-DAEMON_ARGS="--config-file=/etc/neutron/taas.ini"
diff -pruN 10.0.0-1.1/debian/neutron-taas-openvswitch-agent.install 11.0.0-0ubuntu1/debian/neutron-taas-openvswitch-agent.install
--- 10.0.0-1.1/debian/neutron-taas-openvswitch-agent.install	2022-10-06 08:57:34.000000000 +0000
+++ 11.0.0-0ubuntu1/debian/neutron-taas-openvswitch-agent.install	1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-etc/taas.ini /etc/neutron
diff -pruN 10.0.0-1.1/debian/patches/remove-auto_spec.patch 11.0.0-0ubuntu1/debian/patches/remove-auto_spec.patch
--- 10.0.0-1.1/debian/patches/remove-auto_spec.patch	2022-10-06 08:57:34.000000000 +0000
+++ 11.0.0-0ubuntu1/debian/patches/remove-auto_spec.patch	1970-01-01 00:00:00.000000000 +0000
@@ -1,21 +0,0 @@
-Description: Remove auto_spec
- This was a typo, ignored in previous versions, though this now fails.
-Author: Thomas Goirand <zigo@debian.org>
-Bug-Debian: https://bugs.debian.org/1002427
-Forwarded: no
-Last-Update: 2021-12-23
-
---- neutron-taas-8.0.0.orig/neutron_taas/tests/unit/services/taas/test_taas_plugin.py
-+++ neutron-taas-8.0.0/neutron_taas/tests/unit/services/taas/test_taas_plugin.py
-@@ -41,9 +41,9 @@
- class TestTaasPlugin(testlib_api.SqlTestCase):
-     def setUp(self):
-         super(TestTaasPlugin, self).setUp()
--        mock.patch.object(n_rpc, 'Connection', autospec=True).start()
-+        mock.patch.object(n_rpc, 'Connection').start()
-         mock.patch.object(taas_agent_api,
--                          'TaasAgentApi', autospec=True).start()
-+                          'TaasAgentApi').start()
-         self.driver = mock.MagicMock()
-         mock.patch('neutron.services.service_base.load_drivers',
-                    return_value=({'dummy_provider': self.driver},
diff -pruN 10.0.0-1.1/debian/patches/series 11.0.0-0ubuntu1/debian/patches/series
--- 10.0.0-1.1/debian/patches/series	2022-10-06 08:57:34.000000000 +0000
+++ 11.0.0-0ubuntu1/debian/patches/series	1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-remove-auto_spec.patch
diff -pruN 10.0.0-1.1/debian/python3-neutron-taas.install 11.0.0-0ubuntu1/debian/python3-neutron-taas.install
--- 10.0.0-1.1/debian/python3-neutron-taas.install	2022-10-06 08:57:34.000000000 +0000
+++ 11.0.0-0ubuntu1/debian/python3-neutron-taas.install	1970-01-01 00:00:00.000000000 +0000
@@ -1,4 +0,0 @@
-/usr/bin/*
-/usr/lib/python*
-etc/neutron/rootwrap.d/taas-i40e-sysfs.filters
-etc/taas_plugin.ini /etc/neutron
diff -pruN 10.0.0-1.1/debian/rules 11.0.0-0ubuntu1/debian/rules
--- 10.0.0-1.1/debian/rules	2022-10-06 08:57:34.000000000 +0000
+++ 11.0.0-0ubuntu1/debian/rules	2023-03-23 19:09:10.000000000 +0000
@@ -1,35 +1,20 @@
 #!/usr/bin/make -f
 
 include /usr/share/openstack-pkg-tools/pkgos.make
-UPSTREAM_GIT := https://opendev.org/x/tap-as-a-service.git
 
-%:
-	dh $@ --buildsystem=python_distutils --with python3
-
-override_dh_clean:
-	dh_clean -O--buildsystem=python_distutils
-	rm -rf build
-
-override_dh_auto_clean:
-	python3 setup.py clean
+export PYBUILD_NAME=neutron_taas
 
-override_dh_auto_test:
-	echo "Do nothing..."
-
-override_dh_auto_build:
-	echo "Do nothing..."
+%:
+	dh $@ --buildsystem=pybuild --with python3
 
 override_dh_auto_install:
-	echo "Do nothing..."
+	pkgos-dh_auto_install --no-py2
 
-override_dh_install:
-	pkgos-dh_auto_install --no-py2 --in-tmp
-	rm $(CURDIR)/debian/tmp/usr/etc/neutron/rootwrap.d/taas-i40e-sysfs.filters
+override_dh_auto_test:
 ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
 	pkgos-dh_auto_test --no-py2
 endif
-	dh_install
-	dh_missing --fail-missing
 
-override_dh_python3:
-	dh_python3 --shebang=/usr/bin/python3
+override_dh_clean:
+	dh_clean -O--buildsystem=pybuild
+	rm -rf build
diff -pruN 10.0.0-1.1/debian/watch 11.0.0-0ubuntu1/debian/watch
--- 10.0.0-1.1/debian/watch	2022-10-06 08:57:34.000000000 +0000
+++ 11.0.0-0ubuntu1/debian/watch	2023-03-23 19:09:10.000000000 +0000
@@ -1,3 +1,3 @@
 version=3
-opts="uversionmangle=s/\.(b|rc)/~$1/" \
-https://github.com/openstack/networking-l2gw/tags .*/(\d[\d\.]+)\.tar\.gz
+opts="uversionmangle=s/\.([a-zA-Z])/~$1/;s/%7E/~/;s/\.0b/~b/;s/\.0rc/~rc/" \
+ https://tarballs.opendev.org/openstack/tap-as-a-service/ tap-as-a-service-(\d.*)\.tar\.gz
diff -pruN 10.0.0-1.1/doc/source/specs/index.rst 11.0.0-0ubuntu1/doc/source/specs/index.rst
--- 10.0.0-1.1/doc/source/specs/index.rst	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/doc/source/specs/index.rst	1970-01-01 00:00:00.000000000 +0000
@@ -1,14 +0,0 @@
-.. tap-as-a-service specs documentation index
-
-==============
-Specifications
-==============
-
-Mitaka specs
-============
-
-.. toctree::
-   :glob:
-   :maxdepth: 1
-
-   mitaka/*
diff -pruN 10.0.0-1.1/doc/source/specs/mitaka/tap-as-a-service.rst 11.0.0-0ubuntu1/doc/source/specs/mitaka/tap-as-a-service.rst
--- 10.0.0-1.1/doc/source/specs/mitaka/tap-as-a-service.rst	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/doc/source/specs/mitaka/tap-as-a-service.rst	1970-01-01 00:00:00.000000000 +0000
@@ -1,471 +0,0 @@
-..
- This work is licensed under a Creative Commons Attribution 3.0 Unported
- License.
-
- http://creativecommons.org/licenses/by/3.0/legalcode
-
-============================
-Tap-as-a-Service for Neutron
-============================
-
-
-Launchpad blueprint:
-
-  https://blueprints.launchpad.net/neutron/+spec/tap-as-a-service
-
-This spec explains an extension for the port mirroring functionality. Port
-mirroring involves sending a copy of packets ingressing and/or egressing one
-port (where ingress means entering a VM and egress means leaving a VM) to
-another port, (usually different from the packet's original destination).
-A port could be attached to a VM or a networking resource like router.
-
-While the blueprint describes the functionality of mirroring Neutron ports as
-an extension to the port object, the spec proposes to offer port mirroring as a
-service, which will enable more advanced use-cases (e.g. intrusion detection)
-to be deployed.
-
-The proposed port mirroring capability shall be introduced in Neutron as a
-service called "Tap-as-a-Service".
-
-Problem description
-===================
-
-Neutron currently does not support the functionality of port mirroring for
-tenant networks. This feature will greatly benefit tenants and admins, who
-want to debug their virtual networks and gain visibility into their VMs by
-monitoring and analyzing the network traffic associated with them (e.g. IDS).
-
-This spec focuses on mirroring traffic from one Neutron port to another;
-future versions may address mirroring from a Neutron port to an arbitrary
-interface (not managed by Neutron) on a compute host or the network controller.
-
-Different usage scenarios for the service are listed below:
-
-  1. Tapping/mirroring network traffic ingressing and/or egressing a particular
-     Neutron port.
-  2. Tapping/mirroring all network traffic on a tenant network.
-  3. Tenant or admin will be able to do tap/traffic mirroring based on a
-     policy rule and set destination as a Neutron port, which can be linked
-     to a virtual machine as normal Nova operations or to a physical machine
-     via l2-gateway functionality.
-  4. Admin will be able to do packet level network debugging for the virtual
-     network.
-  5. Provide a way for real time analytics based on different criteria, like
-     tenants, ports, traffic types (policy) etc.
-
-Note that some of the above use-cases are not covered by this proposal, at
-least for the first step.
-
-
-Proposed change
-===============
-
-The proposal is to introduce a new Neutron service plugin, called
-"Tap-as-a-Service",
-which provides tapping (port-mirroring) capability for Neutron networks;
-tenant or provider networks. This service will be modeled similar to other
-Neutron services such as the firewall, load-balancer, L3-router etc.
-
-The proposed service will allow the tenants to create a tap service instance
-to which they can add Neutron ports that need to be mirrored by creating tap
-flows. The tap service itself will be a Neutron port, which will be the
-destination port for the mirrored traffic.
-
-The destination Tap-as-a-Service Neutron port should be created beforehand on
-a network owned by the tenant who is requesting the service. The ports to be
-mirrored that are added to the service must be owned by the same tenant who
-created the tap service instance. Even on a shared network, a tenant will only
-be allowed to mirror the traffic from ports that they own on the shared
-network and not traffic from ports that they do not own on the shared network.
-
-The ports owned by the tenant that are mirrored can be on networks other
-than the network on which tap service port is created. This allows the tenant
-to mirror traffic from any port it owns on a network on to the same
-Tap-as-a-Service Neutron port.
-
-The tenant can launch a VM specifying the tap destination port for the VM
-interface (--nic port-id=tap_port_uuid), thus receiving mirrored traffic for
-further processing (dependent on use case) on that VM.
-
-The following would be the work flow for using this service from a tenant's
-point of view
-
-  0. Create a Neutron port which will be used as the destination port.
-     This can be a part of ordinary VM launch.
-
-  1. Create a tap service instance, specifying the Neutron port.
-
-  2. If you haven't yet, launch a monitoring or traffic analysis VM and
-     connect it to the destination port for the tap service instance.
-
-  3. Associate Neutron ports with a tap service instance if/when they need to be
-     monitored.
-
-  4. Disassociate Neutron ports from a tap service instance if/when they no
-     longer need to be monitored.
-
-  5. Destroy a tap-service instance when it is no longer needed.
-
-  6. Delete the destination port when it is no longer neeeded.
-
-Please note that the normal work flow of launching a VM is not affected while
-using TaaS.
-
-
-Alternatives
-------------
-
-As an alternative to introducing port mirroring functionality under Neutron
-services, it could be added as an extension to the existing Neutron v2 APIs.
-
-
-Data model impact
------------------
-
-Tap-as-a-Service introduces the following data models into Neutron as database
-schemas.
-
-1. tap_service
-
-+-------------+--------+----------+-----------+---------------+-------------------------+
-| Attribute   | Type   | Access   | Default   | Validation/   | Description             |
-| Name        |        | (CRUD)   | Value     | Conversion    |                         |
-+=============+========+==========+===========+===============+=========================+
-| id          | UUID   | R, all   | generated | N/A           | UUID of the tap         |
-|             |        |          |           |               | service instance.       |
-+-------------+--------+----------+-----------+---------------+-------------------------+
-| project_id  | String | CR, all  | Requester | N/A           | ID of the               |
-|             |        |          |           |               | project creating        |
-|             |        |          |           |               | the service             |
-+-------------+--------+----------+-----------+---------------+-------------------------+
-| name        | String | CRU, all | Empty     | N/A           | Name for the service    |
-|             |        |          |           |               | instance.               |
-+-------------+--------+----------+-----------+---------------+-------------------------+
-| description | String | CRU, all | Empty     | N/A           | Description of the      |
-|             |        |          |           |               | service instance.       |
-+-------------+--------+----------+-----------+---------------+-------------------------+
-| port_id     | UUID   | CR, all  | N/A       | UUID of a     | An existing Neutron port|
-|             |        |          |           | valid Neutron | to which traffic will   |
-|             |        |          |           | port          | be mirrored             |
-+-------------+--------+----------+-----------+---------------+-------------------------+
-| status      | String | R, all   | N/A       | N/A           | The operation status of |
-|             |        |          |           |               | the resource            |
-|             |        |          |           |               | (ACTIVE, PENDING_foo,   |
-|             |        |          |           |               | ERROR, ...)             |
-+-------------+--------+----------+-----------+---------------+-------------------------+
-
-2. tap_flow
-
-+----------------+--------+----------+-----------+---------------+-------------------------+
-| Attribute      | Type   | Access   | Default   | Validation/   | Description             |
-| Name           |        | (CRUD)   | Value     | Conversion    |                         |
-+================+========+==========+===========+===============+=========================+
-| id             | UUID   | R, all   | generated | N/A           | UUID of the             |
-|                |        |          |           |               | tap flow instance.      |
-+----------------+--------+----------+-----------+---------------+-------------------------+
-| name           | String | CRU, all | Empty     | N/A           | Name for the tap flow   |
-|                |        |          |           |               | instance.               |
-+----------------+--------+----------+-----------+---------------+-------------------------+
-| description    | String | CRU, all | Empty     | N/A           | Description of the      |
-|                |        |          |           |               | tap flow instance.      |
-+----------------+--------+----------+-----------+---------------+-------------------------+
-| tap_service_id | UUID   | CR, all  | N/A       | Valid tap     | UUID of the tap         |
-|                |        |          |           | service UUID  | service instance.       |
-+----------------+--------+----------+-----------+---------------+-------------------------+
-| source_port    | UUID   | CR, all  | N/A       | UUID of a     | UUID of the Neutron     |
-|                |        |          |           | valid Neutron | port that needed to be  |
-|                |        |          |           | port          | mirrored                |
-+----------------+--------+----------+-----------+---------------+-------------------------+
-| direction      | ENUM   | CR, all  | BOTH      |               | Whether to mirror the   |
-|                | (IN,   |          |           |               | traffic leaving or      |
-|                | OUT,   |          |           |               | arriving at the         |
-|                | BOTH)  |          |           |               | source port             |
-|                |        |          |           |               | IN: Network -> VM       |
-|                |        |          |           |               | OUT: VM -> Network      |
-+----------------+--------+----------+-----------+---------------+-------------------------+
-| status         | String | R, all   | N/A       | N/A           | The operation status of |
-|                |        |          |           |               | the resource            |
-|                |        |          |           |               | (ACTIVE, PENDING_foo,   |
-|                |        |          |           |               | ERROR, ...)             |
-+----------------+--------+----------+-----------+---------------+-------------------------+
-
-
-REST API impact
----------------
-
-Tap-as-a-Service shall be offered over the RESTFull API interface under
-the following namespace:
-
-http://wiki.openstack.org/Neutron/TaaS/API_1.0
-
-The resource attribute map for TaaS is provided below:
-
-.. code-block:: python
-
-  direction_enum = ['IN', 'OUT', 'BOTH']
-
-  RESOURCE_ATTRIBUTE_MAP = {
-      'tap_service': {
-          'id': {'allow_post': False, 'allow_put': False,
-                 'validate': {'type:uuid': None}, 'is_visible': True,
-                 'primary_key': True},
-          'project_id': {'allow_post': True, 'allow_put': False,
-                         'validate': {'type:string': None},
-                         'required_by_policy': True, 'is_visible': True},
-          'name': {'allow_post': True, 'allow_put': True,
-                   'validate': {'type:string': None},
-                   'is_visible': True, 'default': ''},
-          'description': {'allow_post': True, 'allow_put': True,
-                          'validate': {'type:string': None},
-                          'is_visible': True, 'default': ''},
-          'port_id': {'allow_post': True, 'allow_put': False,
-                               'validate': {'type:uuid': None},
-                               'is_visible': True},
-          'status': {'allow_post': False, 'allow_put': False,
-                     'is_visible': True},
-      },
-      'tap_flow': {
-          'id': {'allow_post': False, 'allow_put': False,
-                 'validate': {'type:uuid': None}, 'is_visible': True,
-                 'primary_key': True},
-          'name': {'allow_post': True, 'allow_put': True,
-                   'validate': {'type:string': None},
-                   'is_visible': True, 'default': ''},
-          'description': {'allow_post': True, 'allow_put': True,
-                          'validate': {'type:string': None},
-                          'is_visible': True, 'default': ''},
-          'tap_service_id': {'allow_post': True, 'allow_put': False,
-                        'validate': {'type:uuid': None},
-                        'required_by_policy': True, 'is_visible': True},
-          'source_port': {'allow_post': True, 'allow_put': False,
-                        'validate': {'type:uuid': None},
-                        'required_by_policy': True, 'is_visible': True},
-          'direction': {'allow_post': True, 'allow_put': False,
-                               'validate': {'type:string': direction_enum},
-                               'is_visible': True},
-          'status': {'allow_post': False, 'allow_put': False,
-                     'is_visible': True},
-      }
-  }
-
-
-Security impact
----------------
-
-A TaaS instance comprises a collection of source Neutron ports (whose
-ingress and/or egress traffic are being mirrored) and a destination Neutron
-port (where the mirrored traffic is received). Security Groups will be
-handled differently for these two classes of ports, as described below:
-
-Destination Side:
-
-Ingress Security Group filters, including the filter that prevents MAC-address
-spoofing, will be disabled for the destination Neutron port. This will ensure
-that all of the mirrored packets received at this port are able to reach the
-monitoring VM attached to it.
-
-Source Side:
-
-Ideally it would be nice to mirror all packets entering and/or leaving the
-virtual NICs associated with the VMs that are being monitored. This means
-capturing ingress traffic after it passes the inbound Security Group filters
-and capturing egress traffic before it passes the outbound Security Group
-filters.
-
-However, due to the manner in which Security Groups are currently implemented
-in OpenStack (i.e. north of the Open vSwitch ports, using Linux IP Tables) this
-is not possible because port mirroring support resides inside Open vSwitch.
-Therefore, in the first version of TaaS, Security Groups will be ignored for
-the source Neutron ports; this effectively translates into capturing ingress
-traffic before it passes the inbound Security Group filters and capturing
-egress traffic after it passes the outbound Security Group filters. In other
-words, port mirroring will be implemented for all packets entering and/or
-leaving the Open vSwitch ports associated with the respective virtual NICs of
-the VMs that are being monitored.
-
-There is a separate effort that has been initiated to implement Security Groups
-within OpenvSwitch. A later version of TaaS may make use of this feature, if
-and when it is available, so that we can realize the ideal behavior described
-above. It should be noted that such an enhancement should not require a change
-to the TaaS data model.
-
-Keeping data privacy aspects in mind and preventing the data center admin
-from snooping on tenant's network traffic without their knowledge, the admin
-shall not be allowed to mirror traffic from any ports that belong to tenants.
-Hence creation of 'Tap_Flow' is only permitted on ports that are owned by the
-creating tenant.
-
-If an admin wants to monitor tenant's traffic, the admin will have to join that
-tenant as a member. This will ensure that the tenant is aware that the admin
-might be monitoring their traffic.
-
-
-Notifications impact
---------------------
-
-A set of new RPC calls for communication between the TaaS server and agents
-are required and will be put in place as part of the reference implementation.
-
-
-IPv6 impact
---------------------
-None
-
-
-Other end user impact
----------------------
-
-Users will be able to invoke and access the TaaS APIs through
-python-neutronclient.
-
-
-Performance Impact
-------------------
-
-The performance impact of mirroring traffic needs to be examined and
-quantified. The impact of a tenant potentially mirroring all traffic from
-all ports could be large and needs more examination.
-
-Some alternatives to reduce the amount of mirrored traffic are listed below.
-
-  1. Rate limiting on the ports being mirrored.
-  2. Filters to select certain flows ingressing/egressing a port to be
-     mirrored.
-  3. Having a quota on the number of TaaS Flows that can be defined by the
-     tenant.
-
-
-Other deployer impact
----------------------
-
-Configurations for the service plugin will be added later.
-
-A new bridge (br-tap) mentioned in Implementation section.
-
-
-Developer impact
-----------------
-This will be a new extension API, and will not affect the existing API.
-
-
-Community impact
-----------------
-None
-
-
-Follow up work
---------------
-
-Going forward, TaaS would be incorporated with Service Insertion [2]_ similar
-to other existing services like FWaaS, LBaaS, and VPNaaS.
-
-While integrating Tap-as-a-Service with Service Insertion the key changes to
-the data model needed would be the removal of 'network_id' and 'port_id' from
-the 'Tap_Service' data model.
-
-Some policy based filtering rules would help alleviate the potential performance
-issues.
-
-We might want to ensure exclusive use of the destination port.
-
-We might want to create the destination port automatically on tap-service
-creation, rather than specifying an existing port.  In that case, network_id
-should be taken as a parameter for tap-service creation, instead of port_id.
-
-We might want to allow the destination port be used for purposes other than
-just launching a VM on it, for example the port could be used as an
-'external-port' [1]_ to get the mirrored data out from the tenant virtual
-network on a device or network not managed by openstack.
-
-We might want to introduce a way to tap a whole traffic for the specified
-network.
-
-We need a mechanism to coordinate usage of various resources with other
-agent extensions.  E.g. OVS flows, tunnel IDs, VLAN IDs.
-
-
-Implementation
-==============
-
-The reference implementation for TaaS will be based on Open vSwitch. In
-addition to the existing integration (br-int) and tunnel (br-tun) bridges, a
-separate tap bridge (br-tap) will be used. The tap bridge provides nice
-isolation for supporting more complex TaaS features (e.g. filtering mirrored
-packets) in the future.
-
-The tapping operation will be realized by adding higher priority flows in
-br-int, which duplicate the ingress and/or egress packets associated with
-specific ports (belonging to the VMs being monitored) and send the copies to
-br-tap. Packets sent to br-tap will also be tagged with an appropriate VLAN id
-corresponding to the associated TaaS instance (in the initial release these
-VLAN ids may be reserved from highest to lowest; in later releases it should be
-coordinated with the Neutron service). The original packets will continue to be
-processed normally, so as not to affect the traffic patterns of the VMs being
-monitored.
-
-Flows will be placed in br-tap to determine if the mirrored traffic should be
-sent to br-tun or not. If the destination port of a Tap-aaS instance happens to
-reside on the same host as a source port, packets from that source port will be
-returned to br-int; otherwise they will be forwarded to br-tun for delivery to
-a remote node.
-
-Packets arriving at br-tun from br-tap will get routed to the destination ports
-of appropriate TaaS instances using the same GRE or VXLAN tunnel network that
-is used to pass regular traffic between hosts. Separate tunnel IDs will be used
-to isolate different TaaS instances from one another and from the normal
-(non-mirrored) traffic passing through the bridge. This will ensure that proper
-action can be taken on the receiving end of a tunnel so that mirrored traffic
-is sent to br-tap instead of br-int. Special flows will be used in br-tun to
-automatically learn about the location of the destination ports of TaaS
-instances.
-
-Packets entering br-tap from br-tun will be forwarded to br-int only if the
-destination port of the corresponding TaaS instance resides on the same host.
-Finally, packets entering br-int from br-tap will be delivered to the
-appropriate destination port after the TaaS instance VLAN id is replaced with
-the VLAN id for the port.
-
-
-Assignee(s)
------------
-
-* Vinay Yadhav
-
-
-Work Items
-----------
-
-* TaaS API and data model implementation.
-* TaaS OVS driver.
-* OVS agent changes for port mirroring.
-
-
-Dependencies
-============
-
-None
-
-
-Testing
-=======
-
-* Unit Tests to be added.
-* Functional tests in tempest to be added.
-* API Tests in Tempest to be added.
-
-
-Documentation Impact
-====================
-
-* User Documentation needs to be updated
-* Developer Documentation needs to be updated
-
-
-References
-==========
-
-.. [1] External port
-   https://review.openstack.org/#/c/87825
-
-.. [2] Service base and insertion
-   https://review.openstack.org/#/c/93128
diff -pruN 10.0.0-1.1/neutron_taas/common/utils.py 11.0.0-0ubuntu1/neutron_taas/common/utils.py
--- 10.0.0-1.1/neutron_taas/common/utils.py	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/neutron_taas/common/utils.py	2023-03-22 12:41:36.000000000 +0000
@@ -25,7 +25,7 @@ def get_list_from_ranges_str(ranges_str)
     return sum(((list(range(*[int(range_start) + range_index
                               for range_index, range_start in
                               enumerate(range_item.split('-'))]))
-                if '-' in range_item else [int(range_item)])
+                 if '-' in range_item else [int(range_item)])
                 for range_item in ranges_str.split(',')), [])
 
 
diff -pruN 10.0.0-1.1/neutron_taas/db/migration/alembic_migration/env.py 11.0.0-0ubuntu1/neutron_taas/db/migration/alembic_migration/env.py
--- 10.0.0-1.1/neutron_taas/db/migration/alembic_migration/env.py	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/neutron_taas/db/migration/alembic_migration/env.py	2023-03-22 12:41:36.000000000 +0000
@@ -45,7 +45,7 @@ def set_mysql_engine():
 def run_migrations_offline():
     set_mysql_engine()
 
-    kwargs = dict()
+    kwargs = {}
     if neutron_config.database.connection:
         kwargs['url'] = neutron_config.database.connection
     else:
diff -pruN 10.0.0-1.1/neutron_taas/services/taas/agents/common/taas_agent.py 11.0.0-0ubuntu1/neutron_taas/services/taas/agents/common/taas_agent.py
--- 10.0.0-1.1/neutron_taas/services/taas/agents/common/taas_agent.py	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/neutron_taas/services/taas/agents/common/taas_agent.py	2023-03-22 12:41:36.000000000 +0000
@@ -37,15 +37,14 @@ LOG = logging.getLogger(__name__)
 class TaasPluginApi(api.TaasPluginApiMixin):
 
     def __init__(self, topic, host):
-        super(TaasPluginApi, self).__init__(topic, host)
+        super().__init__(topic, host)
         target = messaging.Target(topic=topic, version='1.0')
         self.client = n_rpc.get_client(target)
-        return
 
     def sync_tap_resources(self, sync_tap_res, host):
         """Send Rpc to plugin to recreate pre-existing tap resources."""
-        LOG.debug("In RPC Call for Sync Tap Resources: Host=%s, MSG=%s" %
-                  (host, sync_tap_res))
+        LOG.debug("In RPC Call for Sync Tap Resources: Host=%s, MSG=%s",
+                  host, sync_tap_res)
 
         context = neutron_context.get_admin_context()
 
@@ -53,12 +52,9 @@ class TaasPluginApi(api.TaasPluginApiMix
         cctxt.cast(context, 'sync_tap_resources', sync_tap_res=sync_tap_res,
                    host=host)
 
-        return
-
     def set_tap_service_status(self, msg, status, host):
         LOG.debug("In RPC Call for set tap service status: Host=%s, MSG=%s, "
-                  "Status=%s" %
-                  (host, msg, status))
+                  "Status=%s", host, msg, status)
 
         context = neutron_context.get_admin_context()
 
@@ -66,12 +62,9 @@ class TaasPluginApi(api.TaasPluginApiMix
         cctxt.cast(context, 'set_tap_service_status', msg=msg, status=status,
                    host=host)
 
-        return
-
     def set_tap_flow_status(self, msg, status, host):
         LOG.debug("In RPC Call for set tap flow status: Host=%s, MSG=%s, "
-                  "Status=%s" %
-                  (host, msg, status))
+                  "Status=%s", host, msg, status)
 
         context = neutron_context.get_admin_context()
 
@@ -79,8 +72,6 @@ class TaasPluginApi(api.TaasPluginApiMix
         cctxt.cast(context, 'set_tap_flow_status', msg=msg, status=status,
                    host=host)
 
-        return
-
 
 class TaasAgentRpcCallback(api.TaasAgentRpcCallbackMixin):
 
@@ -91,7 +82,7 @@ class TaasAgentRpcCallback(api.TaasAgent
         self.conf = conf
         self.driver_type = driver_type
 
-        super(TaasAgentRpcCallback, self).__init__()
+        super().__init__()
 
     def initialize(self):
         self.taas_driver = manager.NeutronManager.load_class_for_provider(
@@ -140,37 +131,39 @@ class TaasAgentRpcCallback(api.TaasAgent
             status_msg = {'id': args[func_dict['msg_name']]['id']}
 
         try:
-            self.taas_driver.__getattribute__(func_name)(args)
+            driver_func = getattr(self.taas_driver, func_name)
+            driver_func(args)
         except Exception:
             LOG.error("Failed to invoke the driver")
-
-            self.taas_plugin_rpc.__getattribute__(
-                self.func_dict[func_name]['set_status_func_name'])(
-                    status_msg,
-                    self.func_dict[func_name]['fail_status'],
-                    self.conf.host)
+            rpc_func = getattr(
+                self.taas_plugin_rpc,
+                self.func_dict[func_name]['set_status_func_name'])
+            rpc_func(status_msg, self.func_dict[func_name]['fail_status'],
+                     self.conf.host)
             return
 
         if func_name != 'periodic_tasks':
-            self.taas_plugin_rpc.__getattribute__(
-                self.func_dict[func_name]['set_status_func_name'])(
-                    status_msg,
-                    self.func_dict[func_name]['succ_status'],
-                    self.conf.host)
+            rpc_func = getattr(
+                self.taas_plugin_rpc,
+                self.func_dict[func_name]['set_status_func_name'])
+            rpc_func(status_msg, self.func_dict[func_name]['succ_status'],
+                     self.conf.host)
 
-    def create_tap_service(self, context, tap_service, host):
+    def create_tap_service(self, context, tap_service_msg, host):
         """Handle Rpc from plugin to create a tap_service."""
-        if not self._driver_and_host_verification(host, tap_service['port']):
+        if not self._driver_and_host_verification(
+                host, tap_service_msg['port']):
             LOG.debug("RPC Call for Create Tap Serv. Either Host value [%s]"
                       "(received in RPC) doesn't match the host value "
                       "stored in agent [%s], or incompatible driver type. "
-                      "Ignoring the message." % (host, self.conf.host))
+                      "Ignoring the message.", host, self.conf.host)
             return
-        LOG.debug("In RPC Call for Create Tap Service: MSG=%s" % tap_service)
+        LOG.debug("In RPC Call for Create Tap Service: MSG=%s",
+                  tap_service_msg)
 
         return self._invoke_driver_for_plugin_api(
             context,
-            tap_service,
+            tap_service_msg,
             'create_tap_service')
 
     def create_tap_flow(self, context, tap_flow_msg, host):
@@ -178,30 +171,31 @@ class TaasAgentRpcCallback(api.TaasAgent
             LOG.debug("RPC Call for Create Tap Flow. Either Host value [%s]"
                       "(received in RPC) doesn't match the host value "
                       "stored in agent [%s], or incompatible driver type. "
-                      "Ignoring the message." % (host, self.conf.host))
+                      "Ignoring the message.", host, self.conf.host)
             return
-        LOG.debug("In RPC Call for Create Tap Flow: MSG=%s" % tap_flow_msg)
+        LOG.debug("In RPC Call for Create Tap Flow: MSG=%s", tap_flow_msg)
 
         return self._invoke_driver_for_plugin_api(
             context,
             tap_flow_msg,
             'create_tap_flow')
 
-    def delete_tap_service(self, context, tap_service, host):
+    def delete_tap_service(self, context, tap_service_msg, host):
         #
         # Cleanup operations must be performed by all hosts
         # where the source and/or destination ports associated
         # with this tap service were residing.
         #
-        if not self._is_driver_port_type_compatible(tap_service['port']):
+        if not self._is_driver_port_type_compatible(tap_service_msg['port']):
             LOG.debug("RPC Call for Delete Tap Service. Incompatible driver "
                       "type. Ignoring the message. Host=[%s]" % (host))
             return
-        LOG.debug("In RPC Call for Delete Tap Service: MSG=%s" % tap_service)
+        LOG.debug("In RPC Call for Delete Tap Service: MSG=%s",
+                  tap_service_msg)
 
         return self._invoke_driver_for_plugin_api(
             context,
-            tap_service,
+            tap_service_msg,
             'delete_tap_service')
 
     def delete_tap_flow(self, context, tap_flow_msg, host):
@@ -211,7 +205,7 @@ class TaasAgentRpcCallback(api.TaasAgent
                       "stored in agent [%s], or incompatible driver type. "
                       "Ignoring the message." % (host, self.conf.host))
             return
-        LOG.debug("In RPC Call for Delete Tap Flow: MSG=%s" % tap_flow_msg)
+        LOG.debug("In RPC Call for Delete Tap Flow: MSG=%s", tap_flow_msg)
 
         return self._invoke_driver_for_plugin_api(
             context,
@@ -250,11 +244,11 @@ class TaasAgentRpcCallback(api.TaasAgent
 
 class TaasAgentService(service.Service):
     def __init__(self, driver):
-        super(TaasAgentService, self).__init__()
+        super().__init__()
         self.driver = driver
 
     def start(self, taas_plugin_rpc, host):
-        super(TaasAgentService, self).start()
+        super().start()
 
         if self.driver.get_driver_type() == \
                 taas_ovs_consts.EXTENSION_DRIVER_TYPE:
diff -pruN 10.0.0-1.1/neutron_taas/services/taas/agents/extensions/taas.py 11.0.0-0ubuntu1/neutron_taas/services/taas/agents/extensions/taas.py
--- 10.0.0-1.1/neutron_taas/services/taas/agents/extensions/taas.py	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/neutron_taas/services/taas/agents/extensions/taas.py	2023-03-22 12:41:36.000000000 +0000
@@ -81,8 +81,8 @@ class TaasAgentExtension(l2_extension.L2
         """
         self.agent_api = agent_api
 
-    def handle_port(self, context, port):
+    def handle_port(self, context, data):
         pass
 
-    def delete_port(self, context, port):
+    def delete_port(self, context, data):
         pass
diff -pruN 10.0.0-1.1/neutron_taas/services/taas/agents/taas_agent_api.py 11.0.0-0ubuntu1/neutron_taas/services/taas/agents/taas_agent_api.py
--- 10.0.0-1.1/neutron_taas/services/taas/agents/taas_agent_api.py	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/neutron_taas/services/taas/agents/taas_agent_api.py	2023-03-22 12:41:36.000000000 +0000
@@ -25,15 +25,14 @@ class TaasPluginApiMixin(object):
         self.host = host
         target = messaging.Target(topic=topic, version='1.0')
         self.client = n_rpc.get_client(target)
-        super(TaasPluginApiMixin, self).__init__()
-        return
+        super().__init__()
 
 
 class TaasAgentRpcCallbackMixin(object):
     """Mixin for Taas agent Implementations."""
 
     def __init__(self):
-        super(TaasAgentRpcCallbackMixin, self).__init__()
+        super().__init__()
 
     def consume_api(self, agent_api):
         """Receive neutron agent API object
diff -pruN 10.0.0-1.1/neutron_taas/services/taas/drivers/linux/ovs_taas.py 11.0.0-0ubuntu1/neutron_taas/services/taas/drivers/linux/ovs_taas.py
--- 10.0.0-1.1/neutron_taas/services/taas/drivers/linux/ovs_taas.py	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/neutron_taas/services/taas/drivers/linux/ovs_taas.py	2023-03-22 12:41:36.000000000 +0000
@@ -35,12 +35,12 @@ TaaS_DRIVER_NAME = 'Taas OVS driver'
 
 class OVSBridge_tap_extension(ovs_lib.OVSBridge):
     def __init__(self, br_name, root_helper):
-        super(OVSBridge_tap_extension, self).__init__(br_name)
+        super().__init__(br_name)
 
 
 class OvsTaasDriver(taas_base.TaasAgentDriver):
     def __init__(self):
-        super(OvsTaasDriver, self).__init__()
+        super().__init__()
         LOG.debug("Initializing Taas OVS Driver")
         self.agent_api = None
         self.root_helper = common.get_root_helper(cfg.CONF)
@@ -196,8 +196,6 @@ class OvsTaasDriver(taas_base.TaasAgentD
                                  "output:NXM_OF_IN_PORT[])" %
                                  taas_ovs_consts.TAAS_SEND_UCAST))
 
-        return
-
     def consume_api(self, agent_api):
         self.agent_api = agent_api
 
@@ -283,8 +281,6 @@ class OvsTaasDriver(taas_base.TaasAgentD
             utils.execute(['brctl', 'setageing', linux_br_name, 0],
                           run_as_root=True, privsep_exec=True)
 
-        return
-
     @log_helpers.log_method_call
     def delete_tap_service(self, tap_service_msg):
         """Delete a tap service
@@ -323,8 +319,6 @@ class OvsTaasDriver(taas_base.TaasAgentD
         self.tun_br.delete_flows(table=taas_ovs_consts.TAAS_SRC_CHECK,
                                  tun_id=taas_id)
 
-        return
-
     @log_helpers.log_method_call
     def create_tap_flow(self, tap_flow_msg):
         """Create a tap flow
@@ -350,14 +344,14 @@ class OvsTaasDriver(taas_base.TaasAgentD
         patch_int_tap_id = self.int_br.get_port_ofport('patch-int-tap')
 
         # Add flow(s) in br-int
-        if direction == 'OUT' or direction == 'BOTH':
+        if direction in ('OUT', 'BOTH'):
             self.int_br.add_flow(table=0,
                                  priority=20,
                                  in_port=ovs_port_id,
                                  actions="normal,mod_vlan_vid:%s,output:%s" %
                                  (str(taas_id), str(patch_int_tap_id)))
 
-        if direction == 'IN' or direction == 'BOTH':
+        if direction in ('IN', 'BOTH'):
             port_mac = tap_flow_msg['port_mac']
 
             #
@@ -411,8 +405,6 @@ class OvsTaasDriver(taas_base.TaasAgentD
                              actions="resubmit(,%s)" %
                              taas_ovs_consts.TAAS_SRC_RESPOND)
 
-        return
-
     @log_helpers.log_method_call
     def delete_tap_flow(self, tap_flow_msg):
         """Delete a tap flow
@@ -436,11 +428,11 @@ class OvsTaasDriver(taas_base.TaasAgentD
         ovs_port_id = ovs_port.ofport
 
         # Delete flow(s) from br-int
-        if direction == 'OUT' or direction == 'BOTH':
+        if direction in ('OUT', 'BOTH'):
             self.int_br.delete_flows(table=0,
                                      in_port=ovs_port_id)
 
-        if direction == 'IN' or direction == 'BOTH':
+        if direction in ('IN', 'BOTH'):
             port_mac = tap_flow_msg['port_mac']
 
             #
@@ -465,8 +457,6 @@ class OvsTaasDriver(taas_base.TaasAgentD
             #                                    taas_id,
             #                                    patch_int_tap_id)
 
-        return
-
     def update_tunnel_flood_flow(self):
         flow_action = self._create_tunnel_flood_flow_action()
         if flow_action != "":
@@ -482,7 +472,7 @@ class OvsTaasDriver(taas_base.TaasAgentD
         tunnel_ports_exist = False
 
         for port_name in port_name_list:
-            if (port_name != 'patch-int') and (port_name != 'patch-tun-tap'):
+            if port_name not in ('patch-int', 'patch-tun-tap'):
                 flow_action += (",output:%d" %
                                 self.tun_br.get_port_ofport(port_name))
                 tunnel_ports_exist = True
@@ -524,8 +514,6 @@ class OvsTaasDriver(taas_base.TaasAgentD
                              dl_dst="01:00:00:00:00:00/01:00:00:00:00:00",
                              actions=flow_action)
 
-        return
-
     #
     # Removes or updates a special flow in br-int to mirror (duplicate
     # and redirect to 'out_port_id') all ingress broadcast/multicast
@@ -557,5 +545,3 @@ class OvsTaasDriver(taas_base.TaasAgentD
                                      dl_vlan=vlan_id,
                                      dl_dst=("01:00:00:00:00:00/"
                                              "01:00:00:00:00:00"))
-
-        return
diff -pruN 10.0.0-1.1/neutron_taas/services/taas/drivers/linux/ovs_utils.py 11.0.0-0ubuntu1/neutron_taas/services/taas/drivers/linux/ovs_utils.py
--- 10.0.0-1.1/neutron_taas/services/taas/drivers/linux/ovs_utils.py	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/neutron_taas/services/taas/drivers/linux/ovs_utils.py	2023-03-22 12:41:36.000000000 +0000
@@ -31,8 +31,6 @@ class key_value_mgr(object):
         for i in range(nr_keys):
             self.key_list.append([])
 
-        return
-
     #
     # Returns specified key-value affilation, if it exists.
     #
@@ -63,8 +61,6 @@ class key_value_mgr(object):
         # Increment affiliation reference count
         aff['refcnt'] += 1
 
-        return
-
     #
     # Removes an affiliation of 'value' with 'key'
     #
diff -pruN 10.0.0-1.1/neutron_taas/services/taas/drivers/linux/sriov_nic_exceptions.py 11.0.0-0ubuntu1/neutron_taas/services/taas/drivers/linux/sriov_nic_exceptions.py
--- 10.0.0-1.1/neutron_taas/services/taas/drivers/linux/sriov_nic_exceptions.py	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/neutron_taas/services/taas/drivers/linux/sriov_nic_exceptions.py	2023-03-22 12:41:36.000000000 +0000
@@ -23,6 +23,9 @@ class SriovNicSwitchDriverInvocationErro
                 "%(source_vf_index)s, %(vlan_filter)s, "
                 "%(vf_to_vf_all_vlans)s, %(direction)s")
 
+    def __init__(self, **kwargs):
+        super().__init__(**kwargs)
+
 
 class PciDeviceNotFoundById(qexception.NotFound):
     message = _("PCI device %(id)s not found")
diff -pruN 10.0.0-1.1/neutron_taas/services/taas/drivers/linux/sriov_nic_taas.py 11.0.0-0ubuntu1/neutron_taas/services/taas/drivers/linux/sriov_nic_taas.py
--- 10.0.0-1.1/neutron_taas/services/taas/drivers/linux/sriov_nic_taas.py	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/neutron_taas/services/taas/drivers/linux/sriov_nic_taas.py	2023-03-22 12:41:36.000000000 +0000
@@ -35,7 +35,7 @@ TaaS_DRIVER_NAME = 'Taas SRIOV NIC Switc
 
 class SriovNicTaasDriver(taas_base.TaasAgentDriver):
     def __init__(self):
-        super(SriovNicTaasDriver, self).__init__()
+        super().__init__()
         LOG.debug("Initializing Taas SRIOV NIC Switch Driver")
         self.agent_api = None
         self.root_helper = common.get_root_helper(cfg.CONF)
@@ -44,7 +44,6 @@ class SriovNicTaasDriver(taas_base.TaasA
     def initialize(self):
         LOG.debug("Initialize routine called for Taas SRIOV NIC Switch Driver")
         self.sriov_utils = sriov_utils.SriovNicUtils()
-        return
 
     def consume_api(self, agent_api):
         self.agent_api = agent_api
@@ -78,8 +77,6 @@ class SriovNicTaasDriver(taas_base.TaasA
                   'pf_device': port_params['pf_device'],
                   'src_vlans': port_params['src_vlans']})
 
-        return
-
     @log_helpers.log_method_call
     def delete_tap_service(self, tap_service_msg):
         """Delete a tap service
@@ -109,8 +106,6 @@ class SriovNicTaasDriver(taas_base.TaasA
                   'pf_device': port_params['pf_device'],
                   'src_vlans': port_params['src_vlans']})
 
-        return
-
     @log_helpers.log_method_call
     def create_tap_flow(self, tap_flow_msg):
         """Create a tap flow
@@ -241,10 +236,10 @@ class SriovNicTaasDriver(taas_base.TaasA
                     LOG.error("TaaS error in invoking execute_sysfs_command")
                     with excutils.save_and_reraise_exception():
                         raise taas_exc.SriovNicSwitchDriverInvocationError(
-                            ts_pf_dev=ts_port_params['pf_device'],
-                            ts_vf_index=ts_port_params['vf_index'],
+                            tap_service_pf_device=ts_port_params['pf_device'],
+                            tap_service_vf_index=ts_port_params['vf_index'],
                             source_vf_index=src_port_params['vf_index'],
-                            common_vlans_rng_str=common_vlans_rng_str,
+                            vlan_filter=common_vlans_rng_str,
                             vf_to_vf_all_vlans=vf_to_vf_all_vlans,
                             direction=direction)
         return
@@ -405,5 +400,3 @@ class SriovNicTaasDriver(taas_base.TaasA
                                 common_vlans_rng_str=common_vlans_rng_str,
                                 vf_to_vf_all_vlans=vf_to_vf_all_vlans,
                                 direction=direction)
-
-        return
diff -pruN 10.0.0-1.1/neutron_taas/services/taas/drivers/linux/sriov_nic_utils.py 11.0.0-0ubuntu1/neutron_taas/services/taas/drivers/linux/sriov_nic_utils.py
--- 10.0.0-1.1/neutron_taas/services/taas/drivers/linux/sriov_nic_utils.py	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/neutron_taas/services/taas/drivers/linux/sriov_nic_utils.py	2023-03-22 12:41:36.000000000 +0000
@@ -36,7 +36,6 @@ class SriovNicUtils(object):
     #
     def __init__(self):
         LOG.debug("SriovNicUtils: init called")
-        return
 
     #
     # Returns specified key-value affilation, if it exists.
@@ -167,7 +166,7 @@ class SriovNicUtils(object):
         addr_file = os.path.join(dev_path, if_name, 'address')
 
         try:
-            with open(addr_file) as f:
+            with open(addr_file, encoding="utf-8") as f:
                 mac = next(f).strip()
                 return mac
         except (IOError, StopIteration) as e:
diff -pruN 10.0.0-1.1/neutron_taas/services/taas/service_drivers/service_driver_context.py 11.0.0-0ubuntu1/neutron_taas/services/taas/service_drivers/service_driver_context.py
--- 10.0.0-1.1/neutron_taas/services/taas/service_drivers/service_driver_context.py	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/neutron_taas/services/taas/service_drivers/service_driver_context.py	2023-03-22 12:41:36.000000000 +0000
@@ -29,7 +29,7 @@ class ServiceDriverContext(object):
 class TapServiceContext(ServiceDriverContext):
 
     def __init__(self, service_plugin, plugin_context, tap_service):
-        super(TapServiceContext, self).__init__(service_plugin, plugin_context)
+        super().__init__(service_plugin, plugin_context)
         self._tap_service = tap_service
         self._tap_id_association = None
         self._setup_tap_id_association(tap_service['id'])
@@ -59,7 +59,7 @@ class TapServiceContext(ServiceDriverCon
 class TapFlowContext(ServiceDriverContext):
 
     def __init__(self, service_plugin, plugin_context, tap_flow):
-        super(TapFlowContext, self).__init__(service_plugin, plugin_context)
+        super().__init__(service_plugin, plugin_context)
         self._tap_flow = tap_flow
 
     @property
diff -pruN 10.0.0-1.1/neutron_taas/services/taas/service_drivers/taas_agent_api.py 11.0.0-0ubuntu1/neutron_taas/services/taas/service_drivers/taas_agent_api.py
--- 10.0.0-1.1/neutron_taas/services/taas/service_drivers/taas_agent_api.py	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/neutron_taas/services/taas/service_drivers/taas_agent_api.py	2023-03-22 12:41:36.000000000 +0000
@@ -28,7 +28,6 @@ class TaasAgentApi(object):
         self.host = host
         target = messaging.Target(topic=topic, version='1.0')
         self.client = n_rpc.get_client(target)
-        return
 
     def create_tap_service(self, context, tap_service_msg, host):
         LOG.debug("In RPC Call for Create Tap Service: Host=%s, MSG=%s" %
@@ -36,9 +35,7 @@ class TaasAgentApi(object):
 
         cctxt = self.client.prepare(fanout=True)
         cctxt.cast(context, 'create_tap_service',
-                   tap_service=tap_service_msg, host=host)
-
-        return
+                   tap_service_msg=tap_service_msg, host=host)
 
     def create_tap_flow(self, context, tap_flow_msg, host):
         LOG.debug("In RPC Call for Create Tap Flow: Host=%s, MSG=%s" %
@@ -48,17 +45,13 @@ class TaasAgentApi(object):
         cctxt.cast(context, 'create_tap_flow', tap_flow_msg=tap_flow_msg,
                    host=host)
 
-        return
-
     def delete_tap_service(self, context, tap_service_msg, host):
         LOG.debug("In RPC Call for Delete Tap Service: Host=%s, MSG=%s" %
                   (host, tap_service_msg))
 
         cctxt = self.client.prepare(fanout=True)
         cctxt.cast(context, 'delete_tap_service',
-                   tap_service=tap_service_msg, host=host)
-
-        return
+                   tap_service_msg=tap_service_msg, host=host)
 
     def delete_tap_flow(self, context, tap_flow_msg, host):
         LOG.debug("In RPC Call for Delete Tap Flow: Host=%s, MSG=%s" %
@@ -67,5 +60,3 @@ class TaasAgentApi(object):
         cctxt = self.client.prepare(fanout=True)
         cctxt.cast(context, 'delete_tap_flow', tap_flow_msg=tap_flow_msg,
                    host=host)
-
-        return
diff -pruN 10.0.0-1.1/neutron_taas/services/taas/service_drivers/taas_rpc.py 11.0.0-0ubuntu1/neutron_taas/services/taas/service_drivers/taas_rpc.py
--- 10.0.0-1.1/neutron_taas/services/taas/service_drivers/taas_rpc.py	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/neutron_taas/services/taas/service_drivers/taas_rpc.py	2023-03-22 12:41:36.000000000 +0000
@@ -27,7 +27,7 @@ from neutron_taas.services.taas import s
 from neutron_taas.services.taas.service_drivers import (service_driver_context
                                                         as sd_context)
 from neutron_taas.services.taas.service_drivers import taas_agent_api
-from neutron_taas.services.taas.taas_plugin import TaasPlugin
+from neutron_taas.services.taas import taas_plugin
 
 from oslo_config import cfg
 from oslo_log import log as logging
@@ -39,10 +39,9 @@ LOG = logging.getLogger(__name__)
 class TaasCallbacks(object):
 
     def __init__(self, rpc_driver, plugin):
-        super(TaasCallbacks, self).__init__()
+        super().__init__()
         self.rpc_driver = rpc_driver
         self.plugin = plugin
-        return
 
     def sync_tap_resources(self, context, sync_tap_res, host):
         """Handle Rpc from Agent to sync up Tap resources."""
@@ -69,8 +68,9 @@ class TaasCallbacks(object):
                 with excutils.save_and_reraise_exception():
                     LOG.error("Failed to create tap service on driver,"
                               "deleting tap_service %s", ts['id'])
-                    super(TaasPlugin, self.plugin).delete_tap_service(
-                        context, ts['id'])
+                    # pylint: disable=E1003
+                    super(taas_plugin.TaasPlugin,
+                          self.plugin).delete_tap_service(context, ts['id'])
 
             # Get all the active tap flows for current tap-service
             active_tfs = self.plugin.get_tap_flows(
@@ -88,8 +88,9 @@ class TaasCallbacks(object):
                     with excutils.save_and_reraise_exception():
                         LOG.error("Failed to create tap flow on driver,"
                                   "deleting tap_flow %s", tf['id'])
-                        super(TaasPlugin, self.plugin).delete_tap_flow(
-                            context, tf['id'])
+                        # pylint: disable=E1003
+                        super(taas_plugin.TaasPlugin,
+                              self.plugin).delete_tap_flow(context, tf['id'])
 
     @db_api.CONTEXT_WRITER
     def set_tap_service_status(self, context, msg, status, host=None):
@@ -104,15 +105,17 @@ class TaasCallbacks(object):
             driver_context = sd_context.TapServiceContext(self.plugin,
                                                           context,
                                                           ts)
-            super(TaasPlugin, self.plugin).delete_tap_service(context,
-                                                              msg['id'])
+            # pylint: disable=E1003
+            super(taas_plugin.TaasPlugin,
+                  self.plugin).delete_tap_service(context, msg['id'])
             self.plugin.driver.delete_tap_service_postcommit(
                 driver_context)
             return
 
         ts = self.plugin.get_tap_service(context, msg['id'])
         ts['status'] = status
-        super(TaasPlugin, self.plugin).update_tap_service(
+        # pylint: disable=E1003
+        super(taas_plugin.TaasPlugin, self.plugin).update_tap_service(
             context,
             msg['id'],
             {'tap_service': ts})
@@ -130,16 +133,17 @@ class TaasCallbacks(object):
             driver_context = sd_context.TapFlowContext(self.plugin,
                                                        context,
                                                        tf)
-            super(TaasPlugin, self.plugin).delete_tap_flow(context,
-                                                           msg['id'])
+            # pylint: disable=E1003
+            super(taas_plugin.TaasPlugin, self.plugin).delete_tap_flow(
+                context, msg['id'])
             self.plugin.driver.delete_tap_flow_postcommit(driver_context)
             return
 
         tf = self.plugin.get_tap_flow(context, msg['id'])
         tf['status'] = status
-        super(TaasPlugin, self.plugin).update_tap_flow(context,
-                                                       msg['id'],
-                                                       {'tap_flow': tf})
+        # pylint: disable=E1003
+        super(taas_plugin.TaasPlugin, self.plugin).update_tap_flow(
+            context, msg['id'], {'tap_flow': tf})
 
 
 class TaasRpcDriver(service_drivers.TaasBaseDriver):
@@ -147,7 +151,7 @@ class TaasRpcDriver(service_drivers.Taas
 
     def __init__(self, service_plugin):
         LOG.debug("Loading TaasRpcDriver.")
-        super(TaasRpcDriver, self).__init__(service_plugin)
+        super().__init__(service_plugin)
         self.endpoints = [TaasCallbacks(self, service_plugin)]
         self.conn = n_rpc.Connection()
         self.conn.create_consumer(topics.TAAS_PLUGIN,
@@ -160,8 +164,6 @@ class TaasRpcDriver(service_drivers.Taas
             cfg.CONF.host
         )
 
-        return
-
     def _get_taas_id(self, context, tf):
         ts = self.service_plugin.get_tap_service(context,
                                                  tf['tap_service_id'])
@@ -196,7 +198,6 @@ class TaasRpcDriver(service_drivers.Taas
 
         self.agent_rpc.create_tap_service(context._plugin_context,
                                           rpc_msg, host)
-        return
 
     def delete_tap_service_precommit(self, context):
         """Send tap service deletion RPC message to agent.
@@ -224,7 +225,6 @@ class TaasRpcDriver(service_drivers.Taas
 
         self.agent_rpc.delete_tap_service(context._plugin_context,
                                           rpc_msg, host)
-        return
 
     def delete_tap_service_postcommit(self, context):
         pass
@@ -256,7 +256,6 @@ class TaasRpcDriver(service_drivers.Taas
                    'tap_service_port': ts_port}
 
         self.agent_rpc.create_tap_flow(context._plugin_context, rpc_msg, host)
-        return
 
     def delete_tap_flow_precommit(self, context):
         """Send tap flow deletion RPC message to agent."""
@@ -322,7 +321,6 @@ class TaasRpcDriver(service_drivers.Taas
                    'vlan_filter_list': vlan_filter_list}
 
         self.agent_rpc.delete_tap_flow(context._plugin_context, rpc_msg, host)
-        return
 
     def delete_tap_flow_postcommit(self, context):
         pass
diff -pruN 10.0.0-1.1/neutron_taas/services/taas/taas_plugin.py 11.0.0-0ubuntu1/neutron_taas/services/taas/taas_plugin.py
--- 10.0.0-1.1/neutron_taas/services/taas/taas_plugin.py	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/neutron_taas/services/taas/taas_plugin.py	2023-03-22 12:41:36.000000000 +0000
@@ -58,8 +58,6 @@ class TaasPlugin(taas_db.Taas_db_Mixin):
         self._load_drivers()
         self.driver = self._get_driver_for_provider(self.default_provider)
 
-        return
-
     def _load_drivers(self):
         """Loads plugin-drivers specified in configuration."""
         self.drivers, self.default_provider = service_base.load_drivers(
@@ -95,8 +93,7 @@ class TaasPlugin(taas_db.Taas_db_Mixin):
             LOG.debug("Host could not be found, Port Binding disbaled!")
 
         # Create tap service in the db model
-        ts = super(TaasPlugin, self).create_tap_service(context,
-                                                        tap_service)
+        ts = super().create_tap_service(context, tap_service)
         driver_context = sd_context.TapServiceContext(self, context, ts)
         self.driver.create_tap_service_precommit(driver_context)
 
@@ -106,7 +103,7 @@ class TaasPlugin(taas_db.Taas_db_Mixin):
             with excutils.save_and_reraise_exception():
                 LOG.error("Failed to create tap service on driver,"
                           "deleting tap_service %s", ts['id'])
-                super(TaasPlugin, self).delete_tap_service(context, ts['id'])
+                super().delete_tap_service(context, ts['id'])
 
         return ts
 
@@ -127,11 +124,11 @@ class TaasPlugin(taas_db.Taas_db_Mixin):
         driver_context = sd_context.TapServiceContext(self, context, ts)
         if ts['status'] == constants.ACTIVE:
             ts['status'] = constants.PENDING_DELETE
-            super(TaasPlugin, self).update_tap_service(
+            super().update_tap_service(
                 context, id, {'tap_service': ts})
             method = self.driver.delete_tap_service_precommit
         else:
-            super(TaasPlugin, self).delete_tap_service(context, id)
+            super().delete_tap_service(context, id)
             method = self.driver.delete_tap_service_postcommit
 
         try:
@@ -158,7 +155,7 @@ class TaasPlugin(taas_db.Taas_db_Mixin):
             raise taas_exc.TapServiceNotBelongToTenant()
 
         # create tap flow in the db model
-        tf = super(TaasPlugin, self).create_tap_flow(context, tap_flow)
+        tf = super().create_tap_flow(context, tap_flow)
         driver_context = sd_context.TapFlowContext(self, context, tf)
         self.driver.create_tap_flow_precommit(driver_context)
 
@@ -168,7 +165,7 @@ class TaasPlugin(taas_db.Taas_db_Mixin):
             with excutils.save_and_reraise_exception():
                 LOG.error("Failed to create tap flow on driver,"
                           "deleting tap_flow %s", tf['id'])
-                super(TaasPlugin, self).delete_tap_flow(context, tf['id'])
+                super().delete_tap_flow(context, tf['id'])
 
         return tf
 
@@ -180,11 +177,10 @@ class TaasPlugin(taas_db.Taas_db_Mixin):
         driver_context = sd_context.TapFlowContext(self, context, tf)
         if tf['status'] == constants.ACTIVE:
             tf['status'] = constants.PENDING_DELETE
-            super(TaasPlugin, self).update_tap_flow(context, id,
-                                                    {'tap_flow': tf})
+            super().update_tap_flow(context, id, {'tap_flow': tf})
             method = self.driver.delete_tap_flow_precommit
         else:
-            super(TaasPlugin, self).delete_tap_flow(context, id)
+            super().delete_tap_flow(context, id)
             method = self.driver.delete_tap_flow_postcommit
 
         try:
diff -pruN 10.0.0-1.1/neutron_taas/taas_client/osc/tap_flow.py 11.0.0-0ubuntu1/neutron_taas/taas_client/osc/tap_flow.py
--- 10.0.0-1.1/neutron_taas/taas_client/osc/tap_flow.py	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/neutron_taas/taas_client/osc/tap_flow.py	2023-03-22 12:41:36.000000000 +0000
@@ -61,7 +61,7 @@ class CreateTapFlow(command.ShowOne):
     _description = _("Create a tap flow")
 
     def get_parser(self, prog_name):
-        parser = super(CreateTapFlow, self).get_parser(prog_name)
+        parser = super().get_parser(prog_name)
         nc_osc_utils.add_project_owner_option_to_parser(parser)
         _add_updatable_args(parser)
         parser.add_argument(
@@ -127,7 +127,7 @@ class ListTapFlow(command.Lister):
     _description = _("List tap flows that belong to a given tenant")
 
     def get_parser(self, prog_name):
-        parser = super(ListTapFlow, self).get_parser(prog_name)
+        parser = super().get_parser(prog_name)
         nc_osc_utils.add_project_owner_option_to_parser(parser)
 
         return parser
@@ -154,7 +154,7 @@ class ShowTapFlow(command.ShowOne):
     _description = _("Show information of a given tap flow")
 
     def get_parser(self, prog_name):
-        parser = super(ShowTapFlow, self).get_parser(prog_name)
+        parser = super().get_parser(prog_name)
         parser.add_argument(
             TAP_FLOW,
             metavar="<%s>" % TAP_FLOW,
@@ -175,7 +175,7 @@ class DeleteTapFlow(command.Command):
     _description = _("Delete a tap flow")
 
     def get_parser(self, prog_name):
-        parser = super(DeleteTapFlow, self).get_parser(prog_name)
+        parser = super().get_parser(prog_name)
         parser.add_argument(
             TAP_FLOW,
             metavar="<%s>" % TAP_FLOW,
@@ -207,7 +207,7 @@ class UpdateTapFlow(command.ShowOne):
     _description = _("Update a tap flow.")
 
     def get_parser(self, prog_name):
-        parser = super(UpdateTapFlow, self).get_parser(prog_name)
+        parser = super().get_parser(prog_name)
         parser.add_argument(
             TAP_FLOW,
             metavar="<%s>" % TAP_FLOW,
diff -pruN 10.0.0-1.1/neutron_taas/taas_client/osc/tap_service.py 11.0.0-0ubuntu1/neutron_taas/taas_client/osc/tap_service.py
--- 10.0.0-1.1/neutron_taas/taas_client/osc/tap_service.py	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/neutron_taas/taas_client/osc/tap_service.py	2023-03-22 12:41:36.000000000 +0000
@@ -59,7 +59,7 @@ class CreateTapService(command.ShowOne):
     _description = _("Create a tap service")
 
     def get_parser(self, prog_name):
-        parser = super(CreateTapService, self).get_parser(prog_name)
+        parser = super().get_parser(prog_name)
         nc_osc_utils.add_project_owner_option_to_parser(parser)
         _add_updatable_args(parser)
         parser.add_argument(
@@ -99,7 +99,7 @@ class ListTapService(command.Lister):
     _description = _("List tap services that belong to a given tenant")
 
     def get_parser(self, prog_name):
-        parser = super(ListTapService, self).get_parser(prog_name)
+        parser = super().get_parser(prog_name)
         nc_osc_utils.add_project_owner_option_to_parser(parser)
 
         return parser
@@ -126,7 +126,7 @@ class ShowTapService(command.ShowOne):
     _description = _("Show information of a given tap service")
 
     def get_parser(self, prog_name):
-        parser = super(ShowTapService, self).get_parser(prog_name)
+        parser = super().get_parser(prog_name)
         parser.add_argument(
             TAP_SERVICE,
             metavar="<%s>" % TAP_SERVICE,
@@ -147,7 +147,7 @@ class DeleteTapService(command.Command):
     _description = _("Delete a tap service")
 
     def get_parser(self, prog_name):
-        parser = super(DeleteTapService, self).get_parser(prog_name)
+        parser = super().get_parser(prog_name)
         parser.add_argument(
             TAP_SERVICE,
             metavar="<%s>" % TAP_SERVICE,
@@ -179,7 +179,7 @@ class UpdateTapService(command.ShowOne):
     _description = _("Update a tap service.")
 
     def get_parser(self, prog_name):
-        parser = super(UpdateTapService, self).get_parser(prog_name)
+        parser = super().get_parser(prog_name)
         parser.add_argument(
             TAP_SERVICE,
             metavar="<%s>" % TAP_SERVICE,
diff -pruN 10.0.0-1.1/neutron_taas/tests/unit/services/taas/test_taas_plugin.py 11.0.0-0ubuntu1/neutron_taas/tests/unit/services/taas/test_taas_plugin.py
--- 10.0.0-1.1/neutron_taas/tests/unit/services/taas/test_taas_plugin.py	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/neutron_taas/tests/unit/services/taas/test_taas_plugin.py	2023-03-22 12:41:36.000000000 +0000
@@ -41,9 +41,9 @@ class DummyError(Exception):
 class TestTaasPlugin(testlib_api.SqlTestCase):
     def setUp(self):
         super(TestTaasPlugin, self).setUp()
-        mock.patch.object(n_rpc, 'Connection', autospec=True).start()
+        mock.patch.object(n_rpc, 'Connection', spec=object).start()
         mock.patch.object(taas_agent_api,
-                          'TaasAgentApi', autospec=True).start()
+                          'TaasAgentApi', spec=object).start()
         self.driver = mock.MagicMock()
         mock.patch('neutron.services.service_base.load_drivers',
                    return_value=({'dummy_provider': self.driver},
diff -pruN 10.0.0-1.1/releasenotes/source/index.rst 11.0.0-0ubuntu1/releasenotes/source/index.rst
--- 10.0.0-1.1/releasenotes/source/index.rst	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/releasenotes/source/index.rst	2023-03-22 12:41:36.000000000 +0000
@@ -12,6 +12,7 @@ Contents:
    :maxdepth: 2
 
    unreleased
+   zed
    yoga
    train
    stein
diff -pruN 10.0.0-1.1/releasenotes/source/zed.rst 11.0.0-0ubuntu1/releasenotes/source/zed.rst
--- 10.0.0-1.1/releasenotes/source/zed.rst	1970-01-01 00:00:00.000000000 +0000
+++ 11.0.0-0ubuntu1/releasenotes/source/zed.rst	2023-03-22 12:41:36.000000000 +0000
@@ -0,0 +1,6 @@
+========================
+Zed Series Release Notes
+========================
+
+.. release-notes::
+   :branch: stable/zed
diff -pruN 10.0.0-1.1/setup.cfg 11.0.0-0ubuntu1/setup.cfg
--- 10.0.0-1.1/setup.cfg	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/setup.cfg	2023-03-22 12:42:09.072151200 +0000
@@ -1,32 +1,30 @@
 [metadata]
 name = tap-as-a-service
 summary = Tap-as-a-Service (TaaS) is an extension to the OpenStack network service (Neutron), it provides remote port mirroring capability for tenant virtual networks.
-description_file =
-    README.rst
+description_file = 
+	README.rst
 author = OpenStack
 author_email = openstack-discuss@lists.openstack.org
 home_page = http://www.openstack.org/
-classifier =
-    Environment :: OpenStack
-    Intended Audience :: Information Technology
-    Intended Audience :: System Administrators
-    License :: OSI Approved :: Apache Software License
-    Operating System :: POSIX :: Linux
-    Programming Language :: Python
-    Programming Language :: Python :: 3
-    Programming Language :: Python :: 3.8
-    Programming Language :: Python :: 3.9
+classifier = 
+	Environment :: OpenStack
+	Intended Audience :: Information Technology
+	Intended Audience :: System Administrators
+	License :: OSI Approved :: Apache Software License
+	Operating System :: POSIX :: Linux
+	Programming Language :: Python
+	Programming Language :: Python :: 3
+	Programming Language :: Python :: 3.8
+	Programming Language :: Python :: 3.9
 
 [files]
-packages =
-    neutron_taas
-
-data_files =
-    etc/neutron/rootwrap.d =
-        etc/neutron/rootwrap.d/taas-i40e-sysfs.filters
-
-scripts =
-    bin/i40e_sysfs_command
+packages = 
+	neutron_taas
+data_files = 
+	etc/neutron/rootwrap.d =
+	etc/neutron/rootwrap.d/taas-i40e-sysfs.filters
+scripts = 
+	bin/i40e_sysfs_command
 
 [build_sphinx]
 source-dir = doc/source
@@ -56,36 +54,39 @@ mapping_file = babel.cfg
 output_file = neutron_taas/locale/neutron_taas.pot
 
 [entry_points]
-neutron.agent.l2.extensions =
-    taas = neutron_taas.services.taas.agents.extensions.taas:TaasAgentExtension
-neutron_taas.taas.agent_drivers =
-    ovs = neutron_taas.services.taas.drivers.linux.ovs_taas:OvsTaasDriver
-    sriov = neutron_taas.services.taas.drivers.linux.sriov_nic_taas:SriovNicTaasDriver
-neutron.service_plugins =
-    taas = neutron_taas.services.taas.taas_plugin:TaasPlugin
-neutron.db.alembic_migrations =
-    tap-as-a-service = neutron_taas.db.migration:alembic_migration
-neutronclient.extension =
-    tap_service = neutron_taas.taas_client.tapservice
-    tap_flow = neutron_taas.taas_client.tapflow
-oslo.policy.policies =
-    tap-as-a-service = neutron_taas.policies:list_rules
-neutron.policies =
-    tap-as-a-service = neutron_taas.policies:list_rules
-openstack.neutronclient.v2 =
-    tap_service_create = neutron_taas.taas_client.osc.tap_service:CreateTapService
-    tap_service_list = neutron_taas.taas_client.osc.tap_service:ListTapService
-    tap_service_show = neutron_taas.taas_client.osc.tap_service:ShowTapService
-    tap_service_delete = neutron_taas.taas_client.osc.tap_service:DeleteTapService
-    tap_service_update = neutron_taas.taas_client.osc.tap_service:UpdateTapService
-    tap_flow_create = neutron_taas.taas_client.osc.tap_flow:CreateTapFlow
-    tap_flow_list = neutron_taas.taas_client.osc.tap_flow:ListTapFlow
-    tap_flow_show = neutron_taas.taas_client.osc.tap_flow:ShowTapFlow
-    tap_flow_delete = neutron_taas.taas_client.osc.tap_flow:DeleteTapFlow
-    tap_flow_update = neutron_taas.taas_client.osc.tap_flow:UpdateTapFlow
-
+neutron.agent.l2.extensions = 
+	taas = neutron_taas.services.taas.agents.extensions.taas:TaasAgentExtension
+neutron_taas.taas.agent_drivers = 
+	ovs = neutron_taas.services.taas.drivers.linux.ovs_taas:OvsTaasDriver
+	sriov = neutron_taas.services.taas.drivers.linux.sriov_nic_taas:SriovNicTaasDriver
+neutron.service_plugins = 
+	taas = neutron_taas.services.taas.taas_plugin:TaasPlugin
+neutron.db.alembic_migrations = 
+	tap-as-a-service = neutron_taas.db.migration:alembic_migration
+neutronclient.extension = 
+	tap_service = neutron_taas.taas_client.tapservice
+	tap_flow = neutron_taas.taas_client.tapflow
+oslo.policy.policies = 
+	tap-as-a-service = neutron_taas.policies:list_rules
+neutron.policies = 
+	tap-as-a-service = neutron_taas.policies:list_rules
+openstack.neutronclient.v2 = 
+	tap_service_create = neutron_taas.taas_client.osc.tap_service:CreateTapService
+	tap_service_list = neutron_taas.taas_client.osc.tap_service:ListTapService
+	tap_service_show = neutron_taas.taas_client.osc.tap_service:ShowTapService
+	tap_service_delete = neutron_taas.taas_client.osc.tap_service:DeleteTapService
+	tap_service_update = neutron_taas.taas_client.osc.tap_service:UpdateTapService
+	tap_flow_create = neutron_taas.taas_client.osc.tap_flow:CreateTapFlow
+	tap_flow_list = neutron_taas.taas_client.osc.tap_flow:ListTapFlow
+	tap_flow_show = neutron_taas.taas_client.osc.tap_flow:ShowTapFlow
+	tap_flow_delete = neutron_taas.taas_client.osc.tap_flow:DeleteTapFlow
+	tap_flow_update = neutron_taas.taas_client.osc.tap_flow:UpdateTapFlow
 
 [pbr]
 autodoc_index_modules = True
 warnerrors = True
 
+[egg_info]
+tag_build = 
+tag_date = 0
+
diff -pruN 10.0.0-1.1/tap_as_a_service.egg-info/PKG-INFO 11.0.0-0ubuntu1/tap_as_a_service.egg-info/PKG-INFO
--- 10.0.0-1.1/tap_as_a_service.egg-info/PKG-INFO	1970-01-01 00:00:00.000000000 +0000
+++ 11.0.0-0ubuntu1/tap_as_a_service.egg-info/PKG-INFO	2023-03-22 12:42:08.000000000 +0000
@@ -0,0 +1,44 @@
+Metadata-Version: 1.1
+Name: tap-as-a-service
+Version: 11.0.0
+Summary: Tap-as-a-Service (TaaS) is an extension to the OpenStack network service (Neutron), it provides remote port mirroring capability for tenant virtual networks.
+Home-page: http://www.openstack.org/
+Author: OpenStack
+Author-email: openstack-discuss@lists.openstack.org
+License: UNKNOWN
+Description: ================
+        Tap as a Service
+        ================
+        Tap-as-a-Service (TaaS) is an extension to the OpenStack network service (Neutron).
+        It provides remote port mirroring capability for tenant virtual networks.
+        
+        Port mirroring involves sending a copy of packets entering and/or leaving one
+        port to another port, which is usually different from the original destinations
+        of the packets being mirrored.
+        
+        
+        This service has been primarily designed to help tenants (or the cloud administrator)
+        debug complex virtual networks and gain visibility into their VMs, by monitoring the
+        network traffic associated with them. TaaS honors tenant boundaries and its mirror
+        sessions are capable of spanning across multiple compute and network nodes. It serves
+        as an essential infrastructure component that can be utilized for supplying data to a
+        variety of network analytics and security applications (e.g. IDS).
+        
+        * Free software: Apache license
+        * API Reference: https://opendev.org/openstack/tap-as-a-service/src/branch/master/API_REFERENCE.rst
+        * Source: https://opendev.org/openstack/tap-as-a-service/
+        * Bugs: https://bugs.launchpad.net/tap-as-a-service
+        
+        For installing Tap-as-a-Service with Devstack please read the INSTALL.rst file
+        
+        
+Platform: UNKNOWN
+Classifier: Environment :: OpenStack
+Classifier: Intended Audience :: Information Technology
+Classifier: Intended Audience :: System Administrators
+Classifier: License :: OSI Approved :: Apache Software License
+Classifier: Operating System :: POSIX :: Linux
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
diff -pruN 10.0.0-1.1/tap_as_a_service.egg-info/SOURCES.txt 11.0.0-0ubuntu1/tap_as_a_service.egg-info/SOURCES.txt
--- 10.0.0-1.1/tap_as_a_service.egg-info/SOURCES.txt	1970-01-01 00:00:00.000000000 +0000
+++ 11.0.0-0ubuntu1/tap_as_a_service.egg-info/SOURCES.txt	2023-03-22 12:42:09.000000000 +0000
@@ -0,0 +1,148 @@
+.coveragerc
+.mailmap
+.pylintrc
+.stestr.conf
+.zuul.yaml
+API_REFERENCE.rst
+AUTHORS
+CONTRIBUTING.rst
+ChangeLog
+HACKING.rst
+INSTALL.rst
+LICENSE
+README.rst
+babel.cfg
+bindep.txt
+openstack-common.conf
+requirements.txt
+setup.cfg
+setup.py
+test-requirements.txt
+tox.ini
+bin/i40e_sysfs_command
+deliverables/queens/tap-as-a-service.yaml
+deliverables/rocky/tap-as-a-service.yaml
+deliverables/stein/tap-as-a-service.yaml
+deliverables/train/tap-as-a-service.yaml
+devstack/README.rst
+devstack/devstackgaterc
+devstack/plugin.sh
+devstack/settings
+doc/requirements.txt
+doc/source/api_reference.rst
+doc/source/conf.py
+doc/source/contributing.rst
+doc/source/index.rst
+doc/source/installation.rst
+doc/source/presentations.rst
+doc/source/readme.rst
+doc/source/specs
+etc/policy-generator.conf
+etc/taas.ini
+etc/taas_plugin.ini
+etc/neutron/policy.yaml.sample
+etc/neutron/rootwrap.d/taas-i40e-sysfs.filters
+neutron_taas/__init__.py
+neutron_taas/_i18n.py
+neutron_taas/common/__init__.py
+neutron_taas/common/config.py
+neutron_taas/common/constants.py
+neutron_taas/common/topics.py
+neutron_taas/common/utils.py
+neutron_taas/db/__init__.py
+neutron_taas/db/head.py
+neutron_taas/db/taas_db.py
+neutron_taas/db/migration/__init__.py
+neutron_taas/db/migration/taas_init_ops.py
+neutron_taas/db/migration/alembic_migration/README
+neutron_taas/db/migration/alembic_migration/__init__.py
+neutron_taas/db/migration/alembic_migration/env.py
+neutron_taas/db/migration/alembic_migration/script.py.mako
+neutron_taas/db/migration/alembic_migration/versions/CONTRACT_HEAD
+neutron_taas/db/migration/alembic_migration/versions/EXPAND_HEAD
+neutron_taas/db/migration/alembic_migration/versions/start_neutron_taas.py
+neutron_taas/db/migration/alembic_migration/versions/newton/contract/1817af933379_remove_network_id_from_tap_service.py
+neutron_taas/db/migration/alembic_migration/versions/newton/contract/2ecce0368a62_add_foreign_key_constraint_on_tap_id_association.py
+neutron_taas/db/migration/alembic_migration/versions/newton/contract/4086b3cffc01_rename_tenant_to_project.py
+neutron_taas/db/migration/alembic_migration/versions/newton/contract/80c85b675b6e_initial_newton_no_op_contract_script.py
+neutron_taas/db/migration/alembic_migration/versions/newton/expand/04625466c6fa_initial_newton_no_op_expand_script.py
+neutron_taas/db/migration/alembic_migration/versions/newton/expand/fddbdec8711a_add_status.py
+neutron_taas/db/migration/alembic_migration/versions/pike/contract/bac61f603e39_alter_tap_id_associations_to_support_tap_id_reuse.py
+neutron_taas/db/migration/alembic_migration/versions/stein/expand/ccbcc559d175_add_vlan_filter_to_tap_flow.py
+neutron_taas/extensions/__init__.py
+neutron_taas/extensions/taas.py
+neutron_taas/extensions/vlan_filter.py
+neutron_taas/policies/__init__.py
+neutron_taas/policies/tap_flow.py
+neutron_taas/policies/tap_service.py
+neutron_taas/services/__init__.py
+neutron_taas/services/taas/__init__.py
+neutron_taas/services/taas/taas_plugin.py
+neutron_taas/services/taas/agents/__init__.py
+neutron_taas/services/taas/agents/taas_agent_api.py
+neutron_taas/services/taas/agents/common/__init__.py
+neutron_taas/services/taas/agents/common/taas_agent.py
+neutron_taas/services/taas/agents/extensions/__init__.py
+neutron_taas/services/taas/agents/extensions/taas.py
+neutron_taas/services/taas/drivers/__init__.py
+neutron_taas/services/taas/drivers/linux/__init__.py
+neutron_taas/services/taas/drivers/linux/ovs_constants.py
+neutron_taas/services/taas/drivers/linux/ovs_taas.py
+neutron_taas/services/taas/drivers/linux/ovs_utils.py
+neutron_taas/services/taas/drivers/linux/sriov_nic_exceptions.py
+neutron_taas/services/taas/drivers/linux/sriov_nic_taas.py
+neutron_taas/services/taas/drivers/linux/sriov_nic_utils.py
+neutron_taas/services/taas/service_drivers/__init__.py
+neutron_taas/services/taas/service_drivers/service_driver_context.py
+neutron_taas/services/taas/service_drivers/taas_agent_api.py
+neutron_taas/services/taas/service_drivers/taas_rpc.py
+neutron_taas/taas_client/__init__.py
+neutron_taas/taas_client/tapflow.py
+neutron_taas/taas_client/tapservice.py
+neutron_taas/taas_client/osc/__init__.py
+neutron_taas/taas_client/osc/tap_flow.py
+neutron_taas/taas_client/osc/tap_service.py
+neutron_taas/tests/__init__.py
+neutron_taas/tests/base.py
+neutron_taas/tests/unit/__init__.py
+neutron_taas/tests/unit/db/__init__.py
+neutron_taas/tests/unit/db/test_migrations.py
+neutron_taas/tests/unit/db/test_taas_db.py
+neutron_taas/tests/unit/extensions/__init__.py
+neutron_taas/tests/unit/extensions/test_taas.py
+neutron_taas/tests/unit/extensions/test_vlan_filter.py
+neutron_taas/tests/unit/services/__init__.py
+neutron_taas/tests/unit/services/drivers/__init__.py
+neutron_taas/tests/unit/services/drivers/test_linux_sriov_nic_driver.py
+neutron_taas/tests/unit/services/drivers/test_linux_sriov_utils.py
+neutron_taas/tests/unit/services/taas/__init__.py
+neutron_taas/tests/unit/services/taas/test_taas_plugin.py
+neutron_taas/tests/unit/taas_client/__init__.py
+neutron_taas/tests/unit/taas_client/test_cli20_tapflow.py
+neutron_taas/tests/unit/taas_client/test_cli20_tapservice.py
+neutron_taas/tests/unit/taas_client/osc/__init__.py
+neutron_taas/tests/unit/taas_client/osc/fakes.py
+neutron_taas/tests/unit/taas_client/osc/test_osc_tap_flow.py
+neutron_taas/tests/unit/taas_client/osc/test_osc_tap_service.py
+releasenotes/notes/.placeholder
+releasenotes/notes/bp-port-mirroring-sriov-vf-879bc2aa53c2c8d4.yaml
+releasenotes/notes/clear-tap-resources-on-port-delete-9583cdd7cd6098ea.yaml
+releasenotes/notes/drop-python-3-6-and-3-7-c54e20d68667644a.yaml
+releasenotes/source/conf.py
+releasenotes/source/index.rst
+releasenotes/source/queens.rst
+releasenotes/source/stein.rst
+releasenotes/source/unreleased.rst
+releasenotes/source/yoga.rst
+releasenotes/source/zed.rst
+releasenotes/source/_static/.placeholder
+specs/index.rst
+specs/mitaka/tap-as-a-service.rst
+tap_as_a_service.egg-info/PKG-INFO
+tap_as_a_service.egg-info/SOURCES.txt
+tap_as_a_service.egg-info/dependency_links.txt
+tap_as_a_service.egg-info/entry_points.txt
+tap_as_a_service.egg-info/not-zip-safe
+tap_as_a_service.egg-info/pbr.json
+tap_as_a_service.egg-info/requires.txt
+tap_as_a_service.egg-info/top_level.txt
\ No newline at end of file
diff -pruN 10.0.0-1.1/tap_as_a_service.egg-info/dependency_links.txt 11.0.0-0ubuntu1/tap_as_a_service.egg-info/dependency_links.txt
--- 10.0.0-1.1/tap_as_a_service.egg-info/dependency_links.txt	1970-01-01 00:00:00.000000000 +0000
+++ 11.0.0-0ubuntu1/tap_as_a_service.egg-info/dependency_links.txt	2023-03-22 12:42:08.000000000 +0000
@@ -0,0 +1 @@
+
diff -pruN 10.0.0-1.1/tap_as_a_service.egg-info/entry_points.txt 11.0.0-0ubuntu1/tap_as_a_service.egg-info/entry_points.txt
--- 10.0.0-1.1/tap_as_a_service.egg-info/entry_points.txt	1970-01-01 00:00:00.000000000 +0000
+++ 11.0.0-0ubuntu1/tap_as_a_service.egg-info/entry_points.txt	2023-03-22 12:42:08.000000000 +0000
@@ -0,0 +1,35 @@
+[neutron.agent.l2.extensions]
+taas = neutron_taas.services.taas.agents.extensions.taas:TaasAgentExtension
+
+[neutron.db.alembic_migrations]
+tap-as-a-service = neutron_taas.db.migration:alembic_migration
+
+[neutron.policies]
+tap-as-a-service = neutron_taas.policies:list_rules
+
+[neutron.service_plugins]
+taas = neutron_taas.services.taas.taas_plugin:TaasPlugin
+
+[neutron_taas.taas.agent_drivers]
+ovs = neutron_taas.services.taas.drivers.linux.ovs_taas:OvsTaasDriver
+sriov = neutron_taas.services.taas.drivers.linux.sriov_nic_taas:SriovNicTaasDriver
+
+[neutronclient.extension]
+tap_flow = neutron_taas.taas_client.tapflow
+tap_service = neutron_taas.taas_client.tapservice
+
+[openstack.neutronclient.v2]
+tap_flow_create = neutron_taas.taas_client.osc.tap_flow:CreateTapFlow
+tap_flow_delete = neutron_taas.taas_client.osc.tap_flow:DeleteTapFlow
+tap_flow_list = neutron_taas.taas_client.osc.tap_flow:ListTapFlow
+tap_flow_show = neutron_taas.taas_client.osc.tap_flow:ShowTapFlow
+tap_flow_update = neutron_taas.taas_client.osc.tap_flow:UpdateTapFlow
+tap_service_create = neutron_taas.taas_client.osc.tap_service:CreateTapService
+tap_service_delete = neutron_taas.taas_client.osc.tap_service:DeleteTapService
+tap_service_list = neutron_taas.taas_client.osc.tap_service:ListTapService
+tap_service_show = neutron_taas.taas_client.osc.tap_service:ShowTapService
+tap_service_update = neutron_taas.taas_client.osc.tap_service:UpdateTapService
+
+[oslo.policy.policies]
+tap-as-a-service = neutron_taas.policies:list_rules
+
diff -pruN 10.0.0-1.1/tap_as_a_service.egg-info/not-zip-safe 11.0.0-0ubuntu1/tap_as_a_service.egg-info/not-zip-safe
--- 10.0.0-1.1/tap_as_a_service.egg-info/not-zip-safe	1970-01-01 00:00:00.000000000 +0000
+++ 11.0.0-0ubuntu1/tap_as_a_service.egg-info/not-zip-safe	2023-03-22 12:42:08.000000000 +0000
@@ -0,0 +1 @@
+
diff -pruN 10.0.0-1.1/tap_as_a_service.egg-info/pbr.json 11.0.0-0ubuntu1/tap_as_a_service.egg-info/pbr.json
--- 10.0.0-1.1/tap_as_a_service.egg-info/pbr.json	1970-01-01 00:00:00.000000000 +0000
+++ 11.0.0-0ubuntu1/tap_as_a_service.egg-info/pbr.json	2023-03-22 12:42:08.000000000 +0000
@@ -0,0 +1 @@
+{"git_version": "868e9c6", "is_release": true}
\ No newline at end of file
diff -pruN 10.0.0-1.1/tap_as_a_service.egg-info/requires.txt 11.0.0-0ubuntu1/tap_as_a_service.egg-info/requires.txt
--- 10.0.0-1.1/tap_as_a_service.egg-info/requires.txt	1970-01-01 00:00:00.000000000 +0000
+++ 11.0.0-0ubuntu1/tap_as_a_service.egg-info/requires.txt	2023-03-22 12:42:08.000000000 +0000
@@ -0,0 +1,4 @@
+Babel>=2.8.0
+neutron-lib>=2.11.0
+neutron>=16.0.0.0b1
+pbr>=5.5.0
diff -pruN 10.0.0-1.1/tap_as_a_service.egg-info/top_level.txt 11.0.0-0ubuntu1/tap_as_a_service.egg-info/top_level.txt
--- 10.0.0-1.1/tap_as_a_service.egg-info/top_level.txt	1970-01-01 00:00:00.000000000 +0000
+++ 11.0.0-0ubuntu1/tap_as_a_service.egg-info/top_level.txt	2023-03-22 12:42:08.000000000 +0000
@@ -0,0 +1 @@
+neutron_taas
diff -pruN 10.0.0-1.1/test-requirements.txt 11.0.0-0ubuntu1/test-requirements.txt
--- 10.0.0-1.1/test-requirements.txt	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/test-requirements.txt	2023-03-22 12:41:36.000000000 +0000
@@ -14,11 +14,8 @@ stestr>=3.0.1 # Apache-2.0
 testresources>=2.0.1 # Apache-2.0/BSD
 testscenarios>=0.5.0 # Apache-2.0/BSD
 testtools>=2.4.0 # MIT
-# This is necessary as in lower-constraints job neutron
-# imports it
-mock>=3.0.0 # BSD
 
-astroid==2.1.0 # LGPLv2.1
-pylint==2.2.0 # GPLv2
-isort==4.3.21 # MIT
+astroid>=2.12.4 # LGPLv2.1
+pylint==2.15.6 # GPLv2
+isort==5.10.1 # MIT
 WebTest>=2.0.27 # MIT
diff -pruN 10.0.0-1.1/tox.ini 11.0.0-0ubuntu1/tox.ini
--- 10.0.0-1.1/tox.ini	2022-07-27 12:20:11.000000000 +0000
+++ 11.0.0-0ubuntu1/tox.ini	2023-03-22 12:41:36.000000000 +0000
@@ -1,7 +1,6 @@
 [tox]
 envlist = docs,py38,pep8
-minversion = 2.3.2
-skipsdist = True
+minversion = 3.18.0
 ignore_basepython_conflict = True
 
 [testenv]
@@ -13,15 +12,14 @@ setenv = VIRTUAL_ENV={envdir}
          EDITOR=vi
          PYTHONWARNINGS=default::DeprecationWarning
 usedevelop = True
-install_command = pip install {opts} {packages}
-deps = -c{env:TOX_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt}
+deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
        -r{toxinidir}/requirements.txt
        -r{toxinidir}/test-requirements.txt
 commands = find . -type f -name "*.py[c|o]" -delete
            find . -type l -name "*.py[c|o]" -delete
            find . -type d -name "__pycache__" -delete
            stestr run '{posargs}'
-whitelist_externals = find
+allowlist_externals = find
 
 [tox:jenkins]
 sitepackages = True
@@ -29,6 +27,8 @@ sitepackages = True
 [testenv:pep8]
 commands =
   flake8
+  pylint --version
+  pylint --rcfile=.pylintrc --output-format=colorized {posargs:neutron_taas}
   neutron-db-manage --subproject tap-as-a-service --database-connection sqlite:// check_migration
   {[testenv:genpolicy]commands}
 
