galleryimageversions

package
v0.20240110.1151535 Latest Latest
Warning

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

Go to latest
Published: Jan 10, 2024 License: MPL-2.0 Imports: 13 Imported by: 1

README

github.com/hashicorp/go-azure-sdk/resource-manager/compute/2022-03-03/galleryimageversions Documentation

The galleryimageversions SDK allows for interaction with the Azure Resource Manager Service compute (API Version 2022-03-03).

This readme covers example usages, but further information on using this SDK can be found in the project root.

Import Path

import "github.com/hashicorp/go-azure-sdk/resource-manager/compute/2022-03-03/galleryimageversions"

Client Initialization

client := galleryimageversions.NewGalleryImageVersionsClientWithBaseURI("https://management.azure.com")
client.Client.Authorizer = authorizer

Example Usage: GalleryImageVersionsClient.CreateOrUpdate

ctx := context.TODO()
id := galleryimageversions.NewImageVersionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "galleryValue", "imageValue", "versionValue")

payload := galleryimageversions.GalleryImageVersion{
	// ...
}


if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil {
	// handle the error
}

Example Usage: GalleryImageVersionsClient.Delete

ctx := context.TODO()
id := galleryimageversions.NewImageVersionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "galleryValue", "imageValue", "versionValue")

if err := client.DeleteThenPoll(ctx, id); err != nil {
	// handle the error
}

Example Usage: GalleryImageVersionsClient.Get

ctx := context.TODO()
id := galleryimageversions.NewImageVersionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "galleryValue", "imageValue", "versionValue")

read, err := client.Get(ctx, id, galleryimageversions.DefaultGetOperationOptions())
if err != nil {
	// handle the error
}
if model := read.Model; model != nil {
	// do something with the model/response object
}

Example Usage: GalleryImageVersionsClient.ListByGalleryImage

ctx := context.TODO()
id := galleryimageversions.NewGalleryImageID("12345678-1234-9876-4563-123456789012", "example-resource-group", "galleryValue", "imageValue")

// alternatively `client.ListByGalleryImage(ctx, id)` can be used to do batched pagination
items, err := client.ListByGalleryImageComplete(ctx, id)
if err != nil {
	// handle the error
}
for _, item := range items {
	// do something
}

Example Usage: GalleryImageVersionsClient.Update

ctx := context.TODO()
id := galleryimageversions.NewImageVersionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "galleryValue", "imageValue", "versionValue")

payload := galleryimageversions.GalleryImageVersionUpdate{
	// ...
}


