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))
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({})
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'))
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}))
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))
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}))
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))
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"})
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))
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))
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))
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))
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"})
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)
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)
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'))
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
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)
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))
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))
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'))
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"})
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"})
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))
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)
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))
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'))
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'))
def test_login(self): client = Communicator() data = {'username': '******', 'password': '******'} cookies = client.login(data) print(cookies)
def test_delete_image(self): client = Communicator() data = {'username': '******', 'password': '******'} client.login(data) client.delete_image(1, 2)