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

more Test for root disk configuration #536

Closed
powerkimhub opened this issue Nov 18, 2021 · 16 comments
Closed

more Test for root disk configuration #536

powerkimhub opened this issue Nov 18, 2021 · 16 comments
Assignees
Labels
enhancement New feature or request

Comments

@powerkimhub
Copy link
Member

@powerkimhub powerkimhub added the enhancement New feature or request label Nov 18, 2021
@powerkimhub powerkimhub self-assigned this Nov 18, 2021
@powerkimhub powerkimhub pinned this issue Dec 7, 2021
@powerkimhub
Copy link
Member Author

@dev4unet @hyokyungk @inno-cloudbarista @innodreamer ( @seokho-son @jihoon-seo )

  • 첨부 파일은 현재 버전의 시험 결과 입니다.
  • 첨부 확인 및 보완 부탁 드립니다.
  • 협의가 필요하시거나 특이 사항은 현황 공유를 위해서
    • 현 이슈의 답글로 남겨주시기 바랍니다.

RootDiskType_Size-Test-Results-2022.02.14.xlsx

@inno-cloudbarista
Copy link
Contributor

Azure의 경우 vm 생성 후 rootDisk size 변경(확장)이 가능하고, rootDisk size는 image에 따라 다릅니다.

vm 생성 => 사이즈 변경 (size 변경시 변경하려는 사이즈가 작을 경우 실패)

해당 부분에 대한 핸들링으로 1차적으로 vm 생성전 rootDisk size를 확인하여 변경 불가를 판단하려 했으나, image 혹은 여러 리소스에서 size에 대한 정보를 찾을 수 없었습니다.

vm 생성 후 사이즈 변경을 시도한 후 실패시 vm 및 관련 자원을 반납하는 방안으로 rootDisk size 변경 기능을 제공하려고 합니다.

@powerkimhub
Copy link
Member Author

@inno-cloudbarista

  • 넵, 세부 설명 감사드립니다.
  • 부연 설명으로 가이드에 제공된 * Root Disk 크기 조절은 VM 생성 요청 시에만 가능 표현은
    • Spider API 수준에서의 표현입니다.
  • Azure 현황 이해 되었습니다. 계획하신대로 진행해주시면 감사하겠습니다.

