ccv2

package
v6.40.1+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 31, 2018 License: Apache-2.0 Imports: 20 Imported by: 180

Documentation

Overview

Package ccv2 represents a Cloud Controller V2 client.

These sets of packages are still under development/pre-pre-pre...alpha. Use at your own risk! Functionality and design may change without warning.

It is currently designed to support Cloud Controller API 2.58.0. However, it may include features and endpoints of later API versions.

For more information on the Cloud Controller API see https://apidocs.cloudfoundry.org/

Method Naming Conventions

The client takes a '<Action Name><Top Level Endpoint><nth... level endpoint><Return Value>' approach to method names. If the <Top Level Endpoint> and <Return Value> are similar, they do not need to be repeated. If a GUID is required for the <Top Level Endpoint>, the pluralization is removed from said endpoint in the method name.

For Example:

Method Name: GetApplication
Endpoint: /v2/applications/:guid
Action Name: GET
Top Level Endpoint: applications
Return Value: Application

Method Name: GetServiceInstances
Endpoint: /v2/service_instances
Action Name: GET
Top Level Endpoint: service_instances
Return Value: []ServiceInstance

Method Name: GetSpaceServiceInstances
Endpoint: /v2/spaces/:guid/service_instances
Action Name: GET
Top Level Endpoint: spaces
Return Value: []ServiceInstance

Method Name: UpdateRouteApplication
Endpoint: /v2/routes/:route_guid/apps/:app_guid
Action Name: PUT
Top Level Endpoint: routes
Second Level Endpoint: Application
Return Value: Route

Method Name: DeleteSpaceJob
Endpoint: /v2/spaces/:space_guid
Action Name: DELETE
Top Level Endpoint: spaces
Return Value: Job

Use the following table to determine which HTTP Command equates to which Action Name:

HTTP Command -> Action Name
POST -> Create
GET -> Get
PUT -> Update
DELETE -> Delete
PATCH -> Patch

Method Locations

Methods exist in the same file as their return type, regardless of which endpoint they use.

Error Handling

All error handling that requires parsing the error_code/code returned back from the Cloud Controller should be placed in the errorWrapper. Everything else can be handled in the individual operations. All errors structs should be placed in individual files in the ccerror package.

No inline-relations-depth And summary Endpoints

This package will not ever use 'inline-relations-depth' or the '/summary' endpoints for any operations. These requests can be extremely taxing on the Cloud Controller and are avoided at all costs. Additionally, the objects returned back from these requests can become extremely inconsistent across versions and are problematic to deal with in general.

An additional problem that occurs with these endpoints is that lists of 51+ objects do not get returned by the CC. Example: Summary of Organizations includes a list of spaces. If there are 50 spaces, the endpoint returns these spaces under the 'spaces' field; if there are 51+, spaces, the 'spaces' field is missing from the CC return.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConvertFilterParameters

func ConvertFilterParameters(filters []Filter) url.Values

ConvertFilterParameters converts a Filter object into a collection that cloudcontroller.Request can accept.

Types

type APIInformation

type APIInformation struct {

	// APIVersion is the Cloud Controller API version number.
	APIVersion string `json:"api_version"`

	// AuthorizationEndpoint is the authorization endpoint for the targeted Cloud
	// Controller.
	AuthorizationEndpoint string `json:"authorization_endpoint"`

	// DopplerEndpoint is the Doppler endpoint for the targeted Cloud Controller.
	DopplerEndpoint string `json:"doppler_logging_endpoint"`

	// MinCLIVersion is the minimum CLI version number required for the targeted
	// Cloud Controller.
	MinCLIVersion string `json:"min_cli_version"`

	// MinimumRecommendedCLIVersion is the minimum CLI version number recommended
	// for the targeted Cloud Controller.
	MinimumRecommendedCLIVersion string `json:"min_recommended_cli_version"`

	// Name is the name given to the targeted Cloud Controller.
	Name string `json:"name"`

	// RoutingEndpoint is the Routing endpoint for the targeted Cloud Controller.
	RoutingEndpoint string `json:"routing_endpoint"`

	// TokenEndpoint is the endpoint to retrieve a refresh token for the targeted
	// Cloud Controller.
	TokenEndpoint string `json:"token_endpoint"`
}

APIInformation represents the information returned back from /v2/info

type Application

type Application struct {
	// Buildpack is the buildpack set by the user.
	Buildpack types.FilteredString

	// Command is the user specified start command.
	Command types.FilteredString

	// DetectedBuildpack is the buildpack automatically detected.
	DetectedBuildpack types.FilteredString

	// DetectedStartCommand is the command used to start the application.
	DetectedStartCommand types.FilteredString

	// DiskQuota is the disk given to each instance, in megabytes.
	DiskQuota types.NullByteSizeInMb

	// DockerCredentials is the authentication information for the provided
	// DockerImage.
	DockerCredentials DockerCredentials

	// DockerImage is the docker image location.
	DockerImage string

	// EnvironmentVariables are the environment variables passed to the app.
	EnvironmentVariables map[string]string

	// GUID is the unique application identifier.
	GUID string

	// HealthCheckTimeout is the number of seconds for health checking of an
	// staged app when starting up.
	HealthCheckTimeout int

	// HealthCheckType is the type of health check that will be done to the app.
	HealthCheckType constant.ApplicationHealthCheckType

	// HealthCheckHTTPEndpoint is the url of the http health check endpoint.
	HealthCheckHTTPEndpoint string

	// Instances is the total number of app instances.
	Instances types.NullInt

	// Memory is the memory given to each instance, in megabytes.
	Memory types.NullByteSizeInMb

	// Name is the name given to the application.
	Name string

	// PackageState represents the staging state of the application bits.
	PackageState constant.ApplicationPackageState

	// PackageUpdatedAt is the last time the app bits were updated. In RFC3339.
	PackageUpdatedAt time.Time

	// SpaceGUID is the GUID of the app's space.
	SpaceGUID string

	// StackGUID is the GUID for the Stack the application is running on.
	StackGUID string

	// StagingFailedDescription is the verbose description of why the package
	// failed to stage.
	StagingFailedDescription string

	// StagingFailedReason is the reason why the package failed to stage.
	StagingFailedReason string

	// State is the desired state of the application.
	State constant.ApplicationState
}

