Esempio n. 1
0
def containers_action(request):
    containers_id=request.POST.get('containers_id')
    action=request.POST.get('action')
    try:
        if action == "remove_container":
            docker_api_del('/containers/' + containers_id, json.dumps({}))
        else:
            res_data=docker_api('/containers/%s/%s' % (containers_id, action), {})
    except Exception as error:
        return HttpResponse(str(error))
    return HttpResponse("ok")
Esempio n. 2
0
def containers_action(request):
    containers_id = request.POST.get('containers_id')
    action = request.POST.get('action')
    queryset = containers.objects.get(containers_id=containers_id)

    code = {
        '204': '操作成功!',
        '304': '容器已经启动.',
        '404': '找不到这个容器,或者从来没有启动过.',
        '500 ': 'server error',
    }

    try:
        if action == "remove_container":
            docker_api_del('/containers/' + containers_id + '?force=1',
                           json.dumps({}),
                           host=queryset.host)
            containers.objects.filter(containers_id=containers_id).delete()
        else:
            res_data = docker_api('/containers/%s/%s' %
                                  (containers_id, action), {},
                                  host=queryset.host)

    except Exception as error:
        status_re = re.search('(\d+)', str(error))
        if status_re:
            status_value = status_re.group(1)
            if code.has_key(status_value):
                if status_value == '304':
                    containers.objects.filter(
                        containers_id=containers_id).update(status=action)
                    return HttpResponse('ok')

            if status_value == '404':
                res_error = json.loads(
                    docker_api_get('/containers/%s/json' % containers_id,
                                   host=queryset.host))
                if res_error['State']['Error']:
                    return HttpResponse(res_error['State']['Error'])
                else:
                    return HttpResponse(code['404'])

            return HttpResponse(code[status_value])
        return HttpResponse(str(error))

    if action in ['start', 'stop']:
        containers.objects.filter(containers_id=containers_id).update(
            status=action)
    return HttpResponse("ok")
Esempio n. 3
0
def containers_action(request):
    containers_id=request.POST.get('containers_id')
    action=request.POST.get('action')
    queryset=containers.objects.get(containers_id=containers_id)

    code={
        '204':'操作成功!',
        '304':'容器已经启动.',
        '404':'找不到这个容器,或者从来没有启动过.',
        '500 ':'server error',
    }

    try:
        if action == "remove_container":
            docker_api_del('/containers/' + containers_id + '?force=1', json.dumps({}), host=queryset.host)
            containers.objects.filter(containers_id=containers_id).delete()
        else:
            res_data=docker_api('/containers/%s/%s' % (containers_id, action), {}, host=queryset.host)

    except Exception as error:
        status_re=re.search('(\d+)', str(error))
        if status_re:
            status_value=status_re.group(1)
            if code.has_key(status_value):
                if status_value == '304':
                    containers.objects.filter(containers_id=containers_id).update(status=action)
                    return HttpResponse('ok')

            if status_value == '404':
                res_error=json.loads(docker_api_get('/containers/%s/json' % containers_id, host=queryset.host))
                if res_error['State']['Error']:
                    return HttpResponse(res_error['State']['Error'])
                else:
                    return HttpResponse(code['404'])

            return HttpResponse(code[status_value])
        return HttpResponse(str(error))

    if action in ['start', 'stop']:
        containers.objects.filter(containers_id=containers_id).update(status=action)
    return HttpResponse("ok")