catalog

package
v0.0.0-...-69798c4 Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const (
	SELF       = "self"
	COLLECTION = "collection"
)
View Source
const (
	API_VERSION_TYPE = "apiVersion"
)
View Source
const (
	CATALOG_TYPE = "catalog"
)
View Source
const (
	ERROR_TYPE = "error"
)
View Source
const (
	OUTPUT_TYPE = "output"
)
View Source
const (
	QUESTION_TYPE = "question"
)
View Source
const (
	TEMPLATE_TYPE = "template"
)
View Source
const (
	TEMPLATE_VERSION_TYPE = "templateVersion"
)

Variables

This section is empty.

Functions

func IsNotFound

func IsNotFound(err error) bool

Types

type Action

type Action struct {
	Input  string `json:"input,omitempty"`
	Output string `json:"output,omitempty"`
}

type ApiError

type ApiError struct {
	StatusCode int
	Url        string
	Msg        string
	Status     string
	Body       string
}

func (*ApiError) Error

func (e *ApiError) Error() string

type ApiVersion

type ApiVersion struct {
	Resource

	Actions map[string]interface{} `json:"actions,omitempty" yaml:"actions,omitempty"`

	Links map[string]interface{} `json:"links,omitempty" yaml:"links,omitempty"`

	Type string `json:"type,omitempty" yaml:"type,omitempty"`
}

type ApiVersionClient

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

func (*ApiVersionClient) ById

func (c *ApiVersionClient) ById(id string) (*ApiVersion, error)

func (*ApiVersionClient) Create

func (c *ApiVersionClient) Create(container *ApiVersion) (*ApiVersion, error)

func (*ApiVersionClient) Delete

func (c *ApiVersionClient) Delete(container *ApiVersion) error

func (*ApiVersionClient) List

func (*ApiVersionClient) Update

func (c *ApiVersionClient) Update(existing *ApiVersion, updates interface{}) (*ApiVersion, error)

type ApiVersionCollection

type ApiVersionCollection struct {
	Collection
	Data []ApiVersion `json:"data,omitempty"`
	// contains filtered or unexported fields
}

func (*ApiVersionCollection) Next

type ApiVersionOperations

type ApiVersionOperations interface {
	List(opts *ListOpts) (*ApiVersionCollection, error)
	Create(opts *ApiVersion) (*ApiVersion, error)
	Update(existing *ApiVersion, updates interface{}) (*ApiVersion, error)
	ById(id string) (*ApiVersion, error)
	Delete(container *ApiVersion) error
}

type Catalog

type Catalog struct {
	Resource

	Actions map[string]interface{} `json:"actions,omitempty" yaml:"actions,omitempty"`

	Branch string `json:"branch,omitempty" yaml:"branch,omitempty"`

	CatalogRoot string `json:"catalogRoot,omitempty" yaml:"catalog_root,omitempty"`

	Description string `json:"description,omitempty" yaml:"description,omitempty"`

	LastUpdated string `json:"lastUpdated,omitempty" yaml:"last_updated,omitempty"`

	Links map[string]interface{} `json:"links,omitempty" yaml:"links,omitempty"`

	Message string `json:"message,omitempty" yaml:"message,omitempty"`

	Metadata map[string]interface{} `json:"metadata,omitempty" yaml:"metadata,omitempty"`

	State string `json:"state,omitempty" yaml:"state,omitempty"`

	Type string `json:"type,omitempty" yaml:"type,omitempty"`

	Uri string `json:"uri,omitempty" yaml:"uri,omitempty"`
}

type CatalogClient

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

func (*CatalogClient) ById

func (c *CatalogClient) ById(id string) (*Catalog, error)

func (*CatalogClient) Create

func (c *CatalogClient) Create(container *Catalog) (*Catalog, error)

func (*CatalogClient) Delete

func (c *CatalogClient) Delete(container *Catalog) error

func (*CatalogClient) List

func (c *CatalogClient) List(opts *ListOpts) (*CatalogCollection, error)

func (*CatalogClient) Update

func (c *CatalogClient) Update(existing *Catalog, updates interface{}) (*Catalog, error)

type CatalogCollection

