v1

package
v1.2.1 Latest Latest
Warning

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

Go to latest
Published: Jan 6, 2020 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Copyright 2019 The Rook Authors. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Copyright 2019 The Rook Authors. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Package v1 is the v1 version of the API. +groupName=edgefs.rook.io

Copyright 2019 The Rook Authors. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Copyright 2019 The Rook Authors. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Copyright 2019 The Rook Authors. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Copyright 2019 The Rook Authors. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Copyright 2019 The Rook Authors. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Index

Constants

View Source
const (
	DeploymentRtlfs     = "rtlfs"
	DeploymentRtrd      = "rtrd"
	DeploymentAutoRtlfs = "autoRtlfs"
	DeploymentRtkvs     = "rtkvs"
)
View Source
const (
	KeyPrepare = "prepare"
	KeyMgr     = "mgr"
	KeyTarget  = "target"
)
View Source
const (
	CustomResourceGroup = "edgefs.rook.io"
	Version             = "v1"
)
View Source
const (
	ResourcesKeyMgr    = "mgr"
	ResourcesKeyTarget = "target"
)

Variables

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

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

SchemeGroupVersion is group version used to register these objects

Functions

func ByteCountBinary

func ByteCountBinary(b uint64) string

func GetHostLocalTimeVolume

func GetHostLocalTimeVolume() v1.Volume

func GetHostLocalTimeVolumeMount

func GetHostLocalTimeVolumeMount() v1.VolumeMount

func GetInitiatorEnvArr

func GetInitiatorEnvArr(svctype string, embedded bool, chunkCacheSize resource.Quantity, resources v1.ResourceRequirements) []v1.EnvVar

GetInitiatorEnvArr returns array of EnvVar for all the Initiator based on configured resources and its profile

func GetMgrAnnotations

func GetMgrAnnotations(a rook.AnnotationsSpec) rook.Annotations

GetMgrAnnotations returns the Annotations for the MGR service

func GetMgrPlacement

func GetMgrPlacement(p rook.PlacementSpec) rook.Placement

GetMgrPlacement returns the placement for the MGR service

func GetMgrResources

func GetMgrResources(p rook.ResourceSpec) v1.ResourceRequirements

GetMgrResources returns the placement for the MGR service

func GetModifiedRookImagePath

func GetModifiedRookImagePath(originRookImage, addon string) string

GetModifiedRookImagePath takes current edgefs path to provide modified path to specific images I.e in case of original edgefs path: edgefs/edgefs:1.2.31 then edgefs ui path should be edgefs/edgefs-ui:1.2.25 and edgefs-restapi should be edgefs/edgefs-restapi:1.2.31 addon param is edgefs image suffix. To get restapi image path getModifiedRookImagePath(edgefsImage, "restapi")

func GetPrepareAnnotations

func GetPrepareAnnotations(a rook.AnnotationsSpec) rook.Annotations

GetPrepareAnnotations returns the Annotations for the prepare service

func GetPreparePlacement

func GetPreparePlacement(p rook.PlacementSpec) rook.Placement

GetPreparePlacement returns the placement for the Host Prepare service

func GetTargetAnnotations

func GetTargetAnnotations(a rook.AnnotationsSpec) rook.Annotations

GetTargetAnnotations returns the Annotations for the target service

func GetTargetPlacement

func GetTargetPlacement(p rook.PlacementSpec) rook.Placement

GetTargetPlacement returns the placement for the Target service

func GetTargetResources

func GetTargetResources(p rook.ResourceSpec) v1.ResourceRequirements

GetTargetResources returns the placement for the Targets

func Resource

func Resource(resource string) schema.GroupResource

Resource takes an unqualified resource and returns a Group qualified GroupResource

Types

type AuditdConf

type AuditdConf struct {
	IsAggregator int `json:"is_aggregator"`
}

func (*AuditdConf) DeepCopy

func (in *AuditdConf) DeepCopy() *AuditdConf

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

func (*AuditdConf) DeepCopyInto

func (in *AuditdConf) DeepCopyInto(out *AuditdConf)

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

type CcowConf

type CcowConf struct {
	Trlog   CcowTrlog   `json:"trlog,omitempty"`
	Tenant  CcowTenant  `json:"tenant"`
	Network CcowNetwork `json:"network"`
}

func (*CcowConf) DeepCopy

