bpmetadata

package
v0.9.1 Latest Latest
Warning

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

Go to latest
Published: Apr 4, 2023 License: Apache-2.0 Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Cmd = &cobra.Command{
	Use:   "metadata",
	Short: "Generates blueprint metatda",
	Long:  `Generates metadata.yaml for specified blueprint`,
	Args:  cobra.NoArgs,
	RunE:  generate,
}
View Source
var Log = log.New()

bpmetadata log15 handler

Functions

func WriteMetadata

func WriteMetadata(obj *BlueprintMetadata, bpPath, fileName string) error

Types

type BlueprintActuationTool

type BlueprintActuationTool struct {
	// Set as "Terraform" for now until more flavors are supported.
	Flavor string `json:"type,omitempty" yaml:"type,omitempty"`

	// Required version for the actuation tool.
	// Autogenerated: For Terraform this is the `required_version` set in
	// `terraform` block. E.g.
	// terraform {
	//   required_version = ">= 0.13"
	// }
	Version string `json:"version,omitempty" yaml:"version,omitempty"`
}

type BlueprintArchitecture added in v0.5.4

type BlueprintArchitecture struct {
	DiagramURL  string   `json:"diagram" yaml:"diagram"`
	Description []string `json:"description" yaml:"description"`
}

type BlueprintAuthor added in v0.6.0

type BlueprintAuthor struct {
	// Name of template author or organization.
	Title string `json:"author" yaml:"author"`

	// Description of the author.
	Description string `json:"description,omitempty"  yaml:"description,omitempty"`

	// Link to the author's website.
	URL string `json:"url,omitempty" yaml:"url,omitempty"`
}

type BlueprintCloudProduct added in v0.5.4

type BlueprintCloudProduct struct {
	// A top-level (e.g. "Compute Engine") or secondary (e.g. "Binary Authorization")
	// product used in the blueprint.
	ProductId string `json:"productId,omitempty" yaml:"productId,omitempty"`

	// Url for the product.
	PageURL string `json:"pageUrl" yaml:"pageUrl"`

	// A label string for the product, if it is not an integrated GCP product.
	// E.g. "Data Studio"
	Label string `json:"label,omitempty" yaml:"label,omitempty"`
}

A GCP cloud product used in the blueprint. Manually authored.

type BlueprintContent

type BlueprintContent struct {
	// Diagrams are manually entered.
	Architecture  BlueprintArchitecture  `json:"architecture,omitempty" yaml:"architecture,omitempty"`
	Diagrams      []BlueprintDiagram     `json:"diagrams,omitempty" yaml:"diagrams,omitempty"`
	Documentation []BlueprintListContent `json:"documentation,omitempty" yaml:"documentation,omitempty"`
	SubBlueprints []BlueprintMiscContent `json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty"`
	Examples      []BlueprintMiscContent `json:"examples,omitempty" yaml:"examples,omitempty"`
}

BlueprintContent defines the detail for blueprint related content such as related documentation, diagrams, examples etc.

type BlueprintCostEstimate added in v0.5.4

type BlueprintCostEstimate struct {
	// Autogenerated: Set using the content defined under "### Cost" as a link
	// with a description E.g.
	// ### Cost
	// [View cost details](https://cloud.google.com/products/calculator?hl=en_US&_ga=2.1665458.-226505189.1675191136#id=02fb0c45-cc29-4567-8cc6-f72ac9024add)
	Description string `json:"description" yaml:"description"`
	URL         string `json:"url" yaml:"url"`
}

The cost estimate for the blueprint based on preconfigured variables.

type BlueprintDescription

type BlueprintDescription struct {

	// Autogenerated: Markdown after "### Tagline".
	Tagline string `json:"tagline,omitempty" yaml:"tagline,omitempty"`

	// Autogenerated: Markdown after "### Detailed".
	Detailed string `json:"detailed,omitempty" yaml:"detailed,omitempty"`

	// Autogenerated: Markdown after "### PreDeploy".
	PreDeploy string `json:"preDeploy,omitempty" yaml:"preDeploy,omitempty"`

	// Autogenerated: Markdown after "### Html".
	HTML string `json:"html,omitempty" yaml:"html,omitempty"`

	// Autogenerated: Markdown after "### EulaUrls".
	EulaURLs []string `json:"eulaUrls,omitempty" yaml:"eulaUrls,omitempty"`

	// Autogenerated: Markdown after "### Architecture"
	// Deprecated. Use BlueprintContent.Architecture instead.
	Architecture []string `json:"architecture,omitempty" yaml:"architecture,omitempty"`
}

