compute

package
v0.19.0 Latest Latest
Warning

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

Go to latest
Published: May 4, 2026 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BootDiskSourcePublicImage  = "publicImage"
	BootDiskSourceCustomImage  = "customImage"
	BootDiskSourceSnapshot     = "snapshot"
	BootDiskSourceExistingDisk = "existingDisk"
)
View Source
const (
	AdditionalDiskModeNew      = "newDisk"
	AdditionalDiskModeExisting = "existingDisk"
)
View Source
const (
	DefaultDiskType   = "pd-balanced"
	DefaultDiskSizeGb = 10
)
View Source
const (
	ConfidentialInstanceTypeSEV    = "SEV"     // AMD Secure Encrypted Virtualization
	ConfidentialInstanceTypeSEVSNP = "SEV_SNP" // AMD SEV - Secure Nested Paging
	ConfidentialInstanceTypeTDX    = "TDX"     // Intel Trust Domain eXtension
)
View Source
const (
	NICTypeGVNIC     = "GVNIC"
	NICTypeVirtioNet = "VIRTIO_NET"
)
View Source
const (
	StackTypeIPv4Only  = "IPV4_ONLY"
	StackTypeDualStack = "IPV4_IPV6"
)
View Source
const (
	ExternalIPNone      = "none"
	ExternalIPEphemeral = "ephemeral"
	ExternalIPStatic    = "static"
)
View Source
const (
	InternalIPEphemeral = "ephemeral"
	InternalIPStatic    = "static"
)
View Source
const (
	OnHostMaintenanceMigrate   = "MIGRATE"
	OnHostMaintenanceTerminate = "TERMINATE"
)
View Source
const (
	NodeAffinityOperatorIn    = "IN"
	NodeAffinityOperatorNotIn = "NOT_IN"
)
View Source
const (
	ResourceTypeRegion        = "region"
	ResourceTypeZone          = "zone"
	ResourceTypeMachineFamily = "machineFamily"
	ResourceTypeMachineType   = "machineType"
)
View Source
const (
	ResourceTypePublicImages      = "publicImages"
	ResourceTypeCustomImages      = "customImages"
	ResourceTypeSnapshots         = "snapshots"
	ResourceTypeDisks             = "disks"
	ResourceTypeDiskTypes         = "diskTypes"
	ResourceTypeSnapshotSchedules = "snapshotSchedules"
)
View Source
const (
	ResourceTypeNetwork    = "network"
	ResourceTypeSubnetwork = "subnetwork"
	ResourceTypeAddress    = "address"
	ResourceTypeFirewall   = "firewall"
)
View Source
const (
	EmittedEventType = "gcp.compute.vmInstance"

	// SinkFilter is the Cloud Logging advanced log filter for VM instance
	// creation audit events. Used when creating the per-trigger logging sink.
	SinkFilter = `` /* 222-byte string literal not displayed */
)
View Source
const AddressTypeExternal = "EXTERNAL"

Variables

This section is empty.

Functions

func ApplyAdvancedScheduling

func ApplyAdvancedScheduling(s *compute.Scheduling, config AdvancedConfig)

func BuildAdditionalDisks

func BuildAdditionalDisks(project, zone string, disks []AdditionalDisk) []*compute.AttachedDisk

func BuildBootDisk

func BuildBootDisk(project, zone string, config BootDiskConfig) *compute.AttachedDisk

func BuildConfidentialInstanceConfig

func BuildConfidentialInstanceConfig(config SecurityConfig) *compute.ConfidentialInstanceConfig

func BuildGuestAccelerators

func BuildGuestAccelerators(config AdvancedConfig) []*compute.AcceleratorConfig

func BuildInstanceFromConfig

func BuildInstanceFromConfig(project, zone, region string, config CreateVMConfig) (*compute.Instance, error)

func BuildInstanceMetadata

func BuildInstanceMetadata(config ManagementConfig) *compute.Metadata

func BuildInstanceResourcePolicies

func BuildInstanceResourcePolicies(config AdvancedConfig) []string

func BuildInstanceTags