func (in *CcowConf) DeepCopy() *CcowConf

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

func (*CcowConf) DeepCopyInto

func (in *CcowConf) DeepCopyInto(out *CcowConf)

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

type CcowNetwork

type CcowNetwork struct {
	BrokerInterfaces string `json:"broker_interfaces"`
	ServerUnixSocket string `json:"server_unix_socket"`
	BrokerIP4addr    string `json:"broker_ip4addr,omitempty"`
	ServerIP4addr    string `json:"server_ip4addr,omitempty"`
	NoIP4Frag        int    `json:"no_ipfrag,omitempty"`
}

func (*CcowNetwork) DeepCopy

func (in *CcowNetwork) DeepCopy() *CcowNetwork

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

func (*CcowNetwork) DeepCopyInto

func (in *CcowNetwork) DeepCopyInto(out *CcowNetwork)

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

type CcowTenant

type CcowTenant struct {
	FailureDomain    int `json:"failure_domain"`
	ReplicationCount int `json:"replication_count,omitempty"`
	SyncPut          int `json:"sync_put,omitempty"`
	SyncPutNamed     int `json:"sync_put_named"`
	CommitWait       int `json:"sync_put_commit_wait"`
	ChunkSize        int `json:"chunkmap_chunk_size,omitempty"`
}

func (*CcowTenant) DeepCopy

func (in *CcowTenant) DeepCopy() *CcowTenant

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

func (*CcowTenant) DeepCopyInto

func (in *CcowTenant) DeepCopyInto(out *CcowTenant)

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

type CcowTrlog

type CcowTrlog struct {
	Interval   int `json:"interval,omitempty"`
	Quarantine int `json:"quarantine,omitempty"`
}

func (*CcowTrlog) DeepCopy

func (in *CcowTrlog) DeepCopy() *CcowTrlog

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

func (*CcowTrlog) DeepCopyInto

func (in *CcowTrlog) DeepCopyInto(out *CcowTrlog)

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

type CcowdBgConfig

type CcowdBgConfig struct {
	TrlogDeleteAfterHours     int `json:"trlog_delete_after_hours,omitempty"`
	SpeculativeBackrefTimeout int `json:"speculative_backref_timeout,omitempty"`
}

func (*CcowdBgConfig) DeepCopy

func (in *CcowdBgConfig) DeepCopy() *CcowdBgConfig

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

func (*CcowdBgConfig) DeepCopyInto

func (in *CcowdBgConfig) DeepCopyInto(out *CcowdBgConfig)

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

type CcowdConf

type CcowdConf struct {
	BgConfig  CcowdBgConfig `json:"repdev_bg_config,omitempty"`
	Zone      int           `json:"zone,omitempty"`
	Network   CcowdNetwork  `json:"network"`
	Transport []string      `json:"transport"`
}

func (*CcowdConf) DeepCopy

func (in *CcowdConf) DeepCopy() *CcowdConf

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

func (*CcowdConf) DeepCopyInto

func (in *CcowdConf) DeepCopyInto(out *CcowdConf)

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

type CcowdNetwork

type CcowdNetwork struct {
	ServerInterfaces string `json:"server_interfaces"`
	ServerUnixSocket string `json:"server_unix_socket"`
	ServerIP4addr    string `json:"server_ip4addr,omitempty"`
	NoIP4Frag        int    `json:"no_ipfrag,omitempty"`
}

func (*CcowdNetwork) DeepCopy

func (in *CcowdNetwork) DeepCopy() *CcowdNetwork

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

func (*CcowdNetwork) DeepCopyInto

func (in *CcowdNetwork) DeepCopyInto(out *CcowdNetwork)

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

type Cluster

type Cluster struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata"`
	Spec              ClusterSpec   `json:"spec"`
	Status            ClusterStatus `json:"status,omitempty"`
}

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 ClusterDeploymentConfig

type ClusterDeploymentConfig struct {
	DeploymentType string        //rtlfs, rtrd, autortlfs
	TransportKey   string        //rtlfs or rtrd
	Directories    []RtlfsDevice //cluster wide directories
	DevConfig      map[string]DevicesConfig
	NeedPrivileges bool
}

func (*ClusterDeploymentConfig) CompatibleWith

func (deploymentConfig *ClusterDeploymentConfig) CompatibleWith(newConfig ClusterDeploymentConfig) (bool, error)