type CatalogCollection struct {
	Collection
	Data []Catalog `json:"data,omitempty"`
	// contains filtered or unexported fields
}

func (*CatalogCollection) Next

func (cc *CatalogCollection) Next() (*CatalogCollection, error)

type CatalogOperations

type CatalogOperations interface {
	List(opts *ListOpts) (*CatalogCollection, error)
	Create(opts *Catalog) (*Catalog, error)
	Update(existing *Catalog, updates interface{}) (*Catalog, error)
	ById(id string) (*Catalog, error)
	Delete(container *Catalog) error
}

type ClientOpts

type ClientOpts struct {
	Url       string
	AccessKey string
	SecretKey string
	Timeout   time.Duration
}

type Collection

type Collection struct {
	Type         string                 `json:"type,omitempty"`
	ResourceType string                 `json:"resourceType,omitempty"`
	Links        map[string]string      `json:"links,omitempty"`
	CreateTypes  map[string]string      `json:"createTypes,omitempty"`
	Actions      map[string]string      `json:"actions,omitempty"`
	SortLinks    map[string]string      `json:"sortLinks,omitempty"`
	Pagination   *Pagination            `json:"pagination,omitempty"`
	Sort         *Sort                  `json:"sort,omitempty"`
	Filters      map[string][]Condition `json:"filters,omitempty"`
}

type Condition

type Condition struct {
	Modifier string      `json:"modifier,omitempty"`
	Value    interface{} `json:"value,omitempty"`
}

type Error

type Error struct {
	Resource

	Actions map[string]interface{} `json:"actions,omitempty" yaml:"actions,omitempty"`

	Links map[string]interface{} `json:"links,omitempty" yaml:"links,omitempty"`

	Message string `json:"message,omitempty" yaml:"message,omitempty"`

	Status string `json:"status,omitempty" yaml:"status,omitempty"`

	Type string `json:"type,omitempty" yaml:"type,omitempty"`
}

type ErrorClient

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

func (*ErrorClient) ById

func (c *ErrorClient) ById(id string) (*Error, error)

func (*ErrorClient) Create

func (c *ErrorClient) Create(container *Error) (*Error, error)

func (*ErrorClient) Delete

func (c *ErrorClient) Delete(container *Error) error

func (*ErrorClient) List

func (c *ErrorClient) List(opts *ListOpts) (*ErrorCollection, error)

func (*ErrorClient) Update

func (c *ErrorClient) Update(existing *Error, updates interface{}) (*Error, error)

type ErrorCollection

type ErrorCollection struct {
	Collection
	Data []Error `json:"data,omitempty"`
	// contains filtered or unexported fields
}

func (*ErrorCollection) Next

func (cc *ErrorCollection) Next() (*ErrorCollection, error)

type ErrorOperations

type ErrorOperations interface {
	List(opts *ListOpts) (*ErrorCollection, error)
	Create(opts *Error) (*Error, error)
	Update(existing *Error, updates interface{}) (*Error, error)
	ById(id string) (*Error, error)
	Delete(container *Error) error
}

type Field

type Field struct {
	Type         string      `json:"type,omitempty"`
	Default      interface{} `json:"default,omitempty"`
	Unique       bool        `json:"unique,omitempty"`
	Nullable     bool        `json:"nullable,omitempty"`
	Create       bool        `json:"create,omitempty"`
	Required     bool        `json:"required,omitempty"`
	Update       bool        `json:"update,omitempty"`
	MinLength    *int64      `json:"minLength,omitempty"`
	MaxLength    *int64      `json:"maxLength,omitempty"`
	Min          *int64      `json:"min,omitempty"`
	Max          *int64      `json:"max,omitempty"`
	Options      []string    `json:"options,omitempty"`
	ValidChars   string      `json:"validChars,omitempty"`
	InvalidChars string      `json:"invalidChars,omitempty"`
	Description  string      `json:"description,omitempty"`
}

type Filter

type Filter struct {
	Modifiers []string `json:"modifiers,omitempty"`
}

type GenericCollection

type GenericCollection struct {
	Collection
	Data []interface{} `json:"data,omitempty"`
}

type ListOpts

type ListOpts struct {
	Filters map[string]interface{}
}

func NewListOpts

