Skip to content

feat: 관리자용 Pod 생성 진행 상태 조회 API 추가 - #422

Merged
yoon6yo merged 6 commits into
developfrom
feature/issue-421
Sep 6, 2026
Merged

feat: 관리자용 Pod 생성 진행 상태 조회 API 추가#422
yoon6yo merged 6 commits into
developfrom
feature/issue-421

Conversation

@yoon6yo

@yoon6yo yoon6yo commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Summary

  • config-server의 GET /pods/{username}/status를 중계하는 GET /api/admin/pods/status/{username} 엔드포인트 추가
  • 조회는 configWebClient(짧은 타임아웃)로 처리, 관리자 전용 (/api/admin/** 기존 ROLE_ADMIN 보호 적용)
  • 응답 실패 시 EXTERNAL_API_ERROR(502)로 매핑

Related

Closes #421

Test plan

  • PodServiceTest / PodControllerTest 신규 케이스 추가 및 통과

@coderabbitai

coderabbitai Bot commented Aug 27, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 44 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Team

Run ID: d7e7bfa5-5678-4f6f-b2df-04f24de29a10

📥 Commits

Reviewing files that changed from the base of the PR and between 6bb11c8 and 90854e7.

📒 Files selected for processing (23)
  • helm/admin-prod/templates/rbac.yaml
  • src/main/java/DGU_AI_LAB/admin_be/domain/pod/controller/PodController.java
  • src/main/java/DGU_AI_LAB/admin_be/domain/pod/controller/docs/PodApi.java
  • src/main/java/DGU_AI_LAB/admin_be/domain/requests/controller/RequestController.java
  • src/main/java/DGU_AI_LAB/admin_be/domain/requests/controller/docs/RequestApi.java
  • src/main/java/DGU_AI_LAB/admin_be/domain/requests/dto/response/PodCreationStatusResponseDTO.java
  • src/main/java/DGU_AI_LAB/admin_be/domain/requests/entity/Request.java
  • src/main/java/DGU_AI_LAB/admin_be/domain/requests/repository/RequestRepository.java
  • src/main/java/DGU_AI_LAB/admin_be/domain/requests/service/AdminRequestCommandService.java
  • src/main/java/DGU_AI_LAB/admin_be/domain/requests/service/PodCreationFailedException.java
  • src/main/java/DGU_AI_LAB/admin_be/domain/requests/service/PodService.java
  • src/main/java/DGU_AI_LAB/admin_be/domain/requests/service/RequestCommandService.java
  • src/main/java/DGU_AI_LAB/admin_be/domain/requests/service/RequestExpiryService.java
  • src/main/java/DGU_AI_LAB/admin_be/domain/requests/service/UbuntuAccountService.java
  • src/main/java/DGU_AI_LAB/admin_be/domain/scheduler/RequestSchedulerService.java
  • src/main/java/DGU_AI_LAB/admin_be/domain/users/service/AdminUserService.java
  • src/main/java/DGU_AI_LAB/admin_be/global/config/WebClientConfig.java
  • src/test/java/DGU_AI_LAB/admin_be/domain/pod/controller/PodControllerTest.java
  • src/test/java/DGU_AI_LAB/admin_be/domain/requests/entity/RequestTest.java
  • src/test/java/DGU_AI_LAB/admin_be/domain/requests/service/AdminRequestCommandServiceTest.java
  • src/test/java/DGU_AI_LAB/admin_be/domain/requests/service/PodServiceTest.java
  • src/test/java/DGU_AI_LAB/admin_be/domain/requests/service/RequestCommandServiceTest.java
  • src/test/java/DGU_AI_LAB/admin_be/domain/scheduler/RequestSchedulerServiceUnitTest.java

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

yoon6yo and others added 5 commits September 6, 2026 19:16
admin-prod RBAC에 events 권한을 추가해 Pod 이벤트 조회 403을 수정하고, cancelRequest가 PROCESSING 상태를 못 막던 버그를 수정한다.

Fixes #466
계정/Pod 생성 실패 후 보상 트랜잭션(정리) 자체가 또 실패하면 고아 계정/Pod가
남을 수 있어 즉시 수동 정리가 필요한데, 지금까지는 관리자가 평소 안 보는
범용 에러 로그 채널로만 알림이 갔다. 요청의 서버 구분(FARM/LAB)을 이용해
"새로운 서버 사용 신청" 알림과 같은 관리자 채널로 보내도록 변경한다.

재조정 스케줄러가 트랜잭션 밖에서 resourceGroup(지연 로딩)에 접근하게 되어
LazyInitializationException이 나는 것도 함께 막는다 (JOIN FETCH 추가).

Fixes #468
* fix: 계정 삭제 시 대상 farm 노드(node_name)를 config-server에 전달

config-server의 delete_user API에 node_name 파라미터가 추가됐는데(admin_infra
PR #138), admin_be가 이걸 실제로 안 넘기면 아무 효과가 없다. 4개 호출부를 각각
수정:

- RequestExpiryService(만료 정리), AdminUserService(관리자 수동 삭제, 유저
  탈퇴 시 일괄 정리): 이미 Request 엔티티에 있는 nodeName을 그대로 사용.
- AdminRequestCommandService의 승인 실패 보상 트랜잭션: 두 갈래로 나뉜다.
  ① Pod 생성 자체가 실패한 경우 — 성공한 CreatePodResponseDTO가 없어서 node를
  알 방법이 없었다. PodService.createPod의 에러 응답 파싱을 확장해 config-server가
  응답 바디에 넣어주는 node 필드(admin_infra PR #138에서 추가)를 꺼내
  PodCreationFailedException으로 들고 오도록 함.
  ② Pod는 성공했는데 이후 DB 반영이 실패한 경우 — 이미 성공 응답(node 포함)이
  있으므로 그대로 사용.

node를 못 구하면(파싱 실패 등) null로 넘어가고, config-server는 하위 호환으로
기존처럼 전체 farm을 훑는다 — 동작이 깨지지는 않고, 다만 좁혀지지 않을 뿐이다.

* fix: 관리자 events 조회 RBAC 누락 및 신청 취소 시 PROCESSING 상태 미차단 수정

admin-prod RBAC에 events 권한을 추가해 Pod 이벤트 조회 403을 수정하고, cancelRequest가 PROCESSING 상태를 못 막던 버그를 수정한다.

Fixes #466

* fix: 보상 트랜잭션 실패 알림을 관리자 farm/lab 채널로 라우팅 (#469)

계정/Pod 생성 실패 후 보상 트랜잭션(정리) 자체가 또 실패하면 고아 계정/Pod가
남을 수 있어 즉시 수동 정리가 필요한데, 지금까지는 관리자가 평소 안 보는
범용 에러 로그 채널로만 알림이 갔다. 요청의 서버 구분(FARM/LAB)을 이용해
"새로운 서버 사용 신청" 알림과 같은 관리자 채널로 보내도록 변경한다.

재조정 스케줄러가 트랜잭션 밖에서 resourceGroup(지연 로딩)에 접근하게 되어
LazyInitializationException이 나는 것도 함께 막는다 (JOIN FETCH 추가).

Fixes #468

* fix: pod WebClient 응답 타임아웃 기본값 300초 → 600초로 상향 (#420)

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
PodController/PodApi/PodService에 이 PR의 getPodCreationStatus와,
develop에 먼저 머지된 extractNode/configWebClient(#465)가 둘 다
공존하도록 병합. config-server의 GET /pods/<username>/status 응답
스키마(username/stage/message/updated_at)와 DTO 필드 일치 확인.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@yoon6yo
yoon6yo merged commit 32a205a into develop Sep 6, 2026
1 check passed
@yoon6yo yoon6yo mentioned this pull request Sep 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

관리자용 Pod 생성 진행 상태 조회 API 추가

1 participant