Bug 1842: LTS Support

Updates base to Ubuntu 20.04
Updates python to 3.8
Updates pip dependencies to more recent versions
Adds apt cache to stage 2 dockerfile

Fixes Bug 1842

Change-Id: Iefa3c72fe200ecf4f0b4081db76d203ac38a50e7
Signed-off-by: beierlm <mark.beierl@canonical.com>
diff --git a/Dockerfile b/Dockerfile
index 74b9c36..c597522 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -23,6 +23,12 @@
 
 FROM ubuntu:20.04
 
+ARG APT_PROXY
+RUN if [ ! -z $APT_PROXY ] ; then \
+    echo "Acquire::http::Proxy \"$APT_PROXY\";" > /etc/apt/apt.conf.d/proxy.conf ;\
+    echo "Acquire::https::Proxy \"$APT_PROXY\";" >> /etc/apt/apt.conf.d/proxy.conf ;\
+    fi
+
 RUN DEBIAN_FRONTEND=noninteractive apt-get update && \
     DEBIAN_FRONTEND=noninteractive apt-get -y install \
         debhelper \
@@ -33,5 +39,5 @@
         python3-dev \
         python3-setuptools
 
-RUN python3 -m easy_install pip==21.0.1
-RUN pip3 install tox==3.22.0
+RUN python3 -m easy_install pip==21.3.1
+RUN pip install tox==3.24.5
diff --git a/requirements-dev.txt b/requirements-dev.txt
index cce38f5..6b08485 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -1,197 +1,3 @@
--e git+https://osm.etsi.org/gerrit/osm/N2VC.git@v10.0#egg=n2vc
-    # via -r requirements-dev.in
--e git+https://osm.etsi.org/gerrit/osm/common.git@v10.0#egg=osm-common
-    # via -r requirements-dev.in
-aiokafka==0.7.0
-    # via -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v10.0
-async-timeout==3.0.1
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   retrying-async
-bcrypt==3.2.0
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   paramiko
-cachetools==4.2.1
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   google-auth
-certifi==2020.12.5
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   kubernetes
-    #   requests
-cffi==1.14.5
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   bcrypt
-    #   cryptography
-    #   pynacl
-chardet==4.0.0
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   requests
-cryptography==3.4.7
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   paramiko
-dataclasses==0.6
-    # via -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v10.0
-google-auth==1.28.0
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   kubernetes
-idna==2.10
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   requests
-juju==2.8.4
-    # via -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-jujubundlelib==0.5.6
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   theblues
-kafka-python==2.0.2
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   aiokafka
-kubernetes==10.0.1
-    # via -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-macaroonbakery==1.3.1
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   juju
-    #   theblues
-motor==1.3.1
-    # via -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-mypy-extensions==0.4.3
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   typing-inspect
-oauthlib==3.1.0
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   requests-oauthlib
-paramiko==2.7.2
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   juju
-protobuf==3.15.6
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   macaroonbakery
-pyasn1-modules==0.2.8
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   google-auth
-pyasn1==0.4.8
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   juju
-    #   pyasn1-modules
-    #   rsa
-pycparser==2.20
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   cffi
-pycrypto==2.6.1
-    # via -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v10.0
-pymacaroons==0.13.0
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   macaroonbakery
-pymongo==3.11.3
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   motor
-pynacl==1.4.0
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   macaroonbakery
-    #   paramiko
-    #   pymacaroons
-pyrfc3339==1.1
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   juju
-    #   macaroonbakery
-python-dateutil==2.8.1
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   kubernetes
-pytz==2021.1
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   pyrfc3339
-pyyaml==5.4.1
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   juju
-    #   jujubundlelib
-    #   kubernetes
-requests-oauthlib==1.3.0
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   kubernetes
-requests==2.25.1
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   kubernetes
-    #   macaroonbakery
-    #   requests-oauthlib
-    #   theblues
-retrying-async==1.2.0
-    # via -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-rsa==4.7.2
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   google-auth
-six==1.15.0
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   bcrypt
-    #   google-auth
-    #   kubernetes
-    #   macaroonbakery
-    #   protobuf
-    #   pymacaroons
-    #   pynacl
-    #   python-dateutil
-    #   websocket-client
-theblues==0.5.2
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   juju
-toposort==1.6
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   juju
-typing-extensions==3.7.4.3
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   typing-inspect
-typing-inspect==0.6.0
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   juju
-urllib3==1.26.4
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   kubernetes
-    #   requests
-websocket-client==0.58.0
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   kubernetes
-websockets==7.0
-    # via
-    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
-    #   juju
-
-# The following packages are considered to be unsafe in a requirements file:
-# setuptools
 #######################################################################################
 # Copyright ETSI Contributors and Others.
 #
