v1

package
v0.0.0-...-d3da680 Latest Latest
Warning

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

Go to latest
Published: Dec 4, 2024 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Overview

Package v1 contains the proto definitions for the tree status PRPC API.

Index

Constants

This section is empty.

Variables

View Source
var (
	GeneralState_name = map[int32]string{
		0: "GENERAL_STATE_UNSPECIFIED",
		1: "OPEN",
		2: "CLOSED",
		3: "THROTTLED",
		4: "MAINTENANCE",
	}
	GeneralState_value = map[string]int32{
		"GENERAL_STATE_UNSPECIFIED": 0,
		"OPEN":                      1,
		"CLOSED":                    2,
		"THROTTLED":                 3,
		"MAINTENANCE":               4,
	}
)

Enum value maps for GeneralState.

View Source
var File_go_chromium_org_luci_tree_status_proto_v1_tree_status_proto protoreflect.FileDescriptor
View Source
var File_go_chromium_org_luci_tree_status_proto_v1_trees_proto protoreflect.FileDescriptor

Functions

func FileDescriptorSet

func FileDescriptorSet() *descriptorpb.FileDescriptorSet

FileDescriptorSet returns a descriptor set for this proto package, which includes all defined services, and all transitive dependencies.

Will not return nil.

Do NOT modify the returned descriptor.

func RegisterTreeStatusServer

func RegisterTreeStatusServer(s prpc.Registrar, srv TreeStatusServer)

func RegisterTreesServer

func RegisterTreesServer(s prpc.Registrar, srv TreesServer)

Types

type CreateStatusRequest

