v1

package
v0.0.5 Latest Latest
Warning

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

Go to latest
Published: Sep 27, 2023 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ComputePowerClient_RunPythonPackage_FullMethodName        = "/api.compute.v1.ComputePowerClient/RunPythonPackage"
	ComputePowerClient_CancelExecPythonPackage_FullMethodName = "/api.compute.v1.ComputePowerClient/CancelExecPythonPackage"
)
View Source
const (
	Vm_CreateVm_FullMethodName = "/api.compute.v1.Vm/CreateVm"
	Vm_DeleteVm_FullMethodName = "/api.compute.v1.Vm/DeleteVm"
	Vm_GetVm_FullMethodName    = "/api.compute.v1.Vm/GetVm"
	Vm_ListVm_FullMethodName   = "/api.compute.v1.Vm/ListVm"
	Vm_StartVm_FullMethodName  = "/api.compute.v1.Vm/StartVm"
	Vm_StopVm_FullMethodName   = "/api.compute.v1.Vm/StopVm"
)
View Source
const OperationComputePowerClientCancelExecPythonPackage = "/api.compute.v1.ComputePowerClient/CancelExecPythonPackage"
View Source
const OperationComputePowerClientRunPythonPackage = "/api.compute.v1.ComputePowerClient/RunPythonPackage"
View Source
const OperationVmCreateVm = "/api.compute.v1.Vm/CreateVm"
View Source
const OperationVmDeleteVm = "/api.compute.v1.Vm/DeleteVm"
View Source
const OperationVmGetVm = "/api.compute.v1.Vm/GetVm"
View Source
const OperationVmListVm = "/api.compute.v1.Vm/ListVm"
View Source
const OperationVmStartVm = "/api.compute.v1.Vm/StartVm"
View Source
const OperationVmStopVm = "/api.compute.v1.Vm/StopVm"

Variables

View Source
var ComputePowerClient_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "api.compute.v1.ComputePowerClient",
	HandlerType: (*ComputePowerClientServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "RunPythonPackage",
			Handler:    _ComputePowerClient_RunPythonPackage_Handler,
		},
		{
			MethodName: "CancelExecPythonPackage",
			Handler:    _ComputePowerClient_CancelExecPythonPackage_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "compute/v1/compute_power_client.proto",
}

ComputePowerClient_ServiceDesc is the grpc.ServiceDesc for ComputePowerClient service. It's only intended for direct use with grpc.RegisterService, and not to be introspected or modified (even as a copy)

View Source
var File_compute_v1_compute_power_client_proto protoreflect.FileDescriptor
View Source
var File_compute_v1_vm_proto protoreflect.FileDescriptor
View Source
var Vm_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "api.compute.v1.Vm",
	HandlerType: (*VmServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "CreateVm",
			Handler:    _Vm_CreateVm_Handler,
		},
		{
			MethodName: "DeleteVm",
			Handler:    _Vm_DeleteVm_Handler,
		},
		{
			MethodName: "GetVm",
			Handler:    _Vm_GetVm_Handler,
		},
		{
			MethodName: "ListVm",
			Handler:    _Vm_ListVm_Handler,
		},
		{
			MethodName: "StartVm",
			Handler:    _Vm_StartVm_Handler,
		},
		{
			MethodName: "StopVm",
			Handler:    _Vm_StopVm_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "compute/v1/vm.proto",
}

Vm_ServiceDesc is the grpc.ServiceDesc for Vm service. It's only intended for direct use with grpc.RegisterService, and not to be introspected or modified (even as a copy)

Functions

func RegisterComputePowerClientHTTPServer added in v0.0.3

func RegisterComputePowerClientHTTPServer(s *http.Server, srv ComputePowerClientHTTPServer)

func RegisterComputePowerClientServer added in v0.0.3

func RegisterComputePowerClientServer(s grpc.ServiceRegistrar, srv ComputePowerClientServer)

func RegisterVmHTTPServer

func RegisterVmHTTPServer(s *http.Server, srv VmHTTPServer)

func RegisterVmServer

func RegisterVmServer(s grpc.ServiceRegistrar, srv VmServer)

Types

type CancelExecPythonPackageClientReply added in v0.0.3

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

func (*CancelExecPythonPackageClientReply) Descriptor deprecated added in v0.0.3

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

Deprecated: Use CancelExecPythonPackageClientReply.ProtoReflect.Descriptor instead.

func (*CancelExecPythonPackageClientReply) ProtoMessage added in v0.0.3