type BlueprintDiagram

type BlueprintDiagram struct {
	Name        string `json:"name" yaml:"name"`
	AltText     string `json:"altText,omitempty" yaml:"altText,omitempty"`
	Description string `json:"description,omitempty" yaml:"description,omitempty"`
}

BlueprintDiagram is manually entered.

type BlueprintInfo

type BlueprintInfo struct {
	// Title for the blueprint.
	// Autogenerated: First H1 text in readme.md.
	Title string `json:"title" yaml:"title"`

	// Blueprint source location and source type.
	// Autogen details in BlueprintRepoDetail.
	Source *BlueprintRepoDetail `json:"source" yaml:"source"`

	// Last released semantic version  for the packaged blueprint.
	// Autogenerated: From the `module_name` attribute of the `provider_meta "google"` block.
	// E.g.
	// provider_meta "google" {
	//  module_name = "blueprints/terraform/terraform-google-log-analysis/v0.1.5"
	// }
	Version string `json:"version,omitempty" yaml:"version,omitempty"`

	// Actuation tool e.g. Terraform and its required version.
	// Autogen details in BlueprintActuationTool.
	ActuationTool BlueprintActuationTool `json:"actuationTool,omitempty" yaml:"actuationTool,omitempty"`

	// Various types of descriptions associated with the blueprint.
	// Autogen details in BlueprintDescription.
	Description *BlueprintDescription `json:"description,omitempty" yaml:"description,omitempty"`

	// Path to an image representing the icon for the blueprint.
	// Will be set as "assets/icon.png", if present. Otherwise, it
	// can be manually authored.
	Icon string `json:"icon,omitempty" yaml:"icon,omitempty"`

	// The time estimate for configuring and deploying the blueprint.
	// Autogen details in BlueprintTimeEstimate.
	DeploymentDuration BlueprintTimeEstimate `json:"deploymentDuration,omitempty" yaml:"deploymentDuration,omitempty"`

	// The cost estimate for the blueprint based on preconfigured variables.
	// Autogen details in BlueprintCostEstimate.
	CostEstimate BlueprintCostEstimate `json:"costEstimate,omitempty" yaml:"costEstimate,omitempty"`

	// A list of GCP cloud products used in the blueprint.
	// Manually authored.
	CloudProducts []BlueprintCloudProduct `json:"cloudProducts,omitempty" yaml:"cloudProducts,omitempty"`

	// A configuration of fixed and dymanic GCP quotas that apply to the soltuion.
	// Manually authored.
	QuotaDetails []BlueprintQuotaDetail `json:"quotaDetails,omitempty" yaml:"quotaDetails,omitempty"`

	// Details on the author producing the blueprint.
	// Manually authored.
	Author BlueprintAuthor `json:"author,omitempty" yaml:"author,omitempty"`

	// Details on sotfware installed as part of the blueprint.
	// Manually authored.
	SoftwareGroups []BlueprintSoftwareGroup `json:"softwareGroups,omitempty" yaml:"softwareGroups,omitempty"`

	// Support offered, if any for the blueprint.
	// Manually authored.
	SupportInfo BlueprintSupport `json:"supportInfo,omitempty" yaml:"supportInfo,omitempty"`
}

type BlueprintInterface

type BlueprintInterface struct {
	Variables []BlueprintVariable `json:"variables,omitempty" yaml:"variables,omitempty"`
	// VariableGroups are manually entered.
	VariableGroups []BlueprintVariableGroup `json:"variableGroups,omitempty" yaml:"variableGroups,omitempty"`
	Outputs        []BlueprintOutput        `json:"outputs,omitempty" yaml:"outputs,omitempty"`
}

BlueprintInterface defines the input and output variables for the blueprint.

type BlueprintListContent

type BlueprintListContent struct {
	Title string `json:"title" yaml:"title"`
	URL   string `json:"url,omitempty" yaml:url,omitempty"`
}

type BlueprintMetadata

type BlueprintMetadata struct {
	yaml.ResourceMeta `json:",inline" yaml:",inline"`
	Spec              BlueprintMetadataSpec `json:"spec" yaml:"spec"`
}

