Esempio n. 1
0
File: views.py Progetto: 00k/galaxy
def update_service(request):
    builder = http.ResponseBuilder()
    id = request.GET.get('id',None)
    if not id:
        return builder.error('id is required').build_json()
    master_addr = request.GET.get('master',None)
    if not master_addr:
        return builder.error('master is required').build_json()
    replicate = request.GET.get('replicate',None)
    if not replicate:
        return builder.error('replicate is required').build_json()
    status,stat = views.get_group_quota_stat(request.job.group, {})
    old_job_meta = json.loads(request.job.meta)
    replicate_num = int(replicate)
    if replicate_num > old_job_meta['replicate_count']:
        new_add = replicate_num - old_job_meta['replicate_count']
        cpu_total_require = new_add * old_job_meta['cpu_share']
        mem_total_require = old_job_meta['memory_limit'] * 1024 * 1024 * 1024 * new_add
        if cpu_total_require > stat['total_cpu_left']:
            return builder.error('cpu %s exceeds the left cpu quota %s'%(cpu_total_require, stat['total_cpu_left'])).build_json()
        if mem_total_require > stat['total_mem_left']:
            return builder.error('mem %s exceeds the left mem %s'%(mem_total_require, stat['total_mem_left'])).build_json()
    old_job_meta['replicate_count'] = replicate_num
    request.job.meta = json.dumps(old_job_meta)
    request.job.save()
    galaxy = wrapper.Galaxy(master_addr,settings.GALAXY_CLIENT_BIN)
    status = galaxy.update_job(id,replicate)
    if status:
        return builder.ok().build_json()
    else:
        return builder.error('fail to kill job').build_json()
Esempio n. 2
0
File: views.py Progetto: 00k/galaxy
def create_service(request):
    """
    create a service
    """
    builder = http.ResponseBuilder()
    data_str = request.POST.get("data",None);
    if not data_str:
        return builder.error('data is required').build_json()
    data = json.loads(data_str)
    LOG.info(data)
    group_id = data.get('groupId',None)
    if not group_id:
        return builder.error('groupId is required').build_json()
    try:
        #判断是否有组权限
        group_member_iterator =  models.GroupMember.objects.filter(user_name=request.user.username, group__id=int(group_id))
        group_member = None
        for gm in group_member_iterator:
            group_member = gm
        if not group_member:
            return builder.error('group with %s does not exist'%group_id).build_json()
        if group_member.group.max_cpu_limit and data['cpuLimit'] > group_member.group.max_cpu_limit:
            return builder.error('cpu limit exceeds the max cpu limit %d'%group_member.group.max_cpu_limit).build_json()
        status,stat = views.get_group_quota_stat(group_member.group, {})
        cpu_total_require = data['replicate'] * data['cpuShare']
        mem_total_require = data['memoryLimit'] * 1024 * 1024 * 1024 * data['replicate']
        if cpu_total_require > stat['total_cpu_left']:
            return builder.error('cpu %s exceeds the left cpu quota %s'%(cpu_total_require, stat['total_cpu_left'])).build_json()
        if mem_total_require > stat['total_mem_left']:
            return builder.error('mem %s exceeds the left mem %s'%(mem_total_require, stat['total_mem_left'])).build_json()
        conf = None
        if data['setMonitor'] :
            conf = helper.build_monitor_conf(data)
        galaxy = wrapper.Galaxy(gm.group.galaxy_master, 
                                settings.GALAXY_CLIENT_BIN)
        tags = []
        if 'tag' in data and data['tag'].strip():
            tags.append(data['tag'].strip());
        status,output = galaxy.create_task(data['name'],data['pkgSrc'],
                                           data['startCmd'],
                                           data['replicate'],
                                           data['memoryLimit']*1024*1024*1024,
                                           cpu_soft_limit = data['cpuShare'],
                                           cpu_limit = data['cpuLimit'],
                                           deploy_step_size = data['deployStepSize'],
                                           one_task_per_host = data['oneTaskPerHost'],
                                           restrict_tags =tags,
                                           conf = conf)
        if not status:
            return builder.error('fail create task').build_json()
        galaxy_job = models.GalaxyJob(group = group_member.group , 
                                     job_id = int(output),
                                     meta = json.dumps(data))
        galaxy_job.save()
        return builder.ok().build_json()
    except Exception as e:
        return builder.error(str(e)).build_json()