func (*CancelExecPythonPackageClientReply) ProtoMessage()

func (*CancelExecPythonPackageClientReply) ProtoReflect added in v0.0.3

func (*CancelExecPythonPackageClientReply) Reset added in v0.0.3

func (*CancelExecPythonPackageClientReply) String added in v0.0.3

type CancelExecPythonPackageClientRequest added in v0.0.3

type CancelExecPythonPackageClientRequest struct {
	Pid int32 `protobuf:"varint,1,opt,name=pid,proto3" json:"pid,omitempty"`
	// contains filtered or unexported fields
}

func (*CancelExecPythonPackageClientRequest) Descriptor deprecated added in v0.0.3

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

Deprecated: Use CancelExecPythonPackageClientRequest.ProtoReflect.Descriptor instead.

func (*CancelExecPythonPackageClientRequest) GetPid added in v0.0.3

func (*CancelExecPythonPackageClientRequest) ProtoMessage added in v0.0.3

func (*CancelExecPythonPackageClientRequest) ProtoMessage()

func (*CancelExecPythonPackageClientRequest) ProtoReflect added in v0.0.3

func (*CancelExecPythonPackageClientRequest) Reset added in v0.0.3

func (*CancelExecPythonPackageClientRequest) String added in v0.0.3

type ComputePowerClientClient added in v0.0.3

type ComputePowerClientClient interface {
	// 执行脚本
	RunPythonPackage(ctx context.Context, in *RunPythonPackageClientRequest, opts ...grpc.CallOption) (*RunPythonPackageClientReply, error)
	// 取消执行
	CancelExecPythonPackage(ctx context.Context, in *CancelExecPythonPackageClientRequest, opts ...grpc.CallOption) (*CancelExecPythonPackageClientReply, error)
}

ComputePowerClientClient is the client API for ComputePowerClient service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.

func NewComputePowerClientClient added in v0.0.3

func NewComputePowerClientClient(cc grpc.ClientConnInterface) ComputePowerClientClient

type ComputePowerClientHTTPClient added in v0.0.3

type ComputePowerClientHTTPClient interface {
	CancelExecPythonPackage(ctx context.Context, req *CancelExecPythonPackageClientRequest, opts ...http.CallOption) (rsp *CancelExecPythonPackageClientReply, err error)
	RunPythonPackage(ctx context.Context, req *RunPythonPackageClientRequest, opts ...http.CallOption) (rsp *RunPythonPackageClientReply, err error)
}

func NewComputePowerClientHTTPClient added in v0.0.3

func NewComputePowerClientHTTPClient(client *http.Client) ComputePowerClientHTTPClient

type ComputePowerClientHTTPClientImpl added in v0.0.3

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

func (*ComputePowerClientHTTPClientImpl) CancelExecPythonPackage added in v0.0.3

func (*ComputePowerClientHTTPClientImpl) RunPythonPackage added in v0.0.3

type ComputePowerClientHTTPServer added in v0.0.3

type ComputePowerClientHTTPServer interface {
	// CancelExecPythonPackage取消执行
	CancelExecPythonPackage(context.Context, *CancelExecPythonPackageClientRequest) (*CancelExecPythonPackageClientReply, error)
	// RunPythonPackage执行脚本
	RunPythonPackage(context.Context, *RunPythonPackageClientRequest) (*RunPythonPackageClientReply, error)
}

type ComputePowerClientServer added in v0.0.3

type ComputePowerClientServer interface {
	// 执行脚本
	RunPythonPackage(context.Context, *RunPythonPackageClientRequest) (*RunPythonPackageClientReply, error)
	// 取消执行
	CancelExecPythonPackage(context.Context, *CancelExecPythonPackageClientRequest) (*CancelExecPythonPackageClientReply, error)
	// contains filtered or unexported methods
}

ComputePowerClientServer is the server API for ComputePowerClient service. All implementations must embed UnimplementedComputePowerClientServer for forward compatibility

type CreateVmRequest

type CreateVmRequest struct {
	Image   string   `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"`
	Port    string   `protobuf:"bytes,2,opt,name=port,proto3" json:"port,omitempty"`
	Command []string `protobuf:"bytes,3,rep,name=command,proto3" json:"command,omitempty"`
	// contains filtered or unexported fields
}

func (*CreateVmRequest) Descriptor deprecated

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

Deprecated: Use CreateVmRequest.ProtoReflect.Descriptor instead.

func (*CreateVmRequest) GetCommand added in v0.0.2

