def handle(self, request, data): try: resource_id = data['resource_id'] func_type = resource_id.split('|')[0] create_def = RESOURCE_CREATE_COLUMNS_DEF[func_type] params = {'function_type': func_type} for column_class in ['common', 'separate']: for column in create_def[column_class]: params[column[0]] = data[column[0]] if 'create_type' in create_def: params['function_type'] = create_def['create_type'] if create_def['method'] == 'update': nal_api.update_resource(request, params) msg = _('Job of resource creation is running.') LOG.debug(msg) messages.success(request, msg) return True else: nal_api.create_resource(request, params) msg = _('Job of resource creation is running.') LOG.debug(msg) messages.success(request, msg) return True except exceptions.NotAvailable: return False except Exception: detail_table = RESOURCE_SCREEN_TRANSITION[func_type] set_args = '|'.join([resource_id, detail_table]) redirect = reverse(constants.RESOURCE_DETAIL_URL, args=(set_args, )) exceptions.handle(request, redirect=redirect)
def delete(self, request, obj_id): func_type = obj_id.split('|')[0] resource_key = obj_id.split('|')[1] resource_id = obj_id.split('|')[2] try: tenant_id = request.user.project_id resource = nal_api.get_resources(request, tenant_id, func_type=func_type) for contract_data in resource['contract_info']: if str(contract_data.id) == resource_id: global_ip = contract_data.resource break LOG.info('Deleting resource "%s".' % global_ip) params = { 'function_type': 'globalip_return', 'global_ip': global_ip } nal_api.update_resource(request, params) except Exception: detail_table = RESOURCE_SCREEN_TRANSITION[func_type] set_args = '|'.join([func_type, resource_key, detail_table]) redirect = reverse(constants.RESOURCE_DETAIL_URL, args=(set_args, )) exceptions.handle(request, redirect=redirect)
def handle(self, request, data): try: params = { 'function_type': data['func_type'], 'global_ip': data['resource'] } up_type = data['update_type'] display_type = RESOURCE_UPDATE_COLUMNS_DEF[up_type]['display_type'] if display_type == 'input_column': for column in RESOURCE_UPDATE_COLUMNS_DEF[up_type]['common']: params[column[0]] = data[column[0]] for column in RESOURCE_UPDATE_COLUMNS_DEF[up_type]['separate']: if data['status'] in column[1]['input_type']: params[column[0]] = data[column[0]] nal_api.update_resource(request, params) msg = _('Job of resource update process is running.') LOG.debug(msg) messages.success(request, msg) return True except exceptions.NotAvailable: return False except Exception: redirect = reverse(constants.RESOURCE_DETAIL_URL, args=(data['func_type'], )) exceptions.handle(request, redirect=redirect)
def test_resource_update(self): """Verify that resource update """ cli_resources = { "status": "success", "error-code": " NAL100000", "message": "" } input_param = { 'status': '2', 'node_id': 'node_id_00001', 'function_type': 'ext_globalip' } cli_param = { 'operation_id': self.request.user.id, 'IaaS_tenant_id': self.request.user.project_id, 'IaaS_tenant_name': self.request.user.project_name, 'IaaS_region_id': self.request.user.services_region } cli_param.update(input_param) client = self.stub_nalclient() client.resource = self.mox.CreateMockAnything() client.resource.update(cli_param).AndReturn(cli_resources) self.mox.ReplayAll() api_resources = nal_api.update_resource(self.request, input_param) self.assertEqual(api_resources['status'], 'success')
def test_create_parameter_error(self): obj_id = '|'.join(['ext_globalip', 'globalip']) nal_api.update_resource(IsA(http.HttpRequest), IsA({})).AndRaise(exceptions.NotAvailable()) self.mox.ReplayAll() formData = {'resource_kind': 'ext_globalip', 'resource_id': obj_id, 'count': 1} res = self.client.post(reverse(RESOURCE_CREATE_URL, kwargs={"resource_id": obj_id}), formData) self.assertTemplateUsed(res, 'project/resource/create.html')
def test_create_api_error(self): obj_id = '|'.join(['ext_globalip', 'globalip']) nal_api.update_resource(IsA(http.HttpRequest), IsA({})).AndRaise(OSError) self.mox.ReplayAll() formData = {'resource_kind': 'ext_globalip', 'resource_id': obj_id, 'count': 3} self.assertRaises(OSError, self.client.post, reverse(RESOURCE_CREATE_URL, kwargs={"resource_id": obj_id}), formData)
def test_create_globalip(self): obj_id = '|'.join(['ext_globalip', 'globalip']) nal_api.update_resource(IsA(http.HttpRequest), IsA({})).AndReturn(True) self.mox.ReplayAll() formData = {'resource_kind': 'ext_globalip', 'resource_id': obj_id, 'count': 1} res = self.client.post(reverse(RESOURCE_CREATE_URL, kwargs={"resource_id": obj_id}), formData) self.assertNoFormErrors(res) self.assertMessageCount(success=1)
def test_update_parameter_error(self): resource_data = {} for key, value in RESOURCE_RETURN_MAPPING['ext_globalip'].iteritems(): if isinstance(value, dict): resource_data[key] = [] for resource_row in fixture.RESOURCE_DATA_GLOBALIP[key]: resource_data[key].append(Resource(resource_row, value)) node_data = [] for data in fixture.NODE_DATA_LIST: node_data.append(Node(data, NODE_RETURN_MAPPING['all_node']['Virtual'])) nal_api.get_resources(IsA(http.HttpRequest), IsA('str'), func_type='ext_globalip')\ .AndReturn(resource_data) nal_api.get_nodes(IsA(http.HttpRequest), IsA('str'), func_type='all_node')\ .AndReturn(node_data) nal_api.update_resource(IsA(http.HttpRequest), IsA({}))\ .AndRaise(exceptions.NotAvailable()) self.mox.ReplayAll() obj_id = '|'.join(['ext_globalip', 'global_ip', '133']) formData = {'func_type': 'ext_globalip', 'resource': '133', 'status': '2', 'node_id': 'xxxxx-xxxxx-xxxxx-xxxxx-xxxx1', 'update_type': 'change_status'} res = self.client.post(reverse(RESOURCE_UPDATE_URL, args=(obj_id, 'change_status')), formData) self.assertTemplateUsed(res, 'project/resource/update.html')
def test_update_status_success(self): resource_data = {} for key, value in RESOURCE_RETURN_MAPPING['ext_globalip'].iteritems(): if isinstance(value, dict): resource_data[key] = [] for resource_row in fixture.RESOURCE_DATA_GLOBALIP[key]: resource_data[key].append(Resource(resource_row, value)) node_data = [] for data in fixture.NODE_DATA_LIST: node_data.append(Node(data, NODE_RETURN_MAPPING['all_node']['Virtual'])) nal_api.get_resources(IsA(http.HttpRequest), IsA('str'), func_type='ext_globalip')\ .AndReturn(resource_data) nal_api.get_nodes(IsA(http.HttpRequest), IsA('str'), func_type='all_node')\ .AndReturn(node_data) nal_api.update_resource(IsA(http.HttpRequest), IsA({})).AndReturn(True) self.mox.ReplayAll() obj_id = '|'.join(['ext_globalip', 'global_ip', '133']) formData = {'func_type': 'ext_globalip', 'resource': '133', 'status': '2', 'node_id': 'xxxxx-xxxxx-xxxxx-xxxxx-xxxx1', 'update_type': 'change_status'} res = self.client.post(reverse(RESOURCE_UPDATE_URL, args=(obj_id, 'change_status')), formData) self.assertNoFormErrors(res) self.assertMessageCount(success=1)
def test_delete(self): resource_data = {} disp_id = '|'.join(['ext_globalip', 'global_ip', 'ext_globalip_table']) for key, value in RESOURCE_RETURN_MAPPING['ext_globalip'].iteritems(): if isinstance(value, dict): resource_data[key] = [] for resource_row in fixture.RESOURCE_DATA_GLOBALIP[key]: resource_data[key].append(Resource(resource_row, value)) nal_api.get_resources(IsA(http.HttpRequest), IsA('str'), func_type=disp_id.split('|')[0])\ .AndReturn(resource_data) nal_api.get_resources(IsA(http.HttpRequest), IsA('str'), func_type=disp_id.split('|')[0])\ .AndReturn(resource_data) nal_api.update_resource(IsA(http.HttpRequest), IsA({})).AndReturn(True) self.mox.ReplayAll() obj_id = '|'.join(['ext_globalip', 'global_ip', '135']) formData = {'action': 'resource_globalip__delete__%s' % obj_id} res = self.client.post(reverse(RESOURCE_DETAIL_URL, kwargs={"resource_id": disp_id}), formData) self.assertRedirectsNoFollow(res, reverse(RESOURCE_DETAIL_URL, kwargs={"resource_id": disp_id}))