Skip to content

Fix IBM error due to VPC zone cidr issue#2054

Merged
cb-github-robot merged 1 commit intocloud-barista:mainfrom
seokho-son:main
Jul 23, 2025
Merged

Fix IBM error due to VPC zone cidr issue#2054
cb-github-robot merged 1 commit intocloud-barista:mainfrom
seokho-son:main

Conversation

@seokho-son
Copy link
Copy Markdown
Member

@seokho-son seokho-son commented Jul 23, 2025

fix #2004

  • CB-Spider IBM 클라우드 드라이버 구현 제약상, IBM VPC의 특징인 멀티 존에 걸친 VPC (존별 서브넷)을 지원하지 못하고 있는 것으로 보임. (참고: CB-Spider 구현체 코드를 살펴보면, 첫번째 존에만 존 CIDR을 셋팅하는 것으로 보임. 구현상 개선 필요 사항)

    • 기존 CB-TB: MCI Dynamic에서 존2개에 서브넷을 각각 1개씩 생성 ==> IBM 클라우드에서는 VPC 생성 오류가 발생함.
    • 수정 CB-TB: IBM의 경우, 특성 및 현재 구현 한계를 고려해서, 임시적으로 하나의 존에 2개의 서브넷을 추가하도록 수정함.
  • Ref IBM VPC Network structure: https://cloud.ibm.com/docs/vpc?topic=vpc-about-networking-for-vpc&locale=en

Signed-off-by: Seokho Son <shsongist@gmail.com>
@seokho-son seokho-son requested a review from yunkon-kim as a code owner July 23, 2025 03:05
@seokho-son
Copy link
Copy Markdown
Member Author

ref

@seokho-son
Copy link
Copy Markdown
Member Author

/approve

@github-actions github-actions bot added the approved This PR is approved and will be merged soon. label Jul 23, 2025
@cb-github-robot cb-github-robot merged commit a74c1b3 into cloud-barista:main Jul 23, 2025
5 checks passed
@seokho-son
Copy link
Copy Markdown
Member Author

cb-spider/cloud-control-manager/cloud-driver/drivers/ibmcloud-vpc/resources/VPCHandler.go

개선 필요 추정 코드.

	// createVPCAddressPrefix
	createVPCAddressPrefixOptions := &vpcv1.CreateVPCAddressPrefixOptions{}
	createVPCAddressPrefixOptions.SetVPCID(newVpcIId.SystemId)
	createVPCAddressPrefixOptions.SetCIDR(vpcReqInfo.IPv4_CIDR)
	createVPCAddressPrefixOptions.SetName(newVpcIId.NameId)
	createVPCAddressPrefixOptions.SetZone(&vpcv1.ZoneIdentity{
		Name: core.StringPtr(vpcReqInfo.SubnetInfoList[0].Zone),
	})
	_, _, err = vpcHandler.VpcService.CreateVPCAddressPrefixWithContext(vpcHandler.Ctx, createVPCAddressPrefixOptions)
	// createVPCAddressPrefix error
	if err != nil {
		createErr := errors.New(fmt.Sprintf("Failed to Create VPC err = %s", err.Error()))
		cblogger.Error(createErr.Error())
		LoggingError(hiscallInfo, createErr)
		_, delErr := vpcHandler.DeleteVPC(newVpcIId)
		if delErr != nil {
			createErr = errors.New(err.Error() + delErr.Error())
		}
		return irs.VPCInfo{}, createErr
	}

@yunkon-kim
Copy link
Copy Markdown
Member

@seokho-son @powerkimhub

mciDynamic이 에러 없이 동작하도록 작업해주신 것 같습니다.

Spider 개선 시에 참고하시면 좋을 것 같아 IBM 네트워크 구조에 대해 분석한 사항을 공유 드립니다.

IBM 네트워크 구조

image

참고 사항

  • VPC, Subnet 이외에 Address Prefix 생성/설정이 필요함
  • Default Address Prefix를 생성/설정 할 수 있음. Region 별로 서로 다른 대역이 지정되어 있음.
  • VPC 생성 시 CIDR block을 필요로 하지 않음
  • IBM 네트워크 자원 생성 순서: VPC 생성 > Address Prefix 생성 (생성 시 Zone 지정) > Subnet 생성 (생성 시 Address Prefix 지정)
    • 1개의 Zone에 n개의 Address Prefix 생성 가능
    • 1개의 Address Prefix에 m개의 Subnet 생성 가능

@powerkimhub
Copy link
Copy Markdown
Member

@seokho-son @yunkon-kim

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved This PR is approved and will be merged soon.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[IBM:vNet/subnet] Failed to create VPC on IBM

4 participants