containerservice

package
v32.3.0+incompatible Latest Latest
Warning

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

Go to latest
Published: Aug 8, 2019 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package containerservice implements the Azure ARM Containerservice service API version 2016-09-30.

Compute Client

Index

Constants

View Source
const (
	// DefaultBaseURI is the default URI used for the service Containerservice
	DefaultBaseURI = "https://management.azure.com"
)

Variables

This section is empty.

Functions

func UserAgent

func UserAgent() string

UserAgent returns the UserAgent string to use when sending http.Requests.

func Version

func Version() string

Version returns the semantic version (see http://semver.org) of the client.

Types

type AgentPoolProfile

type AgentPoolProfile struct {
	// Name - Unique name of the agent pool profile in the context of the subscription and resource group.
	Name *string `json:"name,omitempty"`
	// Count - Number of agents (VMs) to host docker containers. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1.
	Count *int32 `json:"count,omitempty"`
	// VMSize - Size of agent VMs. Possible values include: 'StandardA0', 'StandardA1', 'StandardA2', 'StandardA3', 'StandardA4', 'StandardA5', 'StandardA6', 'StandardA7', 'StandardA8', 'StandardA9', 'StandardA10', 'StandardA11', 'StandardD1', 'StandardD2', 'StandardD3', 'StandardD4', 'StandardD11', 'StandardD12', 'StandardD13', 'StandardD14', 'StandardD1V2', 'StandardD2V2', 'StandardD3V2', 'StandardD4V2', 'StandardD5V2', 'StandardD11V2', 'StandardD12V2', 'StandardD13V2', 'StandardD14V2', 'StandardG1', 'StandardG2', 'StandardG3', 'StandardG4', 'StandardG5', 'StandardDS1', 'StandardDS2', 'StandardDS3', 'StandardDS4', 'StandardDS11', 'StandardDS12', 'StandardDS13', 'StandardDS14', 'StandardGS1', 'StandardGS2', 'StandardGS3', 'StandardGS4', 'StandardGS5'
	VMSize VMSizeTypes `json:"vmSize,omitempty"`
	// DNSPrefix - DNS prefix to be used to create the FQDN for the agent pool.
	DNSPrefix *string `json:"dnsPrefix,omitempty"`
	// Fqdn - READ-ONLY; FQDN for the agent pool.
	Fqdn *string `json:"fqdn,omitempty"`
}

AgentPoolProfile profile for the container service agent pool.

type BaseClient

type BaseClient struct {
	autorest.Client
	BaseURI        string
	SubscriptionID string
}

BaseClient is the base client for Containerservice.

func New

func New(subscriptionID string) BaseClient

New creates an instance of the BaseClient client.

func NewWithBaseURI

func NewWithBaseURI(baseURI string, subscriptionID string) BaseClient

NewWithBaseURI creates an instance of the BaseClient client.

type ContainerService

type ContainerService struct {
	autorest.Response `json:"-"`
	*Properties       `json:"properties,omitempty"`
	// ID - READ-ONLY; Resource Id
	ID *string `json:"id,omitempty"`
	// Name - READ-ONLY; Resource name
	Name *string `json:"name,omitempty"`
	// Type - READ-ONLY; Resource type
	Type *string `json:"type,omitempty"`
	// Location - Resource location
	Location *string `json:"location,omitempty"`
	// Tags - Resource tags
	Tags map[string]*string `json:"tags"`
}

ContainerService container service.

func (ContainerService) MarshalJSON

func (cs ContainerService) MarshalJSON() ([]byte, error)

MarshalJSON is the custom marshaler for ContainerService.

func (*ContainerService) UnmarshalJSON

func (cs *ContainerService) UnmarshalJSON(body []byte) error

UnmarshalJSON is the custom unmarshaler for ContainerService struct.

type ContainerServicesClient

type ContainerServicesClient struct {
	BaseClient
}

ContainerServicesClient is the compute Client

func NewContainerServicesClient

func NewContainerServicesClient(subscriptionID string) ContainerServicesClient

NewContainerServicesClient creates an instance of the ContainerServicesClient client.

func NewContainerServicesClientWithBaseURI

func NewContainerServicesClientWithBaseURI(baseURI string, subscriptionID string) ContainerServicesClient

NewContainerServicesClientWithBaseURI creates an instance of the ContainerServicesClient client.

func (ContainerServicesClient) CreateOrUpdate

func (client ContainerServicesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, containerServiceName string, parameters ContainerService) (result ContainerServicesCreateOrUpdateFutureType, err error)

CreateOrUpdate creates or updates a container service with the specified configuration of orchestrator, masters, and agents. Parameters: resourceGroupName - the name of the resource group. containerServiceName - the name of the container service in the specified subscription and resource group. parameters - parameters supplied to the Create or Update a Container Service operation.

func (ContainerServicesClient) CreateOrUpdatePreparer

func (client ContainerServicesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, containerServiceName string, parameters ContainerService) (*http.Request, error)

CreateOrUpdatePreparer prepares the CreateOrUpdate request.

func (ContainerServicesClient) CreateOrUpdateResponder

func (client ContainerServicesClient) CreateOrUpdateResponder(resp *http.Response) (result ContainerService, err error)

CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always closes the http.Response Body.

func (ContainerServicesClient) CreateOrUpdateSender

func (client ContainerServicesClient) CreateOrUpdateSender(req *http.Request) (future ContainerServicesCreateOrUpdateFutureType, err error)

CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the http.Response Body if it receives an error.

func (ContainerServicesClient) Delete

func (client ContainerServicesClient) Delete(ctx context.Context, resourceGroupName string, containerServiceName string) (result ContainerServicesDeleteFutureType, err error)

Delete deletes the specified container service in the specified subscription and resource group. The operation does not delete other resources created as part of creating a container service, including storage accounts, VMs, and availability sets. All the other resources created with the container service are part of the same resource group and can be deleted individually. Parameters: resourceGroupName - the name of the resource group. containerServiceName - the name of the container service in the specified subscription and resource group.

func (ContainerServicesClient) DeletePreparer

func (client ContainerServicesClient) DeletePreparer(ctx context.Context, resourceGroupName string, containerServiceName string) (*http.Request, error)

DeletePreparer prepares the Delete request.

func (ContainerServicesClient) DeleteResponder

func (client ContainerServicesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error)

DeleteResponder handles the response to the Delete request. The method always closes the http.Response Body.

func (ContainerServicesClient) DeleteSender

func (client ContainerServicesClient) DeleteSender(req *http.Request) (future ContainerServicesDeleteFutureType, err error)

DeleteSender sends the Delete request. The method will close the http.Response Body if it receives an error.

func (ContainerServicesClient) Get

func (client ContainerServicesClient) Get(ctx context.Context, resourceGroupName string, containerServiceName string) (result ContainerService, err error)

Get gets the properties of the specified container service in the specified subscription and resource group. The operation returns the properties including state, orchestrator, number of masters and agents, and FQDNs of masters and agents. Parameters: resourceGroupName - the name of the resource group. containerServiceName - the name of the container service in the specified subscription and resource group.

func (ContainerServicesClient) GetPreparer

func (client ContainerServicesClient) GetPreparer(ctx context.Context, resourceGroupName string, containerServiceName string) (*http.Request, error)

GetPreparer prepares the Get request.

func (ContainerServicesClient) GetResponder

func (client ContainerServicesClient) GetResponder(resp *http.Response) (result ContainerService, err error)

GetResponder handles the response to the Get request. The method always closes the http.Response Body.

func (ContainerServicesClient) GetSender

func (client ContainerServicesClient) GetSender(req *http.Request) (*http.Response, error)

GetSender sends the Get request. The method will close the http.Response Body if it receives an error.

func (ContainerServicesClient) List

func (client ContainerServicesClient) List(ctx context.Context) (result ListResultPage, err error)

List gets a list of container services in the specified subscription. The operation returns properties of each container service including state, orchestrator, number of masters and agents, and FQDNs of masters and agents.

func (ContainerServicesClient) ListByResourceGroup

func (client ContainerServicesClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result ListResultPage, err error)

ListByResourceGroup gets a list of container services in the specified subscription and resource group. The operation returns properties of each container service including state, orchestrator, number of masters and agents, and FQDNs of masters and agents. Parameters: resourceGroupName - the name of the resource group.

func (ContainerServicesClient) ListByResourceGroupComplete

func (client ContainerServicesClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result ListResultIterator, err error)

ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required.

func (ContainerServicesClient) ListByResourceGroupPreparer

func (client ContainerServicesClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error)

ListByResourceGroupPreparer prepares the ListByResourceGroup request.

func (ContainerServicesClient) ListByResourceGroupResponder

func (client ContainerServicesClient) ListByResourceGroupResponder(resp *http.Response) (result ListResult, err error)

ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always closes the http.Response Body.

func (ContainerServicesClient) ListByResourceGroupSender

func (client ContainerServicesClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error)

ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the http.Response Body if it receives an error.

func (ContainerServicesClient) ListComplete

func (client ContainerServicesClient) ListComplete(ctx context.Context) (result ListResultIterator, err error)

ListComplete enumerates all values, automatically crossing page boundaries as required.

func (ContainerServicesClient) ListPreparer

func (client ContainerServicesClient) ListPreparer(ctx context.Context) (*http.Request, error)

ListPreparer prepares the List request.

func (ContainerServicesClient) ListResponder

func (client ContainerServicesClient) ListResponder(resp *http.Response) (result ListResult, err error)

ListResponder handles the response to the List request. The method always closes the http.Response Body.

func (ContainerServicesClient) ListSender

func (client ContainerServicesClient) ListSender(req *http.Request) (*http.Response, error)

ListSender sends the List request. The method will close the http.Response Body if it receives an error.

type ContainerServicesCreateOrUpdateFutureType

type ContainerServicesCreateOrUpdateFutureType struct {
	azure.Future
}

ContainerServicesCreateOrUpdateFutureType an abstraction for monitoring and retrieving the results of a long-running operation.

func (*ContainerServicesCreateOrUpdateFutureType) Result

Result returns the result of the asynchronous operation. If the operation has not completed it will return an error.

type ContainerServicesDeleteFutureType

type ContainerServicesDeleteFutureType struct {
	azure.Future
}

ContainerServicesDeleteFutureType an abstraction for monitoring and retrieving the results of a long-running operation.

func (*ContainerServicesDeleteFutureType) Result

Result returns the result of the asynchronous operation. If the operation has not completed it will return an error.

type CustomProfile

type CustomProfile struct {
	// Orchestrator - The name of the custom orchestrator to use.
	Orchestrator *string `json:"orchestrator,omitempty"`
}

CustomProfile properties to configure a custom container service cluster.

type DiagnosticsProfile

type DiagnosticsProfile struct {
	// VMDiagnostics - Profile for the container service VM diagnostic agent.
	VMDiagnostics *VMDiagnostics `json:"vmDiagnostics,omitempty"`
}

DiagnosticsProfile ...

type LinuxProfile

type LinuxProfile struct {
	// AdminUsername - The administrator username to use for Linux VMs.
	AdminUsername *string `json:"adminUsername,omitempty"`
	// SSH - The ssh key configuration for Linux VMs.
	SSH *SSHConfiguration `json:"ssh,omitempty"`
}

LinuxProfile profile for Linux VMs in the container service cluster.

type ListResult

type ListResult struct {
	autorest.Response `json:"-"`
	// Value - the list of container services.
	Value *[]ContainerService `json:"value,omitempty"`
	// NextLink - The URL to get the next set of container service results.
	NextLink *string `json:"nextLink,omitempty"`
}

ListResult the response from the List Container Services operation.

func (ListResult) IsEmpty

func (lr ListResult) IsEmpty() bool

IsEmpty returns true if the ListResult contains no values.

type ListResultIterator

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

ListResultIterator provides access to a complete listing of ContainerService values.

func NewListResultIterator

func NewListResultIterator(page ListResultPage) ListResultIterator

Creates a new instance of the ListResultIterator type.

func (*ListResultIterator) Next

func (iter *ListResultIterator) Next() error

Next advances to the next value. If there was an error making the request the iterator does not advance and the error is returned. Deprecated: Use NextWithContext() instead.

func (*ListResultIterator) NextWithContext

func (iter *ListResultIterator) NextWithContext(ctx context.Context) (err error)

NextWithContext advances to the next value. If there was an error making the request the iterator does not advance and the error is returned.

func (ListResultIterator) NotDone

func (iter ListResultIterator) NotDone() bool

NotDone returns true if the enumeration should be started or is not yet complete.

func (ListResultIterator) Response

func (iter ListResultIterator) Response() ListResult

Response returns the raw server response from the last page request.

func (ListResultIterator) Value

func (iter ListResultIterator) Value() ContainerService

Value returns the current value or a zero-initialized value if the iterator has advanced beyond the end of the collection.

type ListResultPage

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

ListResultPage contains a page of ContainerService values.

func NewListResultPage

func NewListResultPage(getNextPage func(context.Context, ListResult) (ListResult, error)) ListResultPage

Creates a new instance of the ListResultPage type.

func (*ListResultPage) Next

func (page *ListResultPage) Next() error

Next advances to the next page of values. If there was an error making the request the page does not advance and the error is returned. Deprecated: Use NextWithContext() instead.

func (*ListResultPage) NextWithContext

func (page *ListResultPage) NextWithContext(ctx context.Context) (err error)

NextWithContext advances to the next page of values. If there was an error making the request the page does not advance and the error is returned.

func (ListResultPage) NotDone

func (page ListResultPage) NotDone() bool

NotDone returns true if the page enumeration should be started or is not yet complete.

func (ListResultPage) Response

func (page ListResultPage) Response() ListResult

Response returns the raw server response from the last page request.

func (ListResultPage) Values

func (page ListResultPage) Values() []ContainerService

Values returns the slice of values for the current page or nil if there are no values.

type MasterProfile

type MasterProfile struct {
	// Count - Number of masters (VMs) in the container service cluster. Allowed values are 1, 3, and 5. The default value is 1.
	Count *int32 `json:"count,omitempty"`
	// DNSPrefix - DNS prefix to be used to create the FQDN for master.
	DNSPrefix *string `json:"dnsPrefix,omitempty"`
	// Fqdn - READ-ONLY; FQDN for the master.
	Fqdn *string `json:"fqdn,omitempty"`
}

MasterProfile profile for the container service master.

type OchestratorTypes

type OchestratorTypes string

OchestratorTypes enumerates the values for ochestrator types.

const (
	// Custom ...
	Custom OchestratorTypes = "Custom"
	// DCOS ...
	DCOS OchestratorTypes = "DCOS"
	// Kubernetes ...
	Kubernetes OchestratorTypes = "Kubernetes"
	// Swarm ...
	Swarm OchestratorTypes = "Swarm"
)

func PossibleOchestratorTypesValues

func PossibleOchestratorTypesValues() []OchestratorTypes

PossibleOchestratorTypesValues returns an array of possible values for the OchestratorTypes const type.

type OrchestratorProfile

type OrchestratorProfile struct {
	// OrchestratorType - The orchestrator to use to manage container service cluster resources. Valid values are Swarm, DCOS, and Custom. Possible values include: 'Swarm', 'DCOS', 'Custom', 'Kubernetes'
	OrchestratorType OchestratorTypes `json:"orchestratorType,omitempty"`
}

OrchestratorProfile profile for the container service orchestrator.

type Properties

type Properties struct {
	// ProvisioningState - READ-ONLY; the current deployment or provisioning state, which only appears in the response.
	ProvisioningState *string `json:"provisioningState,omitempty"`
	// OrchestratorProfile - Properties of the orchestrator.
	OrchestratorProfile *OrchestratorProfile `json:"orchestratorProfile,omitempty"`
	// CustomProfile - Properties for custom clusters.
	CustomProfile *CustomProfile `json:"customProfile,omitempty"`
	// ServicePrincipalProfile - Properties for cluster service principals.
	ServicePrincipalProfile *ServicePrincipalProfile `json:"servicePrincipalProfile,omitempty"`
	// MasterProfile - Properties of master agents.
	MasterProfile *MasterProfile `json:"masterProfile,omitempty"`
	// AgentPoolProfiles - Properties of the agent pool.
	AgentPoolProfiles *[]AgentPoolProfile `json:"agentPoolProfiles,omitempty"`
	// WindowsProfile - Properties of Windows VMs.
	WindowsProfile *WindowsProfile `json:"windowsProfile,omitempty"`
	// LinuxProfile - Properties of Linux VMs.
	LinuxProfile *LinuxProfile `json:"linuxProfile,omitempty"`
	// DiagnosticsProfile - Properties of the diagnostic agent.
	DiagnosticsProfile *DiagnosticsProfile `json:"diagnosticsProfile,omitempty"`
}

Properties properties of the container service.

type Resource

type Resource struct {
	// ID - READ-ONLY; Resource Id
	ID *string `json:"id,omitempty"`
	// Name - READ-ONLY; Resource name
	Name *string `json:"name,omitempty"`
	// Type - READ-ONLY; Resource type
	Type *string `json:"type,omitempty"`
	// Location - Resource location
	Location *string `json:"location,omitempty"`
	// Tags - Resource tags
	Tags map[string]*string `json:"tags"`
}

Resource the Resource model definition.

func (Resource) MarshalJSON

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

MarshalJSON is the custom marshaler for Resource.

type SSHConfiguration

type SSHConfiguration struct {
	// PublicKeys - the list of SSH public keys used to authenticate with Linux-based VMs.
	PublicKeys *[]SSHPublicKey `json:"publicKeys,omitempty"`
}

SSHConfiguration SSH configuration for Linux-based VMs running on Azure.

type SSHPublicKey

type SSHPublicKey struct {
	// KeyData - Certificate public key used to authenticate with VMs through SSH. The certificate must be in PEM format with or without headers.
	KeyData *string `json:"keyData,omitempty"`
}

SSHPublicKey contains information about SSH certificate public key data.

type ServicePrincipalProfile

type ServicePrincipalProfile struct {
	// ClientID - The ID for the service principal.
	ClientID *string `json:"clientId,omitempty"`
	// Secret - The secret password associated with the service principal.
	Secret *string `json:"secret,omitempty"`
}

ServicePrincipalProfile information about a service principal identity for the cluster to use for manipulating Azure APIs.

type VMDiagnostics

type VMDiagnostics struct {
	// Enabled - Whether the VM diagnostic agent is provisioned on the VM.
	Enabled *bool `json:"enabled,omitempty"`
	// StorageURI - READ-ONLY; The URI of the storage account where diagnostics are stored.
	StorageURI *string `json:"storageUri,omitempty"`
}

VMDiagnostics profile for diagnostics on the container service VMs.

type VMSizeTypes

type VMSizeTypes string

VMSizeTypes enumerates the values for vm size types.

const (
	// StandardA0 ...
	StandardA0 VMSizeTypes = "Standard_A0"
	// StandardA1 ...
	StandardA1 VMSizeTypes = "Standard_A1"
	// StandardA10 ...
	StandardA10 VMSizeTypes = "Standard_A10"
	// StandardA11 ...
	StandardA11 VMSizeTypes = "Standard_A11"
	// StandardA2 ...
	StandardA2 VMSizeTypes = "Standard_A2"
	// StandardA3 ...
	StandardA3 VMSizeTypes = "Standard_A3"
	// StandardA4 ...
	StandardA4 VMSizeTypes = "Standard_A4"
	// StandardA5 ...
	StandardA5 VMSizeTypes = "Standard_A5"
	// StandardA6 ...
	StandardA6 VMSizeTypes = "Standard_A6"
	// StandardA7 ...
	StandardA7 VMSizeTypes = "Standard_A7"
	// StandardA8 ...
	StandardA8 VMSizeTypes = "Standard_A8"
	// StandardA9 ...
	StandardA9 VMSizeTypes = "Standard_A9"
	// StandardD1 ...
	StandardD1 VMSizeTypes = "Standard_D1"
	// StandardD11 ...
	StandardD11 VMSizeTypes = "Standard_D11"
	// StandardD11V2 ...
	StandardD11V2 VMSizeTypes = "Standard_D11_v2"
	// StandardD12 ...
	StandardD12 VMSizeTypes = "Standard_D12"
	// StandardD12V2 ...
	StandardD12V2 VMSizeTypes = "Standard_D12_v2"
	// StandardD13 ...
	StandardD13 VMSizeTypes = "Standard_D13"
	// StandardD13V2 ...
	StandardD13V2 VMSizeTypes = "Standard_D13_v2"
	// StandardD14 ...
	StandardD14 VMSizeTypes = "Standard_D14"
	// StandardD14V2 ...
	StandardD14V2 VMSizeTypes = "Standard_D14_v2"
	// StandardD1V2 ...
	StandardD1V2 VMSizeTypes = "Standard_D1_v2"
	// StandardD2 ...
	StandardD2 VMSizeTypes = "Standard_D2"
	// StandardD2V2 ...
	StandardD2V2 VMSizeTypes = "Standard_D2_v2"
	// StandardD3 ...
	StandardD3 VMSizeTypes = "Standard_D3"
	// StandardD3V2 ...
	StandardD3V2 VMSizeTypes = "Standard_D3_v2"
	// StandardD4 ...
	StandardD4 VMSizeTypes = "Standard_D4"
	// StandardD4V2 ...
	StandardD4V2 VMSizeTypes = "Standard_D4_v2"
	// StandardD5V2 ...
	StandardD5V2 VMSizeTypes = "Standard_D5_v2"
	// StandardDS1 ...
	StandardDS1 VMSizeTypes = "Standard_DS1"
	// StandardDS11 ...
	StandardDS11 VMSizeTypes = "Standard_DS11"
	// StandardDS12 ...
	StandardDS12 VMSizeTypes = "Standard_DS12"
	// StandardDS13 ...
	StandardDS13 VMSizeTypes = "Standard_DS13"
	// StandardDS14 ...
	StandardDS14 VMSizeTypes = "Standard_DS14"
	// StandardDS2 ...
	StandardDS2 VMSizeTypes = "Standard_DS2"
	// StandardDS3 ...
	StandardDS3 VMSizeTypes = "Standard_DS3"
	// StandardDS4 ...
	StandardDS4 VMSizeTypes = "Standard_DS4"
	// StandardG1 ...
	StandardG1 VMSizeTypes = "Standard_G1"
	// StandardG2 ...
	StandardG2 VMSizeTypes = "Standard_G2"
	// StandardG3 ...
	StandardG3 VMSizeTypes = "Standard_G3"
	// StandardG4 ...
	StandardG4 VMSizeTypes = "Standard_G4"
	// StandardG5 ...
	StandardG5 VMSizeTypes = "Standard_G5"
	// StandardGS1 ...
	StandardGS1 VMSizeTypes = "Standard_GS1"
	// StandardGS2 ...
	StandardGS2 VMSizeTypes = "Standard_GS2"
	// StandardGS3 ...
	StandardGS3 VMSizeTypes = "Standard_GS3"
	// StandardGS4 ...
	StandardGS4 VMSizeTypes = "Standard_GS4"
	// StandardGS5 ...
	StandardGS5 VMSizeTypes = "Standard_GS5"
)

func PossibleVMSizeTypesValues

func PossibleVMSizeTypesValues() []VMSizeTypes

PossibleVMSizeTypesValues returns an array of possible values for the VMSizeTypes const type.

type WindowsProfile

type WindowsProfile struct {
	// AdminUsername - The administrator username to use for Windows VMs.
	AdminUsername *string `json:"adminUsername,omitempty"`
	// AdminPassword - The administrator password to use for Windows VMs.
	AdminPassword *string `json:"adminPassword,omitempty"`
}

WindowsProfile profile for Windows VMs in the container service cluster.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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