BlueprintMetadata defines the overall structure for blueprint metadata.

func CreateBlueprintDisplayMetadata added in v0.9.0

func CreateBlueprintDisplayMetadata(bpPath string, bpDisp, bpCore *BlueprintMetadata) (*BlueprintMetadata, error)

func CreateBlueprintMetadata

func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (*BlueprintMetadata, error)

func UnmarshalMetadata

func UnmarshalMetadata(bpPath, fileName string) (*BlueprintMetadata, error)

type BlueprintMetadataSpec

type BlueprintMetadataSpec struct {
	BlueprintInfo         `json:",inline,omitempty" yaml:",inline,omitempty"`
	BlueprintContent      `json:",inline,omitempty" yaml:",inline,omitempty"`
	BlueprintInterface    `json:",inline,omitempty" yaml:",inline,omitempty"`
	BlueprintRequirements `json:",inline,omitempty" yaml:",inline,omitempty"`
	BlueprintUI           `json:",inline,omitempty" yaml:",inline,omitempty"`
}

BlueprintMetadataSpec defines the spec portion of the blueprint metadata. All immediate types within BlueprintMetadataSpec are inline and will not appear as nodes in metadata.

type BlueprintMiscContent

type BlueprintMiscContent struct {
	Name     string `json:"name" yaml:"name"`
	Location string `json:"location,omitempty" yaml:"location,omitempty"`
}

type BlueprintOutput

type BlueprintOutput struct {
	Name        string `json:"name" yaml:"name"`
	Description string `json:"description,omitempty" yaml:"description,omitempty"`
}

type BlueprintQuotaDetail added in v0.5.4

type BlueprintQuotaDetail struct {
	// DynamicVariable, if provided, associates the provided input variable
	// with the corresponding resource and quota type. In its absence, the quota
	// detail is assumed to be fixed.
	DynamicVariable string `json:"variable,omitempty" yaml:"variable,omitempty"`

	// ResourceType is the type of resource the quota will be applied to i.e.
	// GCE Instance or Disk etc.
	ResourceType QuotaResourceType `json:"type" yaml:"type" jsonschema:"enum=GCE_INSTANCE,enum=GCE_DISK"`

	// QuotaType is a key/value pair of the actual quotas an their corresponding
	// values.
	QuotaType map[QuotaType]string `json:"quotaType" yaml:"quotaType"`
}

type BlueprintRepoDetail

type BlueprintRepoDetail struct {
	// Autogenerated: URL from the .git dir.
	// Can be manually overriden with a custom URL if needed.
	Repo string `json:"repo" yaml:"repo"`

	// Set as "git" for now until more types are supported.
	SourceType string `json:"sourceType" yaml:"sourceType"`
}

type BlueprintRequirements

type BlueprintRequirements struct {
	Roles    []BlueprintRoles `json:"roles,omitempty" yaml:"roles,omitempty"`
	Services []string         `json:"services,omitempty" yaml:"services,omitempty"`
}

BlueprintRequirements defines the roles required and the assocaited services that need to be enabled to provision blueprint resources.

type BlueprintRoles

type BlueprintRoles struct {
	Level string   `json:"level" yaml:"level"`
	Roles []string `json:"roles" yaml:"roles"`
}

type BlueprintSoftware added in v0.6.0

type BlueprintSoftware struct {
	// User-visible title.
	Title string `json:"title" yaml:"title"`

	// Software version.
	Version string `json:"version,omitempty" yaml:"version,omitempty"`

	// Link to development site or marketing page for this software.
	URL string `json:"url,omitempty" yaml:"url,omitempty"`

	// Link to license page.
	LicenseURL string `json:"licenseUrl,omitempty" yaml:"licenseUrl,omitempty"`
}

A description of a piece of a single software component installed by the blueprint.

type BlueprintSoftwareGroup added in v0.6.0

type BlueprintSoftwareGroup struct {
	// Pre-defined software types.
	Type SoftwareGroupType `json:"type,omitempty" yaml:"type,omitempty" jsonschema:"enum=UNSPECIFIED,enum=OS"`

	// Software components belonging to this group.
	Software []BlueprintSoftware `json:"software,omitempty" yaml:"software,omitempty"`
}

A group of related software components for the blueprint.