if err := client.UpdateThenPoll(ctx, id, payload); err != nil {
	// handle the error
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func PossibleValuesForAggregatedReplicationState

func PossibleValuesForAggregatedReplicationState() []string

func PossibleValuesForConfidentialVMEncryptionType

func PossibleValuesForConfidentialVMEncryptionType() []string

func PossibleValuesForEdgeZoneStorageAccountType

func PossibleValuesForEdgeZoneStorageAccountType() []string

func PossibleValuesForGalleryExtendedLocationType

func PossibleValuesForGalleryExtendedLocationType() []string

func PossibleValuesForGalleryProvisioningState

func PossibleValuesForGalleryProvisioningState() []string

func PossibleValuesForHostCaching

func PossibleValuesForHostCaching() []string

func PossibleValuesForPolicyViolationCategory

func PossibleValuesForPolicyViolationCategory() []string

func PossibleValuesForReplicationMode

func PossibleValuesForReplicationMode() []string

func PossibleValuesForReplicationState

func PossibleValuesForReplicationState() []string

func PossibleValuesForReplicationStatusTypes

func PossibleValuesForReplicationStatusTypes() []string

func PossibleValuesForStorageAccountType

func PossibleValuesForStorageAccountType() []string

func ValidateGalleryImageID added in v0.20230523.1140858

func ValidateGalleryImageID(input interface{}, key string) (warnings []string, errors []error)

ValidateGalleryImageID checks that 'input' can be parsed as a Gallery Image ID

func ValidateImageVersionID added in v0.20230523.1140858

func ValidateImageVersionID(input interface{}, key string) (warnings []string, errors []error)

ValidateImageVersionID checks that 'input' can be parsed as a Image Version ID

Types

type AggregatedReplicationState

type AggregatedReplicationState string
const (
	AggregatedReplicationStateCompleted  AggregatedReplicationState = "Completed"
	AggregatedReplicationStateFailed     AggregatedReplicationState = "Failed"
	AggregatedReplicationStateInProgress AggregatedReplicationState = "InProgress"
	AggregatedReplicationStateUnknown    AggregatedReplicationState = "Unknown"
)

func (*AggregatedReplicationState) UnmarshalJSON added in v0.20230808.1103829

func (s *AggregatedReplicationState) UnmarshalJSON(bytes []byte) error

type ConfidentialVMEncryptionType

type ConfidentialVMEncryptionType string
const (
	ConfidentialVMEncryptionTypeEncryptedVMGuestStateOnlyWithPmk ConfidentialVMEncryptionType = "EncryptedVMGuestStateOnlyWithPmk"
	ConfidentialVMEncryptionTypeEncryptedWithCmk                 ConfidentialVMEncryptionType = "EncryptedWithCmk"
	ConfidentialVMEncryptionTypeEncryptedWithPmk                 ConfidentialVMEncryptionType = "EncryptedWithPmk"
)

func (*ConfidentialVMEncryptionType) UnmarshalJSON added in v0.20230808.1103829

func (s *ConfidentialVMEncryptionType) UnmarshalJSON(bytes []byte) error

type CreateOrUpdateOperationResponse

type CreateOrUpdateOperationResponse struct {
	Poller       pollers.Poller
	HttpResponse *http.Response
	OData        *odata.OData
}

type DataDiskImageEncryption

type DataDiskImageEncryption struct {
	DiskEncryptionSetId *string `json:"diskEncryptionSetId,omitempty"`
	Lun                 int64   `json:"lun"`
}

type DeleteOperationResponse

type DeleteOperationResponse struct {
	Poller       pollers.Poller
	HttpResponse *http.Response
	OData        *odata.OData
}

type EdgeZoneStorageAccountType

type EdgeZoneStorageAccountType string
const (
	EdgeZoneStorageAccountTypePremiumLRS     EdgeZoneStorageAccountType = "Premium_LRS"
	EdgeZoneStorageAccountTypeStandardLRS    EdgeZoneStorageAccountType = "Standard_LRS"
	EdgeZoneStorageAccountTypeStandardSSDLRS EdgeZoneStorageAccountType = "StandardSSD_LRS"
	EdgeZoneStorageAccountTypeStandardZRS    EdgeZoneStorageAccountType = "Standard_ZRS"
)

func (*EdgeZoneStorageAccountType) UnmarshalJSON added in v0.20230808.1103829

func (s *EdgeZoneStorageAccountType) UnmarshalJSON(bytes []byte) error

type EncryptionImages

type EncryptionImages struct {
	DataDiskImages *[]DataDiskImageEncryption `json:"dataDiskImages,omitempty"`
	OsDiskImage    *OSDiskImageEncryption     `json:"osDiskImage,omitempty"`
}

type GalleryArtifactPublishingProfileBase

type GalleryArtifactPublishingProfileBase struct {
	EndOfLifeDate           *string                          `json:"endOfLifeDate,omitempty"`
	ExcludeFromLatest       *bool                            `json:"excludeFromLatest,omitempty"`
	PublishedDate           *string                          `json:"publishedDate,omitempty"`
	ReplicaCount            *int64                           `json:"replicaCount,omitempty"`
	ReplicationMode         *ReplicationMode                 `json:"replicationMode,omitempty"`
	StorageAccountType      *StorageAccountType              `json:"storageAccountType,omitempty"`
	TargetExtendedLocations *[]GalleryTargetExtendedLocation `json:"targetExtendedLocations,omitempty"`
	TargetRegions           *[]TargetRegion                  `json:"targetRegions,omitempty"`
}

func (*GalleryArtifactPublishingProfileBase) GetEndOfLifeDateAsTime

func (o *GalleryArtifactPublishingProfileBase) GetEndOfLifeDateAsTime() (*time.Time, error)

func (*GalleryArtifactPublishingProfileBase) GetPublishedDateAsTime

func (o *GalleryArtifactPublishingProfileBase) GetPublishedDateAsTime() (*time.Time, error)

func (*GalleryArtifactPublishingProfileBase) SetEndOfLifeDateAsTime

func (o *GalleryArtifactPublishingProfileBase) SetEndOfLifeDateAsTime(input time.Time)

func (*GalleryArtifactPublishingProfileBase) SetPublishedDateAsTime

func (o *GalleryArtifactPublishingProfileBase) SetPublishedDateAsTime(input time.Time)

type GalleryArtifactVersionFullSource

type GalleryArtifactVersionFullSource struct {
	CommunityGalleryImageId *string `json:"communityGalleryImageId,omitempty"`
	Id                      *string `json:"id,omitempty"`
}

type GalleryDataDiskImage

type GalleryDataDiskImage struct {
	HostCaching *HostCaching            `json:"hostCaching,omitempty"`
	Lun         int64                   `json:"lun"`
	SizeInGB    *int64                  `json:"sizeInGB,omitempty"`
	Source      *GalleryDiskImageSource `json:"source,omitempty"`
}

type GalleryDiskImage

type GalleryDiskImage struct {
	HostCaching *HostCaching            `json:"hostCaching,omitempty"`
	SizeInGB    *int64                  `json:"sizeInGB,omitempty"`
	Source      *GalleryDiskImageSource `json:"source,omitempty"`
}

type GalleryDiskImageSource

type GalleryDiskImageSource struct {
	Id               *string `json:"id,omitempty"`
	StorageAccountId *string `json:"storageAccountId,omitempty"`
	Uri              *string `json:"uri,omitempty"`
}

type GalleryExtendedLocation

type GalleryExtendedLocation struct {
	Name *string                      `json:"name,omitempty"`
	Type *GalleryExtendedLocationType `json:"type,omitempty"`
}

type GalleryExtendedLocationType

type GalleryExtendedLocationType string
const (
	GalleryExtendedLocationTypeEdgeZone GalleryExtendedLocationType = "EdgeZone"
	GalleryExtendedLocationTypeUnknown  GalleryExtendedLocationType = "Unknown"
)

func (*GalleryExtendedLocationType) UnmarshalJSON added in v0.20230808.1103829

func (s *GalleryExtendedLocationType) UnmarshalJSON(bytes []byte) error

type GalleryImageId added in v0.20230523.1140858

type GalleryImageId struct {
	SubscriptionId    string
	ResourceGroupName string
	GalleryName       string
	ImageName         string
}

GalleryImageId is a struct representing the Resource ID for a Gallery Image

func NewGalleryImageID added in v0.20230523.1140858

func NewGalleryImageID(subscriptionId string, resourceGroupName string, galleryName string, imageName string) GalleryImageId

NewGalleryImageID returns a new GalleryImageId struct

func ParseGalleryImageID added in v0.20230523.1140858

func ParseGalleryImageID(input string) (*GalleryImageId, error)

ParseGalleryImageID parses 'input' into a GalleryImageId

func ParseGalleryImageIDInsensitively added in v0.20230523.1140858

func ParseGalleryImageIDInsensitively(input string) (*GalleryImageId, error)

ParseGalleryImageIDInsensitively parses 'input' case-insensitively into a GalleryImageId note: this method should only be used for API response data and not user input

func (*GalleryImageId) FromParseResult added in v0.20231127.1171502

func (id *GalleryImageId) FromParseResult(input resourceids.ParseResult) error

func (GalleryImageId) ID added in v0.20230523.1140858

func (id GalleryImageId) ID() string

ID returns the formatted Gallery Image ID

func (GalleryImageId) Segments added in v0.20230523.1140858

func (id GalleryImageId) Segments() []resourceids.Segment

Segments returns a slice of Resource ID Segments which comprise this Gallery Image ID

func (GalleryImageId) String added in v0.20230523.1140858

func (id GalleryImageId) String() string

String returns a human-readable description of this Gallery Image ID

type GalleryImageVersion

type GalleryImageVersion struct {
	Id         *string                        `json:"id,omitempty"`
	Location   string                         `json:"location"`
	Name       *string                        `json:"name,omitempty"`
	Properties *GalleryImageVersionProperties `json:"properties,omitempty"`
	Tags       *map[string]string             `json:"tags,omitempty"`
	Type       *string                        `json:"type,omitempty"`
}

type GalleryImageVersionOperationPredicate

type GalleryImageVersionOperationPredicate struct {
	Id       *string
	Location *string
	Name     *string
	Type     *string
}

func (GalleryImageVersionOperationPredicate) Matches

type GalleryImageVersionProperties

type GalleryImageVersionProperties struct {
	ProvisioningState *GalleryProvisioningState             `json:"provisioningState,omitempty"`
	PublishingProfile *GalleryArtifactPublishingProfileBase `json:"publishingProfile,omitempty"`
	ReplicationStatus *ReplicationStatus                    `json:"replicationStatus,omitempty"`
	SafetyProfile     *GalleryImageVersionSafetyProfile     `json:"safetyProfile,omitempty"`
	StorageProfile    GalleryImageVersionStorageProfile     `json:"storageProfile"`
}

type GalleryImageVersionSafetyProfile

type GalleryImageVersionSafetyProfile struct {
	AllowDeletionOfReplicatedLocations *bool              `json:"allowDeletionOfReplicatedLocations,omitempty"`
	PolicyViolations                   *[]PolicyViolation `json:"policyViolations,omitempty"`
	ReportedForPolicyViolation         *bool              `json:"reportedForPolicyViolation,omitempty"`
}

type GalleryImageVersionStorageProfile

type GalleryImageVersionStorageProfile struct {
	DataDiskImages *[]GalleryDataDiskImage           `json:"dataDiskImages,omitempty"`
	OsDiskImage    *GalleryDiskImage                 `json:"osDiskImage,omitempty"`
	Source         *GalleryArtifactVersionFullSource `json:"source,omitempty"`
}

type GalleryImageVersionUpdate

type GalleryImageVersionUpdate struct {
	Id         *string                        `json:"id,omitempty"`
	Name       *string                        `json:"name,omitempty"`
	Properties *GalleryImageVersionProperties `json:"properties,omitempty"`
	Tags       *map[string]string             `json:"tags,omitempty"`
	Type       *string                        `json:"type,omitempty"`
}

type GalleryImageVersionsClient

type GalleryImageVersionsClient struct {
	Client *resourcemanager.Client
}

func NewGalleryImageVersionsClientWithBaseURI

func NewGalleryImageVersionsClientWithBaseURI(sdkApi sdkEnv.Api) (*GalleryImageVersionsClient, error)

func (GalleryImageVersionsClient) CreateOrUpdate

CreateOrUpdate ...

func (GalleryImageVersionsClient) CreateOrUpdateThenPoll

func (c GalleryImageVersionsClient) CreateOrUpdateThenPoll(ctx context.Context, id ImageVersionId, input GalleryImageVersion) error

CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed

func (GalleryImageVersionsClient) Delete

Delete ...

func (GalleryImageVersionsClient) DeleteThenPoll

DeleteThenPoll performs Delete then polls until it's completed

func (GalleryImageVersionsClient) Get

Get ...

func (GalleryImageVersionsClient) ListByGalleryImage

ListByGalleryImage ...

func (GalleryImageVersionsClient) ListByGalleryImageComplete

ListByGalleryImageComplete retrieves all the results into a single object

func (GalleryImageVersionsClient) ListByGalleryImageCompleteMatchingPredicate

func (c GalleryImageVersionsClient) ListByGalleryImageCompleteMatchingPredicate(ctx context.Context, id GalleryImageId, predicate GalleryImageVersionOperationPredicate) (result ListByGalleryImageCompleteResult, err error)

ListByGalleryImageCompleteMatchingPredicate retrieves all the results and then applies the predicate

func (GalleryImageVersionsClient) Update

Update ...

func (GalleryImageVersionsClient) UpdateThenPoll

UpdateThenPoll performs Update then polls until it's completed

type GalleryProvisioningState

type GalleryProvisioningState string
const (
	GalleryProvisioningStateCreating  GalleryProvisioningState = "Creating"
	GalleryProvisioningStateDeleting  GalleryProvisioningState = "Deleting"
	GalleryProvisioningStateFailed    GalleryProvisioningState = "Failed"
	GalleryProvisioningStateMigrating GalleryProvisioningState = "Migrating"
	GalleryProvisioningStateSucceeded GalleryProvisioningState = "Succeeded"
	GalleryProvisioningStateUpdating  GalleryProvisioningState = "Updating"
)

func (*GalleryProvisioningState) UnmarshalJSON added in v0.20230808.1103829

func (s *GalleryProvisioningState) UnmarshalJSON(bytes []byte) error

type GalleryTargetExtendedLocation

type GalleryTargetExtendedLocation struct {
	Encryption                   *EncryptionImages           `json:"encryption,omitempty"`
	ExtendedLocation             *GalleryExtendedLocation    `json:"extendedLocation,omitempty"`
	ExtendedLocationReplicaCount *int64                      `json:"extendedLocationReplicaCount,omitempty"`
	Name                         *string                     `json:"name,omitempty"`
	StorageAccountType           *EdgeZoneStorageAccountType `json:"storageAccountType,omitempty"`
}

type GetOperationOptions

type GetOperationOptions struct {
	Expand *ReplicationStatusTypes
}

func DefaultGetOperationOptions

func DefaultGetOperationOptions() GetOperationOptions

func (GetOperationOptions) ToHeaders added in v0.20230808.1103829

func (o GetOperationOptions) ToHeaders() *client.Headers

func (GetOperationOptions) ToOData added in v0.20230808.1103829

func (o GetOperationOptions) ToOData() *odata.Query

func (GetOperationOptions) ToQuery added in v0.20230808.1103829

func (o GetOperationOptions) ToQuery() *client.QueryParams

type GetOperationResponse

type GetOperationResponse struct {
	HttpResponse *http.Response
	OData        *odata.OData
	Model        *GalleryImageVersion
}

type HostCaching

type HostCaching string
const (
	HostCachingNone      HostCaching = "None"
	HostCachingReadOnly  HostCaching = "ReadOnly"
	HostCachingReadWrite HostCaching = "ReadWrite"
)

func (*HostCaching) UnmarshalJSON added in v0.20230808.1103829

func (s *HostCaching) UnmarshalJSON(bytes []byte) error

type ImageVersionId added in v0.20230523.1140858

type ImageVersionId struct {
	SubscriptionId    string
	ResourceGroupName string
	GalleryName       string
	ImageName         string
	VersionName       string
}

ImageVersionId is a struct representing the Resource ID for a Image Version

func NewImageVersionID added in v0.20230523.1140858

func NewImageVersionID(subscriptionId string, resourceGroupName string, galleryName string, imageName string, versionName string) ImageVersionId

NewImageVersionID returns a new ImageVersionId struct

func ParseImageVersionID added in v0.20230523.1140858

func ParseImageVersionID(input string) (*ImageVersionId, error)

ParseImageVersionID parses 'input' into a ImageVersionId

func ParseImageVersionIDInsensitively added in v0.20230523.1140858

func ParseImageVersionIDInsensitively(input string) (*ImageVersionId, error)

ParseImageVersionIDInsensitively parses 'input' case-insensitively into a ImageVersionId note: this method should only be used for API response data and not user input

func (*ImageVersionId) FromParseResult added in v0.20231127.1171502

func (id *ImageVersionId) FromParseResult(input resourceids.ParseResult) error

func (ImageVersionId) ID added in v0.20230523.1140858

func (id ImageVersionId) ID() string

ID returns the formatted Image Version ID

func (ImageVersionId) Segments added in v0.20230523.1140858

func (id ImageVersionId) Segments() []resourceids.Segment

Segments returns a slice of Resource ID Segments which comprise this Image Version ID

func (ImageVersionId) String added in v0.20230523.1140858

func (id ImageVersionId) String() string

String returns a human-readable description of this Image Version ID

type ListByGalleryImageCompleteResult

type ListByGalleryImageCompleteResult struct {
	LatestHttpResponse *http.Response
	Items              []GalleryImageVersion
}

type ListByGalleryImageOperationResponse

type ListByGalleryImageOperationResponse struct {
	HttpResponse *http.Response
	OData        *odata.OData
	Model        *[]GalleryImageVersion
}

type OSDiskImageEncryption

type OSDiskImageEncryption struct {
	DiskEncryptionSetId *string                     `json:"diskEncryptionSetId,omitempty"`
	SecurityProfile     *OSDiskImageSecurityProfile `json:"securityProfile,omitempty"`
}

type OSDiskImageSecurityProfile

type OSDiskImageSecurityProfile struct {
	ConfidentialVMEncryptionType *ConfidentialVMEncryptionType `json:"confidentialVMEncryptionType,omitempty"`
	SecureVMDiskEncryptionSetId  *string                       `json:"secureVMDiskEncryptionSetId,omitempty"`
}

type PolicyViolation

type PolicyViolation struct {
	Category *PolicyViolationCategory `json:"category,omitempty"`
	Details  *string                  `json:"details,omitempty"`
}

type PolicyViolationCategory

type PolicyViolationCategory string
const (
	PolicyViolationCategoryCopyrightValidation PolicyViolationCategory = "CopyrightValidation"
	PolicyViolationCategoryIPTheft             PolicyViolationCategory = "IpTheft"
	PolicyViolationCategoryImageFlaggedUnsafe  PolicyViolationCategory = "ImageFlaggedUnsafe"
	PolicyViolationCategoryOther               PolicyViolationCategory = "Other"
)

func (*PolicyViolationCategory) UnmarshalJSON added in v0.20230808.1103829

func (s *PolicyViolationCategory) UnmarshalJSON(bytes []byte) error

type RegionalReplicationStatus

type RegionalReplicationStatus struct {
	Details  *string           `json:"details,omitempty"`
	Progress *int64            `json:"progress,omitempty"`
	Region   *string           `json:"region,omitempty"`
	State    *ReplicationState `json:"state,omitempty"`
}

type ReplicationMode

type ReplicationMode string
const (
	ReplicationModeFull    ReplicationMode = "Full"
	ReplicationModeShallow ReplicationMode = "Shallow"
)

func (*ReplicationMode) UnmarshalJSON added in v0.20230808.1103829

func (s *ReplicationMode) UnmarshalJSON(bytes []byte) error

type ReplicationState

type ReplicationState string
const (
	ReplicationStateCompleted   ReplicationState = "Completed"
	ReplicationStateFailed      ReplicationState = "Failed"
	ReplicationStateReplicating ReplicationState = "Replicating"
	ReplicationStateUnknown     ReplicationState = "Unknown"
)

func (*ReplicationState) UnmarshalJSON added in v0.20230808.1103829

func (s *ReplicationState) UnmarshalJSON(bytes []byte) error

type ReplicationStatus

type ReplicationStatus struct {
	AggregatedState *AggregatedReplicationState  `json:"aggregatedState,omitempty"`
	Summary         *[]RegionalReplicationStatus `json:"summary,omitempty"`
}

type ReplicationStatusTypes

type ReplicationStatusTypes string
const (
	ReplicationStatusTypesReplicationStatus ReplicationStatusTypes = "ReplicationStatus"
)

func (*ReplicationStatusTypes) UnmarshalJSON added in v0.20230808.1103829

func (s *ReplicationStatusTypes) UnmarshalJSON(bytes []byte) error

type StorageAccountType

type StorageAccountType string
const (
	StorageAccountTypePremiumLRS  StorageAccountType = "Premium_LRS"
	StorageAccountTypeStandardLRS StorageAccountType = "Standard_LRS"
	StorageAccountTypeStandardZRS StorageAccountType = "Standard_ZRS"
)

func (*StorageAccountType) UnmarshalJSON added in v0.20230808.1103829

func (s *StorageAccountType) UnmarshalJSON(bytes []byte) error

type TargetRegion

type TargetRegion struct {
	Encryption           *EncryptionImages   `json:"encryption,omitempty"`
	ExcludeFromLatest    *bool               `json:"excludeFromLatest,omitempty"`
	Name                 string              `json:"name"`
	RegionalReplicaCount *int64              `json:"regionalReplicaCount,omitempty"`
	StorageAccountType   *StorageAccountType `json:"storageAccountType,omitempty"`
}

type UpdateOperationResponse

type UpdateOperationResponse struct {
	Poller       pollers.Poller
	HttpResponse *http.Response
	OData        *odata.OData
}

Jump to

Keyboard shortcuts

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