func NewListOpts() *ListOpts

type Output

type Output struct {
	Resource

	Url string `json:"url,omitempty" yaml:"url,omitempty"`
}

type OutputClient

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

func (*OutputClient) ById

func (c *OutputClient) ById(id string) (*Output, error)

func (*OutputClient) Create

func (c *OutputClient) Create(container *Output) (*Output, error)

func (*OutputClient) Delete

func (c *OutputClient) Delete(container *Output) error

func (*OutputClient) List

func (c *OutputClient) List(opts *ListOpts) (*OutputCollection, error)

func (*OutputClient) Update

func (c *OutputClient) Update(existing *Output, updates interface{}) (*Output, error)

type OutputCollection

type OutputCollection struct {
	Collection
	Data []Output `json:"data,omitempty"`
	// contains filtered or unexported fields
}

func (*OutputCollection) Next

func (cc *OutputCollection) Next() (*OutputCollection, error)

type OutputOperations

type OutputOperations interface {
	List(opts *ListOpts) (*OutputCollection, error)
	Create(opts *Output) (*Output, error)
	Update(existing *Output, updates interface{}) (*Output, error)
	ById(id string) (*Output, error)
	Delete(container *Output) error
}

type Pagination

type Pagination struct {
	Marker   string `json:"marker,omitempty"`
	First    string `json:"first,omitempty"`
	Previous string `json:"previous,omitempty"`
	Next     string `json:"next,omitempty"`
	Limit    *int64 `json:"limit,omitempty"`
	Total    *int64 `json:"total,omitempty"`
	Partial  bool   `json:"partial,omitempty"`
}

type Question

type Question struct {
	Resource

	Default string `json:"default,omitempty" yaml:"default,omitempty"`

	Description string `json:"description,omitempty" yaml:"description,omitempty"`

	Group string `json:"group,omitempty" yaml:"group,omitempty"`

	InvalidChars string `json:"invalidChars,omitempty" yaml:"invalid_chars,omitempty"`

	Label string `json:"label,omitempty" yaml:"label,omitempty"`

	Max int64 `json:"max,omitempty" yaml:"max,omitempty"`

	MaxLength int64 `json:"maxLength,omitempty" yaml:"max_length,omitempty"`

	Min int64 `json:"min,omitempty" yaml:"min,omitempty"`

	MinLength int64 `json:"minLength,omitempty" yaml:"min_length,omitempty"`

	Options []string `json:"options,omitempty" yaml:"options,omitempty"`

	Required bool `json:"required,omitempty" yaml:"required,omitempty"`

	Type string `json:"type,omitempty" yaml:"type,omitempty"`

	ValidChars string `json:"validChars,omitempty" yaml:"valid_chars,omitempty"`

	Variable string `json:"variable,omitempty" yaml:"variable,omitempty"`
}

type QuestionClient

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

func (*QuestionClient) ById

func (c *QuestionClient) ById(id string) (*Question, error)

func (*QuestionClient) Create

func (c *QuestionClient) Create(container *Question) (*Question, error)

func (*QuestionClient) Delete

func (c *QuestionClient) Delete(container *Question) error

func (*QuestionClient) List

func (c *QuestionClient) List(opts *ListOpts) (*QuestionCollection, error)

func (*QuestionClient) Update

func (c *QuestionClient) Update(existing *Question, updates interface{}) (*Question, error)

type QuestionCollection

type QuestionCollection struct {
	Collection
	Data []Question `json:"data,omitempty"`
	// contains filtered or unexported fields
}

func (*QuestionCollection) Next

type QuestionOperations

type QuestionOperations interface {
	List(opts *ListOpts) (*QuestionCollection, error)
	Create(opts *Question) (*Question, error)
	Update(existing *Question, updates interface{}) (*Question, error)
	ById(id string) (*Question, error)
	Delete(container *Question) error
}

type RancherBaseClient

