Exemple #1
0
    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")
Exemple #3
0
 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")
Exemple #4
0
    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")
Exemple #5
0
    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")
Exemple #6
0
 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")
Exemple #7
0
 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")
Exemple #8
0
 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")
Exemple #10
0
    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")
Exemple #11
0
 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")
Exemple #12
0
 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")
Exemple #13
0
 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")
Exemple #14
0
    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")
Exemple #15
0
 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")
Exemple #16
0
 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")
Exemple #17
0
    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")
Exemple #18
0
    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")
Exemple #19
0
    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")
Exemple #20
0
    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")
Exemple #21
0
    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")
Exemple #22
0
    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")
Exemple #23
0
    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")
Exemple #24
0
    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")
Exemple #25
0
 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")
Exemple #26
0
    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")
Exemple #27
0
    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")