func BuildInstanceTags(networkTags string, firewallTags []string) []string

func BuildLabels

func BuildLabels(config AdvancedConfig) map[string]string

func BuildLocalSSDDisks

func BuildLocalSSDDisks(project, zone string, count int) []*compute.AttachedDisk

func BuildNetworkInterfaces

func BuildNetworkInterfaces(project, region string, config NetworkingConfig) []*compute.NetworkInterface

func BuildNodeAffinities

func BuildNodeAffinities(config AdvancedConfig) []*compute.SchedulingNodeAffinity

func BuildScheduling

func BuildScheduling(config ManagementConfig) *compute.Scheduling

func BuildShieldedInstanceConfig

func BuildShieldedInstanceConfig(config SecurityConfig) *compute.ShieldedInstanceConfig

func CreateFirewallRule

func CreateFirewallRule(ctx context.Context, c Client, project, network string, rule CreateFirewallRuleEntry) error

CreateFirewallRule creates a single firewall rule in the project. If the rule already exists (409), it is treated as success.

func CreateVMAndWait

func CreateVMAndWait(ctx context.Context, client Client, config CreateVMConfig) (map[string]any, error)

func DeriveFamily

func DeriveFamily(machineType string) string

func EnsureFirewallRules

func EnsureFirewallRules(ctx context.Context, c Client, project, network string, rules []CreateFirewallRuleEntry) ([]string, error)

EnsureFirewallRules creates each rule and returns the list of target tags to apply to the instance.

func FormatMachineTypeSummary

func FormatMachineTypeSummary(mt *MachineType) string

func GetInstance

func GetInstance(ctx context.Context, client Client, project, zone, name string) ([]byte, error)

func InsertInstance

func InsertInstance(ctx context.Context, client Client, project, zone string, instance *compute.Instance) ([]byte, error)

func InstancePayloadFromGetResponse

func InstancePayloadFromGetResponse(body []byte, zone string) (map[string]any, error)

func ListAddressResources

func ListAddressResources(ctx context.Context, c Client, project, region string) ([]core.IntegrationResource, error)

func ListCustomImageResources

func ListCustomImageResources(ctx context.Context, c Client, project string) ([]core.IntegrationResource, error)

func ListDiskResources

func ListDiskResources(ctx context.Context, c Client, project, zone string) ([]core.IntegrationResource, error)

func ListDiskTypeResources

func ListDiskTypeResources(ctx context.Context, c Client, project, zone string, bootDiskOnly bool) ([]core.IntegrationResource, error)

func ListFirewallResources

func ListFirewallResources(ctx context.Context, c Client, project string) ([]core.IntegrationResource, error)

func ListMachineFamilyResources

func ListMachineFamilyResources(ctx context.Context, c Client, zone string) ([]core.IntegrationResource, error)

func ListMachineTypeResources

func ListMachineTypeResources(ctx context.Context, c Client, zone, machineFamily string) ([]core.IntegrationResource, error)

func ListNetworkResources

func ListNetworkResources(ctx context.Context, c Client, project string) ([]core.IntegrationResource, error)

func ListPublicImageResources

func ListPublicImageResources(ctx context.Context, c Client, project string) ([]core.IntegrationResource, error)

func ListRegionResources

func ListRegionResources(ctx context.Context, c Client) ([]core.IntegrationResource, error)

func ListSnapshotResources

func ListSnapshotResources(ctx context.Context, c Client, project string) ([]core.IntegrationResource, error)

func ListSnapshotScheduleResources

func ListSnapshotScheduleResources(ctx context.Context, c Client, project, region string) ([]core.IntegrationResource, error)

func ListSubnetworkResources

func ListSubnetworkResources(ctx context.Context, c Client, project, region string) ([]core.IntegrationResource, error)

func ListZoneResources

func ListZoneResources(ctx context.Context, c Client, region string) ([]core.IntegrationResource, error)

func NormalizeOAuthScopes

func NormalizeOAuthScopes(scopes []string) []string

func ParseNetworkTags

func ParseNetworkTags(s string) []string

