Beispiel #1
0
def list_publics(request, *args, **kwargs):
    context = {
        'username': kwargs.get('username'),
        'is_staff': kwargs.get('is_staff')
    }

    client = Communicator(cookies=request.COOKIES)
    context['publics'] = client.get_public_images()

    return render(request, 'website/public_images.html', context,
        RequestContext(request))
Beispiel #2
0
def remove_memebers(request, *args, **kwargs):
    """
    Remove members from project.
    """
    project_id = kwargs['pid']
    users = request.REQUEST.getlist('users')

    client = Communicator(cookies=request.COOKIES)
    client.remove_members(project_id=project_id, users=users)

    return JsonResponse({})
Beispiel #3
0
def delete_resource_module(request, *args, **kwargs):
    module_id = kwargs['mid']

    if not kwargs['is_staff']:
        return HttpResponseRedirect(reverse('dashboard'))

    client = Communicator(cookies=request.COOKIES)
    ok = client.delete_resource_module(module_id=module_id)
    if ok:
        return HttpResponseRedirect(reverse('resource-module'))
    return HttpResponseRedirect(reverse('resource-module'))
Beispiel #4
0
def delete_volume(request, *args, **kwargs):
    project_id = kwargs['pid']
    volume_id = kwargs['vid']

    client = Communicator(cookies=request.COOKIES)
    ok = client.delete_volume(project_id=project_id, volume_id=volume_id)
    if ok:
        return HttpResponseRedirect(
            reverse('list-volumes', kwargs={'pid': project_id}))
    return HttpResponseRedirect(
        reverse('list-volumes', kwargs={'pid': project_id}))
Beispiel #5
0
def list_volumes(request, *args, **kwargs):
    context = {
        'username': kwargs.get('username'),
        'is_staff': kwargs.get('is_staff')
    }
    project_id = kwargs['pid']
    client = Communicator(cookies=request.COOKIES)
    context['project'] = client.get_project(project_id=project_id)
    context['volumes'] = client.volume_lists(project_id=project_id)

    return render(request, 'website/volumes.html', context,
                  RequestContext(request))
Beispiel #6
0
def delete_application(request, *args, **kwargs):
    project_id = kwargs['pid']
    application_id = kwargs['aid']

    client = Communicator(cookies=request.COOKIES)
    ok = client.delete_application(project_id=project_id,
                                   application_id=application_id)
    if ok:
        return HttpResponseRedirect(
            reverse('list-applications', kwargs={'pid': project_id}))
    return HttpResponseRedirect(
        reverse('list-applications', kwargs={'pid': project_id}))
Beispiel #7
0
def project_intro(request, *args, **kwargs):
    context = {
        'username': kwargs.get('username'),
        'is_staff': kwargs.get('is_staff')
    }
    project_id = kwargs['pid']
    client = Communicator(cookies=request.COOKIES)
    context['project'] = client.get_project(project_id=project_id)
    context['members'] = client.list_members(project_id=project_id)

    return render(request, 'website/project_intro.html', context,
                  RequestContext(request))
Beispiel #8
0
def clear_volume(request, *args, **kwargs):
    """
    Clear data of volume.
    """
    pid = kwargs['pid']
    vid = kwargs['vid']

    client = Communicator(cookies=request.COOKIES)
    ok = client.clear_volume(pid, vid)
    if ok:
        return JsonResponse({"success": "success"})
    else:
        return JsonResponse({"error": "failed"})
Beispiel #9
0
def show_public_detail(request, *args, **kwargs):
    context = {
        'username': kwargs.get('username'),
        'is_staff': kwargs.get('is_staff')
    }
    public_id = kwargs['puid']

    client = Communicator(cookies=request.COOKIES)
    context['projects'] = client.project_lists()
    context['image'] = client.get_public_image(public_id=public_id)

    return render(request, 'website/public_image_details.html', context,
                  RequestContext(request))
Beispiel #10
0
def dashboard(request, *args, **kwargs):
    context = {
        'username': kwargs.get('username'),
        'is_staff': kwargs.get('is_staff')
    }

    client = Communicator(cookies=request.COOKIES)

    # Get project lists
    projects = client.project_lists()
    context['projects'] = projects

    return render(request, 'website/dashboard.html', context,
                  RequestContext(request))
Beispiel #11
0
def resource_module(request, *args, **kwargs):
    context = {
        'username': kwargs.get('username'),
        'is_staff': kwargs.get('is_staff')
    }

    if not context['is_staff']:
        return HttpResponseRedirect(reverse('dashboard'))

    client = Communicator(cookies=request.COOKIES)
    context['modules'] = client.list_resource_modules()

    return render(request, 'website/resource_module.html', context,
                  RequestContext(request))
Beispiel #12
0
def list_images(request, *args, **kwargs):
    context = {
        'username': kwargs.get('username'),
        'is_staff': kwargs.get('is_staff')
    }

    project_id = kwargs.get('pid')
    client = Communicator(cookies=request.COOKIES)
    context['project'] = client.get_project(project_id=project_id)
    context['images'] = client.image_lists(project_id=project_id)
    logger.debug(context['images'])

    return render(request, 'website/images.html', context,
                  RequestContext(request))
Beispiel #13
0
def upload_volume(request, *args, **kwargs):
    """
    Upload data into volume.
    """
    pid = kwargs['pid']
    vid = kwargs['vid']

    client = Communicator(cookies=request.COOKIES)
    ok = client.upload_to_volume(pid, vid, request.FILES['file'])

    if ok:
        return JsonResponse({"success": "success"})
    else:
        return JsonResponse({"error": "failed"})
Beispiel #14
0
 def test_create_image(self):
     client = Communicator()
     data = {'username': '******', 'password': '******'}
     client.login(data)
     params = {
         'name': 'logtest',
         'version': '0.1',
         'desc': 'this is for test.',
         'is_public': 'false',
         'is_image': '0',
         'dockerfile': 'Dockerfile'
     }
     buildfile = '/home/wangtao/hummer-test/buildfiles/logtest/logtest.tar'
     ok = client.create_image(2, params, buildfile)
     print(ok)
Beispiel #15
0
    def test_clone_public_image(self):
        client = Communicator()
        data = {
            'username': '******',
            'password': '******'
        }
        client.login(data)

        data = {
            'pid': 1,
            'name': 'myubuntu',
            'version': '14.04'
        }
        res = client.clone_public_image(12, data)
        print(res)
Beispiel #16
0
def create_project(request, *args, **kwargs):
    form = ProjectForm(request.POST)
    if not form.is_valid():
        return HttpResponseRedirect(reverse('dashboard'))

    client = Communicator(cookies=request.COOKIES)
    data = {
        'name': form.cleaned_data['name'],
        'desc': form.cleaned_data['desc'],
        'csrfmiddlewaretoken': request.POST['csrfmiddlewaretoken']
    }

    ok = client.create_project(data)
    # logger.debug(ok)
    return HttpResponseRedirect(reverse('dashboard'))
Beispiel #17
0
def download_volume(request, *args, **kwargs):
    """
    Download data from volume.
    """
    pid = kwargs['pid']
    vid = kwargs['vid']

    client = Communicator(cookies=request.COOKIES)
    volume = client.get_volume(project_id=pid, volume_id=vid)
    res = client.download_from_volume(pid, vid)

    response = StreamingHttpResponse(res.iter_content(chunk_size=512))
    response['Content-Type'] = 'application/octet-stream'
    response['Content-Disposition'] = 'attachment;filename="{}"'.format(
        volume['name'] + ".tar")
    return response
Beispiel #18
0
    def test_registry(self):
        client = Communicator()
        data = {
            'username': '******',
            'password': '******'
        }
        client.login(data)

        data = {
            'username': '******',
            'password': '******',
            'email': '*****@*****.**',
            'is_staff': False,
            'is_active': True
        }
        client.registry(data)
