From 208935af96e95703d1290b7763b062dfc127e78a Mon Sep 17 00:00:00 2001
From: Erno Kuvaja <jokke@usr.fi>
Date: Tue, 7 Aug 2018 13:36:50 +0100
Subject: [PATCH] Add API version 2.8

This change bumps the API to EXPERIMENTAL 2.8 when multi back-end
is enabled.

Change-Id: Ie0e1ed84db1b227eea1774138b2a83172ff85bec
---
 .../versions/samples/image-versions-response.json      | 10 ++++++++++
 glance/api/middleware/version_negotiation.py           |  2 ++
 glance/api/versions.py                                 |  4 ++++
 glance/tests/unit/test_versions.py                     |  4 ++--
 4 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/api-ref/source/versions/samples/image-versions-response.json b/api-ref/source/versions/samples/image-versions-response.json
index ab6de797c1..af8afa4f5c 100644
--- a/api-ref/source/versions/samples/image-versions-response.json
+++ b/api-ref/source/versions/samples/image-versions-response.json
@@ -1,5 +1,15 @@
 {
     "versions": [
+        {
+            "id": "v2.8",
+            "links": [
+                {
+                    "href": "http://glance.openstack.example.org/v2/",
+                    "rel": "self"
+                }
+            ],
+            "status": "EXPERIMENTAL"
+        },
         {
             "id": "v2.7",
             "links": [
diff --git a/glance/api/middleware/version_negotiation.py b/glance/api/middleware/version_negotiation.py
index 960cf9c8f3..81f9ee0b84 100644
--- a/glance/api/middleware/version_negotiation.py
+++ b/glance/api/middleware/version_negotiation.py
@@ -82,6 +82,8 @@ class VersionNegotiationFilter(wsgi.Middleware):
             allowed_versions['v2.5'] = 2
             allowed_versions['v2.6'] = 2
             allowed_versions['v2.7'] = 2
+            if CONF.enabled_backends:
+                allowed_versions['v2.8'] = 2
         return allowed_versions
 
     def _match_version_string(self, subject):
diff --git a/glance/api/versions.py b/glance/api/versions.py
index 9c3ac9c6ba..9906084c46 100644
--- a/glance/api/versions.py
+++ b/glance/api/versions.py
@@ -73,6 +73,10 @@ class Controller(object):
 
         version_objs = []
         if CONF.enable_v2_api:
+            if CONF.enabled_backends:
+                version_objs.extend([
+                    build_version_object(2.8, 'v2', 'EXPERIMENTAL')
+                ])
             version_objs.extend([
                 build_version_object(2.7, 'v2', 'CURRENT'),
                 build_version_object(2.6, 'v2', 'SUPPORTED'),
diff --git a/glance/tests/unit/test_versions.py b/glance/tests/unit/test_versions.py
index 8913494142..210124ebfd 100644
--- a/glance/tests/unit/test_versions.py
+++ b/glance/tests/unit/test_versions.py
@@ -181,8 +181,8 @@ class VersionNegotiationTest(base.IsolatedUnitTest):
         self.middleware.process_request(request)
         self.assertEqual('/v2/images', request.path_info)
 
-    def test_request_url_v2_8_unsupported(self):
-        request = webob.Request.blank('/v2.8/images')
+    def test_request_url_v2_9_unsupported(self):
+        request = webob.Request.blank('/v2.9/images')
         resp = self.middleware.process_request(request)
         self.assertIsInstance(resp, versions.Controller)