Exemplo n.º 1
0
    def get_export_status(self, enterprise_id, app, app_version):
        app_export_records = app_export_record_repo.get_enter_export_record_by_key_and_version(
            enterprise_id, app.app_id, app_version.version)
        rainbond_app_init_data = {
            "is_export_before": False,
        }
        docker_compose_init_data = {
            "is_export_before": False,
        }

        if app_export_records:
            for export_record in app_export_records:
                if not export_record.region_name:
                    continue
                region = region_services.get_enterprise_region_by_region_name(
                    enterprise_id, export_record.region_name)
                if not region:
                    continue
                if export_record.event_id and export_record.status == "exporting":
                    try:
                        res, body = region_api.get_app_export_status(
                            export_record.region_name, enterprise_id,
                            export_record.event_id)
                        result_bean = body["bean"]
                        if result_bean["status"] in ("failed", "success"):
                            export_record.status = result_bean["status"]
                        export_record.file_path = result_bean["tar_file_href"]
                        export_record.save()
                    except Exception as e:
                        logger.exception(e)

                if export_record.format == "rainbond-app":
                    rainbond_app_init_data.update({
                        "is_export_before":
                        True,
                        "status":
                        export_record.status,
                        "file_path":
                        self._wrapper_director_download_url(
                            export_record.region_name,
                            export_record.file_path.replace("/v2", ""))
                    })
                if export_record.format == "docker-compose":
                    docker_compose_init_data.update({
                        "is_export_before":
                        True,
                        "status":
                        export_record.status,
                        "file_path":
                        self._wrapper_director_download_url(
                            export_record.region_name,
                            export_record.file_path.replace("/v2", ""))
                    })

        result = {
            "rainbond_app": rainbond_app_init_data,
            "docker_compose": docker_compose_init_data
        }
        return result
Exemplo n.º 2
0
    def get_export_status(self, team, app):
        app_export_records = app_export_record_repo.get_enter_export_record_by_key_and_version(
            team.enterprise_id, app.group_key, app.version)
        rainbond_app_init_data = {
            "is_export_before": False,
        }
        docker_compose_init_data = {
            "is_export_before": False,
        }

        region = self.get_app_share_region(app)
        if region is None:
            return 404, '无法查找当前应用分享所在数据中心', None
        if app_export_records:
            for export_record in app_export_records:
                if export_record.event_id and export_record.status == "exporting":
                    try:
                        res, body = region_api.get_app_export_status(
                            region, team.tenant_name, export_record.event_id)
                        result_bean = body["bean"]
                        if result_bean["status"] in ("failed", "success"):
                            export_record.status = result_bean["status"]
                        export_record.file_path = result_bean["tar_file_href"]
                        export_record.save()
                    except Exception as e:
                        logger.exception(e)

                if export_record.format == "rainbond-app":
                    rainbond_app_init_data.update({
                        "is_export_before":
                        True,
                        "status":
                        export_record.status,
                        "file_path":
                        self._wrapper_director_download_url(
                            region, export_record.file_path.replace("/v2", ""))
                    })
                if export_record.format == "docker-compose":
                    docker_compose_init_data.update({
                        "is_export_before":
                        True,
                        "status":
                        export_record.status,
                        "file_path":
                        self._wrapper_director_download_url(
                            region, export_record.file_path.replace("/v2", ""))
                    })

        result = {
            "rainbond_app": rainbond_app_init_data,
            "docker_compose": docker_compose_init_data
        }
        return 200, "success", result
Exemplo n.º 3
0
    def get_export_record_status(self, enterprise_id, group_key, version):
        records = app_export_record_repo.get_enter_export_record_by_key_and_version(enterprise_id, group_key, version)
        # 有一个成功即成功,全部失败为失败,全部为导出中则显示导出中
        if not records:
            return "unexported"
        failed = True

        for record in records:
            if record.status == "success":
                return "success"
            if record.status != "failed":
                failed = False
        if failed:
            return "failed"
        else:
            return "exporting"