func (x *CreateVmRequest) GetCommand() []string

func (*CreateVmRequest) GetImage

func (x *CreateVmRequest) GetImage() string

func (*CreateVmRequest) GetPort

func (x *CreateVmRequest) GetPort() string

func (*CreateVmRequest) ProtoMessage

func (*CreateVmRequest) ProtoMessage()

func (*CreateVmRequest) ProtoReflect

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

func (*CreateVmRequest) Reset

func (x *CreateVmRequest) Reset()

func (*CreateVmRequest) String

func (x *CreateVmRequest) String() string

type DeleteVmReply

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

func (*DeleteVmReply) Descriptor deprecated

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

Deprecated: Use DeleteVmReply.ProtoReflect.Descriptor instead.

func (*DeleteVmReply) ProtoMessage

func (*DeleteVmReply) ProtoMessage()

func (*DeleteVmReply) ProtoReflect

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

func (*DeleteVmReply) Reset

func (x *DeleteVmReply) Reset()

func (*DeleteVmReply) String

func (x *DeleteVmReply) String() string

type DeleteVmRequest

type DeleteVmRequest struct {
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// contains filtered or unexported fields
}

func (*DeleteVmRequest) Descriptor deprecated

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

Deprecated: Use DeleteVmRequest.ProtoReflect.Descriptor instead.

func (*DeleteVmRequest) GetId

func (x *DeleteVmRequest) GetId() string

func (*DeleteVmRequest) ProtoMessage

func (*DeleteVmRequest) ProtoMessage()

func (*DeleteVmRequest) ProtoReflect

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

func (*DeleteVmRequest) Reset

func (x *DeleteVmRequest) Reset()

func (*DeleteVmRequest) String

func (x *DeleteVmRequest) String() string

type GetVmReply

type GetVmReply struct {
	Id          string         `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Image       string         `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"`
	Ports       []*PortBinding `protobuf:"bytes,3,rep,name=ports,proto3" json:"ports,omitempty"`
	CpuUsage    uint64         `protobuf:"varint,4,opt,name=cpuUsage,proto3" json:"cpuUsage,omitempty"`
	MemoryUsage uint64         `protobuf:"varint,5,opt,name=memoryUsage,proto3" json:"memoryUsage,omitempty"`
	// contains filtered or unexported fields
}

func (*GetVmReply) Descriptor deprecated

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

Deprecated: Use GetVmReply.ProtoReflect.Descriptor instead.

func (*GetVmReply) GetCpuUsage added in v0.0.3

func (x *GetVmReply) GetCpuUsage() uint64

func (*GetVmReply) GetId

func (x *GetVmReply) GetId() string

func (*GetVmReply) GetImage

func (x *GetVmReply) GetImage() string

func (*GetVmReply) GetMemoryUsage added in v0.0.3

func (x *GetVmReply) GetMemoryUsage() uint64

func (*GetVmReply) GetPorts

func (x *GetVmReply) GetPorts() []*PortBinding

func (*GetVmReply) ProtoMessage

func (*GetVmReply) ProtoMessage()

func (*GetVmReply) ProtoReflect

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

func (*GetVmReply) Reset

func (x *GetVmReply) Reset()

func (*GetVmReply) String

func (x *GetVmReply) String() string

type GetVmRequest

type GetVmRequest struct {
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// contains filtered or unexported fields
}

func (*GetVmRequest) Descriptor deprecated

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

Deprecated: Use GetVmRequest.ProtoReflect.Descriptor instead.

func (*GetVmRequest) GetId

func (x *GetVmRequest) GetId() string

func (*GetVmRequest) ProtoMessage

func (*GetVmRequest) ProtoMessage()

func (*GetVmRequest) ProtoReflect

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

func (*GetVmRequest) Reset

func (x *GetVmRequest) Reset()

func (*GetVmRequest) String

func (x *GetVmRequest) String() string

type ListVmReply

type ListVmReply struct {
	Result []*GetVmReply `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"`
	// contains filtered or unexported fields
}

func (*ListVmReply) Descriptor deprecated

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

Deprecated: Use ListVmReply.ProtoReflect.Descriptor instead.

func (*ListVmReply) GetResult

func (x *ListVmReply) GetResult() []*GetVmReply

func (*ListVmReply) ProtoMessage

func (*ListVmReply) ProtoMessage()

func (*ListVmReply) ProtoReflect

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

func (*ListVmReply) Reset

func (x *ListVmReply) Reset()

