Compare commits

...

6 Commits

Author SHA1 Message Date
Stéphane Busso
52886b5f35 Update api/http/proxy/factory/azure/containergroup.go 2021-05-05 19:54:49 +12:00
Stéphane Busso
d53d5d4791 Update api/http/proxy/factory/azure/containergroup.go 2021-05-05 19:50:38 +12:00
Stéphane Busso
15fcfcfa0e Update api/http/proxy/factory/azure/containergroup.go 2021-05-05 19:50:31 +12:00
ArrisLee
0340e36430 return json instead of plain text for err msg 2021-05-05 19:12:08 +12:00
ArrisLee
afebc83a4d modify response status code and err message 2021-05-05 18:04:18 +12:00
ArrisLee
44952382ce add existing continer instance checking logic 2021-05-05 15:50:41 +12:00

View File

@@ -23,6 +23,36 @@ func (transport *Transport) proxyContainerGroupRequest(request *http.Request) (*
}
func (transport *Transport) proxyContainerGroupPutRequest(request *http.Request) (*http.Response, error) {
//add a lock before processing existense check
transport.mutex.Lock()
defer transport.mutex.Unlock()
//generate a temp http GET request based on the current PUT request
validationRequest := &http.Request{
Method: http.MethodGet,
URL: request.URL,
Header: http.Header{
"Authorization": []string{request.Header.Get("Authorization")},
},
}
//fire the request to Azure API to validate if there is an existing container instance with the same name
//positive - reject the request
//negative - continue the process
validationResponse, err := http.DefaultTransport.RoundTrip(validationRequest)
if err != nil {
return validationResponse, err
}
if validationResponse.StatusCode >= 200 && validationResponse.StatusCode < 300 {
resp := &http.Response{}
errObj := map[string]string{
"message": "A container instance with the same name already exists inside the selected resource group",
}
err = responseutils.RewriteResponse(resp, errObj, http.StatusConflict)
return resp, err
}
response, err := http.DefaultTransport.RoundTrip(request)
if err != nil {
return response, err