v1alpha1

package
v0.6.0-beta.2 Latest Latest
Warning

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

Go to latest
Published: Oct 3, 2019 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package v1alpha1 is the v1alpha1 version of the API. +groupName=shipper.booking.com

Index

Constants

View Source
const (
	ShipperNamespace            = "shipper-system"
	GlobalRolloutBlockNamespace = "rollout-blocks-global"

	ShipperManagementServiceAccount  = "shipper-management-cluster"
	ShipperApplicationServiceAccount = "shipper-application-cluster"

	PhaseLabel = "phase"

	ReleaseLabel                 = "shipper-release"
	AppLabel                     = "shipper-app"
	ReleaseEnvironmentHashLabel  = "shipper-release-hash"
	PodTrafficStatusLabel        = "shipper-traffic-status"
	InstallationTargetOwnerLabel = "shipper-owned-by"

	ReleaseRecordWaitingForObject = "WaitingForObject"
	ReleaseRecordObjectCreated    = "ReleaseCreated"

	ReleasePhaseWaitingForScheduling = "WaitingForScheduling"
	ReleasePhaseWaitingForStrategy   = "WaitingForStrategy"
	ReleasePhaseWaitingForCommand    = "WaitingForCommand"
	ReleasePhaseInstalled            = "Installed"
	ReleasePhaseSuperseded           = "Superseded"
	ReleasePhaseAborted              = "Aborted"

	InstallationStatusInstalled = "Installed"
	InstallationStatusFailed    = "Failed"

	AppHighestObservedGenerationAnnotation = "shipper.booking.com/app.highestObservedGeneration"

	AppChartNameAnnotation            = "shipper.booking.com/app.chart.name"
	AppChartVersionResolvedAnnotation = "shipper.booking.com/app.chart.version.resolved"
	AppChartVersionRawAnnotation      = "shipper.booking.com/app.chart.version.raw"

	ReleaseGenerationAnnotation        = "shipper.booking.com/release.generation"
	ReleaseTemplateIterationAnnotation = "shipper.booking.com/release.template.iteration"
	ReleaseClustersAnnotation          = "shipper.booking.com/release.clusters"

	SecretChecksumAnnotation             = "shipper.booking.com/cluster-secret.checksum"
	SecretClusterSkipTlsVerifyAnnotation = "shipper.booking.com/cluster-secret.insecure-tls-skip-verify"

	RolloutBlocksOverrideAnnotation = "shipper.booking.com/rollout-block.override"

	LBLabel         = "shipper-lb"
	LBForProduction = "production"

	Enabled  = "enabled"
	Disabled = "disabled"

	True  = "true"
	False = "false"

	HelmReleaseLabel    = "release"
	HelmWorkaroundLabel = "enable-helm-release-workaround"

	RBACDomainLabel       = "shipper-rbac-domain"
	RBACManagementDomain  = "management"
	RBACApplicationDomain = "application"
)
View Source
const (
	RolloutBlockReason = "RolloutsBlocked"
)

Variables

View Source
var (
	// localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes.
	SchemeBuilder runtime.SchemeBuilder

	AddToScheme = localSchemeBuilder.AddToScheme
)
View Source
var SchemeGroupVersion = schema.GroupVersion{Group: shipper.GroupName, Version: "v1alpha1"}

SchemeGroupVersion is group version used to register these objects

Functions

func Resource

func Resource(resource string) schema.GroupResource

Resource takes an unqualified resource and returns a Group qualified GroupResource

Types

type AchievedStep

type AchievedStep struct {
	Step int32  `json:"step"`
	Name string `json:"name"`
}

func (*AchievedStep) DeepCopy

func (in *AchievedStep) DeepCopy() *AchievedStep

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AchievedStep.

func (*AchievedStep) DeepCopyInto

func (in *AchievedStep) DeepCopyInto(out *AchievedStep)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Application

type Application struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec ApplicationSpec `json:"spec"`
	// Most recently observed status of the application
	Status ApplicationStatus `json:"status"`
}

Application describes a deployable application

func (*Application) DeepCopy

func (in *Application) DeepCopy() *Application

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Application.

func (*Application) DeepCopyInto

func (in *Application) DeepCopyInto(out *Application)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Application) DeepCopyObject

func (in *Application) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ApplicationCondition