func (*ListVmReply) String

func (x *ListVmReply) String() string

type ListVmRequest

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

func (*ListVmRequest) Descriptor deprecated

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

Deprecated: Use ListVmRequest.ProtoReflect.Descriptor instead.

func (*ListVmRequest) ProtoMessage

func (*ListVmRequest) ProtoMessage()

func (*ListVmRequest) ProtoReflect

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

func (*ListVmRequest) Reset

func (x *ListVmRequest) Reset()

func (*ListVmRequest) String

func (x *ListVmRequest) String() string

type PortBinding

type PortBinding struct {
	Ip          string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"`
	PrivatePort uint32 `protobuf:"varint,2,opt,name=private_port,json=privatePort,proto3" json:"private_port,omitempty"`
	PublicPort  uint32 `protobuf:"varint,3,opt,name=public_port,json=publicPort,proto3" json:"public_port,omitempty"`
	Type        string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"`
	// contains filtered or unexported fields
}

func (*PortBinding) Descriptor deprecated

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

Deprecated: Use PortBinding.ProtoReflect.Descriptor instead.

func (*PortBinding) GetIp

func (x *PortBinding) GetIp() string

func (*PortBinding) GetPrivatePort

func (x *PortBinding) GetPrivatePort() uint32

func (*PortBinding) GetPublicPort

func (x *PortBinding) GetPublicPort() uint32

func (*PortBinding) GetType

func (x *PortBinding) GetType() string

func (*PortBinding) ProtoMessage

func (*PortBinding) ProtoMessage()

func (*PortBinding) ProtoReflect

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

func (*PortBinding) Reset

func (x *PortBinding) Reset()

func (*PortBinding) String

func (x *PortBinding) String() string

type RunPythonPackageClientReply added in v0.0.3

type RunPythonPackageClientReply struct {
	ExecuteResult string `protobuf:"bytes,1,opt,name=executeResult,proto3" json:"executeResult,omitempty"`
	// contains filtered or unexported fields
}

func (*RunPythonPackageClientReply) Descriptor deprecated added in v0.0.3

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

Deprecated: Use RunPythonPackageClientReply.ProtoReflect.Descriptor instead.

func (*RunPythonPackageClientReply) GetExecuteResult added in v0.0.3

func (x *RunPythonPackageClientReply) GetExecuteResult() string

func (*RunPythonPackageClientReply) ProtoMessage added in v0.0.3

func (*RunPythonPackageClientReply) ProtoMessage()

func (*RunPythonPackageClientReply) ProtoReflect added in v0.0.3

func (*RunPythonPackageClientReply) Reset added in v0.0.3

func (x *RunPythonPackageClientReply) Reset()

func (*RunPythonPackageClientReply) String added in v0.0.3

func (x *RunPythonPackageClientReply) String() string

type RunPythonPackageClientRequest added in v0.0.3

type RunPythonPackageClientRequest struct {
	Cid string `protobuf:"bytes,2,opt,name=cid,proto3" json:"cid,omitempty"`
	// contains filtered or unexported fields
}

func (*RunPythonPackageClientRequest) Descriptor deprecated added in v0.0.3

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

Deprecated: Use RunPythonPackageClientRequest.ProtoReflect.Descriptor instead.

func (*RunPythonPackageClientRequest) GetCid added in v0.0.3

func (*RunPythonPackageClientRequest) ProtoMessage added in v0.0.3

func (*RunPythonPackageClientRequest) ProtoMessage()

func (*RunPythonPackageClientRequest) ProtoReflect added in v0.0.3

func (*RunPythonPackageClientRequest) Reset added in v0.0.3

func (x *RunPythonPackageClientRequest) Reset()

func (*RunPythonPackageClientRequest) String added in v0.0.3

type UnimplementedComputePowerClientServer added in v0.0.3

type UnimplementedComputePowerClientServer struct {
}

UnimplementedComputePowerClientServer must be embedded to have forward compatible implementations.

func (UnimplementedComputePowerClientServer) CancelExecPythonPackage added in v0.0.3

func (UnimplementedComputePowerClientServer) RunPythonPackage added in v0.0.3

type UnimplementedVmServer

type UnimplementedVmServer struct {
}

UnimplementedVmServer must be embedded to have forward compatible implementations.

func (UnimplementedVmServer) CreateVm

func (UnimplementedVmServer) DeleteVm

func (UnimplementedVmServer) GetVm

func (UnimplementedVmServer) ListVm

