Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[+Region/Zone] Server-Driver Integration Test #930

Closed
powerkimhub opened this issue Sep 20, 2023 · 20 comments
Closed

[+Region/Zone] Server-Driver Integration Test #930

powerkimhub opened this issue Sep 20, 2023 · 20 comments
Labels

Comments

@powerkimhub
Copy link
Member

No description provided.

@powerkimhub powerkimhub converted this from a draft issue Sep 20, 2023
@powerkimhub powerkimhub moved this from Todo to In Progress in CB-Spider: Key Features Roadmap Sep 20, 2023
@innodreamer
Copy link
Member

@powerkimhub NCP Classic의 RegionZoneHandler의 모든 기능에 대해, CB-Spider API 기준으로 테스트한 결과입니다.
혹시 보완해야할 사항이 있으면 댓글로 남겨주세요.

#### ncp-region-zone test process - start ###

## Region/Zone: List
{
   "regionzone" : [
      {
         "KeyValueList" : [
            {
               "Value" : "1",
               "Key" : "RegionNo"
            },
            {
               "Value" : "KR",
               "Key" : "RegionCode"
            }
         ],
         "DisplayName" : "Korea",
         "Name" : "KR",
         "ZoneList" : [
            {
               "Status" : "NotSupported",
               "DisplayName" : "평촌 zone",
               "KeyValueList" : [
                  {
                     "Value" : "3",
                     "Key" : "ZoneNo"
                  },
                  {
                     "Value" : "KR-2",
                     "Key" : "ZoneCode"
                  }
               ],
               "Name" : "KR-2"
            },
            {
               "Name" : "KR-1",
               "DisplayName" : "가산 zone",
               "KeyValueList" : [
                  {
                     "Value" : "2",
                     "Key" : "ZoneNo"
                  },
                  {
                     "Key" : "ZoneCode",
                     "Value" : "KR-1"
                  }
               ],
               "Status" : "NotSupported"
            }
         ]
      },
      {
         "ZoneList" : [
            {
               "Name" : "HK-1",
               "KeyValueList" : [
                  {
                     "Key" : "ZoneNo",
                     "Value" : "20"
                  },
                  {
                     "Key" : "ZoneCode",
                     "Value" : "HK-1"
                  }
               ],
               "DisplayName" : "홍콩 ZONE",
               "Status" : "NotSupported"
            }
         ],
         "DisplayName" : "HongKong",
         "KeyValueList" : [
            {
               "Key" : "RegionNo",
               "Value" : "3"
            },
            {
               "Key" : "RegionCode",
               "Value" : "HK"
            }
         ],
         "Name" : "HK"
      },
      {
         "DisplayName" : "Singapore(New)",
         "KeyValueList" : [
            {
               "Value" : "7",
               "Key" : "RegionNo"
            },
            {
               "Value" : "SGN",
               "Key" : "RegionCode"
            }
         ],
         "Name" : "SGN",
         "ZoneList" : [
            {
               "DisplayName" : "싱가포르(New) ZONE-1",
               "KeyValueList" : [
                  {
                     "Value" : "70",
                     "Key" : "ZoneNo"
                  },
                  {
                     "Key" : "ZoneCode",
                     "Value" : "SGN-1"
                  }
               ],
               "Name" : "SGN-1",
               "Status" : "NotSupported"
            }
         ]
      },
      {
         "KeyValueList" : [
            {
               "Key" : "RegionNo",
               "Value" : "8"
            },
            {
               "Value" : "JPN",
               "Key" : "RegionCode"
            }
         ],
         "DisplayName" : "Japan(New)",
         "Name" : "JPN",
         "ZoneList" : [
            {
               "Name" : "JPN-1",
               "KeyValueList" : [
                  {
                     "Value" : "80",
                     "Key" : "ZoneNo"
                  },
                  {
                     "Key" : "ZoneCode",
                     "Value" : "JPN-1"
                  }
               ],
               "DisplayName" : "일본(New) ZONE",
               "Status" : "NotSupported"
            }
         ]
      },
      {
         "ZoneList" : [
            {
               "KeyValueList" : [
                  {
                     "Key" : "ZoneNo",
                     "Value" : "90"
                  },
                  {
                     "Key" : "ZoneCode",
                     "Value" : "USWN-1"
                  }
               ],
               "DisplayName" : "미국 서부(New) ZONE",
               "Name" : "USWN-1",
               "Status" : "NotSupported"
            }
         ],
         "KeyValueList" : [
            {
               "Key" : "RegionNo",
               "Value" : "9"
            },
            {
               "Value" : "USWN",
               "Key" : "RegionCode"
            }
         ],
         "DisplayName" : "US-West(New)",
         "Name" : "USWN"
      },
      {
         "ZoneList" : [
            {
               "DisplayName" : "독일(New) ZONE",
               "KeyValueList" : [
                  {
                     "Value" : "100",
                     "Key" : "ZoneNo"
                  },
                  {
                     "Key" : "ZoneCode",
                     "Value" : "DEN-1"
                  }
               ],
               "Name" : "DEN-1",
               "Status" : "NotSupported"
            }
         ],
         "Name" : "DEN",
         "DisplayName" : "Germany(New)",
         "KeyValueList" : [
            {
               "Key" : "RegionNo",
               "Value" : "10"
            },
            {
               "Value" : "DEN",
               "Key" : "RegionCode"
            }
         ]
      }
   ]
}


