Exemplo n.º 1
0
 def unauthorizedpost(self, url = '/', data = None):
     data = dict(data)
     data_log = {'user': data['user']}
     logger.info("Docklet Unauthorized Request: data = %s, url = %s" % (data_log, url))
     result = requests.post(endpoint + url, data = data).json()
     logger.info("Docklet Unauthorized Response: result = %s, url = %s"%(result, url))
     return result
Exemplo n.º 2
0
    def post_to_all(self, url='/', data={}):
        if (url == '/'):
            res = []
            for masterip in masterips:
                try:
                    requests.post("http://" + getip(masterip) + ":" +
                                  master_port + "/isalive/",
                                  data=data)
                except Exception as e:
                    logger.debug(e)
                    continue
                res.append(masterip)
            return res
        data = dict(data)
        data['token'] = session['token']
        logger.info("Docklet Request: user = %s data = %s, url = %s" %
                    (session['username'], data, url))
        result = {}
        for masterip in masterips:
            try:
                res = requests.post("http://" + getip(masterip) + ":" +
                                    master_port + url,
                                    data=data).json()
            except Exception as e:
                logger.debug(e)
                continue
            if 'success' in res and res['success'] == 'true':
                result[masterip] = res
                logger.info("get result from %s success" % getip(masterip))
            else:
                logger.error("get result from %s failed" % getip(masterip))

        return result
Exemplo n.º 3
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)
Exemplo n.º 4
0
 def post(self, url='/', data={}, endpoint="http://0.0.0.0:9000"):
     #try:
     data = dict(data)
     data['token'] = session['token']
     logger.info("Docklet Request: user = %s data = %s, url = %s" %
                 (session['username'], data, url))
     reqtype = url.split("/")[1]
     userreq = {
         'login', 'external_login', 'register', 'user', 'beans',
         'notification', 'settings', 'bug'
     }
     if ":" not in endpoint:
         endpoint = "http://" + endpoint + ":" + master_port
     if reqtype in userreq:
         result = requests.post(user_endpoint + url, data=data).json()
     else:
         result = requests.post(endpoint + url, data=data).json()
     # logger.info('response content: %s'%response.content)
     # result = response.json()
     if (result.get('success', None) == "false"
             and result.get('reason', None) == "Unauthorized Action"):
         abort(401)
     if (result.get('Unauthorized', None) == 'True'):
         session['401'] = 'Token Expired'
         abort(401)
     logstr = "Docklet Response: user = %s result = %s, url = %s" % (
         session['username'], result, url)
     if (sys.getsizeof(logstr) > 512):
         logstr = "Docklet Response: user = %s, url = %s" % (
             session['username'], url)
     logger.info(logstr)
     return result
Exemplo n.º 5
0
 def unauthorizedpost(self, url='/', data=None):
     logger.info("Docklet Unauthorized Request: data = %s, url = %s" %
                 (data, url))
     result = requests.post(endpoint + url, data=data).json()
     logger.info("Docklet Unauthorized Response: result = %s, url = %s" %
                 (result, url))
     return result
Exemplo n.º 6
0
 def post(self, url = '/', data = {}, endpoint = "http://0.0.0.0:9000"):
     #try:
     data = dict(data)
     data['token'] = session['token']
     logger.info ("Docklet Request: user = %s data = %s, url = %s"%(session['username'], data, url))
     reqtype = url.split("/")[1]
     userreq = {
             'login',
             'external_login',
             'register',
             'user',
             'beans',
             'notification',
             'cloud',
             'settings'
             }
     if ":" not in endpoint:
         endpoint = "http://"+endpoint+":"+master_port
     if reqtype in userreq:
         result = requests.post(user_endpoint + url, data=data).json()
     else:
         result = requests.post(endpoint + url, data=data).json()
     # logger.info('response content: %s'%response.content)
     # result = response.json()
     if (result.get('success', None) == "false" and result.get('reason', None) == "Unauthorized Action"):
         abort(401)
     if (result.get('Unauthorized', None) == 'True'):
         session['401'] = 'Token Expired'
         abort(401)
     logstr = "Docklet Response: user = %s result = %s, url = %s" % (session['username'], result, url)
     if (sys.getsizeof(logstr) > 512):
         logstr = "Docklet Response: user = %s, url = %s"%(session['username'], url)
     logger.info(logstr)
     return result
Exemplo n.º 7
0
    def post_to_all(self, url = '/', data={}):
        if (url == '/'):
            res = []
            for masterip in masterips:
                try:
                    requests.post("http://"+getip(masterip)+":"+master_port+"/isalive/",data=data)
                except Exception as e:
                    logger.debug(e)
                    continue
                res.append(masterip)
            return res
        data = dict(data)
        data['token'] = session['token']
        logger.info("Docklet Request: user = %s data = %s, url = %s"%(session['username'], data, url))
        result = {}
        for masterip in masterips:
            try:
                res = requests.post("http://"+getip(masterip)+":"+master_port+url,data=data).json()
            except Exception as e:
                logger.debug(e)
                continue
            result[masterip] = res
            logger.debug("get result from " + getip(masterip))

        return result
Exemplo n.º 8
0
 def unauthorizedpost(self, url = '/', data = None):
     data = dict(data)
     data_log = {'user': data.get('user', 'external')}
     logger.info("Docklet Unauthorized Request: data = %s, url = %s" % (data_log, url))
     result = requests.post(user_endpoint + url, data = data).json()
     logger.info("Docklet Unauthorized Response: result = %s, url = %s"%(result, url))
     return result
Exemplo n.º 9
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)
Exemplo n.º 10
0
    def post(self, url = '/', data = {}):
        #try:
        data = dict(data)
        data['token'] = session['token']
        logger.info ("Docklet Request: user = %s data = %s, url = %s"%(session['username'], data, url))

        result = requests.post(endpoint + url, data = data).json()
        if (result.get('success', None) == "false" and (result.get('reason', None) == "Unauthorized Action" or result.get('Unauthorized', None) == 'True')):
            abort(401)
        logger.info ("Docklet Response: user = %s result = %s, url = %s"%(session['username'], result, url))
        return result
Exemplo n.º 11
0
 def get(self):
     data = {'jobid': self.jobid}
     result = dockletRequest.post("/batch/job/info/", data, self.masterip)
     data = result.get("data")
     logger.info(str(data))
     #logger.debug("job_list: %s" % job_list)
     if result.get('success', "") == "true":
         return self.render(self.template_path,
                            masterip=self.masterip,
                            jobinfo=data)
     else:
         return self.render(self.error_path, message=result.get('message'))
Exemplo n.º 12
0
 def get(self):
     data = {
         'jobid':self.jobid
     }
     result = dockletRequest.post("/batch/job/info/",data,self.masterip)
     data = result.get("data")
     logger.info(str(data))
     #logger.debug("job_list: %s" % job_list)
     if result.get('success',"") == "true":
         return self.render(self.template_path, masterip=self.masterip, jobinfo=data)
     else:
         return self.render(self.error_path, message = result.get('message'))
Exemplo n.º 13
0
    def post(self, url='/', data={}):
        #try:
        data = dict(data)
        data['token'] = session['token']
        logger.info("Docklet Request: user = %s data = %s, url = %s" %
                    (session['username'], data, url))

        result = requests.post(endpoint + url, data=data).json()
        if (result.get('success', None) == "false"
                and (result.get('reason', None) == "Unauthorized Action"
                     or result.get('Unauthorized', None) == 'True')):
            abort(401)
        logger.info("Docklet Response: user = %s result = %s, url = %s" %
                    (session['username'], result, url))
        return result
Exemplo n.º 14
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)
Exemplo n.º 15
0
            title = 'Internal Server Error'
        return render_template('error/500.html', mysession = session, reason = reason, title = title)
    else:
        return redirect('/login/')
if __name__ == '__main__':
    '''
    to generate a secret_key

    from base64 import b64encode
    from os import urandom

    secret_key = urandom(24)
    secret_key = b64encode(secret_key).decode('utf-8')

    '''
    logger.info('Start Flask...:')
    try:
        secret_key_file = open(env.getenv('FS_PREFIX') + '/local/web_secret_key.txt')
        app.secret_key = secret_key_file.read()
        secret_key_file.close()
    except:
        from base64 import b64encode
        from os import urandom
        secret_key = urandom(24)
        secret_key = b64encode(secret_key).decode('utf-8')
        app.secret_key = secret_key
        secret_key_file = open(env.getenv('FS_PREFIX') + '/local/web_secret_key.txt', 'w')
        secret_key_file.write(secret_key)
        secret_key_file.close()

    os.environ['APP_KEY'] = app.secret_key
Exemplo n.º 16
0
            title = 'Internal Server Error'
        return render_template('error/500.html', mysession = session, reason = reason, title = title)
    else:
        return redirect('/login/')
if __name__ == '__main__':
    '''
    to generate a secret_key

    from base64 import b64encode
    from os import urandom

    secret_key = urandom(24)
    secret_key = b64encode(secret_key).decode('utf-8')

    '''
    logger.info('Start Flask...:')
    try:
        secret_key_file = open(env.getenv('FS_PREFIX') + '/local/web_secret_key.txt')
        app.secret_key = secret_key_file.read()
        secret_key_file.close()
    except:
        from base64 import b64encode
        from os import urandom
        secret_key = urandom(24)
        secret_key = b64encode(secret_key).decode('utf-8')
        app.secret_key = secret_key
        secret_key_file = open(env.getenv('FS_PREFIX') + '/local/web_secret_key.txt', 'w')
        secret_key_file.write(secret_key)
        secret_key_file.close()

    os.environ['APP_KEY'] = app.secret_key
Exemplo n.º 17
0
def parse_cookie(cookie, securekey):
    logger.info (">> parse cookie : %s" % cookie)
    parts = cookie.split('.')
    part1 = parts[0]
    part2 = '' if len(parts) < 2 else parts[1]
    try:
        text = str(base64.b64decode(part1.encode('ascii')), encoding='utf-8')
    except:
        logger.info ("decode cookie failed")
        return None
    logger.info ("cookie content : %s" % text)
    thatpart2 = hashlib.md5((text+securekey).encode('ascii')).hexdigest()
    logger.info ("hash from part1 : %s" % thatpart2)
    logger.info ("hash from part2 : %s" % part2)
    if part2 == thatpart2:
        result = json.loads(text)['name']
    else:
        result = None
    logger.info ("parse from cookie : %s" % result)
    return result