func (*ClusterDeploymentConfig) DeepCopy

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

func (*ClusterDeploymentConfig) DeepCopyInto

func (in *ClusterDeploymentConfig) DeepCopyInto(out *ClusterDeploymentConfig)

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

func (*ClusterDeploymentConfig) GetRtkvsDevicesCount added in v1.2.0

func (deploymentConfig *ClusterDeploymentConfig) GetRtkvsDevicesCount() int

func (*ClusterDeploymentConfig) GetRtlfsDevices

func (deploymentConfig *ClusterDeploymentConfig) GetRtlfsDevices() []RtlfsDevice

GetRtlfsDevices returns array of Rtlfs devices in cluster, Rtlfs devices must be the same over the cluster configuration, so we can get first non gateway deviceConfig

func (*ClusterDeploymentConfig) GetRtrdContainersCount added in v1.2.0

func (deploymentConfig *ClusterDeploymentConfig) GetRtrdContainersCount() int

func (*ClusterDeploymentConfig) GetRtrdDevicesCount added in v1.2.0

func (deploymentConfig *ClusterDeploymentConfig) GetRtrdDevicesCount() int

func (*ClusterDeploymentConfig) GetTargetsCount added in v1.2.0

func (deploymentConfig *ClusterDeploymentConfig) GetTargetsCount() int

func (*ClusterDeploymentConfig) NodesDifference

func (deploymentConfig *ClusterDeploymentConfig) NodesDifference(B ClusterDeploymentConfig) []string

NodesDifference produces A\B for set of node names In case of

A: existing cluster configuration
B: updated cluster configuration

A\B -> nodes to delete from cluster B\A -> nodes to add to cluster

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 ClusterSpec

type ClusterSpec struct {
	Storage rook.StorageScopeSpec `json:"storage,omitempty"`
	// The annotations-related configuration to add/set on each Pod related object.
	Annotations rook.AnnotationsSpec `json:"annotations,omitempty"`
	// The placement-related configuration to pass to kubernetes (affinity, node selector, tolerations).
	Placement rook.PlacementSpec `json:"placement,omitempty"`
	Network   rook.NetworkSpec   `json:"network,omitempty"`
	Dashboard DashboardSpec      `json:"dashboard,omitempty"`
	// Resources set resource requests and limits
	Resources v1.ResourceRequirements `json:"resources,omitempty"`
	// The path on the host where config and data can be persisted.
	DataDirHostPath         string            `json:"dataDirHostPath,omitempty"`
	ServiceAccount          string            `json:"serviceAccount,omitempty"`
	DataVolumeSize          resource.Quantity `json:"dataVolumeSize,omitempty"`
	DevicesResurrectMode    string            `json:"devicesResurrectMode,omitempty"`
	EdgefsImageName         string            `json:"edgefsImageName,omitempty"`
	SkipHostPrepare         bool              `json:"skipHostPrepare,omitempty"`
	ResourceProfile         string            `json:"resourceProfile,omitempty"`
	ChunkCacheSize          resource.Quantity `json:"chunkCacheSize,omitempty"`
	TrlogProcessingInterval int               `json:"trlogProcessingInterval,omitempty"`
	TrlogKeepDays           int               `json:"trlogKeepDays,omitempty"`
	SystemReplicationCount  int               `json:"sysRepCount,omitempty"`
	FailureDomain           string            `json:"failureDomain,omitempty"`
	CommitNWait             int               `json:"commitNWait,omitempty"`
	NoIP4Frag               bool              `json:"noIP4Frag,omitempty"`
	MaxContainerCapacity    resource.Quantity `json:"maxContainerCapacity,omitempty"`
	UseHostLocalTime        bool              `json:"useHostLocalTime,omitempty"`
	SysChunkSize            int               `json:"sysMaxChunkSize,omitempty"`
}

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 ClusterState

type ClusterState string
const (
	ClusterStateCreating ClusterState = "Creating"
	ClusterStateCreated  ClusterState = "Created"
	ClusterStateUpdating ClusterState = "Updating"
	ClusterStateDeleting ClusterState = "Deleting"
	ClusterStateError    ClusterState = "Error"
)

type ClusterStatus

type ClusterStatus struct {
	State   ClusterState `json:"state,omitempty"`
	Message string       `json:"message,omitempty"`
}

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 DashboardSpec