## Region: Get
{"Name":"KR","DisplayName":"Korea","ZoneList":[{"Name":"KR-2","DisplayName":"평촌 zone","Status":"NotSupported","KeyValueList":[{"Key":"ZoneNo","Value":"3"},{"Key":"ZoneCode","Value":"KR-2"}]},{"Name":"KR-1","DisplayName":"가산 zone","Status":"NotSupported","KeyValueList":[{"Key":"ZoneNo","Value":"2"},{"Key":"ZoneCode","Value":"KR-1"}]}],"KeyValueList":[{"Key":"RegionNo","Value":"1"},{"Key":"RegionCode","Value":"KR"}]}


## ORG Region: List
{
   "regionList" : [
      {
         "regionName" : "Korea",
         "regionCode" : "KR",
         "regionNo" : "1"
      },
      {
         "regionNo" : "3",
         "regionCode" : "HK",
         "regionName" : "HongKong"
      },
      {
         "regionName" : "Singapore(New)",
         "regionCode" : "SGN",
         "regionNo" : "7"
      },
      {
         "regionCode" : "JPN",
         "regionNo" : "8",
         "regionName" : "Japan(New)"
      },
      {
         "regionName" : "US-West(New)",
         "regionNo" : "9",
         "regionCode" : "USWN"
      },
      {
         "regionNo" : "10",
         "regionCode" : "DEN",
         "regionName" : "Germany(New)"
      }
   ],
   "returnMessage" : "success",
   "totalRows" : 6,
   "returnCode" : "0",
   "requestId" : "7826cee0-7308-4331-a34d-a5a97eb343f7"
}


## ORG Zone: List
{
   "zoneList" : [
      {
         "zoneDescription" : "평촌 zone",
         "regionNo" : "1",
         "zoneCode" : "KR-2",
         "zoneName" : "KR-2",
         "zoneNo" : "3"
      },
      {
         "regionNo" : "1",
         "zoneName" : "KR-1",
         "zoneCode" : "KR-1",
         "zoneDescription" : "가산 zone",
         "zoneNo" : "2"
      }
   ],
   "requestId" : "37a4223a-175a-40c4-91b5-06072ff98fd6",
   "returnCode" : "0",
   "returnMessage" : "success"
}

@powerkimhub
Copy link
Member Author

powerkimhub commented Sep 20, 2023

@MZC-CSC, @dev4unet, @raccoon-pi, @inno-cloudbarista, @innodreamer

현재 서버 통합 후, CB-Spider REST API를 통한 1차 통합 시험 결과가 다음과 같습니다.

[시험 개요]

  • 다음 4개의 API 호출에 따른 단순 동작 및 결과 반환 상태만 1차 점검(내용 검증 제외)
    • List, Get, OrgRegion, OrgZone
  • 향후 성능 개선 및 내용 검증 필요

[시험 결과 요약] 2023.10.24. 현재

Cloud Provider Status
Mock, AWS, GCP, Azure, Alibaba, Tencent, IBM-VPC, NCP, NCP-VPC, NHN, KT, KT-VPC Pass
OpenStack 통합 시험 보류(접근 인증 이슈)

============= 이하 시험 스크립트 및 오류 메시지 참고 =============

[Mock]

 curl -sX GET http://localhost:1024/spider/regionzone -H 'Content-Type: application/json' -d '{"ConnectionName": "mock-config01"}' | json_pp
 curl -sX GET http://localhost:1024/spider/regionzone/neptune -H 'Content-Type: application/json' -d '{"ConnectionName": "mock-config01"}' | json_pp

 curl -sX GET http://localhost:1024/spider/orgregion -H 'Content-Type: application/json' -d '{"ConnectionName": "mock-config01"}' | json_pp 
 curl -sX GET http://localhost:1024/spider/orgzone -H 'Content-Type: application/json' -d '{"ConnectionName": "mock-config01"}' | json_pp 