Application represents a Cloud Controller Application.

func (Application) MarshalJSON

func (application Application) MarshalJSON() ([]byte, error)

MarshalJSON converts an application into a Cloud Controller Application.

func (*Application) UnmarshalJSON

func (application *Application) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Application response.

type ApplicationInstance

type ApplicationInstance struct {
	// Details are arbitrary information about the instance.
	Details string

	// ID is the instance ID.
	ID int

	// Since is the Unix time stamp that represents the time the instance was
	// created.
	Since float64

	// State is the instance's state.
	State constant.ApplicationInstanceState
}

ApplicationInstance represents a Cloud Controller Application Instance.

func (*ApplicationInstance) UnmarshalJSON

func (instance *ApplicationInstance) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller application instance response.

type ApplicationInstanceStatus

type ApplicationInstanceStatus struct {
	// CPU is the instance's CPU utilization percentage.
	CPU float64

	// Disk is the instance's disk usage in bytes.
	Disk int

	// DiskQuota is the instance's allowed disk usage in bytes.
	DiskQuota int

	// ID is the instance ID.
	ID int

	// IsolationSegment that the app is currently running on.
	IsolationSegment string

	// Memory is the instance's memory usage in bytes.
	Memory int

	// MemoryQuota is the instance's allowed memory usage in bytes.
	MemoryQuota int

	// State is the instance's state.
	State constant.ApplicationInstanceState

	// Uptime is the number of seconds the instance has been running.
	Uptime int
}

ApplicationInstanceStatus represents a Cloud Controller Application Instance.

func (*ApplicationInstanceStatus) UnmarshalJSON

func (instance *ApplicationInstanceStatus) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller application instance response.

type Buildpack

type Buildpack struct {
	Locked   types.NullBool
	Enabled  types.NullBool
	GUID     string
	Name     string
	Position types.NullInt
	Stack    string
}

Buildpack represents a Cloud Controller Buildpack.

func (Buildpack) MarshalJSON

func (buildpack Buildpack) MarshalJSON() ([]byte, error)

func (*Buildpack) UnmarshalJSON

func (buildpack *Buildpack) UnmarshalJSON(data []byte) error

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client is a client that can be used to talk to a Cloud Controller's V2 Endpoints.

func NewClient

func NewClient(config Config) *Client

NewClient returns a new Cloud Controller Client.

func (*Client) API

func (client *Client) API() string

API returns the Cloud Controller API URL for the targeted Cloud Controller.

func (*Client) APIVersion

func (client *Client) APIVersion() string

APIVersion returns Cloud Controller API Version for the targeted Cloud Controller.

func (*Client) AuthorizationEndpoint

func (client *Client) AuthorizationEndpoint() string

AuthorizationEndpoint returns the authorization endpoint for the targeted Cloud Controller.

func (*Client) CheckRoute

func (client *Client) CheckRoute(route Route) (bool, Warnings, error)

CheckRoute returns true if the route exists in the CF instance.

func (*Client) CreateApplication

func (client *Client) CreateApplication(app Application) (Application, Warnings, error)

CreateApplication creates a cloud controller application in with the given settings. SpaceGUID and Name are the only required fields.

func (*Client) CreateBuildpack

func (client *Client) CreateBuildpack(buildpack Buildpack) (Buildpack, Warnings, error)

CreateBuildpack creates a new buildpack.

func (*Client) CreateOrganization

func (client *Client) CreateOrganization(orgName string, quotaGUID string) (Organization, Warnings, error)

func (*Client) CreateRoute

func (client *Client) CreateRoute(route Route, generatePort bool) (Route, Warnings, error)

CreateRoute creates the route with the given properties; SpaceGUID and DomainGUID are required Route properties. Additional configuration rules: - generatePort = true to generate a random port on the cloud controller. - generatePort takes precedence over the provided port. Setting the port and generatePort only works with CC API 2.53.0 or higher and when TCP router groups are enabled.

func (*Client) CreateServiceBinding

func (client *Client) CreateServiceBinding(appGUID string, serviceInstanceGUID string, bindingName string, acceptsIncomplete bool, parameters map[string]interface{}) (ServiceBinding, Warnings, error)

func (*Client) CreateServiceKey

func (client *Client) CreateServiceKey(serviceInstanceGUID string, keyName string, parameters map[string]interface{}) (ServiceKey, Warnings, error)

CreateServiceKey creates a new service key using the provided name and parameters for the requested service instance.

func (*Client) CreateSharedDomain

func (client *Client) CreateSharedDomain(domainName string, routerGroupdGUID string) (Warnings, error)

func (*Client) CreateSpace

func (client *Client) CreateSpace(spaceName string, orgGUID string) (Space, Warnings, error)

CreateSpace creates a new space with the provided spaceName in the org with the provided orgGUID.

func (*Client) CreateUser

func (client *Client) CreateUser(uaaUserID string) (User, Warnings, error)

CreateUser creates a new Cloud Controller User from the provided UAA user ID.

func (*Client) DeleteOrganization

func (client *Client) DeleteOrganization(guid string) (Job, Warnings, error)

DeleteOrganization deletes the Organization associated with the provided GUID. It will return the Cloud Controller job that is assigned to the Organization deletion.

func (*Client) DeleteOrganizationJob

func (client *Client) DeleteOrganizationJob(guid string) (Job, Warnings, error)

DeleteOrganizationJob deletes the Organization associated with the provided GUID. It will return the Cloud Controller job that is assigned to the Organization deletion.

func (*Client) DeleteRoute

func (client *Client) DeleteRoute(routeGUID string) (Warnings, error)

DeleteRoute deletes the Route associated with the provided Route GUID.

func (*Client) DeleteRouteApplication

func (client *Client) DeleteRouteApplication(routeGUID string, appGUID string) (Warnings, error)

DeleteRouteApplication removes the link between the route and application.

func (*Client) DeleteSecurityGroupSpace

