Ranger resource create 'group not found' fix

Fix for the issue where Ranger resource (CMS, FMS) create
request failing with 'group not found' error when it is
assigned with region group type.

Change-Id: Ibbd71148153d860dcff4a5512fd3277cb7b39d8c
This commit is contained in:
st6218 2019-12-08 22:04:35 -08:00 committed by STEW TY
parent 7fb28bbb3b
commit b3541d3a49
7 changed files with 34 additions and 12 deletions

View File

@ -1,5 +1,5 @@
import logging
from pecan import conf
from pecan import conf, request
import re
import requests
import string
@ -21,6 +21,16 @@ def _check_conf_initialization():
'set_utils_conf and pass pecan configuration')
def get_request_headers():
auth_region = request.headers['X-Auth-Region']
auth_token = request.headers['X-Auth-Token']
headers = {}
headers['X-Auth-Region'] = auth_region
headers['X-Auth-Token'] = auth_token
return headers
def validate_description(data_value):
""" only special characters commas, periods, and dashes allowed in
description field. Return 'False' if other special chars or
@ -80,15 +90,17 @@ def get_rms_region_group(group_name):
prev_timestamp <= conf.api.rms_server.cache_seconds:
return prev_resp
headers = {
'content-type': 'application/json',
}
# GET https://{serverRoot}/v2/orm/groups/{groupId}/
rms_server_url = '%s/%s/%s' % (conf.api.rms_server.base,
conf.api.rms_server.groups, group_name)
logger.info("RMS Server URL:" + rms_server_url)
resp = requests.get(rms_server_url, headers=headers, verify=conf.verify)
resp = resp.json()
# pass region and token header info to rms 'get region group' request
req_headers = get_request_headers()
response = requests.get(rms_server_url, headers=req_headers,
verify=conf.verify)
resp = response.json()
logger.info("Response from RMS Server" + str(resp))
prev_resp = resp
prev_group_name = group_name

View File

@ -62,6 +62,9 @@ class CustomerController(rest.RestController):
try:
result = customer_logic.create_customer(customer, uuid, request.transaction_id)
except ValueError as exception:
raise
except Exception as exception:
raise ErrorStatus(409.2, 'Customer already exists.Error:{0}'.format(str(exception)))
LOG.info("CustomerController - Customer Created: " + str(result))
@ -78,6 +81,10 @@ class CustomerController(rest.RestController):
raise err_utils.get_error(request.transaction_id,
message=str(exception),
status_code=exception.status_code)
except ValueError as exception:
raise err_utils.get_error(request.transaction_id,
status_code=400,
error_details=str(exception))
except Exception as exception:
LOG.log_exception("CustomerController - Failed to CreateCustomer", str(exception))
raise err_utils.get_error(request.transaction_id,

View File

@ -270,7 +270,7 @@ class Customer(Model):
if region.type == "group":
group_regions = self.get_regions_for_group(region.name)
if not group_regions:
raise ErrorStatus(404, 'Group {} Not found'.format(region.name))
raise ValueError("Region Group {} not found".format(region.name))
for group_region in group_regions:
regions_to_add.append(Region(name=group_region,
type='single',

View File

@ -546,7 +546,8 @@ class Flavor(Model):
if region.type == "group":
group_regions = self.get_regions_for_group(region.name)
if group_regions is None:
raise ValueError("Group {} not found".format(region.name))
raise ValueError(
"Region Group {} not found".format(region.name))
for group_region in group_regions:
regions_to_add.append(Region(name=group_region,
type='single'))

View File

@ -1003,13 +1003,13 @@ def calculate_name(flavor):
option_order = ['n0', 'i2', 't0']
name = "{0}.c{1}r{2}d{3}".format(flavor.flavor.series, flavor.flavor.vcpus,
int(flavor.flavor.ram) / 1024,
int(flavor.flavor.ram) // 1024,
flavor.flavor.disk)
# add swap disk info to flavor name IF provided
swap = getattr(flavor.flavor, 'swap', 0)
if swap and int(swap):
name += '{}{}'.format('s', int(swap) / 1024)
name += '{}{}'.format('s', int(swap) // 1024)
# add ephemeral disk info to flavor name IF provided
ephemeral = getattr(flavor.flavor, 'ephemeral', 0)

View File

@ -27,7 +27,7 @@ class TestModels(FunctionalTest):
models.get_regions_of_group = mock.MagicMock(return_value=None)
cust = get_cust_model()
self.assertRaises(models.ErrorStatus, cust.handle_region_group,)
self.assertRaises(ValueError, cust.handle_region_group,)
def get_cust_model():

View File

@ -49,8 +49,10 @@ class TestCrossApiUtil(TestCase):
self.assertEqual(exist, None)
@mock.patch('requests.get')
def test_get_rms_region_group(self, mock_get):
@mock.patch('orm.common.orm_common.utils.cross_api_utils.get_request_headers')
def test_get_rms_region_group(self, mock_headers, mock_get):
mock_get.return_value = self.respond({'result': 'success'}, 200)
mock_headers.return_value = {'a': 'b'}
result = cross_api_utils.get_rms_region_group('test_group_name')
self.assertEqual(result, {'result': 'success'})