[AWS]

 curl -sX GET http://localhost:1024/spider/regionzone -H 'Content-Type: application/json' -d '{"ConnectionName": "aws-config01"}' | json_pp
 curl -sX GET http://localhost:1024/spider/regionzone/us-east-2 -H 'Content-Type: application/json' -d '{"ConnectionName": "aws-config01"}' | json_pp

 curl -sX GET http://localhost:1024/spider/orgregion -H 'Content-Type: application/json' -d '{"ConnectionName": "aws-config01"}' | json_pp 
 curl -sX GET http://localhost:1024/spider/orgzone -H 'Content-Type: application/json' -d '{"ConnectionName": "aws-config01"}' | json_pp 

[GCP]

 curl -sX GET http://localhost:1024/spider/regionzone -H 'Content-Type: application/json' -d '{"ConnectionName": "gcp-iowa-config"}' | json_pp
 curl -sX GET http://localhost:1024/spider/regionzone/asia-east1 -H 'Content-Type: application/json' -d '{"ConnectionName": "gcp-iowa-config"}' | json_pp

 curl -sX GET http://localhost:1024/spider/orgregion -H 'Content-Type: application/json' -d '{"ConnectionName": "gcp-iowa-config"}' | json_pp 
 curl -sX GET http://localhost:1024/spider/orgzone -H 'Content-Type: application/json' -d '{"ConnectionName": "gcp-iowa-config"}' | json_pp 

[Azure]

 curl -sX GET http://localhost:1024/spider/regionzone -H 'Content-Type: application/json' -d '{"ConnectionName": "azure-northeu-config"}' | json_pp
 curl -sX GET http://localhost:1024/spider/regionzone/eastus -H 'Content-Type: application/json' -d '{"ConnectionName": "azure-northeu-config"}'

 curl -sX GET http://localhost:1024/spider/orgregion -H 'Content-Type: application/json' -d '{"ConnectionName": "azure-northeu-config"}' | json_pp 
 curl -sX GET http://localhost:1024/spider/orgzone -H 'Content-Type: application/json' -d '{"ConnectionName": "azure-northeu-config"}' | json_pp 

[Alibaba]

 curl -sX GET http://localhost:1024/spider/regionzone -H 'Content-Type: application/json' -d '{"ConnectionName": "alibaba-beijing-config"}' | json_pp
 curl -sX GET http://localhost:1024/spider/regionzone/cn-wulanchabu -H 'Content-Type: application/json' -d '{"ConnectionName": "alibaba-beijing-config"}' | json_pp

 curl -sX GET http://localhost:1024/spider/orgregion -H 'Content-Type: application/json' -d '{"ConnectionName": "alibaba-beijing-config"}' | json_pp 
 curl -sX GET http://localhost:1024/spider/orgzone -H 'Content-Type: application/json' -d '{"ConnectionName": "alibaba-beijing-config"}' | json_pp 

[Tencent]

 curl -sX GET http://localhost:1024/spider/regionzone -H 'Content-Type: application/json' -d '{"ConnectionName": "tencent-guangzhou3-config"}' | json_pp
 curl -sX GET http://localhost:1024/spider/regionzone/ap-guangzhou -H 'Content-Type: application/json' -d '{"ConnectionName": "tencent-guangzhou3-config"}'

 curl -sX GET http://localhost:1024/spider/orgregion -H 'Content-Type: application/json' -d '{"ConnectionName": "tencent-guangzhou3-config"}' | json_pp 
 curl -sX GET http://localhost:1024/spider/orgzone -H 'Content-Type: application/json' -d '{"ConnectionName": "tencent-guangzhou3-config"}' | json_pp 

[OpenStack]

  • ETRI 활용 OpenStack 사용 권한 이슈로 시험 보류 중

[NCP Classic]

[NCP-VPC]

[NHN]

[KT Classic]

[KT-VPC]

@dev4unet
Copy link
Member

dev4unet commented Sep 21, 2023

@powerkimhub
로그를 보면 요청 정보에 &RegionId=cn-wulanchabu**-test-3**&Signature=oaq 부분이 보이네요.
리전 이름 뒤에 -test-3이 왜 붙었는지 모르겠지만 로그 상에서는 cn-wulanchabu-test-3이라는 없는 리전으로 요청이 전달되어서 내부에서는 "no such host" 응답이 내려 간 것 같은데 타임아웃이 드라이버에서 나오는지 json_pp에서 나오는지 소스를 봐야 할 수 있겠지만 아래처럼 잘 못된 dns로 요청이 전달되기 때문인 것 같습니다.
Post "http://ecs.cn-wulanchabu-test-3.aliyuncs.com/?AcceptLanguage=en-US&AccessK

@powerkimhub
Copy link
Member Author

