コード例 #1
0
ファイル: forms.py プロジェクト: openmsa/NO
    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)
コード例 #2
0
ファイル: setting.py プロジェクト: openmsa/NO
 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)
コード例 #3
0
ファイル: forms.py プロジェクト: openmsa/NO
    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)
コード例 #4
0
    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')
コード例 #5
0
    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')
コード例 #6
0
    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)
コード例 #7
0
    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)
コード例 #8
0
    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')
コード例 #9
0
    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)
コード例 #10
0
    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}))