Beispiel #19
0
def app_monitor(request, *args, **kwargs):
    context = {
        'username': kwargs.get('username'),
        'is_staff': kwargs.get('is_staff')
    }

    if not context['is_staff']:
        return HttpResponseRedirect(reverse('dashboard'))

    client = Communicator(cookies=request.COOKIES)
    context['projects'] = client.list_projects()
    context['monitor_base_url'] = "http://{}/dashboard-solo/db/containers\
?fullscreen".format(settings.GRAFANA_SERVER)

    return render(request, 'website/app_monitor.html', context,
                  RequestContext(request))
Beispiel #20
0
def host_monitor(request, *args, **kwargs):
    context = {
        'username': kwargs.get('username'),
        'is_staff': kwargs.get('is_staff')
    }

    if not context['is_staff']:
        return HttpResponseRedirect(reverse('dashboard'))

    client = Communicator(cookies=request.COOKIES)
    context['hosts'] = ['All Hosts']
    context['hosts'] += client.list_hosts()

    context['monitor_url'] = get_url_of_host_monitor("cpu", "All Hosts")

    return render(request, 'website/host_monitor.html', context,
                  RequestContext(request))
Beispiel #21
0
def registry(request):
    """
    User registry view, should post username, password1, password2, email.
    """
    form = RegistryForm(request.POST)
    if form.is_valid() and form.password_varify():
        data = {
            'username': form.cleaned_data['username'],
            'password': form.cleaned_data['password1'],
            'email': form.cleaned_data['email'],
            'is_staff': False,
            'is_active': True
        }
        client = Communicator(cookies=request.COOKIES)
        client.registry(data)

    return HttpResponseRedirect(reverse('user-management'))
Beispiel #22
0
def create_image(request, *args, **kwargs):
    project_id = kwargs['pid']

    build_type = request.POST.get('build_type', '0')
    if build_type == '0':
        form = SourceForm(request.POST)
    elif build_type == '1':
        form = ImageForm(request.POST)
    elif build_type == '2':
        form = SnapshotForm(request.POST)

    if not form.is_valid():
        return JsonResponse({"error": "data invalid"})

    buildfile = get_filename_of_buildfile(project_id)
    image_type = form.cleaned_data['image_type']
    if int(image_type) == 0:
        is_public = 'false'
    else:
        is_public = 'true'
    data = {
        'name': form.cleaned_data['name'],
        'version': form.cleaned_data['version'],
        'desc': form.cleaned_data['desc'],
        'is_public': is_public,
        'is_image': form.cleaned_data['build_type'],
    }

    build_type = form.cleaned_data['build_type']
    if build_type == '0':
        data['dockerfile'] = form.cleaned_data['dockerfile']
    elif build_type == '1':
        data['old_image_name'] = form.cleaned_data['old_name']
        data['old_image_version'] = form.cleaned_data['old_version']

    logger.debug(data)

    client = Communicator(cookies=request.COOKIES)
    ok = client.create_image(project_id, data, buildfile)

    remove_buildfile_from_disk(buildfile)

    if ok:
        return JsonResponse({"success": "success"})
    else:
        return JsonResponse({"error": "failed"})
Beispiel #23
0
def clone_public_image(request, *args, **kwargs):
    puid = kwargs['puid']

    form = PublicForm(request.POST)
    if not form.is_valid():
        return JsonResponse({"error": "data invalid"})

    data = {
        'pid': form.cleaned_data['project'],
        'name': form.cleaned_data['name'],
        'version': form.cleaned_data['version']
    }
    client = Communicator(cookies=request.COOKIES)
    ok = client.clone_public_image(public_id=puid, data=data)
    if ok:
        return JsonResponse({"success": "success"})
    else:
        return JsonResponse({"error": "failed"})
Beispiel #24
0
def show_volume_detail(request, *args, **kwargs):
    context = {
        'username': kwargs.get('username'),
        'is_staff': kwargs.get('is_staff')
    }

    project_id = kwargs['pid']
    volume_id = kwargs['vid']
    client = Communicator(cookies=request.COOKIES)
    context['project'] = client.get_project(project_id=project_id)
    context['volume'] = client.get_volume(project_id=project_id,
                                          volume_id=volume_id)
    if context['volume']['app']:
        context['app_name'] = client.get_application(
            project_id, context['volume']['app'])['name']

    return render(request, 'website/volume_detail.html', context,
                  RequestContext(request))