@dev4unet

  • 지금은 잘되네요~^^
  • 추정컨데, Alibaba의 Test Region이 잠시 목록에 껴 들었던 것 같습니다.
  • fetch 실행 후 Spider 출력 로그 및 해당 소스를 보면, 특이 사항이 없습니다.
  • 관련 로그 및 해당 위치 소스 참고
    • image
    • image

@innodreamer
Copy link
Member

innodreamer commented Sep 21, 2023

@powerkimhub NCP VPC driver RegionZoneHandler 개발을 완료했으며, CB-Spider API 기준으로 테스트한 결과를 공유해드립니다.

[ 'ncpvpc-korea1-config' 기준 테스트 결과 ]

#### Region-Zone Test process - start ###

## Region/Zone : List
{
   "regionzone" : [
      {
         "DisplayName" : "Korea",
         "ZoneList" : [
            {
               "Status" : "NotSupported",
               "DisplayName" : "평촌 zone",
               "Name" : "KR-2",
               "KeyValueList" : [
                  {
                     "Value" : "KR-2",
                     "Key" : "ZoneCode"
                  }
               ]
            },
            {
               "Name" : "KR-1",
               "KeyValueList" : [
                  {
                     "Key" : "ZoneCode",
                     "Value" : "KR-1"
                  }
               ],
               "Status" : "NotSupported",
               "DisplayName" : "가산 zone"
            }
         ],
         "Name" : "KR",
         "KeyValueList" : [
            {
               "Key" : "RegionCode",
               "Value" : "KR"
            }
         ]
      },
      {
         "Name" : "SGN",
         "KeyValueList" : [
            {
               "Key" : "RegionCode",
               "Value" : "SGN"
            }
         ],
         "ZoneList" : [
            {
               "KeyValueList" : [
                  {
                     "Value" : "SGN-4",
                     "Key" : "ZoneCode"
                  }
               ],
               "Name" : "SGN-4",
               "DisplayName" : "Singapore (New) ZONE-4",
               "Status" : "NotSupported"
            },
            {
               "KeyValueList" : [
                  {
                     "Value" : "SGN-5",
                     "Key" : "ZoneCode"
                  }
               ],
               "Name" : "SGN-5",
               "DisplayName" : "Singapore (New) ZONE-5",
               "Status" : "NotSupported"
            }
         ],
         "DisplayName" : "Singapore(New)"
      },
      {
         "DisplayName" : "Japan(New)",
         "ZoneList" : [
            {
               "Name" : "JPN-4",
               "KeyValueList" : [
                  {
                     "Key" : "ZoneCode",
                     "Value" : "JPN-4"
                  }
               ],
               "Status" : "NotSupported",
               "DisplayName" : "Japna (New) ZONE-4"
            },
            {
               "Name" : "JPN-5",
               "KeyValueList" : [
                  {
                     "Key" : "ZoneCode",
                     "Value" : "JPN-5"
                  }
               ],
               "Status" : "NotSupported",
               "DisplayName" : "Japna (New) ZONE-5"
            }
         ],
         "Name" : "JPN",
         "KeyValueList" : [
            {
               "Key" : "RegionCode",
               "Value" : "JPN"
            }
         ]
      }
   ]
}

## Region/Zone : Get
{"Name":"KR","DisplayName":"Korea","ZoneList":[{"Name":"KR-2","DisplayName":"평촌 zone","Status":"NotSupported","KeyValueList":[{"Key":"ZoneCode","Value":"KR-2"}]},{"Name":"KR-1","DisplayName":"가산 zone","Status":"NotSupported","KeyValueList":[{"Key":"ZoneCode","Value":"KR-1"}]}],"KeyValueList":[{"Key":"RegionCode","Value":"KR"}]}

## ORG Region : List
[
   {
      "regionCode" : "KR",
      "regionName" : "Korea"
   },
   {
      "regionCode" : "SGN",
      "regionName" : "Singapore(New)"
   },
   {
      "regionName" : "Japan(New)",
      "regionCode" : "JPN"
   }
]

## ORG Zone : List
[
   {
      "zoneName" : "KR-2",
      "regionCode" : "KR",
      "zoneCode" : "KR-2",
      "zoneDescription" : "평촌 zone"
   },
   {
      "zoneName" : "KR-1",
      "zoneDescription" : "가산 zone",
      "zoneCode" : "KR-1",
      "regionCode" : "KR"
   }
]

@powerkimhub
Copy link
Member Author

powerkimhub commented Sep 22, 2023

@MZC-CSC @dev4unet @raccoon-pi @inno-cloudbarista @ish-hcc @ @innodreamer

[Region/Zone 정보 검증 요청 드립니다]

  • Region과 Zone 목록이 CSP 콘솔 또는 CSP CLI와 동일한지 확인 필요합니다.
  • 일부 CSP의 제공 되는 Zone 중 용도가 일반 사용자 용인지,
    • 아니면 특별한 용도인지 확인이 필요한 경우가 있습니다.
  • fetch 성능 점검이 필요합니다. (목표: 3초 미만)

