def post(self, action): try: data = request.get_json() if action == "create": return VirtualSwitchController().create_virtual_switch(data) elif action == "delete": vswitch_uuid = data.get("uuid", "") return VirtualSwitchController().delete_virtual_switch( vswitch_uuid) elif action == "update": return VirtualSwitchController().update_virtual_switchs(data) elif action == "update_map": return VirtualSwitchController().update_virtual_switch(data) elif action == "info": if not data: return build_result("ParamError") vswitch_uuid = data.get("uuid", "") return VirtualSwitchController().virtual_switch_info( vswitch_uuid) else: return abort_error(404) except Exception as e: print(e) logger.exception("vswitch action %s failed:%s", action, e) return build_result("OtherError")
def post(self, action): try: data = request.get_json() logger.info("post data: {}".format(data)) if action == "group": return VoiTerminalController().education_group(data) if action == "conf_groups_list": return VoiTerminalController().education_config_groups() elif action == "desktop_bind": return VoiTerminalController().terminal_desktop_bind(data) if action == "groups": return VoiTerminalController().education_groups() if action == "create_desktop_bind": return VoiTerminalController().create_terminal_desktop_bind( data) if action == "delete_desktop_bind": return VoiTerminalController().delete_terminal_desktop_bind( data) if action == "update_desktop_bind": return VoiTerminalController().update_terminal_desktop_bind( data) if action == "desktop_ip_order": return VoiTerminalController().order_terminal_desktop_ip(data) if action == "update_desktop_sent_flag": return VoiTerminalController().update_desktop_sent_flag(data) else: return abort_error(404) except Exception as e: logger.error("personal desktop action %s failed:%s", action, e, exc_info=True) return build_result("OtherError")
def post(self, action): try: data = request.get_json() if action == "login": return TerminalController().user_login(data) elif action == 'logout': return TerminalController().user_logout(data) elif action == 'change_pwd': return TerminalController().user_password_change(data) elif action == 'person_desktops': return TerminalController().person_desktop_groups(data) elif action == 'instance': return TerminalController().person_instance(data) elif action == "close_instance": return TerminalController().person_instance_close(data) elif action == "group": return TerminalController().person_group() else: return abort_error(404) except Exception as e: logger.error("education desktop action %s failed:%d", action, e, exc_info=True) return build_result("OtherError")
def post(self, action): try: data = request.get_json() if action == "update": result = CourseScheduleController().update(data) elif action == "delete": result = CourseScheduleController().delete(data) elif action == "apply": result = CourseScheduleController().apply(data) elif action == "enable": result = CourseScheduleController().enable(data) elif action == "disable": result = CourseScheduleController().disable(data) else: return abort_error(404) if result and isinstance(result, dict): return jsonify(result) else: return build_result("ReturnError") except Exception as e: logger.exception("course_schedule action %s failed:%s", action, e) return build_result("OtherError")
def post(self, action): try: data = request.get_json() if action == "create": return RemoteStorageController().create_remote_storage(data) elif action == "delete": remote_storage_uuid = data.get("uuid", "") return RemoteStorageController().delete_remote_storage( remote_storage_uuid) elif action == 'allocate': remote_storage_uuid = data.get("remote_storage_uuid", "") resource_pool_uuid = data.get("resource_pool_uuid", "") return RemoteStorageController().allocate_remote_storage( remote_storage_uuid, resource_pool_uuid) elif action == 'reclaim': remote_storage_uuid = data.get("remote_storage_uuid", "") return RemoteStorageController().reclaim_remote_storage( remote_storage_uuid) elif action == 'show_mount': ip_addr = data.get("ip_addr", "") return RemoteStorageController().show_mount(ip_addr) else: return abort_error(404) except Exception as e: logger.exception("remote storage action %s failed:%s", action, e) return build_result("OtherError")
def post(self, action): try: data = request.get_json() logger.debug(data) if action == "export_resources": return self.controller.export_resources(data) elif action == "terminal_hardware": return self.controller.terminal_hardware(data) else: return abort_error(404) except Exception as e: logger.error("monitor terminal action %s failed:%s", action, e, exc_info=True) return build_result("OtherError")
def post(self, action): try: data = request.get_json() if action == "set_system_time": result = StrategyManager().set_system_time(data) else: return abort_error(404) if result and isinstance(result, dict): return jsonify(result) else: return build_result("ReturnError") except Exception as e: logger.exception("set system time failed:%s", e) return build_result("OtherError")
def post(self, action): try: data = request.get_json() if action == "create": result = LogSetupManager().create_record(data) elif action == "update": result = LogSetupManager().update_record(data) else: return abort_error(404) if result and isinstance(result, dict): return jsonify(result) else: return build_result("ReturnError") except Exception as e: logger.exception("warn setup action %s failed:%s", action, e) return build_result("OtherError")
def post(self, action): try: data = request.get_json() logger.info("post data: {}".format(data)) if action == "create": return VoiTerminalController().create_share_disk(data) elif action == "update": return VoiTerminalController().update_share_disk(data) else: return abort_error(404) except Exception as e: logger.error("personal desktop action %s failed:%s", action, e, exc_info=True) return build_result("OtherError")
def post(self, action): try: data = request.get_json() if action == "create": """ { "name": "group1", "group_type": 1, "desc": "this is group1", "network_uuid": "570ddad8-27b5-11ea-a53d-562668d3ccea", "subnet_uuid": "5712bcb6-27b5-11ea-8c45-562668d3ccea", "start_ip": "", "end_ip": "" } """ result = GroupController().create_group(data) elif action == "delete": group_uuid = data.get("uuid", "") result = GroupController().delete_group(group_uuid) elif action == "update": """ { "uuid": "e4a53850-26e9-11ea-a72d-562668d3ccea", "value": { "name": "group2", "desc": "", "network_uuid": "", "subnet_uuid": "", "start_ip": "", "end_ip": "" } } """ result = GroupController().update_group(data) else: return abort_error(404) if result and isinstance(result, dict): return jsonify(result) else: return build_result("ReturnError") except Exception as e: logger.exception("group action %s failed:%s", action, e) return build_result("OtherError")
def post(self, action): try: data = request.get_json() if action == "list": return TerminalController().terminal_instance_match(data) elif action == "close": return TerminalController().terminal_instance_close(data) elif action == "group": return TerminalController().terminal_group_list(data) else: return abort_error(404) except Exception as e: logger.error("personal desktop action %s failed:%s", action, e, exc_info=True) return build_result("OtherError")
def post(self, action): try: data = request.get_json() if action == "edu_desktops": return TerminalController().edu_desktop_groups(data) elif action == "instance": return TerminalController().education_instance(data) elif action == "close_instance": return TerminalController().close_education_instance(data) elif action == "group": return TerminalController().education_group(data) else: return abort_error(404) except Exception as e: logger.error("personal desktop action %s failed:%s", action, e, exc_info=True) return build_result("OtherError")
def post(self, action): try: data = request.get_json() ret = {} logger.debug(data) if action == "get_history_perf": """ { "node_uuid": "xxxxxxxxxxxxxxxxxxxxxxxx", "statis_hours": 1, "step_minutes": 0.5 } """ result = self.controller.get_history_perf(data) if result: return result else: return abort_error(404) return build_result("Success", ret) except Exception as e: logger.error("monitor node action %s failed:%s", action, e, exc_info=True) return build_result("OtherError")
def post(self, action): try: data = request.get_json() logger.info("post request, data:%s", data) if action == "list": """ 模板磁盘列表 """ result = VoiTemplateController().get_template_disk_list(data) elif action == "sync": result = VoiTemplateController().sync_template_disk_info(data) elif action == "init": result = VoiTemplateController().init_template_disk_info(data) elif action == "send": result = VoiTemplateController().send_template_disk_info(data) elif action == "single_send": result = VoiTemplateController( ).send_template_disk_info_single(data) elif action == "desktop": result = VoiTemplateController().get_info_by_system_disk(data) elif action == "upload": result = VoiTemplateController().upload_template_diff_disk( data) elif action == "save_torrent": result = VoiTemplateController().save_torrent_file(data) elif action == "download": result = VoiTemplateController().download_template_diff_disk( data) else: return abort_error(404) if result and isinstance(result, dict): return jsonify(result) else: return build_result("ReturnError") except Exception as e: logger.error("voi template action %s failed:%s", action, e, exc_info=True) return build_result("OtherError")
def post(self, action): try: data = request.get_json() logger.debug("action: {}, data: {}".format(action, data)) if action == "get_top_data": statis_period = data.get("statis_period", None) if statis_period: result = IndexController().get_top_data(statis_period) else: result = dict() elif action == "get_voi_data": result = IndexController().get_voi_data(data) else: result = abort_error(404) if result and isinstance(result, dict): return jsonify(result) else: return build_result("ReturnError") except Exception as e: logger.error("index action %s failed:%s", action, e) logger.error(''.join(traceback.format_exc())) return build_result("OtherError")
def post(self, action): try: data = request.get_json() if action == "backup": """ 数据库备份 """ db_user = current_app.config.get("DATABASE_USER", "") db_password = current_app.config.get("DATABASE_PASSWORD", "") db_name = current_app.config.get("DATABASE_NAME", "") result = DatabaseController().database_back( db_user, db_password, db_name) elif action == "delete": result = DatabaseController().delete_backup(data) # elif action == "download": # result = DatabaseController().download_backup(data) else: return abort_error(404) if result and isinstance(result, dict): return jsonify(result) else: return build_result("ReturnError") except Exception as e: logger.exception("database back action %s failed:%d", action, e) return build_result("OtherError")
def post(self, action): try: data = request.get_json() if action == "upload": """ { "pool_uuid": "d1c76db6-380a-11ea-a26e-000c2902e179", "image_id": "d2699e42-380a-11ea-a26e-000c2902e179", "image_path": "/opt/slow/instances/_base/d2699e42-380a-11ea-a26e-000c2902e179", "md5_sum": "" } """ if not data: return build_result("ParamError") return ResourcePoolController().upload_images(data) elif action == "resync": """ { "ipaddr": "172.16.1.11", "image_id": "", "image_path": "", "md5_sum": "" } """ return ResourcePoolController().retransmit_image(data) elif action == "publish": return ResourcePoolController().publish_images(data) elif action == "delete": # 删除基础镜像 return ResourcePoolController().delete_images(data) return abort_error(404) except Exception as e: logger.exception("resource pool image action %s failed:%s", action, e) return build_result("OtherError")
def post(self, action): try: data = request.get_json() logger.debug("post request, data:%s", data) if action == "create": """ { "name": "template1", "desc": "this is template1", "os_type": "windows_7_x64", "classify": 1, "network_uuid": "9c87ff12-5213-11ea-9d93-000c295dd729", "subnet_uuid": "9c87ff12-5213-11ea-9d93-000c295dd728", "bind_ip": "", "vcpu": 2, "ram": 2, "groups": [ "9c87ff12-5213-11ea-9d93-000c295dd729" ], "system_disk": { "image_id": "4315aa82-3b76-11ea-930d-000c295dd728", "size": 50 }, "data_disks": [ { "inx": 0, "size": 50 } ] } """ result = VoiTemplateController().create_template(data) elif action == "start_upload": """ { "pool_name": "", "name": "template1", "desc": "this is template1", "os_type": "windows_7_x64", "classify": 1, "system_disk": { "size": 100, "real_size": 8.5 }, "data_disks":[ { "size": 100, "real_size": 8.5 }, ... ] } """ result = VoiTemplateController().upload_start(data) elif action == "upload_end": """ { "uuid": "", "status": true, "progress": 10, "os_type": "windows_7_x64" } """ result = VoiTemplateController().upload_end(data) elif action == "cancel_upload": result = VoiTemplateController().upload_cancel(data) elif action == "start": template_uuid = data.get("uuid", "") result = VoiTemplateController().start_template(template_uuid) elif action == "stop": template_uuid = data.get("uuid", "") result = VoiTemplateController().stop_template(template_uuid) elif action == "hard_stop": template_uuid = data.get("uuid", "") result = VoiTemplateController().stop_template(template_uuid, hard=True) elif action == "reboot": template_uuid = data.get("uuid", "") result = VoiTemplateController().reboot_template(template_uuid) elif action == "hard_reboot": """硬重启就是直接断电然后开机""" template_uuid = data.get("uuid", "") result = VoiTemplateController().hard_reboot_template( template_uuid) elif action == "reset": template_uuid = data.get("uuid", "") result = VoiTemplateController().reset_template(template_uuid) elif action == "delete": template_uuid = data.get("uuid", "") result = VoiTemplateController().delete_template(template_uuid) elif action == "save": """ 在线编辑后进行模板更新操作 """ template_uuid = data.get("uuid", "") desc = data.get('desc', "") is_upload = data.get("is_upload", False) # 是否为终端上传 upload_diff_info = data.get("upload_diff_info", None) # 终端上传差分 result = VoiTemplateController().upgrade_template( template_uuid, desc, is_upload, upload_diff_info) elif action == "iso_save": template_uuid = data.get("uuid", "") result = VoiTemplateController().save_iso_template( template_uuid) elif action == "rollback": result = VoiTemplateController().rollback_template(data) elif action == "update": """ { "uuid": "655a1b9c-592a-11ea-b491-000c295dd728", "name": "", "value": { "name": "template", "desc": "", "network_uuid": "", "subnet_uuid": "", "bind_ip": "", "vcpu": 2, "ram": 2, "groups": [ "9c87ff12-5213-11ea-9d93-000c295dd729" ], "devices": [ { "uuid": "c26927dc-6dad-11ea-93c8-000c29e84b9c", "type": "system", "device_name": "vda", "boot_index": 0, "size": 50 }, ... ] } } """ result = VoiTemplateController().update_template(data) elif action == "copy": """ { "template_uuid": "e1d75ab0-3353-11ea-9aca-000c295dd728", "name": "win7_template_copy", "desc": "xxxxx", "owner_id": "xxxx", "groups": [], "network_uuid": "570ddad8-27b5-11ea-a53d-562668d3ccea", "subnet_uuid": "5712bcb6-27b5-11ea-8c45-562668d3ccea", "bind_ip": "10.0.0.3" } """ result = VoiTemplateController().copy_template(data) elif action == "download": template_uuid = data.get("uuid", "") result = VoiTemplateController().download_template( template_uuid) elif action == "attach_source": """ 加载ISO到模板中 { "uuid": "1d07aaa0-2b92-11ea-a62d-000c29b3ddb9", "name": "template1" "iso_uuid": "" } """ result = VoiTemplateController().attach_source(data) elif action == "detach_source": """ 加载ISO到模板中 { "uuid": "1d07aaa0-2b92-11ea-a62d-000c29b3ddb9", "name": "template1" } """ result = VoiTemplateController().detach_source(data) elif action == "send_key": """ 发送 Ctrl+Alt+Del """ result = VoiTemplateController().send_key(data) elif action == "edit": """ 编辑模板 1、如果模板处于关机状态,要开机 2、将novnc URL返回 { "uuid": "1d07aaa0-2b92-11ea-a62d-000c29b3ddb9", "name": "template1" } """ template_uuid = data.get("uuid", "") result = VoiTemplateController().edit_template(template_uuid) elif action == "console": """ { "uuid": "", "name": "" } """ result = VoiTemplateController().get_console(data) elif action == "check_upload_state": """ { "desktop_group_uuid": "123423" } """ result = VoiTemplateController().check_upload_state(data) else: return abort_error(404) if result and isinstance(result, dict): return jsonify(result) else: return build_result("ReturnError") except Exception as e: logger.error("voi template action %s failed:%s", action, e, exc_info=True) return build_result("OtherError")
def post(self, action): try: data = request.get_json() if action == "create": """ { "group_uuid": "570ddad8-27b5-11ea-a53d-562668d3ccea" "user_name": "user1", "passwd": "password", "name": "john", "phone": "13144556677", "email": "*****@*****.**", "enabled": 1 } """ result = GroupUserController().create_user(data) elif action == "multi_create": """ { "group_uuid": "570ddad8-27b5-11ea-a53d-562668d3ccea" "prefix": "user1", "postfix": 2, "postfix_start": 3, "user_num": 10, "passwd": "12345", "enabled": 1 } """ result = GroupUserController().multi_create_user(data) elif action == "delete": uuid = data.get("uuid", []) result = GroupUserController().delete_user(uuid) elif action == "enable": uuid = data.get("uuid", []) result = GroupUserController().enable_user(uuid) elif action == "disable": uuid = data.get("uuid", []) result = GroupUserController().disable_user(uuid) elif action == "reset_passwd": uuid = data.get("uuid", []) result = GroupUserController().reset_passwd(uuid) elif action == "export": result = GroupUserController().export_user(data) elif action == "import": result = GroupUserController().import_user(data) elif action == "move": """ { "group_uuid": "", "users": [ "", ... ] } """ result = GroupUserController().move_user(data) elif action == "update": """ { "uuid": "e4a53850-26e9-11ea-a72d-562668d3ccea", "value": { "group_uuid": "570ddad8-27b5-11ea-a53d-562668d3ccea" "user_name": "user1", "passwd": "password", "name": "john", "phone": "13144556677", "email": [email protected]", "enabled": 1 } } """ result = GroupUserController().update_user(data) else: result = abort_error(404) if result and isinstance(result, dict): return jsonify(result) else: return build_result("ReturnError") except Exception as e: logger.exception("group user action %s failed:%s", action, e) return build_result("OtherError")
def post(self, action): try: data = request.get_json() if action == "create": """ { "name": "win7_test", "desc": "xxxxx", "owner_id": "xxxx", "os_type": "win7", "classify": 1, # 1 教学模板 2 个人模板 "pool_uuid": "f567aa50-26ee-11ea-9b67-562668d3ccea", "network_uuid": "570ddad8-27b5-11ea-a53d-562668d3ccea", "subnet_uuid": "5712bcb6-27b5-11ea-8c45-562668d3ccea", "bind_ip": "10.0.0.3", "vcpu": 3, "ram": 4, "system_disk": { "image_id": "dfcd91e8-30ed-11ea-9764-000c2902e179", "size": 50 } "data_disks": [ { "inx": 0, "size": 50 } ] } """ result = TemplateController().create_template(data) elif action == 'complete_install': template_uuid = data.get("uuid", "") result = TemplateController().system_install_complete( template_uuid) elif action == "start": template_uuid = data.get("uuid", "") result = TemplateController().start_template(template_uuid) elif action == "stop": template_uuid = data.get("uuid", "") result = TemplateController().stop_template(template_uuid) elif action == "hard_stop": template_uuid = data.get("uuid", "") result = TemplateController().stop_template(template_uuid, hard=True) elif action == "reboot": template_uuid = data.get("uuid", "") result = TemplateController().reboot_template(template_uuid) elif action == "hard_reboot": """硬重启就是直接断电然后开机""" template_uuid = data.get("uuid", "") result = TemplateController().hard_reboot_template( template_uuid) elif action == "reset": template_uuid = data.get("uuid", "") result = TemplateController().reset_template(template_uuid) elif action == "delete": template_uuid = data.get("uuid", "") result = TemplateController().delete_template(template_uuid) elif action == "save": """ 在线编辑后进行模板更新操作 """ template_uuid = data.get("uuid", "") run_date = data.get('run_date', None) result = TemplateController().upgrade_template( template_uuid, run_date) elif action == "update": """ { "uuid": "655a1b9c-592a-11ea-b491-000c295dd728", "value": { "name": "template", "desc": "", "network_uuid": "", "subnet_uuid": "", "bind_ip": "", "ram": 2, "vcpu": 2, "devices": [ { "uuid": "c26927dc-6dad-11ea-93c8-000c29e84b9c", "type": "system", "device_name": "vda", "boot_index": 0, "size": 50 }, ... ] } } """ result = TemplateController().update_template(data) elif action == "copy": """ 从已有模板复制一个新模板,底层就是复制模板的系统盘和数据盘,然后新建一个模板虚拟机 { "template_uuid": "e1d75ab0-3353-11ea-9aca-000c295dd728", "name": "win7_template_copy", "desc": "xxxxx", "owner_id": "xxxx", "pool_uuid": "f567aa50-26ee-11ea-9b67-562668d3ccea", "network_uuid": "570ddad8-27b5-11ea-a53d-562668d3ccea", "subnet_uuid": "5712bcb6-27b5-11ea-8c45-562668d3ccea", "bind_ip": "10.0.0.3" } """ result = TemplateController().copy_template(data) elif action == "download": template_uuid = data.get("uuid", "") result = TemplateController().download_template(template_uuid) elif action == "attach_source": """ 加载ISO到模板中 { "uuid": "1d07aaa0-2b92-11ea-a62d-000c29b3ddb9", "name": "template1" "iso_uuid": "" } """ result = TemplateController().attach_source(data) elif action == "detach_source": """ 加载ISO到模板中 { "uuid": "1d07aaa0-2b92-11ea-a62d-000c29b3ddb9", "name": "template1" } """ result = TemplateController().detach_source(data) elif action == "send_key": """ 发送 Ctrl+Alt+Del """ result = TemplateController().send_key(data) elif action == "edit": """ 编辑模板 1、如果模板处于关机状态,要开机 2、将novnc URL返回 { "uuid": "1d07aaa0-2b92-11ea-a62d-000c29b3ddb9", "name": "template1" } """ template_uuid = data.get("uuid", "") result = TemplateController().edit_template(template_uuid) elif action == "resync": """ 模板镜像重传 { "ipaddr": "172.16.1.11", "image_id": "", "path": "", "role": 1, "version": 1 } """ result = TemplateController().retransmit(data) elif action == "check_ip": result = TemplateController().check_ip(data) else: return abort_error(404) if result and isinstance(result, dict): return jsonify(result) else: return build_result("ReturnError") except Exception as e: logger.exception("template action %s failed:%s", action, e) return build_result("OtherError")
def post(self, action): try: data = request.get_json() logger.debug("post request, data:%s", data) if action == "create": """ { "name": "group1", "group_type": 1, "desc": "this is group1", "start_ip": "", "end_ip": "", "dhcp": { "start_ip": "172.16.1.40", "end_ip": "172.16.1.54", "exclude": [ {"start": "172.16.1.24", "end": "172.16.1.24"}, {"start": "172.16.1.24", "end": "172.16.1.24"} ] } } """ result = VoiGroupController().create_group(data) elif action == "delete": group_uuid = data.get("uuid", "") result = VoiGroupController().delete_group(group_uuid) elif action == "update": """ { "uuid": "e4a53850-26e9-11ea-a72d-562668d3ccea", "value": { "name": "group2", "desc": "", "start_ip": "", "end_ip": "", "dhcp": { "start_ip": "172.16.1.40", "end_ip": "172.16.1.54", "netmask": "255.255.255.0", "gateway": "172.16.1.254", "exclude": [ {"start": "172.16.1.24", "end": "172.16.1.24"}, {"start": "172.16.1.24", "end": "172.16.1.24"} ] } } } """ result = VoiGroupController().update_group(data) else: return abort_error(404) if result and isinstance(result, dict): return jsonify(result) else: return build_result("ReturnError") except Exception as e: logger.exception("voi group action %s failed:%s", action, e) return build_result("OtherError")
def post(self, action): try: data = request.get_json() if action == "create": """ { "desktop_uuid": "84f0e463-2dce-11ea-a71f-562668d3ccea", "desktop_type": 1, "instance_num": 10, "create_info": { # 发布在哪些节点以及每个节点多少个桌面 "172.16.1.48": 5, "172.16.1.49": 5 } } """ result = InstanceController().add_instances(data) elif action == "delete": """ { "desktop_uuid": "84f0e463-2dce-11ea-a71f-562668d3ccea", "desktop_type": 2, "instances": [ { "uuid": "228d4d69-73b8-4694-836b-b2eeeec64c46", "name": "pc01" }, { "uuid": "e7269662-0fd8-4e1f-b933-e614016294c2", "name": "pc02" }, ... ] } """ result = InstanceController().delete_instances(data) elif action == "start": """ { "desktop_uuid": "4c41b1dc-35d6-11ea-bc23-000c295dd728", "desktop_type": 2, "instances": [ { "uuid": "228d4d69-73b8-4694-836b-b2eeeec64c46", "name": "pc01" }, { "uuid": "e7269662-0fd8-4e1f-b933-e614016294c2", "name": "pc02" }, ... ] } """ result = InstanceController().start_instances(data) elif action == "stop": """ { "desktop_uuid": "4c41b1dc-35d6-11ea-bc23-000c295dd728", "desktop_type": 1, "instances": [ { "uuid": "228d4d69-73b8-4694-836b-b2eeeec64c46", "name": "pc01" }, { "uuid": "e7269662-0fd8-4e1f-b933-e614016294c2", "name": "pc02" }, ... ] } """ result = InstanceController().stop_instances(data) elif action == "hard_stop": """ { "desktop_uuid": "4c41b1dc-35d6-11ea-bc23-000c295dd728", "desktop_type": 1, "instances": [ { "uuid": "228d4d69-73b8-4694-836b-b2eeeec64c46", "name": "pc01" }, { "uuid": "e7269662-0fd8-4e1f-b933-e614016294c2", "name": "pc02" }, ... ] } """ result = InstanceController().stop_instances(data, hard=True) elif action == "reboot": """ { "desktop_uuid": "4c41b1dc-35d6-11ea-bc23-000c295dd728", "desktop_type": 2, "instances": [ { "uuid": "228d4d69-73b8-4694-836b-b2eeeec64c46", "name": "pc01" }, { "uuid": "e7269662-0fd8-4e1f-b933-e614016294c2", "name": "pc02" }, ... ] } """ result = InstanceController().reboot_instances(data) elif action == "add_group": """ 随机桌面添加用户组 { "desktop_uuid": "ea2bbe72-593c-11ea-9631-000c295dd728", "desktop_name": "desktop1", "groups": [ { "group_uuid": "", "group_name": "" } ] } """ result = InstanceController().add_group(data) elif action == "delete_group": """ 随机桌面删除用户组绑定 { # "desktop_uuid": "ea2bbe72-593c-11ea-9631-000c295dd728", # "desktop_name": "desktop1", "groups": [ { "uuid": "", "group_name": "" } ] } """ result = InstanceController().delete_group(data) elif action == "change_bind": """ 静态桌面的解除绑定 { "instance_uuid": "7380f97e-74d3-11ea-b50b-000c29e84b9c", "instance_name": "PC1", "user_uuid": "", "user_name": "sss", } """ result = InstanceController().change_bind(data) # elif action == "unbind_user": # """ # 静态桌面的解除绑定 # { # "uuid": "7380f97e-74d3-11ea-b50b-000c29e84b9c", # "user_name": "sss", # "instance_name": "PC1" # } # """ # return InstanceController().unbind_user(data) # # elif action == "bind_user": # """ # 静态桌面的绑定 # { # "desktop_uuid": "7380f97e-74d3-11ea-b50b-000c29e84b9c", # "user_uuid": "", # "user_name": "sss", # "instance_uuid": "", # "instance_name": "PC1" # } # """ # return InstanceController().bind_user(data) elif action == "change_group": """ 静态桌面更换绑定的用户组 { "desktop_uuid": "", "desktop_name": "", "group_uuid": "", "group_name": "" } """ result = InstanceController().change_group(data) elif action == "console": """ { "uuid": "", "name": "" } """ result = InstanceController().get_console(data) else: return abort_error(404) if result and isinstance(result, dict): return jsonify(result) else: return build_result("ReturnError") except Exception as e: logger.exception("instance action %s failed:%s", action, e) return build_result("OtherError")
def post(self, action): try: data = request.get_json() if action == "create": """ { "name": "desktop1", "owner_id: 1, "group_uuid": "1c7dff98-2dda-11ea-b565-562668d3ccea", # 桌面所属分组 "template_uuid": "84f0e463-2dce-11ea-a71f-562668d3ccea", "pool_uuid": "e865aa50-26ee-11ea-9b67-562668d3ccea", # 所属资源池 "network_uuid": "570ddad8-27b5-11ea-a53d-562668d3ccea", "subnet_uuid": "5712bcb6-27b5-11ea-8c45-562668d3ccea", "vcpu": 4, "ram": 4, "sys_restore": 1, # 系统盘是否还原 "data_restore": 1, # 数据盘是否还原 "instance_num": 10, "prefix": "pc", # 单个桌面名称的前缀 "postfix": 3, # 单个桌面名称的后缀数字个数 "postfix_start": 2, "create_info": { # 发布在哪些节点以及每个节点多少个桌面 "172.16.1.49": 5, "172.16.1.50": 5 } } """ result = DesktopController().create_desktop(data) elif action == 'active': desktop_uuid = data.get("uuid", "") result = DesktopController().active_desktop(desktop_uuid) elif action == 'inactive': desktop_uuid = data.get("uuid", "") result = DesktopController().inactive_desktop(desktop_uuid) elif action == "start": desktop_uuid = data.get("uuid", "") result = DesktopController().start_desktop(desktop_uuid) elif action == "stop": desktop_uuid = data.get("uuid", "") result = DesktopController().stop_desktop(desktop_uuid) elif action == "hard_stop": desktop_uuid = data.get("uuid", "") result = DesktopController().stop_desktop(desktop_uuid, hard=True) elif action == "stop_for_node": desktop_uuid = data.get("uuid", "") node_uuid = data.get("node_uuid", "") result = DesktopController().stop_desktop_for_node(desktop_uuid, node_uuid) elif action == "reboot": desktop_uuid = data.get("uuid", "") result = DesktopController().reboot_desktop(desktop_uuid) elif action == "delete": desktop_uuid = data.get("uuid", "") result = DesktopController().delete_desktop(desktop_uuid) elif action == "update": result = DesktopController().update_desktop(data) # elif action == "list": # return EducationDesktopController().get_desktop_list() # # elif action == "instance": # desktop_uuid = data.get("uuid", "") # return EducationDesktopController().get_instance_by_desktop(desktop_uuid) # elif action == "reboot": # desktop_uuid = data.get("desktop_uuid", "") # return DesktopController().reboot_desktop(desktop_uuid) else: return abort_error(404) if result and isinstance(result, dict): return jsonify(result) else: return build_result("ReturnError") except Exception as e: logger.exception("education desktop action %s failed:%d", action, e) return build_result("OtherError")
def post(self, action): try: data = request.get_json() if action == "create": """ { "name": "desktop1", "owner_id": 1, "template_uuid": "84f0e463-2dce-11ea-a71f-562668d3ccea", "pool_uuid": "e865aa50-26ee-11ea-9b67-562668d3ccea", # 所属资源池 "network_uuid": "570ddad8-27b5-11ea-a53d-562668d3ccea", "subnet_uuid": "5712bcb6-27b5-11ea-8c45-562668d3ccea", "allocate_type": 2, # 系统分配-1 固定分配-2 "allocate_start": "172.16.1.20", "vcpu": 4, "ram": 4, "sys_restore": 1, # 系统盘是否还原 "data_restore": 1, # 数据盘是否还原 "desktop_type": 1, # 1-随机桌面 2-静态桌面 "groups": [], # 随机桌面时,绑定的分组 "group_uuid": "", # 静态桌面时,绑定的哪个分组 "allocates": [ # 静态桌面时,桌面与用户对应关系 { "user_uuid": "", "name": "" }, ... ], "instance_num": 10, "prefix": "pc", # 单个桌面名称的前缀 "postfix": 3, # 单个桌面名称的后缀数字个数 "postfix_start": 2, "create_info": { # 发布在哪些节点以及每个节点多少个桌面 "172.16.1.48": 5, "172.16.1.49": 5 } } """ result = PersonalDesktopController().create_personal_desktop(data) elif action == "start": desktop_uuid = data.get("uuid", "") result = PersonalDesktopController().start_personl_desktop(desktop_uuid) elif action == "stop": desktop_uuid = data.get("uuid", "") result = PersonalDesktopController().stop_personal_desktop(desktop_uuid) elif action == "hard_stop": desktop_uuid = data.get("uuid", "") result = PersonalDesktopController().stop_personal_desktop(desktop_uuid, hard=True) elif action == "stop_for_node": desktop_uuid = data.get("uuid", "") node_uuid = data.get("node_uuid", "") result = PersonalDesktopController().stop_personal_desktop_for_node(desktop_uuid, node_uuid) elif action == "reboot": desktop_uuid = data.get("uuid", "") result = PersonalDesktopController().reboot_personal_desktop(desktop_uuid) elif action == "delete": desktop_uuid = data.get("uuid", "") result = PersonalDesktopController().delete_personal_desktop(desktop_uuid) elif action == "update": result = PersonalDesktopController().update_personal_desktop(data) elif action == "enter_maintenance": desktop_uuid = data.get("uuid", "") result = PersonalDesktopController().enter_maintenance(desktop_uuid) elif action == "exit_maintenance": desktop_uuid = data.get("uuid", "") result = PersonalDesktopController().exit_maintenance(desktop_uuid) else: return abort_error(404) if result and isinstance(result, dict): return jsonify(result) else: return build_result("ReturnError") except Exception as e: logger.exception("personal desktop action %s failed:%s", action, e) return build_result("OtherError")
def post(self, action): """ { "count": 10, "node_uuid": "xxxxxxxxxx", "node_name": "name", "status": 0, "cron": { "type": "day", # week, month "values": [1,2,3,4,5,6,7] "hour": 1, "minute": 10 }, "data": ["xxxxxxxxxxxxxx", "xxxxxxxxxxx", "xxxxxxxxxxxxxx"] } """ try: data = request.get_json() if action == "database": result = CrontabController().database_back_crontab(data) elif action == "instance": result = CrontabController().add_instance_crontab(data) elif action == "node": result = CrontabController().add_node_crontab(data) elif action == "terminal": result = CrontabController().add_terminal_crontab(data) elif action == "log": result = CrontabController().add_log_crontab(data) elif action == "log_update": result = CrontabController().update_log_crontab(data) elif action == "update": """ { "uuid": "", "name": "", "value": { "name": "", "desc": "", "status": 1, "cron": [ { "uuid": "", "cmd": "off", "type": "week", "values": [1,2], "hour": 14, "minute": 12 }, ... ] "data" : [ { "desktop_uuid": "", "instances": { "uuid": "", "name": "" } } ] } } """ result = CrontabController().update_crontab_task(data) elif action == "delete": task_uuid = data.get('uuid', '') result = CrontabController().delete_crontab_task(task_uuid) else: return abort_error(404) if result and isinstance(result, dict): return jsonify(result) else: return build_result("ReturnError") except Exception as e: logger.exception("crontab action %s failed:%s", action, e) return build_result("OtherError")
def post(self, action): try: data = request.get_json() current_app.logger.info("post data:%s", data) if action == "create": """ { "name": "default", "desc": "this is default pool", "default": 1 } """ result = self.pool.create_resource_pool(data) if result: return result elif action == "list": result = self.pool.get_resource_pool_list() if result: return result elif action == "delete": pool_uuid = data.get("uuid", "") result = self.pool.delete_resource_pool(pool_uuid) if result: return result elif action == "update": """ { "uuid": "e4a53850-26e9-11ea-a72d-562668d3ccea", "value": { "name": "pool1", "desc": "this is pool1" } } """ result = self.pool.update_resource_pool(data) if result: return result elif action == "storages": """ { "resource_pool_uuid": 4cd7b0d0-3e5f-471c-b461-a7508ac99373, "storages": { "/opt/fast": "1,2" "/opt/slow": "3,4" } } """ resource_pool_uuid = data.get('resource_pool_uuid') result = self.pool.update_storages(resource_pool_uuid, data['storages']) if result: return result elif action == "node": # get node with resource pool pool_uuid = data.get("uuid", "") result = self.pool.get_pool_nodes(pool_uuid) if result: return result return abort_error(404) except Exception as e: logger.exception("resource pool action %s failed:%s", action, e) return build_result("OtherError")
def post(self, action): try: data = request.get_json() logger.debug("post request, data:%s", data) if action == "create": """ { "name": "desktop2", "owner_id": "", "group_uuid": "d02cd368-5396-11ea-ad80-000c295dd728", "template_uuid": "6f1006c0-56d1-11ea-aec0-000c295dd728", "sys_restore": 1, "data_restore": 1, "prefix": "pc", "show_info": 1, "diff_mode": 0, "sys_reserve_size": 0, "data_reserve_size": 10, "auto_update": 1, "use_bottom_ip": True, "ip_detail": { "auto": False, "start_ip": "192.168.12.12", "netmask": "255.255.255.0", "gateway": "192.168.12.254", "dns_master": "", "dns_slave": "" } } """ result = VoiDesktopController().create_voi_desktop(data) group_uuid = data.get("group_uuid", "") if result.get("code", -1) == 0: self.notify_terminal(None, group_uuid) elif action == 'active': desktop_uuid = data.get("uuid", "") result = VoiDesktopController().active_voi_desktop( desktop_uuid) if result.get("code", -1) == 0: self.notify_terminal(desktop_uuid) elif action == 'inactive': desktop_uuid = data.get("uuid", "") result = VoiDesktopController().inactive_voi_desktop( desktop_uuid) if result.get("code", -1) == 0: self.notify_terminal(desktop_uuid) elif action == 'default': desktop_uuid = data.get("uuid", "") result = VoiDesktopController().set_default_voi_desktop( desktop_uuid) if result.get("code", -1) == 0: self.notify_terminal(desktop_uuid) elif action == "delete": desktop_uuid = data.get("uuid", "") result = VoiDesktopController().delete_voi_desktop( desktop_uuid) if result.get("code", -1) == 0: self.notify_terminal(desktop_uuid) elif action == "update": desktop_uuid = data.get("uuid", "") result = VoiDesktopController().update_voi_desktop(data) if result.get("code", -1) == 0: self.notify_terminal(desktop_uuid) else: return abort_error(404) if result and isinstance(result, dict): return jsonify(result) else: return build_result("ReturnError") except Exception as e: logger.error("voi education desktop action %s failed:%d", action, e, exc_info=True) return build_result("OtherError")