in deployers/servicedeployer.go [1501:1540]
func (deployer *ServiceDeployer) deleteSwaggerApi(api *whisk.ApiCreateRequest) error {
var err error
var response *http.Response
// If there is no swagger file do nothing
if api == nil {
return nil
}
swaggerString := api.ApiDoc.Swagger
swaggerObj := new(whisk.ApiSwagger)
err = json.Unmarshal([]byte(swaggerString), swaggerObj)
if err != nil {
return err
}
apiDeleteReqOptions := new(whisk.ApiDeleteRequestOptions)
apiDeleteReqOptions.AccessToken = deployer.Client.Config.ApigwAccessToken
apiDeleteReqOptions.ApiBasePath = swaggerObj.BasePath
// In the case of IAM namespaces, we must use the ApigwTenantId as the SpaceGuid
// IAM namespaces can be detected by seeing if the ApigwTenantId is populated
if len(deployer.Client.Config.ApigwTenantId) > 0 {
apiDeleteReqOptions.SpaceGuid = deployer.Client.Config.ApigwTenantId
} else {
apiDeleteReqOptions.SpaceGuid = strings.Split(deployer.Client.Config.AuthToken, ":")[0]
}
a := new(whisk.ApiDeleteRequest)
a.Swagger = swaggerString
err = retry(DEFAULT_ATTEMPTS, DEFAULT_INTERVAL, func() error {
response, err = deployer.Client.Apis.Delete(a, apiDeleteReqOptions)
return err
})
if err != nil {
return createWhiskClientError(err.(*whisk.WskError), response, parsers.YAML_KEY_API, true)
}
return nil
}