[AdminWeb 중심 검증 가이드]

  • AdminWeb에 Region/Zone 목록 메뉴를 달았습니다.
  • 처음이신 분은 다음 절차대로 실행 후 제공되는 Region/Zone 정보 검증 및 소요 시간 확인
  • 기존 방법과 동일 합니다. 이미 아시는 분께서는 쓱~ 참고만 하시면 되겠습니다.
  1. CB-Spider 서버 설치/가동(최신 소스): 가이드
  2. AdminWeb 접속(W/ Browser): 가이드
  3. 대상 CSP 연결 설정: 아래 절차 참고 또는 가이드
  4. 등록한 연결 설정 선택: 아래 절차 참고
  5. Region/Zone 클릭 및 점검: 아래 절차 참고
    ※ 현재, 제공되는 Region/Zone 페이지: Region/Zone 기능 시험/정보 검증 용
    ※ 추후, 연결 설정 방법 개선(간편화/자동화 등) 등에 활용 예정

[성능 개선 요청]

  • 현재, 일부 CSP들의 ListRegionZone(), GerRegionZone()의 fetch 성능이 느린 경우가 있습니다.
    • 추상화를 위해서 여러가지 일이 처리되는 것이라 부득이한 상황입니다.
    • 일단, Sequential Loop에 대해서 Parallel Loop(Go routine)로 개선 부탁 드립니다.
    • 그래도, 3초 이상 소요 되는 경우에 대해서는 서버에서 캐싱 제공 예정입니다.
      • 사용 빈도가 생각보다 높을 것 같아서 입니다.

※ 간단 문의 등은 Slack, mail 등 활용하시면 되겠습니다.
※ 결과나 특이 사항 발생시 현재 이슈에 답글 부탁 드립니다.

-------------------------------- AdminWeb 활용한 점검 절차

(Mock 드라이버 중심으로 설명)

1. Driver 등록: Mock 선택 => '+' 클릭


image

  • 다음처럼, 목록에 추가됩니다.
  • 아니면, 서버 비정상 동작

image

2. Credential 등록, Region 등록

  • 생략: '1. Driver 등록'과 동일
  • 대상 CSP가 다르면, Credential 입력 정보가 다릅니다.
  • Combo Box에서 CSP 선택하면, 제공되는 기본 양식 참고해서 입력

3. Connection 등록

  • 'Provider Name'에서 'MOCK'을 선택하면,
  • 앞 단계에서 등록한 값들로 기본 설정됨
  • '+' 클릭해서 Connection 등록

4. Connection 선택

  • 다음 그림처럼 앞 단계에서 등록한 Mock Connection을 선택
    image

  • 우측 상단에 선택한 CSP 표시되면 OK
    image

5. Region/Zone 정보 확인

  • 'Region/Zone 메뉴 클릭
  • 다음처럼 테이블 보이면 OK
  • => Region/Zone 목록 상태 등 정보 확인

image

6. 예시: Tencent Region/Zone 현황

image

※ 수고하셨습니다~

@powerkimhub
Copy link
Member Author

@MZC-CSC @dev4unet @raccoon-pi @inno-cloudbarista @ish-hcc @ @innodreamer

[Region/Zone 드라이버 관련 문의 드립니다.]


  • 위 comment에는 성능 관련 이슈가 포함되어 있습니다.
    • fetch 성능 목표: 3초 미만 등

  • 드라이버 개발 시에는,
    • RegionZoneInfo / ZoneInfo struct의 KeyValueList를 채워 달라고 가이드 드렸었습니다.
    • 기존 자원 드라이버들 처럼

  • 그런데, 성능 관련하여,
    • KeyValueList를 채우는 작업이 많은 시간이 소요되는 작업으로 보입니다.
    • 또한, Region/Zone의 경우 기존 자원들과 달리
    • ListOrgRegion() 및 ListOrgZone()이 제공하는 정보와 중복된 정보들로 보입니다. (포맷만 다른))
      • 초기 생각과 달리 KeyValueList가 크게 유용할 것 같지 않네요.

  • 문의 드립니다.
  • 드라이버 내 KeyValueList 설정 코드를 제거(comment 처리)하는 것에 대해 생각이 어떠신지요?
    • 동의하시면, 👍 를
    • 현상 유지가 좋으시면 댓글 의견 부탁 드립니다.

@innodreamer
Copy link
Member

innodreamer commented Sep 25, 2023

