cloud-barista / cb-tumblebug

Cloud-Barista Multi-Cloud Infra Management Framework
Apache License 2.0
53 stars 53 forks source link

When calling SetK8sNodeGroupAutoscaling, I got error 'unexpected response data type' #1677

Closed sykim-etri closed 3 months ago

sykim-etri commented 3 months ago

Azure 대상으로 K8sCluster를 생성한 후 AddNodeGroup, ChangeK8sNodeGroupAutoscaleSize 등을 수행하였고, SetK8sNodeGroupAutoScaling API를 호출했을 때 아래와 같은 에러가 발생하였습니다.

6:32PM DBG api/rest/server/mcis/k8scluster.go:245 > [PUT K8s Set AutoScaling]                                                                                                                
6:32PM INF core/mcis/k8scluster.go:1022 > SetK8sNodeGroupAutoscaling                                                                                                                         
6:32PM DBG core/mcis/k8scluster.go:1339 > [Check K8sCluster] tb111                                                                                                                           
[CLOUD-BARISTA].[INFO]: 2024-07-15 18:32:32 nutsdb-driver.go:133, github.com/cloud-barista/cb-store/store-drivers/nutsdb-driver.(*NUTSDBDriver).Get() - Key:/ns/ns01/k8scluster/tb111        
6:32PM DBG core/mcis/k8scluster.go:1060 > key: /ns/ns01/k8scluster/tb111
[CLOUD-BARISTA].[INFO]: 2024-07-15 18:32:32 nutsdb-driver.go:133, github.com/cloud-barista/cb-store/store-drivers/nutsdb-driver.(*NUTSDBDriver).Get() - Key:/ns/ns01/k8scluster/tb111        
6:32PM ERR api/rest/server/middlewares/custom-middleware/custom-middleware.go:220 > unexpected response data type
6:32PM INF api/rest/server/middlewares/custom-middleware/custom-middleware.go:62 > request URI=/tumblebug/ns/ns01/k8scluster/tb111/k8snodegroup/ng111/onautoscaling bytes_in=32 bytes_out=5 client_ip=127.0.0.1 id=1721035952707675265 latency_human=7.919302271s method=PUT status=200                  

https://github.com/cloud-barista/cb-tumblebug/blob/39be18ef205cc9b8ca504de5d2271a3190a30395/src/api/rest/server/middlewares/custom-middleware/custom-middleware.go#L210-L221

yunkon-kim commented 3 months ago

호출하신 API가 PUT /ns/{nsId}/k8scluster/{k8sClusterId}/k8snodegroup/{k8sNodeGroupName}/onautoscaling 맞으신지요?

sykim-etri commented 3 months ago

호출하신 API가 PUT /ns/{nsId}/k8scluster/{k8sClusterId}/k8snodegroup/{k8sNodeGroupName}/onautoscaling 맞으신지요?

네.. 맞습니다.

yunkon-kim commented 3 months ago

우선, 성공 또는 실패에 대한 Response body가 위 3가지 케이스 안에 포함되지 않아 발생한 오류로 보입니다. API Reponse body 확인하여 보완해 놓겠습니다.

sykim-etri commented 3 months ago

우선, 성공 또는 실패에 대한 Response body가 위 3가지 케이스 안에 포함되지 않아 발생한 오류로 보입니다. API Reponse body 확인하여 보완해 놓겠습니다.

아하.. 조언 감사합니다. 해당 API에서 object가 아닌 bool을 리턴하는 것 때문인 것으로 보입니다. object 형태 등 리턴되도록 처리하겠습니다~

yunkon-kim commented 3 months ago

@sykim-etri 벌써 이슈를 파악하셨네요 ^^ 앞으로, 관련 에러 발생 시 로그 상에서 data type을 확인할 수 있도록 보완해 두었습니다. #1681

@sykim-etri @seokho-son 위 코드를 적용할 당시에 REST API 응답의 데이터 타입은 JSON object, JSON array, JSON string 세 가지이면 괜찮겠다 싶어 적용해둔 부분입니다. 이참에, API 응답 직전에 다른 타입의 응답 바디를 로깅/기록해야 하는 케이스를 파악하여 개선해 놓고자 합니다. 혹시, 생각나시는 부분이 있으시면 공유해 주시기 바랍니다.