From e5b391c32df22ecfe8162b3a48b03748a375f0c3 Mon Sep 17 00:00:00 2001
From: Julia Kreger <juliaashleykreger@gmail.com>
Date: Fri, 5 Mar 2021 06:33:46 -0800
Subject: [PATCH] Increment API version for Secure RBAC

This patch increments the API version for the Secure RBAC
as was covered in the specification in order to signify to
API consumers that may need to be aware if the API surface
can support Secure RBAC policy configuration.

Change-Id: Ia659708bb89ff416b65367505d3e068c6d4a198f
---
 doc/source/contributor/webapi-version-history.rst    | 12 ++++++++++--
 ironic/api/controllers/v1/versions.py                |  4 +++-
 ironic/common/release_mappings.py                    |  2 +-
 ...-rbac-api-version-increment-1785544f54a487b3.yaml | 10 ++++++++++
 4 files changed, 24 insertions(+), 4 deletions(-)
 create mode 100644 releasenotes/notes/secure-rbac-api-version-increment-1785544f54a487b3.yaml

diff --git a/doc/source/contributor/webapi-version-history.rst b/doc/source/contributor/webapi-version-history.rst
index 3bb781291f..56912bd554 100644
--- a/doc/source/contributor/webapi-version-history.rst
+++ b/doc/source/contributor/webapi-version-history.rst
@@ -2,12 +2,20 @@
 REST API Version History
 ========================
 
-1.70 (Wallaby, TBD)
--------------------
+1.71 (Wallaby)
+--------------
+
+Signifier of the API supporting keystone ``system`` scoped roles and
+access controls. This is an informational flag for clients to be aware of
+the server's capability.
+
+1.70 (Wallaby)
+--------------
 
 Add support for ``disable_ramdisk`` parameter to provisioning endpoint
 ``/v1/nodes/{node_ident}/states/provision``.
 
+
 1.69 (Wallaby, 16.2)
 ----------------------
 
diff --git a/ironic/api/controllers/v1/versions.py b/ironic/api/controllers/v1/versions.py
index bff79e75e4..caaa94924a 100644
--- a/ironic/api/controllers/v1/versions.py
+++ b/ironic/api/controllers/v1/versions.py
@@ -108,6 +108,7 @@ BASE_VERSION = 1
 # v1.68: Add agent_verify_ca to heartbeat.
 # v1.69: Add deploy_steps to provisioning
 # v1.70: Add disable_ramdisk to manual cleaning.
+# v1.71: Add signifier for Scope based roles.
 
 MINOR_0_JUNO = 0
 MINOR_1_INITIAL_VERSION = 1
@@ -180,6 +181,7 @@ MINOR_67_NODE_VIF_ATTACH_PORT = 67
 MINOR_68_HEARTBEAT_VERIFY_CA = 68
 MINOR_69_DEPLOY_STEPS = 69
 MINOR_70_CLEAN_DISABLE_RAMDISK = 70
+MINOR_71_RBAC_SCOPES = 71
 
 # When adding another version, update:
 # - MINOR_MAX_VERSION
@@ -187,7 +189,7 @@ MINOR_70_CLEAN_DISABLE_RAMDISK = 70
 #   explanation of what changed in the new version
 # - common/release_mappings.py, RELEASE_MAPPING['master']['api']
 
-MINOR_MAX_VERSION = MINOR_70_CLEAN_DISABLE_RAMDISK
+MINOR_MAX_VERSION = MINOR_71_RBAC_SCOPES
 
 # String representations of the minor and maximum versions
 _MIN_VERSION_STRING = '{}.{}'.format(BASE_VERSION, MINOR_1_INITIAL_VERSION)
diff --git a/ironic/common/release_mappings.py b/ironic/common/release_mappings.py
index 43f461c496..0c19113b87 100644
--- a/ironic/common/release_mappings.py
+++ b/ironic/common/release_mappings.py
@@ -302,7 +302,7 @@ RELEASE_MAPPING = {
         }
     },
     'master': {
-        'api': '1.70',
+        'api': '1.71',
         'rpc': '1.53',
         'objects': {
             'Allocation': ['1.1'],
diff --git a/releasenotes/notes/secure-rbac-api-version-increment-1785544f54a487b3.yaml b/releasenotes/notes/secure-rbac-api-version-increment-1785544f54a487b3.yaml
new file mode 100644
index 0000000000..af526b76eb
--- /dev/null
+++ b/releasenotes/notes/secure-rbac-api-version-increment-1785544f54a487b3.yaml
@@ -0,0 +1,10 @@
+---
+other:
+  - |
+    The API version of the Bare Metal API provided by the ``ironic-api``
+    service has been incremented to ``1.71`` to signify that the API supports
+    System and Project scoped Role Based Access Controls, which is purely
+    informational in nature, as the version itself cannot be used to change
+    the API behavior for access controls. In excess of 1500 unit tests were
+    added as part of the effort to implement Role Based Access Controls to
+    help ensure the effort did not break the API behavior.