type BlueprintSupport added in v0.6.0

type BlueprintSupport struct {
	//Description of the support option.
	Description string `json:"description" yaml:"description"`

	// Link to the page providing this support option.
	URL string `json:"url,omitempty" yaml:"url,omitempty"`

	// The organization or group that provides the support option (e.g.:
	// "Community", "Google").
	Entity string `json:"entity,omitempty" yaml:"entity,omitempty"`

	// Whether to show the customer's support ID.
	ShowSupportId bool `json:"showSupportId,omitempty" yaml:"showSupportId,omitempty"`
}

A description of a support option

type BlueprintTimeEstimate added in v0.5.4

type BlueprintTimeEstimate struct {
	// Autogenerated: Set using the content defined under "### DeploymentTime" E.g.
	// ### DeploymentTime
	// - Configuration: X secs
	// - Deployment: Y secs
	ConfigurationSecs int `json:"configuration,omitempty" yaml:"configuration,omitempty"`
	DeploymentSecs    int `json:"deployment,omitempty" yaml:"deployment,omitempty"`
}

A time estimate in secs required for configuring and deploying the blueprint.

type BlueprintUI added in v0.6.0

type BlueprintUI struct {
	// The top-level input section that defines the list of variables and
	// their sections on the deployment page.
	Input BlueprintUIInput `json:"input,omitempty" yaml:"input,omitempty"`

	// The top-level section for listing runtime (or blueprint output) information
	// i.e. the console URL for the VM or a button to ssh into the VM etc based on.
	Runtime BlueprintUIOutput `json:"runtime,omitempty" yaml:"runtime,omitempty"`
}

BlueprintUI is the top-level structure for holding UI specific metadata.

type BlueprintUIInput added in v0.6.0

type BlueprintUIInput struct {

	// variables is a map defining all inputs on the UI.
	DisplayVariables map[string]*DisplayVariable `json:"variables,omitempty" yaml:"variables,omitempty"`

	// Sections is a generic structure for grouping inputs together.
	DisplaySections []DisplaySection `json:"sections,omitempty" yaml:"sections,omitempty"`
}

BlueprintUIInput is the structure for holding Input and Input Section (i.e. groups) specific metadata.

type BlueprintUIOutput added in v0.6.0

type BlueprintUIOutput struct {
	// Short message to be displayed while the blueprint is deploying.
	// At most 128 characters.
	OutputMessage string `json:"outputMessage,omitempty" yaml:"outputMessage,omitempty"`

	// List of suggested actions to take.
	SuggestedActions []UIActionItem `json:"suggestedActions,omitempty" yaml:"suggestedActions,omitempty"`
}

type BlueprintVariable

type BlueprintVariable struct {
	Name        string      `json:"name,omitempty" yaml:"name,omitempty"`
	Description string      `json:"description,omitempty" yaml:"description,omitempty"`
	VarType     string      `json:"type,omitempty" yaml:"type,omitempty"`
	Default     interface{} `json:"default,omitempty" yaml:"default,omitempty"`
	Required    bool        `json:"required,omitempty" yaml:"required,omitempty"`
}

type BlueprintVariableGroup

type BlueprintVariableGroup struct {
	Name        string   `json:"name" yaml:"name"`
	Description string   `json:"description,omitempty" yaml:"description,omitempty"`
	Variables   []string `json:"variables,omitempty" yaml:"variables,omitempty"`
}

BlueprintVariableGroup is manually entered.

type DisplaySection added in v0.6.0

type DisplaySection struct {
	// The name of the section, referenced by DisplayVariable.Section
	// Section names must be unique.
	Name string `json:"name" yaml:"name"`

	// Section title.
	// If not provided, name will be used instead.
	Title string `json:"title,omitempty" yaml:"title,omitempty"`

	// Section tooltip.
	Tooltip string `json:"tooltip,omitempty" yaml:"tooltip,omitempty"`

	// Section subtext.
	Subtext string `json:"subtext,omitempty" yaml:"subtext,omitempty"`

	// The name of the parent section (if parent is not the root section).
	Parent string `json:"parent,omitempty" yaml:"parent,omitempty"`
}

A logical group of variables. [Section][]s may also be grouped into sub-sections.

type DisplayVariable added in v0.6.0

type DisplayVariable struct {
	// The variable name from the corresponding standard metadata file.
	Name string `json:"name" yaml:"name"`

	// Visible title for the variable on the UI. If not present,
	// Name will be used for the Title.
	Title bool `json:"title,omitempty" yaml:"title,omitempty"`

	// A flag to hide or show the variable on the UI.
	Visible bool `json:"visible,omitempty" yaml:"visible,omitempty"`

	// Variable tooltip.
	Tooltip string `json:"tooltip,omitempty" yaml:"tooltip,omitempty"`

	// Placeholder text (when there is no default).
	Placeholder string `json:"placeholder,omitempty" yaml:"placeholder,omitempty"`

	// Text describing the validation rules for the variable based
	// on a regular expression.
	// Typically shown after an invalid input.
	RegExValidation string `json:"regexValidation,omitempty" yaml:"regexValidation,omitempty"`

	// Minimum no. of values for the input variable.
	Minimum int `json:"min,omitempty" yaml:"min,omitempty"`

	// Max no. of values for the input variable.
	Maximum int `json:"max,omitempty" yaml:"max,omitempty"`

	// The name of a section to which this variable belongs.
	// variables belong to the root section if this field is
	// not set.
	Section string `json:"section,omitempty" yaml:"section,omitempty"`

	// Designates that this variable has no impact on the costs, quotas, or
	// permissions associated with the resources in the expanded deployment.
	// Typically true for application-specific variables that do not affect the
	// size or number of instances in the deployment.
	ResourceImpact bool `json:"resourceImpact,omitempty" yaml:"resourceImpact,omitempty"`

	// UI extension associated with the input variable.
	// E.g. for rendering a GCE machine type selector:
	//
	// x-googleProperty:
	//   type: GCE_MACHINE_TYPE
	//   zoneProperty: myZone
	//   gceMachineType:
	//     minCpu: 2
	//     minRamGb: 6
	UIDisplayVariableExtension GooglePropertyExtension `json:"x-googleProperty,omitempty" yaml:"x-googleProperty,omitempty"`
}

Additional display specific metadata pertaining to a particular input variable.

type ExtensionType added in v0.6.0

type ExtensionType string
const (
	Undefined ExtensionType = "UNDEFINED_TYPE"

	// General formats.
	EmailAddress    ExtensionType = "EMAIL_ADDRESS"
	MultiLineString ExtensionType = "MULTI_LINE_STRING"

	// GCE related.
	GCEDiskImage       ExtensionType = "GCE_DISK_IMAGE"
	GCEDiskType        ExtensionType = "GCE_DISK_TYPE"
	GCEDiskSize        ExtensionType = "GCE_DISK_SIZE"
	GCEMachineType     ExtensionType = "GCE_MACHINE_TYPE"
	GCENetwork         ExtensionType = "GCE_NETWORK"
	GCEZone            ExtensionType = "GCE_ZONE"
	GCESubnetwork      ExtensionType = "GCE_SUBNETWORK"
	GCERegion          ExtensionType = "GCE_REGION"
	GCEGPUType         ExtensionType = "GCE_GPU_TYPE"
	GCEGPUCount        ExtensionType = "GCE_GPU_COUNT"
	GCEExternalIP      ExtensionType = "GCE_EXTERNAL_IP"
	GCEIPForwarding    ExtensionType = "GCE_IP_FORWARDING"
	GCEFirewall        ExtensionType = "GCE_FIREWALL"
	GCEFirewallRange   ExtensionType = "GCE_FIREWALL_RANGE"
	GCEGenericResource ExtensionType = "GCE_GENERIC_RESOURCE"

	// GCS related.
	GCSBucket ExtensionType = "GCS_BUCKET"

	// IAM related.
	IAMServiceAccount ExtensionType = "IAM_SERVICE_ACCOUNT"
)

type ExternalIPType added in v0.6.0

type ExternalIPType string
const (
	IPEphemeral ExternalIPType = "EPHEMERAL"
	IPStaic     ExternalIPType = "STATIC"
)

type GCEDiskSizeExtension added in v0.6.0

type GCEDiskSizeExtension struct {
	// The allowable range of disk sizes depends on the disk type. This field
	// references another variable from the schema, which must have type GCEDiskType.
	DiskTypeVariable string `json:"diskTypeVariable" yaml:"diskTypeVariable"`
}

type GCEExternalIPExtension added in v0.6.0

type GCEExternalIPExtension struct {
	// NetworkVariable is used to indicate the network variable in the schema
	// this external IP belongs to.
	NetworkVariable string `json:"networkVariable" yaml:"networkVariable"`

	// Type specifies if the external IP is ephemeral or static.
	// Defaults to ephemeral if not specified.
	Type ExternalIPType `json:"externalIpType,omitempty" yaml:"externalIpType,omitempty"`
}

type GCEFirewallExtension added in v0.6.0

type GCEFirewallExtension struct {
	// NetworkVariable is used to indicate the network variable in the schema
	// this external IP belongs to.
	NetworkVariable string `json:"networkVariable" yaml:"networkVariable"`
}

type GCEFirewallRangeExtension added in v0.6.0

type GCEFirewallRangeExtension struct {
	// FirewallVariable is used to indicate the firewall variable with the type
	// GCEFirewall in the schema to which this firewall range belongs to.
	FirewallVariable string `json:"firewallVariable" yaml:"firewallVariable"`
}

type GCEGPUCountExtension added in v0.6.0

type GCEGPUCountExtension struct {
	// This field references another variable from the schema,
	// which must have type GCEMachineType.
	MachineTypeVariable string `json:"machineTypeVariable" yaml:"machineTypeVariable"`
}

type GCEGPUTypeExtension added in v0.6.0

type GCEGPUTypeExtension struct {
	MachineType string `json:"machineType" yaml:"machineType"`
	GPUType     string `json:"gpuType,omitempty" yaml:"gpuType,omitempty"`
}

type GCEGenericResourceExtension added in v0.6.0

type GCEGenericResourceExtension struct {
	// GCE resource type to be fetched. This field references another
	// property from the schema, which must have type GCEGenericResource.
	ResourceVariable string `json:"resourceVariable" yaml:"resourceVariable"`
}

type GCEIPForwardingExtension added in v0.6.0

type GCEIPForwardingExtension struct {
	// NetworkVariable is used to indicate the network variable in the schema
	// this external IP belongs to.
	NetworkVariable string `json:"networkVariable" yaml:"networkVariable"`
	NotConfigurable bool   `json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty"`
}

type GCELocationExtension added in v0.6.0

type GCELocationExtension struct {
	AllowlistedZones   []string `json:"allowlistedZones,omitempty" yaml:"allowlistedZones,omitempty"`
	AllowlistedRegions []string `json:"allowlistedRegions,omitempty" yaml:"allowlistedRegions,omitempty"`
}

type GCEMachineTypeExtension added in v0.6.0

type GCEMachineTypeExtension struct {
	// Minimum cpu. Used to filter the list of selectable machine types.
	MinCPU int `json:"minCpu,omitempty" yaml:"minCpu,omitempty"`

	// Minimum ram. Used to filter the list of selectable machine types.
	MinRAMGB int `json:"minRamGb,omitempty" yaml:"minRamGb,omitempty"`

	// If true, custom machine types will not be selectable.
	// More info:
	// https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type
	DisallowCustomMachineTypes bool `json:"disallowCustomMachineTypes,omitempty" yaml:"disallowCustomMachineTypes,omitempty"`
}

type GCENetworkExtension added in v0.6.0

type GCENetworkExtension struct {
	// AllowSharedVpcs indicates this solution can receive
	// shared VPC selflinks (fully qualified compute links).
	AllowSharedVPCs bool `json:"allowSharedVpcs,omitempty" yaml:"allowSharedVpcs,omitempty"`
	// Used to indicate to which machine type this network interface will be
	// attached to.
	MachineTypeVariable string `json:"machineTypeVariable" yaml:"machineTypeVariable"`
}

type GCESubnetworkExtension added in v0.6.0

type GCESubnetworkExtension struct {
	// Subnetwork variable requires a network context in order to determine the
	// set of available subnetworks. This field references another
	// variable from the schema, which must have type GCENetwork.
	NetworkVariable string `json:"networkVariable" yaml:"networkVariable"`
}

type GooglePropertyExtension added in v0.6.0