type RancherBaseClient interface {
	Websocket(string, map[string][]string) (*websocket.Conn, *http.Response, error)
	List(string, *ListOpts, interface{}) error
	Post(string, interface{}, interface{}) error
	GetLink(Resource, string, interface{}) error
	Create(string, interface{}, interface{}) error
	Update(string, *Resource, interface{}, interface{}) error
	ById(string, string, interface{}) error
	Delete(*Resource) error
	Reload(*Resource, interface{}) error
	Action(string, string, *Resource, interface{}, interface{}) error
	GetOpts() *ClientOpts
	GetSchemas() *Schemas
	GetTypes() map[string]Schema
	// contains filtered or unexported methods
}

type RancherBaseClientImpl

type RancherBaseClientImpl struct {
	Opts    *ClientOpts
	Schemas *Schemas
	Types   map[string]Schema
}

func (*RancherBaseClientImpl) Action

func (rancherClient *RancherBaseClientImpl) Action(schemaType string, action string,
	existing *Resource, inputObject, respObject interface{}) error

func (*RancherBaseClientImpl) ById

func (rancherClient *RancherBaseClientImpl) ById(schemaType string, id string, respObject interface{}) error

func (*RancherBaseClientImpl) Create

func (rancherClient *RancherBaseClientImpl) Create(schemaType string, createObj interface{}, respObject interface{}) error

func (*RancherBaseClientImpl) Delete

func (rancherClient *RancherBaseClientImpl) Delete(existing *Resource) error
func (rancherClient *RancherBaseClientImpl) GetLink(resource Resource, link string, respObject interface{}) error

func (*RancherBaseClientImpl) GetOpts

func (rancherClient *RancherBaseClientImpl) GetOpts() *ClientOpts

func (*RancherBaseClientImpl) GetSchemas

func (rancherClient *RancherBaseClientImpl) GetSchemas() *Schemas

func (*RancherBaseClientImpl) GetTypes

func (rancherClient *RancherBaseClientImpl) GetTypes() map[string]Schema

func (*RancherBaseClientImpl) List

func (rancherClient *RancherBaseClientImpl) List(schemaType string, opts *ListOpts, respObject interface{}) error

func (*RancherBaseClientImpl) Post

func (rancherClient *RancherBaseClientImpl) Post(url string, createObj interface{}, respObject interface{}) error

func (*RancherBaseClientImpl) Reload

func (rancherClient *RancherBaseClientImpl) Reload(existing *Resource, output interface{}) error

func (*RancherBaseClientImpl) Update

func (rancherClient *RancherBaseClientImpl) Update(schemaType string, existing *Resource, updates interface{}, respObject interface{}) error

func (*RancherBaseClientImpl) Websocket

func (rancherClient *RancherBaseClientImpl) Websocket(url string, headers map[string][]string) (*websocket.Conn, *http.Response, error)

type RancherClient

type RancherClient struct {
	RancherBaseClient

	ApiVersion      ApiVersionOperations
	Question        QuestionOperations
	Output          OutputOperations
	Template        TemplateOperations
	TemplateVersion TemplateVersionOperations
	Catalog         CatalogOperations
	Error           ErrorOperations
}

func NewRancherClient

func NewRancherClient(opts *ClientOpts) (*RancherClient, error)

type Resource

type Resource struct {
	Id      string            `json:"id,omitempty"`
	Type    string            `json:"type,omitempty"`
	Links   map[string]string `json:"links"`
	Actions map[string]string `json:"actions"`
}

type ResourceCollection

type ResourceCollection struct {
	Collection
	Data []Resource `json:"data,omitempty"`
}

type Schema

type Schema struct {
	Resource
	PluralName        string            `json:"pluralName,omitempty"`
	ResourceMethods   []string          `json:"resourceMethods,omitempty"`
	ResourceFields    map[string]Field  `json:"resourceFields,omitempty"`
	ResourceActions   map[string]Action `json:"resourceActions,omitempty"`
	CollectionMethods []string          `json:"collectionMethods,omitempty"`
	CollectionFields  map[string]Field  `json:"collectionFields,omitempty"`
	CollectionActions map[string]Action `json:"collectionActions,omitempty"`
	CollectionFilters map[string]Filter `json:"collectionFilters,omitempty"`
	IncludeableLinks  []string          `json:"includeableLinks,omitempty"`
}

func (*Schema) CheckField

func (s *Schema) CheckField(name string) (Field, bool)

func (*Schema) Field

func (s *Schema) Field(name string) Field

type Schemas

