Merge "[V3] Make region_client use **kwargs"
diff --git a/tempest/api/identity/admin/v3/test_regions.py b/tempest/api/identity/admin/v3/test_regions.py
index e96e0f5..0dbbae0 100644
--- a/tempest/api/identity/admin/v3/test_regions.py
+++ b/tempest/api/identity/admin/v3/test_regions.py
@@ -33,7 +33,8 @@
         cls.setup_regions = list()
         for i in range(2):
             r_description = data_utils.rand_name('description')
-            region = cls.client.create_region(r_description)['region']
+            region = cls.client.create_region(
+                description=r_description)['region']
             cls.setup_regions.append(region)
 
     @classmethod
@@ -51,7 +52,7 @@
     def test_create_update_get_delete_region(self):
         r_description = data_utils.rand_name('description')
         region = self.client.create_region(
-            r_description,
+            description=r_description,
             parent_region_id=self.setup_regions[0]['id'])['region']
         self.addCleanup(self._delete_region, region['id'])
         self.assertEqual(r_description, region['description'])
@@ -79,7 +80,7 @@
         r_region_id = data_utils.rand_uuid()
         r_description = data_utils.rand_name('description')
         region = self.client.create_region(
-            r_description, unique_region_id=r_region_id)['region']
+            region_id=r_region_id, description=r_description)['region']
         self.addCleanup(self._delete_region, region['id'])
         # Asserting Create Region with specific id response body
         self.assertEqual(r_region_id, region['id'])
diff --git a/tempest/services/identity/v3/json/region_client.py b/tempest/services/identity/v3/json/region_client.py
index 24c6f33..6ccdc31 100644
--- a/tempest/services/identity/v3/json/region_client.py
+++ b/tempest/services/identity/v3/json/region_client.py
@@ -13,6 +13,10 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+"""
+http://developer.openstack.org/api-ref-identity-v3.html#regions-v3
+"""
+
 from oslo_serialization import jsonutils as json
 from six.moves.urllib import parse as urllib
 
@@ -22,31 +26,34 @@
 class RegionClient(service_client.ServiceClient):
     api_version = "v3"
 
-    def create_region(self, description, **kwargs):
-        """Create region."""
-        req_body = {
-            'description': description,
-        }
-        if kwargs.get('parent_region_id'):
-            req_body['parent_region_id'] = kwargs.get('parent_region_id')
-        req_body = json.dumps({'region': req_body})
-        if kwargs.get('unique_region_id'):
-            resp, body = self.put(
-                'regions/%s' % kwargs.get('unique_region_id'), req_body)
+    def create_region(self, region_id=None, **kwargs):
+        """Create region.
+
+        Available params: see http://developer.openstack.org/
+                              api-ref-identity-v3.html#createRegion
+
+                          see http://developer.openstack.org/
+                              api-ref-identity-v3.html#createRegionWithID
+        """
+        if region_id is not None:
+            method = self.put
+            url = 'regions/%s' % region_id
         else:
-            resp, body = self.post('regions', req_body)
+            method = self.post
+            url = 'regions'
+        req_body = json.dumps({'region': kwargs})
+        resp, body = method(url, req_body)
         self.expected_success(201, resp.status)
         body = json.loads(body)
         return service_client.ResponseBody(resp, body)
 
     def update_region(self, region_id, **kwargs):
-        """Updates a region."""
-        post_body = {}
-        if 'description' in kwargs:
-            post_body['description'] = kwargs.get('description')
-        if 'parent_region_id' in kwargs:
-            post_body['parent_region_id'] = kwargs.get('parent_region_id')
-        post_body = json.dumps({'region': post_body})
+        """Updates a region.
+
+        Available params: see http://developer.openstack.org/
+                              api-ref-identity-v3.html#updateRegion
+        """
+        post_body = json.dumps({'region': kwargs})
         resp, body = self.patch('regions/%s' % region_id, post_body)
         self.expected_success(200, resp.status)
         body = json.loads(body)