func ResolveInternalIPAddress

func ResolveInternalIPAddress(ctx context.Context, c Client, project, region, value string) (string, error)

ResolveInternalIPAddress returns a literal IP for use as networkIP. If value is a literal IP (no slash), it is returned as-is. If value is a full URL or resource path to a reserved address, it is fetched and the address field (literal IP) is returned. Compute Engine networkInterfaces.networkIP accepts only literal IPs.

func SetClientFactory

func SetClientFactory(fn func(ctx core.ExecutionContext) (Client, error))

func WaitForZoneOperation

func WaitForZoneOperation(ctx context.Context, client Client, project, zone, operationName string) error

Types

type AdditionalDisk

type AdditionalDisk struct {
	Name       string
	SizeGb     int64
	DiskType   string
	SourceDisk string
	AutoDelete bool
}

type AdditionalDiskEntry

type AdditionalDiskEntry struct {
	Mode         string `mapstructure:"mode"`
	Name         string `mapstructure:"name"`
	SizeGb       int64  `mapstructure:"sizeGb"`
	DiskType     string `mapstructure:"diskType"`
	ExistingDisk string `mapstructure:"existingDisk"`
	AutoDelete   bool   `mapstructure:"autoDelete"`
}

type Address

type Address struct {
	Name        string `json:"name"`
	Address     string `json:"address"`
	Region      string `json:"region"`
	SelfLink    string `json:"selfLink"`
	Status      string `json:"status"`
	AddressType string `json:"addressType"`
}

func ListAddresses

func ListAddresses(ctx context.Context, c Client, project, region string) ([]Address, error)

type AdvancedConfig

type AdvancedConfig struct {
	GuestAccelerators      []GuestAcceleratorEntry `mapstructure:"guestAccelerators"`
	NodeAffinities         []NodeAffinityEntry     `mapstructure:"nodeAffinities"`
	ResourcePolicies       []string                `mapstructure:"resourcePolicies"`
	MinNodeCpus            int64                   `mapstructure:"minNodeCpus"`
	Labels                 []LabelEntry            `mapstructure:"labels"`
	EnableDisplayDevice    bool                    `mapstructure:"enableDisplayDevice"`
	EnableSerialPortAccess bool                    `mapstructure:"enableSerialPortAccess"`
}

type BootDiskConfig

type BootDiskConfig struct {
	Name              string
	DiskType          string
	SizeGb            int64
	SourceImage       string
	SourceSnapshot    string
	SourceDisk        string
	SnapshotSchedule  string
	AutoDelete        bool
	DiskEncryptionKey string
}

type Client

type Client interface {
	Get(ctx context.Context, path string) ([]byte, error)
	Post(ctx context.Context, path string, body any) ([]byte, error)
	GetURL(ctx context.Context, fullURL string) ([]byte, error)
	ProjectID() string
}

type CreateFirewallRuleEntry

type CreateFirewallRuleEntry struct {
	Name         string `mapstructure:"name"`
	Allowed      string `mapstructure:"allowed"`
	SourceRanges string `mapstructure:"sourceRanges"`
	TargetTag    string `mapstructure:"targetTag"`
}

type CreateVM

type CreateVM struct{}

func (*CreateVM) Cancel

func (c *CreateVM) Cancel(ctx core.ExecutionContext) error

func (*CreateVM) Cleanup

func (c *CreateVM) Cleanup(ctx core.SetupContext) error

func (*CreateVM) Color

func (c *CreateVM) Color() string

func (*CreateVM) Configuration

func (c *CreateVM) Configuration() []configuration.Field

func (*CreateVM) Description

func (c *CreateVM) Description() string

func (*CreateVM) Documentation

func (c *CreateVM) Documentation() string

func (*CreateVM) ExampleOutput

func (c *CreateVM) ExampleOutput() map[string]any

func (*CreateVM) Execute

func (c *CreateVM) Execute(ctx core.ExecutionContext) error

func (*CreateVM) HandleHook added in v0.18.0

func (c *CreateVM) HandleHook(ctx core.ActionHookContext) error

