func()

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
}