v0.0.19 | Internet Gateway / Routing Table 관리 API 추가
All checks were successful
Build And Test / build-and-push (push) Successful in 13s

- ApiVpc에 IGW CRUD 추가 (/v2.0/internetgateways, external_network_id 사용)
- IGW/RoutingTable/Subnet-attach View 및 URL 신규 (모두 동기)
- API_SPEC.md 3.7.1~3.7.8 네트워크 섹션 추가

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-24 17:17:39 +09:00
parent 48fc246301
commit b30cebb603
6 changed files with 481 additions and 1 deletions

View File

@ -196,6 +196,46 @@ class ApiVpc(BaseAPI):
payload = {"routingtable_id": routingtable_id}
return self._put(url, payload)
# ==================== Internet Gateway ====================
def get_internet_gateway_list(self) -> dict:
"""인터넷 게이트웨이 목록 조회"""
url = f"{self.vpc_url}/v2.0/internetgateways"
logger.info(f"[NHN API] IGW 목록 조회 요청 - URL={url}")
result = self._get(url)
count = len(result.get("internetgateways", []))
logger.info(f"[NHN API] IGW 목록 조회 완료 - count={count}")
return result
def get_internet_gateway_info(self, internetgateway_id: str) -> dict:
"""인터넷 게이트웨이 상세 조회"""
url = f"{self.vpc_url}/v2.0/internetgateways/{internetgateway_id}"
return self._get(url)
def create_internet_gateway(self, name: str, external_network_id: str) -> dict:
"""
인터넷 게이트웨이 생성
Args:
name: IGW 이름
external_network_id: 외부 네트워크 ID (get_external_network_id 로 조회)
"""
url = f"{self.vpc_url}/v2.0/internetgateways"
payload = {
"internetgateway": {
"name": name,
"external_network_id": external_network_id,
}
}
logger.info(f"IGW 생성 요청: {name} (external_network={external_network_id})")
return self._post(url, payload)
def delete_internet_gateway(self, internetgateway_id: str) -> dict:
"""인터넷 게이트웨이 삭제"""
url = f"{self.vpc_url}/v2.0/internetgateways/{internetgateway_id}"
logger.info(f"IGW 삭제 요청: {internetgateway_id}")
return self._delete(url)
# ==================== Floating IP ====================
def get_external_network_id(self) -> dict: