Documentation
¶
Index ¶
- Variables
- func WriteMetadata(obj *BlueprintMetadata, bpPath string) error
- type BlueprintActuationTool
- type BlueprintArchitecture
- type BlueprintAuthor
- type BlueprintCloudProduct
- type BlueprintContent
- type BlueprintCostEstimate
- type BlueprintDescription
- type BlueprintDiagram
- type BlueprintInfo
- type BlueprintInterface
- type BlueprintListContent
- type BlueprintMetadata
- type BlueprintMetadataSpec
- type BlueprintMiscContent
- type BlueprintOutput
- type BlueprintQuotaDetail
- type BlueprintRepoDetail
- type BlueprintRequirements
- type BlueprintRoles
- type BlueprintSoftware
- type BlueprintSoftwareGroup
- type BlueprintSupport
- type BlueprintTimeEstimate
- type BlueprintUI
- type BlueprintUIInput
- type BlueprintUIOutput
- type BlueprintVariable
- type BlueprintVariableGroup
- type DisplaySection
- type DisplayVariable
- type ExtensionType
- type ExternalIPType
- type GCEDiskSizeExtension
- type GCEExternalIPExtension
- type GCEFirewallExtension
- type GCEFirewallRangeExtension
- type GCEGPUCountExtension
- type GCEGPUTypeExtension
- type GCEGenericResourceExtension
- type GCEIPForwardingExtension
- type GCELocationExtension
- type GCEMachineTypeExtension
- type GCENetworkExtension
- type GCESubnetworkExtension
- type GooglePropertyExtension
- type IAMServiceAccountExtension
- type QuotaResourceType
- type QuotaType
- type SoftwareGroupType
- type UIActionItem
Constants ¶
This section is empty.
Variables ¶
var Cmd = &cobra.Command{ Use: "metadata", Short: "Generates blueprint metatda", Long: `Generates metadata.yaml for specified blueprint`, Args: cobra.NoArgs, RunE: generate, }
var Log = log.New()
bpmetadata log15 handler
Functions ¶
func WriteMetadata ¶
func WriteMetadata(obj *BlueprintMetadata, bpPath 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:",omitempty" yaml:",omitempty"`
}
type BlueprintArchitecture ¶ added in v0.5.4
type BlueprintAuthor ¶ added in v0.6.0
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:",omitempty" yaml:",omitempty"`
// Url for the product.
PageURL string `json:",omitempty" yaml:",omitempty"`
// A label string for the product, if it is not an integrated GCP product.
// E.g. "Data Studio"
Label string `json:",omitempty" yaml:",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:",omitempty" yaml:",omitempty"`
Documentation []BlueprintListContent `json:",omitempty" yaml:",omitempty"`
SubBlueprints []BlueprintMiscContent `json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty"`
Examples []BlueprintMiscContent `json:",omitempty" yaml:",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:",omitempty" yaml:",omitempty"`
URL string `json:",omitempty" yaml:",omitempty"`
}
The cost estimate for the blueprint based on preconfigured variables.
type BlueprintDescription ¶
type BlueprintDescription struct {
// Autogenerated: Markdown after "### Tagline".
Tagline string `json:",omitempty" yaml:",omitempty"`
// Autogenerated: Markdown after "### Detailed".
Detailed string `json:",omitempty" yaml:",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
AltText string `json:"altText,omitempty" yaml:"altText,omitempty"`
Description string `json:",omitempty" yaml:",omitempty"`
}
BlueprintDiagram is manually entered.
type BlueprintInfo ¶
type BlueprintInfo struct {
// Title for the blueprint.
// Autogenerated: First H1 text in readme.md.
Title string
// Blueprint source location and source type.
// Autogen details in BlueprintRepoDetail.
Source *BlueprintRepoDetail
// 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:",omitempty" yaml:",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:",omitempty" yaml:",omitempty"`
// Path to an image representing the icon for the blueprint.
// Will be set as "assets/icon.png". Can be manually authored otherwise.
Icon string `json:",omitempty" yaml:",omitempty"`
// The time estimate for configuring and deploying the blueprint.
// Autogen details in BlueprintTimeEstimate.
DeploymentTime BlueprintTimeEstimate `json:"deploymentTime,omitempty" yaml:"deploymentTime,omitempty"`
// The cost estimate for the blueprint based on preconfigured variables.
// Autogen details in BlueprintCostEstimate.
CostEstimate BlueprintCostEstimate `json:",omitempty" yaml:",omitempty"`
// A list of GCP cloud products used in the blueprint.
// Manually authored.
CloudProducts []BlueprintCloudProduct `json:",omitempty" yaml:",omitempty"`
// A configuration of fixed and dymanic GCP quotas that apply to the soltuion.
// Manually authored.
QuotaDetails []BlueprintQuotaDetail `json:",omitempty" yaml:",omitempty"`
// Details on the author producing the blueprint.
// Manually authored.
Author BlueprintAuthor `json:",omitempty" yaml:",omitempty"`
// Details on sotfware installed as part of the blueprint.
// Manually authored.
SoftwareGroups []BlueprintSoftwareGroup `json:",omitempty" yaml:",omitempty"`
// Support offered, if any for the blueprint.
// Manually authored.
SupportInfo BlueprintSupport `json:",omitempty" yaml:",omitempty"`
}
type BlueprintInterface ¶
type BlueprintInterface struct {
Variables []BlueprintVariable `json:",omitempty" yaml:",omitempty"`
// VariableGroups are manually entered.
VariableGroups []BlueprintVariableGroup `json:"variableGroups,omitempty" yaml:"variableGroups,omitempty"`
Outputs []BlueprintOutput `json:",omitempty" yaml:",omitempty"`
}
BlueprintInterface defines the input and output variables for the blueprint.
type BlueprintListContent ¶
type BlueprintMetadata ¶
type BlueprintMetadata struct {
Meta yaml.ResourceMeta `json:",inline" yaml:",inline"`
Spec BlueprintMetadataSpec
}
BlueprintMetadata defines the overall structure for blueprint metadata.
func CreateBlueprintMetadata ¶
func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (*BlueprintMetadata, error)
func UnmarshalMetadata ¶
func UnmarshalMetadata(bpPath string) (*BlueprintMetadata, error)
type BlueprintMetadataSpec ¶
type BlueprintMetadataSpec struct {
Info BlueprintInfo `json:",inline" yaml:",inline"`
Content BlueprintContent `json:",inline" yaml:",inline"`
Interfaces BlueprintInterface `json:",inline" yaml:",inline"`
Requirements BlueprintRequirements `json:",inline" yaml:",inline"`
UI BlueprintUI `json:",inline" yaml:",inline"`
}
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 BlueprintOutput ¶
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"`
// 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 BlueprintRequirements ¶
type BlueprintRequirements struct {
Roles []BlueprintRoles
Services []string
}
BlueprintRequirements defines the roles required and the assocaited services that need to be enabled to provision blueprint resources.
type BlueprintRoles ¶
type BlueprintSoftware ¶ added in v0.6.0
type BlueprintSoftware struct {
// User-visible title.
Title string `yaml:"title"`
// Software version.
Version string `yaml:"title,omitempty"`
// Link to development site or marketing page for this software.
URL string `yaml:"url,omitempty"`
// Link to license page.
LicenseURL string `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 `yaml:"type"`
// Software components belonging to this group.
Software []BlueprintSoftware `yaml:"software"`
}
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 `yaml:"description,omitempty"`
// Link to the page providing this support option.
URL string `yaml:"url"`
// The organization or group that provides the support option (e.g.:
// "Community", "Google").
Entity string `yaml:"entity,omitempty"`
// Whether to show the customer's support ID.
ShowSupportId bool `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 `yaml:"input"`
// 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 `yaml:"runtime"`
}
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 `yaml:"variables"`
// Sections is a generic structure for grouping inputs together.
DisplaySections []DisplaySection `yaml:"sections"`
}
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 `yaml:"outputMessage,omitempty"`
// List of suggested actions to take.
SuggestedActions []UIActionItem `yaml:"suggestedActions,omitempty"`
}
type BlueprintVariable ¶
type BlueprintVariableGroup ¶
type BlueprintVariableGroup struct {
Name string
Description string `json:",omitempty" yaml:",omitempty"`
Variables []string
}
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 `yaml:"name"`
// Section title.
// If not provided, name will be used instead.
Title string `yaml:"title,omitempty"`
// Section tooltip.
Tooltip string `yaml:"tooltip,omitempty"`
// Section subtext.
Subtext string `yaml:"subtext,omitempty"`
// The name of the parent section (if parent is not the root section).
Parent string `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 `yaml:"name"`
// Visible title for the variable on the UI.
Title bool `yaml:"title,omitempty"`
// A flag to hide or show the variable on the UI.
Visible bool `yaml:"visible,omitempty"`
// Variable tooltip.
Tooltip string `yaml:"tooltip,omitempty"`
// Placeholder text (when there is no default).
Placeholder string `yaml:"placeholder,omitempty"`
// Text describing the validation rules for the variable based
// on a regular expression.
// Typically shown after an invalid input.
RegExValidation string `yaml:"regexValidation,omitempty"`
// Minimum no. of values for the input variable.
Minimum int `yaml:"min,omitempty"`
// Max no. of values for the input variable.
Maximum int `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 `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 `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 `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 `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 `yaml:"networkVariable"`
// Type specifies if the external IP is ephemeral or static.
// Defaults to ephemeral if not specified.
Type ExternalIPType `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 `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 `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 `yaml:"machineTypeVariable"`
}
type GCEGPUTypeExtension ¶ added in v0.6.0
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 `yaml:"resourceVariable"`
}
type GCEIPForwardingExtension ¶ added in v0.6.0
type GCELocationExtension ¶ added in v0.6.0
type GCEMachineTypeExtension ¶ added in v0.6.0
type GCEMachineTypeExtension struct {
// Minimum cpu. Used to filter the list of selectable machine types.
MinCPU int `yaml:"minCpu,omitempty"`
// Minimum ram. Used to filter the list of selectable machine types.
MinRAMGB int `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 `yaml:"disallowCustomMachineTypes,omitempty"`
}
type GCENetworkExtension ¶ added in v0.6.0
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 `yaml:"networkVariable"`
}
type GooglePropertyExtension ¶ added in v0.6.0
type GooglePropertyExtension struct {
Type ExtensionType `yaml:"type"`
// 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 `yaml:"zoneProperty,omitempty"`
// Property-specific extensions.
GCEMachineType GCEMachineTypeExtension `yaml:"gceMachineType,omitempty"`
GCEDiskSize GCEDiskSizeExtension `yaml:"gceDiskSize,omitempty"`
GCESubnetwork GCESubnetworkExtension `yaml:"gceMachineType,omitempty"`
GCEResource GCEGenericResourceExtension `yaml:"gceSubnetwork,omitempty"`
GCEGPUType GCEGPUTypeExtension `yaml:"gceGpuType,omitempty"`
GCEGPUCount GCEGPUCountExtension `yaml:"gceGpuCount,omitempty"`
GCENetwork GCENetworkExtension `yaml:"gceNetwork,omitempty"`
GCEExternalIP GCEExternalIPExtension `yaml:"gceExternalIp,omitempty"`
GCEIPForwarding GCEIPForwardingExtension `yaml:"gceIpForwarding,omitempty"`
GCEFirewall GCEFirewallExtension `yaml:"gceFirewall,omitempty"`
GCEFirewallRange GCEFirewallRangeExtension `yaml:"gceFirewallRange,omitempty"`
GCEZone GCELocationExtension `yaml:"gceZone,omitempty"`
GCERegion GCELocationExtension `yaml:"gceRegion,omitempty"`
IAMServiceAccount IAMServiceAccountExtension `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 `yaml:"roles"`
}
type QuotaResourceType ¶ added in v0.5.4
type QuotaResourceType string
const ( GCEInstance QuotaResourceType = "GCE_INSTANCE" GCEDisk QuotaResourceType = "GCE_DISK" )
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 `yaml:"heading"`
// Longer description of the item.
// At least one description or snippet is required.
// Accepts string expressions. HTML <code><a href></code>
// tags only. At most 512 characters.
Description string `yaml:"description"`
// 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 `yaml:"snippet"`
// 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 `yaml:"showIf,omitempty"`
}
An item appearing in a list of required or suggested steps.