type DashboardSpec struct {
	LocalAddr string `json:"localAddr"`
}

func (*DashboardSpec) DeepCopy

func (in *DashboardSpec) DeepCopy() *DashboardSpec

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

func (*DashboardSpec) DeepCopyInto

func (in *DashboardSpec) DeepCopyInto(out *DashboardSpec)

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

type DevicesConfig

type DevicesConfig struct {
	Rtrd          RTDevices
	RtrdSlaves    []RTDevices
	Rtlfs         RtlfsDevices
	Rtkvs         RtkvsDevices
	Zone          int
	IsGatewayNode bool
}

func (*DevicesConfig) DeepCopy

func (in *DevicesConfig) DeepCopy() *DevicesConfig

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

func (*DevicesConfig) DeepCopyInto

func (in *DevicesConfig) DeepCopyInto(out *DevicesConfig)

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

func (*DevicesConfig) GetRtrdDeviceCount

func (dc *DevicesConfig) GetRtrdDeviceCount() int

GetRtrdDeviceCount returns all rtrd's devices count on specific node

type DevicesResurrectOptions

type DevicesResurrectOptions struct {
	NeedToResurrect bool
	NeedToZap       bool
	NeedToWait      bool
	SlaveContainers int
}

func (*DevicesResurrectOptions) DeepCopy

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

func (*DevicesResurrectOptions) DeepCopyInto

func (in *DevicesResurrectOptions) DeepCopyInto(out *DevicesResurrectOptions)

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

type ISCSI

type ISCSI struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata"`
	Spec              ISCSISpec `json:"spec"`
}

func (*ISCSI) DeepCopy

func (in *ISCSI) DeepCopy() *ISCSI

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

func (*ISCSI) DeepCopyInto

func (in *ISCSI) DeepCopyInto(out *ISCSI)

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

func (*ISCSI) DeepCopyObject

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

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

type ISCSIList

type ISCSIList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`
	Items           []ISCSI `json:"items"`
}

func (*ISCSIList) DeepCopy

func (in *ISCSIList) DeepCopy() *ISCSIList

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

func (*ISCSIList) DeepCopyInto

func (in *ISCSIList) DeepCopyInto(out *ISCSIList)

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

func (*ISCSIList) DeepCopyObject

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

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

type ISCSISpec

type ISCSISpec struct {
	// The annotations-related configuration to add/set on each Pod related object.
	Annotations rook.Annotations `json:"annotations,omitempty"`
	// The affinity to place the ISCSI pods (default is to place on any available nodes in EdgeFS running namespace)
	Placement rook.Placement `json:"placement"`
	// Resources set resource requests and limits
	Resources v1.ResourceRequirements `json:"resources,omitempty"`
	// The number of pods in the ISCSI replicaset
	Instances int32 `json:"instances"`
	//IISCSI Http port (default value 3000)
	TargetName string `json:"targetName,omitempty"`
	//specific ISCSI target parameters
	TargetParams    TargetParametersSpec `json:"targetParams"`
	ResourceProfile string               `json:"resourceProfile,omitempty"`
	ChunkCacheSize  resource.Quantity    `json:"chunkCacheSize,omitempty"`
}

ISCSISpec represent the spec of a iscsi service

func (*ISCSISpec) DeepCopy

func (in *ISCSISpec) DeepCopy() *ISCSISpec

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

func (*ISCSISpec) DeepCopyInto

func (in *ISCSISpec) DeepCopyInto(out *ISCSISpec)

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

type ISGW

type ISGW struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata"`
	Spec              ISGWSpec `json:"spec"`
}

func (*ISGW) DeepCopy

func (in *ISGW) DeepCopy() *ISGW

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

func (*ISGW) DeepCopyInto

func (in *ISGW) DeepCopyInto(out *ISGW)

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

func (*ISGW) DeepCopyObject

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

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

type ISGWConfig added in v1.2.0

type ISGWConfig struct {
	Server  string   `json:"server,omitempty"`
	Clients []string `json:"clients,omitempty"`
}

func (*ISGWConfig) DeepCopy added in v1.2.0

func (in *ISGWConfig) DeepCopy() *ISGWConfig

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

func (*ISGWConfig) DeepCopyInto added in v1.2.0

func (in *ISGWConfig) DeepCopyInto(out *ISGWConfig)

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

type ISGWList