type ApplicationCondition struct {
	Type               ApplicationConditionType `json:"type"`
	Status             corev1.ConditionStatus   `json:"status"`
	LastTransitionTime metav1.Time              `json:"lastTransitionTime,omitempty"`
	Reason             string                   `json:"reason,omitempty"`
	Message            string                   `json:"message,omitempty"`
}

func (*ApplicationCondition) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCondition.

func (*ApplicationCondition) DeepCopyInto

func (in *ApplicationCondition) DeepCopyInto(out *ApplicationCondition)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ApplicationConditionType

type ApplicationConditionType string
const (
	ApplicationConditionTypeValidHistory  ApplicationConditionType = "ValidHistory"
	ApplicationConditionTypeReleaseSynced ApplicationConditionType = "ReleaseSynced"
	ApplicationConditionTypeAborting      ApplicationConditionType = "Aborting"
	ApplicationConditionTypeRollingOut    ApplicationConditionType = "RollingOut"
	ApplicationConditionTypeBlocked       ApplicationConditionType = "Blocked"
)

type ApplicationList

type ApplicationList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`

	Items []Application `json:"items"`
}

ApplicationList is a list of Applications. Mostly only useful for admins: regular users interact with exactly one Application at once

func (*ApplicationList) DeepCopy

func (in *ApplicationList) DeepCopy() *ApplicationList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationList.

func (*ApplicationList) DeepCopyInto

func (in *ApplicationList) DeepCopyInto(out *ApplicationList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ApplicationList) DeepCopyObject

func (in *ApplicationList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ApplicationSpec

type ApplicationSpec struct {
	RevisionHistoryLimit *int32             `json:"revisionHistoryLimit"`
	Template             ReleaseEnvironment `json:"template"`
}

func (*ApplicationSpec) DeepCopy

func (in *ApplicationSpec) DeepCopy() *ApplicationSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSpec.

func (*ApplicationSpec) DeepCopyInto

func (in *ApplicationSpec) DeepCopyInto(out *ApplicationSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ApplicationStatus

type ApplicationStatus struct {
	Conditions []ApplicationCondition `json:"conditions,omitempty"`
	History    []string               `json:"history,omitempty"`
}

func (*ApplicationStatus) DeepCopy

func (in *ApplicationStatus) DeepCopy() *ApplicationStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationStatus.

func (*ApplicationStatus) DeepCopyInto

func (in *ApplicationStatus) DeepCopyInto(out *ApplicationStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CapacityTarget

type CapacityTarget struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   CapacityTargetSpec   `json:"spec"`
	Status CapacityTargetStatus `json:"status,omitempty"`
}

A CapacityTarget defines the goal state for # of pods for incumbent and contender versions. This is used by the StrategyController to change the state of the cluster to satisfy a single step of a Strategy.

func (*CapacityTarget) DeepCopy

func (in *CapacityTarget) DeepCopy() *CapacityTarget

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CapacityTarget.

func (*CapacityTarget) DeepCopyInto

func (in *CapacityTarget) DeepCopyInto(out *CapacityTarget)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*CapacityTarget) DeepCopyObject

func (in *CapacityTarget) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type CapacityTargetList

type CapacityTargetList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`

	Items []CapacityTarget `json:"items"`
}

func (*CapacityTargetList) DeepCopy

func (in *CapacityTargetList) DeepCopy() *CapacityTargetList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CapacityTargetList.

func (*CapacityTargetList) DeepCopyInto

func (in *CapacityTargetList) DeepCopyInto(out *CapacityTargetList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*CapacityTargetList) DeepCopyObject

func (in *CapacityTargetList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type CapacityTargetSpec

type CapacityTargetSpec struct {
	Clusters []ClusterCapacityTarget `json:"clusters"`
}

func (*CapacityTargetSpec) DeepCopy

func (in *CapacityTargetSpec) DeepCopy() *CapacityTargetSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CapacityTargetSpec.

func (*CapacityTargetSpec) DeepCopyInto

func (in *CapacityTargetSpec) DeepCopyInto(out *CapacityTargetSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CapacityTargetStatus

type CapacityTargetStatus struct {
	Clusters []ClusterCapacityStatus `json:"clusters,omitempty"`
}

func (*CapacityTargetStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CapacityTargetStatus.

func (*CapacityTargetStatus) DeepCopyInto

func (in *CapacityTargetStatus) DeepCopyInto(out *CapacityTargetStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Chart

type Chart struct {
	Name    string `json:"name"`
	Version string `json:"version"`
	RepoURL string `json:"repoUrl"`
}

func (*Chart) DeepCopy

func (in *Chart) DeepCopy() *Chart

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Chart.

func (*Chart) DeepCopyInto

func (in *Chart) DeepCopyInto(out *Chart)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ChartValues

type ChartValues map[string]interface{}

func (ChartValues) DeepCopy added in v0.5.0

func (in ChartValues) DeepCopy() ChartValues

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ChartValues.

func (*ChartValues) DeepCopyInto

func (in *ChartValues) DeepCopyInto(out *ChartValues)

type Cluster

type Cluster struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec ClusterSpec `json:"spec"`

	// Most recently observed status of the order
	/// +optional
	Status ClusterStatus `json:"status"`
}

An Cluster is a cluster we're deploying to.

func (*Cluster) DeepCopy

func (in *Cluster) DeepCopy() *Cluster

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster.

func (*Cluster) DeepCopyInto

func (in *Cluster) DeepCopyInto(out *Cluster)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Cluster) DeepCopyObject

func (in *Cluster) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ClusterCapacityCondition

type ClusterCapacityCondition struct {
	Type               ClusterConditionType   `json:"type"`
	Status             corev1.ConditionStatus `json:"status"`
	LastTransitionTime metav1.Time            `json:"lastTransitionTime,omitempty"`
	Reason             string                 `json:"reason,omitempty"`
	Message            string                 `json:"message,omitempty"`
}

func (*ClusterCapacityCondition) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCapacityCondition.

func (*ClusterCapacityCondition) DeepCopyInto

func (in *ClusterCapacityCondition) DeepCopyInto(out *ClusterCapacityCondition)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterCapacityReport added in v0.2.0

type ClusterCapacityReport struct {
	Owner     ClusterCapacityReportOwner       `json:"owner"`
	Breakdown []ClusterCapacityReportBreakdown `json:"breakdown,omitempty"`
}

func (*ClusterCapacityReport) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCapacityReport.

func (*ClusterCapacityReport) DeepCopyInto added in v0.2.0

func (in *ClusterCapacityReport) DeepCopyInto(out *ClusterCapacityReport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterCapacityReportBreakdown added in v0.2.0

type ClusterCapacityReportBreakdown struct {
	Containers []ClusterCapacityReportContainerBreakdown `json:"containers,omitempty"`
	Count      uint32                                    `json:"count"`
	Reason     string                                    `json:"reason,omitempty"`
	Status     string                                    `json:"status"`
	Type       string                                    `json:"type"`
}

func (*ClusterCapacityReportBreakdown) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCapacityReportBreakdown.

func (*ClusterCapacityReportBreakdown) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterCapacityReportContainerBreakdown added in v0.2.0

type ClusterCapacityReportContainerBreakdown struct {
	Name   string                                         `json:"name"`
	States []ClusterCapacityReportContainerStateBreakdown `json:"states"`
}

func (*ClusterCapacityReportContainerBreakdown) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCapacityReportContainerBreakdown.

func (*ClusterCapacityReportContainerBreakdown) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterCapacityReportContainerBreakdownExample added in v0.2.0

type ClusterCapacityReportContainerBreakdownExample struct {
	Pod     string  `json:"pod"`
	Message *string `json:"message,omitempty"`
}

func (*ClusterCapacityReportContainerBreakdownExample) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCapacityReportContainerBreakdownExample.

func (*ClusterCapacityReportContainerBreakdownExample) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterCapacityReportContainerStateBreakdown added in v0.2.0

type ClusterCapacityReportContainerStateBreakdown struct {
	Count   uint32                                         `json:"count"`
	Example ClusterCapacityReportContainerBreakdownExample `json:"example"`
	Reason  string                                         `json:"reason,omitempty"`
	Type    string                                         `json:"type"`
}

func (*ClusterCapacityReportContainerStateBreakdown) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCapacityReportContainerStateBreakdown.

func (*ClusterCapacityReportContainerStateBreakdown) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterCapacityReportOwner added in v0.2.0

type ClusterCapacityReportOwner struct {
	Name string `json:"name"`
}

func (*ClusterCapacityReportOwner) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCapacityReportOwner.

func (*ClusterCapacityReportOwner) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterCapacityStatus

type ClusterCapacityStatus struct {
	Name              string                     `json:"name"`
	AvailableReplicas int32                      `json:"availableReplicas"`
	AchievedPercent   int32                      `json:"achievedPercent"`
	SadPods           []PodStatus                `json:"sadPods,omitempty"`
	Conditions        []ClusterCapacityCondition `json:"conditions,omitempty"`
	Reports           []ClusterCapacityReport    `json:"reports,omitempty"`
}

func (*ClusterCapacityStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCapacityStatus.

func (*ClusterCapacityStatus) DeepCopyInto

func (in *ClusterCapacityStatus) DeepCopyInto(out *ClusterCapacityStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterCapacityTarget

type ClusterCapacityTarget struct {
	Name              string `json:"name"`
	Percent           int32  `json:"percent"`
	TotalReplicaCount int32  `json:"totalReplicaCount"`
}

func (*ClusterCapacityTarget) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCapacityTarget.

func (*ClusterCapacityTarget) DeepCopyInto

func (in *ClusterCapacityTarget) DeepCopyInto(out *ClusterCapacityTarget)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterConditionType

type ClusterConditionType string
const (
	ClusterConditionTypeOperational ClusterConditionType = "Operational"
	ClusterConditionTypeReady       ClusterConditionType = "Ready"
)

type ClusterInstallationCondition

type ClusterInstallationCondition struct {
	Type               ClusterConditionType   `json:"type"`
	Status             corev1.ConditionStatus `json:"status"`
	LastTransitionTime metav1.Time            `json:"lastTransitionTime,omitempty"`
	Reason             string                 `json:"reason,omitempty"`
	Message            string                 `json:"message,omitempty"`
}

func (*ClusterInstallationCondition) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterInstallationCondition.

func (*ClusterInstallationCondition) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterInstallationStatus

type ClusterInstallationStatus struct {
	Name       string                         `json:"name"`
	Status     string                         `json:"status"`
	Message    string                         `json:"message,omitempty"`
	Conditions []ClusterInstallationCondition `json:"conditions,omitempty"`
}

func (*ClusterInstallationStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterInstallationStatus.

func (*ClusterInstallationStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterList

type ClusterList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`

	Items []Cluster `json:"items"`
}

func (*ClusterList) DeepCopy

func (in *ClusterList) DeepCopy() *ClusterList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterList.

func (*ClusterList) DeepCopyInto

func (in *ClusterList) DeepCopyInto(out *ClusterList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ClusterList) DeepCopyObject

func (in *ClusterList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ClusterRequirements

type ClusterRequirements struct {
	// it is an error to not specify any regions
	Regions      []RegionRequirement `json:"regions"`
	Capabilities []string            `json:"capabilities,omitempty"`
}

func (*ClusterRequirements) DeepCopy

func (in *ClusterRequirements) DeepCopy() *ClusterRequirements

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRequirements.

func (*ClusterRequirements) DeepCopyInto

func (in *ClusterRequirements) DeepCopyInto(out *ClusterRequirements)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterSchedulerSettings

type ClusterSchedulerSettings struct {
	Unschedulable bool    `json:"unschedulable"`
	Weight        *int32  `json:"weight,omitempty"`
	Identity      *string `json:"identity,omitempty"`
}

func (*ClusterSchedulerSettings) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterSchedulerSettings.

func (*ClusterSchedulerSettings) DeepCopyInto

func (in *ClusterSchedulerSettings) DeepCopyInto(out *ClusterSchedulerSettings)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterSpec

type ClusterSpec struct {
	Capabilities []string                 `json:"capabilities"`
	Region       string                   `json:"region"`
	APIMaster    string                   `json:"apiMaster"`
	Scheduler    ClusterSchedulerSettings `json:"scheduler"`
}

func (*ClusterSpec) DeepCopy

func (in *ClusterSpec) DeepCopy() *ClusterSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterSpec.

func (*ClusterSpec) DeepCopyInto

func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterStatus

type ClusterStatus struct {
	InService bool `json:"inService"`
}

NOTE(btyler) when we introduce capacity based scheduling, the capacity can be collected by a cluster controller and stored in cluster.status

func (*ClusterStatus) DeepCopy

func (in *ClusterStatus) DeepCopy() *ClusterStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterStatus.

func (*ClusterStatus) DeepCopyInto

func (in *ClusterStatus) DeepCopyInto(out *ClusterStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterTrafficCondition

type ClusterTrafficCondition struct {
	Type               ClusterConditionType   `json:"type"`
	Status             corev1.ConditionStatus `json:"status"`
	LastTransitionTime metav1.Time            `json:"lastTransitionTime,omitempty"`
	Reason             string                 `json:"reason,omitempty"`
	Message            string                 `json:"message,omitempty"`
}

func (*ClusterTrafficCondition) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterTrafficCondition.

func (*ClusterTrafficCondition) DeepCopyInto

func (in *ClusterTrafficCondition) DeepCopyInto(out *ClusterTrafficCondition)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterTrafficStatus

type ClusterTrafficStatus struct {
	Name            string                    `json:"name"`
	AchievedTraffic uint32                    `json:"achievedTraffic"`
	Status          string                    `json:"status"`
	Conditions      []ClusterTrafficCondition `json:"conditions"`
}

func (*ClusterTrafficStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterTrafficStatus.

func (*ClusterTrafficStatus) DeepCopyInto

func (in *ClusterTrafficStatus) DeepCopyInto(out *ClusterTrafficStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterTrafficTarget

type ClusterTrafficTarget struct {
	Name string `json:"name"`
	// apimachinery intstr for percentages?
	Weight uint32 `json:"weight"`
}

func (*ClusterTrafficTarget) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterTrafficTarget.

func (*ClusterTrafficTarget) DeepCopyInto

func (in *ClusterTrafficTarget) DeepCopyInto(out *ClusterTrafficTarget)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type InstallationTarget

type InstallationTarget struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   InstallationTargetSpec   `json:"spec"`
	Status InstallationTargetStatus `json:"status,omitempty"`
}

An InstallationTarget defines the goal state for # of pods for incumbent and contender versions. This is used by the StrategyController to change the state of the cluster to satisfy a single step of a Strategy.

func (*InstallationTarget) DeepCopy

func (in *InstallationTarget) DeepCopy() *InstallationTarget

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InstallationTarget.

func (*InstallationTarget) DeepCopyInto

func (in *InstallationTarget) DeepCopyInto(out *InstallationTarget)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*InstallationTarget) DeepCopyObject

func (in *InstallationTarget) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type InstallationTargetList

type InstallationTargetList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`

	Items []InstallationTarget `json:"items"`
}

func (*InstallationTargetList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InstallationTargetList.

func (*InstallationTargetList) DeepCopyInto

func (in *InstallationTargetList) DeepCopyInto(out *InstallationTargetList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*InstallationTargetList) DeepCopyObject

func (in *InstallationTargetList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type InstallationTargetSpec

type InstallationTargetSpec struct {
	Clusters    []string `json:"clusters"`
	CanOverride bool     `json:"canOverride"`
	// XXX these are nullable because of migration
	Chart  *Chart       `json:"chart"`
	Values *ChartValues `json:"values,omitempty"`
}

func (*InstallationTargetSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InstallationTargetSpec.

func (*InstallationTargetSpec) DeepCopyInto

func (in *InstallationTargetSpec) DeepCopyInto(out *InstallationTargetSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type InstallationTargetStatus

type InstallationTargetStatus struct {
	Clusters []*ClusterInstallationStatus `json:"clusters,omitempty"`
}

func (*InstallationTargetStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InstallationTargetStatus.

func (*InstallationTargetStatus) DeepCopyInto

func (in *InstallationTargetStatus) DeepCopyInto(out *InstallationTargetStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PodStatus

type PodStatus struct {
	Name           string                   `json:"name"`
	Containers     []corev1.ContainerStatus `json:"containers"`
	InitContainers []corev1.ContainerStatus `json:"initContainers"`
	Condition      corev1.PodCondition      `json:"condition"`
}

func (*PodStatus) DeepCopy

func (in *PodStatus) DeepCopy() *PodStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodStatus.

func (*PodStatus) DeepCopyInto

func (in *PodStatus) DeepCopyInto(out *PodStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RegionRequirement

type RegionRequirement struct {
	Name     string `json:"name"`
	Replicas *int32 `json:"replicas,omitempty"`
}

func (*RegionRequirement) DeepCopy

func (in *RegionRequirement) DeepCopy() *RegionRequirement

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegionRequirement.

func (*RegionRequirement) DeepCopyInto

func (in *RegionRequirement) DeepCopyInto(out *RegionRequirement)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Release

type Release struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   ReleaseSpec   `json:"spec"`
	Status ReleaseStatus `json:"status"`
}

A Release is the defines the goal state for # of pods for incumbent and contender versions. This is used by the StrategyController to change the state of the cluster to satisfy a single step of a Strategy.

func (*Release) DeepCopy

func (in *Release) DeepCopy() *Release

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Release.

func (*Release) DeepCopyInto

func (in *Release) DeepCopyInto(out *Release)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Release) DeepCopyObject

func (in *Release) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ReleaseCondition

type ReleaseCondition struct {
	Type               ReleaseConditionType   `json:"type"`
	Status             corev1.ConditionStatus `json:"status"`
	LastTransitionTime metav1.Time            `json:"lastTransitionTime,omitempty"`
	Reason             string                 `json:"reason,omitempty"`
	Message            string                 `json:"message,omitempty"`
}

func (*ReleaseCondition) DeepCopy

func (in *ReleaseCondition) DeepCopy() *ReleaseCondition

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseCondition.

func (*ReleaseCondition) DeepCopyInto

func (in *ReleaseCondition) DeepCopyInto(out *ReleaseCondition)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReleaseConditionType

type ReleaseConditionType string
const (
	ReleaseConditionTypeScheduled ReleaseConditionType = "Scheduled"
	ReleaseConditionTypeComplete  ReleaseConditionType = "Complete"
	ReleaseConditionTypeBlocked   ReleaseConditionType = "Blocked"
)

type ReleaseEnvironment

type ReleaseEnvironment struct {
	// Chart spec: name, version, repoURL
	Chart Chart `json:"chart"`
	// the inlined "values.yaml" to apply to the chart when rendering it
	// XXX pointer here means it's null-able, do we want that?
	Values *ChartValues `json:"values"`

	// requirements for target clusters for the deployment
	ClusterRequirements ClusterRequirements `json:"clusterRequirements"`

	Strategy *RolloutStrategy `json:"strategy,omitempty"`
}

func (*ReleaseEnvironment) DeepCopy

func (in *ReleaseEnvironment) DeepCopy() *ReleaseEnvironment

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseEnvironment.

func (*ReleaseEnvironment) DeepCopyInto

func (in *ReleaseEnvironment) DeepCopyInto(out *ReleaseEnvironment)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReleaseList

type ReleaseList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`

	Items []Release `json:"items"`
}

func (*ReleaseList) DeepCopy

func (in *ReleaseList) DeepCopy() *ReleaseList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseList.

func (*ReleaseList) DeepCopyInto

func (in *ReleaseList) DeepCopyInto(out *ReleaseList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ReleaseList) DeepCopyObject

func (in *ReleaseList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ReleaseSpec

type ReleaseSpec struct {
	TargetStep  int32              `json:"targetStep"`
	Environment ReleaseEnvironment `json:"environment"`
}

func (*ReleaseSpec) DeepCopy

func (in *ReleaseSpec) DeepCopy() *ReleaseSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseSpec.

func (*ReleaseSpec) DeepCopyInto

func (in *ReleaseSpec) DeepCopyInto(out *ReleaseSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReleaseStatus

type ReleaseStatus struct {
	AchievedStep *AchievedStep          `json:"achievedStep,omitempty"`
	Strategy     *ReleaseStrategyStatus `json:"strategy,omitempty"`
	Conditions   []ReleaseCondition     `json:"conditions,omitempty"`
}

this will likely grow into a struct with interesting fields

func (*ReleaseStatus) DeepCopy

func (in *ReleaseStatus) DeepCopy() *ReleaseStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseStatus.

func (*ReleaseStatus) DeepCopyInto

func (in *ReleaseStatus) DeepCopyInto(out *ReleaseStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReleaseStrategyCondition

type ReleaseStrategyCondition struct {
	Type               StrategyConditionType  `json:"type"`
	Status             corev1.ConditionStatus `json:"status"`
	LastTransitionTime metav1.Time            `json:"lastTransitionTime,omitempty"`
	Reason             string                 `json:"reason,omitempty"`
	Message            string                 `json:"message,omitempty"`
	Step               int32                  `json:"step,omitempty"`
}

func (*ReleaseStrategyCondition) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseStrategyCondition.

func (*ReleaseStrategyCondition) DeepCopyInto

func (in *ReleaseStrategyCondition) DeepCopyInto(out *ReleaseStrategyCondition)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReleaseStrategyState

type ReleaseStrategyState struct {
	WaitingForInstallation StrategyState `json:"waitingForInstallation"`
	WaitingForCapacity     StrategyState `json:"waitingForCapacity"`
	WaitingForTraffic      StrategyState `json:"waitingForTraffic"`
	WaitingForCommand      StrategyState `json:"waitingForCommand"`
}

func (*ReleaseStrategyState) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseStrategyState.

func (*ReleaseStrategyState) DeepCopyInto

func (in *ReleaseStrategyState) DeepCopyInto(out *ReleaseStrategyState)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReleaseStrategyStatus

type ReleaseStrategyStatus struct {
	State      ReleaseStrategyState       `json:"state,omitempty"`
	Conditions []ReleaseStrategyCondition `json:"conditions,omitempty"`
}

func (*ReleaseStrategyStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseStrategyStatus.

func (*ReleaseStrategyStatus) DeepCopyInto

func (in *ReleaseStrategyStatus) DeepCopyInto(out *ReleaseStrategyStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RolloutBlock added in v0.6.0

type RolloutBlock struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   RolloutBlockSpec   `json:"spec"`
	Status RolloutBlockStatus `json:"status"`
}

A RolloutBlock defines the a state where rollouts are blocked, locally or globally. This is used by the ApplicationController to disable rollouts.

func (*RolloutBlock) DeepCopy added in v0.6.0

func (in *RolloutBlock) DeepCopy() *RolloutBlock

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutBlock.

func (*RolloutBlock) DeepCopyInto added in v0.6.0

func (in *RolloutBlock) DeepCopyInto(out *RolloutBlock)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RolloutBlock) DeepCopyObject added in v0.6.0

func (in *RolloutBlock) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RolloutBlockAuthor added in v0.6.0

type RolloutBlockAuthor struct {
	Type string `json:"type"`
	Name string `json:"name"`
}

func (*RolloutBlockAuthor) DeepCopy added in v0.6.0

func (in *RolloutBlockAuthor) DeepCopy() *RolloutBlockAuthor

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutBlockAuthor.

func (*RolloutBlockAuthor) DeepCopyInto added in v0.6.0

func (in *RolloutBlockAuthor) DeepCopyInto(out *RolloutBlockAuthor)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RolloutBlockList added in v0.6.0

type RolloutBlockList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`

	Items []RolloutBlock `json:"items"`
}

func (*RolloutBlockList) DeepCopy added in v0.6.0

func (in *RolloutBlockList) DeepCopy() *RolloutBlockList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutBlockList.

func (*RolloutBlockList) DeepCopyInto added in v0.6.0

func (in *RolloutBlockList) DeepCopyInto(out *RolloutBlockList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RolloutBlockList) DeepCopyObject added in v0.6.0

func (in *RolloutBlockList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RolloutBlockOverrides added in v0.6.0

type RolloutBlockOverrides struct {
	Application string `json:"application"`
	Release     string `json:"release"`
}

func (*RolloutBlockOverrides) DeepCopy added in v0.6.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutBlockOverrides.

func (*RolloutBlockOverrides) DeepCopyInto added in v0.6.0

func (in *RolloutBlockOverrides) DeepCopyInto(out *RolloutBlockOverrides)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RolloutBlockSpec added in v0.6.0

type RolloutBlockSpec struct {
	Message string             `json:"message"`
	Author  RolloutBlockAuthor `json:"author"`
}

func (*RolloutBlockSpec) DeepCopy added in v0.6.0

func (in *RolloutBlockSpec) DeepCopy() *RolloutBlockSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutBlockSpec.

func (*RolloutBlockSpec) DeepCopyInto added in v0.6.0

func (in *RolloutBlockSpec) DeepCopyInto(out *RolloutBlockSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RolloutBlockStatus added in v0.6.0

type RolloutBlockStatus struct {
	Overrides RolloutBlockOverrides `json:"overrides"`
}

func (*RolloutBlockStatus) DeepCopy added in v0.6.0

func (in *RolloutBlockStatus) DeepCopy() *RolloutBlockStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutBlockStatus.

func (*RolloutBlockStatus) DeepCopyInto added in v0.6.0

func (in *RolloutBlockStatus) DeepCopyInto(out *RolloutBlockStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RolloutStrategy

type RolloutStrategy struct {
	Steps []RolloutStrategyStep `json:"steps"`
}

func (*RolloutStrategy) DeepCopy

func (in *RolloutStrategy) DeepCopy() *RolloutStrategy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutStrategy.

func (*RolloutStrategy) DeepCopyInto

func (in *RolloutStrategy) DeepCopyInto(out *RolloutStrategy)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RolloutStrategyStep

type RolloutStrategyStep struct {
	Name     string                   `json:"name"`
	Capacity RolloutStrategyStepValue `json:"capacity"`
	Traffic  RolloutStrategyStepValue `json:"traffic"`
}

func (*RolloutStrategyStep) DeepCopy

func (in *RolloutStrategyStep) DeepCopy() *RolloutStrategyStep

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutStrategyStep.

func (*RolloutStrategyStep) DeepCopyInto

func (in *RolloutStrategyStep) DeepCopyInto(out *RolloutStrategyStep)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RolloutStrategyStepValue

type RolloutStrategyStepValue struct {
	Incumbent int32 `json:"incumbent"`
	Contender int32 `json:"contender"`
}

func (*RolloutStrategyStepValue) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutStrategyStepValue.

func (*RolloutStrategyStepValue) DeepCopyInto

func (in *RolloutStrategyStepValue) DeepCopyInto(out *RolloutStrategyStepValue)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type StrategyConditionType

type StrategyConditionType string
const (
	StrategyConditionContenderAchievedInstallation StrategyConditionType = "ContenderAchievedInstallation"
	StrategyConditionContenderAchievedCapacity     StrategyConditionType = "ContenderAchievedCapacity"
	StrategyConditionContenderAchievedTraffic      StrategyConditionType = "ContenderAchievedTraffic"
	StrategyConditionIncumbentAchievedCapacity     StrategyConditionType = "IncumbentAchievedCapacity"
	StrategyConditionIncumbentAchievedTraffic      StrategyConditionType = "IncumbentAchievedTraffic"
)

type StrategyState

type StrategyState string
const (
	StrategyStateUnknown StrategyState = "Unknown"
	StrategyStateTrue    StrategyState = "True"
	StrategyStateFalse   StrategyState = "False"
)

func (*StrategyState) UnmarshalJSON

func (ss *StrategyState) UnmarshalJSON(b []byte) error

type TrafficTarget

type TrafficTarget struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec TrafficTargetSpec `json:"spec"`

	Status TrafficTargetStatus `json:"status,omitempty"`
}

A TrafficTarget defines the goal state for traffic split between incumbent and contender versions. This is used by the StrategyController to change the state of the service mesh to satisfy a single step of a Strategy.

func (*TrafficTarget) DeepCopy

func (in *TrafficTarget) DeepCopy() *TrafficTarget

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrafficTarget.

func (*TrafficTarget) DeepCopyInto

func (in *TrafficTarget) DeepCopyInto(out *TrafficTarget)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*TrafficTarget) DeepCopyObject

func (in *TrafficTarget) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type TrafficTargetList

type TrafficTargetList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`

	Items []TrafficTarget `json:"items"`
}

func (*TrafficTargetList) DeepCopy

func (in *TrafficTargetList) DeepCopy() *TrafficTargetList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrafficTargetList.

func (*TrafficTargetList) DeepCopyInto

func (in *TrafficTargetList) DeepCopyInto(out *TrafficTargetList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*TrafficTargetList) DeepCopyObject

func (in *TrafficTargetList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type TrafficTargetSpec

type TrafficTargetSpec struct {
	Clusters []ClusterTrafficTarget `json:"clusters"`
}

func (*TrafficTargetSpec) DeepCopy

func (in *TrafficTargetSpec) DeepCopy() *TrafficTargetSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrafficTargetSpec.

func (*TrafficTargetSpec) DeepCopyInto

func (in *TrafficTargetSpec) DeepCopyInto(out *TrafficTargetSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TrafficTargetStatus

type TrafficTargetStatus struct {
	Clusters []*ClusterTrafficStatus `json:"clusters,omitempty"`
}

func (*TrafficTargetStatus) DeepCopy

func (in *TrafficTargetStatus) DeepCopy() *TrafficTargetStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrafficTargetStatus.

func (*TrafficTargetStatus) DeepCopyInto

func (in *TrafficTargetStatus) DeepCopyInto(out *TrafficTargetStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Jump to

Keyboard shortcuts

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