Esempio n. 3
0
def create_service(request):
    """
    create a service
    """
    builder = http.ResponseBuilder()
    group_id = request.POST.get('groupId',None)
    if not group_id:
        return builder.error('groupId is required').build_json()
    try:
        #判断是否有组权限
        group_member_iterator =  models.GroupMember.objects.filter(user_name=request.user.username, group__id=int(group_id))
        group_member = None
        for gm in group_member_iterator:
            group_member = gm
        if not group_member:
            return builder.error('group with %s does not exist'%group_id).build_json()
        ret = helper.validate_init_service_group_req(request)
        status,stat = views.get_group_quota_stat(group_member.group, {})
        cpu_total_require = ret['replicate_count'] * ret['cpu_share']
        mem_total_require = ret['memory_limit'] * 1024 * 1024 * 1024 * ret['replicate_count']
        if cpu_total_require > stat['total_cpu_left']:
            return builder.error('cpu %s exceeds the left cpu quota %s'%(cpu_total_require, stat['total_cpu_left'])).build_json()
        if mem_total_require > stat['total_mem_left']:
            return builder.error('mem %s exceeds the left mem %s'%(mem_total_require, stat['total_mem_left'])).build_json()
        galaxy = wrapper.Galaxy(gm.group.galaxy_master, 
                                settings.GALAXY_CLIENT_BIN)
        status,output = galaxy.create_task(ret['name'],ret['pkg_src'],
                                           ret['start_cmd'],
                                           ret['replicate_count'],
                                           ret['memory_limit']*1024*1024*1024,
                                           ret['cpu_share'],
                                           deploy_step_size = ret['deploy_step_size'],
                                           one_task_per_host = ret['one_task_per_host'],
                                           restrict_tags = ret['tag'])
        if not status:
            return builder.error('fail create task').build_json()
        galaxy_job = models.GalaxyJob(group = group_member.group , 
                                     job_id = int(output),
                                     meta = json.dumps(ret))
        galaxy_job.save()
        return builder.ok().build_json()
    except Exception as e:
        return builder.error(str(e)).build_json()
Esempio n. 4
0
def update_service(request):
    builder = http.ResponseBuilder()
    id = request.GET.get('id', None)
    if not id:
        return builder.error('id is required').build_json()
    master_addr = request.GET.get('master', None)
    if not master_addr:
        return builder.error('master is required').build_json()
    replicate = request.GET.get('replicate', None)
    if not replicate:
        return builder.error('replicate is required').build_json()
    status, stat = views.get_group_quota_stat(request.job.group, {})
    old_job_meta = json.loads(request.job.meta)
    replicate_num = int(replicate)
    if replicate_num > old_job_meta['replicate_count']:
        new_add = replicate_num - old_job_meta['replicate_count']
        cpu_total_require = new_add * old_job_meta['cpu_share']
        mem_total_require = old_job_meta[
            'memory_limit'] * 1024 * 1024 * 1024 * new_add
        if cpu_total_require > stat['total_cpu_left']:
            return builder.error(
                'cpu %s exceeds the left cpu quota %s' %
                (cpu_total_require, stat['total_cpu_left'])).build_json()
        if mem_total_require > stat['total_mem_left']:
            return builder.error(
                'mem %s exceeds the left mem %s' %
                (mem_total_require, stat['total_mem_left'])).build_json()
    old_job_meta['replicate_count'] = replicate_num
    request.job.meta = json.dumps(old_job_meta)
    request.job.save()
    galaxy = wrapper.Galaxy(master_addr, settings.GALAXY_CLIENT_BIN)
    status = galaxy.update_job(id, replicate)
    if status:
        return builder.ok().build_json()
    else:
        return builder.error('fail to kill job').build_json()
Esempio n. 5
0
def create_service(request):
    """
    create a service
    """
    builder = http.ResponseBuilder()
    data_str = request.POST.get("data", None)
    if not data_str:
        return builder.error('data is required').build_json()
    data = json.loads(data_str)
    LOG.info(data)
    group_id = data.get('groupId', None)
    if not group_id:
        return builder.error('groupId is required').build_json()
    try:
        #判断是否有组权限
        group_member_iterator = models.GroupMember.objects.filter(
            user_name=request.user.username, group__id=int(group_id))
        group_member = None
        for gm in group_member_iterator:
            group_member = gm
        if not group_member:
            return builder.error('group with %s does not exist' %
                                 group_id).build_json()
        if group_member.group.max_cpu_limit and data[
                'cpuLimit'] > group_member.group.max_cpu_limit:
            return builder.error(
                'cpu limit exceeds the max cpu limit %d' %
                group_member.group.max_cpu_limit).build_json()
        status, stat = views.get_group_quota_stat(group_member.group, {})
        cpu_total_require = data['replicate'] * data['cpuShare']
        mem_total_require = data['memoryLimit'] * 1024 * 1024 * 1024 * data[
            'replicate']
        if cpu_total_require > stat['total_cpu_left']:
            return builder.error(
                'cpu %s exceeds the left cpu quota %s' %
                (cpu_total_require, stat['total_cpu_left'])).build_json()
        if mem_total_require > stat['total_mem_left']:
            return builder.error(
                'mem %s exceeds the left mem %s' %
                (mem_total_require, stat['total_mem_left'])).build_json()
        conf = None
        if data['setMonitor']:
            conf = helper.build_monitor_conf(data)
        galaxy = wrapper.Galaxy(gm.group.galaxy_master,
                                settings.GALAXY_CLIENT_BIN)
        tags = []
        if 'tag' in data and data['tag'].strip():
            tags.append(data['tag'].strip())
        status, output = galaxy.create_task(
            data['name'],
            data['pkgSrc'],
            data['startCmd'],
            data['replicate'],
            data['memoryLimit'] * 1024 * 1024 * 1024,
            cpu_soft_limit=data['cpuShare'],
            cpu_limit=data['cpuLimit'],
            deploy_step_size=data['deployStepSize'],
            one_task_per_host=data['oneTaskPerHost'],
            restrict_tags=tags,
            conf=conf)
        if not status:
            return builder.error('fail create task').build_json()
        galaxy_job = models.GalaxyJob(group=group_member.group,
                                      job_id=int(output),
                                      meta=json.dumps(data))
        galaxy_job.save()
        return builder.ok().build_json()
    except Exception as e:
        return builder.error(str(e)).build_json()