type ISGWList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`
	Items           []ISGW `json:"items"`
}

func (*ISGWList) DeepCopy

func (in *ISGWList) DeepCopy() *ISGWList

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

func (*ISGWList) DeepCopyInto

func (in *ISGWList) DeepCopyInto(out *ISGWList)

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

func (*ISGWList) DeepCopyObject

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

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

type ISGWSpec

type ISGWSpec struct {
	// The annotations-related configuration to add/set on each Pod related object.
	Annotations rook.Annotations `json:"annotations,omitempty"`
	// The affinity to place the ISGW pods (default is to place on any available nodes in EdgeFS running namespace)
	Placement rook.Placement `json:"placement"`
	// Resources set resource requests and limits
	Resources v1.ResourceRequirements `json:"resources,omitempty"`
	// The number of pods in the ISGW replicaset
	Instances int32 `json:"instances"`
	// ISGW I/O flow direction
	Direction string `json:"direction,omitempty"`
	// ISGW remote URL
	RemoteURL string `json:"remoteURL,omitempty"`
	// ISGW ServiceType (default is ClusterIP)
	ServiceType string `json:"serviceType,omitempty"`
	// ISGW Relay config
	Config ISGWConfig `json:"config,omitempty"`
	// ISGW external port
	ExternalPort uint `json:"externalPort,omitempty"`
	// ISGW Replication Type
	ReplicationType string `json:"replicationType,omitempty"`
	// ISGW Metadata Only flag, all or versions
	MetadataOnly string `json:"metadataOnly,omitempty"`
	// ISGW Dynamic Fetch Addr (default is '-', means disabled)
	DynamicFetchAddr string `json:"dynamicFetchAddr,omitempty"`
	// ISGW Endpoint local address (default value 0.0.0.0:14000)
	LocalAddr string `json:"localAddr,omitempty"`
	// ISGW Encrypted Tunnel flag
	UseEncryptedTunnel bool              `json:"useEncryptedTunnel,omitempty"`
	ResourceProfile    string            `json:"resourceProfile,omitempty"`
	ChunkCacheSize     resource.Quantity `json:"chunkCacheSize,omitempty"`
}

ISGWSpec represent the spec of a isgw service

func (*ISGWSpec) DeepCopy

func (in *ISGWSpec) DeepCopy() *ISGWSpec

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

func (*ISGWSpec) DeepCopyInto

func (in *ISGWSpec) DeepCopyInto(out *ISGWSpec)

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

type NFS

type NFS struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata"`
	Spec              NFSSpec `json:"spec"`
}

func (*NFS) DeepCopy

func (in *NFS) DeepCopy() *NFS

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

func (*NFS) DeepCopyInto

func (in *NFS) DeepCopyInto(out *NFS)

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

func (*NFS) DeepCopyObject

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

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

type NFSList