@powerkimhub NCP Classic의 경우는 드라이버 내에서 Region/Zone과 관련된 value들(Image나 VMSpec 등)을 조회할때 parameter로서 Region과 Zone의 code가 아닌 number(숫자 형태)가 필요한데 사용자가 테스트나 디버깅시 그 number 정보가 제공되면 도움이 될거 같아 RegionZoneHandler에 Key/Value 값으로 포함시켜 제공하고 있습니다.

(참고) #930 (comment)

중요한 사항은 아니지만 편의성 측면에 도움에 될거 같아 포함시켜놓았으니 유지하면 좋을거 같고, 만약 전체적으로 Key/Value값을 제거하기로 결정된다면 제거해도 큰 문제는 없습니다.

@powerkimhub
Copy link
Member Author

@innodreamer

  • 정보/의견 공유 감사드립니다.
  • ListOrgRegion() 및 ListOrgZone()에 제공되지 않나요?
  • 제공된다면, Numeric ID 필요시에 KeyValue 대신 XXXOrgXXX() 사용하도록 가이드하면 될 듯합니다.

@innodreamer
Copy link
Member

@powerkimhub 네. ListOrgRegion() 및 ListOrgZone()에서도 Region No. / Zone No.를 제공합니다.
필요하면 거기서 확인해도 될거 같네요.

@powerkimhub
Copy link
Member Author

powerkimhub commented Sep 26, 2023

@MZC-CSC @dev4unet @raccoon-pi @inno-cloudbarista @ish-hcc @ @innodreamer

[Region/Zone 드라이버 성능 개선]



[Region/Zone Driver 개선 반영 현황] - 2023.10.15.

Cloud Provider Loop => Go Routine Omit KeValueList
OpenStack O O
IBM-VPC O O
Azure O O
Alibaba O O
AWS O O
GCP O O
Tencent O O
NHN O O
NCP Classic O O
NCP-VPC O O
KT Classic N/A O
KT-VPC N/A O

@powerkimhub
Copy link
Member Author

@MZC-CSC @dev4unet @raccoon-pi

Alibaba, AWS, GCP, Tencent관련하여,
2023.10.04. 오전 PR 버전이 다음과 같은 현상을 보이고 있습니다.
확인 부탁드립니다.

[증상]

  • Region/Zone 목록을 동일한 정보로 제공
  • 다음 화면처럼 호출 할 때마다 다른 정보이지만,
  • 모두 동일한 정보를 제공
  • 예시: Alibaba 경우
    • result-1:
      Image

    • result-2:
      Image

@innodreamer
Copy link
Member

innodreamer commented Oct 4, 2023

@powerkimhub
NHN Cloud RegionZoneHandler 개발을 완료했으며, CB-Spider API 기준으로 테스트한 결과를 공유해드립니다.

참고로, 몇주전 분석한 내용과 같이 NHN Cloud는 Spider의 connection config에서 제공하는 Region 값에 따라 endpoint가 변경되어 동작하고, NHN Cloud API로는 Zone list만을 제공합니다.
(그 결과 값에는 Region 정보 없이 Zone list만 제공함.)
따라서, RegionZoneHandler에서 정상적인 정보를 제공하기 위해서 Region 관련 정보는 driver 내에서 가공해서 제공하는 방향으로 개발했습니다.

[ 'nhncloud-korea-pangyo1-config' 기준 통합 테스크 결과 ]

#### Region-Zone Test Process - Start ###

### Region/Zone : List
{
   "regionzone" : [
      {
         "ZoneList" : [
            {
               "KeyValueList" : [
                  {
                     "Value" : "kr-pub-b",
                     "Key" : "ZoneCode"
                  }
               ],
               "Name" : "kr-pub-b",
               "DisplayName" : "N/A",
               "Status" : "Available"
            },
            {
               "Status" : "Available",
               "DisplayName" : "N/A",
               "Name" : "kr-pub-a",
               "KeyValueList" : [
                  {
                     "Key" : "ZoneCode",
                     "Value" : "kr-pub-a"
                  }
               ]
            }
         ],
         "DisplayName" : "한국(판교)",
         "KeyValueList" : [
            {
               "Key" : "RegionCode",
               "Value" : "KR1"
            }
         ],
         "Name" : "KR1"
      },
      {
         "ZoneList" : [
            {
               "Name" : "kr2-pub-b",
               "KeyValueList" : [
                  {
                     "Key" : "ZoneCode",
                     "Value" : "kr2-pub-b"
                  }
               ],
               "Status" : "Available",
               "DisplayName" : "N/A"
            },
            {
               "Status" : "Available",
               "DisplayName" : "N/A",
               "Name" : "kr2-pub-a",
               "KeyValueList" : [
                  {
                     "Key" : "ZoneCode",
                     "Value" : "kr2-pub-a"
                  }
               ]
            }
         ],
         "DisplayName" : "한국(평촌)",
         "KeyValueList" : [
            {
               "Key" : "RegionCode",
               "Value" : "KR2"
            }
         ],
         "Name" : "KR2"
      },
      {
         "DisplayName" : "일본",
         "ZoneList" : [
            {
               "DisplayName" : "N/A",
               "Status" : "Available",
               "KeyValueList" : [
                  {
                     "Value" : "jp-pub-a",
                     "Key" : "ZoneCode"
                  }
               ],
               "Name" : "jp-pub-a"
            },
            {
               "KeyValueList" : [
                  {
                     "Value" : "jp-pub-b",
                     "Key" : "ZoneCode"
                  }
               ],
               "Name" : "jp-pub-b",
               "DisplayName" : "N/A",
               "Status" : "Available"
            }
         ],
         "KeyValueList" : [
            {
               "Key" : "RegionCode",
               "Value" : "JP1"
            }
         ],
         "Name" : "JP1"
      }
   ]
}

