목적과 범위
부모 Epic: #987
VM/host/오퍼링·HA·migration/import·guest OS·CLVM·다중 ISO·스케줄/자동 확장 관련 변경을 통합한다. #983의 복제 및 NIC link/PXE 수정과 FTCTL/DR 계약을 보존한다.
기준과 선행 조건
완료 기준
검증
모듈 unit/API 계약, 같은 버전 DB 신규·014 업그레이드·실패 재시도, backend/UI/RAT 및 Actions RPM. 실물 KVM/Ceph·FTCTL·VMware 시험은 이 코드 통합 이슈의 선행 조건이 아니며 #1025에서 모든 코드 병합 후 수행한다.
공통 진행 규칙
- 해당 작업 코드의 원본 SHA는 Epic의
developer/history/ 추적표로 관리한다. 원본 SHA별 판정/PR/적용 SHA/검증 근거를 갱신한다.
- 체리픽·적응 수정은 원본 의도와 Europa 계약을 보존하며, patch-id/같은 제목/역적용 성공만으로 완료 처리하지 않는다.
- PR base는
ablecloud-team/ablestack-cloud:ablestack-europa이다. PR은 이 하위 이슈를 연결하고 부모 Epic을 자동 종료하지 않는다.
- 소스/Git/설치/로컬 검증은 Docker 내부에서 진행하며, 공식 산출물은 Actions 결과를 사용한다. 기존 DB/볼륨은 초기화하지 않는다.
- 구현·병합·검증이 완료되면 부모 Epic의 진행표와 추적표를 함께 갱신한다. 새로운 발견과 범위 변경 근거는 코멘트로 남긴다.
S1 확정 추적 자료 (2026-09-10)
- 초기 추적 기준 / 299개 inventory / 의존성
- 이 이슈의 직접 배정 원본 SHA: 28개.
workstream=S5A로 필터링한다. 관련 기능 변경은 related_workstreams와 의존성도 함께 확인한다.
- merge 해결 분석: merges.tsv. S2가 19개를 총괄하고 기능 소유 이슈가 공동 검증한다.
- 사용자 확정 DB 출발점:
014895d8f3; 신규 설치·기존 데이터 업그레이드·동일 버전 재실행을 검증한다.
- 위 링크는 S1 최초 Pending 스냅샷이다. 현재 최종 판정은 아래 S5A 완료 기록과 병합된 inventory를 기준으로 한다.
S4 완료 인수
S4 #992 구현 #1016와 증빙 #1017을 병합했다. 시작 가능한 Europa 기준은 2b4035e1fb03810ae572bb18fafabb74c22babc7이며, 사용자 지정 DB 출발점014895d8f3은 유지한다. 검증 보고 및 의존성 검토를 인수한다.
- 자원 예약은 List handles와 old/new tag·증감량을 사용한다. VM import/복원/배포 실패 정리와 GPU/KVDO/fast-clone/명시적 호스트 후보·UEFI/TPM 필터를 보존한다. 이전 CPU/RAM check 인터페이스를 다시 도입하지 않는다.
- Guest OS rule의 JsInterpreter 생성자 확장은 해당 원본과 함께 반영한다. 현재 Quota 코드는 기존 timeout 생성자를 사용해 없는 기능 의존성을 먼저 도입하지 않았다.
- 같은4.23 DB 변경에는 새 명명된 checkpoint를 추가한다. 이미 Complete인 europa-4.23-s4-v1의 SQL만 수정해서는 기존 설치에서 실행되지 않는다. view 변경도 새 단계에 포함하고 새 설치·전체014 복제·부분 실패·재시작을 검증한다.
- S4 최종 소스의 공식 Java12,611/UI348 및 실제 관리 서버/Quota/예약 시험은 통과했다. S5A 변경 후 관련 회귀와 실제 하이퍼바이저 시나리오를 추가 검증한다. 공유 merge의 남은 S5A side commit은 Pending으로 유지되어 있다.
코드 통합과 실물 테스트의 분리 (2026-09-11 사용자 확정)
S3~S7 기능 작업은 Apache 변경을 Europa 코드에 안전하게 통합하고 코드 검토·자동 테스트·CI를 통과한 뒤 병합하는 것을 완료 기준으로 한다. 실물 테스트는 모든 코드 병합이 끝난 최종 SHA에서 수행한다. 실물 환경 미제공을 이유로 기능 PR을 Draft로 유지하거나 기능 이슈를 미완료 처리하지 않는다.
배치별 실물 시나리오는 #1025에 누적하고 S8 #999에서 최종 실행·판정한다. 미실행을 PASS로 기록하지 않는다. 이는 기능 코드 병합과 최종 RC/릴리즈 승인을 분리하는 결정이며, 제품 범위나 데이터 보존 요구를 삭제하는 것이 아니다.
구현 PR: #1024 병합 완료. 최종 자동 검증과 동기화 결과는 아래 완료 기록을 참조한다.
코드 검증 인수
PR #1024의 원본33개 판정과 자동 검증 기록을 확정했다. 검증 보고와 아래 완료 기록에 최종 CI 및 병합·동기화 결과를 연결했다. 실물 시험은 #1025에 이관했다.
S5A 코드 통합 완료 (2026-09-11)
PR #1024를 일반 merge로 병합했다. 병합 SHA는 394157cdf2e3aa501edbcc3dff523f66e472d12e이며, ablecloud-team/upstream Europa, dhslove/origin Europa 및 로컬 codex/ablestack-cloud-dev를 같은 SHA로 동기화했다. S5A 검증 보고 · 원본33개 판정 · 공유 merge 검토 · 후속 의존성.
- 직접 S5A28개 + 연관 S2 일반4개 + 공유 merge1개, 총33개 판정: Applied11 / Adapted17 / Already Satisfied5. 다른 기능의 side commit이 남은 공유 merge8개는 Pending을 유지한다.
- 전체299개: Applied50 / Adapted66 / Already Satisfied42 / Excluded28 / Pending113. S2는54개 확정/23개 Pending(merge18 + 일반5)이다.
- 최종 PR HEAD
5783ad2a52bc7ea3ad8fddc453f7e00f8c7be64d의 공식 backend 12,725 tests, failures0/errors0/skipped17; UI30 suites/351 tests, production build, License 및 Rocky9.8/9.7 RPM 패키징 통과. Build / UI Build / License Check / Rocky 9.8 RPM Packaging / Rocky 9.7 RPM Packaging.
- 로컬 구간 실행 누적12,725 tests(failures0/errors0/skipped15), 최종 권한 보완 집중24개, 최종 UI351개 및 변경 UI ESLint 통과. 구간 실행을 단일 최종 SHA 전체 clean 실행으로 간주하지 않는다.
- 실제 MySQL 신규 설치·전체014 복제·공식 S4에서 업그레이드, 21개 DDL 실패 경계 재시도·동시 JVM 복구·schema parity·반복 실행 통과. 최종 noredist 관리 서버의 신규/기존 schedule API CRUD 및 version51행/journal2행 보존 확인. 기존 개발 DB/볼륨은 보존했다.
- 전체 Lint는 기존13개 실패 범주, 이번 변경 경로 진단0개로 #990에 계속 추적한다. Simulator/Coverage/Sonar의 skipped를 PASS로 집계하지 않는다.
- 실물 테스트는 수행하지 않았다. 모든 코드 병합 후 실행할 KVM/Ceph·FTCTL/DR·VMware/Xen·migration/import·ISO/HA/schedule 및 구/신 agent 호환 시나리오는 #1025에서 추적하고 S8 #999가 인수한다. 실물 미실행은 이 코드 통합 완료를 막는 조건이 아니다.
다음 코드 통합은 S5B #994다. Apache #12617의 CLVM과 후속 migration/ISO 변경은 해당 이슈의 Pending 범위이며 이 배치에서 완료로 계산하지 않았다. Epic #987은 OPEN을 유지한다.
목적과 범위
부모 Epic: #987
VM/host/오퍼링·HA·migration/import·guest OS·CLVM·다중 ISO·스케줄/자동 확장 관련 변경을 통합한다. #983의 복제 및 NIC link/PXE 수정과 FTCTL/DR 계약을 보존한다.
기준과 선행 조건
014895d8f3dc2f062f379b51ee62d36a0adae88a3166e64891fc75d4d32b66d874cff3f613b09b52..463f8d0294702a920e8020b62ae3b67f52ae1473(4.23.0.0)S5Abaseline_ready게이트(기준 실패 분리·검증 환경 확보)를 착수 조건으로 한다. 기능별 소스/DB/API 의존성은 추적표가 우선한다.완료 기준
검증
모듈 unit/API 계약, 같은 버전 DB 신규·014 업그레이드·실패 재시도, backend/UI/RAT 및 Actions RPM. 실물 KVM/Ceph·FTCTL·VMware 시험은 이 코드 통합 이슈의 선행 조건이 아니며 #1025에서 모든 코드 병합 후 수행한다.
공통 진행 규칙
developer/history/추적표로 관리한다. 원본 SHA별 판정/PR/적용 SHA/검증 근거를 갱신한다.ablecloud-team/ablestack-cloud:ablestack-europa이다. PR은 이 하위 이슈를 연결하고 부모 Epic을 자동 종료하지 않는다.S1 확정 추적 자료 (2026-09-10)
workstream=S5A로 필터링한다. 관련 기능 변경은related_workstreams와 의존성도 함께 확인한다.014895d8f3; 신규 설치·기존 데이터 업그레이드·동일 버전 재실행을 검증한다.S4 완료 인수
S4 #992 구현 #1016와 증빙 #1017을 병합했다. 시작 가능한 Europa 기준은
2b4035e1fb03810ae572bb18fafabb74c22babc7이며, 사용자 지정 DB 출발점014895d8f3은 유지한다. 검증 보고 및 의존성 검토를 인수한다.코드 통합과 실물 테스트의 분리 (2026-09-11 사용자 확정)
S3~S7 기능 작업은 Apache 변경을 Europa 코드에 안전하게 통합하고 코드 검토·자동 테스트·CI를 통과한 뒤 병합하는 것을 완료 기준으로 한다. 실물 테스트는 모든 코드 병합이 끝난 최종 SHA에서 수행한다. 실물 환경 미제공을 이유로 기능 PR을 Draft로 유지하거나 기능 이슈를 미완료 처리하지 않는다.
배치별 실물 시나리오는 #1025에 누적하고 S8 #999에서 최종 실행·판정한다. 미실행을 PASS로 기록하지 않는다. 이는 기능 코드 병합과 최종 RC/릴리즈 승인을 분리하는 결정이며, 제품 범위나 데이터 보존 요구를 삭제하는 것이 아니다.
구현 PR: #1024 병합 완료. 최종 자동 검증과 동기화 결과는 아래 완료 기록을 참조한다.
코드 검증 인수
PR #1024의 원본33개 판정과 자동 검증 기록을 확정했다. 검증 보고와 아래 완료 기록에 최종 CI 및 병합·동기화 결과를 연결했다. 실물 시험은 #1025에 이관했다.
S5A 코드 통합 완료 (2026-09-11)
PR #1024를 일반 merge로 병합했다. 병합 SHA는
394157cdf2e3aa501edbcc3dff523f66e472d12e이며, ablecloud-team/upstream Europa, dhslove/origin Europa 및 로컬codex/ablestack-cloud-dev를 같은 SHA로 동기화했다. S5A 검증 보고 · 원본33개 판정 · 공유 merge 검토 · 후속 의존성.5783ad2a52bc7ea3ad8fddc453f7e00f8c7be64d의 공식 backend12,725tests, failures0/errors0/skipped17; UI30 suites/351 tests, production build, License 및 Rocky9.8/9.7 RPM 패키징 통과. Build / UI Build / License Check / Rocky 9.8 RPM Packaging / Rocky 9.7 RPM Packaging.다음 코드 통합은 S5B #994다. Apache #12617의 CLVM과 후속 migration/ISO 변경은 해당 이슈의 Pending 범위이며 이 배치에서 완료로 계산하지 않았다. Epic #987은 OPEN을 유지한다.