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.