type NFSList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`
	Items           []NFS `json:"items"`
}

func (*NFSList) DeepCopy

func (in *NFSList) DeepCopy() *NFSList

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

func (*NFSList) DeepCopyInto

func (in *NFSList) DeepCopyInto(out *NFSList)

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

func (*NFSList) DeepCopyObject

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

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

type NFSSpec

type NFSSpec struct {
	// The annotations-related configuration to add/set on each Pod related object.
	Annotations rook.Annotations `json:"annotations,omitempty"`
	// The affinity to place the NFS pods (default is to place on any available nodes in EdgeFS running namespace)
	Placement rook.Placement `json:"placement"`
	// Resources set resource requests and limits
	Resources v1.ResourceRequirements `json:"resources,omitempty"`
	// The number of pods in the NFS replicaset
	Instances         int32             `json:"instances"`
	RelaxedDirUpdates bool              `json:"relaxedDirUpdates,omitempty"`
	ResourceProfile   string            `json:"resourceProfile,omitempty"`
	ChunkCacheSize    resource.Quantity `json:"chunkCacheSize,omitempty"`
}

NFSSpec represent the spec of a pool

func (*NFSSpec) DeepCopy

func (in *NFSSpec) DeepCopy() *NFSSpec

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

func (*NFSSpec) DeepCopyInto

func (in *NFSSpec) DeepCopyInto(out *NFSSpec)

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

type RTDevice

type RTDevice struct {
	Name              string `json:"name,omitempty"`
	Device            string `json:"device,omitempty"`
	Psize             int    `json:"psize,omitempty"`
	MdPsize           int    `json:"mdpsize,omitempty"`
	MDReserved        int    `json:"mdcache_reserved,omitempty"`
	HDDReadAhead      int    `json:"hdd_readahead,omitempty"`
	VerifyChid        int    `json:"verify_chid"`
	Journal           string `json:"journal,omitempty"`
	Metadata          string `json:"metadata,omitempty"`
	Bcache            int    `json:"bcache,omitempty"`
	BcacheWritearound int    `json:"bcache_writearound"`
	PlevelOverride    int    `json:"plevel_override,omitempty"`
	Sync              int    `json:"sync"`
	WalDisabled       int    `json:"wal_disabled,omitempty"`
	PayloadS3URL      string `json:"payload_s3_bucket_url"`
	PayloadS3Region   string `json:"payload_s3_region"`
	PayloadS3MinKb    int    `json:"payload_s3_min_kb"`
	PayloadS3Capacity int    `json:"payload_s3_capacity"`
	PayloadS3Secret   string `json:"payload_s3_key_file"`
	PayloadS3SyncGet  int    `json:"payload_s3_sync_get_max,omitempty"`
}

func (*RTDevice) DeepCopy

func (in *RTDevice) DeepCopy() *RTDevice

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

func (*RTDevice) DeepCopyInto

func (in *RTDevice) DeepCopyInto(out *RTDevice)

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

type RTDevices

type RTDevices struct {
	Devices []RTDevice `json:"devices"`
}

func (*RTDevices) DeepCopy

func (in *RTDevices) DeepCopy() *RTDevices

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

func (*RTDevices) DeepCopyInto

func (in *RTDevices) DeepCopyInto(out *RTDevices)

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

type RtkvsDevice added in v1.2.0

type RtkvsDevice struct {
	Name           string `json:"name"`
	Path           string `json:"path"`
	JornalPath     string `json:"journal"`
	JournalMaxsize uint64 `json:"jenvsize,omitempty"`
	VerifyChid     int    `json:"verify_chid"`
	PlevelOverride int    `json:"plevel_override,omitempty"`
	Sync           int    `json:"sync"`
	WalDisabled    int    `json:"wal_disabled,omitempty"`
}

func (*RtkvsDevice) DeepCopy added in v1.2.0

func (in *RtkvsDevice) DeepCopy() *RtkvsDevice

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

func (*RtkvsDevice) DeepCopyInto added in v1.2.0

func (in *RtkvsDevice) DeepCopyInto(out *RtkvsDevice)

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

type RtkvsDevices added in v1.2.0

type RtkvsDevices struct {
	Backend string        `json:"backend"`
	Devices []RtkvsDevice `json:"devices"`
}

func (*RtkvsDevices) DeepCopy added in v1.2.0

func (in *RtkvsDevices) DeepCopy() *RtkvsDevices

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

func (*RtkvsDevices) DeepCopyInto added in v1.2.0

func (in *RtkvsDevices) DeepCopyInto(out *RtkvsDevices)

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

type RtlfsDevice

type RtlfsDevice struct {
	Name            string `json:"name"`
	Path            string `json:"path"`
	Psize           int    `json:"psize,omitempty"`
	Maxsize         uint64 `json:"maxsize,omitempty"`
	VerifyChid      int    `json:"verify_chid"`
	PlevelOverride  int    `json:"plevel_override,omitempty"`
	CheckMountpoint int    `json:"check_mountpoint"`
	Sync            int    `json:"sync"`
	WalDisabled     int    `json:"wal_disabled,omitempty"`
}

func (*RtlfsDevice) DeepCopy

func (in *RtlfsDevice) DeepCopy() *RtlfsDevice

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

func (*RtlfsDevice) DeepCopyInto

func (in *RtlfsDevice) DeepCopyInto(out *RtlfsDevice)

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

type RtlfsDevices

type RtlfsDevices struct {
	Devices []RtlfsDevice `json:"devices"`
}

func (*RtlfsDevices) DeepCopy

func (in *RtlfsDevices) DeepCopy() *RtlfsDevices

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

func (*RtlfsDevices) DeepCopyInto

func (in *RtlfsDevices) DeepCopyInto(out *RtlfsDevices)

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

type S3

type S3 struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata"`
	Spec              S3Spec `json:"spec"`
}