powerkimhub added a commit that referenced this issue Feb 21, 2022
[Azure] RootDisk Size 변경 및 vmhandler 개선 (이슈 #536)
@powerkimhub
Copy link
Member Author

powerkimhub commented Feb 21, 2022

[Azure]

@powerkimhub
Copy link
Member Author

@dev4unet @hyokyungk @inno-cloudbarista ( @innodreamer )

[AWS/Azure] 일부 관련 시험 결과

  • 아래 그림에서 RootDiskSize와 같이 red box 부분의 값들이 올라오고 있지 않습니다.
  • input 값이 설정이 안되어 요청되어도, VM 생성 결과 attach된 root disk 정보를 설정해서 올려주셔야 합니다.
  • 다른 driver도 유사할 듯하여 별도 시험을 하지 않았습니다.
  • 다른 driver도 함께 확인 부탁 드립니다.

image

@dev4unet
Copy link
Member

dev4unet commented Mar 2, 2022

@powerkimhub 해당 현상은 저번에 논의했었던 정책 관련 부분입니다만...
사용자가 요청했던 값이 아니라 무조건 생성된 VM의 정보를 리턴하는 형태로 변경하면 값은 채워지리라 봅니다.

그런데 RootDiskSize가 기억이 가물거려서 기존 글들 찾다가 관련 내용이 안 보이는데..^^;;
사용자가 RootDiskSize를 default로 입력하거나 아무 값도 입력하지 않을 경우
메타 파일에 설정되어 있던 기본 값으로 자동 매핑되어서 드라이버가 전달받도록 되어 있지 않았었나요? ^^;;;

우선 코딩에서는 값이 없으면 건드리지 않고 default라고 들어오면 8GB를 할당하고 있기는 한데...
다양하게 살펴보면 생성하려는 이미지 종류에 따라서도 영향이 있는 것 같아서 명시적으로 8GB를 할당하는 것도 잠정적으로 버그일 듯싶기는 합니다.
기본 값일 때에는 사이즈를 지정하지 않거나 굳이 지정해야 한다면 생성하려는 이미지의 스냅샷 사이즈로 설정해야 할 것 같기도 하더군요.

현재 이슈는 사용자의 요청 값과 무관하게 생성된 VM의 정보를 그대로 리턴하는 형태로 반영해 놓겠습니다.

@powerkimhub
Copy link
Member Author

powerkimhub commented Mar 3, 2022

@dev4unet @hyokyungk @inno-cloudbarista ( @innodreamer )

  • 넵, 기본적으로는 생성된 결과 정보를 제공해주시는 것이 좋을 듯합니다.

  • 관련하여 부연 설명 드립니다. 반영 시 참고해주시기 바랍니다.

driver에 넘겨지는 type과 size의 값 유형 및 제공해야 할 정보는 다음과 같습니다.

1. RootDiskType

  • (1) 빈문자열: ""

    • 기존 방법처럼 root disk type을 별도로 설정하지 않고 CSP에게 VM 생성을 요청
    • CSP가 default type으로 생성하여 제공
    • 생성된 Root Disk Type을 얻어서 vmInfo.RootDiskType 값 설정 후 반환
  • (2) 사용자가 요청한 type: cloudos_meta.yaml에 설정된 Type 문자열 중 하나

    • 현재는 yaml에 설정되지 않은 문자열 type 요청시에는 server단에서 오류를 반환하고 있습니다.
    • 확인부탁: 현재는 모든 region과 모든 image에서 제공 가능한 type으로만 yaml을 설정해주시기 바랍니다.
      • 현재 설정 예시
        [현재 AWS 설정 값]
        rootdisktype: standard / gp2 / gp3
        
    • 생성된 Root Disk Type을 얻어서 vmInfo.RootDiskType 값 설정 후 반환

2. RootDiskSize

  • (1) 빈문자열: ""

    • 기존 방법처럼 root disk size을 별도로 설정하지 않고 CSP에게 VM 생성을 요청
    • CSP가 default size으로 생성하여 제공(8GB일 수도 있고, 다를 수도 있음)
    • 생성된 Root Disk Size를 얻어서 vmInfo.RootDiskSize 값 설정 후 반환
  • (2) 사용자가 요청한 size(GB) 값: 7, 12, 24 등

    • CSP는 default size가 8인 경우 8보다 작은 size(ex: 7) 요청시 오류 발생
    • 이와 같은 경우 VM 및 관련 자원 clear 후 다음과 유사한 오류 메시지 반환
      • 오류 메시지 예시
        "Root Disk Size must be at least the default size (8 GB)"
        
    • 생성된 Root Disk Size를 얻어서 vmInfo.RootDiskSize 값 설정 후 반환

3. RootDeviceName

  • 생성된 Root Disk DeviceName를 얻어서 vmInfo.RootDeviceName 값 설정 후 반환

  • 추가로 얼마전 excel에 포함하여 공유 드렸었던 내용입니다.
  • 참고하기 쉽지 않을 듯하여 재공유드립니다.
  • 이 내용도 참고해주시기 바랍니다.


감사합니다.

@dev4unet
Copy link
Member

dev4unet commented Mar 3, 2022

@powerkimhub 사전 검증 가능한 CSP의 경우에는 검증 로직을 추가하고 있습니다만...
현재 상태의 경우 검증 로직이 없어도 최종 VM 생성 실패 시에는 엑셀에 있는 것처럼 실패 사유가 포함된 장문의 에러 메시지를 리턴합니다.
실패 시 릴리스할 리소스들을 살펴 봤으나 VM이 생성되지 않아서 특별히 릴리스할 리소스들은 없는 상태인데
요청된 방안 중 하나가 아래처럼 실패 메시지를 리턴하도록 요구되어있습니다.
"Root Disk Size must be at least the default size (8 GB)"

다양하게 테스트하면 어느 정도 추출 가능한 메시지 패턴이 보일 것 같기는 한데...
장문의 메시지에서 요구하는 형태로 해당 메시지를 추출하기 위해 에러 메시지를 파싱해야 할 지?
아니면 지금처럼 그대로 장문의 에러 메시지를 리턴해도 될런지요?

@powerkimhub
Copy link
Member Author

@dev4unet

  • 현재의 Spider는 자체 에러 코드를 제공하거나 에러 메시지를 통일 시키고 있지는 않습니다.
  • 같은 맥락으로, 예시로 제공해드린 메시지로의 변환은 꼭 준수하실 필요는 없습니다.
  • 변환해주셔도 좋고,
  • CSP가 제공하는 메시지 의미가 예시로 제공해드린 내용을 포함하거나 유사하면 현재는 그냥 올려 주셔도 되겠습니다.

@inno-cloudbarista
Copy link
Contributor

@powerkimhub

Azure 클라우드의 경우 API를 통해서 RootDeviceName, VMBlockDisk 항목을 조회할 수 없습니다.
별도로 VM에 ssh 접속 후 lsblk 등의 명령어를 통해 일부 정보를 가져올 수 있겠지만,
디바이스가 여러 개 마운트되어 있는 경우나 리눅스 distribution에 따라서 해당 명령어가 지원되지 않을 가능성도 있습니다.

API를 통해 지원되지 않는 RootDeviceName 등의 항목은 StartVM 후 해당 VM에 접속해서 정보를 가져와야 할까요?
그렇게 된다면 StartVM() 함수 뿐만 아니라 GetVM() 등의 함수가 호출될 때마다 VM의 ssh 명령어를 실행 후 결과를 뿌려주는 형상이 될 것 같습니다.

@powerkimhub
Copy link
Member Author

@inno-cloudbarista

  • 현황 공유 감사드립니다.
  • 현재 상황에서는 다음처럼 진행하시는 게 좋을 거 같습니다.
  • VM 생성이 성공했다면, RootDeviceName / VMBlockDisk 값에 다음 메시지 설정 후 반환
     Not visible in Azure
    

[참고]

  • 향후, Spider에 Volume 기능을 추가 예정입니다.
  • 그때는 Volume Name(disk name)으로 재 정리될 수도 있겠습니다.
  • 그 전까지는 일단 위 메시지로 처리 부탁 드립니다.

@inno-cloudbarista
Copy link
Contributor

@powerkimhub
넵 알겠습니다. 금주내로 반영하도록 하겠습니다.

powerkimhub added a commit that referenced this issue Mar 14, 2022
AWS 드라이버 #536 루트 디스크관련 이슈 보완
@powerkimhub
Copy link
Member Author

@powerkimhub
Copy link
Member Author

powerkimhub commented Mar 22, 2022

@dev4unet @hyokyungk @inno-cloudbarista @innodreamer ( @seokho-son @jihoon-seo )

  • 관련 시험을 일차 완료하였습니다.
    • TB 활용 및 시험 부탁 드립니다. ------------------------------------------ @seokho-son @jihoon-seo
  • 주의사항
    • Alibaba: ubuntu_18_04_x64_20G_alibase_20220208.vhd 이미지 활용을 권고
      -ubuntu_18_04_x64_20G_alibase_20210420.vhd 등 이전 이미지 활용시 panic 발생
      • 특이점: 최신 이미지가 아닌 경우 대상 이미지로 VM 생성 요청은 할수 있지만, image list 시에는 제공되지 않음
      • VM 생성 처리시: disk size validation check시 image 정보를 활용하는데,
        • CSP에서 없는 이미지로 반환 되며, 이로 인한 panic이 발생하고 있음.
      • 별도 이슈로 추진 예정
    • 모든 CSP의 disk type을 시험하지 못함
      • 자주 사용되는 disk type이 아닌 경우,
        • 특정 CSP의 zone에서는 VM 생성시 오류가 발생할 수 있음.

[Test Cases]

Test Case Input DiskType Input DiskSize(GB)
no input case (default type&size) "" ""
'default' input case default default
CSP 전용 타입 문자열 case standard ""
default 크기보다 작은 size case (에러 처리) default < default size
default 크기 보다 큰 size case default > default size
추상화된 타입 input case TYPE1 default
CSP 전용 타입 문자열 및 크기 변경 case gp3 > default size

[CSP별 Test Input 참고]

  ls $CBSPIDER_ROOT/api-runtime/rest-runtime/test/each-test/*rootdisk-*;

[Test CSP & Results]

  • PASS : AWS / AZURE / GCP / ALIBABA / TENCENT
  • 환경 문제로 시험 보류: OPENSTACK ------------------------------------ @powerkimhub
  • 적용 가능 확인 필요: NCPVPC / NHNCLOUD --------------------------- @innodreamer
  • 적용 불가: IBM / CLOUDIT / NCP / KTCLOUD

[GCP disk type & size 범위 확인 참고]

  • $ gcloud compute disk-types list
  • $ gcloud compute disk-types list --filter="zone~'us-central1'"
  • $ gcloud compute disk-types list --filter="zone~'us-central1' AND name~'local-'"

[최신 세부 결과 참고]

@seokho-son
Copy link
Member

@powerkimhub

CB-TB 를 통해서 GCP VM을 생성할 때,

  • Disk 관련 요청값
    • "rootDiskType": "",
    • "rootDiskSize": "77"

아래와 같은 오류가 Spider에서 발생합니다. (AWS VM은 오류가 발생하지 않았습니다.)

아마도 GCP 드라이버의 경우 DISK 생성 시에 VM 명칭과 동일한 명칭을 사용하여 DISK 자원을 생성하는 것 같은데, CB-TB가 요청하는 ID의 형태가 길어서 발생하는 것 같기도 합니다. (아마도 ID 길이 줄이는 매커니즘이 적용되지 않은?)

systemMessage:

{"message":"googleapi: Error 400: Invalid value for field 'resource.disks[0].initializeParams.diskName': 'ns01-test-clouds04-gcp-europe-west3-0-c922nd67p30na26k45sg-europe-west3-a'. Must be a match of regex '(?:a-z?)', invalid"}

(cc @jihoon-seo)

@powerkimhub
Copy link
Member Author

[최신 세부 결과 참고]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants