diff --git a/orm/common/orm_common/utils/cross_api_utils.py b/orm/common/orm_common/utils/cross_api_utils.py index 8b6f5578..ee4eadc8 100755 --- a/orm/common/orm_common/utils/cross_api_utils.py +++ b/orm/common/orm_common/utils/cross_api_utils.py @@ -19,7 +19,8 @@ def set_utils_conf(_conf): def _check_conf_initialization(): if not conf: - raise AssertionError('Configurations wasnt initiated, please run set_utils_conf and pass pecan configuration') + raise AssertionError('Configurations wasnt initiated, please run ' + 'set_utils_conf and pass pecan configuration') def validate_description(data_value): @@ -34,7 +35,8 @@ def validate_description(data_value): if not isinstance(data_value, str): desc = str(data_value) - invalidChars = (string.punctuation).translate(None, ''.join(allowed_punctuations)) + invalidChars = (string.punctuation).translate( + None, ''.join(allowed_punctuations)) # detect any escape sequences or special characters in data string encoded_string = desc.encode('string_escape') @@ -79,14 +81,16 @@ def get_rms_region_group(group_name): _check_conf_initialization() try: timestamp = time.time() - if group_name == prev_group_name and timestamp - prev_timestamp <= conf.api.rms_server.cache_seconds: + if group_name == prev_group_name and timestamp - \ + prev_timestamp <= conf.api.rms_server.cache_seconds: return prev_resp headers = { 'content-type': 'application/json', } - # GET https://{serverRoot}/v1/orm/groups/{groupId}/ - rms_server_url = '%s%s/%s' % (conf.api.rms_server.base, conf.api.rms_server.groups, group_name) + # 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() @@ -100,7 +104,8 @@ def get_rms_region_group(group_name): logger.error( 'CRITICAL|{}| Failed in getting data from rms: connection error'.format( nagois) + str(exp)) - exp.message = 'connection error: Failed to get get data from rms: unable to connect to server' + exp.message = 'connection error: Failed to get get data from rms: ' \ + 'unable to connect to server' raise except Exception as e: logger.exception(" Exception: " + str(e)) diff --git a/orm/orm_client/ormcli/rmscli.py b/orm/orm_client/ormcli/rmscli.py index 4c02e7cc..b3504b91 100644 --- a/orm/orm_client/ormcli/rmscli.py +++ b/orm/orm_client/ormcli/rmscli.py @@ -124,11 +124,12 @@ def add_to_parser(service_sub): parser_list_region = subparsers.add_parser('list_regions', help='\ [--use_version ] [--type ][--status ]\ -[--metadata ] [--aicversion ][--clli ]\ +[--metadata ] [--ranger_agent_version ]\ +[--clli ]\ [--regionname ] [--osversion ]\ [--location_type ]\ [--state ] [--country ] [--city ] [--street ]\ -[--zip ] [--vlcp_name ]') +[--zip ] [--clcp_name ]') parser_list_region.add_argument('client', **cli_common.ORM_CLIENT_KWARGS) parser_list_region.add_argument('--use_version', type=int, help='') @@ -136,8 +137,8 @@ def add_to_parser(service_sub): parser_list_region.add_argument('--status', type=str, help='') parser_list_region.add_argument('--metadata', action='append', nargs="+", type=str, help='') - parser_list_region.add_argument('--aicversion', type=str, - help='') + parser_list_region.add_argument('--ranger_agent_version', type=str, + help='') parser_list_region.add_argument('--clli', type=str, help='') parser_list_region.add_argument('--regionname', type=str, help='') @@ -150,8 +151,8 @@ def add_to_parser(service_sub): parser_list_region.add_argument('--city', type=str, help='') parser_list_region.add_argument('--street', type=str, help='') parser_list_region.add_argument('--zip', type=str, help='') - parser_list_region.add_argument('--vlcp_name', type=str, - help='') + parser_list_region.add_argument('--clcp_name', type=str, + help='') # add metadata to region h1, h2 = '', '' @@ -256,7 +257,8 @@ def get_token(timeout, args, host): 'Failed in get_token, host: {}, region: {}'.format(host, auth_region)) url = url % (keystone_ep,) - data = data % (base_config.user_domain_name, username, password, tenant_name, base_config.project_domain_name,) + data = data % (base_config.user_domain_name, username, password, + tenant_name, base_config.project_domain_name,) if args.verbose: print( @@ -297,8 +299,9 @@ def cmd_details(args): if args.metadata: for meta in args.metadata: param += '%smetadata=%s' % (preparm(param), meta[0]) - if args.aicversion: - param += '%saicversion=%s' % (preparm(param), args.aicversion) + if args.ranger_agent_version: + param += '%sranger_agent_version=%s' % (preparm(param), + args.ranger_agent_version) if args.clli: param += '%sclli=%s' % (preparm(param), args.clli) if args.regionname: @@ -318,8 +321,8 @@ def cmd_details(args): param += '%sstreet=%s' % (preparm(param), args.street) if args.zip: param += '%szip=%s' % (preparm(param), args.zip) - if args.vlcp_name: - param += '%svlcp_name=%s' % (preparm(param), args.vlcp_name) + if args.clcp_name: + param += '%svlcp_name=%s' % (preparm(param), args.clcp_name) return requests.get, '/%s' % param elif args.subcmd == 'add_metadata': return requests.post, '/%s/metadata' % args.region_id @@ -361,7 +364,8 @@ def get_environment_variable(argument): def run(args): url_path = get_path(args) - rms_base_url = args.rms_base_url if args.rms_base_url else base_config.rms['base_url'] + rms_base_url = args.rms_base_url if args.rms_base_url \ + else base_config.rms['base_url'] data = args.datafile.read() if 'datafile' in args else '{}' timeout = args.timeout if args.timeout else 10 rest_cmd, cmd_url = cmd_details(args) diff --git a/orm/services/region_manager/rms/controllers/v2/orm/resources/regions.py b/orm/services/region_manager/rms/controllers/v2/orm/resources/regions.py index 24e23b7d..071611a6 100755 --- a/orm/services/region_manager/rms/controllers/v2/orm/resources/regions.py +++ b/orm/services/region_manager/rms/controllers/v2/orm/resources/regions.py @@ -3,15 +3,19 @@ import logging from orm.common.orm_common.utils import api_error_utils as err_utils from orm.common.orm_common.utils import utils -from orm.services.region_manager.rms.controllers.v2.orm.resources.metadata import RegionMetadataController -from orm.services.region_manager.rms.controllers.v2.orm.resources.status import RegionStatusController +from orm.services.region_manager.rms.controllers.v2.orm.resources.metadata \ + import RegionMetadataController +from orm.services.region_manager.rms.controllers.v2.orm.resources.status \ + import RegionStatusController from orm.services.region_manager.rms.model import model as PythonModel from orm.services.region_manager.rms.model import url_parm from orm.services.region_manager.rms.services import error_base from orm.services.region_manager.rms.services import services as RegionService from orm.services.region_manager.rms.utils import authentication -from pecan import conf, request, rest +from pecan import conf +from pecan import request +from pecan import rest import requests import wsme from wsme import types as wtypes @@ -85,22 +89,28 @@ class RegionsData(wtypes.DynamicBase): id = wsme.wsattr(wtypes.text, mandatory=True) name = wsme.wsattr(wtypes.text, mandatory=False) description = wsme.wsattr(wtypes.text, mandatory=True) - ranger_agent_version = wsme.wsattr(wtypes.text, mandatory=True, name="rangerAgentVersion") - open_stack_version = wsme.wsattr(wtypes.text, mandatory=True, name="OSVersion") + ranger_agent_version = wsme.wsattr(wtypes.text, mandatory=True, + name="rangerAgentVersion") + open_stack_version = wsme.wsattr(wtypes.text, mandatory=True, + name="OSVersion") clli = wsme.wsattr(wtypes.text, mandatory=True, name="CLLI") metadata = wsme.wsattr({str: [str]}, mandatory=True) endpoints = wsme.wsattr([EndPoint], mandatory=True) address = wsme.wsattr(Address, mandatory=True) design_type = wsme.wsattr(wtypes.text, mandatory=True, name="designType") - location_type = wsme.wsattr(wtypes.text, mandatory=True, name="locationType") + location_type = wsme.wsattr(wtypes.text, mandatory=True, + name="locationType") vlcp_name = wsme.wsattr(wtypes.text, mandatory=True, name="vlcpName") - created = wsme.wsattr(wtypes.dt_types.__getitem__(0), mandatory=False, name="created") - modified = wsme.wsattr(wtypes.dt_types.__getitem__(0), mandatory=False, name="modified") + created = wsme.wsattr(wtypes.dt_types.__getitem__(0), mandatory=False, + name="created") + modified = wsme.wsattr(wtypes.dt_types.__getitem__(0), mandatory=False, + name="modified") - def __init__(self, status=None, id=None, name=None, description=None, clli=None, - design_type=None, location_type=None, vlcp_name=None, - open_stack_version=None, address=Address(), ranger_agent_version=None, - metadata={}, endpoint=[EndPoint()], created=None, modified=None): + def __init__(self, status=None, id=None, name=None, description=None, + clli=None, design_type=None, location_type=None, + vlcp_name=None, open_stack_version=None, address=Address(), + ranger_agent_version=None, metadata={}, endpoint=[EndPoint()], + created=None, modified=None): """init :param status: @@ -175,9 +185,8 @@ class RegionsController(rest.RestController): status = RegionStatusController() def has_no_resources(self, region_id): - """ function to check if any resource (flavor, customer, or image) is - assigned to the region_id - """ + # function to check if any resource (flavor, customer, or image) is + # assigned to the region_id try: resources = { 'flavors': [conf.api.fms_server.base, @@ -216,16 +225,16 @@ class RegionsController(rest.RestController): @wsexpose(Regions, str, str, [str], str, str, str, str, str, str, str, str, str, str, str, status_code=200, rest_content_types='json') - def get_all(self, type=None, status=None, metadata=None, rangerAgentVersion=None, - clli=None, regionname=None, osversion=None, location_type=None, - state=None, country=None, city=None, street=None, zip=None, - vlcp_name=None): + def get_all(self, type=None, status=None, metadata=None, + ranger_agent_version=None, clli=None, regionname=None, + osversion=None, location_type=None, state=None, country=None, + city=None, street=None, zip=None, vlcp_name=None): """get regions. :param type: query field :param status: query field :param metadata: query field - :param rangerAgentVersion: query field + :param ranger_agent_version: query field :param clli: query field :param regionname: query field :param osversion: query field @@ -243,10 +252,11 @@ class RegionsController(rest.RestController): authentication.authorize(request, 'region:get_all', skip_auth=True) url_args = {'type': type, 'status': status, 'metadata': metadata, - 'rangerAgentVersion': rangerAgentVersion, 'clli': clli, 'regionname': regionname, - 'osversion': osversion, 'location_type': location_type, 'state': state, - 'country': country, 'city': city, 'street': street, 'zip': zip, - 'vlcp_name': vlcp_name} + 'ranger_agent_version': ranger_agent_version, 'clli': clli, + 'regionname': regionname, 'osversion': osversion, + 'location_type': location_type, 'state': state, + 'country': country, 'city': city, 'street': street, + 'zip': zip, 'vlcp_name': vlcp_name} logger.debug("Parameters: {}".format(str(url_args))) try: @@ -273,12 +283,14 @@ class RegionsController(rest.RestController): @wsexpose(RegionsData, str, status_code=200, rest_content_types='json') def get_one(self, id_or_name): - logger.info("API: Entered get region by id or name: {}".format(id_or_name)) + logger.info( + "API: Entered get region by id or name: {}".format(id_or_name)) authentication.authorize(request, 'region:get_one', skip_auth=True) try: result = RegionService.get_region_by_id_or_name(id_or_name) - logger.debug("API: Got region {} success: {}".format(id_or_name, result)) + logger.debug( + "API: Got region {} success: {}".format(id_or_name, result)) except error_base.ErrorStatus as exp: logger.error("RegionsController {}".format(exp.message)) raise err_utils.get_error(request.transaction_id, @@ -292,22 +304,26 @@ class RegionsController(rest.RestController): return result - @wsexpose(RegionsData, body=RegionsData, status_code=201, rest_content_types='json') + @wsexpose(RegionsData, body=RegionsData, status_code=201, + rest_content_types='json') def post(self, full_region_input): logger.info("API: CreateRegion") authentication.authorize(request, 'region:create') try: - logger.debug("API: create region .. data = : {}".format(full_region_input)) + logger.debug( + "API: create region .. data = : {}".format(full_region_input)) result = RegionService.create_full_region(full_region_input) logger.debug("API: region created : {}".format(result)) - event_details = 'Region {} {} created: rangerAgentVersion {}, OSversion {}, CLLI {}'.format( - full_region_input.name, - full_region_input.description, - full_region_input.design_type, - full_region_input.ranger_agent_version, - full_region_input.open_stack_version, full_region_input.clli) + event_details = "Region {} {} created: rangerAgentVersion {}, " \ + "OSversion {}, CLLI {}".format( + full_region_input.name, + full_region_input.description, + full_region_input.design_type, + full_region_input.ranger_agent_version, + full_region_input.open_stack_version, + full_region_input.clli) utils.audit_trail('create region', request.transaction_id, request.headers, full_region_input.id, event_details=event_details) @@ -324,7 +340,8 @@ class RegionsController(rest.RestController): status_code=exp.status_code) except Exception as exp: - logger.exception("Error in creating region .. reason:- {}".format(exp)) + logger.exception( + "Error in creating region .. reason:- {}".format(exp)) raise err_utils.get_error(request.transaction_id, status_code=500, message=exp.message) @@ -342,7 +359,7 @@ class RegionsController(rest.RestController): try: logger.debug("delete region {}".format(region_id)) - result = RegionService.delete_region(region_id) + RegionService.delete_region(region_id) logger.debug("region deleted") event_details = 'Region {} deleted'.format(region_id) @@ -354,9 +371,10 @@ class RegionsController(rest.RestController): # which is returned by RegionService.delete_region function except error_base.NotFoundError as exp: logger.error("RegionsController - Region not found") - raise err_utils.get_error(request.transaction_id, - message="Cannot delete - " + exp.message, - status_code=exp.status_code) + raise err_utils.get_error( + request.transaction_id, + message="Cannot delete - " + exp.message, + status_code=exp.status_code) except Exception as exp: logger.exception( @@ -366,7 +384,8 @@ class RegionsController(rest.RestController): message=exp.message) return else: - region_resources_exist_msg = "Region '{}' cannot be deleted as resources are assigned.".format(region_id) + region_resources_exist_msg = "Region {} cannot be deleted as " \ + "resources are assigned.".format(region_id) raise err_utils.get_error(request.transaction_id, status_code=400, @@ -385,9 +404,11 @@ class RegionsController(rest.RestController): result = RegionService.update_region(region_id, region) logger.debug("API: region {} updated".format(region_id)) - event_details = 'Region {} {} modified: rangerAgentVersion {}, OSversion {}, CLLI {}'.format( - region.name, region.design_type, region.ranger_agent_version, - region.open_stack_version, region.clli) + event_details = "Region {} {} modified: rangerAgentVersion {}, " \ + "OSversion {}, CLLI {}".format( + region.name, region.design_type, + region.ranger_agent_version, + region.open_stack_version, region.clli) utils.audit_trail('update region', request.transaction_id, request.headers, region_id, event_details=event_details) @@ -405,8 +426,9 @@ class RegionsController(rest.RestController): message=exp.message) except Exception as exp: logger.exception( - "API: error in updating region {}.. reason:- {}".format(region_id, - exp)) + "API: error in updating region {}.. " + "reason:- {}".format(region_id, + exp)) raise err_utils.get_error(request.transaction_id, status_code=500, message=exp.message) diff --git a/orm/services/region_manager/rms/model/url_parm.py b/orm/services/region_manager/rms/model/url_parm.py index 5a5349bb..79c18731 100755 --- a/orm/services/region_manager/rms/model/url_parm.py +++ b/orm/services/region_manager/rms/model/url_parm.py @@ -4,16 +4,16 @@ class UrlParms(object): """class method.""" - def __init__(self, type=None, status=None, metadata=None, rangerAgentVersion=None, - clli=None, regionname=None, osversion=None, location_type=None, - state=None, country=None, city=None, street=None, zip=None, - vlcp_name=None): + def __init__(self, type=None, status=None, metadata=None, + ranger_agent_version=None, clli=None, regionname=None, + osversion=None, location_type=None, state=None, country=None, + city=None, street=None, zip=None, vlcp_name=None): """init method. :param type: :param status: :param metadata: - :param rangerAgentVersion: + :param ranger_agent_version: :param clli: :param regionname: :param osversion: @@ -31,8 +31,8 @@ class UrlParms(object): self.region_status = status if metadata: self.metadata = metadata - if rangerAgentVersion: - self.ranger_agent_version = rangerAgentVersion + if ranger_agent_version: + self.ranger_agent_version = ranger_agent_version if clli: self.clli = clli if regionname: diff --git a/orm/tests/unit/ormcli/test_rmscli.py b/orm/tests/unit/ormcli/test_rmscli.py index 2d9ca9ab..5b6356bb 100755 --- a/orm/tests/unit/ormcli/test_rmscli.py +++ b/orm/tests/unit/ormcli/test_rmscli.py @@ -32,7 +32,7 @@ class RmsTests(TestCase): args.type = '1' args.status = '2' args.metadata = '3' - args.aicversion = '4' + args.ranger_agent_version = '4' args.clli = '5' args.regionname = '6' args.osversion = '7' @@ -42,11 +42,12 @@ class RmsTests(TestCase): args.city = '11' args.street = '12' args.zip = '13' - args.vlcp_name = '14' + args.clcp_name = '14' - list_region_url = '/?type=%s&status=%s&metadata=%s&aicversion=%s'\ - '&clli=%s®ionname=%s&osversion=%s&location_type=%s&state=%s'\ - '&country=%s&city=%s&street=%s&zip=%s&vlcp_name=%s' + list_region_url = '/?type=%s&status=%s&metadata=%s'\ + '&ranger_agent_version=%s&clli=%s®ionname=%s'\ + '&osversion=%s&location_type=%s&state=%s'\ + '&country=%s&city=%s&street=%s&zip=%s&vlcp_name=%s' subcmd_to_result = { 'get_region': (requests.get, '/%s' % args.region_name_or_id), @@ -57,10 +58,11 @@ class RmsTests(TestCase): 'list_regions': (requests.get, list_region_url % (args.type, args.status, args.metadata, - args.aicversion, args.clli, args.regionname, + args.ranger_agent_version, args.clli, + args.regionname, args.osversion, args.location_type, args.state, args.country, args.city, - args.street, args.zip, args.vlcp_name)) + args.street, args.zip, args.clcp_name)) } for subcmd in subcmd_to_result: diff --git a/orm/tests/unit/rms/model/test_url_parms.py b/orm/tests/unit/rms/model/test_url_parms.py index d6013845..b6abf8d3 100755 --- a/orm/tests/unit/rms/model/test_url_parms.py +++ b/orm/tests/unit/rms/model/test_url_parms.py @@ -6,8 +6,9 @@ from orm.services.region_manager.rms.model import url_parm parms = {'status': 'functional', 'city': 'Los Angeles', 'clli': 'clli_0', 'zip': '012345', 'country': 'US', 'metadata': ['key_1:value_1', 'key_2:value_2'], - 'location_type': 'location_type_0', 'state': 'Cal', 'street': 'Blv st', - 'rangerAgentVersion': 'aic 3.0', 'osversion': 'kilo', + 'location_type': 'location_type_0', 'state': 'Cal', + 'street': 'Blv st', + 'ranger_agent_version': 'aic 3.0', 'osversion': 'kilo', 'type': 'design_type_0', 'regionname': 'lcp 0', 'vlcp_name': 'abcd-1234'} @@ -15,15 +16,17 @@ parms_meta_none = {'status': 'functional', 'city': 'Los Angeles', 'clli': 'clli_0', 'zip': '012345', 'country': 'US', 'metadata': None, - 'location_type': 'location_type_0', 'state': 'Cal', 'street': 'Blv st', - 'rangerAgentVersion': 'aic 3.0', 'osversion': 'kilo', + 'location_type': 'location_type_0', 'state': 'Cal', + 'street': 'Blv st', + 'ranger_agent_version': 'aic 3.0', 'osversion': 'kilo', 'type': 'design_type_0', 'regionname': 'lcp 0', 'vlcp_name': 'abcd-1234'} output_parms = {'address_city': 'Los Angeles', 'clli': 'clli_0', 'name': 'lcp 0', 'open_stack_version': 'kilo', 'address_street': 'Blv st', 'address_state': 'Cal', - 'region_status': 'functional', 'location_type': 'location_type_0', + 'region_status': 'functional', + 'location_type': 'location_type_0', 'ranger_agent_version': 'aic 3.0', 'address_zip': '012345', 'vlcp_name': 'abcd-1234', 'address_country': 'US', 'design_type': 'design_type_0', @@ -32,13 +35,16 @@ output_parms = {'address_city': 'Los Angeles', 'clli': 'clli_0', regiondict_output = {'address_city': 'Los Angeles', 'clli': 'clli_0', 'name': 'lcp 0', 'location_type': 'location_type_0', 'open_stack_version': 'kilo', 'address_country': 'US', - 'ranger_agent_version': 'aic 3.0', 'region_status': 'functional', + 'ranger_agent_version': 'aic 3.0', + 'region_status': 'functional', 'address_state': 'Cal', 'address_street': 'Blv st', 'design_type': 'design_type_0', 'address_zip': '012345', 'vlcp_name': 'abcd-1234'} metadata_output = {'meta_data_keys': [], - 'meta_data_pairs': [{'metadata_key': 'key_1', 'metadata_value': 'value_1'}, - {'metadata_key': 'key_2', 'metadata_value': 'value_2'}], + 'meta_data_pairs': [{'metadata_key': 'key_1', + 'metadata_value': 'value_1'}, + {'metadata_key': 'key_2', + 'metadata_value': 'value_2'}], 'ref_keys': ['key_1', 'key_2']} diff --git a/ranger-tempest-plugin/ranger_tempest_plugin/tests/api/test_regions.py b/ranger-tempest-plugin/ranger_tempest_plugin/tests/api/test_regions.py index f1e857c2..440e83fb 100755 --- a/ranger-tempest-plugin/ranger_tempest_plugin/tests/api/test_regions.py +++ b/ranger-tempest-plugin/ranger_tempest_plugin/tests/api/test_regions.py @@ -85,7 +85,7 @@ class TestTempestRegion(rms_base.RmsBaseOrmTest): @decorators.idempotent_id('871be582-ecaa-4a46-a403-4d6b5e59d7de') def test_list_region_with_ranger_version(self): - filter = {'rangerAgentVersion': self.region_1['rangerAgentVersion']} + filter = {'ranger_agent_version': self.region_1['rangerAgentVersion']} self._list_regions_with_filter(filter, 'rangerAgentVersion') @decorators.idempotent_id('ac18be48-c787-4a65-913f-a0b0a80fbd1d') diff --git a/tools/rangercli.sh b/tools/rangercli.sh index 955dc1f5..12cca6d1 100755 --- a/tools/rangercli.sh +++ b/tools/rangercli.sh @@ -70,4 +70,4 @@ EndOfCommand ) # Execute Ranger CLI -${base_docker_command} -v "${RANGERCLI_JSONPATH}":"${RANGERCLI_HOSTPATH}" "${RANGERCLI_IMAGE}" $@ +${base_docker_command} -v "${RANGERCLI_JSONPATH}":"${RANGERCLI_HOSTPATH}" "${RANGERCLI_IMAGE}" ./orm "$@"