예제 #1
0
    def get_and_save_migrate_status(self, user, restore_id):
        migrate_record = migrate_repo.get_by_restore_id(restore_id)
        if not migrate_record:
            return 404, "无此记录", None
        if migrate_record.status == "starting":

            data = region_api.get_apps_migrate_status(migrate_record.migrate_region, migrate_record.migrate_team,
                                                      migrate_record.backup_id, restore_id)

            bean = data["bean"]
            logger.debug('===========>{0}'.format(bean))
            status = bean["status"]
            service_change = bean["service_change"]
            logger.debug("service change : {0}".format(service_change))
            metadata = bean["metadata"]
            migrate_team = team_repo.get_tenant_by_tenant_name(migrate_record.migrate_team)
            if status == "success":
                with transaction.atomic():
                    try:
                        self.save_data(migrate_team, migrate_record.migrate_region, user, service_change, json.loads(metadata), migrate_record.group_id)
                    except Exception as e:
                        migrate_record.status = "failed"
                        migrate_record.save()
                        raise e
                    if migrate_record.migrate_type == "recover":
                        # 如果为恢复操作,将原有备份和迁移的记录的组信息修改
                        backup_record_repo.get_record_by_group_id(migrate_record.original_group_id).update(
                            group_id=migrate_record.group_id)
                        self.update_migrate_original_group_id(migrate_record.original_group_id, migrate_record.group_id)
            migrate_record.status = status
            migrate_record.save()

        return 200, "success", migrate_record
예제 #2
0
 def get_group_backup_status_by_group_id(self, tenant, region, group_id):
     backup_records = backup_record_repo.get_record_by_group_id(group_id)
     if not backup_records:
         return 404, "该组没有任何备份记录", None
     group_uuid = backup_records[0].group_uuid
     event_id_record_map = {record.event_id: record for record in backup_records}
     body = region_api.get_backup_status_by_group_id(region, tenant.tenant_name, group_uuid)
     res_list = body["list"]
     for data in res_list:
         backup_record = event_id_record_map.get(data["event_id"], None)
         if backup_record and backup_record.status == "starting":
             backup_record.status = data["status"]
             backup_record.source_dir = data["source_dir"]
             backup_record.backup_size = data["backup_size"]
             backup_record.save()
     backup_records = backup_record_repo.get_record_by_group_id(group_id)
     return 200, "success", backup_records
예제 #3
0
 def delete_group_no_service(self, group_id):
     if not group_id or group_id < 0:
         return 400, u"需要删除的组不合法", None
     backups = backup_record_repo.get_record_by_group_id(group_id)
     if backups:
         return 409, u"当前组有备份记录,暂无法删除", None
     # 删除组
     group_repo.delete_group_by_pk(group_id)
     return 200, u"删除成功", group_id
예제 #4
0
 def delete_group(self, group_id, default_group_id):
     if not group_id or group_id < 0:
         return 400, u"需要删除的应用不合法", None
     backups = backup_record_repo.get_record_by_group_id(group_id)
     if backups:
         return 409, u"当前应用有备份记录,暂无法删除", None
     # 删除应用
     group_repo.delete_group_by_pk(group_id)
     # 删除应用与应用的关系
     group_service_relation_repo.update_service_relation(group_id, default_group_id)
     return 200, u"删除成功", group_id
예제 #5
0
 def delete_group(self, group_id):
     if not group_id or group_id < 0:
         return 400, u"需要删除的组不合法", None
     backups = backup_record_repo.get_record_by_group_id(group_id)
     if backups:
         return 409, u"当前组有备份记录,暂无法删除", None
     # 删除组
     group_repo.delete_group_by_pk(group_id)
     # 删除应用与组的关系
     group_service_relation_repo.delete_relation_by_group_id(group_id)
     compose_repo.delete_group_compose_by_group_id(group_id)
     return 200, u"删除成功", group_id
예제 #6
0
 def update_backup_record_group_id(self, group_id, new_group_id):
     """修改Groupid"""
     backup_record_repo.get_record_by_group_id(group_id).update(group_id=new_group_id)
예제 #7
0
 def get_backup_group_uuid(self, group_id):
     backup_record = backup_record_repo.get_record_by_group_id(group_id)
     if backup_record:
         return backup_record[0].group_uuid
     return make_uuid()