Exemple #1
0
    def get(self):
        masterips = dockletRequest.post_to_all()
        images = {}
        for master in masterips:
            images[master.split("@")[0]] = dockletRequest.post(
                "/image/list/", {},
                master.split("@")[0]).get("images")
        logger.info(images)

        data = {
            "user": session['username'],
        }
        allresult = dockletRequest.post_to_all('/monitor/listphynodes/', data)
        allmachines = {}
        for master in allresult:
            allmachines[master.split("@")[0]] = []
            iplist = allresult[master].get('monitor').get('allnodes')
            for ip in iplist:
                result = dockletRequest.post(
                    '/monitor/hosts/%s/gpuinfo/' % (ip), data,
                    master.split("@")[0])
                gpuinfo = result.get('monitor').get('gpuinfo')
                allmachines[master.split("@")[0]].append(gpuinfo)

        pending_gpu_tasks = {}
        for master in masterips:
            pending_gpu_tasks[master.split("@")[0]] = dockletRequest.post(
                "/monitor/pending_gpu_tasks/", {},
                master.split("@")[0]).get("monitor").get("pending_tasks")

        return self.render(self.template_path,
                           masterips=masterips,
                           images=images,
                           allmachines=allmachines,
                           pending_gpu_tasks=pending_gpu_tasks)
Exemple #2
0
    def get(self):
        allimages = dockletRequest.post_to_all('/image/list/')
        for master in allimages:
            allimages[master] = allimages[master].get('images')
        allclusters = dockletRequest.post_to_all("/cluster/list/")
        for master in allclusters:
            allclusters[master] = allclusters[master].get('clusters')
        allclusters_info = {}
        clusters_info = {}
        data = {}
        for master in allclusters:
            allclusters_info[master] = {}
            for cluster in allclusters[master]:
                data["clustername"] = cluster
                result = dockletRequest.post(
                    "/cluster/info/", data,
                    master.split("@")[0]).get("message")
                allclusters_info[master][cluster] = result
        result = dockletRequest.post("/user/usageQuery/")
        quota = result.get("quota")
        usage = result.get("usage")
        default = result.get("default")
        restcpu = int(quota['cpu']) - int(usage['cpu'])
        restmemory = int(quota['memory']) - int(usage['memory'])
        restdisk = int(quota['disk']) - int(usage['disk'])
        if restcpu >= int(default['cpu']):
            defaultcpu = default['cpu']
        elif restcpu <= 0:
            defaultcpu = "0"
        else:
            defaultcpu = str(restcpu)

        if restmemory >= int(default['memory']):
            defaultmemory = default['memory']
        elif restmemory <= 0:
            defaultmemory = "0"
        else:
            defaultmemory = str(restmemory)

        if restdisk >= int(default['disk']):
            defaultdisk = default['disk']
        elif restdisk <= 0:
            defaultdisk = "0"
        else:
            defaultdisk = str(restdisk)

        defaultsetting = {
            'cpu': defaultcpu,
            'memory': defaultmemory,
            'disk': defaultdisk
        }
        return self.render("config.html",
                           allimages=allimages,
                           allclusters=allclusters_info,
                           mysession=dict(session),
                           quota=quota,
                           usage=usage,
                           defaultsetting=defaultsetting)
Exemple #3
0
    def get(self):
        allimages = dockletRequest.post_to_all('/image/list/')
        for master in allimages:
            allimages[master] = allimages[master].get('images')
        allclusters = dockletRequest.post_to_all("/cluster/list/")
        for master in allclusters:
            allclusters[master] = allclusters[master].get('clusters')
        allclusters_info = {}
        clusters_info = {}
        data={}
        for master in allclusters:
            allclusters_info[master] = {}
            for cluster in allclusters[master]:
                data["clustername"] = cluster
                result = dockletRequest.post("/cluster/info/", data, master.split("@")[0]).get("message")
                allclusters_info[master][cluster] = result
        result = dockletRequest.post("/user/usageQuery/")
        quota = result.get("quota")
        usage = result.get("usage")
        default = result.get("default")
        restcpu = int(quota['cpu']) - int(usage['cpu'])
        restmemory = int(quota['memory']) - int(usage['memory'])
        restdisk = int(quota['disk']) - int(usage['disk'])
        if restcpu >= int(default['cpu']):
            defaultcpu = default['cpu']
        elif restcpu <= 0:
            defaultcpu = "0"
        else:
            defaultcpu = str(restcpu)

        if restmemory >= int(default['memory']):
            defaultmemory = default['memory']
        elif restmemory <= 0:
            defaultmemory = "0"
        else:
            defaultmemory = str(restmemory)

        if restdisk >= int(default['disk']):
            defaultdisk = default['disk']
        elif restdisk <= 0:
            defaultdisk = "0"
        else:
            defaultdisk = str(restdisk)

        defaultsetting = {
                'cpu': defaultcpu,
                'memory': defaultmemory,
                'disk': defaultdisk
                }
        return self.render("config.html", allimages = allimages, allclusters = allclusters_info, mysession=dict(session), quota = quota, usage = usage, defaultsetting = defaultsetting)