func (*S3) DeepCopy

func (in *S3) DeepCopy() *S3

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

func (*S3) DeepCopyInto

func (in *S3) DeepCopyInto(out *S3)

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

func (*S3) DeepCopyObject

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

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

type S3List

type S3List struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`
	Items           []S3 `json:"items"`
}

func (*S3List) DeepCopy

func (in *S3List) DeepCopy() *S3List

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

func (*S3List) DeepCopyInto

func (in *S3List) DeepCopyInto(out *S3List)

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

func (*S3List) DeepCopyObject

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

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

type S3Spec

type S3Spec struct {
	// The annotations-related configuration to add/set on each Pod related object.
	Annotations rook.Annotations `json:"annotations,omitempty"`
	// The affinity to place the S3 pods (default is to place on any available nodes in EdgeFS running namespace)
	Placement rook.Placement `json:"placement"`
	// Resources set resource requests and limits
	Resources v1.ResourceRequirements `json:"resources,omitempty"`
	// The number of pods in the S3 replicaset
	Instances int32 `json:"instances"`
	//S3 Http port (default value 9982)
	Port uint `json:"port,omitempty"`
	//S3 Https port (default value 9443)
	SecurePort uint `json:"securePort,omitempty"`
	// Service type to expose (default value ClusterIP)
	ServiceType string `json:"serviceType,omitempty"`
	// S3 Http external port
	ExternalPort uint `json:"externalPort,omitempty"`
	// S3 Https external port
	SecureExternalPort uint `json:"secureExternalPort,omitempty"`
	// The name of the secret that stores the ssl certificate for secure s3 connections
	SSLCertificateRef string `json:"sslCertificateRef,omitempty"`
	// S3 type: s3 (bucket as url, default), s3s (bucket as DNS subdomain), s3g (new, experimental)
	S3Type          string            `json:"s3type,omitempty"`
	ResourceProfile string            `json:"resourceProfile,omitempty"`
	ChunkCacheSize  resource.Quantity `json:"chunkCacheSize,omitempty"`
}

S3Spec represent the spec of a s3 service

func (*S3Spec) DeepCopy

func (in *S3Spec) DeepCopy() *S3Spec

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

func (*S3Spec) DeepCopyInto

func (in *S3Spec) DeepCopyInto(out *S3Spec)

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

type S3X

type S3X struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata"`
	Spec              S3XSpec `json:"spec"`
}

func (*S3X) DeepCopy

func (in *S3X) DeepCopy() *S3X

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

func (*S3X) DeepCopyInto

func (in *S3X) DeepCopyInto(out *S3X)

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

func (*S3X) DeepCopyObject

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

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

type S3XList

type S3XList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`
	Items           []S3X `json:"items"`
}

func (*S3XList) DeepCopy

func (in *S3XList) DeepCopy() *S3XList

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

func (*S3XList) DeepCopyInto

func (in *S3XList) DeepCopyInto(out *S3XList)

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

func (*S3XList) DeepCopyObject

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

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

type S3XSpec

type S3XSpec struct {
	// The annotations-related configuration to add/set on each Pod related object.
	Annotations rook.Annotations `json:"annotations,omitempty"`
	// The affinity to place the S3X pods (default is to place on any available nodes in EdgeFS running namespace)
	Placement rook.Placement `json:"placement"`
	// Resources set resource requests and limits
	Resources v1.ResourceRequirements `json:"resources,omitempty"`
	// The number of pods in the S3X replicaset
	Instances int32 `json:"instances"`
	//S3X Http port (default value 3000)
	Port uint `json:"port,omitempty"`
	//S3X Https port (default value 3001)
	SecurePort uint `json:"securePort,omitempty"`
	// Service type to expose (default value ClusterIP)
	ServiceType string `json:"serviceType,omitempty"`
	// S3 Http external port
	ExternalPort uint `json:"externalPort,omitempty"`
	// S3 Https external port
	SecureExternalPort uint `json:"secureExternalPort,omitempty"`
	// The name of the secret that stores the ssl certificate for secure s3x connections
	SSLCertificateRef string            `json:"sslCertificateRef,omitempty"`
	ResourceProfile   string            `json:"resourceProfile,omitempty"`
	ChunkCacheSize    resource.Quantity `json:"chunkCacheSize,omitempty"`
}

S3XSpec represent the spec of a s3 service

func (*S3XSpec) DeepCopy

func (in *S3XSpec) DeepCopy() *S3XSpec

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

func (*S3XSpec) DeepCopyInto

func (in *S3XSpec) DeepCopyInto(out *S3XSpec)

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

type SWIFT

type SWIFT struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata"`
	Spec              SWIFTSpec `json:"spec"`
}