func (UnimplementedVmServer) StartVm added in v0.0.2

func (UnimplementedVmServer) StopVm added in v0.0.2

type UnsafeComputePowerClientServer added in v0.0.3

type UnsafeComputePowerClientServer interface {
	// contains filtered or unexported methods
}

UnsafeComputePowerClientServer may be embedded to opt out of forward compatibility for this service. Use of this interface is not recommended, as added methods to ComputePowerClientServer will result in compilation errors.

type UnsafeVmServer

type UnsafeVmServer interface {
	// contains filtered or unexported methods
}

UnsafeVmServer may be embedded to opt out of forward compatibility for this service. Use of this interface is not recommended, as added methods to VmServer will result in compilation errors.

type VmClient

type VmClient interface {
	CreateVm(ctx context.Context, in *CreateVmRequest, opts ...grpc.CallOption) (*GetVmReply, error)
	DeleteVm(ctx context.Context, in *DeleteVmRequest, opts ...grpc.CallOption) (*DeleteVmReply, error)
	GetVm(ctx context.Context, in *GetVmRequest, opts ...grpc.CallOption) (*GetVmReply, error)
	ListVm(ctx context.Context, in *ListVmRequest, opts ...grpc.CallOption) (*ListVmReply, error)
	StartVm(ctx context.Context, in *GetVmRequest, opts ...grpc.CallOption) (*GetVmReply, error)
	StopVm(ctx context.Context, in *GetVmRequest, opts ...grpc.CallOption) (*GetVmReply, error)
}

VmClient is the client API for Vm service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.

func NewVmClient

func NewVmClient(cc grpc.ClientConnInterface) VmClient

type VmHTTPClient

type VmHTTPClient interface {
	CreateVm(ctx context.Context, req *CreateVmRequest, opts ...http.CallOption) (rsp *GetVmReply, err error)
	DeleteVm(ctx context.Context, req *DeleteVmRequest, opts ...http.CallOption) (rsp *DeleteVmReply, err error)
	GetVm(ctx context.Context, req *GetVmRequest, opts ...http.CallOption) (rsp *GetVmReply, err error)
	ListVm(ctx context.Context, req *ListVmRequest, opts ...http.CallOption) (rsp *ListVmReply, err error)
	StartVm(ctx context.Context, req *GetVmRequest, opts ...http.CallOption) (rsp *GetVmReply, err error)
	StopVm(ctx context.Context, req *GetVmRequest, opts ...http.CallOption) (rsp *GetVmReply, err error)
}

func NewVmHTTPClient

func NewVmHTTPClient(client *http.Client) VmHTTPClient

type VmHTTPClientImpl

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

func (*VmHTTPClientImpl) CreateVm

func (c *VmHTTPClientImpl) CreateVm(ctx context.Context, in *CreateVmRequest, opts ...http.CallOption) (*GetVmReply, error)

func (*VmHTTPClientImpl) DeleteVm

func (*VmHTTPClientImpl) GetVm

func (c *VmHTTPClientImpl) GetVm(ctx context.Context, in *GetVmRequest, opts ...http.CallOption) (*GetVmReply, error)

func (*VmHTTPClientImpl) ListVm

func (c *VmHTTPClientImpl) ListVm(ctx context.Context, in *ListVmRequest, opts ...http.CallOption) (*ListVmReply, error)

func (*VmHTTPClientImpl) StartVm added in v0.0.2

func (c *VmHTTPClientImpl) StartVm(ctx context.Context, in *GetVmRequest, opts ...http.CallOption) (*GetVmReply, error)

func (*VmHTTPClientImpl) StopVm added in v0.0.2

func (c *VmHTTPClientImpl) StopVm(ctx context.Context, in *GetVmRequest, opts ...http.CallOption) (*GetVmReply, error)

type VmServer

type VmServer interface {
	CreateVm(context.Context, *CreateVmRequest) (*GetVmReply, error)
	DeleteVm(context.Context, *DeleteVmRequest) (*DeleteVmReply, error)
	GetVm(context.Context, *GetVmRequest) (*GetVmReply, error)
	ListVm(context.Context, *ListVmRequest) (*ListVmReply, error)
	StartVm(context.Context, *GetVmRequest) (*GetVmReply, error)
	StopVm(context.Context, *GetVmRequest) (*GetVmReply, error)
	// contains filtered or unexported methods
}

VmServer is the server API for Vm service. All implementations must embed UnimplementedVmServer for forward compatibility

Jump to

Keyboard shortcuts

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