본문 바로가기

활동들~

[오픈소스] NCP 테라폼 validation 검증하기

오픈소스 url : https://github.com/NaverCloudPlatform/terraform-provider-ncloud 

네이버 클라우드 API 문서 : https://api.ncloud-docs.com/docs

정규식 테스트 사이트: https://regexr.com/

0. 확인할 파일 선정.

- server.go 파일로 선정

1. 문서에서 API 요청 파라미터 제약사항 확인하기.

- API 문서에서 createServerInstance 확인

createServerInstance의 name 제약사항

 

- 위 사진과 같이 serverName의 제약 사항은 아래와 같습니다.

1. 3~30 개의 문자만 허용

2. 소문자, 숫자, "-"만 허용

3. 알파벳으로 문자로 시작해야함

4. 영어 또는 숫자로 끝나야함.

 

2. validation 패키지의 함수들을 이용해, 검증 작성하기

1. 제약사항 1번 :   3~30개의 문자만 허용.

validation.StringLenBetween(3, 30)

2. 2~4까지의 제약사항 검증 

- validation 패키지에 2~4 제약사항을 확인할 수 있는 함수가 없으므로, 정규식을 이용. ( https://regexr.com/을 활용해 정규식 조합)

- 제약사항 2번 : [a-z0-9-] 

- 제약사항 3번 : ^[a-z]+[a-z0-9-]

- 제약사항 4번 : ^[a-z]+[a-z0-9-]+[a-z0-9]$ 

- 만든 정규식을 테스트 (https://regexr.com/의 tests 클릭 후, 확인할 문자열들 입력)

3. 해당 파일의 schema 부분에 아래와 같이 ValidateDiagFuc 에 추가.

"name": {
    Type:     schema.TypeString,
    Optional: true,
    Computed: true,
    ForceNew: true,
    ValidateDiagFunc: ToDiagFunc(validation.All(
        validation.StringLenBetween(3, 30),
        validation.StringMatch(regexp.MustCompile(`^[a-z]+[a-z0-9-]+[a-z0-9]$`), "Allows only lowercase letters(a-z), numbers, hyphen (-). Must start with an alphabetic character, must end with an English letter or number"),
    )),
},