func (*CreateVM) HandleWebhook

func (*CreateVM) Hooks added in v0.18.0

func (c *CreateVM) Hooks() []core.Hook

func (*CreateVM) Icon

func (c *CreateVM) Icon() string

func (*CreateVM) Label

func (c *CreateVM) Label() string

func (*CreateVM) Name

func (c *CreateVM) Name() string

func (*CreateVM) OutputChannels

func (c *CreateVM) OutputChannels(configuration any) []core.OutputChannel

func (*CreateVM) ProcessQueueItem

func (c *CreateVM) ProcessQueueItem(ctx core.ProcessQueueContext) (*uuid.UUID, error)

func (*CreateVM) Setup

func (c *CreateVM) Setup(ctx core.SetupContext) error

type CreateVMConfig

type CreateVMConfig struct {
	InstanceName           string                  `mapstructure:"instanceName"`
	Region                 string                  `mapstructure:"region"`
	Zone                   string                  `mapstructure:"zone"`
	MachineFamily          string                  `mapstructure:"machineFamily"`
	MachineType            string                  `mapstructure:"machineType"`
	ProvisioningModel      string                  `mapstructure:"provisioningModel"`
	AutomaticRestart       *bool                   `mapstructure:"automaticRestart"`
	OnHostMaintenance      string                  `mapstructure:"onHostMaintenance"`
	MetadataItems          []MetadataKeyValue      `mapstructure:"metadataItems"`
	StartupScript          string                  `mapstructure:"startupScript"`
	ShutdownScript         string                  `mapstructure:"shutdownScript"`
	MaintenancePolicy      string                  `mapstructure:"maintenancePolicy"`
	Labels                 []LabelEntry            `mapstructure:"labels"`
	GuestAccelerators      []GuestAcceleratorEntry `mapstructure:"guestAccelerators"`
	MinNodeCpus            int64                   `mapstructure:"minNodeCpus"`
	NodeAffinities         []NodeAffinityEntry     `mapstructure:"nodeAffinities"`
	ResourcePolicies       []string                `mapstructure:"resourcePolicies"`
	EnableDisplayDevice    bool                    `mapstructure:"enableDisplayDevice"`
	EnableSerialPortAccess bool                    `mapstructure:"enableSerialPortAccess"`
	SecurityConfig         `mapstructure:",squash"`
	IdentityConfig         `mapstructure:",squash"`
	NetworkingConfig       `mapstructure:",squash"`
	OSAndStorageConfig     `mapstructure:",squash"`
}

type Disk

type Disk struct {
	Name string `json:"name"`
}

func ListDisks

func ListDisks(ctx context.Context, c Client, project, zone string) ([]Disk, error)

type DiskType

type DiskType struct {
	Name        string `json:"name"`
	Description string `json:"description"`
}

func ListDiskTypes

func ListDiskTypes(ctx context.Context, c Client, project, zone string) ([]DiskType, error)

type Firewall

type Firewall struct {
	Name     string `json:"name"`
	SelfLink string `json:"selfLink"`
	Network  string `json:"network,omitempty"`
}

func ListFirewalls

func ListFirewalls(ctx context.Context, c Client, project string) ([]Firewall, error)

type GuestAcceleratorEntry

type GuestAcceleratorEntry struct {
	AcceleratorType  string `mapstructure:"acceleratorType"`
	AcceleratorCount int64  `mapstructure:"acceleratorCount"`
}

type IdentityConfig

type IdentityConfig struct {
	ServiceAccount      string   `mapstructure:"serviceAccount"`
	OAuthScopes         []string `mapstructure:"oauthScopes"`
	BlockProjectSSHKeys bool     `mapstructure:"blockProjectSSHKeys"`
	EnableOSLogin       bool     `mapstructure:"enableOSLogin"`
}

type Image

type Image struct {
	Name        string `json:"name"`
	Family      string `json:"family"`
	Description string `json:"description"`
	SelfLink    string `json:"selfLink"`
}

func GetImageFromFamily

func GetImageFromFamily(ctx context.Context, c Client, project, family string) (*Image, error)

