From ecaca2279e1779c0c9f68c98e08d6ff2c9bb1bdb Mon Sep 17 00:00:00 2001
From: Andrey Kurilin <akurilin@mirantis.com>
Date: Wed, 10 Feb 2016 13:49:53 +0200
Subject: [PATCH] [microversions] Skip microversion 2.18

2.18 - Establishes a set of routes that makes project_id an optional
       construct in v2.1.

The change on Nova-API side adds only check for existence of
"project_id" at the url. It doesn't check microversion, so all latest
and previous microversions can work with or without project_id.
Proof: all functional tests are succeed on this change (several of them
       use latest microversion).

To cut down "project_id" from the url at the novaclient side, we need to
modify ``novaclient.client.HttpClient`` and
``novaclient.client.SessionClient``. This change requires splitting
Nova's related requests and the others(authentication, volume...), which
are still require "project_id" at the url.

It is a complex task, which can be skipped for now to unblock
implementation of further microversions.

Change-Id: Ia6e608aac41d2f2d59b9504d21647e4f88af3335
---
 novaclient/__init__.py                 | 2 +-
 novaclient/tests/unit/v2/test_shell.py | 8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/novaclient/__init__.py b/novaclient/__init__.py
index 1a2ae922e..d0859b114 100644
--- a/novaclient/__init__.py
+++ b/novaclient/__init__.py
@@ -25,4 +25,4 @@ API_MIN_VERSION = api_versions.APIVersion("2.1")
 # when client supported the max version, and bumped sequentially, otherwise
 # the client may break due to server side new version may include some
 # backward incompatible change.
-API_MAX_VERSION = api_versions.APIVersion("2.17")
+API_MAX_VERSION = api_versions.APIVersion("2.18")
diff --git a/novaclient/tests/unit/v2/test_shell.py b/novaclient/tests/unit/v2/test_shell.py
index 0869a1105..8e110c578 100644
--- a/novaclient/tests/unit/v2/test_shell.py
+++ b/novaclient/tests/unit/v2/test_shell.py
@@ -2677,6 +2677,14 @@ class ShellTest(utils.TestCase):
             9,   # doesn't require any changes in novaclient
             15,  # doesn't require any changes in novaclient
             16,  # doesn't require any changes in novaclient
+            18,  # NOTE(andreykurilin): this microversion requires changes in
+                 #   HttpClient and our SessionClient, which is based on
+                 #   keystoneauth1.session. Skipping this complicated change
+                 #   allows to unblock implementation further microversions
+                 #   before feature-freeze
+                 #   (we can do it, since nova-api change didn't actually add
+                 #   new microversion, just an additional checks. See
+                 #   https://review.openstack.org/#/c/233076/ for more details)
         ])
         versions_supported = set(range(0,
                                  novaclient.API_MAX_VERSION.ver_minor + 1))