Exemple #1
0
    def start_import_apps(self,
                          scope,
                          event_id,
                          file_names,
                          team_name=None,
                          enterprise_id=None):
        import_record = app_import_record_repo.get_import_record_by_event_id(
            event_id)
        if not import_record:
            raise RecordNotFound("import_record not found")
        import_record.scope = scope
        if team_name:
            import_record.team_name = team_name

        service_image = app_store.get_app_hub_info(enterprise_id=enterprise_id)
        data = {
            "service_image": service_image,
            "event_id": event_id,
            "apps": file_names
        }
        if scope == "enterprise":
            region_api.import_app_2_enterprise(import_record.region,
                                               import_record.enterprise_id,
                                               data)
        else:
            res, body = region_api.import_app(import_record.region, team_name,
                                              data)
        import_record.status = "importing"
        import_record.save()
Exemple #2
0
    def get_and_update_import_status(self, tenant, region, event_id):
        """获取并更新导入状态"""
        import_record = app_import_record_repo.get_import_record_by_event_id(
            event_id)
        # 去数据中心请求导入状态
        res, body = region_api.get_app_import_status(region,
                                                     tenant.tenant_name,
                                                     event_id)
        status = body["bean"]["status"]
        if import_record.status != "success":
            if status == "success":
                logger.debug("app import success !")
                self.__save_import_info(tenant.tenant_name,
                                        import_record.scope,
                                        body["bean"]["metadata"])
                import_record.source_dir = body["bean"]["source_dir"]
                import_record.format = body["bean"]["format"]
                import_record.status = "success"
                import_record.save()

            else:
                import_record.status = status
                import_record.save()
        apps_status = self.__wrapp_app_import_status(body["bean"]["apps"])
        return import_record, apps_status
Exemple #3
0
    def delete_import_app_dir_by_event_id(self, event_id):
        try:
            import_record = app_import_record_repo.get_import_record_by_event_id(event_id)
            region_api.delete_enterprise_import(import_record.region, import_record.enterprise_id, event_id)
        except Exception as e:
            logger.exception(e)

        app_import_record_repo.delete_by_event_id(event_id)
Exemple #4
0
 def get_import_app_dir(self, event_id):
     """获取应用目录下的包"""
     import_record = app_import_record_repo.get_import_record_by_event_id(event_id)
     if not import_record:
         raise RecordNotFound("import_record not found")
     res, body = region_api.get_enterprise_import_file_dir(import_record.region, import_record.enterprise_id, event_id)
     app_tars = body["bean"]["apps"]
     return app_tars
Exemple #5
0
    def get_and_update_import_status(self, tenant, region, event_id):
        """获取并更新导入状态"""
        import_record = app_import_record_repo.get_import_record_by_event_id(
            event_id)
        if not import_record:
            raise RecordNotFound("import_record not found")
        # 去数据中心请求导入状态
        res, body = region_api.get_app_import_status(region,
                                                     tenant.tenant_name,
                                                     event_id)
        status = body["bean"]["status"]
        if import_record.status != "success":
            if status == "success":
                logger.debug("app import success !")
                self.__save_import_info(tenant, import_record.scope,
                                        body["bean"]["metadata"])
                import_record.source_dir = body["bean"]["source_dir"]
                import_record.format = body["bean"]["format"]
                import_record.status = "success"
                import_record.save()
                # 成功以后删除数据中心目录数据
                try:
                    region_api.delete_import_file_dir(region,
                                                      tenant.tenant_name,
                                                      event_id)
                except Exception as e:
                    logger.exception(e)
            else:
                import_record.status = status
                import_record.save()
        apps_status = self.__wrapp_app_import_status(body["bean"]["apps"])

        failed_num = 0
        success_num = 0
        for i in apps_status:
            if i.get("status") == "success":
                success_num += 1
                import_record.status = "partial_success"
                import_record.save()
            elif i.get("status") == "failed":
                failed_num += 1
        if success_num == len(apps_status):
            import_record.status = "success"
            import_record.save()
        elif failed_num == len(apps_status):
            import_record.status = "failed"
            import_record.save()
        if status == "uploading":
            import_record.status = status
            import_record.save()

        return import_record, apps_status
Exemple #6
0
    def start_import_apps(self, tenant, region, scope, event_id, file_names):
        import_record = app_import_record_repo.get_import_record_by_event_id(event_id)
        import_record.scope = scope

        service_slug = app_store.get_slug_connection_info(scope, tenant.tenant_name)
        service_image = app_store.get_image_connection_info(scope, tenant.tenant_name)
        data = {
            "service_slug": service_slug,
            "service_image": service_image,
            "event_id": event_id,
            "apps": file_names
        }
        logger.debug("params {0}".format(json.dumps(data)))
        res, body = region_api.import_app(region, tenant.tenant_name, data)
        logger.debug("response body {0}".format(body))
        import_record.status = "importing"
        import_record.save()