func (client *Client) DeleteSecurityGroupSpace(securityGroupGUID string, spaceGUID string) (Warnings, error)

DeleteSecurityGroupSpace disassociates a security group in the running phase for the lifecycle, specified by its GUID, from a space, which is also specified by its GUID.

func (*Client) DeleteSecurityGroupStagingSpace

func (client *Client) DeleteSecurityGroupStagingSpace(securityGroupGUID string, spaceGUID string) (Warnings, error)

DeleteSecurityGroupStagingSpace disassociates a security group in the staging phase fo the lifecycle, specified by its GUID, from a space, which is also specified by its GUID.

func (*Client) DeleteServiceBinding

func (client *Client) DeleteServiceBinding(serviceBindingGUID string, acceptsIncomplete bool) (ServiceBinding, Warnings, error)

DeleteServiceBinding deletes the specified Service Binding. An updated service binding is returned only if acceptsIncomplete is true.

func (*Client) DeleteSpace

func (client *Client) DeleteSpace(guid string) (Job, Warnings, error)

DeleteSpace deletes the Space associated with the provided GUID. It will return the Cloud Controller job that is assigned to the Space deletion.

func (*Client) DeleteSpaceJob

func (client *Client) DeleteSpaceJob(guid string) (Job, Warnings, error)

DeleteSpaceJob deletes the Space associated with the provided GUID. It will return the Cloud Controller job that is assigned to the Space deletion.

func (*Client) DopplerEndpoint

func (client *Client) DopplerEndpoint() string

DopplerEndpoint returns the Doppler endpoint for the targetd Cloud Controller.

func (*Client) GetApplication

func (client *Client) GetApplication(guid string) (Application, Warnings, error)

GetApplication returns back an Application.

func (*Client) GetApplicationApplicationInstanceStatuses

func (client *Client) GetApplicationApplicationInstanceStatuses(guid string) (map[int]ApplicationInstanceStatus, Warnings, error)

GetApplicationApplicationInstanceStatuses returns a list of ApplicationInstanceStatus for a given application. Depending on the state of an application, it might skip some application instance statuses.

func (*Client) GetApplicationApplicationInstances

func (client *Client) GetApplicationApplicationInstances(guid string) (map[int]ApplicationInstance, Warnings, error)

GetApplicationApplicationInstances returns a list of ApplicationInstance for a given application. Depending on the state of an application, it might skip some application instances.

func (*Client) GetApplicationRoutes

func (client *Client) GetApplicationRoutes(appGUID string, filters ...Filter) ([]Route, Warnings, error)

GetApplicationRoutes returns a list of Routes associated with the provided Application GUID, and filtered by the provided filters.

func (*Client) GetApplications

func (client *Client) GetApplications(filters ...Filter) ([]Application, Warnings, error)

GetApplications returns back a list of Applications based off of the provided filters.

func (*Client) GetBuildpacks

func (client *Client) GetBuildpacks(filters ...Filter) ([]Buildpack, Warnings, error)

GetBuildpacks searches for a buildpack with the given name and returns it if it exists.

func (Client) GetConfigFeatureFlags

func (client Client) GetConfigFeatureFlags() ([]FeatureFlag, Warnings, error)

GetConfigFeatureFlags retrieves a list of FeatureFlag from the Cloud Controller.

func (*Client) GetEvents

func (client *Client) GetEvents(filters ...Filter) ([]Event, Warnings, error)

GetEvents returns back a list of Events based off of the provided queries.

func (*Client) GetJob

func (client *Client) GetJob(jobGUID string) (Job, Warnings, error)

GetJob returns a job for the provided GUID.

func (*Client) GetOrganization

func (client *Client) GetOrganization(guid string) (Organization, Warnings, error)

GetOrganization returns an Organization associated with the provided GUID.

func (*Client) GetOrganizationPrivateDomains

func (client *Client) GetOrganizationPrivateDomains(orgGUID string, filters ...Filter) ([]Domain, Warnings, error)

GetOrganizationPrivateDomains returns the private domains associated with an organization.

func (*Client) GetOrganizationQuota

func (client *Client) GetOrganizationQuota(guid string) (OrganizationQuota, Warnings, error)

GetOrganizationQuota returns an Organization Quota associated with the provided GUID.

func (*Client) GetOrganizationQuotas

func (client *Client) GetOrganizationQuotas(filters ...Filter) ([]OrganizationQuota, Warnings, error)

GetOrganizationQuotas returns an Organization Quota list associated with the provided filters.

func (*Client) GetOrganizations

func (client *Client) GetOrganizations(filters ...Filter) ([]Organization, Warnings, error)

GetOrganizations returns back a list of Organizations based off of the provided filters.

func (*Client) GetPrivateDomain

func (client *Client) GetPrivateDomain(domainGUID string) (Domain, Warnings, error)

GetPrivateDomain returns the Private Domain associated with the provided Domain GUID.

func (*Client) GetPrivateDomains

func (client *Client) GetPrivateDomains(filters ...Filter) ([]Domain, Warnings, error)

GetPrivateDomains returns the private domains this client has access to.

func (*Client) GetRoute

func (client *Client) GetRoute(guid string) (Route, Warnings, error)

GetRoute returns a route with the provided guid.

func (*Client) GetRouteApplications

func (client *Client) GetRouteApplications(routeGUID string, filters ...Filter) ([]Application, Warnings, error)

GetRouteApplications returns a list of Applications based off a route GUID and the provided filters.

func (*Client) GetRouteMapping

func (client *Client) GetRouteMapping(guid string) (RouteMapping, Warnings, error)

GetRouteMapping returns a route mapping with the provided guid.

func (*Client) GetRouteMappings

func (client *Client) GetRouteMappings(filters ...Filter) ([]RouteMapping, Warnings, error)

GetRouteMappings returns a list of RouteMappings based off of the provided queries.

func (*Client) GetRoutes

func (client *Client) GetRoutes(filters ...Filter) ([]Route, Warnings, error)

GetRoutes returns a list of Routes based off of the provided filters.

func (*Client) GetSecurityGroupSpaces