@@ -208,3 +14,196 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #######################################################################################
+-e git+https://osm.etsi.org/gerrit/osm/N2VC.git@master#egg=n2vc
+    # via -r requirements-dev.in
+-e git+https://osm.etsi.org/gerrit/osm/common.git@master#egg=osm-common
+    # via -r requirements-dev.in
+aiokafka==0.7.2
+    # via -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v10.0
+async-timeout==3.0.1
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   retrying-async
+bcrypt==3.2.0
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   paramiko
+cachetools==4.2.4
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   google-auth
+certifi==2021.10.8
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   kubernetes
+    #   requests
+cffi==1.15.0
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   bcrypt
+    #   cryptography
+    #   pynacl
+charset-normalizer==2.0.10
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   requests
+cryptography==36.0.1
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   paramiko
+dataclasses==0.6
+    # via -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v10.0
+google-auth==2.3.3
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   kubernetes
+idna==3.3
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   requests
+juju==2.9.4
+    # via -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+jujubundlelib==0.5.7
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   theblues
+kafka-python==2.0.2
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   aiokafka
+kubernetes==21.7.0
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   juju
+macaroonbakery==1.3.1
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   juju
+    #   theblues
+motor==1.3.1
+    # via -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+mypy-extensions==0.4.3
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   typing-inspect
+oauthlib==3.1.1
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   requests-oauthlib
+paramiko==2.9.2
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   juju
+protobuf==3.19.3
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   macaroonbakery
+pyasn1==0.4.8
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   juju
+    #   pyasn1-modules
+    #   rsa
+pyasn1-modules==0.2.8
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   google-auth
+pycparser==2.21
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   cffi
+pycrypto==2.6.1
+    # via -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v10.0
+pymacaroons==0.13.0
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   macaroonbakery
+pymongo==3.12.3
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   motor
+pynacl==1.5.0
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   macaroonbakery
+    #   paramiko
+    #   pymacaroons
+pyrfc3339==1.1
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   juju
+    #   macaroonbakery
+python-dateutil==2.8.2
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   kubernetes
+pytz==2021.3
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   pyrfc3339
+pyyaml==5.4.1
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   juju
+    #   jujubundlelib
+    #   kubernetes
+requests==2.27.1
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   kubernetes
+    #   macaroonbakery
+    #   requests-oauthlib
+    #   theblues
+requests-oauthlib==1.3.0
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   kubernetes
+retrying-async==1.2.0
+    # via -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+rsa==4.8
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   google-auth
+six==1.16.0
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   bcrypt
+    #   google-auth
+    #   kubernetes
+    #   macaroonbakery
+    #   pymacaroons
+    #   python-dateutil
+theblues==0.5.2
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   juju
+toposort==1.7
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   juju
+typing-extensions==4.0.1
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   typing-inspect
+typing-inspect==0.7.1
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   juju
+urllib3==1.26.8
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   kubernetes
+    #   requests
+websocket-client==1.2.3
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   kubernetes
+websockets==7.0
+    # via
+    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v10.0
+    #   juju
+
+# The following packages are considered to be unsafe in a requirements file:
+# setuptools
diff --git a/requirements-dist.txt b/requirements-dist.txt
index 7393626..8192b48 100644
--- a/requirements-dist.txt
+++ b/requirements-dist.txt
@@ -1,10 +1,3 @@
-setuptools-version-command==2.2
-    # via -r requirements-dist.in
-stdeb==0.10.0
-    # via -r requirements-dist.in
-
-# The following packages are considered to be unsafe in a requirements file:
-# setuptools
 #######################################################################################
 # Copyright ETSI Contributors and Others.
 #
