def teamsignup_list(comfirm, user_id): if (comfirm == 'N'): com = db_session.query(GnUserTeam).filter( GnUserTeam.user_id == user_id).all() com.comfirm = 'Y' db_session.commit() return 1
def select_putsys(team_name, team_code, team_cpu, team_memory, team_disk): #팀 시스템 수정 / cpu / memory / disk lit = db_session.query(GnTeam).filter(GnTeam.team_code == team_code).one() try: if team_name != "": lit.team_name = team_name if team_cpu != "": lit.cpu_quota = team_cpu if team_memory != "": lit.mem_quota = convertsize(team_memory) if team_disk != "": lit.disk_quota = convertsize(team_disk) db_session.commit() return True except: return False
def sign_up(user_name, user_id, password, password_re): check = db_session.query(GnUser).filter( GnUser.user_id == user_id).one_or_none() if (password == password_re): if (check == None): password_sha = convertToHashValue(password_re) sign_up_info = GnUser( user_id=user_id, password=password_sha, user_name=user_name, tel="-", email="-", start_date=datetime.datetime.now().strftime('%Y%m%d%H%M%S')) db_session.add(sign_up_info) db_session.commit() return 'success' else: return 'user_id' else: return 'password'
def teamcheck_list(teamcode): return db_session.query(GnUser).filter(GnUser.team_code == teamcode).all()
def select_put(team_name, team_code): #팀 수정 lit = db_session.query(GnTeam).filter(GnTeam.team_code == team_code).one() lit.team_name = team_name db_session.commit() return True
def team_delete(id, code): db_session.query(GnUserTeam).filter(GnUserTeam.user_id == id).filter( GnUserTeam.team_code == code).delete() db_session.commit() return True
def server_create(name, size_id, image_id, team_code, user_id, sshkeys, tag, type, password, backup, sql_session): # host 선택 룰 # host의 조회 순서를 우선으로 가용할 수 있는 자원이 있으면 해당 vm을 해당 host에서 생성한다 host_id = None size_info = sql_session.query(GnVmSize).filter( GnVmSize.id == size_id).one() if type != 'docker': image_info = sql_session.query(GnVmImages).filter( GnVmImages.id == image_id).one() max_cpu = int(size_info.cpu) max_mem = int(size_info.mem) max_disk = int(size_info.disk) team_info = sql_session.query(GnTeam).filter( GnTeam.team_code == team_code).one() #조직의 리소스 체크 current_info = sql_session.query( func.ifnull(func.sum(GnVmMachines.cpu),0).label("sum_cpu"), func.ifnull(func.sum(GnVmMachines.memory),0).label("sum_mem"), ) \ .filter(GnVmMachines.team_code == team_code) \ .filter(GnVmMachines.status != config.REMOVE_STATUS).filter(GnVmMachines.status != config.ERROR_STATUS).one() disk_info = sql_session.query( func.ifnull(func.sum(GnVmMachines.disk),0).label("sum_disk") ) \ .filter(GnVmMachines.team_code == team_code) \ .filter(GnVmMachines.type != 'docker') \ .filter(GnVmMachines.status != config.REMOVE_STATUS).filter(GnVmMachines.status != config.ERROR_STATUS).one() if type == "kvm" or type == "hyperv": if (current_info.sum_cpu + max_cpu) > team_info.cpu_quota or ( current_info.sum_mem + max_mem) > team_info.mem_quota or ( disk_info.sum_disk + max_disk) > team_info.disk_quota: return {"status": False, "value": "팀의 사용량을 초과하였습니다."} else: if (current_info.sum_cpu + max_cpu) > team_info.cpu_quota \ or (current_info.sum_mem + max_mem) > team_info.mem_quota: return {"status": False, "value": "팀의 사용량을 초과하였습니다."} #호스트의 남아있는 자원체크 host_list = sql_session.query(GnHostMachines).filter( GnHostMachines.type == type).all() for host_info in host_list: use_sum_info = db_session.query(func.ifnull(func.sum(GnVmMachines.cpu),0).label("sum_cpu"), func.ifnull(func.sum(GnVmMachines.memory),0).label("sum_mem"), func.ifnull(func.sum(GnVmMachines.disk),0).label("sum_disk") ).filter(GnVmMachines.host_id == host_info.id)\ .filter(GnVmMachines.status != config.REMOVE_STATUS) \ .filter(GnVmMachines.status != config.ERROR_STATUS) \ .first() rest_cpu = host_info.cpu - use_sum_info.sum_cpu rest_mem = host_info.mem - use_sum_info.sum_mem rest_disk = host_info.disk - use_sum_info.sum_disk if type == "kvm" or type == "hyperv": if rest_cpu >= max_cpu and rest_mem >= max_mem and rest_disk >= max_disk: host_id = host_info.id max_cpu = rest_cpu max_mem = rest_mem max_disk = rest_disk if host_id is None and type != "docker": return {"status": False, "value": "HOST 머신 리소스가 부족합니다"} #backup imfo if (backup == True): backup = "true" else: backup = "false" #db 저장 #id 생성 while True: id = random_string(8) check_info = sql_session.query(GnId).filter(GnId.id == id).first() if not check_info: id_info = GnId(id, type) sql_session.add(id_info) sql_session.commit() break if (type == "hyperv"): vm_machine = GnVmMachines( id=id, name=name, cpu=size_info.cpu, memory=size_info.mem, disk=size_info.disk, type=type, team_code=team_code, author_id=user_id, status=config.STARTING_STATUS, tag=tag, image_id=image_id, create_time=datetime.datetime.now().strftime('%Y%m%d%H%M%S'), host_id=host_id, hyperv_pass=password, backup_confirm=backup, size_id=size_id, os=image_info.os) elif (type == "kvm"): vm_machine = GnVmMachines( id=id, name=name, cpu=size_info.cpu, memory=size_info.mem, disk=size_info.disk, type=type, team_code=team_code, author_id=user_id, status=config.STARTING_STATUS, tag=tag, image_id=image_id, create_time=datetime.datetime.now().strftime('%Y%m%d%H%M%S'), host_id=host_id, ssh_key_id=sshkeys, backup_confirm=backup, size_id=size_id, os=image_info.os) else: vm_machine = GnVmMachines( id=id, name=name, cpu=size_info.cpu, memory=size_info.mem, disk=size_info.disk, type=type, team_code=team_code, author_id=user_id, status=config.STARTING_STATUS, tag=tag, image_id=image_id, create_time=datetime.datetime.now().strftime('%Y%m%d%H%M%S'), host_id="", backup_confirm=backup, size_id=size_id, os='docker') sql_session.add(vm_machine) # history 추가 action_hist = GnInstanceActionHist( user_id=user_id, team_code=team_code, action="Create", action_time=datetime.datetime.now().strftime('%Y%m%d%H%M%S')) sql_session.add(action_hist) sql_session.commit() return {"status": True, "value": id}