func (client *Client) GetSecurityGroupSpaces(securityGroupGUID string) ([]Space, Warnings, error)

GetSecurityGroupSpaces returns a list of Spaces based on the provided SecurityGroup GUID.

func (*Client) GetSecurityGroupStagingSpaces

func (client *Client) GetSecurityGroupStagingSpaces(securityGroupGUID string) ([]Space, Warnings, error)

GetSecurityGroupStagingSpaces returns a list of Spaces based on the provided SecurityGroup GUID.

func (*Client) GetSecurityGroups

func (client *Client) GetSecurityGroups(filters ...Filter) ([]SecurityGroup, Warnings, error)

GetSecurityGroups returns a list of Security Groups based off the provided filters.

func (*Client) GetService

func (client *Client) GetService(serviceGUID string) (Service, Warnings, error)

GetService returns the service with the given GUID.

func (*Client) GetServiceBinding

func (client *Client) GetServiceBinding(guid string) (ServiceBinding, Warnings, error)

GetServiceBinding returns back a service binding with the provided GUID.

func (*Client) GetServiceBindings

func (client *Client) GetServiceBindings(filters ...Filter) ([]ServiceBinding, Warnings, error)

GetServiceBindings returns back a list of Service Bindings based off of the provided filters.

func (*Client) GetServiceBrokers

func (client *Client) GetServiceBrokers(filters ...Filter) ([]ServiceBroker, Warnings, error)

GetServiceBrokers returns back a list of Service Brokers given the provided filters.

func (*Client) GetServiceInstance

func (client *Client) GetServiceInstance(serviceInstanceGUID string) (ServiceInstance, Warnings, error)

GetServiceInstance returns the service instance with the given GUID. This service can be either a managed or user provided.

func (*Client) GetServiceInstanceServiceBindings

func (client *Client) GetServiceInstanceServiceBindings(serviceInstanceGUID string) ([]ServiceBinding, Warnings, error)

GetServiceInstanceServiceBindings returns back a list of Service Bindings for the provided service instance GUID.

func (*Client) GetServiceInstanceSharedFrom

func (client *Client) GetServiceInstanceSharedFrom(serviceInstanceGUID string) (ServiceInstanceSharedFrom, Warnings, error)

GetServiceInstanceSharedFrom returns back a ServiceInstanceSharedFrom object.

func (*Client) GetServiceInstanceSharedTos

func (client *Client) GetServiceInstanceSharedTos(serviceInstanceGUID string) ([]ServiceInstanceSharedTo, Warnings, error)

GetServiceInstanceSharedTos returns a list of ServiceInstanceSharedTo objects.

func (*Client) GetServiceInstances

func (client *Client) GetServiceInstances(filters ...Filter) ([]ServiceInstance, Warnings, error)

GetServiceInstances returns back a list of *managed* Service Instances based off of the provided filters.

func (*Client) GetServicePlan

func (client *Client) GetServicePlan(servicePlanGUID string) (ServicePlan, Warnings, error)

GetServicePlan returns the service plan with the given GUID.

func (*Client) GetServicePlanVisibilities

func (client *Client) GetServicePlanVisibilities(filters ...Filter) ([]ServicePlanVisibility, Warnings, error)

GetServicePlanVisibilities returns back a list of Service Plan Visibilities given the provided filters.

func (*Client) GetServicePlans

func (client *Client) GetServicePlans(filters ...Filter) ([]ServicePlan, Warnings, error)

func (*Client) GetServices

func (client *Client) GetServices(filters ...Filter) ([]Service, Warnings, error)

GetServices returns a list of Services given the provided filters.

func (*Client) GetSharedDomain

func (client *Client) GetSharedDomain(domainGUID string) (Domain, Warnings, error)

GetSharedDomain returns the Shared Domain associated with the provided Domain GUID.

func (*Client) GetSharedDomains

func (client *Client) GetSharedDomains(filters ...Filter) ([]Domain, Warnings, error)

GetSharedDomains returns the global shared domains.

func (*Client) GetSpaceQuotaDefinition

func (client *Client) GetSpaceQuotaDefinition(guid string) (SpaceQuota, Warnings, error)

GetSpaceQuotaDefinition returns a Space Quota.

func (*Client) GetSpaceQuotas

func (client *Client) GetSpaceQuotas(orgGUID string) ([]SpaceQuota, Warnings, error)

GetSpaceQuotas returns all the space quotas for the org

func (*Client) GetSpaceRoutes

func (client *Client) GetSpaceRoutes(spaceGUID string, filters ...Filter) ([]Route, Warnings, error)

GetSpaceRoutes returns a list of Routes associated with the provided Space GUID, and filtered by the provided filters.

func (*Client) GetSpaceSecurityGroups

func (client *Client) GetSpaceSecurityGroups(spaceGUID string, filters ...Filter) ([]SecurityGroup, Warnings, error)

GetSpaceSecurityGroups returns the running Security Groups associated with the provided Space GUID.

func (*Client) GetSpaceServiceInstances

func (client *Client) GetSpaceServiceInstances(spaceGUID string, includeUserProvidedServices bool, filters ...Filter) ([]ServiceInstance, Warnings, error)

GetSpaceServiceInstances returns back a list of Service Instances based off of the space and filters provided. User provided services will be included if includeUserProvidedServices is set to true.

func (*Client) GetSpaceStagingSecurityGroups

func (client *Client) GetSpaceStagingSecurityGroups(spaceGUID string, filters ...Filter) ([]SecurityGroup, Warnings, error)

GetSpaceStagingSecurityGroups returns the staging Security Groups associated with the provided Space GUID.

func (*Client) GetSpaces

func (client *Client) GetSpaces(filters ...Filter) ([]Space, Warnings, error)

GetSpaces returns a list of Spaces based off of the provided filters.

func (*Client) GetStack

func (client *Client) GetStack(guid string) (Stack, Warnings, error)

GetStack returns the requested stack.

func (*Client) GetStacks

func (client *Client) GetStacks(filters ...Filter) ([]Stack, Warnings, error)

GetStacks returns a list of Stacks based off of the provided filters.

