示例#1
0
 def get(self):
     try:
         token = request.headers.get('token')
         token_auth(token)
     except Exception, e:
         log.error('Token check error, reason=%s' % e)
         return request_result(201)
    def get(self, cloudhost_uuid):

        try:
            token = request.headers.get('token')
            token_auth(token)
        except Exception, e:
            log.warning('Token check error, token=%s, reason=%s' % (token, e))

            return request_result(201)
示例#3
0
 def delete(self, network_uuid):
     try:
         token = request.headers.get('token')
         token_auth(token)
         source_ip = request.headers.get('X-Real-IP')
         if source_ip is None:
             source_ip = request.remote_addr
     except Exception, e:
         log.error('Token check error, reason=%s' % e)
         return request_result(201)
    def put(self, cloudhost_uuid):

        try:
            token = request.headers.get('token')
            token_auth(token)
            source_ip = request.headers.get('X-Real-IP')
            if source_ip is None:
                source_ip = request.remote_addr
        except Exception, e:
            log.warning('Token check error, token=%s, reason=%s' % (token, e))

            return request_result(201)
    def osdisk_create(self, context, parameters):
        try:
            token = context['token']
            source_ip = context.get('source_ip')
            user_info = token_auth(context['token'])['result']
            user_uuid = user_info.get('user_uuid')
            team_uuid = user_info.get('team_uuid')
            project_uuid = user_info.get('project_uuid')

            log.info('the token is: %s, source_ip is: %s, user_uuid is: %s,'
                     'team_uuid is: %s, project_uuid is: %s' % (token,
                                                                source_ip,
                                                                user_uuid,
                                                                team_uuid,
                                                                project_uuid))
            name = parameters.get('name')
            description = parameters.get('description')
            volume_uuid = parameters.get('volume_uuid')
            v_type = 'system'
            size = parameters.get('size')
            conn_to = parameters.get('conn_to')
            image_uuid = parameters.get('image_uuid')
            if name is None:
                name = volume_uuid
            parameter_check(volume_uuid, exist='yes')
            parameter_check(conn_to, exist='yes')
            parameter_check(image_uuid, exist='yes')

        except Exception, e:
            log.error('parameters error, reason is: %s' % e)
            return request_result(101)
    def snap_create(self, context, parameters):
        try:
            token = context['token']
            source_ip = context.get('source_ip')
            user_info = token_auth(context['token'])['result']
            user_uuid = user_info.get('user_uuid')
            team_uuid = user_info.get('team_uuid')
            project_uuid = user_info.get('project_uuid')

            log.debug('the token is: %s, source_ip is: %s, user_uuid is: %s,'
                      'team_uuid is: %s, project_uuid is: %s' % (token,
                                                                 source_ip,
                                                                 user_uuid,
                                                                 team_uuid,
                                                                 project_uuid))

            name = parameters.get('name')
            description = parameters.get('description')
            metadata = parameters.get('metadata')
            volume_uuid = parameters.get('volume_uuid')
            vm_uuid = parameters.get('vm_uuid')
            parameter_check(name, ptype='pnam')
        except Exception, e:
            log.error('parameters error, reason is: %s' % e)
            return request_result(101)