### Region/Zone : Get
{"Name":"KR1","DisplayName":"한국(판교)","ZoneList":[{"Name":"kr-pub-b","DisplayName":"N/A","Status":"Available","KeyValueList":[{"Key":"ZoneCode","Value":"kr-pub-b"}]},{"Name":"kr-pub-a","DisplayName":"N/A","Status":"Available","KeyValueList":[{"Key":"ZoneCode","Value":"kr-pub-a"}]}],"KeyValueList":[{"Key":"RegionCode","Value":"KR1"}]}

### ORG Region : List
{
   "RegionList" : [
      {
         "RegionCode" : "KR1",
         "RegionName" : "한국(판교)"
      },
      {
         "RegionCode" : "KR2",
         "RegionName" : "한국(평촌)"
      },
      {
         "RegionName" : "일본",
         "RegionCode" : "JP1"
      }
   ]
}

### ORG Zone : List
{
   "ZoneList" : [
      {
         "zoneState" : {
            "available" : true
         },
         "zoneName" : "kr-pub-b"
      },
      {
         "zoneName" : "kr-pub-a",
         "zoneState" : {
            "available" : true
         }
      }
   ]
}
#### Region-Zone Test Process- Finished ###

image

@innodreamer
Copy link
Member

@powerkimhub 국내 CSP 관련 Key/Value List 제거는 추가로 진행할 예정입니다.

@innodreamer
Copy link
Member

@powerkimhub NCP Classic, NCP VPC, NHN Cloud driver에서 Go Routine 적용과 Key/Value List 제거 작업을 완료했습니다.

@powerkimhub
Copy link
Member Author

@innodreamer

  • 넵, 수고하셨습니다.

@innodreamer
Copy link
Member

@powerkimhub
KT Cloud VPC(D1 플랫폼) RegionZoneHandler 개발을 완료했으며, CB-Spider API 기준으로 테스트한 결과를 공유해드립니다.

특이사항으로, 몇주전 분석한 내용과 같이 KT Cloud VPC는 Region, Zone 정보를 제공하는 REST API를 제공하지 않고, 단일 Zone (Public cloud의 경우 DX-M1) 기준으로 서비스되고 있습니다.
따라서, CB-Spider 공통 인터페이스에 맞게 RegionZoneHandler에서 정상적인 정보를 제공하기 위해서 Region, Zone 관련 정보를 driver 내에서 가공해서 제공하는 방향으로 개발했습니다.
(Constant variable로서 struct로 Region, Zone 정보를 정의해서 활용)

[ 'ktcloudvpc-mokdong1-config' 기준 통합 테스크 결과 ]

#### Region-Zone Test Process - Start ###

### Region/Zone : List
{
   "regionzone" : [
      {
         "KeyValueList" : null,
         "Name" : "KR1",
         "ZoneList" : [
            {
               "Status" : "NotSupported",
               "Name" : "DX-M1",
               "KeyValueList" : null,
               "DisplayName" : "목동-1"
            }
         ],
         "DisplayName" : "서울"
      }
   ]
}
# start: 1697035774.782712781
# finish: 1697035776.979071803
# diff(sec): 2.196359022

### Region/Zone : Get
{"Name":"KR1","DisplayName":"서울","ZoneList":[{"Name":"DX-M1","DisplayName":"목동-1","Status":"NotSupported","KeyValueList":null}],"KeyValueList":null}

### ORG Region : List
{
   "RegionList" : [
      {
         "RegionName" : "서울",
         "RegionCode" : "KR1"
      }
   ]
}

### ORG Zone : List
{
   "ZoneList" : [
      {
         "ZoneCode" : "DX-M1",
         "ZoneName" : "목동-1"
      }
   ]
}
#### Region-Zone Test Process- Finished ###

image

@innodreamer
Copy link
Member

