composer

package
v0.10.1-0...-16c3d6f Latest Latest
Warning

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

Go to latest
Published: Jan 9, 2020 License: BSD-3-Clause Imports: 14 Imported by: 0

Documentation

Overview

Package composer provides access to the Cloud Composer API.

For product documentation, see: https://cloud.google.com/composer/

Creating a client

Usage example:

import "google.golang.org/api/composer/v1"
...
ctx := context.Background()
composerService, err := composer.NewService(ctx)

In this example, Google Application Default Credentials are used for authentication.

For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.

Other authentication options

To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:

composerService, err := composer.NewService(ctx, option.WithAPIKey("AIza..."))

To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:

config := &oauth2.Config{...}
// ...
token, err := config.Exchange(ctx, ...)
composerService, err := composer.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))

See https://godoc.org/google.golang.org/api/option/ for details on options.

Index

Constants

View Source
const (
	// View and manage your data across Google Cloud Platform services
	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
)

OAuth2 scopes used by this API.

Variables

This section is empty.

Functions

This section is empty.

Types

type Empty

type Empty struct {
	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`
}

Empty: A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:

service Foo {
  rpc Bar(google.protobuf.Empty) returns

(google.protobuf.Empty);

}

The JSON representation for `Empty` is empty JSON object `{}`.

type Environment

type Environment struct {
	// Config: Configuration parameters for this environment.
	Config *EnvironmentConfig `json:"config,omitempty"`

	// CreateTime: Output only. The time at which this environment was
	// created.
	CreateTime string `json:"createTime,omitempty"`

	// Labels: Optional. User-defined labels for this environment.
	// The labels map can contain no more than 64 entries. Entries of the
	// labels
	// map are UTF8 strings that comply with the following restrictions:
	//
	// * Keys must conform to regexp: \p{Ll}\p{Lo}{0,62}
	// * Values must conform to regexp:  [\p{Ll}\p{Lo}\p{N}_-]{0,63}
	// * Both keys and values are additionally constrained to be <= 128
	// bytes in
	// size.
	Labels map[string]string `json:"labels,omitempty"`

	// Name: The resource name of the environment, in the
	// form:
	// "projects/{projectId}/locations/{locationId}/environments/{envir
	// onmentId}"
	Name string `json:"name,omitempty"`

	// State: The current state of the environment.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - The state of the environment is unknown.
	//   "CREATING" - The environment is in the process of being created.
	//   "RUNNING" - The environment is currently running and healthy. It is
	// ready for use.
	//   "UPDATING" - The environment is being updated. It remains usable
	// but cannot receive
	// additional update requests or be deleted at this time.
	//   "DELETING" - The environment is undergoing deletion. It cannot be
	// used.
	//   "ERROR" - The environment has encountered an error and cannot be
	// used.
	State string `json:"state,omitempty"`

	// UpdateTime: Output only. The time at which this environment was last
	// modified.
	UpdateTime string `json:"updateTime,omitempty"`

	// Uuid: Output only. The UUID (Universally Unique IDentifier)
	// associated with this environment.
	// This value is generated when the environment is created.
	Uuid string `json:"uuid,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "Config") to
	// unconditionally include in API requests. By default, fields with
	// empty values are omitted from API requests. However, any non-pointer,
	// non-interface field appearing in ForceSendFields will be sent to the
	// server regardless of whether the field is empty or not. This may be
	// used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Config") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

Environment: An environment for running orchestration tasks.

func (*Environment) MarshalJSON

func (s *Environment) MarshalJSON() ([]byte, error)

type EnvironmentConfig

type EnvironmentConfig struct {
	// AirflowUri: Output only. The URI of the Apache Airflow Web UI hosted
	// within this environment (see
	// [Airflow
	// web
	// interface](/composer/docs/how-to/accessing/airflow-web-interface))
	// .
	AirflowUri string `json:"airflowUri,omitempty"`

	// DagGcsPrefix: Output only. The Cloud Storage prefix of the DAGs for
	// this environment. Although Cloud
	// Storage objects reside in a flat namespace, a hierarchical file
	// tree
	// can be simulated using "/"-delimited object name prefixes. DAG
	// objects for
	// this environment reside in a simulated directory with the given
	// prefix.
	DagGcsPrefix string `json:"dagGcsPrefix,omitempty"`

	// GkeCluster: Output only. The Kubernetes Engine cluster used to run
	// this environment.
	GkeCluster string `json:"gkeCluster,omitempty"`

	// NodeConfig: The configuration used for the Kubernetes Engine cluster.
	NodeConfig *NodeConfig `json:"nodeConfig,omitempty"`

	// NodeCount: The number of nodes in the Kubernetes Engine cluster that
	// will be
	// used to run this environment.
	NodeCount int64 `json:"nodeCount,omitempty"`

	// SoftwareConfig: The configuration settings for software inside the
	// environment.
	SoftwareConfig *SoftwareConfig `json:"softwareConfig,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AirflowUri") to
	// unconditionally include in API requests. By default, fields with
	// empty values are omitted from API requests. However, any non-pointer,
	// non-interface field appearing in ForceSendFields will be sent to the
	// server regardless of whether the field is empty or not. This may be
	// used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AirflowUri") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

EnvironmentConfig: Configuration information for an environment.

func (*EnvironmentConfig) MarshalJSON

func (s *EnvironmentConfig) MarshalJSON() ([]byte, error)

type ImageVersion

type ImageVersion struct {
	// ImageVersionId: The string identifier of the ImageVersion, in the
	// form:
	// "composer-x.y.z-airflow-a.b(.c)"
	ImageVersionId string `json:"imageVersionId,omitempty"`

	// IsDefault: Whether this is the default ImageVersion used by Composer
	// during
	// environment creation if no input ImageVersion is specified.
	IsDefault bool `json:"isDefault,omitempty"`

	// SupportedPythonVersions: supported python versions
	SupportedPythonVersions []string `json:"supportedPythonVersions,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ImageVersionId") to
	// unconditionally include in API requests. By default, fields with
	// empty values are omitted from API requests. However, any non-pointer,
	// non-interface field appearing in ForceSendFields will be sent to the
	// server regardless of whether the field is empty or not. This may be
	// used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ImageVersionId") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

ImageVersion: ImageVersion information

func (*ImageVersion) MarshalJSON

func (s *ImageVersion) MarshalJSON() ([]byte, error)

type ListEnvironmentsResponse

type ListEnvironmentsResponse struct {
	// Environments: The list of environments returned by a
	// ListEnvironmentsRequest.
	Environments []*Environment `json:"environments,omitempty"`

	// NextPageToken: The page token used to query for the next page if one
	// exists.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "Environments") to
	// unconditionally include in API requests. By default, fields with
	// empty values are omitted from API requests. However, any non-pointer,
	// non-interface field appearing in ForceSendFields will be sent to the
	// server regardless of whether the field is empty or not. This may be
	// used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Environments") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

ListEnvironmentsResponse: The environments in a project and location.

func (*ListEnvironmentsResponse) MarshalJSON

func (s *ListEnvironmentsResponse) MarshalJSON() ([]byte, error)

type ListImageVersionsResponse

type ListImageVersionsResponse struct {
	// ImageVersions: The list of supported ImageVersions in a location.
	ImageVersions []*ImageVersion `json:"imageVersions,omitempty"`

	// NextPageToken: The page token used to query for the next page if one
	// exists.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "ImageVersions") to
	// unconditionally include in API requests. By default, fields with
	// empty values are omitted from API requests. However, any non-pointer,
	// non-interface field appearing in ForceSendFields will be sent to the
	// server regardless of whether the field is empty or not. This may be
	// used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ImageVersions") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

ListImageVersionsResponse: The ImageVersions in a project and location.

func (*ListImageVersionsResponse) MarshalJSON

func (s *ListImageVersionsResponse) MarshalJSON() ([]byte, error)

type ListOperationsResponse

type ListOperationsResponse struct {
	// NextPageToken: The standard List next-page token.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// Operations: A list of operations that matches the specified filter in
	// the request.
	Operations []*Operation `json:"operations,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with
	// empty values are omitted from API requests. However, any non-pointer,
	// non-interface field appearing in ForceSendFields will be sent to the
	// server regardless of whether the field is empty or not. This may be
	// used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NextPageToken") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

ListOperationsResponse: The response message for Operations.ListOperations.

func (*ListOperationsResponse) MarshalJSON

func (s *ListOperationsResponse) MarshalJSON() ([]byte, error)

type NodeConfig

type NodeConfig struct {
	// DiskSizeGb: Optional. The disk size in GB used for node VMs. Minimum
	// size is 20GB.
	// If unspecified, defaults to 100GB. Cannot be updated.
	DiskSizeGb int64 `json:"diskSizeGb,omitempty"`

	// Location: Optional. The Compute Engine
	// [zone](/compute/docs/regions-zones) in which
	// to deploy the VMs used to run the Apache Airflow software, specified
	// as a
	// [relative
	// resource
	// name](/apis/design/resource_names#relative_resource_name). For
	// example:
	// "projects/{projectId}/zones/{zoneId}".
	//
	// This `location` must belong to the enclosing environment's project
	// and
	// location. If both this field and `nodeConfig.machineType` are
	// specified,
	// `nodeConfig.machineType` must belong to this `location`; if both
	// are
	// unspecified, the service will pick a zone in the Compute Engine
	// region
	// corresponding to the Cloud Composer location, and propagate that
	// choice to
	// both fields. If only one field (`location` or
	// `nodeConfig.machineType`) is
	// specified, the location information from the specified field will
	// be
	// propagated to the unspecified field.
	Location string `json:"location,omitempty"`

	// MachineType: Optional. The Compute Engine
	// [machine type](/compute/docs/machine-types) used for cluster
	// instances,
	// specified as a
	// [relative
	// resource
	// name](/apis/design/resource_names#relative_resource_name). For
	// example:
	// "projects/{projectId}/zones/{zoneId}/machineTypes/{machineTyp
	// eId}".
	//
	// The `machineType` must belong to the enclosing environment's project
	// and
	// location. If both this field and `nodeConfig.location` are
	// specified,
	// this `machineType` must belong to the `nodeConfig.location`; if both
	// are
	// unspecified, the service will pick a zone in the Compute Engine
	// region
	// corresponding to the Cloud Composer location, and propagate that
	// choice to
	// both fields. If exactly one of this field and `nodeConfig.location`
	// is
	// specified, the location information from the specified field will
	// be
	// propagated to the unspecified field.
	//
	// The `machineTypeId` must not be a [shared-core
	// machine
	// type](/compute/docs/machine-types#sharedcore).
	//
	// If this field is unspecified, the `machineTypeId` defaults
	// to "n1-standard-1".
	MachineType string `json:"machineType,omitempty"`

	// Network: Optional. The Compute Engine network to be used for
	// machine
	// communications, specified as a
	// [relative
	// resource
	// name](/apis/design/resource_names#relative_resource_name). For
	// example:
	// "projects/{projectId}/global/networks/{networkId}".
	//
	// [Shared VPC](/vpc/docs/shared-vpc) is not currently supported.
	// The
	// network must belong to the environment's project. If unspecified,
	// the
	// "default" network ID in the environment's project is used.  If
	// a
	// [Custom Subnet Network](/vpc/docs/vpc#vpc_networks_and_subnets)
	// is provided, `nodeConfig.subnetwork` must also be provided.
	Network string `json:"network,omitempty"`

	// OauthScopes: Optional. The set of Google API scopes to be made
	// available on all
	// node VMs. If `oauth_scopes` is empty, defaults
	// to
	// ["https://www.googleapis.com/auth/cloud-platform"]. Cannot be
	// updated.
	OauthScopes []string `json:"oauthScopes,omitempty"`

	// ServiceAccount: Optional. The Google Cloud Platform Service Account
	// to be used by the node
	// VMs. If a service account is not specified, the "default" Compute
	// Engine
	// service account is used. Cannot be updated.
	ServiceAccount string `json:"serviceAccount,omitempty"`

	// Subnetwork: Optional. The Compute Engine subnetwork to be used for
	// machine
	// communications, specified as a
	// [relative
	// resource
	// name](/apis/design/resource_names#relative_resource_name). For
	// example:
	// "projects/{projectId}/regions/{regionId}/subnetworks/{subnetw
	// orkId}"
	//
	// If a subnetwork is provided, `nodeConfig.network` must also be
	// provided,
	// and the subnetwork must belong to the enclosing environment's project
	// and
	// location.
	Subnetwork string `json:"subnetwork,omitempty"`

	// Tags: Optional. The list of instance tags applied to all node VMs.
	// Tags are used
	// to identify valid sources or targets for network firewalls. Each tag
	// within
	// the list must comply with
	// [RFC1035](https://www.ietf.org/rfc/rfc1035.txt).
	// Cannot be updated.
	Tags []string `json:"tags,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DiskSizeGb") to
	// unconditionally include in API requests. By default, fields with
	// empty values are omitted from API requests. However, any non-pointer,
	// non-interface field appearing in ForceSendFields will be sent to the
	// server regardless of whether the field is empty or not. This may be
	// used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DiskSizeGb") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

NodeConfig: The configuration information for the Kubernetes Engine nodes running the Apache Airflow software.

func (*NodeConfig) MarshalJSON

func (s *NodeConfig) MarshalJSON() ([]byte, error)

type Operation

type Operation struct {
	// Done: If the value is `false`, it means the operation is still in
	// progress.
	// If `true`, the operation is completed, and either `error` or
	// `response` is
	// available.
	Done bool `json:"done,omitempty"`

	// Error: The error result of the operation in case of failure or
	// cancellation.
	Error *Status `json:"error,omitempty"`

	// Metadata: Service-specific metadata associated with the operation.
	// It typically
	// contains progress information and common metadata such as create
	// time.
	// Some services might not provide such metadata.  Any method that
	// returns a
	// long-running operation should document the metadata type, if any.
	Metadata googleapi.RawMessage `json:"metadata,omitempty"`

	// Name: The server-assigned name, which is only unique within the same
	// service that
	// originally returns it. If you use the default HTTP mapping,
	// the
	// `name` should be a resource name ending with
	// `operations/{unique_id}`.
	Name string `json:"name,omitempty"`

	// Response: The normal response of the operation in case of success.
	// If the original
	// method returns no data on success, such as `Delete`, the response
	// is
	// `google.protobuf.Empty`.  If the original method is
	// standard
	// `Get`/`Create`/`Update`, the response should be the resource.  For
	// other
	// methods, the response should have the type `XxxResponse`, where
	// `Xxx`
	// is the original method name.  For example, if the original method
	// name
	// is `TakeSnapshot()`, the inferred response type
	// is
	// `TakeSnapshotResponse`.
	Response googleapi.RawMessage `json:"response,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "Done") to
	// unconditionally include in API requests. By default, fields with
	// empty values are omitted from API requests. However, any non-pointer,
	// non-interface field appearing in ForceSendFields will be sent to the
	// server regardless of whether the field is empty or not. This may be
	// used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Done") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

Operation: This resource represents a long-running operation that is the result of a network API call.

func (*Operation) MarshalJSON

func (s *Operation) MarshalJSON() ([]byte, error)

type OperationMetadata

type OperationMetadata struct {
	// CreateTime: Output only. The time the operation was submitted to the
	// server.
	CreateTime string `json:"createTime,omitempty"`

	// EndTime: Output only. The time when the operation terminated,
	// regardless of its success.
	// This field is unset if the operation is still ongoing.
	EndTime string `json:"endTime,omitempty"`

	// OperationType: Output only. The type of operation being performed.
	//
	// Possible values:
	//   "TYPE_UNSPECIFIED" - Unused.
	//   "CREATE" - A resource creation operation.
	//   "DELETE" - A resource deletion operation.
	//   "UPDATE" - A resource update operation.
	OperationType string `json:"operationType,omitempty"`

	// Resource: Output only. The resource being operated on, as a [relative
	// resource name](
	// /apis/design/resource_names#relative_resource_name).
	Resource string `json:"resource,omitempty"`

	// ResourceUuid: Output only. The UUID of the resource being operated
	// on.
	ResourceUuid string `json:"resourceUuid,omitempty"`

	// State: Output only. The current operation state.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - Unused.
	//   "PENDING" - The operation has been created but is not yet started.
	//   "RUNNING" - The operation is underway.
	//   "SUCCEEDED" - The operation completed successfully.
	//   "SUCCESSFUL"
	//   "FAILED" - The operation is no longer running but did not succeed.
	State string `json:"state,omitempty"`

	// ForceSendFields is a list of field names (e.g. "CreateTime") to
	// unconditionally include in API requests. By default, fields with
	// empty values are omitted from API requests. However, any non-pointer,
	// non-interface field appearing in ForceSendFields will be sent to the
	// server regardless of whether the field is empty or not. This may be
	// used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "CreateTime") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

OperationMetadata: Metadata describing an operation.

func (*OperationMetadata) MarshalJSON

func (s *OperationMetadata) MarshalJSON() ([]byte, error)

type ProjectsLocationsEnvironmentsCreateCall

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

func (*ProjectsLocationsEnvironmentsCreateCall) Context

Context sets the context to be used in this call's Do method. Any pending HTTP request will be aborted if the provided context is canceled.

func (*ProjectsLocationsEnvironmentsCreateCall) Do

Do executes the "composer.projects.locations.environments.create" call. Exactly one of *Operation or error will be non-nil. Any non-2xx status code is an error. Response headers are in either *Operation.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.

func (*ProjectsLocationsEnvironmentsCreateCall) Fields

Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more information.

func (*ProjectsLocationsEnvironmentsCreateCall) Header

Header returns an http.Header that can be modified by the caller to add HTTP headers to the request.

type ProjectsLocationsEnvironmentsDeleteCall

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

func (*ProjectsLocationsEnvironmentsDeleteCall) Context

Context sets the context to be used in this call's Do method. Any pending HTTP request will be aborted if the provided context is canceled.

func (*ProjectsLocationsEnvironmentsDeleteCall) Do

Do executes the "composer.projects.locations.environments.delete" call. Exactly one of *Operation or error will be non-nil. Any non-2xx status code is an error. Response headers are in either *Operation.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.

func (*ProjectsLocationsEnvironmentsDeleteCall) Fields

Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more information.

func (*ProjectsLocationsEnvironmentsDeleteCall) Header

Header returns an http.Header that can be modified by the caller to add HTTP headers to the request.

type ProjectsLocationsEnvironmentsGetCall

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

func (*ProjectsLocationsEnvironmentsGetCall) Context

Context sets the context to be used in this call's Do method. Any pending HTTP request will be aborted if the provided context is canceled.

func (*ProjectsLocationsEnvironmentsGetCall) Do

Do executes the "composer.projects.locations.environments.get" call. Exactly one of *Environment or error will be non-nil. Any non-2xx status code is an error. Response headers are in either *Environment.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.

func (*ProjectsLocationsEnvironmentsGetCall) Fields

Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more information.

func (*ProjectsLocationsEnvironmentsGetCall) Header

Header returns an http.Header that can be modified by the caller to add HTTP headers to the request.

func (*ProjectsLocationsEnvironmentsGetCall) IfNoneMatch

IfNoneMatch sets the optional parameter which makes the operation fail if the object's ETag matches the given value. This is useful for getting updates only after the object has changed since the last request. Use googleapi.IsNotModified to check whether the response error from Do is the result of In-None-Match.

type ProjectsLocationsEnvironmentsListCall

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

func (*ProjectsLocationsEnvironmentsListCall) Context

Context sets the context to be used in this call's Do method. Any pending HTTP request will be aborted if the provided context is canceled.

func (*ProjectsLocationsEnvironmentsListCall) Do

Do executes the "composer.projects.locations.environments.list" call. Exactly one of *ListEnvironmentsResponse or error will be non-nil. Any non-2xx status code is an error. Response headers are in either *ListEnvironmentsResponse.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.

func (*ProjectsLocationsEnvironmentsListCall) Fields

Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more information.

func (*ProjectsLocationsEnvironmentsListCall) Header

Header returns an http.Header that can be modified by the caller to add HTTP headers to the request.

func (*ProjectsLocationsEnvironmentsListCall) IfNoneMatch

IfNoneMatch sets the optional parameter which makes the operation fail if the object's ETag matches the given value. This is useful for getting updates only after the object has changed since the last request. Use googleapi.IsNotModified to check whether the response error from Do is the result of In-None-Match.

func (*ProjectsLocationsEnvironmentsListCall) PageSize

PageSize sets the optional parameter "pageSize": The maximum number of environments to return.

func (*ProjectsLocationsEnvironmentsListCall) PageToken

PageToken sets the optional parameter "pageToken": The next_page_token value returned from a previous List request, if any.

func (*ProjectsLocationsEnvironmentsListCall) Pages

Pages invokes f for each page of results. A non-nil error returned from f will halt the iteration. The provided context supersedes any context provided to the Context method.

type ProjectsLocationsEnvironmentsPatchCall

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

func (*ProjectsLocationsEnvironmentsPatchCall) Context

Context sets the context to be used in this call's Do method. Any pending HTTP request will be aborted if the provided context is canceled.

func (*ProjectsLocationsEnvironmentsPatchCall) Do

Do executes the "composer.projects.locations.environments.patch" call. Exactly one of *Operation or error will be non-nil. Any non-2xx status code is an error. Response headers are in either *Operation.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.

func (*ProjectsLocationsEnvironmentsPatchCall) Fields

Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more information.

func (*ProjectsLocationsEnvironmentsPatchCall) Header

Header returns an http.Header that can be modified by the caller to add HTTP headers to the request.

func (*ProjectsLocationsEnvironmentsPatchCall) UpdateMask

UpdateMask sets the optional parameter "updateMask": Required. A comma-separated list of paths, relative to `Environment`, of fields to update. For example, to set the version of scikit-learn to install in the environment to 0.19.0 and to remove an existing installation of numpy, the `updateMask` parameter would include the following two `paths` values: "config.softwareConfig.pypiPackages.scikit-learn" and "config.softwareConfig.pypiPackages.numpy". The included patch environment would specify the scikit-learn version as follows:

{
  "config":{
    "softwareConfig":{
      "pypiPackages":{
        "scikit-learn":"==0.19.0"
      }
    }
  }
}

Note that in the above example, any existing PyPI packages other than scikit-learn and numpy will be unaffected.

Only one update type may be included in a single request's `updateMask`. For example, one cannot update both the PyPI packages and labels in the same request. However, it is possible to update multiple members of a map field simultaneously in the same request. For example, to set the labels "label1" and "label2" while clearing "label3" (assuming it already exists), one can provide the paths "labels.label1", "labels.label2", and "labels.label3" and populate the patch environment as follows:

{
  "labels":{
    "label1":"new-label1-value"
    "label2":"new-label2-value"
  }
}

Note that in the above example, any existing labels that are not included in the `updateMask` will be unaffected.

It is also possible to replace an entire map field by providing the map field's path in the `updateMask`. The new value of the field will be that which is provided in the patch environment. For example, to delete all pre-existing user-specified PyPI packages and install botocore at version 1.7.14, the `updateMask` would contain the path "config.softwareConfig.pypiPackages", and the patch environment would be the following:

{
  "config":{
    "softwareConfig":{
      "pypiPackages":{
        "botocore":"==1.7.14"
      }
    }
  }
}

**Note:** Only the following fields can be updated:

<table>
<tbody>
<tr>
<td><strong>Mask</strong></td>
<td><strong>Purpose</strong></td>
</tr>
<tr>
<td>config.softwareConfig.pypiPackages
</td>
<td>Replace all custom custom PyPI packages. If a replacement
package map is not included in `environment`, all custom
PyPI packages are cleared. It is an error to provide both this mask

and a

mask specifying an individual package.</td>
</tr>
<tr>
<td>config.softwareConfig.pypiPackages.<var>packagename</var></td>
<td>Update the custom PyPI package <var>packagename</var>,
preserving other packages. To delete the package, include it in
`updateMask`, and omit the mapping for it in
`environment.config.softwareConfig.pypiPackages`. It is an error
to provide both a mask of this form and the
"config.softwareConfig.pypiPackages" mask.</td>
</tr>
<tr>
<td>labels</td>
<td>Replace all environment labels. If a replacement labels map is

not

included in `environment`, all labels are cleared. It is an error

to

provide both this mask and a mask specifying one or more individual
labels.</td>
</tr>
<tr>
<td>labels.<var>labelName</var></td>
<td>Set the label named <var>labelName</var>, while preserving

other

labels. To delete the label, include it in `updateMask` and omit

its

mapping in `environment.labels`. It is an error to provide both a
mask of this form and the "labels" mask.</td>
</tr>
<tr>
<td>config.nodeCount</td>
<td>Horizontally scale the number of nodes in the environment. An

integer

greater than or equal to 3 must be provided in the

`config.nodeCount`

field.
</td>
</tr>
<tr>
<td>config.softwareConfig.airflowConfigOverrides</td>
<td>Replace all Apache Airflow config overrides. If a replacement

config

overrides map is not included in `environment`, all config

overrides

are cleared.
It is an error to provide both this mask and a mask specifying one

or

more individual config overrides.</td>
</tr>
<tr>

<td>config.softwareConfig.airflowConfigOverrides.<var>section</var>-<v ar>name

</var></td>
<td>Override the Apache Airflow config property <var>name</var> in

the

section named <var>section</var>, preserving other properties. To

delete

the property override, include it in `updateMask` and omit its

mapping

in `environment.config.softwareConfig.airflowConfigOverrides`.
It is an error to provide both a mask of this form and the
"config.softwareConfig.airflowConfigOverrides" mask.</td>
</tr>
<tr>
<td>config.softwareConfig.envVariables</td>
<td>Replace all environment variables. If a replacement environment
variable map is not included in `environment`, all custom

environment

variables  are cleared.
It is an error to provide both this mask and a mask specifying one

or

more individual environment variables.</td>
</tr>
</tbody>
</table>

type ProjectsLocationsEnvironmentsService

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

func NewProjectsLocationsEnvironmentsService

func NewProjectsLocationsEnvironmentsService(s *Service) *ProjectsLocationsEnvironmentsService

func (*ProjectsLocationsEnvironmentsService) Create

Create: Create a new environment.

func (*ProjectsLocationsEnvironmentsService) Delete

Delete: Delete an environment.

func (*ProjectsLocationsEnvironmentsService) Get

Get: Get an existing environment.

func (*ProjectsLocationsEnvironmentsService) List

List: List environments.

func (*ProjectsLocationsEnvironmentsService) Patch

Patch: Update an environment.

type ProjectsLocationsImageVersionsListCall

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

func (*ProjectsLocationsImageVersionsListCall) Context

Context sets the context to be used in this call's Do method. Any pending HTTP request will be aborted if the provided context is canceled.

func (*ProjectsLocationsImageVersionsListCall) Do

Do executes the "composer.projects.locations.imageVersions.list" call. Exactly one of *ListImageVersionsResponse or error will be non-nil. Any non-2xx status code is an error. Response headers are in either *ListImageVersionsResponse.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.

func (*ProjectsLocationsImageVersionsListCall) Fields

Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more information.

func (*ProjectsLocationsImageVersionsListCall) Header

Header returns an http.Header that can be modified by the caller to add HTTP headers to the request.

func (*ProjectsLocationsImageVersionsListCall) IfNoneMatch

IfNoneMatch sets the optional parameter which makes the operation fail if the object's ETag matches the given value. This is useful for getting updates only after the object has changed since the last request. Use googleapi.IsNotModified to check whether the response error from Do is the result of In-None-Match.

func (*ProjectsLocationsImageVersionsListCall) PageSize

PageSize sets the optional parameter "pageSize": The maximum number of image_versions to return.

func (*ProjectsLocationsImageVersionsListCall) PageToken

PageToken sets the optional parameter "pageToken": The next_page_token value returned from a previous List request, if any.

func (*ProjectsLocationsImageVersionsListCall) Pages

Pages invokes f for each page of results. A non-nil error returned from f will halt the iteration. The provided context supersedes any context provided to the Context method.

type ProjectsLocationsImageVersionsService

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

func NewProjectsLocationsImageVersionsService

func NewProjectsLocationsImageVersionsService(s *Service) *ProjectsLocationsImageVersionsService

func (*ProjectsLocationsImageVersionsService) List

List: List ImageVersions for provided location.

type ProjectsLocationsOperationsDeleteCall

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

func (*ProjectsLocationsOperationsDeleteCall) Context

Context sets the context to be used in this call's Do method. Any pending HTTP request will be aborted if the provided context is canceled.

func (*ProjectsLocationsOperationsDeleteCall) Do

Do executes the "composer.projects.locations.operations.delete" call. Exactly one of *Empty or error will be non-nil. Any non-2xx status code is an error. Response headers are in either *Empty.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.

func (*ProjectsLocationsOperationsDeleteCall) Fields

Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more information.

func (*ProjectsLocationsOperationsDeleteCall) Header

Header returns an http.Header that can be modified by the caller to add HTTP headers to the request.

type ProjectsLocationsOperationsGetCall

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

func (*ProjectsLocationsOperationsGetCall) Context

Context sets the context to be used in this call's Do method. Any pending HTTP request will be aborted if the provided context is canceled.

func (*ProjectsLocationsOperationsGetCall) Do

Do executes the "composer.projects.locations.operations.get" call. Exactly one of *Operation or error will be non-nil. Any non-2xx status code is an error. Response headers are in either *Operation.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.

func (*ProjectsLocationsOperationsGetCall) Fields

Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more information.

func (*ProjectsLocationsOperationsGetCall) Header

Header returns an http.Header that can be modified by the caller to add HTTP headers to the request.

func (*ProjectsLocationsOperationsGetCall) IfNoneMatch

IfNoneMatch sets the optional parameter which makes the operation fail if the object's ETag matches the given value. This is useful for getting updates only after the object has changed since the last request. Use googleapi.IsNotModified to check whether the response error from Do is the result of In-None-Match.

type ProjectsLocationsOperationsListCall

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

func (*ProjectsLocationsOperationsListCall) Context

Context sets the context to be used in this call's Do method. Any pending HTTP request will be aborted if the provided context is canceled.

func (*ProjectsLocationsOperationsListCall) Do

Do executes the "composer.projects.locations.operations.list" call. Exactly one of *ListOperationsResponse or error will be non-nil. Any non-2xx status code is an error. Response headers are in either *ListOperationsResponse.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.

func (*ProjectsLocationsOperationsListCall) Fields

Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more information.

func (*ProjectsLocationsOperationsListCall) Filter

Filter sets the optional parameter "filter": The standard list filter.

func (*ProjectsLocationsOperationsListCall) Header

Header returns an http.Header that can be modified by the caller to add HTTP headers to the request.

func (*ProjectsLocationsOperationsListCall) IfNoneMatch

IfNoneMatch sets the optional parameter which makes the operation fail if the object's ETag matches the given value. This is useful for getting updates only after the object has changed since the last request. Use googleapi.IsNotModified to check whether the response error from Do is the result of In-None-Match.

func (*ProjectsLocationsOperationsListCall) PageSize

PageSize sets the optional parameter "pageSize": The standard list page size.

func (*ProjectsLocationsOperationsListCall) PageToken

PageToken sets the optional parameter "pageToken": The standard list page token.

func (*ProjectsLocationsOperationsListCall) Pages

Pages invokes f for each page of results. A non-nil error returned from f will halt the iteration. The provided context supersedes any context provided to the Context method.

type ProjectsLocationsOperationsService

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

func NewProjectsLocationsOperationsService

func NewProjectsLocationsOperationsService(s *Service) *ProjectsLocationsOperationsService

func (*ProjectsLocationsOperationsService) Delete

Delete: Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.

func (*ProjectsLocationsOperationsService) Get

Get: Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.

func (*ProjectsLocationsOperationsService) List

List: Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.

NOTE: the `name` binding allows API services to override the binding to use different resource name schemes, such as `users/*/operations`. To override the binding, API services can add a binding such as "/v1/{name=users/*}/operations" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.

type ProjectsLocationsService

type ProjectsLocationsService struct {
	Environments *ProjectsLocationsEnvironmentsService

	ImageVersions *ProjectsLocationsImageVersionsService

	Operations *ProjectsLocationsOperationsService
	// contains filtered or unexported fields
}

func NewProjectsLocationsService

func NewProjectsLocationsService(s *Service) *ProjectsLocationsService

type ProjectsService

type ProjectsService struct {
	Locations *ProjectsLocationsService
	// contains filtered or unexported fields
}

func NewProjectsService

func NewProjectsService(s *Service) *ProjectsService

type Service

type Service struct {
	BasePath  string // API endpoint base URL
	UserAgent string // optional additional User-Agent fragment

	Projects *ProjectsService
	// contains filtered or unexported fields
}

func New deprecated

func New(client *http.Client) (*Service, error)

New creates a new Service. It uses the provided http.Client for requests.

Deprecated: please use NewService instead. To provide a custom HTTP client, use option.WithHTTPClient. If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.

func NewService

func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error)

NewService creates a new Service.

type SoftwareConfig

type SoftwareConfig struct {
	// AirflowConfigOverrides: Optional. Apache Airflow configuration
	// properties to override.
	//
	// Property keys contain the section and property names, separated by
	// a
	// hyphen, for example "core-dags_are_paused_at_creation". Section names
	// must
	// not contain hyphens ("-"), opening square brackets ("["),  or
	// closing
	// square brackets ("]"). The property name must not be empty and must
	// not
	// contain an equals sign ("=") or semicolon (";"). Section and property
	// names
	// must not contain a period ("."). Apache Airflow configuration
	// property
	// names must be written
	// in
	// [snake_case](https://en.wikipedia.org/wiki/Snake_case). Property
	// values can
	// contain any character, and can be written in any lower/upper case
	// format.
	//
	// Certain Apache Airflow configuration property values
	// are
	// [blacklisted](/composer/docs/how-to/managing/setting-airflow-confi
	// gurations#airflow_configuration_blacklists),
	// and cannot be overridden.
	AirflowConfigOverrides map[string]string `json:"airflowConfigOverrides,omitempty"`

	// EnvVariables: Optional. Additional environment variables to provide
	// to the Apache Airflow
	// scheduler, worker, and webserver processes.
	//
	// Environment variable names must match the regular
	// expression
	// `a-zA-Z_*`. They cannot specify Apache Airflow
	// software configuration overrides (they cannot match the regular
	// expression
	// `AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+`), and they cannot match any of
	// the
	// following reserved names:
	//
	// * `AIRFLOW_HOME`
	// * `C_FORCE_ROOT`
	// * `CONTAINER_NAME`
	// * `DAGS_FOLDER`
	// * `GCP_PROJECT`
	// * `GCS_BUCKET`
	// * `GKE_CLUSTER_NAME`
	// * `SQL_DATABASE`
	// * `SQL_INSTANCE`
	// * `SQL_PASSWORD`
	// * `SQL_PROJECT`
	// * `SQL_REGION`
	// * `SQL_USER`
	EnvVariables map[string]string `json:"envVariables,omitempty"`

	// ImageVersion: The version of the software running in the
	// environment.
	// This encapsulates both the version of Cloud Composer functionality
	// and the
	// version of Apache Airflow. It must match the regular
	// expression
	// `composer-([0-9]+\.[0-9]+\.[0-9]+|latest)-airflow-[0-9]+\.[
	// 0-9]+(\.[0-9]+.*)?`.
	// When used as input, the server also checks if the provided version
	// is
	// supported and denies the request for an unsupported version.
	//
	// The Cloud Composer portion of the version is a
	// [semantic version](https://semver.org) or `latest`. When the patch
	// version
	// is omitted, the current Cloud Composer patch version is
	// selected.
	// When `latest` is provided instead of an explicit version number,
	// the server replaces `latest` with the current Cloud Composer
	// version
	// and stores that version number in the same field.
	//
	// The portion of the image version that follows <em>airflow-</em> is
	// an
	// official Apache Airflow repository
	// [release
	// name](https://github.com/apache/incubator-airflow/releases).
	//
	// See also
	// [Version
	// List](/composer/docs/concepts/versioning/composer-versions).
	ImageVersion string `json:"imageVersion,omitempty"`

	// PypiPackages: Optional. Custom Python Package Index (PyPI) packages
	// to be installed in
	// the environment.
	//
	// Keys refer to the lowercase package name such as "numpy"
	// and values are the lowercase extras and version specifier such
	// as
	// "==1.12.0", "[devel,gcp_api]", or "[devel]>=1.8.2, <1.9.2". To
	// specify a
	// package without pinning it to a version specifier, use the empty
	// string as
	// the value.
	PypiPackages map[string]string `json:"pypiPackages,omitempty"`

	// PythonVersion: Optional. The major version of Python used to run the
	// Apache Airflow
	// scheduler, worker, and webserver processes.
	//
	// Can be set to '2' or '3'. If not specified, the default is '2'.
	// Cannot be
	// updated.
	PythonVersion string `json:"pythonVersion,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "AirflowConfigOverrides") to unconditionally include in API requests.
	// By default, fields with empty values are omitted from API requests.
	// However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AirflowConfigOverrides")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

SoftwareConfig: Specifies the selection and configuration of software inside the environment.

func (*SoftwareConfig) MarshalJSON

func (s *SoftwareConfig) MarshalJSON() ([]byte, error)

type Status

type Status struct {
	// Code: The status code, which should be an enum value of
	// google.rpc.Code.
	Code int64 `json:"code,omitempty"`

	// Details: A list of messages that carry the error details.  There is a
	// common set of
	// message types for APIs to use.
	Details []googleapi.RawMessage `json:"details,omitempty"`

	// Message: A developer-facing error message, which should be in
	// English. Any
	// user-facing error message should be localized and sent in
	// the
	// google.rpc.Status.details field, or localized by the client.
	Message string `json:"message,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Code") to
	// unconditionally include in API requests. By default, fields with
	// empty values are omitted from API requests. However, any non-pointer,
	// non-interface field appearing in ForceSendFields will be sent to the
	// server regardless of whether the field is empty or not. This may be
	// used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Code") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

Status: The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details.

You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).

func (*Status) MarshalJSON

func (s *Status) MarshalJSON() ([]byte, error)

Jump to

Keyboard shortcuts

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