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:
parent
7fb28bbb3b
commit
b3541d3a49
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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',
|
||||
|
@ -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'))
|
||||
|
@ -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)
|
||||
|
@ -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():
|
||||
|
@ -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'})
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user