@powerkimhub
KT Cloud Classic(G1/G1 Platform) RegionZoneHandler 개발을 완료했으며, CB-Spider API 기준으로 테스트한 결과를 공유해드립니다.

특이사항으로, KT Cloud Classic은 API로 Zone list만 제공하고, Region 정보가 없이 동작합니다.
따라서, CB-Spider 공통 인터페이스에 맞게 RegionZoneHandler에서 정상적인 정보를 제공하기 위해서 Region 관련 정보는 driver 내에서 가공해서 제공하도록 개발했습니다.
Region과 그 하위 Zone list의 매핑은 KT Cloud API에서 조회한 Zone list에서 제공하는 Zone 'name' string의 일부로 Region code를 정하여 그 둘간에 매핑되도록 하여 조회가 가능하도록 했습니다.

[ 'ktcloud-korea-cheonan1-config' 기준 통합 테스크 결과 ]

#### Region-Zone Test Process - Start ###

### Region/Zone : List
{
   "regionzone" : [
      {
         "KeyValueList" : null,
         "ZoneList" : [
            {
               "DisplayName" : "KOR-HA",
               "Name" : "dfd6f03d-dae5-458e-a2ea-cb6a55d0d994",
               "Status" : "Available",
               "KeyValueList" : null
            }
         ],
         "DisplayName" : "김해",
         "Name" : "KOR-HA"
      },
      {
         "Name" : "KOR-Central",
         "DisplayName" : "천안",
         "ZoneList" : [
            {
               "Name" : "eceb5d65-6571-4696-875f-5a17949f3317",
               "DisplayName" : "KOR-Central A",
               "Status" : "Available",
               "KeyValueList" : null
            },
            {
               "Status" : "Available",
               "KeyValueList" : null,
               "Name" : "9845bd17-d438-4bde-816d-1b12f37d5080",
               "DisplayName" : "KOR-Central B"
            }
         ],
         "KeyValueList" : null
      },
      {
         "KeyValueList" : null,
         "ZoneList" : [
            {
               "Name" : "95e2f517-d64a-4866-8585-5177c256f7c7",
               "DisplayName" : "KOR-Seoul M",
               "Status" : "Available",
               "KeyValueList" : null
            }
         ],
         "DisplayName" : "서울",
         "Name" : "KOR-Seoul"
      }
   ]
}
# start: 1697196415.943575746
# finish: 1697196416.362927262
# diff(sec): .419351516

### Region/Zone : Get
{"Name":"KOR-Central","DisplayName":"천안","ZoneList":[{"Name":"eceb5d65-6571-4696-875f-5a17949f3317","DisplayName":"KOR-Central A","Status":"Available","KeyValueList":null},{"Name":"9845bd17-d438-4bde-816d-1b12f37d5080","DisplayName":"KOR-Central B","Status":"Available","KeyValueList":null}],"KeyValueList":null}

### ORG Region : List
{
   "RegionList" : [
      {
         "RegionName" : "서울",
         "RegionCode" : "KOR-Seoul"
      },
      {
         "RegionName" : "천안",
         "RegionCode" : "KOR-Central"
      },
      {
         "RegionCode" : "KOR-HA",
         "RegionName" : "김해"
      }
   ]
}

### ORG Zone : List
{
   "ZoneList" : [
      {
         "id" : "eceb5d65-6571-4696-875f-5a17949f3317",
         "localstorageenabled" : false,
         "tags" : [],
         "networktype" : "Advanced",
         "securitygroupsenabled" : false,
         "dhcpprovider" : "VirtualRouter",
         "name" : "KOR-Central A",
         "allocationstate" : "Enabled"
      },
      {
         "networktype" : "Advanced",
         "localstorageenabled" : false,
         "tags" : [],
         "id" : "9845bd17-d438-4bde-816d-1b12f37d5080",
         "name" : "KOR-Central B",
         "allocationstate" : "Enabled",
         "dhcpprovider" : "VirtualRouter",
         "securitygroupsenabled" : false
      }
   ]
}
#### Region-Zone Test Process- Finished ###

image

@powerkimhub
Copy link
Member Author

  • OpenStack 통합 시험 대기중 : Public OpenStack 접근 인증 이슈

@powerkimhub
Copy link
Member Author

  • OpenStack 통합 시험 완료
  • 조회 결과:
    image

@github-project-automation github-project-automation bot moved this from ⏳ In Progress: to ⏳ Done: in CB-Spider: Key Features Roadmap Dec 7, 2023
@powerkimhub powerkimhub moved this from ⏳ Done: to ⤷ [2023:Q3] Log in CB-Spider: Key Features Roadmap Dec 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: ⤷ [2023:Q3] Log
Development

No branches or pull requests

3 participants