func (*SWIFT) DeepCopy

func (in *SWIFT) DeepCopy() *SWIFT

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

func (*SWIFT) DeepCopyInto

func (in *SWIFT) DeepCopyInto(out *SWIFT)

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

func (*SWIFT) DeepCopyObject

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

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

type SWIFTList

type SWIFTList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`
	Items           []SWIFT `json:"items"`
}

func (*SWIFTList) DeepCopy

func (in *SWIFTList) DeepCopy() *SWIFTList

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

func (*SWIFTList) DeepCopyInto

func (in *SWIFTList) DeepCopyInto(out *SWIFTList)

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

func (*SWIFTList) DeepCopyObject

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

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

type SWIFTSpec

type SWIFTSpec struct {
	// The affinity to place the SWIFT pods (default is to place on any available nodes in EdgeFS running namespace)
	Placement rook.Placement `json:"placement"`
	// Resources set resource requests and limits
	Resources v1.ResourceRequirements `json:"resources,omitempty"`
	// The number of pods in the S3 replicaset
	Instances int32 `json:"instances"`
	//S3 Http port (default value 9982)
	Port uint `json:"port,omitempty"`
	//S3 Https port (default value 9443)
	SecurePort uint `json:"securePort,omitempty"`
	// Service type to expose (default value ClusterIP)
	ServiceType string `json:"serviceType,omitempty"`
	// S3 Http external port
	ExternalPort uint `json:"externalPort,omitempty"`
	// S3 Https external port
	SecureExternalPort uint `json:"secureExternalPort,omitempty"`
	// The name of the secret that stores the ssl certificate for secure s3 connections
	SSLCertificateRef string            `json:"sslCertificateRef,omitempty"`
	ResourceProfile   string            `json:"resourceProfile,omitempty"`
	ChunkCacheSize    resource.Quantity `json:"chunkCacheSize,omitempty"`
}

SWIFTSpec represent the spec of a swift service

func (*SWIFTSpec) DeepCopy

func (in *SWIFTSpec) DeepCopy() *SWIFTSpec

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

func (*SWIFTSpec) DeepCopyInto

func (in *SWIFTSpec) DeepCopyInto(out *SWIFTSpec)

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

type SetupNode

type SetupNode struct {
	Ccow            CcowConf     `json:"ccow"`
	Ccowd           CcowdConf    `json:"ccowd"`
	Auditd          AuditdConf   `json:"auditd"`
	Ipv4Autodetect  int          `json:"ipv4_autodetect,omitempty"`
	RtlfsAutodetect string       `json:"rtlfs_autodetect,omitempty"`
	ClusterNodes    []string     `json:"cluster_nodes,omitempty"`
	Rtrd            RTDevices    `json:"rtrd"`
	RtrdSlaves      []RTDevices  `json:"rtrdslaves"`
	Rtlfs           RtlfsDevices `json:"rtlfs"`
	Rtkvs           RtkvsDevices `json:"rtkvs"`
	NodeType        string       `json:"nodeType"`
}

func (*SetupNode) DeepCopy

func (in *SetupNode) DeepCopy() *SetupNode

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

func (*SetupNode) DeepCopyInto

func (in *SetupNode) DeepCopyInto(out *SetupNode)

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

type TargetParametersSpec

type TargetParametersSpec struct {
	MaxRecvDataSegmentLength uint `json:"maxRecvDataSegmentLength"`
	DefaultTime2Retain       uint `json:"defaultTime2Retain"`
	DefaultTime2Wait         uint `json:"defaultTime2Wait"`
	FirstBurstLength         uint `json:"firstBurstLength"`
	MaxBurstLength           uint `json:"maxBurstLength"`
	MaxQueueCmd              uint `json:"maxQueueCmd"`
}

func (*TargetParametersSpec) DeepCopy

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

func (*TargetParametersSpec) DeepCopyInto

func (in *TargetParametersSpec) DeepCopyInto(out *TargetParametersSpec)

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