func ListCustomImages

func ListCustomImages(ctx context.Context, c Client, project string) ([]Image, error)

func ListPublicImages

func ListPublicImages(ctx context.Context, c Client, project string) ([]Image, error)

type LabelEntry

type LabelEntry struct {
	Key   string `mapstructure:"key"`
	Value string `mapstructure:"value"`
}

type MachineFamily

type MachineFamily struct {
	Family string `json:"family"`
}

func ListMachineFamilies

func ListMachineFamilies(ctx context.Context, c Client, zone string) ([]MachineFamily, error)

type MachineType

type MachineType struct {
	Name        string `json:"name"`
	GuestCPUs   int    `json:"guestCpus"`
	MemoryMB    int    `json:"memoryMb"`
	Description string `json:"description"`
	SharedCPU   bool   `json:"isSharedCpu"`
	Family      string `json:"family,omitempty"`
}

func GetMachineType

func GetMachineType(ctx context.Context, c Client, zone, machineType string) (*MachineType, error)

func ListMachineTypes

func ListMachineTypes(ctx context.Context, c Client, zone string) ([]MachineType, error)

type ManagementConfig

type ManagementConfig struct {
	MetadataItems     []MetadataKeyValue `mapstructure:"metadataItems"`
	StartupScript     string             `mapstructure:"startupScript"`
	ShutdownScript    string             `mapstructure:"shutdownScript"`
	AutomaticRestart  *bool              `mapstructure:"automaticRestart"`
	OnHostMaintenance string             `mapstructure:"onHostMaintenance"`
	MaintenancePolicy string             `mapstructure:"maintenancePolicy"`
}

type MetadataKeyValue

type MetadataKeyValue struct {
	Key   string `mapstructure:"key"`
	Value string `mapstructure:"value"`
}

type Network

type Network struct {
	Name     string `json:"name"`
	SelfLink string `json:"selfLink"`
}

func ListNetworks

func ListNetworks(ctx context.Context, c Client, project string) ([]Network, error)

type NetworkingConfig

type NetworkingConfig struct {
	Network             string                    `mapstructure:"network"`
	Subnetwork          string                    `mapstructure:"subnetwork"`
	NicType             string                    `mapstructure:"nicType"`
	InternalIPType      string                    `mapstructure:"internalIPType"`
	InternalIPAddress   string                    `mapstructure:"internalIPAddress"`
	ExternalIPType      string                    `mapstructure:"externalIPType"`
	ExternalIPAddress   string                    `mapstructure:"externalIPAddress"`
	NetworkTags         string                    `mapstructure:"networkTags"`
	StackType           string                    `mapstructure:"stackType"`
	CreateFirewallRules []CreateFirewallRuleEntry `mapstructure:"createFirewallRules"`
}

type NodeAffinityEntry

type NodeAffinityEntry struct {
	Key      string   `mapstructure:"key"`
	Operator string   `mapstructure:"operator"`
	Values   []string `mapstructure:"values"`
}

type OSAndStorageConfig

type OSAndStorageConfig struct {
	BootDiskSourceType       string                `mapstructure:"bootDiskSourceType"`
	BootDiskOS               string                `mapstructure:"bootDiskOS"`
	BootDiskPublicImage      string                `mapstructure:"bootDiskPublicImage"`
	BootDiskCustomImage      string                `mapstructure:"bootDiskCustomImage"`
	BootDiskSnapshot         string                `mapstructure:"bootDiskSnapshot"`
	BootDiskExistingDisk     string                `mapstructure:"bootDiskExistingDisk"`
	BootDiskType             string                `mapstructure:"bootDiskType"`
	BootDiskSizeGb           int64                 `mapstructure:"bootDiskSizeGb"`
	BootDiskEncryptionKey    string                `mapstructure:"bootDiskEncryptionKey"`
	BootDiskSnapshotSchedule string                `mapstructure:"bootDiskSnapshotSchedule"`
	BootDiskAutoDelete       bool                  `mapstructure:"bootDiskAutoDelete"`
	LocalSSDCount            int64                 `mapstructure:"localSSDCount"`
	AdditionalDisks          []AdditionalDiskEntry `mapstructure:"additionalDisks"`
}