@@ -21,3 +14,13 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #######################################################################################
+setuptools-version-command==99.9
+    # via -r requirements-dist.in
+stdeb==0.10.0
+    # via -r requirements-dist.in
+
+# The following packages are considered to be unsafe in a requirements file:
+setuptools==59.8.0
+    # via
+    #   -r requirements-dist.in
+    #   setuptools-version-command
diff --git a/requirements-test.txt b/requirements-test.txt
index 871fdef..9c6fd21 100644
--- a/requirements-test.txt
+++ b/requirements-test.txt
@@ -1,27 +1,3 @@
-certifi==2020.12.5
-    # via requests
-chardet==4.0.0
-    # via requests
-coverage==5.5
-    # via
-    #   -r requirements-test.in
-    #   nose2
-idna==2.10
-    # via requests
-mock==4.0.3
-    # via -r requirements-test.in
-nose2==0.10.0
-    # via -r requirements-test.in
-requests-mock==1.8.0
-    # via -r requirements-test.in
-requests==2.25.1
-    # via requests-mock
-six==1.15.0
-    # via
-    #   nose2
-    #   requests-mock
-urllib3==1.26.4
-    # via requests
 #######################################################################################
 # Copyright ETSI Contributors and Others.
 #
@@ -38,3 +14,27 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #######################################################################################
+certifi==2021.10.8
+    # via requests
+charset-normalizer==2.0.10
+    # via requests
+coverage==6.2
+    # via
+    #   -r requirements-test.in
+    #   nose2
+idna==3.3
+    # via requests
+mock==4.0.3
+    # via -r requirements-test.in
+nose2==0.10.0
+    # via -r requirements-test.in
+requests==2.27.1
+    # via requests-mock
+requests-mock==1.9.3
+    # via -r requirements-test.in
+six==1.16.0
+    # via
+    #   nose2
+    #   requests-mock
+urllib3==1.26.8
+    # via requests
diff --git a/requirements.in b/requirements.in
index 51603ff..bc9b4d6 100644
--- a/requirements.in
+++ b/requirements.in
@@ -28,6 +28,6 @@
 python-neutronclient
 python-novaclient
 pyvcloud==23.0.*
-pyyaml
+pyyaml==5.4.1
 requests
 six