func (*Client) GetUserProvidedServiceInstanceServiceBindings

func (client *Client) GetUserProvidedServiceInstanceServiceBindings(userProvidedServiceInstanceGUID string) ([]ServiceBinding, Warnings, error)

GetUserProvidedServiceInstanceServiceBindings returns back a list of Service Bindings for the provided user provided service instance GUID.

func (*Client) GetUserProvidedServiceInstances

func (client *Client) GetUserProvidedServiceInstances(filters ...Filter) ([]ServiceInstance, Warnings, error)

GetUserProvidedServiceInstances returns back a list of *user provided* Service Instances based off the provided queries.

func (*Client) Info

func (client *Client) Info() (APIInformation, Warnings, error)

Info returns back endpoint and API information from /v2/info.

func (*Client) MinCLIVersion

func (client *Client) MinCLIVersion() string

MinCLIVersion returns the minimum CLI version required for the targeted Cloud Controller

func (*Client) PollJob

func (client *Client) PollJob(job Job) (Warnings, error)

PollJob will keep polling the given job until the job has terminated, an error is encountered, or config.OverallPollingTimeout is reached. In the last case, a JobTimeoutError is returned.

func (*Client) RestageApplication

func (client *Client) RestageApplication(app Application) (Application, Warnings, error)

RestageApplication restages the application with the given GUID.

func (*Client) RoutingEndpoint

func (client *Client) RoutingEndpoint() string

RoutingEndpoint returns the Routing endpoint for the targeted Cloud Controller.

func (*Client) SetSpaceQuota

func (client *Client) SetSpaceQuota(spaceGUID string, quotaGUID string) (Warnings, error)

SetSpaceQuota should set the quota for the space and returns the warnings

func (*Client) TargetCF

func (client *Client) TargetCF(settings TargetSettings) (Warnings, error)

TargetCF sets the client to use the Cloud Controller specified in the configuration. Any other configuration is also applied to the client.

func (*Client) TokenEndpoint

func (client *Client) TokenEndpoint() string

TokenEndpoint returns the Token endpoint for the targeted Cloud Controller.

func (*Client) UpdateApplication

func (client *Client) UpdateApplication(app Application) (Application, Warnings, error)

UpdateApplication updates the application with the given GUID. Note: Sending DockerImage and StackGUID at the same time will result in an API error.

func (*Client) UpdateBuildpack

func (client *Client) UpdateBuildpack(buildpack Buildpack) (Buildpack, Warnings, error)

UpdateBuildpack updates the buildpack with the provided GUID and returns the updated buildpack. Note: Stack cannot be updated without uploading a new buildpack.

func (*Client) UpdateOrganizationManager

func (client *Client) UpdateOrganizationManager(guid string, uaaID string) (Warnings, error)

UpdateOrganizationManager assigns the org manager role to the UAA user or client with the provided ID.

func (*Client) UpdateOrganizationManagerByUsername

func (client *Client) UpdateOrganizationManagerByUsername(guid string, username string) (Warnings, error)

UpdateOrganizationManagerByUsername assigns the org manager role to the user with the provided name.

func (*Client) UpdateOrganizationUser

func (client *Client) UpdateOrganizationUser(guid string, uaaID string) (Warnings, error)

UpdateOrganizationUser makes the user or client with the given UAA ID a member of the org.

func (Client) UpdateOrganizationUserByUsername

func (client Client) UpdateOrganizationUserByUsername(orgGUID string, username string) (Warnings, error)

UpdateOrganizationUserByUsername makes the user with the given username a member of the org.

func (*Client) UpdateResourceMatch

func (client *Client) UpdateResourceMatch(resourcesToMatch []Resource) ([]Resource, Warnings, error)

UpdateResourceMatch returns the resources that exist on the cloud foundry instance from the set of resources given.

func (*Client) UpdateRouteApplication

func (client *Client) UpdateRouteApplication(routeGUID string, appGUID string) (Route, Warnings, error)

UpdateRouteApplication creates a link between the route and application.

func (*Client) UpdateSecurityGroupSpace

func (client *Client) UpdateSecurityGroupSpace(securityGroupGUID string, spaceGUID string) (Warnings, error)

UpdateSecurityGroupSpace associates a security group in the running phase for the lifecycle, specified by its GUID, from a space, which is also specified by its GUID.

func (*Client) UpdateSecurityGroupStagingSpace

func (client *Client) UpdateSecurityGroupStagingSpace(securityGroupGUID string, spaceGUID string) (Warnings, error)

UpdateSecurityGroupStagingSpace associates a security group in the staging phase for the lifecycle, specified by its GUID, from a space, which is also specified by its GUID.

func (*Client) UpdateSpaceDeveloper

func (client *Client) UpdateSpaceDeveloper(spaceGUID string, uaaID string) (Warnings, error)

UpdateSpaceDeveloper grants the space developer role to the user or client associated with the given UAA ID.

func (*Client) UpdateSpaceDeveloperByUsername

func (client *Client) UpdateSpaceDeveloperByUsername(spaceGUID string, username string) (Warnings, error)

UpdateSpaceDeveloperByUsername grants the given username the space developer role.

func (*Client) UpdateSpaceManager

func (client *Client) UpdateSpaceManager(spaceGUID string, uaaID string) (Warnings, error)

UpdateSpaceManager grants the space manager role to the user or client associated with the given UAA ID.

func (*Client) UpdateSpaceManagerByUsername

func (client *Client) UpdateSpaceManagerByUsername(spaceGUID string, username string) (Warnings, error)

UpdateSpaceManagerByUsername grants the given username the space manager role.

func (*Client) UploadApplicationPackage

func (client *Client) UploadApplicationPackage(appGUID string, existingResources []Resource, newResources Reader, newResourcesLength int64) (Job, Warnings, error)

UploadApplicationPackage uploads the newResources and a list of existing resources to the cloud controller. A job that combines the requested/newly uploaded bits is returned. The function will act differently given the following Readers:

io.ReadSeeker: Will function properly on retry.
io.Reader: Will return a ccerror.PipeSeekError on retry.
nil: Will not add the "application" section to the request.
newResourcesLength is ignored in this case.