Exemple #4
0
 def get(self):
     data = {
         "user": session['username'],
     }
     allresult = dockletRequest.post_to_all('/monitor/listphynodes/', data)
     allmachines = {}
     for master in allresult:
         allmachines[master] = []
         iplist = allresult[master].get('monitor').get('allnodes')
         for ip in iplist:
             containers = {}
             result = dockletRequest.post(
                 '/monitor/hosts/%s/containers/' % (ip), data,
                 master.split("@")[0])
             containers = result.get('monitor').get('containers')
             result = dockletRequest.post(
                 '/monitor/hosts/%s/status/' % (ip), data,
                 master.split("@")[0])
             status = result.get('monitor').get('status')
             allmachines[master].append({
                 'ip': ip,
                 'containers': containers,
                 'status': status
             })
     #print(machines)
     return self.render(self.template_path,
                        allmachines=allmachines,
                        user=session['username'])
Exemple #5
0
 def get(self):
     masterips = dockletRequest.post_to_all()
     images = {}
     for master in masterips:
         images[master.split("@")[0]] = dockletRequest.post("/image/list/",{},master.split("@")[0]).get("images")
     logger.info(images)
     return self.render(self.template_path, masterips=masterips, images=images)
Exemple #6
0
 def get(self):
     data = {}
     allclusters = dockletRequest.post_to_all('/cluster/list/')
     for master in allclusters:
         allclusters[master] = allclusters[master].get('clusters')
     result = dockletRequest.post('/user/selfQuery/')
     quotas = result['data']['groupinfo']
     quotanames = quotas.keys()
     '''result = dockletRequest.post('/monitor/user/quotainfo/', data)
     quotainfo = result.get('quotainfo')
     quotainfo['cpu'] = int(int(quotainfo['cpu']))
     print(quotainfo)'''
     allcontainers = {}
     if (result):
         containers = {}
         for master in allclusters:
             allcontainers[master] = {}
             for cluster in allclusters[master]:
                 data["clustername"] = cluster
                 message = dockletRequest.post('/cluster/info/', data, master.split("@")[0])
                 if (message):
                     message = message.get('message')
                 else:
                     self.error()
                 allcontainers[master][cluster] = message
         return self.render(self.template_path,  quotas = quotas, quotanames = quotanames, allcontainers = allcontainers, user = session['username'])
     else:
         self.error()
Exemple #7
0
 def get(self):
     data = {
         "user": session['username'],
     }
     allvnodes = {}
     result = dockletRequest.post_to_all('/monitor/user/createdvnodes/', data)
     for master in result:
         allvnodes[master] = result[master].get('createdvnodes')
     return self.render(self.template_path, user = session['username'],allvnodes = allvnodes)
Exemple #8
0
 def get(self):
     data = {
         "user": session['username'],
     }
     allvnodes = {}
     result = dockletRequest.post_to_all('/monitor/user/createdvnodes/', data)
     for master in result:
         allvnodes[master] = result[master].get('createdvnodes')
     return self.render(self.template_path, user = session['username'],allvnodes = allvnodes)
Exemple #9
0
 def get(self):
     masterips = dockletRequest.post_to_all()
     job_list = {}
     for ipname in masterips:
         ip = ipname.split("@")[0]
         result = dockletRequest.post("/batch/job/list/",{},ip)
         job_list[ip] = result.get("data")
         logger.debug("job_list[%s]: %s" % (ip,job_list[ip]))
     if True:
         return self.render(self.template_path, masterips=masterips, job_list=job_list)
     else:
         return self.error()
Exemple #10
0
 def get(self):
     masterips = dockletRequest.post_to_all()
     job_list = {}
     for ipname in masterips:
         ip = ipname.split("@")[0]
         result = dockletRequest.post("/batch/job/list/",{},ip)
         job_list[ip] = result.get("data")
         logger.debug("job_list[%s]: %s" % (ip,job_list[ip]))
     if True:
         return self.render(self.template_path, masterips=masterips, job_list=job_list)
     else:
         return self.error()