type CreateStatusRequest struct {

	// The parent tree which the status values belongs to.
	// Format: trees/{tree_id}/status
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// The status to create.
	// Only the general state and message fields can be provided, the current date
	// will be used for the date and the RPC caller will be used for the username.
	Status *Status `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
	// contains filtered or unexported fields
}

func (*CreateStatusRequest) Descriptor deprecated

func (*CreateStatusRequest) Descriptor() ([]byte, []int)

Deprecated: Use CreateStatusRequest.ProtoReflect.Descriptor instead.

func (*CreateStatusRequest) GetParent

func (x *CreateStatusRequest) GetParent() string

func (*CreateStatusRequest) GetStatus

func (x *CreateStatusRequest) GetStatus() *Status

func (*CreateStatusRequest) ProtoMessage

func (*CreateStatusRequest) ProtoMessage()

func (*CreateStatusRequest) ProtoReflect

func (x *CreateStatusRequest) ProtoReflect() protoreflect.Message

func (*CreateStatusRequest) Reset

func (x *CreateStatusRequest) Reset()

func (*CreateStatusRequest) String

func (x *CreateStatusRequest) String() string

type DecoratedTreeStatus

type DecoratedTreeStatus struct {
	// Service is the service to decorate.
	Service TreeStatusServer
	// Prelude is called for each method before forwarding the call to Service.
	// If Prelude returns an error, then the call is skipped and the error is
	// processed via the Postlude (if one is defined), or it is returned directly.
	Prelude func(ctx context.Context, methodName string, req proto.Message) (context.Context, error)
	// Postlude is called for each method after Service has processed the call, or
	// after the Prelude has returned an error. This takes the Service's
	// response proto (which may be nil) and/or any error. The decorated
	// service will return the response (possibly mutated) and error that Postlude
	// returns.
	Postlude func(ctx context.Context, methodName string, rsp proto.Message, err error) error
}

func (*DecoratedTreeStatus) CreateStatus

func (s *DecoratedTreeStatus) CreateStatus(ctx context.Context, req *CreateStatusRequest) (rsp *Status, err error)

func (*DecoratedTreeStatus) GetStatus

func (s *DecoratedTreeStatus) GetStatus(ctx context.Context, req *GetStatusRequest) (rsp *Status, err error)

func (*DecoratedTreeStatus) ListStatus

func (s *DecoratedTreeStatus) ListStatus(ctx context.Context, req *ListStatusRequest) (rsp *ListStatusResponse, err error)

type DecoratedTrees

type DecoratedTrees struct {
	// Service is the service to decorate.
	Service TreesServer
	// Prelude is called for each method before forwarding the call to Service.
	// If Prelude returns an error, then the call is skipped and the error is
	// processed via the Postlude (if one is defined), or it is returned directly.
	Prelude func(ctx context.Context, methodName string, req proto.Message) (context.Context, error)
	// Postlude is called for each method after Service has processed the call, or
	// after the Prelude has returned an error. This takes the Service's
	// response proto (which may be nil) and/or any error. The decorated
	// service will return the response (possibly mutated) and error that Postlude
	// returns.
	Postlude func(ctx context.Context, methodName string, rsp proto.Message, err error) error
}

func (*DecoratedTrees) GetTree

func (s *DecoratedTrees) GetTree(ctx context.Context, req *GetTreeRequest) (rsp *Tree, err error)

func (*DecoratedTrees) QueryTrees

func (s *DecoratedTrees) QueryTrees(ctx context.Context, req *QueryTreesRequest) (rsp *QueryTreesResponse, err error)

type GeneralState

type GeneralState int32

GeneralState are the possible states for a tree to be in.

const (
	// GeneralState was not specified.
	// This should not be used, it is the default value for an unset field.
	GeneralState_GENERAL_STATE_UNSPECIFIED GeneralState = 0
	// The tree is open and accepting new commits.
	GeneralState_OPEN GeneralState = 1
	// The tree is closed, no new commits are currently being accepted.
	GeneralState_CLOSED GeneralState = 2
	// The tree is throttled.  The meaning of this state can vary by project,
	// but generally it is between the open and closed states.
	GeneralState_THROTTLED GeneralState = 3
	// The tree is in maintenance.  Generally CLs will not be accepted while the
	// tree is in this state.
	GeneralState_MAINTENANCE GeneralState = 4
)

func (GeneralState) Descriptor

func (GeneralState) Enum

func (x GeneralState) Enum() *GeneralState

func (GeneralState) EnumDescriptor deprecated

func (GeneralState) EnumDescriptor() ([]byte, []int)

Deprecated: Use GeneralState.Descriptor instead.

func (GeneralState) Number

func (GeneralState) String

func (x GeneralState) String() string

func (GeneralState) Type

type GetStatusRequest

type GetStatusRequest struct {

	// The status value to get.
	//
	// You can use 'latest' as the id to get the latest status for a tree,
	// i.e. set the name to 'trees/{tree_id}/status/latest'.
	//
	// If you request the 'latest' status and no status updates are in the
	// database (possibly due to the 140 day TTL), a fallback status will
	// be returned with general_state OPEN.  You can tell that the fallback
	// status was returned by checking the name which will be
	// 'trees/{tree_id}/status/fallback', which is otherwise not a valid name.
	//
	// Format: trees/{tree_id}/status/{status_id}
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// contains filtered or unexported fields
}

func (*GetStatusRequest) Descriptor deprecated

func (*GetStatusRequest) Descriptor() ([]byte, []int)

Deprecated: Use GetStatusRequest.ProtoReflect.Descriptor instead.

func (*GetStatusRequest) GetName

func (x *GetStatusRequest) GetName() string

func (*GetStatusRequest) ProtoMessage

func (*GetStatusRequest) ProtoMessage()

func (*GetStatusRequest) ProtoReflect

func (x *GetStatusRequest) ProtoReflect() protoreflect.Message

func (*GetStatusRequest) Reset

func (x *GetStatusRequest) Reset()

func (*GetStatusRequest) String

func (x *GetStatusRequest) String() string

type GetTreeRequest

type GetTreeRequest struct {

	// Format: "trees/{tree_id}"
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// contains filtered or unexported fields
}

func (*GetTreeRequest) Descriptor deprecated

func (*GetTreeRequest) Descriptor() ([]byte, []int)

Deprecated: Use GetTreeRequest.ProtoReflect.Descriptor instead.

func (*GetTreeRequest) GetName

func (x *GetTreeRequest) GetName() string

func (*GetTreeRequest) ProtoMessage

func (*GetTreeRequest) ProtoMessage()

func (*GetTreeRequest) ProtoReflect

func (x *GetTreeRequest) ProtoReflect() protoreflect.Message

func (*GetTreeRequest) Reset

func (x *GetTreeRequest) Reset()

func (*GetTreeRequest) String

func (x *GetTreeRequest) String() string

type ListStatusRequest

type ListStatusRequest struct {

	// The parent tree which the status values belongs to.
	// Format: trees/{tree_id}/status
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// The maximum number of status values to return. The service may return fewer
	// than this value. If unspecified, at most 50 status values will be returned.
	// The maximum value is 1000; values above 1000 will be coerced to 1000.
	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// A page token, received from a previous `ListStatus` call.
	// Provide this to retrieve the subsequent page.
	//
	// When paginating, all other parameters provided to `ListStatus` must match
	// the call that provided the page token.
	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
	// contains filtered or unexported fields
}

func (*ListStatusRequest) Descriptor deprecated

func (*ListStatusRequest) Descriptor() ([]byte, []int)

Deprecated: Use ListStatusRequest.ProtoReflect.Descriptor instead.

func (*ListStatusRequest) GetPageSize

func (x *ListStatusRequest) GetPageSize() int32

func (*ListStatusRequest) GetPageToken

func (x *ListStatusRequest) GetPageToken() string

func (*ListStatusRequest) GetParent

func (x *ListStatusRequest) GetParent() string

func (*ListStatusRequest) ProtoMessage

func (*ListStatusRequest) ProtoMessage()

func (*ListStatusRequest) ProtoReflect

func (x *ListStatusRequest) ProtoReflect() protoreflect.Message

func (*ListStatusRequest) Reset

func (x *ListStatusRequest) Reset()

func (*ListStatusRequest) String

func (x *ListStatusRequest) String() string

type ListStatusResponse

type ListStatusResponse struct {

	// The status values of the tree.
	Status []*Status `protobuf:"bytes,1,rep,name=status,proto3" json:"status,omitempty"`
	// A token, which can be sent as `page_token` to retrieve the next page.
	// If this field is omitted, there are no subsequent pages.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
	// contains filtered or unexported fields
}

func (*ListStatusResponse) Descriptor deprecated

func (*ListStatusResponse) Descriptor() ([]byte, []int)

Deprecated: Use ListStatusResponse.ProtoReflect.Descriptor instead.

func (*ListStatusResponse) GetNextPageToken

func (x *ListStatusResponse) GetNextPageToken() string

func (*ListStatusResponse) GetStatus

func (x *ListStatusResponse) GetStatus() []*Status

func (*ListStatusResponse) ProtoMessage

func (*ListStatusResponse) ProtoMessage()

func (*ListStatusResponse) ProtoReflect

func (x *ListStatusResponse) ProtoReflect() protoreflect.Message

func (*ListStatusResponse) Reset

func (x *ListStatusResponse) Reset()

func (*ListStatusResponse) String

func (x *ListStatusResponse) String() string

type MockTreeStatusClient

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

MockTreeStatusClient is a mock of TreeStatusClient interface.

func NewMockTreeStatusClient

func NewMockTreeStatusClient(ctrl *gomock.Controller) *MockTreeStatusClient

NewMockTreeStatusClient creates a new mock instance.

func (*MockTreeStatusClient) CreateStatus

func (m *MockTreeStatusClient) CreateStatus(ctx context.Context, in *CreateStatusRequest, opts ...grpc.CallOption) (*Status, error)

CreateStatus mocks base method.

func (*MockTreeStatusClient) EXPECT

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockTreeStatusClient) GetStatus

func (m *MockTreeStatusClient) GetStatus(ctx context.Context, in *GetStatusRequest, opts ...grpc.CallOption) (*Status, error)

GetStatus mocks base method.

func (*MockTreeStatusClient) ListStatus

ListStatus mocks base method.

type MockTreeStatusClientMockRecorder

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

MockTreeStatusClientMockRecorder is the mock recorder for MockTreeStatusClient.

func (*MockTreeStatusClientMockRecorder) CreateStatus

func (mr *MockTreeStatusClientMockRecorder) CreateStatus(ctx, in interface{}, opts ...interface{}) *gomock.Call

CreateStatus indicates an expected call of CreateStatus.

func (*MockTreeStatusClientMockRecorder) GetStatus

func (mr *MockTreeStatusClientMockRecorder) GetStatus(ctx, in interface{}, opts ...interface{}) *gomock.Call

GetStatus indicates an expected call of GetStatus.

func (*MockTreeStatusClientMockRecorder) ListStatus

func (mr *MockTreeStatusClientMockRecorder) ListStatus(ctx, in interface{}, opts ...interface{}) *gomock.Call

ListStatus indicates an expected call of ListStatus.

type MockTreeStatusServer

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

MockTreeStatusServer is a mock of TreeStatusServer interface.

func NewMockTreeStatusServer

func NewMockTreeStatusServer(ctrl *gomock.Controller) *MockTreeStatusServer

NewMockTreeStatusServer creates a new mock instance.

func (*MockTreeStatusServer) CreateStatus

func (m *MockTreeStatusServer) CreateStatus(arg0 context.Context, arg1 *CreateStatusRequest) (*Status, error)

CreateStatus mocks base method.

func (*MockTreeStatusServer) EXPECT

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockTreeStatusServer) GetStatus

func (m *MockTreeStatusServer) GetStatus(arg0 context.Context, arg1 *GetStatusRequest) (*Status, error)

GetStatus mocks base method.

func (*MockTreeStatusServer) ListStatus

ListStatus mocks base method.

type MockTreeStatusServerMockRecorder

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

MockTreeStatusServerMockRecorder is the mock recorder for MockTreeStatusServer.

func (*MockTreeStatusServerMockRecorder) CreateStatus

func (mr *MockTreeStatusServerMockRecorder) CreateStatus(arg0, arg1 interface{}) *gomock.Call

CreateStatus indicates an expected call of CreateStatus.

func (*MockTreeStatusServerMockRecorder) GetStatus

func (mr *MockTreeStatusServerMockRecorder) GetStatus(arg0, arg1 interface{}) *gomock.Call

GetStatus indicates an expected call of GetStatus.

func (*MockTreeStatusServerMockRecorder) ListStatus

func (mr *MockTreeStatusServerMockRecorder) ListStatus(arg0, arg1 interface{}) *gomock.Call

ListStatus indicates an expected call of ListStatus.

type QueryTreesRequest

type QueryTreesRequest struct {

	// The LUCI project to query tree name.
	Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
	// contains filtered or unexported fields
}

func (*QueryTreesRequest) Descriptor deprecated

func (*QueryTreesRequest) Descriptor() ([]byte, []int)

Deprecated: Use QueryTreesRequest.ProtoReflect.Descriptor instead.

func (*QueryTreesRequest) GetProject

func (x *QueryTreesRequest) GetProject() string

func (*QueryTreesRequest) ProtoMessage

func (*QueryTreesRequest) ProtoMessage()

func (*QueryTreesRequest) ProtoReflect

func (x *QueryTreesRequest) ProtoReflect() protoreflect.Message

func (*QueryTreesRequest) Reset

func (x *QueryTreesRequest) Reset()

func (*QueryTreesRequest) String

func (x *QueryTreesRequest) String() string

type QueryTreesResponse

type QueryTreesResponse struct {

	// List of trees attached to the project.
	// If there are more than 1 tree attached to a project, the results
	// will be sorted ascendingly based on tree name.
	Trees []*Tree `protobuf:"bytes,1,rep,name=trees,proto3" json:"trees,omitempty"`
	// contains filtered or unexported fields
}

func (*QueryTreesResponse) Descriptor deprecated

func (*QueryTreesResponse) Descriptor() ([]byte, []int)

Deprecated: Use QueryTreesResponse.ProtoReflect.Descriptor instead.

func (*QueryTreesResponse) GetTrees

func (x *QueryTreesResponse) GetTrees() []*Tree

func (*QueryTreesResponse) ProtoMessage

func (*QueryTreesResponse) ProtoMessage()

func (*QueryTreesResponse) ProtoReflect

func (x *QueryTreesResponse) ProtoReflect() protoreflect.Message

func (*QueryTreesResponse) Reset

func (x *QueryTreesResponse) Reset()

func (*QueryTreesResponse) String

func (x *QueryTreesResponse) String() string

type Status

type Status struct {

	// The name of this status.
	// Format: trees/{tree_id}/status/{status_id}
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// The general state of the tree.  Possible values are open, closed, throttled
	// and maintenance.
	GeneralState GeneralState `` /* 136-byte string literal not displayed */
	// The message explaining details about the status.  This may contain HTML,
	// it is the responsibility of the caller to sanitize the HTML before display.
	// Maximum length of 1024 bytes.  Must be a valid UTF-8 string in normalized form
	// C without any non-printable runes.
	Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
	// The email address of the user who added this.  May be empty if
	// the reader does not have permission to see personal data.  Will also be
	// set to 'user' after the user data TTL (of 30 days).
	CreateUser string `protobuf:"bytes,4,opt,name=create_user,json=createUser,proto3" json:"create_user,omitempty"`
	// The time the status update was made.
	CreateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// Optional. Only applicable when general_state == CLOSED.
	// If this field is set when general_state != CLOSED, it will be ignored.
	// The name of the LUCI builder that caused the tree to close.
	// Format: projects/{project}/buckets/{bucket}/builders/{builder}.
	// This field will be populated by LUCI Notify, when it automatically
	// closes a tree. When a human closes a tree, we do not require this field
	// to be set.
	// Note: If a tree is closed due to multiple builders, only the first failure
	// will be recorded.
	// This field will be exported to BigQuery for analysis.
	ClosingBuilderName string `protobuf:"bytes,6,opt,name=closing_builder_name,json=closingBuilderName,proto3" json:"closing_builder_name,omitempty"`
	// contains filtered or unexported fields
}

The Status of a tree for an interval of time.

func (*Status) Descriptor deprecated

func (*Status) Descriptor() ([]byte, []int)

Deprecated: Use Status.ProtoReflect.Descriptor instead.

func (*Status) GetClosingBuilderName

func (x *Status) GetClosingBuilderName() string

func (*Status) GetCreateTime

func (x *Status) GetCreateTime() *timestamppb.Timestamp

func (*Status) GetCreateUser

func (x *Status) GetCreateUser() string

func (*Status) GetGeneralState

func (x *Status) GetGeneralState() GeneralState

func (*Status) GetMessage

func (x *Status) GetMessage() string

func (*Status) GetName

func (x *Status) GetName() string

func (*Status) ProtoMessage

func (*Status) ProtoMessage()

func (*Status) ProtoReflect

func (x *Status) ProtoReflect() protoreflect.Message

func (*Status) Reset

func (x *Status) Reset()

func (*Status) String

func (x *Status) String() string

type Tree

type Tree struct {

	// Name of the tree, in format "trees/{tree_id}".
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// The LUCI projects that the tree applies to..
	// The first project in this list is the primary project. This means:
	//  1. Its "<project>:<subrealm>" realm will be used to check
	//     for ACL for the tree, if the tree uses realm-based ACL.
	//  2. If the tree is access without a LUCI project context, the primary project
	//     will be displayed at the top left of LUCI UI.
	Projects []string `protobuf:"bytes,2,rep,name=projects,proto3" json:"projects,omitempty"`
	// contains filtered or unexported fields
}

func (*Tree) Descriptor deprecated

func (*Tree) Descriptor() ([]byte, []int)

Deprecated: Use Tree.ProtoReflect.Descriptor instead.

func (*Tree) GetName

func (x *Tree) GetName() string

func (*Tree) GetProjects

func (x *Tree) GetProjects() []string

func (*Tree) ProtoMessage

func (*Tree) ProtoMessage()

func (*Tree) ProtoReflect

func (x *Tree) ProtoReflect() protoreflect.Message

func (*Tree) Reset

func (x *Tree) Reset()

func (*Tree) String

func (x *Tree) String() string

type TreeStatusClient

type TreeStatusClient interface {
	// List all status values for a tree in reverse chronological order.
	ListStatus(ctx context.Context, in *ListStatusRequest, opts ...grpc.CallOption) (*ListStatusResponse, error)
	// Get a status for a tree.
	// Use the resource alias 'latest' to get just the current status.
	GetStatus(ctx context.Context, in *GetStatusRequest, opts ...grpc.CallOption) (*Status, error)
	// Create a new status update for the tree.
	CreateStatus(ctx context.Context, in *CreateStatusRequest, opts ...grpc.CallOption) (*Status, error)
}

TreeStatusClient is the client API for TreeStatus service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewTreeStatusClient

func NewTreeStatusClient(cc grpc.ClientConnInterface) TreeStatusClient

func NewTreeStatusPRPCClient

func NewTreeStatusPRPCClient(client *prpc.Client) TreeStatusClient

type TreeStatusServer

type TreeStatusServer interface {
	// List all status values for a tree in reverse chronological order.
	ListStatus(context.Context, *ListStatusRequest) (*ListStatusResponse, error)
	// Get a status for a tree.
	// Use the resource alias 'latest' to get just the current status.
	GetStatus(context.Context, *GetStatusRequest) (*Status, error)
	// Create a new status update for the tree.
	CreateStatus(context.Context, *CreateStatusRequest) (*Status, error)
}

TreeStatusServer is the server API for TreeStatus service.

type TreesClient

type TreesClient interface {
	// Get information of a tree.
	GetTree(ctx context.Context, in *GetTreeRequest, opts ...grpc.CallOption) (*Tree, error)
	// Query tree for a LUCI project.
	QueryTrees(ctx context.Context, in *QueryTreesRequest, opts ...grpc.CallOption) (*QueryTreesResponse, error)
}

TreesClient is the client API for Trees service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewTreesClient

func NewTreesClient(cc grpc.ClientConnInterface) TreesClient

func NewTreesPRPCClient

func NewTreesPRPCClient(client *prpc.Client) TreesClient

type TreesServer

type TreesServer interface {
	// Get information of a tree.
	GetTree(context.Context, *GetTreeRequest) (*Tree, error)
	// Query tree for a LUCI project.
	QueryTrees(context.Context, *QueryTreesRequest) (*QueryTreesResponse, error)
}

TreesServer is the server API for Trees service.

type UnimplementedTreeStatusServer

type UnimplementedTreeStatusServer struct {
}

UnimplementedTreeStatusServer can be embedded to have forward compatible implementations.

func (*UnimplementedTreeStatusServer) CreateStatus

func (*UnimplementedTreeStatusServer) GetStatus

func (*UnimplementedTreeStatusServer) ListStatus

type UnimplementedTreesServer

type UnimplementedTreesServer struct {
}

UnimplementedTreesServer can be embedded to have forward compatible implementations.

func (*UnimplementedTreesServer) GetTree

func (*UnimplementedTreesServer) QueryTrees

Jump to

Keyboard shortcuts

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