func (*Client) UploadBuildpack

func (client *Client) UploadBuildpack(buildpackGUID string, buildpackPath string, buildpack io.Reader, buildpackLength int64) (Warnings, error)

UploadBuildpack uploads the contents of a buildpack zip to the server.

func (*Client) UploadDroplet

func (client *Client) UploadDroplet(appGUID string, droplet io.Reader, dropletLength int64) (Job, Warnings, error)

UploadDroplet defines and uploads a previously staged droplet that an application will run, using a multipart PUT request. The uploaded file should be a gzipped tar file.

func (*Client) WrapConnection

func (client *Client) WrapConnection(wrapper ConnectionWrapper)

WrapConnection wraps the current Client connection in the wrapper.

type Config

type Config struct {
	// AppName is the name of the application/process using the client.
	AppName string

	// AppVersion is the version of the application/process using the client.
	AppVersion string

	// JobPollingTimeout is the maximum amount of time a job polls for.
	JobPollingTimeout time.Duration

	// JobPollingInterval is the wait time between job polls.
	JobPollingInterval time.Duration

	// Wrappers that apply to the client connection.
	Wrappers []ConnectionWrapper
}

Config allows the Client to be configured

type ConnectionWrapper

type ConnectionWrapper interface {
	cloudcontroller.Connection
	Wrap(innerconnection cloudcontroller.Connection) cloudcontroller.Connection
}

ConnectionWrapper can wrap a given connection allowing the wrapper to modify all requests going in and out of the given connection.

type DockerCredentials

type DockerCredentials struct {
	// Username is the username for a user that has access to a given docker
	// image.
	Username string `json:"username,omitempty"`

	// Password is the password for the user.
	Password string `json:"password,omitempty"`
}

DockerCredentials are the authentication credentials to pull a docker image from it's repository.

type Domain

type Domain struct {
	// GUID is the unique domain identifier.
	GUID string

	// Internal indicates whether the domain is an internal domain.
	Internal bool

	// Name is the name given to the domain.
	Name string

	// RouterGroupGUID is the unique identier of the router group this domain is
	// assigned to.
	RouterGroupGUID string

	// RouterGroupType is the type of router group this domain is assigned to. It
	// can be of type `tcp` or `http`.
	RouterGroupType constant.RouterGroupType

	// DomainType is the access type of the domain. It can be either a domain
	// private to a single org or it can be a domain shared to all orgs.
	Type constant.DomainType
}

Domain represents a Cloud Controller Domain.

func (*Domain) UnmarshalJSON

func (domain *Domain) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Domain response.

type Event

type Event struct {
	// GUID is the unique event identifier.
	GUID string

	// Type is the type of event.
	Type constant.EventType

	// ActorGUID is the GUID of the actor initiating an event.
	ActorGUID string

	// ActorType is the type of actor initiating an event.
	ActorType string

	// ActorName is the name of the actor initiating an event.
	ActorName string

	// ActeeGUID is the GUID of the cc object affected by an event.
	ActeeGUID string

	// ActeeType is the type of the cc object affected by an event.
	ActeeType string

	// ActeeName is the name of the cc object affected by an event.
	ActeeName string

	// Timestamp is the event creation time.
	Timestamp time.Time

	// Metadata contains additional information about the event.
	Metadata map[string]interface{}
}

Event represents a Cloud Controller Event

func (*Event) UnmarshalJSON

func (event *Event) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Event response.

type FeatureFlag

type FeatureFlag struct {
	// Name is a string representation of the Cloud Controller
	// feature flag's name.
	Name string `json:"name"`

	// Enabled is the status of the Cloud Controller feature
	// flag.
	Enabled bool `json:"enabled"`
}

FeatureFlag represents a Cloud Controller feature flag.

type Filter

type Filter struct {
	// Type is the component that determines what the query is filtered by.
	Type constant.FilterType

	// Operator is the component that determines how the the query will be filtered.
	Operator constant.FilterOperator

	// Values is the component that determines what values are filtered.
	Values []string
}

Filter is a type of filter that can be passed to specific request to narrow down the return set.

type Job

type Job struct {

	// Error is the error a job returns if it failed. It is otherwise empty.
	Error string

	// ErrorDetails is a detailed description of a job failure returned by the
	// Cloud Controller.
	ErrorDetails struct {
		Description string
	}

	// GUID is the unique job identifier.
	GUID string

	// Status is the current state of the job.
	Status constant.JobStatus
}

Job represents a Cloud Controller Job.

func (Job) Failed

func (job Job) Failed() bool

Failed returns true when the job has completed with an error/failure.

func (Job) Finished

func (job Job) Finished() bool

Finished returns true when the job has completed successfully.

func (*Job) UnmarshalJSON

func (job *Job) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Job response.

type LastOperation

type LastOperation struct {
	// Type is the type of operation that was last performed or currently being
	// performed on the service instance.
	Type string `json:"type"`

	// State is the status of the last operation or current operation being
	// performed on the service instance.
	State constant.LastOperationState `json:"state"`

	// Description is the service broker-provided description of the operation.
	Description string `json:"description"`

	// UpdatedAt is the timestamp that the Cloud Controller last checked the
	// service instance state from the broker.
	UpdatedAt string `json:"updated_at"`

	// CreatedAt is the timestamp that the Cloud Controller created the service
	// instance from the broker.
	CreatedAt string `json:"created_at"`
}

LastOperation is the status of the last operation requested on a service instance.

type Organization

type Organization struct {

	// GUID is the unique Organization identifier.
	GUID string

	// Name is the organization's name.
	Name string

	// QuotaDefinitionGUID is unique identifier of the quota assigned to this
	// organization.
	QuotaDefinitionGUID string

	// DefaultIsolationSegmentGUID is the unique identifier of the isolation
	// segment this organization is tagged with.
	DefaultIsolationSegmentGUID string
}

Organization represents a Cloud Controller Organization.

func (*Organization) UnmarshalJSON

func (org *Organization) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Organization response.

type OrganizationQuota