Exemple #11
0
    def get(self):
        masterips = dockletRequest.post_to_all()
        images = {}
        for master in masterips:
            images[master.split("@")[0]] = dockletRequest.post(
                "/image/list/", {},
                master.split("@")[0]).get("images")
        logger.info(images)

        data = {
            "user": session['username'],
        }
        allresult = dockletRequest.post_to_all('/monitor/listphynodes/', data)
        allmachines = {}
        for master in allresult:
            allmachines[master.split("@")[0]] = []
            iplist = allresult[master].get('monitor').get('allnodes')
            for ip in iplist:
                result = dockletRequest.post(
                    '/monitor/hosts/%s/gpuinfo/' % (ip), data,
                    master.split("@")[0])
                gpuinfo = result.get('monitor').get('gpuinfo')
                allmachines[master.split("@")[0]].append(gpuinfo)

        batch_gpu_billing = env.getenv("BATCH_GPU_BILLING")
        default_gpu_price = 100  # /cores*h
        if batch_gpu_billing:
            # examples: default:100,GeForce-GTX-1080-Ti:100,GeForce-GTX-2080-Ti:150,Tesla-V100-PCIE-16GB:200
            billing_configs = batch_gpu_billing.split(',')
            for config in billing_configs:
                config_sp = config.split(':')
                if config_sp[0] == 'default':
                    default_gpu_price = int(config_sp[1])
        return self.render(self.template_path,
                           masterips=masterips,
                           images=images,
                           allmachines=allmachines,
                           default_gpu_price=default_gpu_price)
Exemple #12
0
    def get(self):
        masterips = dockletRequest.post_to_all()
        images = dockletRequest.post("/image/list/", {},
                                     masterips[0].split("@")[0]).get("images")
        desc = dockletRequest.getdesc(masterips[0].split("@")[1])
        result = dockletRequest.post("/user/usageQuery/")
        quota = result.get("quota")
        usage = result.get("usage")
        default = result.get("default")
        restcpu = int(quota['cpu']) - int(usage['cpu'])
        restmemory = int(quota['memory']) - int(usage['memory'])
        restdisk = int(quota['disk']) - int(usage['disk'])
        if restcpu >= int(default['cpu']):
            defaultcpu = default['cpu']
        elif restcpu <= 0:
            defaultcpu = "0"
        else:
            defaultcpu = str(restcpu)

        if restmemory >= int(default['memory']):
            defaultmemory = default['memory']
        elif restmemory <= 0:
            defaultmemory = "0"
        else:
            defaultmemory = str(restmemory)

        if restdisk >= int(default['disk']):
            defaultdisk = default['disk']
        elif restdisk <= 0:
            defaultdisk = "0"
        else:
            defaultdisk = str(restdisk)

        defaultsetting = {
            'cpu': defaultcpu,
            'memory': defaultmemory,
            'disk': defaultdisk
        }
        if (result):
            return self.render(self.template_path,
                               user=session['username'],
                               masterips=masterips,
                               images=images,
                               quota=quota,
                               usage=usage,
                               defaultsetting=defaultsetting,
                               masterdesc=desc)
        else:
            self.error()
Exemple #13
0
 def get(self):
     data = {}
     allclusters = dockletRequest.post_to_all('/cluster/list/')
     for master in allclusters:
         allclusters[master] = allclusters[master].get('clusters')
     result = dockletRequest.post('/user/selfQuery/')
     quotas = result['data']['groupinfo']
     quotanames = quotas.keys()
     '''result = dockletRequest.post('/monitor/user/quotainfo/', data)
     quotainfo = result.get('quotainfo')
     quotainfo['cpu'] = int(int(quotainfo['cpu']))
     print(quotainfo)'''
     allcontainers = {}
     if (result):
         for master in allclusters:
             allcontainers[master] = {}
             for cluster in allclusters[master]:
                 data["clustername"] = cluster
                 message = dockletRequest.post('/cluster/info/', data,
                                               master.split("@")[0])
                 if (message):
                     message = message.get('message')
                 else:
                     self.error()
                 allcontainers[master][cluster] = message
             message = dockletRequest.post('/batch/vnodes/list/', data,
                                           master.split("@")[0])
             message = message.get('data')
             containers = []
             for m in message:
                 container = {}
                 container['containername'] = m
                 container['ip'] = '--'
                 containers.append(container)
             tmp = {}
             tmp['containers'] = containers
             tmp['status'] = 'running'
             allcontainers[master]['Batch_Job'] = tmp
         return self.render(self.template_path,
                            quotas=quotas,
                            quotanames=quotanames,
                            allcontainers=allcontainers,
                            user=session['username'])
     else:
         self.error()
Exemple #14
0
 def get(self):
     data = {
         "user": session['username'],
     }
     allresult = dockletRequest.post_to_all('/monitor/listphynodes/', data)
     allmachines = {}
     for master in allresult:
         allmachines[master] = []
         iplist = allresult[master].get('monitor').get('allnodes')
         for ip in iplist:
             containers = {}
             result = dockletRequest.post('/monitor/hosts/%s/containers/'%(ip), data, master.split("@")[0])
             containers = result.get('monitor').get('containers')
             result = dockletRequest.post('/monitor/hosts/%s/status/'%(ip), data, master.split("@")[0])
             status = result.get('monitor').get('status')
             allmachines[master].append({'ip':ip,'containers':containers, 'status':status})
     #print(machines)
     return self.render(self.template_path, allmachines = allmachines, user = session['username'])
