def modifyUsers(request): try: userID = request.session['userID'] adminNames = ACLManager.loadAllUsers(userID) return render(request, 'userManagment/modifyUser.html', {"acctNames": adminNames}) except KeyError: return redirect(loadLoginPage)
def createContainer(self, request=None, userID=None, data=None): try: admin = Administrator.objects.get(pk=userID) if admin.acl.adminStatus != 1: return ACLManager.loadError() client = docker.from_env() dockerAPI = docker.APIClient() adminNames = ACLManager.loadAllUsers(userID) tag = request.GET.get('tag') image = request.GET.get('image') tag = tag.split(" (")[0] if "/" in image: name = image.split("/")[0] + "." + image.split("/")[1] else: name = image try: inspectImage = dockerAPI.inspect_image(image + ":" + tag) except docker.errors.ImageNotFound: val = request.session['userID'] admin = Administrator.objects.get(pk=val) return render(request, 'dockerManager/images.html', {"type": admin.type, 'image': image, 'tag': tag}) envList = {}; if 'Env' in inspectImage['Config']: for item in inspectImage['Config']['Env']: if '=' in item: splitedItem = item.split('=', 1) print splitedItem envList[splitedItem[0]] = splitedItem[1] else: envList[item] = "" portConfig = {}; if 'ExposedPorts' in inspectImage['Config']: for item in inspectImage['Config']['ExposedPorts']: portDef = item.split('/') portConfig[portDef[0]] = portDef[1] if image is None or image is '' or tag is None or tag is '': return redirect(loadImages) Data = {"ownerList": adminNames, "image": image, "name": name, "tag": tag, "portConfig": portConfig, "envList": envList} return render(request, 'dockerManager/runContainer.html', Data) except BaseException, msg: return HttpResponse(str(msg))
def listContainers(self, request=None, userID=None, data=None): try: client = docker.from_env() dockerAPI = docker.APIClient() currentACL = ACLManager.loadedACL(userID) containers = ACLManager.findAllContainers(currentACL, userID) allContainers = client.containers.list() containersList = [] showUnlistedContainer = True # TODO: Add condition to show unlisted Containers only if user has admin level access unlistedContainers = [] for container in allContainers: if container.name not in containers: unlistedContainers.append(container) if not unlistedContainers: showUnlistedContainer = False adminNames = ACLManager.loadAllUsers(userID) pages = float(len(containers)) / float(10) pagination = [] if pages <= 1.0: pages = 1 pagination.append('<li><a href="\#"></a></li>') else: pages = ceil(pages) finalPages = int(pages) + 1 for i in range(1, finalPages): pagination.append('<li><a href="\#">' + str(i) + '</a></li>') return render(request, 'dockerManager/listContainers.html', {"pagination": pagination, "unlistedContainers": unlistedContainers, "adminNames": adminNames, "showUnlistedContainer": showUnlistedContainer}) except BaseException, msg: return HttpResponse(str(msg))