type OrganizationQuota struct {

	// GUID is the unique OrganizationQuota identifier.
	GUID string

	// Name is the name of the OrganizationQuota.
	Name string
}

OrganizationQuota is the definition of a quota for an organization.

func (*OrganizationQuota) UnmarshalJSON

func (application *OrganizationQuota) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller organization quota response.

type PaginatedResources

type PaginatedResources struct {
	NextURL        string          `json:"next_url"`
	ResourcesBytes json.RawMessage `json:"resources"`
	// contains filtered or unexported fields
}

PaginatedResources represents a page of resources returned by the Cloud Controller.

func NewPaginatedResources

func NewPaginatedResources(exampleResource interface{}) *PaginatedResources

NewPaginatedResources returns a new PaginatedResources struct with the given resource type.

func (PaginatedResources) Resources

func (pr PaginatedResources) Resources() ([]interface{}, error)

Resources unmarshals JSON representing a page of resources and returns a slice of the given resource type.

type Params

type Params map[string]string

Params represents URI parameters for a request.

type Reader

type Reader interface {
	io.Reader
}

Reader is an io.Reader.

type Resource

type Resource struct {

	// Filename is the name of the resource.
	Filename string `json:"fn"`

	// Mode is the operating system file mode (aka file permissions) of the
	// resource.
	Mode os.FileMode `json:"mode"`

	// SHA1 represents the SHA-1 hash of the resource.
	SHA1 string `json:"sha1"`

	// Size represents the file size of the resource.
	Size int64 `json:"size"`
}

Resource represents a Cloud Controller Resource.

func (Resource) MarshalJSON

func (r Resource) MarshalJSON() ([]byte, error)

MarshalJSON converts a resource into a Cloud Controller Resource.

func (*Resource) UnmarshalJSON

func (r *Resource) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Resource response.

type Route

type Route struct {

	// GUID is the unique Route identifier.
	GUID string `json:"-"`

	// Host is the hostname of the route.
	Host string `json:"host,omitempty"`

	// Path is the path of the route.
	Path string `json:"path,omitempty"`

	// Port is the port number of the route.
	Port types.NullInt `json:"port,omitempty"`

	// DomainGUID is the unique Domain identifier.
	DomainGUID string `json:"domain_guid"`

	// SpaceGUID is the unique Space identifier.
	SpaceGUID string `json:"space_guid"`
}

Route represents a Cloud Controller Route.

func (*Route) UnmarshalJSON

func (route *Route) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Route response.

type RouteMapping

type RouteMapping struct {
	// GUID is the unique route mapping identifier.
	GUID string

	// AppGUID is the unique application identifier.
	AppGUID string

	// RouteGUID is the unique route identifier.
	RouteGUID string
}

RouteMapping represents a Cloud Controller map between an application and route.

func (*RouteMapping) UnmarshalJSON

func (routeMapping *RouteMapping) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Route Mapping

type SecurityGroup

type SecurityGroup struct {
	// GUID is the unique Security Group identifier.
	GUID string
	// Name is the Security Group's name.
	Name string
	// Rules are the Security Group Rules associated with this Security Group.
	Rules []SecurityGroupRule
	// RunningDefault is true when this Security Group is applied to all running
	// apps in the CF instance.
	RunningDefault bool
	// StagingDefault is true when this Security Group is applied to all staging
	// apps in the CF instance.
	StagingDefault bool
}

SecurityGroup represents a Cloud Controller Security Group.

func (*SecurityGroup) UnmarshalJSON

func (securityGroup *SecurityGroup) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Security Group response

type SecurityGroupRule

type SecurityGroupRule struct {
	// Description is a short message discribing the rule.
	Description string

	// Destination is the destination CIDR or range of IPs.
	Destination string

	// Ports is the port or port range.
	Ports string

	// Protocol can be tcp, icmp, udp, all.
	Protocol string
}

SecurityGroupRule represents a Cloud Controller Security Group Role.

type Service

type Service struct {
	// GUID is the unique Service identifier.
	GUID string
	// Label is the name of the service.
	Label string
	// Description is a short blurb describing the service.
	Description string
	// DocumentationURL is a url that points to a documentation page for the
	// service.
	DocumentationURL string
	// Extra is a field with extra data pertaining to the service.
	Extra ServiceExtra
}

Service represents a Cloud Controller Service.

func (*Service) UnmarshalJSON

func (service *Service) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Service response.

type ServiceBinding

type ServiceBinding struct {
	// AppGUID is the associated application GUID.
	AppGUID string
	// GUID is the unique Service Binding identifier.
	GUID string
	// LastOperation
	LastOperation LastOperation
	// Name is the name of the service binding
	Name string
	// ServiceInstanceGUID is the associated service GUID.
	ServiceInstanceGUID string
}

ServiceBinding represents a Cloud Controller Service Binding.

func (*ServiceBinding) UnmarshalJSON

func (serviceBinding *ServiceBinding) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Service Binding response.

type ServiceBroker

type ServiceBroker struct {
	// GUID is the unique Service Broker identifier.
	GUID string
	// Name is the name of the service broker.
	Name string
}

ServiceBroker represents a Cloud Controller Service Broker.

func (*ServiceBroker) UnmarshalJSON

func (serviceBroker *ServiceBroker) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Service Broker response.

type ServiceExtra

type ServiceExtra struct {
	// DocumentationURL is the URL of the documentation page for the service.
	DocumentationURL string `json:"documentationUrl"`

	// Shareable is true if the service is shareable across organizations and
	// spaces.
	Shareable bool
}

ServiceExtra contains extra service related properties.

type ServiceInstance

type ServiceInstance struct {
	// GUID is the unique service instance identifier.
	GUID string

	// Name is the name given to the service instance.
	Name string

	// SpaceGUID is the unique identifier of the space that this service instance
	// belongs to.
	SpaceGUID string

	// ServiceGUID is the unique identifier of the service that this service
	// instance belongs to.
	ServiceGUID string

	// ServicePlanGUID is the unique identifier of the service plan that this
	// service instance belongs to.
	ServicePlanGUID string

	// Type is the type of service instance.
	Type constant.ServiceInstanceType

	// Tags is a list of all tags for the service instance.
	Tags []string

	// DashboardURL is the service-broker provided URL to access administrative
	// features of the service instance.
	DashboardURL string

	// LastOperation is the status of the last operation requested on the service
	// instance.
	LastOperation LastOperation
}