type Schemas struct {
	Collection
	Data []Schema `json:"data,omitempty"`
	// contains filtered or unexported fields
}

func (*Schemas) AddType

func (s *Schemas) AddType(schemaName string, obj interface{}) *Schema

func (*Schemas) CheckSchema

func (s *Schemas) CheckSchema(name string) (Schema, bool)

func (*Schemas) Schema

func (s *Schemas) Schema(name string) Schema

type Sort

type Sort struct {
	Name    string `json:"name,omitempty"`
	Order   string `json:"order,omitempty"`
	Reverse string `json:"reverse,omitempty"`
}

type Template

type Template struct {
	Resource

	Actions map[string]interface{} `json:"actions,omitempty" yaml:"actions,omitempty"`

	Bindings map[string]interface{} `json:"bindings,omitempty" yaml:"bindings,omitempty"`

	CatalogId string `json:"catalogId,omitempty" yaml:"catalog_id,omitempty"`

	Category string `json:"category,omitempty" yaml:"category,omitempty"`

	DefaultVersion string `json:"defaultVersion,omitempty" yaml:"default_version,omitempty"`

	Description string `json:"description,omitempty" yaml:"description,omitempty"`

	Files map[string]interface{} `json:"files,omitempty" yaml:"files,omitempty"`

	IsSystem string `json:"isSystem,omitempty" yaml:"is_system,omitempty"`

	Labels map[string]interface{} `json:"labels,omitempty" yaml:"labels,omitempty"`

	License string `json:"license,omitempty" yaml:"license,omitempty"`

	Links map[string]interface{} `json:"links,omitempty" yaml:"links,omitempty"`

	Maintainer string `json:"maintainer,omitempty" yaml:"maintainer,omitempty"`

	MaximumRancherVersion string `json:"maximumRancherVersion,omitempty" yaml:"maximum_rancher_version,omitempty"`

	MinimumRancherVersion string `json:"minimumRancherVersion,omitempty" yaml:"minimum_rancher_version,omitempty"`

	Name string `json:"name,omitempty" yaml:"name,omitempty"`

	Output Output `json:"output,omitempty" yaml:"output,omitempty"`

	Path string `json:"path,omitempty" yaml:"path,omitempty"`

	TemplateBase string `json:"templateBase,omitempty" yaml:"template_base,omitempty"`

	TemplateVersionRancherVersion map[string]interface{} `json:"templateVersionRancherVersion,omitempty" yaml:"template_version_rancher_version,omitempty"`

	TemplateVersionRancherVersionGte map[string]interface{} `json:"templateVersionRancherVersionGte,omitempty" yaml:"template_version_rancher_version_gte,omitempty"`

	Type string `json:"type,omitempty" yaml:"type,omitempty"`

	UpgradeFrom string `json:"upgradeFrom,omitempty" yaml:"upgrade_from,omitempty"`

	UpgradeVersionLinks map[string]interface{} `json:"upgradeVersionLinks,omitempty" yaml:"upgrade_version_links,omitempty"`

	VersionLinks map[string]interface{} `json:"versionLinks,omitempty" yaml:"version_links,omitempty"`
}

type TemplateClient

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

func (*TemplateClient) ById

func (c *TemplateClient) ById(id string) (*Template, error)

func (*TemplateClient) Create

func (c *TemplateClient) Create(container *Template) (*Template, error)

func (*TemplateClient) Delete

func (c *TemplateClient) Delete(container *Template) error

func (*TemplateClient) List

func (c *TemplateClient) List(opts *ListOpts) (*TemplateCollection, error)

func (*TemplateClient) Update

func (c *TemplateClient) Update(existing *Template, updates interface{}) (*Template, error)

type TemplateCollection

type TemplateCollection struct {
	Collection
	Data []Template `json:"data,omitempty"`
	// contains filtered or unexported fields
}

func (*TemplateCollection) Next

type TemplateOperations

type TemplateOperations interface {
	List(opts *ListOpts) (*TemplateCollection, error)
	Create(opts *Template) (*Template, error)
	Update(existing *Template, updates interface{}) (*Template, error)
	ById(id string) (*Template, error)
	Delete(container *Template) error
}