diff --git a/requirements.txt b/requirements.txt
index 22bf875..c7449b2 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,263 +1,3 @@
-aiokafka==0.7.0
-    # via -r requirements.in
-appdirs==1.4.4
-    # via openstacksdk
-attrs==20.3.0
-    # via cmd2
-certifi==2020.12.5
-    # via requests
-cffi==1.14.5
-    # via cryptography
-chardet==4.0.0
-    # via requests
-cliff==3.7.0
-    # via
-    #   gnocchiclient
-    #   osc-lib
-    #   python-neutronclient
-cmd2==1.5.0
-    # via cliff
-colorama==0.4.4
-    # via cmd2
-cryptography==3.4.7
-    # via openstacksdk
-debtcollector==2.2.0
-    # via
-    #   gnocchiclient
-    #   oslo.config
-    #   oslo.context
-    #   oslo.log
-    #   oslo.utils
-    #   python-keystoneclient
-    #   python-neutronclient
-decorator==4.4.2
-    # via
-    #   dogpile.cache
-    #   openstacksdk
-dogpile.cache==1.1.2
-    # via openstacksdk
-futurist==2.3.0
-    # via gnocchiclient
-gnocchiclient==7.0.7
-    # via -r requirements.in
-humanfriendly==9.1
-    # via
-    #   -r requirements.in
-    #   pyvcloud
-idna==2.10
-    # via requests
-iso8601==0.1.14
-    # via
-    #   gnocchiclient
-    #   keystoneauth1
-    #   openstacksdk
-    #   oslo.utils
-    #   python-ceilometerclient
-    #   python-neutronclient
-    #   python-novaclient
-jmespath==0.10.0
-    # via openstacksdk
-jsonpatch==1.32
-    # via openstacksdk
-jsonpointer==2.1
-    # via jsonpatch
-kafka-python==2.0.2
-    # via aiokafka
-keystoneauth1==4.3.1
-    # via
-    #   gnocchiclient
-    #   openstacksdk
-    #   osc-lib
-    #   python-ceilometerclient
-    #   python-keystoneclient
-    #   python-neutronclient
-    #   python-novaclient
-lxml==4.6.3
-    # via
-    #   -r requirements.in
-    #   pyvcloud
-monotonic==1.5
-    # via gnocchiclient
-msgpack==1.0.2
-    # via oslo.serialization
-munch==2.5.0
-    # via openstacksdk
-netaddr==0.8.0
-    # via
-    #   oslo.config
-    #   oslo.utils
-    #   python-neutronclient
-netifaces==0.10.9
-    # via
-    #   openstacksdk
-    #   oslo.utils
-openstacksdk==0.55.0
-    # via
-    #   os-client-config
-    #   osc-lib
-os-client-config==2.1.0
-    # via python-neutronclient
-os-service-types==1.7.0
-    # via
-    #   keystoneauth1
-    #   openstacksdk
-osc-lib==2.3.1
-    # via python-neutronclient
-oslo.config==8.5.0
-    # via
-    #   oslo.log
-    #   python-keystoneclient
-oslo.context==3.2.0
-    # via oslo.log
-oslo.i18n==5.0.1
-    # via
-    #   osc-lib
-    #   oslo.config
-    #   oslo.log
-    #   oslo.utils
-    #   python-ceilometerclient
-    #   python-keystoneclient
-    #   python-neutronclient
-    #   python-novaclient
-oslo.log==4.4.0
-    # via python-neutronclient
-oslo.serialization==4.1.0
-    # via
-    #   oslo.log
-    #   python-ceilometerclient
-    #   python-keystoneclient
-    #   python-neutronclient
-    #   python-novaclient
-oslo.utils==4.8.0
-    # via
-    #   osc-lib
-    #   oslo.log
-    #   oslo.serialization
-    #   python-ceilometerclient
-    #   python-keystoneclient
-    #   python-neutronclient
-    #   python-novaclient
-packaging==20.9
-    # via oslo.utils
-pbr==5.5.1
-    # via
-    #   cliff
-    #   debtcollector
-    #   futurist
-    #   gnocchiclient
-    #   keystoneauth1
-    #   openstacksdk
-    #   os-service-types
-    #   osc-lib
-    #   oslo.context
-    #   oslo.i18n
-    #   oslo.log
-    #   oslo.serialization
-    #   oslo.utils
-    #   python-ceilometerclient
-    #   python-keystoneclient
-    #   python-neutronclient
-    #   python-novaclient
-    #   stevedore
-prettytable==0.7.2
-    # via
-    #   cliff
-    #   python-ceilometerclient
-    #   python-novaclient
-prometheus-client==0.9.0
-    # via -r requirements.in
-pycparser==2.20
-    # via cffi
-pygments==2.8.1
-    # via pyvcloud
-pyinotify==0.9.6
-    # via oslo.log
-pyparsing==2.4.7
-    # via
-    #   cliff
-    #   oslo.utils
-    #   packaging
-pyperclip==1.8.2
-    # via cmd2
-python-ceilometerclient==2.9.0
-    # via -r requirements.in
-python-dateutil==2.8.1
-    # via
-    #   gnocchiclient
-    #   oslo.log
-    #   pyvcloud
-python-keystoneclient==4.2.0
-    # via
-    #   -r requirements.in
-    #   python-neutronclient
-python-neutronclient==7.3.0
-    # via -r requirements.in
-python-novaclient==17.4.0
-    # via -r requirements.in
-pytz==2021.1
-    # via
-    #   oslo.serialization
-    #   oslo.utils
-pyvcloud==23.0.0
-    # via -r requirements.in
-pyyaml==5.4.1
-    # via
-    #   -r requirements.in
-    #   cliff
-    #   openstacksdk
-    #   oslo.config
-    #   pyvcloud
-requests==2.25.1
-    # via
-    #   -r requirements.in
-    #   keystoneauth1
-    #   oslo.config
-    #   python-ceilometerclient
-    #   python-keystoneclient
-    #   python-neutronclient
-    #   pyvcloud
-requestsexceptions==1.4.0
-    # via openstacksdk
-rfc3986==1.4.0
-    # via oslo.config
-simplejson==3.17.2
-    # via
-    #   osc-lib
-    #   python-neutronclient
-six==1.15.0
-    # via
-    #   -r requirements.in
-    #   debtcollector
-    #   futurist
-    #   gnocchiclient
-    #   keystoneauth1
-    #   munch
-    #   oslo.i18n
-    #   python-ceilometerclient
-    #   python-dateutil
-    #   python-keystoneclient
-stevedore==3.3.0
-    # via
-    #   cliff
-    #   dogpile.cache
-    #   keystoneauth1
-    #   osc-lib
-    #   oslo.config
-    #   python-ceilometerclient
-    #   python-keystoneclient
-    #   python-novaclient
-ujson==4.0.2
-    # via gnocchiclient
-unittest-xml-reporting==3.0.4
-    # via pyvcloud
-urllib3==1.26.4
-    # via requests
-vcd-api-schemas-type==9.1.2.dev10
-    # via pyvcloud
-wcwidth==0.2.5
-    # via cmd2
-wrapt==1.12.1
-    # via debtcollector
 #######################################################################################
 # Copyright ETSI Contributors and Others.
 #