ServiceInstance represents a Cloud Controller Service Instance.

func (ServiceInstance) Managed

func (serviceInstance ServiceInstance) Managed() bool

Managed returns true if the Service Instance is a managed service.

func (*ServiceInstance) UnmarshalJSON

func (serviceInstance *ServiceInstance) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Service Instance response.

func (ServiceInstance) UserProvided

func (serviceInstance ServiceInstance) UserProvided() bool

UserProvided returns true if the Service Instance is a user provided service.

type ServiceInstanceSharedFrom

type ServiceInstanceSharedFrom struct {
	// SpaceGUID is the unique identifier of the space that this service is
	// shared from.
	SpaceGUID string `json:"space_guid"`

	// SpaceName is the name of the space that this service is shared from.
	SpaceName string `json:"space_name"`

	// OrganizationName is the name of the organization that this service is
	// shared from.
	OrganizationName string `json:"organization_name"`
}

ServiceInstanceSharedFrom represents a Cloud Controller relationship object that describes a service instance in another space (and possibly org) that this service instance is **shared from**.

type ServiceInstanceSharedTo

type ServiceInstanceSharedTo struct {
	// SpaceGUID is the unique identifier of the space that this service is
	// shared to.
	SpaceGUID string `json:"space_guid"`

	// SpaceName is the name of the space that this service is shared to.
	SpaceName string `json:"space_name"`

	// OrganizationName is the name of the organization that this service is
	// shared to.
	OrganizationName string `json:"organization_name"`

	// BoundAppCount is the number of apps that are bound to the shared to
	// service instance.
	BoundAppCount int `json:"bound_app_count"`
}

ServiceInstanceSharedTo represents a Cloud Controller relationship object that describes a service instance in another space (and possibly org) that this service is **shared to**.

type ServiceKey

type ServiceKey struct {
	// GUID is the unique Service Key identifier.
	GUID string
	// Name is the name of the service key.
	Name string
	// ServiceInstanceGUID is the associated service instance GUID.
	ServiceInstanceGUID string
	// Credentials are the credentials returned by the service broker for the service key.
	Credentials map[string]interface{}
}

ServiceKey represents a Cloud Controller Service Key.

func (*ServiceKey) UnmarshalJSON

func (serviceKey *ServiceKey) UnmarshalJSON(data []byte) error

type ServicePlan

type ServicePlan struct {
	//GUID is the unique identifier of the service plan.
	GUID string

	// Name is the name of the service plan.
	Name string

	// ServiceGUID is the unique identifier of the service that the service
	// plan belongs to.
	ServiceGUID string

	// Public is true if plan is accessible to all organizations.
	Public bool
}

ServicePlan represents a predefined set of configurations for a Cloud Controller service object.

func (*ServicePlan) UnmarshalJSON

func (servicePlan *ServicePlan) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Service Plan response.

type ServicePlanVisibility

type ServicePlanVisibility struct {
	// GUID is the unique Service Plan Visibility identifier.
	GUID string
	// ServicePlanGUID of the associated Service Plan.
	ServicePlanGUID string
	// OrganizationGUID of the associated Organization.
	OrganizationGUID string
}

ServicePlanVisibility represents a Cloud Controller Service Plan Visibility.

func (*ServicePlanVisibility) UnmarshalJSON

func (servicePlanVisibility *ServicePlanVisibility) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Service Plan Visibilities response.

type Space

type Space struct {
	// AllowSSH specifies whether SSH is enabled for this space.
	AllowSSH bool

	// GUID is the unique space identifier.
	GUID string

	// Name is the name given to the space.
	Name string

	// OrganizationGUID is the unique identifier of the organization this space
	// belongs to.
	OrganizationGUID string

	// SpaceQuotaDefinitionGUID is the unique identifier of the space quota
	// defined for this space.
	SpaceQuotaDefinitionGUID string
}

Space represents a Cloud Controller Space.

func (*Space) UnmarshalJSON

func (space *Space) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Space response.

type SpaceQuota

type SpaceQuota struct {

	// GUID is the unique space quota identifier.
	GUID string

	// Name is the name given to the space quota.
	Name string
}

SpaceQuota represents the Cloud Controller configured quota assigned to the space.

func (*SpaceQuota) UnmarshalJSON

func (spaceQuota *SpaceQuota) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Space Quota response.

type Stack

type Stack struct {
	// GUID is the unique stack identifier.
	GUID string

	// Name is the name given to the stack.
	Name string

	// Description is the description of the stack.
	Description string
}

Stack represents a Cloud Controller Stack.

func (*Stack) UnmarshalJSON

func (stack *Stack) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Stack response.

type TargetSettings

type TargetSettings struct {
	// DialTimeout is the DNS timeout used to make all requests to the Cloud
	// Controller.
	DialTimeout time.Duration

	// SkipSSLValidation controls whether a client verifies the server's
	// certificate chain and host name. If SkipSSLValidation is true, TLS accepts
	// any certificate presented by the server and any host name in that
	// certificate for *all* client requests going forward.
	//
	// In this mode, TLS is susceptible to man-in-the-middle attacks. This should
	// be used only for testing.
	SkipSSLValidation bool

	// URL is a fully qualified URL to the Cloud Controller API.
	URL string
}

TargetSettings represents configuration for establishing a connection to the Cloud Controller server.

type User

type User struct {
	// GUID is the unique user identifier.
	GUID string
}

User represents a Cloud Controller User.

func (*User) UnmarshalJSON

func (user *User) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller User response.

type Warnings

type Warnings []string

Warnings are a collection of warnings that the Cloud Controller can return back from an API request.

Directories

Path Synopsis
Code generated by counterfeiter.
Code generated by counterfeiter.
Package constant contains types and constants used by the ccv2 package.
Package constant contains types and constants used by the ccv2 package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL