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
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
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)
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
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
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
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
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
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)
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
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'))
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'))
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
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)
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
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