Conversation
Move legacy manual test docs from doc/test to doc/mc-web-console-test, add Playwright E2E test reference under doc/playwright-test, and remove obsolete monitoring test docs from docs/test. Co-authored-by: Cursor <cursoragent@cursor.com>
[chore]: Reorganize test documentation under doc and docs
Consolidate doc/ and docs/ under a single docs/ tree with role-based subfolders, replace Swagger UI vendor bundles with CDN, and add e2e-snapshot sync script for mcmp-e2e/deploy mirror. Co-authored-by: Cursor <cursoragent@cursor.com>
Remove mc-web-console sync script; document mcmp-e2e as sync source. Add swag annotations to API handlers, generate-swagger.sh, and update docs/api/swagger.json from current Echo routes. Co-authored-by: Cursor <cursoragent@cursor.com>
Schedule refresh from JWT exp minus buffer on login and authenticated pages so idle sessions stay valid without waiting for API 401.
Replace JWT exp-based scheduling that retried every 30s with 5-minute setInterval, throttle duplicate refresh calls, and limit reactive refresh to 401 only.
[fix]: Use 5-minute interval for proactive token refresh
cb-tumblebug GetInfra API 응답 노드 객체에는 subGroupId 필드가 없고 nodeGroupId만 존재하여 groupBySubGroup()이 모든 VM을 "undefined" 키로 그룹핑하던 문제 수정. - groupBySubGroup(): vm.subGroupId → vm.nodeGroupId - vmDetailInfo(): aVm.subGroupId → aVm.nodeGroupId Fixes: WEB-BUG-017
- vmDelete: pathParam vmId → nodeId (RegistryCache 경로변수 일치) - postScaleOutSubGroup: pathParam subgroupId → nodegroupId, async fire-and-forget 전환 - cspimport_api: DeregisterMciVm → DeregisterInfraNode, pathParam 맞춤 - pmk_api: Getavailablek8sclusterversion → GetAvailableK8sVersion, Getavailablek8sclusternodeimage → GetAvailableK8sNodeImage - clustercreate: K8s 버전 조회 시 regionName 프리픽스([CSP]) 제거 후 전달 - deleteMci/deleteVm: 삭제 요청 전 선택 상태 즉시 초기화하여 삭제된 리소스 재조회 방지
fix: deploy 시 expert mode 등 버그 수정
- region/zone: API 응답 소문자 키(region.region, region.zone)로 수정 (기존 Region/Zone 대문자 오류) - Platform: addtionalDetails Architecture 키 대신 image.osType/osArchitecture 사용 (NHN/NCP/Alibaba 미존재 대응) - Root Device: data.RootDeviceName(대문자) 필드로 수정, 하위호환 소문자 폴백 유지 - Access Id/Pwd: vmUserName undefined 시 '-' 표시 (기존 "undefined/ ***" 방지) - User Id/Pwd: vmUserAccount → nodeUserName 필드 사용, 없을 시 '-' 표시 - vmDetailInfo(), subGroup_vmDetailInfo() 동일하게 적용 (2개 함수 모두 수정)
fix(pmk): Expert Creation Deploy 후 리다이렉트 URL 수정
…문자 수정 - desiredNodeSize/maxNodeSize/minNodeSize: string → int (parseInt) - onAutoScaling: string '"false"' → boolean - rootDiskSize: 빈 문자열 시 필드 제거 (tumblebug 400 방지) - Request → request (소문자): CommonRequest json 태그와 일치
tumblebug이 onAutoScaling을 string('true'/'false')으로 기대하므로
boolean 변환 대신 String() 캐스팅으로 유지
- AutoScaling Off: min/max 셀렉트 disabled, 값 초기화, 요청 본문에서 제거 - AutoScaling On: min/max 셀렉트 활성화, 필수 입력 검증 후 전송 - Expert Creation (_clustercreate.html/clustercreate.js), Dynamic 폼 (pmkworkloads.html/pmk.js) 모두 적용 - Edit 모드 진입 시 기존 autoscaling 값에 따라 disabled 상태 반영
fix(pmk): PostK8sCluster 400 오류 수정 및 AutoScaling Off 시 min/max 비활성화
- docs/development/bug, docs/development/fix: 임시 개발 노트 삭제 (내용은 PR/커밋 히스토리로 대체) - docs/e2e-snapshot: mcmp-e2e 레포로 이관 완료에 따라 mc-web-console에서 제거
refactor(docs): doc/docs 구조 통합 및 임시 파일 제거
cluster_provider_dynamic(Dynamic 모드)만 읽던 코드에 cluster_provider(Expert Creation 모드) fallback 추가
fix(pmk): Expert Creation Node Group Spec 팝업 Provider 미전달 버그 수정
…vmId→nodeId, subgroupId→nodegroupId) front JS already uses infraId/nodeId/nodegroupId but api.yaml resourcePath templates still had mciId/vmId/subgroupId, causing URL substitution to fail. Updated 67 resourcePaths in mc-infra-manager section.
5개 iframe 플러그인 파일(observability, datamanager, softwaremanager, workflowmanager, costoptimizer)의 코드 구조를 동일한 형태로 통일. - var → const 변환 (host, apiHost) - 따옴표 스타일 single quote로 통일 - targetDiv 상단 캐싱 후 재사용 - addIframe 호출 전 targetDiv.innerHTML = '' 초기화 추가 - change 핸들러에 setCurrentProject 통일 (observability에 추가) - 객체 키 unquoted 형태로 통일 - costoptimizer: 불필요한 console.log·주석 블록 제거
refactor(plugins): iframe 플러그인 JS 패턴 통일
`vmDynamic` was sending rootDiskSize and subGroupSize as raw strings from the DOM, causing type errors in mc-infra-manager. Apply the same parseInt conversion pattern used in mciDynamic.
- pmk.js: NodeGroup 미선택 시 CSP 하드코딩 대신 API 동적 조회로 변경 (getAvailableK8sClusterVersion, getAvailablek8sClusterNodeImage) - users.js: HTML commonModal 콜백용 deleteUser() export 및 executeWithToast() 헬퍼 추가 (Delete 버튼 동작 복원) - package.json: glob v7 → v11 업그레이드 (globSync API 호환성)
…ksize fix(pmk,users): NodeGroup spec 동적 조회 및 deleteUser 복원
- NodeGroup 없는 경우: GetAvailableK8sVersion으로 K8s 버전 동적 조회 후 version 필드 설정 - NodeGroup 없는 경우: 불필요한 pre-validation(checkK8sClusterDynamic) 제거 - NodeGroup 없는 경우: GetAvailableK8sNodeImage 호출 제거 (UNDER DEVELOPMENT API) - NodeGroup 없는 경우: CSP별 하드코딩 specId/imageId 제거 → imageId는 "default" 사용 - NodeGroup 있는 경우: pre-validation 유지 - pmk_api.js: getAvailablek8sClusterNodeImage await 누락 수정 및 반환값 통일
- desiredNodeSize/minNodeSize/maxNodeSize/rootDiskSize를 int로 변환 (tumblebug 타입 불일치 해소) - createNode 검증을 name/specId/imageId 필수로 완화 (autoScaling OFF 시 min/maxNodeSize 없음) - clustercreate.js에서 createNode await 추가 및 검증 실패 시 early return 처리 - RecommendK8sNode 실패 시 CSP별 default specId fallback 적용 (NodeGroup-less 배포용)
- Add Node 시 Spec Recommendation 팝업에서 선택된 클러스터의 provider 자동 필터링 (selectedPmkObj fallback 추가 — cluster_provider_dynamic이 없는 경우 대응) - Image Recommendation 팝업에 is Kubernetes Image 토글 추가 (기본 ON) K8s 이미지가 없을 때 OFF로 전환해 전체 이미지 재조회 가능
PostInfra(비-dynamic)는 응답을 받을 때까지 블로킹되는 API라 mciDynamic()의 fire-and-forget 패턴을 그대로 쓰면 브라우저가 navigate와 함께 요청을 끊어 502가 발생했다. 최초에는 mciStatic()이 응답을 기다리도록 바꾸고 Deploy 버튼에 스피너를 다는 방식으로 우회했으나, 실제 원인은 front의 ASYNC_TRACK_OPERATION_IDS/api의 AsyncTrackOperationIDs 허용목록에 PostInfra/PostInfraNode가 없어 async-requests 추적 대상으로 등록되지 않았던 것이었다. 두 허용목록에 PostInfra/PostInfraNode를 추가하고, mciStatic()/ createMciStatic()을 mciDynamic()과 동일한 fire-and-forget + 즉시 navigate 패턴으로 되돌렸다. 완료 확인은 async_request_poller가 추적하는 async-requests 잡 상태로 한다. 더 이상 쓰지 않는 Deploy 버튼 스피너/ await/#mci_deploy_btn id는 제거했다.
…false Load conf/webconsole_menu_resources.yaml at boot and answer GetAllAvailableMenus locally without proxying to mc-iam-manager, returning the full menu list with no role filtering.
feat: serve local menu list for GetAllAvailableMenus when USE_IAM is false
…ert-mode # Conflicts: # api/internal/service/async_track.go # front/assets/js/common/api/requestId.js
feat: Create Infra Expert Mode 보완
exportMenus() 기본 파일명이 날짜 단위(menu-\${date}.json)로만 생성돼
같은 날 재export 시 충돌했다. 초 단위 타임스탬프 헬퍼로 통일하고,
conf/에 실수로 반입되는 export 산출물을 막는 gitignore 패턴을 추가했다.
메뉴 아이콘이 sidebar.js의 iconsArr에 id 기준으로만 하드코딩돼 있어 메뉴 추가 시 yaml 수정과 프론트 코드 배포가 모두 필요했다. - 정본 yaml에 icon 필드 추가(approvals 항목), mc-iam-manager DB 스키마 확장(icon 컬럼, 별도 PR #181 완료)에 맞춤 - sidebar.js: resolveMenuIcon() 헬퍼로 menu.icon 우선 조회, 없으면 기존 id 기반 조회로 하위호환, 대응 메뉴 없는 죽은 키 single 제거 - 메뉴 관리 화면(Create/Edit 모달, 상세 패널)에 아이콘 선택 필드 추가
Add a platform-admin screen for managing mc-iam-manager projects across all workspaces (list/create/edit/delete + workspace assignment), distinct from the existing per-workspace embedded Projects tab which is unchanged. Assignment goes through the workspace-side addProjectToWorkspace endpoint instead of the project-side one, which always returns 500 despite the underlying write succeeding. Register the getProjectWorkspaces operation in api.yaml and activate the pre-reserved projects menu entry.
feat: Workspaces > Projects 크로스-워크스페이스 프로젝트 관리 화면 추가
fix(menu): export 파일명 타임스탬프 통일
feat(menu): 아이콘 필드를 정본 yaml/DB/UI에 연동
다른 6개 API 서비스 파일(csp_accounts_api.js 등)은 이미 204 No Content 응답을 성공으로 처리하는 분기가 있었으나 groups_api.js만 빠져 있었다. 현재 groups_api.js가 unwrapResponse를 거치는 함수들의 upstream 응답은 전부 200/201이라 재현 가능한 라이브 버그는 아니지만, project_api.js의 removeWorkspaceFromProject에서 동일 패턴 결함이 실제로 발생했던 사례가 있어(같은 방식으로 복붙된 헬퍼) 예방적으로 맞춘다.
fix: groups_api.js unwrapResponse가 204 No Content 보완
The console's Copy KubeConfig button relayed cb-tumblebug's GetK8sCluster AccessInfo.Kubeconfig, whose exec plugin targets http://0.0.0.0:1024 — a loopback address only resolvable inside the cb-spider process itself, so the copied value never worked for an external client. It also leaked the shared default:default credential. Switch to GetK8sClusterKubeconfig, which returns a CSP-native kubeconfig (aws-iam-authenticator for EKS, gke-gcloud-auth-plugin for GKE). Since cb-spider silently falls back to the old broken kubeconfig with HTTP 200 for providers it doesn't support natively (AWS/GCP only), gate the button by connectionConfig.providerName rather than by response status, and show provider-specific setup guidance.
fix(k8s): switch Copy KubeConfig to cb-tumblebug's CSP-native endpoint
cb-tumblebug removed its K8s container remote-command API (PostCmdK8sCluster) outright instead of fixing the underlying kubeconfig exec-plugin bug, so the console can no longer offer this feature. Removes the Terminal entry point and modals from the K8s cluster detail screen, the cluster branch in postRemoteCmd()/buildCommandData(), the now-dead PMK terminal helpers, and the retired operationId from api.yaml. VM/NodeGroup/MCI Remote Command is untouched.
chore(k8s): remove PMK Remote Command Terminal feature
mc-iam-manager's deprecated CSV-based menu-permission-seeding endpoint was removed outright (menu_service.go, its handler, and route registration all deleted), so this file has had zero consumers since that merge. The canonical pipeline is YAML-only now.
…leanup chore(menu): remove webconsole_menu_permissions.csv
isKubernetesImage 토글이 기본 ON인데 OS Type 필드 기본값이 "ubuntu 22.04"로 채워져 있어, 사용자가 화면을 열어 기본 상태로 Search를 누르면 K8s 이미지는 osType이 타입 식별자(AL2023_ARM_64_STANDARD 등)라 매칭이 항상 0건이었다. MCI 쪽 동일 필드는 이미 빈 값으로 시작하는 패턴이라 이에 맞춰 통일한다.
spec-table-pmk/image-table-pmk가 다중 선택 상태로 생성되는데 applySpecInfoPmk()/applyImageInfoPmk()는 항상 배열의 첫 번째 선택 항목만 사용한다. 모달을 닫았다 다시 열어도 이전 체크 상태가 남아있어, 새 spec/image를 선택해도 먼저 선택했던 항목이 여전히 배열의 첫 항목이라 Apply가 옛 값을 다시 적용하는 문제가 있었다. 두 테이블을 단일 선택으로 변경해 새 행을 체크하면 이전 선택이 자동 해제되도록 한다. 또한 spec을 바꾼 뒤 이미지 검색 모달을 다시 열면 이전 spec으로 조회했던 결과 목록이 그대로 남아있어, 재검색 없이 다른 아키텍처의 이미지를 그대로 Apply할 수 있는 문제가 있었다. 모달이 열릴 때마다 결과 테이블을 비워 사용자가 현재 spec 기준으로 다시 Search하도록 한다.
fix: PMK 이미지 검색 osType 기본값 및 spec, image 보완
spec-table이 다중 선택 상태로 생성되는데 applySpecInfo()는 항상 배열의 첫 번째 선택 항목만 사용한다. 모달을 닫았다 다시 열어도 이전 체크 상태가 남아있어, 새 spec을 선택해도 먼저 선택했던 항목이 테이블 순서상 여전히 첫 항목이라 Apply가 옛 값을 다시 적용하는 문제가 있었다. PMK 쪽의 동일한 결함(spec-table-pmk)을 단일 선택으로 고친 것과 같은 방식으로 수정한다.
fix: MCI Spec 재선택 시 Apply 보완
The header (containing the Workspace/Project selectors, theme toggle, notifications, and user menu) was hidden entirely below 992px with no mobile alternative, even though the collapse/toggler markup for it was already in place. Removing the forced display:none re-enables the existing navbar-expand-md responsive behavior.
fix: restore mobile navbar toggler by removing d-none d-lg-flex
- 존재하지 않는 env 변수명(MCIAMMANAGER/MCINFRAMANAGER), 낡은 버전 핀 (mc-iam-manager v0.2.0), 잘못된 진입점(go run ./cmd) 등 현재 코드와 안 맞는 독립 docker-compose 설치 절차를 제거 - 1차 권장 경로로 mc-admin-cli installAll.sh(플랫폼 전체 통합 설치) 안내 - 로컬 개발 경로는 CLAUDE.md에 정리된 실제 구조(front/api 분리 서버, conf/.env, conf/api.yaml)를 기준으로 재작성 - conf/webconsole_menu_resources.yaml이 플랫폼 전체 메뉴 카탈로그의 canonical source라는 점과 mc-iam-manager와의 관계(MC_WEB_CONSOLE_MENUYAML) 명시
Member
Author
|
실수로 upstream을 대상으로 생성됨 — MZC-CSC(origin) 대상으로 다시 생성합니다. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
go run ./cmd) 등 현재 코드와 맞지 않는 독립 docker-compose 설치 절차를 제거installAll.sh(플랫폼 전체 통합 설치) 안내CLAUDE.md에 정리된 실제 구조(front/api 분리 서버,conf/.env,conf/api.yaml)를 기준으로 재작성conf/webconsole_menu_resources.yaml이 플랫폼 전체 메뉴 카탈로그의 canonical source라는 점과 mc-iam-manager와의 관계(MC_WEB_CONSOLE_MENUYAML) 명시Test plan
grep -n "MCIAMMANAGER\|MCINFRAMANAGER\|5005\|v0.2.0\|go run ./cmd" README.md→ 0건api/cmd/main.go,front/cmd/app/main.go) 존재 확인