type GooglePropertyExtension struct {
	Type ExtensionType `` /* 415-byte string literal not displayed */

	// Some properties (e.g. GCE_MACHINE_TYPE) require a zone context in order to
	// determine the set of allowable values. This field references another
	// property from the schema, which must have type GCE_ZONE.
	ZoneProperty string `json:"zoneProperty,omitempty" yaml:"zoneProperty,omitempty"`

	// Property-specific extensions.
	GCEMachineType    GCEMachineTypeExtension     `json:"gceMachineType,omitempty" yaml:"gceMachineType,omitempty"`
	GCEDiskSize       GCEDiskSizeExtension        `json:"gceDiskSize,omitempty" yaml:"gceDiskSize,omitempty"`
	GCESubnetwork     GCESubnetworkExtension      `json:"gceSubnetwork,omitempty" yaml:"gceSubnetwork,omitempty"`
	GCEResource       GCEGenericResourceExtension `json:"gceResource,omitempty" yaml:"gceResource,omitempty"`
	GCEGPUType        GCEGPUTypeExtension         `json:"gceGpuType,omitempty" yaml:"gceGpuType,omitempty"`
	GCEGPUCount       GCEGPUCountExtension        `json:"gceGpuCount,omitempty" yaml:"gceGpuCount,omitempty"`
	GCENetwork        GCENetworkExtension         `json:"gceNetwork,omitempty" yaml:"gceNetwork,omitempty"`
	GCEExternalIP     GCEExternalIPExtension      `json:"gceExternalIp,omitempty" yaml:"gceExternalIp,omitempty"`
	GCEIPForwarding   GCEIPForwardingExtension    `json:"gceIpForwarding,omitempty" yaml:"gceIpForwarding,omitempty"`
	GCEFirewall       GCEFirewallExtension        `json:"gceFirewall,omitempty" yaml:"gceFirewall,omitempty"`
	GCEFirewallRange  GCEFirewallRangeExtension   `json:"gceFirewallRange,omitempty" yaml:"gceFirewallRange,omitempty"`
	GCEZone           GCELocationExtension        `json:"gceZone,omitempty" yaml:"gceZone,omitempty"`
	GCERegion         GCELocationExtension        `json:"gceRegion,omitempty" yaml:"gceRegion,omitempty"`
	IAMServiceAccount IAMServiceAccountExtension  `json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty"`
}

An extension for variables defined as part of DisplayVariable. The extension defines Google-specifc metadata necessary for choosing an appropriate input widget or adding restrictions to GCP-specific resources.

type IAMServiceAccountExtension added in v0.6.0

type IAMServiceAccountExtension struct {
	// List of IAM roles that to  grant to a new SA, or the roles to filter
	// existing SAs with.
	Roles []string `json:"roles" yaml:"roles"`
}

type QuotaResourceType added in v0.5.4

type QuotaResourceType string
const (
	GCEInstance QuotaResourceType = "GCE_INSTANCE"
	GCEDisk     QuotaResourceType = "GCE_DISK"
)

type QuotaType added in v0.5.4

type QuotaType string
const (
	MachineType QuotaType = "MACHINE_TYPE"
	CPUs        QuotaType = "CPUs"
	DiskType    QuotaType = "DISK_TYPE"
	DiskSizeGB  QuotaType = "SIZE_GB"
)

type SoftwareGroupType added in v0.6.0

type SoftwareGroupType string
const (
	UnspecifiedSG SoftwareGroupType = "UNSPECIFIED"
	OS            SoftwareGroupType = "OS"
)

type UIActionItem added in v0.6.0

type UIActionItem struct {
	// Summary heading for the item.
	// Required. Accepts string expressions. At most 64 characters.
	Heading string `json:"heading" yaml:"heading"`

	// Longer description of the item.
	// At least one description or snippet is required.
	// Accepts string expressions. HTML <code>&lt;a href&gt;</code>
	// tags only. At most 512 characters.
	Description string `json:"description,omitempty" yaml:"description,omitempty"`

	// Fixed-width formatted code snippet.
	// At least one description or snippet is required.
	// Accepts string expressions. UTF-8 text. At most 512 characters.
	Snippet string `json:"snippet,omitempty" yaml:"snippet,omitempty"`

	// If present, this expression determines whether the item is shown.
	// Should be in the form of a Boolean expression e.g. outputs().hasExternalIP
	// where `externalIP` is the output.
	ShowIf string `json:"showIf,omitempty" yaml:"showIf,omitempty"`
}

An item appearing in a list of required or suggested steps.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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