[ussuri][goal] Drop python 2.7 support and testing

OpenStack is dropping the py2.7 support in ussuri cycle.

patrole is ready with python 3 and ok to drop the
python 2.7 support.

Complete discussion & schedule can be found in
- http://lists.openstack.org/pipermail/openstack-discuss/2019-October/010142.html
- https://etherpad.openstack.org/p/drop-python2-support

Ussuri Communtiy-wide goal:
https://governance.openstack.org/tc/goals/selected/ussuri/drop-py27.html

Change-Id: Ied5cfb29363401d713c21fc579f30e1ef9c1210f
diff --git a/.zuul.yaml b/.zuul.yaml
index 8b8a94b..41d2d33 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -36,7 +36,7 @@
 
 - job:
     name: patrole-base-multinode
-    parent: tempest-multinode-full
+    parent: tempest-multinode-full-py3
     description: |-
       Patrole base job for multinode and "slow" tests where "slow" tests include:
 
@@ -97,6 +97,9 @@
     name: patrole-member-stein
     parent: patrole-member
     override-checkout: stable/stein
+    vars:
+      devstack_localrc:
+        USE_PYTHON3: True
 
 - job:
     name: patrole-member-rocky
@@ -106,6 +109,14 @@
     vars:
       devstack_localrc:
         TEMPEST_PLUGINS: /opt/stack/patrole
+        USE_PYTHON3: True
+    # NOTE(gmann): pin patrole for rocky
+    # job which is on Xenial node with py3.5.
+    # Patrole master need py3.6 as min version
+    # of python.
+    required-projects:
+      - name: openstack/patrole
+        override-checkout: 0.8.0
 
 - job:
     name: patrole-multinode-admin
@@ -189,8 +200,7 @@
     templates:
       - openstack-cover-jobs
       - openstack-lower-constraints-jobs
-      - openstack-python3-train-jobs
-      - openstack-python-jobs
+      - openstack-python3-ussuri-jobs
       - check-requirements
       - publish-openstack-docs-pti
       - release-notes-jobs-python3
diff --git a/doc/requirements.txt b/doc/requirements.txt
index 3a1bb3d..ae644f5 100644
--- a/doc/requirements.txt
+++ b/doc/requirements.txt
@@ -1,8 +1,7 @@
 # The order of packages is significant, because pip processes them in the order
 # of appearance. Changing the order has an impact on the overall integration
 # process, which may cause wedges in the gate later.
-sphinx!=1.6.6,!=1.6.7,>=1.6.2,<2.0.0;python_version=='2.7' # BSD
-sphinx!=1.6.6,!=1.6.7,!=2.1.0,>=1.6.2;python_version>='3.4' # BSD
+sphinx!=1.6.6,!=1.6.7,!=2.1.0,>=1.6.2 # BSD
 openstackdocstheme>=1.20.0 # Apache-2.0
 reno>=2.5.0 # Apache-2.0
 sphinxcontrib-apidoc>=0.2.0  # BSD
diff --git a/releasenotes/notes/drop-py-2-7-d287ad9a325b132d.yaml b/releasenotes/notes/drop-py-2-7-d287ad9a325b132d.yaml
new file mode 100644
index 0000000..75accc1
--- /dev/null
+++ b/releasenotes/notes/drop-py-2-7-d287ad9a325b132d.yaml
@@ -0,0 +1,6 @@
+---
+upgrade:
+  - |
+    Python 2.7 support has been dropped. Last release of patrole
+    to support python 2.7 is patrole 0.8.0. The minimum version of Python now
+    supported by Patrole is Python 3.6.
diff --git a/setup.cfg b/setup.cfg
index 6e29ac4..f8f0257 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -6,6 +6,7 @@
 author = OpenStack
 author-email = openstack-discuss@lists.openstack.org
 home-page = https://docs.openstack.org/patrole/latest/
+python-requires = >=3.6
 classifier =
     Environment :: OpenStack
     Intended Audience :: Information Technology
@@ -13,8 +14,6 @@
     License :: OSI Approved :: Apache Software License
     Operating System :: POSIX :: Linux
     Programming Language :: Python
-    Programming Language :: Python :: 2
-    Programming Language :: Python :: 2.7
     Programming Language :: Python :: 3
     Programming Language :: Python :: 3.6
     Programming Language :: Python :: 3.7
diff --git a/tox.ini b/tox.ini
index b7e02e6..7bae776 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,9 +1,11 @@
 [tox]
-minversion = 2.0
-envlist = pep8,py36,py37,py27
+minversion = 3.1.1
+envlist = pep8,py36,py37
 skipsdist = True
+ignore_basepython_conflict = True
 
 [testenv]
+basepython = python3
 usedevelop = True
 install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages}
 setenv =
@@ -21,7 +23,6 @@
     stestr --test-path ./patrole_tempest_plugin/tests/unit run {posargs}
 
 [testenv:pep8]
-basepython = python3
 deps =
     -r{toxinidir}/test-requirements.txt
 commands =
@@ -30,15 +31,12 @@
     check-uuid --package patrole_tempest_plugin.tests.api
 
 [testenv:uuidgen]
-basepython = python3
 commands = check-uuid --package patrole_tempest_plugin.tests.api --fix
 
 [testenv:venv]
-basepython = python3
 commands = {posargs}
 
 [testenv:cover]
-basepython = python3
 commands = rm -rf *.pyc
            rm -rf cover
            rm -f .coverage
@@ -54,7 +52,6 @@
                       rm
 
 [testenv:docs]
-basepython = python3
 deps =
   -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
   -r{toxinidir}/requirements.txt
@@ -65,7 +62,6 @@
 whitelist_externals = rm
 
 [testenv:pdf-docs]
-basepython = python3
 deps = {[testenv:docs]deps}
 whitelist_externals =
    make
@@ -74,7 +70,6 @@
    make -C doc/build/pdf
 
 [testenv:releasenotes]
-basepython = python3
 deps =
   -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
   -r{toxinidir}/requirements.txt
@@ -85,11 +80,9 @@
 whitelist_externals = rm
 
 [testenv:debug]
-basepython = python3
 commands = oslo_debug_helper -t patrole_tempest_plugin/tests {posargs}
 
 [testenv:genconfig]
-basepython = python3
 commands = oslo-config-generator --config-file etc/config-generator.patrole.conf
 
 [flake8]
@@ -114,7 +107,6 @@
 local-check-factory = patrole_tempest_plugin.hacking.checks.factory
 
 [testenv:lower-constraints]
-basepython = python3
 deps =
   -c{toxinidir}/lower-constraints.txt
   -r{toxinidir}/test-requirements.txt