Beispiel #25
0
    def test_create_application(self):
        client = Communicator()
        data = {
            'username': '******',
            'password': '******'
        }
        client.login(data)

        data = {
            'image': 1,
            'name': 'test-app',
            'replicas': 1,
            'resource_limit': 1,
            'is_public': True,
            'session_affinity': False,
            'ports': [{'name': 'http', 'port': 80, 'protocol': 'TCP'}],
        }
        client.create_application(1, data)
Beispiel #26
0
def show_application_detail(request, *args, **kwargs):
    context = {
        'username': kwargs.get('username'),
        'is_staff': kwargs.get('is_staff')
    }
    project_id = kwargs['pid']
    application_id = kwargs['aid']
    client = Communicator(cookies=request.COOKIES)
    context['project'] = client.get_project(project_id=project_id)
    context['application'] = client.get_application(
        project_id=project_id, application_id=application_id)
    context['image'] = client.get_image(
        project_id=project_id, image_id=context['application']['image'])
    context['resource_limit'] = client.get_resourcelimit(
        context['application']['resource_limit'])

    if context['application']['is_autoscaler']:
        context['autoscaler'] = client.get_autoscaler(
            project_id=project_id, application_id=application_id)

    context['environments'] = client.get_environments(
        project_id=project_id, application_id=application_id)
    context['ports'] = client.get_ports(project_id=project_id,
                                        application_id=application_id)
    context['volumes'] = client.get_volume_of_application(
        project_id=project_id, app_id=application_id)
    context['pods'] = client.get_pods(project_id=project_id,
                                      application_id=application_id)
    context['logs'] = '\n'.join(
        client.get_pod_logs(project_id=project_id,
                            pod_name=context['pods'][0]))
    context['mem_url'] = get_url_of_monitor_iframe('memory',
                                                   context['project']['name'],
                                                   context['pods'][0])
    context['cpu_url'] = get_url_of_monitor_iframe('cpu',
                                                   context['project']['name'],
                                                   context['pods'][0])

    # logger.debug(context)

    return render(request, 'website/application_detail.html', context,
                  RequestContext(request))
Beispiel #27
0
def login(request):
    """
    Login view.
    """
    form = LoginForm(data=request.POST)

    if form.is_valid():
        data = {
            'username': form.cleaned_data['username'],
            'password': form.cleaned_data['password']
        }
        client = Communicator()
        cookies = client.login(data)

        if 'sessionid' in cookies:
            response = HttpResponseRedirect(reverse('dashboard'))
            response.set_cookie('sessionid', cookies['sessionid'])
            return response

        return HttpResponseRedirect(reverse('index'))
    return HttpResponseRedirect(reverse('index'))
Beispiel #28
0
def registry(request):
    """
    User registry view, should post username, password1, password2, email.
    """
    form = RegistryForm(request.POST)
    if form.is_valid() and form.password_varify():
        data = {
            'username': form.cleaned_data['username'],
            'password': form.cleaned_data['password1'],
            'email': form.cleaned_data['email'],
            'is_staff': False,
            'is_active': True
        }
        client = Communicator()
        cookies = client.registry(data)

        if 'sessionid' in cookies:
            response = HttpResponseRedirect(reverse('dashboard'))
            response.set_cookie('sessionid', cookies['sessionid'])
            return response

    return HttpResponseRedirect(reverse('index'))
Beispiel #29
0
 def test_login(self):
     client = Communicator()
     data = {'username': '******', 'password': '******'}
     cookies = client.login(data)
     print(cookies)
Beispiel #30
0
 def test_delete_image(self):
     client = Communicator()
     data = {'username': '******', 'password': '******'}
     client.login(data)
     client.delete_image(1, 2)