@@ -274,3 +14,274 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #######################################################################################
+aiokafka==0.7.2
+    # via -r requirements.in
+appdirs==1.4.4
+    # via openstacksdk
+attrs==21.4.0
+    # via cmd2
+autopage==0.4.0
+    # via cliff
+certifi==2021.10.8
+    # via requests
+cffi==1.15.0
+    # via cryptography
+charset-normalizer==2.0.10
+    # via requests
+cliff==3.10.0
+    # via
+    #   gnocchiclient
+    #   osc-lib
+    #   python-neutronclient
+cmd2==2.3.3
+    # via cliff
+cryptography==36.0.1
+    # via openstacksdk
+debtcollector==2.3.0
+    # via
+    #   gnocchiclient
+    #   oslo.config
+    #   oslo.context
+    #   oslo.log
+    #   oslo.utils
+    #   python-keystoneclient
+    #   python-neutronclient
+decorator==5.1.1
+    # via
+    #   dogpile.cache
+    #   openstacksdk
+dogpile.cache==1.1.4
+    # via openstacksdk
+futurist==2.4.0
+    # via gnocchiclient
+gnocchiclient==7.0.7
+    # via -r requirements.in
+humanfriendly==10.0
+    # via
+    #   -r requirements.in
+    #   pyvcloud
+idna==3.3
+    # via requests
+iso8601==1.0.2
+    # via
+    #   gnocchiclient
+    #   keystoneauth1
+    #   openstacksdk
+    #   oslo.utils
+    #   python-ceilometerclient
+    #   python-neutronclient
+    #   python-novaclient
+jmespath==0.10.0
+    # via openstacksdk
+jsonpatch==1.32
+    # via openstacksdk
+jsonpointer==2.2
+    # via jsonpatch
+kafka-python==2.0.2
+    # via aiokafka
+keystoneauth1==4.4.0
+    # via
+    #   gnocchiclient
+    #   openstacksdk
+    #   osc-lib
+    #   python-ceilometerclient
+    #   python-cinderclient
+    #   python-keystoneclient
+    #   python-neutronclient
+    #   python-novaclient
+lxml==4.7.1
+    # via
+    #   -r requirements.in
+    #   pyvcloud
+monotonic==1.6
+    # via gnocchiclient
+msgpack==1.0.3
+    # via oslo.serialization
+munch==2.5.0
+    # via openstacksdk
+netaddr==0.8.0
+    # via
+    #   oslo.config
+    #   oslo.utils
+    #   python-neutronclient
+netifaces==0.11.0
+    # via
+    #   openstacksdk
+    #   oslo.utils
+openstacksdk==0.61.0
+    # via
+    #   os-client-config
+    #   osc-lib
+os-client-config==2.1.0
+    # via python-neutronclient
+os-service-types==1.7.0
+    # via
+    #   keystoneauth1
+    #   openstacksdk
+osc-lib==2.4.2
+    # via python-neutronclient
+oslo.config==8.7.1
+    # via
+    #   oslo.log
+    #   python-keystoneclient
+oslo.context==3.4.0
+    # via oslo.log
+oslo.i18n==5.1.0
+    # via
+    #   osc-lib
+    #   oslo.config
+    #   oslo.log
+    #   oslo.utils
+    #   python-ceilometerclient
+    #   python-cinderclient
+    #   python-keystoneclient
+    #   python-neutronclient
+    #   python-novaclient
+oslo.log==4.6.1
+    # via python-neutronclient
+oslo.serialization==4.2.0
+    # via
+    #   oslo.log
+    #   python-ceilometerclient
+    #   python-keystoneclient
+    #   python-neutronclient
+    #   python-novaclient
+oslo.utils==4.12.0
+    # via
+    #   osc-lib
+    #   oslo.log
+    #   oslo.serialization
+    #   python-ceilometerclient
+    #   python-cinderclient
+    #   python-keystoneclient
+    #   python-neutronclient
+    #   python-novaclient
+packaging==21.3
+    # via
+    #   oslo.utils
+    #   pyvcloud
+pbr==5.8.0
+    # via
+    #   cliff
+    #   debtcollector
+    #   futurist
+    #   gnocchiclient
+    #   keystoneauth1
+    #   openstacksdk
+    #   os-service-types
+    #   osc-lib
+    #   oslo.context
+    #   oslo.i18n
+    #   oslo.log
+    #   oslo.serialization
+    #   oslo.utils
+    #   python-ceilometerclient
+    #   python-cinderclient
+    #   python-keystoneclient
+    #   python-neutronclient
+    #   python-novaclient
+    #   stevedore
+prettytable==0.7.2
+    # via
+    #   cliff
+    #   python-ceilometerclient
+    #   python-cinderclient
+    #   python-novaclient
+prometheus-client==0.12.0
+    # via -r requirements.in
+pycparser==2.21
+    # via cffi
+pygments==2.11.2
+    # via pyvcloud
+pyinotify==0.9.6
+    # via oslo.log
+pyparsing==3.0.6
+    # via
+    #   cliff
+    #   oslo.utils
+    #   packaging
+pyperclip==1.8.2
+    # via cmd2
+python-ceilometerclient==2.9.0
+    # via -r requirements.in
+python-cinderclient==8.2.0
+    # via -r requirements.in
+python-dateutil==2.8.2
+    # via
+    #   gnocchiclient
+    #   oslo.log
+    #   pyvcloud
+python-keystoneclient==4.4.0
+    # via
+    #   -r requirements.in
+    #   python-neutronclient
+python-neutronclient==7.7.0
+    # via -r requirements.in
+python-novaclient==17.6.0
+    # via -r requirements.in
+pytz==2021.3
+    # via
+    #   oslo.serialization
+    #   oslo.utils
+pyvcloud==23.0.3
+    # via -r requirements.in
+pyyaml==5.4.1
+    # via
+    #   -r requirements.in
+    #   cliff
+    #   openstacksdk
+    #   oslo.config
+    #   pyvcloud
+requests==2.27.1
+    # via
+    #   -r requirements.in
+    #   keystoneauth1
+    #   oslo.config
+    #   python-ceilometerclient
+    #   python-cinderclient
+    #   python-keystoneclient
+    #   python-neutronclient
+    #   pyvcloud
+requestsexceptions==1.4.0
+    # via openstacksdk
+rfc3986==1.5.0
+    # via oslo.config
+simplejson==3.17.6
+    # via
+    #   osc-lib
+    #   python-cinderclient
+    #   python-neutronclient
+six==1.16.0
+    # via
+    #   -r requirements.in
+    #   debtcollector
+    #   futurist
+    #   gnocchiclient
+    #   keystoneauth1
+    #   munch
+    #   python-ceilometerclient
+    #   python-dateutil
+    #   python-keystoneclient
+stevedore==3.5.0
+    # via
+    #   cliff
+    #   dogpile.cache
+    #   keystoneauth1
+    #   osc-lib
+    #   oslo.config
+    #   python-ceilometerclient
+    #   python-cinderclient
+    #   python-keystoneclient
+    #   python-novaclient
+ujson==5.1.0
+    # via gnocchiclient
+unittest-xml-reporting==3.0.4
+    # via pyvcloud
+urllib3==1.26.8
+    # via requests
+vcd-api-schemas-type==10.3.0.dev72
+    # via pyvcloud
+wcwidth==0.2.5
+    # via cmd2
+wrapt==1.13.3
+    # via debtcollector
diff --git a/tox.ini b/tox.ini
index db88368..bf0cdb9 100644
--- a/tox.ini
+++ b/tox.ini
@@ -23,7 +23,7 @@
 
 [testenv]
 usedevelop = True
-basepython = python3
+basepython = python3.8
 setenv = VIRTUAL_ENV={envdir}
          PYTHONDONTWRITEBYTECODE = 1
 deps =  -r{toxinidir}/requirements.txt
@@ -82,13 +82,18 @@
 
 #######################################################################################
 [testenv:pip-compile]
-deps =  pip-tools==5.5.0
+deps =  pip-tools==6.4.0
+skip_install = true
+whitelist_externals = bash
+        [
 commands =
-        - sh -c 'for file in requirements*.in ; do pip-compile -rU --no-header $file ;\
-        out=`echo $file | sed "s/.in/.txt/"` ; \
-        head -16 tox.ini >> $out ;\
-        done'
-whitelist_externals = sh
+        - bash -c "for file in requirements*.in ; do \
+        UNSAFE="" ; \
+        if [[ $file =~ 'dist' ]] ; then UNSAFE='--allow-unsafe' ; fi ; \
+        pip-compile -rU --no-header $UNSAFE $file ;\
+        out=`echo $file | sed 's/.in/.txt/'` ; \
+        sed -i -e '1 e head -16 tox.ini' $out ;\
+        done"
 
 
 #######################################################################################