type OnVMInstance

type OnVMInstance struct{}

func (*OnVMInstance) Cleanup

func (t *OnVMInstance) Cleanup(ctx core.TriggerContext) error

func (*OnVMInstance) Color

func (t *OnVMInstance) Color() string

func (*OnVMInstance) Configuration

func (t *OnVMInstance) Configuration() []configuration.Field

func (*OnVMInstance) Description

func (t *OnVMInstance) Description() string

func (*OnVMInstance) Documentation

func (t *OnVMInstance) Documentation() string

func (*OnVMInstance) ExampleData

func (t *OnVMInstance) ExampleData() map[string]any

func (*OnVMInstance) HandleHook added in v0.18.0

func (t *OnVMInstance) HandleHook(ctx core.TriggerHookContext) (map[string]any, error)

func (*OnVMInstance) HandleWebhook

func (*OnVMInstance) Hooks added in v0.18.0

func (t *OnVMInstance) Hooks() []core.Hook

func (*OnVMInstance) Icon

func (t *OnVMInstance) Icon() string

func (*OnVMInstance) Label

func (t *OnVMInstance) Label() string

func (*OnVMInstance) Name

func (t *OnVMInstance) Name() string

func (*OnVMInstance) OnIntegrationMessage

func (t *OnVMInstance) OnIntegrationMessage(ctx core.IntegrationMessageContext) error

func (*OnVMInstance) Setup

func (t *OnVMInstance) Setup(ctx core.TriggerContext) error

type OnVMInstanceConfiguration

type OnVMInstanceConfiguration struct{}

type OnVMInstanceMetadata

type OnVMInstanceMetadata struct {
	SubscriptionID string `json:"subscriptionId" mapstructure:"subscriptionId"`
	SinkID         string `json:"sinkId" mapstructure:"sinkId"`
}

type ProvisioningModel

type ProvisioningModel string
const (
	ProvisioningStandard ProvisioningModel = "STANDARD"
	ProvisioningSpot     ProvisioningModel = "SPOT"
)

type Region

type Region struct {
	Name        string   `json:"name"`
	Description string   `json:"description"`
	Status      string   `json:"status"`
	Zones       []string `json:"zones"`
}

func ListRegions

func ListRegions(ctx context.Context, c Client) ([]Region, error)

type ResourcePolicy

type ResourcePolicy struct {
	Name string `json:"name"`
}

func ListSnapshotSchedules

func ListSnapshotSchedules(ctx context.Context, c Client, project, region string) ([]ResourcePolicy, error)

type SecurityConfig

type SecurityConfig struct {
	ShieldedVM                          bool   `mapstructure:"shieldedVM"`
	ShieldedVMEnableSecureBoot          bool   `mapstructure:"shieldedVMEnableSecureBoot"`
	ShieldedVMEnableVtpm                bool   `mapstructure:"shieldedVMEnableVtpm"`
	ShieldedVMEnableIntegrityMonitoring bool   `mapstructure:"shieldedVMEnableIntegrityMonitoring"`
	ConfidentialVM                      bool   `mapstructure:"confidentialVM"`
	ConfidentialVMType                  string `mapstructure:"confidentialVMType"`
}

type Snapshot

type Snapshot struct {
	Name string `json:"name"`
}

func ListSnapshots

func ListSnapshots(ctx context.Context, c Client, project string) ([]Snapshot, error)

type Subnetwork

type Subnetwork struct {
	Name     string `json:"name"`
	Region   string `json:"region"`
	SelfLink string `json:"selfLink"`
}

func ListSubnetworks

func ListSubnetworks(ctx context.Context, c Client, project, region string) ([]Subnetwork, error)

type Zone

type Zone struct {
	Name   string `json:"name"`
	Status string `json:"status"`
	Region string `json:"region"`
}

func ListZones

func ListZones(ctx context.Context, c Client, region string) ([]Zone, error)

Jump to

Keyboard shortcuts

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