Esempio n. 1
0
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)
Esempio n. 2
0
    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))
Esempio n. 3
0
    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))