Exemple #15
0
    def get(self):
        masterips = dockletRequest.post_to_all()
        images = dockletRequest.post("/image/list/",{},masterips[0].split("@")[0]).get("images")
        desc = dockletRequest.getdesc(masterips[0].split("@")[1])
        result = dockletRequest.post("/user/usageQuery/")
        quota = result.get("quota")
        usage = result.get("usage")
        default = result.get("default")
        restcpu = int(quota['cpu']) - int(usage['cpu'])
        restmemory = int(quota['memory']) - int(usage['memory'])
        restdisk = int(quota['disk']) - int(usage['disk'])
        if restcpu >= int(default['cpu']):
            defaultcpu = default['cpu']
        elif restcpu <= 0:
            defaultcpu = "0"
        else:
            defaultcpu = str(restcpu)

        if restmemory >= int(default['memory']):
            defaultmemory = default['memory']
        elif restmemory <= 0:
            defaultmemory = "0"
        else:
            defaultmemory = str(restmemory)

        if restdisk >= int(default['disk']):
            defaultdisk = default['disk']
        elif restdisk <= 0:
            defaultdisk = "0"
        else:
            defaultdisk = str(restdisk)

        defaultsetting = {
                'cpu': defaultcpu,
                'memory': defaultmemory,
                'disk': defaultdisk
                }
        if (result):
            return self.render(self.template_path, user = session['username'],masterips = masterips, images = images, quota = quota, usage = usage, defaultsetting = defaultsetting, masterdesc=desc)
        else:
            self.error()
Exemple #16
0
 def get(self):
     data = {}
     allclusters = dockletRequest.post_to_all('/cluster/list/')
     for master in allclusters:
         allclusters[master] = allclusters[master].get('clusters')
     result = dockletRequest.post('/user/selfQuery/')
     quotas = result['data']['groupinfo']
     quotanames = quotas.keys()
     '''result = dockletRequest.post('/monitor/user/quotainfo/', data)
     quotainfo = result.get('quotainfo')
     quotainfo['cpu'] = int(int(quotainfo['cpu']))
     print(quotainfo)'''
     allcontainers = {}
     if (result):
         for master in allclusters:
             allcontainers[master] = {}
             for cluster in allclusters[master]:
                 data["clustername"] = cluster
                 message = dockletRequest.post('/cluster/info/', data, master.split("@")[0])
                 if (message):
                     message = message.get('message')
                 else:
                     self.error()
                 allcontainers[master][cluster] = message
             message = dockletRequest.post('/batch/vnodes/list/', data, master.split("@")[0])
             message = message.get('data')
             containers = []
             for m in message:
                 container = {}
                 container['containername'] = m
                 container['ip'] = '--'
                 containers.append(container)
             tmp = {}
             tmp['containers'] = containers
             tmp['status'] = 'running'
             allcontainers[master]['Batch_Job'] = tmp
         return self.render(self.template_path,  quotas = quotas, quotanames = quotanames, allcontainers = allcontainers, user = session['username'])
     else:
         self.error()
Exemple #17
0
 def get(self):
     result = dockletRequest.post_to_all('/cluster/list/')
     desc = dockletRequest.getalldesc()
     allclusters={}
     for master in result:
         clusters = result[master].get("clusters")
         full_clusters = []
         data={}
         for cluster in clusters:
             data["clustername"] = cluster
             single_cluster = {}
             single_cluster['name'] = cluster
             message = dockletRequest.post("/cluster/info/", data , master.split("@")[0])
             if(message):
                 message = message.get("message")
                 single_cluster['status'] = message['status']
                 single_cluster['id'] = message['clusterid']
                 single_cluster['proxy_public_ip'] = message['proxy_public_ip']
                 full_clusters.append(single_cluster)
             else:
                 self.error()
         allclusters[master] = full_clusters
     return self.render(self.template_path,  allclusters = allclusters, desc=desc)
Exemple #18
0
 def post(self):
     settings = dockletRequest.post_to_all('/cloud/setting/get/')
     return self.render(self.template_path, settings = settings)
Exemple #19
0
 def post(self):
     settings = dockletRequest.post_to_all('/cloud/setting/get/')
     return self.render(self.template_path, settings=settings)
Exemple #20
0
def userLockRelease(ulockname):
    data = {"ulockname": ulockname}
    result = dockletRequest.post_to_all("/admin/ulock/release/", data)
    #logger.debug(result)
    return json.dumps(result)