type TemplateVersion

type TemplateVersion struct {
	Resource

	Actions map[string]interface{} `json:"actions,omitempty" yaml:"actions,omitempty"`

	Bindings map[string]interface{} `json:"bindings,omitempty" yaml:"bindings,omitempty"`

	CatalogId string `json:"catalogId,omitempty" yaml:"catalog_id,omitempty"`

	Category string `json:"category,omitempty" yaml:"category,omitempty"`

	DefaultVersion string `json:"defaultVersion,omitempty" yaml:"default_version,omitempty"`

	Description string `json:"description,omitempty" yaml:"description,omitempty"`

	Files map[string]interface{} `json:"files,omitempty" yaml:"files,omitempty"`

	IconLink string `json:"iconLink,omitempty" yaml:"icon_link,omitempty"`

	IsSystem string `json:"isSystem,omitempty" yaml:"is_system,omitempty"`

	Labels map[string]interface{} `json:"labels,omitempty" yaml:"labels,omitempty"`

	License string `json:"license,omitempty" yaml:"license,omitempty"`

	Links map[string]interface{} `json:"links,omitempty" yaml:"links,omitempty"`

	Maintainer string `json:"maintainer,omitempty" yaml:"maintainer,omitempty"`

	MaximumRancherVersion string `json:"maximumRancherVersion,omitempty" yaml:"maximum_rancher_version,omitempty"`

	MinimumRancherVersion string `json:"minimumRancherVersion,omitempty" yaml:"minimum_rancher_version,omitempty"`

	Name string `json:"name,omitempty" yaml:"name,omitempty"`

	Output Output `json:"output,omitempty" yaml:"output,omitempty"`

	Path string `json:"path,omitempty" yaml:"path,omitempty"`

	ProjectURL string `json:"projectURL,omitempty" yaml:"project_url,omitempty"`

	Questions []Question `json:"questions,omitempty" yaml:"questions,omitempty"`

	ReadmeLink string `json:"readmeLink,omitempty" yaml:"readme_link,omitempty"`

	TemplateBase string `json:"templateBase,omitempty" yaml:"template_base,omitempty"`

	TemplateVersionRancherVersion map[string]interface{} `json:"templateVersionRancherVersion,omitempty" yaml:"template_version_rancher_version,omitempty"`

	TemplateVersionRancherVersionGte map[string]interface{} `json:"templateVersionRancherVersionGte,omitempty" yaml:"template_version_rancher_version_gte,omitempty"`

	Type string `json:"type,omitempty" yaml:"type,omitempty"`

	UpgradeFrom string `json:"upgradeFrom,omitempty" yaml:"upgrade_from,omitempty"`

	UpgradeVersionLinks map[string]interface{} `json:"upgradeVersionLinks,omitempty" yaml:"upgrade_version_links,omitempty"`

	Version string `json:"version,omitempty" yaml:"version,omitempty"`

	VersionLinks map[string]interface{} `json:"versionLinks,omitempty" yaml:"version_links,omitempty"`
}

type TemplateVersionClient

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

func (*TemplateVersionClient) ById

func (*TemplateVersionClient) Create

func (c *TemplateVersionClient) Create(container *TemplateVersion) (*TemplateVersion, error)

func (*TemplateVersionClient) Delete

func (c *TemplateVersionClient) Delete(container *TemplateVersion) error

func (*TemplateVersionClient) List

func (*TemplateVersionClient) Update

func (c *TemplateVersionClient) Update(existing *TemplateVersion, updates interface{}) (*TemplateVersion, error)

type TemplateVersionCollection

type TemplateVersionCollection struct {
	Collection
	Data []TemplateVersion `json:"data,omitempty"`
	// contains filtered or unexported fields
}

func (*TemplateVersionCollection) Next

type TemplateVersionOperations

type TemplateVersionOperations interface {
	List(opts *ListOpts) (*TemplateVersionCollection, error)
	Create(opts *TemplateVersion) (*TemplateVersion, error)
	Update(existing *TemplateVersion, updates interface{}) (*TemplateVersion, error)
	ById(id string) (*TemplateVersion, error)
	Delete(container *TemplateVersion) error
}

Jump to

Keyboard shortcuts

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