示例#7
0
        def __aclauth(*args, **kwargs):

            func_args = inspect.getcallargs(func, *args, **kwargs)
            context = func_args.get('context')

            token = context['token']
            resources_uuid = context['resource_uuid']
            action = context['action']

            user_info = token_auth(token)['result']
            user_uuid = user_info['user_uuid']
            team_uuid = user_info['team_uuid']
            team_priv = user_info['team_priv']
            project_uuid = user_info['project_uuid']
            project_priv = user_info['project_priv']

            context = "%s%s%s%s%s%s%s" % (user_uuid, team_uuid, team_priv,
                                          project_uuid, project_priv,
                                          resources_uuid, action)

            log.debug('start ack check, context=%s' % (context))
            acl_info = caches.get(context)
            for resource_uuid in resources_uuid:
                if (acl_info is LocalCache.notFound):
                    log.debug('Cache acl not hit, context=%s' % (context))
                    auth_manager = AuthManager(service_name)
                    ret = auth_manager.resource_acl_check(
                        user_uuid, team_uuid, team_priv, project_uuid,
                        project_priv, resource_uuid, action)
                    expire = int(time.time()) + 300
                    caches.set(context, {"acl_check": ret, "expire": expire})
                    log.debug('Cached acl check, context=%s' % (context))
                else:
                    log.debug('Cache acl hit, context=%s' % (context))
                    ret = acl_info['acl_check']

                log.debug('ack check result=%s' % (ret))

                if ret == 0:
                    try:
                        return func(*args, **kwargs)
                    except Exception, e:
                        log.error('function(%s) exec error, reason = %s' %
                                  (func.__name__, e))
                        return request_result(999)
                else:
                    log.warning('Resource acl auth denied: user_uuid = %s, \
                                 team_uuid=%s, team_priv=%s, project_uuid=%s, \
                                 project_priv=%s, resource_uuid=%s, action=%s'
                                %
                                (user_uuid, team_uuid, team_priv, project_uuid,
                                 project_priv, resource_uuid, action))

                    return request_result(202)
    def templet_list(self, context, parameters):
        try:
            user_info = token_auth(context['token'])['result']
            user_uuid = user_info.get('user_uuid')
            team_uuid = user_info.get('team_uuid')
            team_priv = user_info.get('team_priv')
            project_uuid = user_info.get('project_uuid')
            project_priv = user_info.get('project_priv')

            page_size = parameters.get('page_size')
            page_num = parameters.get('page_num')
        except Exception, e:
            log.warning('parameters error, context=%s, reason=%s'
                        % (context, e))
            return request_result(101)
    def templet_update(self, context, parameters):
        try:
            token = context['token']
            source_ip = context.get('source_ip')
            user_info = token_auth(context['token'])['result']
            user_uuid = user_info.get('user_uuid')
            team_uuid = user_info.get('team_uuid')
            project_uuid = user_info.get('project_uuid')

            templet_uuid = context.get('resource_uuid')
            parameters = json.loads(parameters)
            name = parameters.get('name')
            description = parameters.get('description')
            parameter_check(name, ptype='pnam', exist='no')

        except Exception, e:
            log.error('parameters error, reason is: %s' % e)
            return request_result(101)
    def attachment_create(self, context, server_uuid, volume_uuid):
        try:
            token = context['token']
            source_ip = context.get('source_ip')
            user_info = token_auth(context['token'])['result']
            user_uuid = user_info.get('user_uuid')
            team_uuid = user_info.get('team_uuid')
            project_uuid = user_info.get('project_uuid')

            log.debug('the token is: %s, source_ip is: %s, user_uuid is: %s,'
                      'team_uuid is: %s, project_uuid is: %s' % (token,
                                                                 source_ip,
                                                                 user_uuid,
                                                                 team_uuid,
                                                                 project_uuid))
            parameter_check(server_uuid, exist='yes')
            parameter_check(volume_uuid, exist='yes')
        except Exception, e:
            log.error('parameters error, reason is: %s' % e)
            return request_result(101)
    def volume_create(self, context, parameters):
        try:
            token = context['token']
            source_ip = context.get('source_ip')
            user_info = token_auth(context['token'])['result']
            user_uuid = user_info.get('user_uuid')
            team_uuid = user_info.get('team_uuid')
            project_uuid = user_info.get('project_uuid')

            log.info('the token is: %s, source_ip is: %s, user_uuid is: %s,' 
                     'team_uuid is: %s, project_uuid is: %s' % (token,
                                                                source_ip,
                                                                user_uuid,
                                                                team_uuid,
                                                                project_uuid))
            name = parameters.get('name')
            size = parameters.get('size')
            description = parameters.get('description')
            v_type = parameters.get('v_type')
            conn_to = parameters.get('conn_to')
            snapshot_uuid = parameters.get('snapshot_uuid')
            is_use_domain = parameters.get('is_use_domain', 1)
            source_volume_uuid = parameters.get('templet_uuid')
            image_uuid = parameters.get('image_uuid')
            is_start = parameters.get('is_start')
            is_secret = parameters.get('is_secret')
            if is_start is None:
                is_start = 0
            if is_secret is None:
                is_secret = 0
            # if v_type not in ('ssd', 'hdd'):
            #     raise Exception('v_type keyword error')
            parameter_check(is_use_domain, ptype='n01')
            parameter_check(is_start, ptype='n01')
            parameter_check(is_secret, ptype='n01')
            parameter_check(name, ptype='pnam')
            parameter_check(size, ptype='psiz')
        except Exception, e:
            log.error('parameters error, reason is: %s' % e)
            return request_result(101)