From 2ecf021b85beb83d320b012e669005fca653b156 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Thu, 6 Jul 2023 09:57:25 -0700 Subject: [PATCH 1/7] feat: adds prcoessing logic for bpmetadata to use protobuf In order to make metadata schema definition language independent, bpmetadata now processes metadata content using protobuf. Known issues: - BlueprintVariable.DefaultValue is changed from interface{} to string. This can cause error messages while running bpmetadata on existing blueprints. Solution: run bpmetadata with -f to force creation of proto compliant metadata. - Go docs will most likely have superfluous types and methods not directly related to metadata. Solution: use protos as the source of truth for metadata definition and specs. --- .gitignore | 1 - cli/Makefile | 28 +- cli/bpmetadata/bpmetadata.pb.go | 3032 +++++++++++++++++ cli/bpmetadata/bpmetadata_ui.pb.go | 853 +++++ cli/bpmetadata/bpmetadata_ui_ext.pb.go | 1567 +++++++++ cli/bpmetadata/cmd.go | 114 +- cli/bpmetadata/display.go | 2 +- cli/bpmetadata/display_test.go | 8 +- .../int-test/goldens/golden-metadata.yaml | 121 +- cli/bpmetadata/int-test/workflow.sh | 2 +- cli/bpmetadata/markdown.go | 10 +- cli/bpmetadata/markdown_test.go | 4 +- cli/bpmetadata/path.go | 10 +- cli/bpmetadata/path_test.go | 30 +- cli/bpmetadata/proto/bpmetadata.proto | 197 +- cli/bpmetadata/proto/bpmetadata_ui.proto | 65 +- cli/bpmetadata/proto/bpmetadata_ui_ext.proto | 79 +- cli/bpmetadata/repo.go | 12 +- .../schema/gcp-blueprint-metadata.json | 88 +- cli/bpmetadata/schema/generate.go | 10 + cli/bpmetadata/tfconfig.go | 33 +- cli/bpmetadata/tfconfig_test.go | 73 +- cli/bpmetadata/types.go | 420 --- cli/bpmetadata/types_ui.go | 186 - cli/bpmetadata/types_ui_ext.go | 173 - cli/go.mod | 8 +- cli/go.sum | 12 +- .../bpmetadata/tf/sample-module/variables.tf | 12 + 28 files changed, 5952 insertions(+), 1198 deletions(-) create mode 100644 cli/bpmetadata/bpmetadata.pb.go create mode 100644 cli/bpmetadata/bpmetadata_ui.pb.go create mode 100644 cli/bpmetadata/bpmetadata_ui_ext.pb.go delete mode 100644 cli/bpmetadata/types.go delete mode 100644 cli/bpmetadata/types_ui.go delete mode 100644 cli/bpmetadata/types_ui_ext.go diff --git a/.gitignore b/.gitignore index 30a1026b3d3..43d33213e4b 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,4 @@ config-connector/tests/testcases/environments.yaml .DS_Store .vscode *.pyc -cli/bpmetadata/proto/out* cli/bpmetadata/int-test/.working diff --git a/cli/Makefile b/cli/Makefile index 8332e037b21..2f1665bc68c 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.1.10 +VERSION=v1.2.0 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin @@ -10,21 +10,33 @@ NAME=cft BUCKET=gs://cft-cli INT_TEST_DIR=./bpmetadata/int-test SCHEMA_DIR=./bpmetadata/schema -PROTO_DIR=./bpmetadata/proto +SRC_PROTO_DIR=./bpmetadata/proto +PROTOC_DIR=./bpmetadata # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" -# need an extra build command to embed an most up to date schema in the binary .PHONY: build -build: - go run ./${SCHEMA_DIR} -output=${SCHEMA_DIR} +build: build-schema go build ${LDFLAGS} -o ${BUILD_DIR}/${NAME} +.PHONY: build-schema +build-schema: + go run ./${SCHEMA_DIR} -output=${SCHEMA_DIR} + .PHONY: protoc -protoc: - protoc --go_out=${PROTO_DIR}/out --go_opt=paths=source_relative ${PROTO_DIR}/*.proto - go build ${PROTO_DIR}/out/... +protoc: protoc-deps protoc-gen + +.PHONY: protoc-gen +protoc-gen: + protoc -I=${SRC_PROTO_DIR} --go_opt=paths=source_relative --go_out=${PROTOC_DIR} ${SRC_PROTO_DIR}/*.proto + protoc-go-inject-tag -input="${PROTOC_DIR}/*.pb.go" + +.PHONY: protoc-deps +protoc-deps: + go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28 + go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2 + go install github.com/favadi/protoc-go-inject-tag@v1.4.0 .PHONY: publish publish: diff --git a/cli/bpmetadata/bpmetadata.pb.go b/cli/bpmetadata/bpmetadata.pb.go new file mode 100644 index 00000000000..785667033d0 --- /dev/null +++ b/cli/bpmetadata/bpmetadata.pb.go @@ -0,0 +1,3032 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.12 +// source: bpmetadata.proto + +package bpmetadata + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// QuotaResourceType defines the type of resource a quota is applied to. +type QuotaResourceType int32 + +const ( + QuotaResourceType_QRT_UNDEFINED QuotaResourceType = 0 + QuotaResourceType_QRT_RESOURCE_TYPE_GCE_INSTANCE QuotaResourceType = 1 + QuotaResourceType_QRT_RESOURCE_TYPE_GCE_DISK QuotaResourceType = 2 +) + +// Enum value maps for QuotaResourceType. +var ( + QuotaResourceType_name = map[int32]string{ + 0: "QRT_UNDEFINED", + 1: "QRT_RESOURCE_TYPE_GCE_INSTANCE", + 2: "QRT_RESOURCE_TYPE_GCE_DISK", + } + QuotaResourceType_value = map[string]int32{ + "QRT_UNDEFINED": 0, + "QRT_RESOURCE_TYPE_GCE_INSTANCE": 1, + "QRT_RESOURCE_TYPE_GCE_DISK": 2, + } +) + +func (x QuotaResourceType) Enum() *QuotaResourceType { + p := new(QuotaResourceType) + *p = x + return p +} + +func (x QuotaResourceType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (QuotaResourceType) Descriptor() protoreflect.EnumDescriptor { + return file_bpmetadata_proto_enumTypes[0].Descriptor() +} + +func (QuotaResourceType) Type() protoreflect.EnumType { + return &file_bpmetadata_proto_enumTypes[0] +} + +func (x QuotaResourceType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use QuotaResourceType.Descriptor instead. +func (QuotaResourceType) EnumDescriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{0} +} + +// SoftwareGroupType is a string enum representing the different types of software groups. +type SoftwareGroupType int32 + +const ( + // UNSPECIFIED is the default value for SoftwareGroupType. + SoftwareGroupType_SG_UNSPECIFIED SoftwareGroupType = 0 + // OS is a software group that represents an operating system. + SoftwareGroupType_SG_OS SoftwareGroupType = 1 +) + +// Enum value maps for SoftwareGroupType. +var ( + SoftwareGroupType_name = map[int32]string{ + 0: "SG_UNSPECIFIED", + 1: "SG_OS", + } + SoftwareGroupType_value = map[string]int32{ + "SG_UNSPECIFIED": 0, + "SG_OS": 1, + } +) + +func (x SoftwareGroupType) Enum() *SoftwareGroupType { + p := new(SoftwareGroupType) + *p = x + return p +} + +func (x SoftwareGroupType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SoftwareGroupType) Descriptor() protoreflect.EnumDescriptor { + return file_bpmetadata_proto_enumTypes[1].Descriptor() +} + +func (SoftwareGroupType) Type() protoreflect.EnumType { + return &file_bpmetadata_proto_enumTypes[1] +} + +func (x SoftwareGroupType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SoftwareGroupType.Descriptor instead. +func (SoftwareGroupType) EnumDescriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{1} +} + +// BlueprintMetadata defines the overall structure for blueprint metadata. +// The cli command i.e. `cft blueprint metadata` attempts at auto-generating +// metadata if the blueprint is structured based on the TF blueprint template +// i.e. https://github.com/terraform-google-modules/terraform-google-module-template +// All fields within BlueprintMetadata and its children are denoted as: +// - Gen: auto-generated - +// - Gen: manually-authored +// - Gen: partial (contains nested messages that can include both auto-generated and manually authored) +type BlueprintMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // APIVersion is the apiVersion field of a metadata file + // Gen: auto-generated + ApiVersion string `protobuf:"bytes,1,opt,name=api_version,json=apiVersion,proto3" json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` // @gotags: json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" + // Kind is the kind field of a metadata file + // Gen: auto-generated + Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty" yaml:"kind,omitempty"` // @gotags: json:"kind,omitempty" yaml:"kind,omitempty" + // ResourceTypeMeta is the metadata field of a metadata file + // Gen: partial + Metadata *ResourceTypeMeta `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty" yaml:"metadata,omitempty"` // @gotags: json:"metadata,omitempty" yaml:"metadata,omitempty" + // BlueprintMetadataSpec is the metadata specification for the blueprint + // Gen: partial + Spec *BlueprintMetadataSpec `protobuf:"bytes,4,opt,name=spec,proto3" json:"spec" yaml:"spec"` // @gotags: yaml:"spec" json:"spec" +} + +func (x *BlueprintMetadata) Reset() { + *x = BlueprintMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintMetadata) ProtoMessage() {} + +func (x *BlueprintMetadata) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintMetadata.ProtoReflect.Descriptor instead. +func (*BlueprintMetadata) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{0} +} + +func (x *BlueprintMetadata) GetApiVersion() string { + if x != nil { + return x.ApiVersion + } + return "" +} + +func (x *BlueprintMetadata) GetKind() string { + if x != nil { + return x.Kind + } + return "" +} + +func (x *BlueprintMetadata) GetMetadata() *ResourceTypeMeta { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *BlueprintMetadata) GetSpec() *BlueprintMetadataSpec { + if x != nil { + return x.Spec + } + return nil +} + +type ResourceTypeMeta struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name is the metadata.name field of a Resource + // Gen: auto-generated + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty" yaml:"name,omitempty"` // @gotags: json:"name,omitempty" yaml:"name,omitempty" + // Labels is the metadata.labels field of a Resource + // Gen: manually-authored + Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"labels,omitempty"` // @gotags: json:"labels,omitempty" yaml:"labels,omitempty" + // Annotations is the metadata.annotations field of a Resource. + // Gen: auto-generated + Annotations map[string]string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"annotations,omitempty"` // @gotags: json:"annotations,omitempty" yaml:"annotations,omitempty" +} + +func (x *ResourceTypeMeta) Reset() { + *x = ResourceTypeMeta{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResourceTypeMeta) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResourceTypeMeta) ProtoMessage() {} + +func (x *ResourceTypeMeta) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResourceTypeMeta.ProtoReflect.Descriptor instead. +func (*ResourceTypeMeta) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{1} +} + +func (x *ResourceTypeMeta) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ResourceTypeMeta) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *ResourceTypeMeta) GetAnnotations() map[string]string { + if x != nil { + return x.Annotations + } + return nil +} + +// BlueprintMetadataSpec defines the spec portion of the blueprint metadata. +type BlueprintMetadataSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // BlueprintInfo defines the basic information of the blueprint. + // Gen: partial + Info *BlueprintInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty" yaml:"info,omitempty"` // @gotags: json:"info,omitempty" yaml:"info,omitempty" + // BlueprintContent defines the detail for blueprint related content such as + // related documentation, diagrams, examples etc. + // Gen: partial + Content *BlueprintContent `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty" yaml:"content,omitempty"` // @gotags: json:"content,omitempty" yaml:"content,omitempty" + // BlueprintInterface defines the input and output variables for the blueprint. + // Gen: partial + Interfaces *BlueprintInterface `protobuf:"bytes,3,opt,name=interfaces,proto3" json:"interfaces,omitempty" yaml:"interfaces,omitempty"` // @gotags: json:"interfaces,omitempty" yaml:"interfaces,omitempty" + // BlueprintRequirements defines the roles required and the associated services + // that need to be enabled to provision blueprint resources. + // Gen: auto-generated + Requirements *BlueprintRequirements `protobuf:"bytes,4,opt,name=requirements,proto3" json:"requirements,omitempty" yaml:"requirements,omitempty"` // @gotags: json:"requirements,omitempty" yaml:"requirements,omitempty" + // BlueprintUI defines the user interface for the blueprint. + // Gen: partial + Ui *BlueprintUI `protobuf:"bytes,5,opt,name=ui,proto3" json:"ui,omitempty" yaml:"ui,omitempty"` // @gotags: json:"ui,omitempty" yaml:"ui,omitempty" +} + +func (x *BlueprintMetadataSpec) Reset() { + *x = BlueprintMetadataSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintMetadataSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintMetadataSpec) ProtoMessage() {} + +func (x *BlueprintMetadataSpec) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintMetadataSpec.ProtoReflect.Descriptor instead. +func (*BlueprintMetadataSpec) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{2} +} + +func (x *BlueprintMetadataSpec) GetInfo() *BlueprintInfo { + if x != nil { + return x.Info + } + return nil +} + +func (x *BlueprintMetadataSpec) GetContent() *BlueprintContent { + if x != nil { + return x.Content + } + return nil +} + +func (x *BlueprintMetadataSpec) GetInterfaces() *BlueprintInterface { + if x != nil { + return x.Interfaces + } + return nil +} + +func (x *BlueprintMetadataSpec) GetRequirements() *BlueprintRequirements { + if x != nil { + return x.Requirements + } + return nil +} + +func (x *BlueprintMetadataSpec) GetUi() *BlueprintUI { + if x != nil { + return x.Ui + } + return nil +} + +// BlueprintInfo defines the basic information of the blueprint. +type BlueprintInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Title for the blueprint. + // Gen: auto-generated - First H1 text in readme.md. + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" + // Blueprint source location and source type. + // Gen: auto-generated - user will be prompted if repo information can not + // be determined from the blueprint path. + Source *BlueprintRepoDetail `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty" yaml:"source,omitempty"` // @gotags: json:"source,omitempty" yaml:"source,omitempty" + // Last released semantic version for the packaged blueprint. + // Gen: auto-generated - 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 `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty" yaml:"version,omitempty"` // @gotags: json:"version,omitempty" yaml:"version,omitempty" + // Actuation tool e.g. Terraform and its required version. + // Gen: auto-generated + ActuationTool *BlueprintActuationTool `protobuf:"bytes,4,opt,name=actuation_tool,json=actuationTool,proto3" json:"actuationTool,omitempty" yaml:"actuationTool,omitempty"` // @gotags: json:"actuationTool,omitempty" yaml:"actuationTool,omitempty" + // Various types of descriptions associated with the blueprint. + // Gen: auto-generated + Description *BlueprintDescription `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: 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. + // Gen: auto-generated + Icon string `protobuf:"bytes,6,opt,name=icon,proto3" json:"icon,omitempty" yaml:"icon,omitempty"` // @gotags: json:"icon,omitempty" yaml:"icon,omitempty" + // The time estimate for configuring and deploying the blueprint. + // Gen: auto-generated + DeploymentDuration *BlueprintTimeEstimate `protobuf:"bytes,7,opt,name=deployment_duration,json=deploymentDuration,proto3" json:"deploymentDuration,omitempty" yaml:"deploymentDuration,omitempty"` // @gotags: json:"deploymentDuration,omitempty" yaml:"deploymentDuration,omitempty" + // The cost estimate for the blueprint based on preconfigured variables. + // Gen: auto-generated + CostEstimate *BlueprintCostEstimate `protobuf:"bytes,8,opt,name=cost_estimate,json=costEstimate,proto3" json:"costEstimate,omitempty" yaml:"costEstimate,omitempty"` // @gotags: json:"costEstimate,omitempty" yaml:"costEstimate,omitempty" + // A list of GCP cloud products used in the blueprint. + // Gen: manually-authored + CloudProducts []*BlueprintCloudProduct `protobuf:"bytes,9,rep,name=cloud_products,json=cloudProducts,proto3" json:"cloudProducts,omitempty" yaml:"cloudProducts,omitempty"` // @gotags: json:"cloudProducts,omitempty" yaml:"cloudProducts,omitempty" + // A configuration of fixed and dynamic GCP quotas that apply to the blueprint. + // Gen: manually-authored + QuotaDetails []*BlueprintQuotaDetail `protobuf:"bytes,10,rep,name=quota_details,json=quotaDetails,proto3" json:"quotaDetails,omitempty" yaml:"quotaDetails,omitempty"` // @gotags: json:"quotaDetails,omitempty" yaml:"quotaDetails,omitempty" + // Details on the author producing the blueprint. + // Gen: manually-authored + Author *BlueprintAuthor `protobuf:"bytes,11,opt,name=author,proto3" json:"author,omitempty" yaml:"author,omitempty"` // @gotags: json:"author,omitempty" yaml:"author,omitempty" + // Details on software installed as part of the blueprint. + // Gen: manually-authored + SoftwareGroups []*BlueprintSoftwareGroup `protobuf:"bytes,12,rep,name=software_groups,json=softwareGroups,proto3" json:"softwareGroups,omitempty" yaml:"softwareGroups,omitempty"` // @gotags: json:"softwareGroups,omitempty" yaml:"softwareGroups,omitempty" + // Support offered, if any for the blueprint. + // Gen: manually-authored + SupportInfo *BlueprintSupport `protobuf:"bytes,13,opt,name=support_info,json=supportInfo,proto3" json:"supportInfo,omitempty" yaml:"supportInfo,omitempty"` // @gotags: json:"supportInfo,omitempty" yaml:"supportInfo,omitempty" + // A list of GCP org policies to be checked for successful deployment. + // Gen: manually-authored + OrgPolicyChecks []*BlueprintOrgPolicyCheck `protobuf:"bytes,14,rep,name=org_policy_checks,json=orgPolicyChecks,proto3" json:"orgPolicyChecks,omitempty" yaml:"orgPolicyChecks,omitempty"` // @gotags: json:"orgPolicyChecks,omitempty" yaml:"orgPolicyChecks,omitempty" + // Specifies if the blueprint supports single or multiple deployments per GCP project. + // If set to true, the blueprint can not be deployed more than once in the same GCP project. + // Gen: manually-authored + SingleDeployment bool `protobuf:"varint,15,opt,name=single_deployment,json=singleDeployment,proto3" json:"singleDeployment,omitempty" yaml:"singleDeployment,omitempty"` // @gotags: json:"singleDeployment,omitempty" yaml:"singleDeployment,omitempty" +} + +func (x *BlueprintInfo) Reset() { + *x = BlueprintInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintInfo) ProtoMessage() {} + +func (x *BlueprintInfo) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintInfo.ProtoReflect.Descriptor instead. +func (*BlueprintInfo) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{3} +} + +func (x *BlueprintInfo) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *BlueprintInfo) GetSource() *BlueprintRepoDetail { + if x != nil { + return x.Source + } + return nil +} + +func (x *BlueprintInfo) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *BlueprintInfo) GetActuationTool() *BlueprintActuationTool { + if x != nil { + return x.ActuationTool + } + return nil +} + +func (x *BlueprintInfo) GetDescription() *BlueprintDescription { + if x != nil { + return x.Description + } + return nil +} + +func (x *BlueprintInfo) GetIcon() string { + if x != nil { + return x.Icon + } + return "" +} + +func (x *BlueprintInfo) GetDeploymentDuration() *BlueprintTimeEstimate { + if x != nil { + return x.DeploymentDuration + } + return nil +} + +func (x *BlueprintInfo) GetCostEstimate() *BlueprintCostEstimate { + if x != nil { + return x.CostEstimate + } + return nil +} + +func (x *BlueprintInfo) GetCloudProducts() []*BlueprintCloudProduct { + if x != nil { + return x.CloudProducts + } + return nil +} + +func (x *BlueprintInfo) GetQuotaDetails() []*BlueprintQuotaDetail { + if x != nil { + return x.QuotaDetails + } + return nil +} + +func (x *BlueprintInfo) GetAuthor() *BlueprintAuthor { + if x != nil { + return x.Author + } + return nil +} + +func (x *BlueprintInfo) GetSoftwareGroups() []*BlueprintSoftwareGroup { + if x != nil { + return x.SoftwareGroups + } + return nil +} + +func (x *BlueprintInfo) GetSupportInfo() *BlueprintSupport { + if x != nil { + return x.SupportInfo + } + return nil +} + +func (x *BlueprintInfo) GetOrgPolicyChecks() []*BlueprintOrgPolicyCheck { + if x != nil { + return x.OrgPolicyChecks + } + return nil +} + +func (x *BlueprintInfo) GetSingleDeployment() bool { + if x != nil { + return x.SingleDeployment + } + return false +} + +// BlueprintContent defines the detail for blueprint related content such as +// related documentation, diagrams, examples etc. +type BlueprintContent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated + Architecture *BlueprintArchitecture `protobuf:"bytes,1,opt,name=architecture,proto3" json:"architecture,omitempty" yaml:"architecture,omitempty"` // @gotags: json:"architecture,omitempty" yaml:"architecture,omitempty" + // Gen: manually-authored + Diagrams []*BlueprintDiagram `protobuf:"bytes,2,rep,name=diagrams,proto3" json:"diagrams,omitempty" yaml:"diagrams,omitempty"` // @gotags: json:"diagrams,omitempty" yaml:"diagrams,omitempty" + // Gen: auto-generated - the list content following the "## Documentation" tag. E.g. + // ## Documentation + // - [Hosting a Static Website](https://cloud.google.com/storage/docs/hosting-static-website) + Documentation []*BlueprintListContent `protobuf:"bytes,3,rep,name=documentation,proto3" json:"documentation,omitempty" yaml:"documentation,omitempty"` // @gotags: json:"documentation,omitempty" yaml:"documentation,omitempty" + // Gen: auto-generated - blueprints under the modules/ folder. + SubBlueprints []*BlueprintMiscContent `protobuf:"bytes,4,rep,name=sub_blueprints,json=subBlueprints,proto3" json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty"` // @gotags: json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty" + // Gen: auto-generated - examples under the examples/ folder. + Examples []*BlueprintMiscContent `protobuf:"bytes,5,rep,name=examples,proto3" json:"examples,omitempty" yaml:"examples,omitempty"` // @gotags: json:"examples,omitempty" yaml:"examples,omitempty" +} + +func (x *BlueprintContent) Reset() { + *x = BlueprintContent{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintContent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintContent) ProtoMessage() {} + +func (x *BlueprintContent) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintContent.ProtoReflect.Descriptor instead. +func (*BlueprintContent) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{4} +} + +func (x *BlueprintContent) GetArchitecture() *BlueprintArchitecture { + if x != nil { + return x.Architecture + } + return nil +} + +func (x *BlueprintContent) GetDiagrams() []*BlueprintDiagram { + if x != nil { + return x.Diagrams + } + return nil +} + +func (x *BlueprintContent) GetDocumentation() []*BlueprintListContent { + if x != nil { + return x.Documentation + } + return nil +} + +func (x *BlueprintContent) GetSubBlueprints() []*BlueprintMiscContent { + if x != nil { + return x.SubBlueprints + } + return nil +} + +func (x *BlueprintContent) GetExamples() []*BlueprintMiscContent { + if x != nil { + return x.Examples + } + return nil +} + +// BlueprintInterface defines the input and output variables for the blueprint. +type BlueprintInterface struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - all defined variables for the blueprint + Variables []*BlueprintVariable `protobuf:"bytes,1,rep,name=variables,proto3" json:"variables,omitempty" yaml:"variables,omitempty"` // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" + // Gen: manually-authored + VariableGroups []*BlueprintVariableGroup `protobuf:"bytes,2,rep,name=variable_groups,json=variableGroups,proto3" json:"variableGroups,omitempty" yaml:"variableGroups,omitempty"` // @gotags: json:"variableGroups,omitempty" yaml:"variableGroups,omitempty" + // Gen: auto-generated - all defined outputs for the blueprint + Outputs []*BlueprintOutput `protobuf:"bytes,3,rep,name=outputs,proto3" json:"outputs,omitempty" yaml:"outputs,omitempty"` // @gotags: json:"outputs,omitempty" yaml:"outputs,omitempty" +} + +func (x *BlueprintInterface) Reset() { + *x = BlueprintInterface{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintInterface) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintInterface) ProtoMessage() {} + +func (x *BlueprintInterface) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintInterface.ProtoReflect.Descriptor instead. +func (*BlueprintInterface) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{5} +} + +func (x *BlueprintInterface) GetVariables() []*BlueprintVariable { + if x != nil { + return x.Variables + } + return nil +} + +func (x *BlueprintInterface) GetVariableGroups() []*BlueprintVariableGroup { + if x != nil { + return x.VariableGroups + } + return nil +} + +func (x *BlueprintInterface) GetOutputs() []*BlueprintOutput { + if x != nil { + return x.Outputs + } + return nil +} + +// BlueprintRequirements defines the roles required and the associated services +// that need to be enabled to provision blueprint resources. +type BlueprintRequirements struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - all roles required for the blueprint in test/setup/iam.tf + // as the "int_required_roles" local. E.g. + // + // locals { + // int_required_roles = [ + // "roles/compute.admin", + // ] + // } + Roles []*BlueprintRoles `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles,omitempty" yaml:"roles,omitempty"` // @gotags: json:"roles,omitempty" yaml:"roles,omitempty" + // Gen: auto-generated - all services required for the blueprint in test/setup/main.tf + // as "activate_apis" in the project module. + Services []string `protobuf:"bytes,2,rep,name=services,proto3" json:"services,omitempty" yaml:"services,omitempty"` // @gotags: json:"services,omitempty" yaml:"services,omitempty" +} + +func (x *BlueprintRequirements) Reset() { + *x = BlueprintRequirements{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintRequirements) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintRequirements) ProtoMessage() {} + +func (x *BlueprintRequirements) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintRequirements.ProtoReflect.Descriptor instead. +func (*BlueprintRequirements) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{6} +} + +func (x *BlueprintRequirements) GetRoles() []*BlueprintRoles { + if x != nil { + return x.Roles + } + return nil +} + +func (x *BlueprintRequirements) GetServices() []string { + if x != nil { + return x.Services + } + return nil +} + +// BlueprintUI is the top-level structure for holding UI specific metadata. +type BlueprintUI struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The top-level input section that defines the list of variables and + // their sections on the deployment page. + // Gen: partial + Input *BlueprintUIInput `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty" yaml:"input,omitempty"` // @gotags: 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. + // Gen: manually-authored + Runtime *BlueprintUIOutput `protobuf:"bytes,2,opt,name=runtime,proto3" json:"runtime,omitempty" yaml:"runtime,omitempty"` // @gotags: json:"runtime,omitempty" yaml:"runtime,omitempty" +} + +func (x *BlueprintUI) Reset() { + *x = BlueprintUI{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintUI) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintUI) ProtoMessage() {} + +func (x *BlueprintUI) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintUI.ProtoReflect.Descriptor instead. +func (*BlueprintUI) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{7} +} + +func (x *BlueprintUI) GetInput() *BlueprintUIInput { + if x != nil { + return x.Input + } + return nil +} + +func (x *BlueprintUI) GetRuntime() *BlueprintUIOutput { + if x != nil { + return x.Runtime + } + return nil +} + +type BlueprintRepoDetail struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - URL from the .git dir. + // Can be manually overridden with a custom URL if needed. + Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo" yaml:"repo"` // @gotags: json:"repo" yaml:"repo" + // Gen: auto-generated - set as "git" for now until more + // types are supported. + SourceType string `protobuf:"bytes,2,opt,name=source_type,json=sourceType,proto3" json:"sourceType" yaml:"sourceType"` // @gotags: json:"sourceType" yaml:"sourceType" + // Gen: auto-generated - not set for root modules but + // set as the module name for submodules, if found. + Dir string `protobuf:"bytes,3,opt,name=dir,proto3" json:"dir,omitempty" yaml:"dir,omitempty"` // @gotags: json:"dir,omitempty" yaml:"dir,omitempty" +} + +func (x *BlueprintRepoDetail) Reset() { + *x = BlueprintRepoDetail{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintRepoDetail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintRepoDetail) ProtoMessage() {} + +func (x *BlueprintRepoDetail) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintRepoDetail.ProtoReflect.Descriptor instead. +func (*BlueprintRepoDetail) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{8} +} + +func (x *BlueprintRepoDetail) GetRepo() string { + if x != nil { + return x.Repo + } + return "" +} + +func (x *BlueprintRepoDetail) GetSourceType() string { + if x != nil { + return x.SourceType + } + return "" +} + +func (x *BlueprintRepoDetail) GetDir() string { + if x != nil { + return x.Dir + } + return "" +} + +// BlueprintActuationTool defines the actuation tool used to provision the blueprint. +type BlueprintActuationTool struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - set as "Terraform" for now until + // more flavors are supported. + Flavor string `protobuf:"bytes,1,opt,name=flavor,proto3" json:"flavor,omitempty" yaml:"flavor,omitempty"` // @gotags: json:"flavor,omitempty" yaml:"flavor,omitempty" + // Required version for the actuation tool. + // Gen: auto-generated - For Terraform this is the `required_version` + // set in `terraform` block. E.g. + // + // terraform { + // required_version = ">= 0.13" + // } + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty" yaml:"version,omitempty"` // @gotags: json:"version,omitempty" yaml:"version,omitempty" +} + +func (x *BlueprintActuationTool) Reset() { + *x = BlueprintActuationTool{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintActuationTool) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintActuationTool) ProtoMessage() {} + +func (x *BlueprintActuationTool) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintActuationTool.ProtoReflect.Descriptor instead. +func (*BlueprintActuationTool) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{9} +} + +func (x *BlueprintActuationTool) GetFlavor() string { + if x != nil { + return x.Flavor + } + return "" +} + +func (x *BlueprintActuationTool) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +// All descriptions are set with the markdown content immediately +// after each type's heading declaration in readme.md. +type BlueprintDescription struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - Markdown after "### Tagline". + Tagline string `protobuf:"bytes,1,opt,name=tagline,proto3" json:"tagline,omitempty" yaml:"tagline,omitempty"` // @gotags: json:"tagline,omitempty" yaml:"tagline,omitempty" + // Gen: auto-generated - Markdown after "### Detailed". + Detailed string `protobuf:"bytes,2,opt,name=detailed,proto3" json:"detailed,omitempty" yaml:"detailed,omitempty"` // @gotags: json:"detailed,omitempty" yaml:"detailed,omitempty" + // Gen: auto-generated - Markdown after "### PreDeploy". + PreDeploy string `protobuf:"bytes,3,opt,name=pre_deploy,json=preDeploy,proto3" json:"preDeploy,omitempty" yaml:"preDeploy,omitempty"` // @gotags: json:"preDeploy,omitempty" yaml:"preDeploy,omitempty" + // Gen: auto-generated - Markdown after "### Html". + Html string `protobuf:"bytes,4,opt,name=html,proto3" json:"html,omitempty" yaml:"html,omitempty"` // @gotags: json:"html,omitempty" yaml:"html,omitempty" + // Gen: auto-generated - Markdown after "### EulaUrls". + EulaUrls []string `protobuf:"bytes,5,rep,name=eula_urls,json=eulaUrls,proto3" json:"eulaUrls,omitempty" yaml:"eulaUrls,omitempty"` // @gotags: json:"eulaUrls,omitempty" yaml:"eulaUrls,omitempty" + // Gen: auto-generated - Markdown after "### Architecture" + // Deprecated. Use BlueprintContent.Architecture instead. + Architecture []string `protobuf:"bytes,6,rep,name=architecture,proto3" json:"architecture,omitempty" yaml:"architecture,omitempty"` // @gotags: json:"architecture,omitempty" yaml:"architecture,omitempty" +} + +func (x *BlueprintDescription) Reset() { + *x = BlueprintDescription{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintDescription) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintDescription) ProtoMessage() {} + +func (x *BlueprintDescription) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintDescription.ProtoReflect.Descriptor instead. +func (*BlueprintDescription) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{10} +} + +func (x *BlueprintDescription) GetTagline() string { + if x != nil { + return x.Tagline + } + return "" +} + +func (x *BlueprintDescription) GetDetailed() string { + if x != nil { + return x.Detailed + } + return "" +} + +func (x *BlueprintDescription) GetPreDeploy() string { + if x != nil { + return x.PreDeploy + } + return "" +} + +func (x *BlueprintDescription) GetHtml() string { + if x != nil { + return x.Html + } + return "" +} + +func (x *BlueprintDescription) GetEulaUrls() []string { + if x != nil { + return x.EulaUrls + } + return nil +} + +func (x *BlueprintDescription) GetArchitecture() []string { + if x != nil { + return x.Architecture + } + return nil +} + +// A time estimate in secs required for configuring and deploying the blueprint. +type BlueprintTimeEstimate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - Set using the content defined under "### DeploymentTime" E.g. + // ### DeploymentTime + // - Configuration: X secs + // - Deployment: Y secs + ConfigurationSecs int32 `protobuf:"varint,1,opt,name=configuration_secs,json=configurationSecs,proto3" json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty"` // @gotags: json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty" + DeploymentSecs int32 `protobuf:"varint,2,opt,name=deployment_secs,json=deploymentSecs,proto3" json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty"` // @gotags: json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty" +} + +func (x *BlueprintTimeEstimate) Reset() { + *x = BlueprintTimeEstimate{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintTimeEstimate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintTimeEstimate) ProtoMessage() {} + +func (x *BlueprintTimeEstimate) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintTimeEstimate.ProtoReflect.Descriptor instead. +func (*BlueprintTimeEstimate) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{11} +} + +func (x *BlueprintTimeEstimate) GetConfigurationSecs() int32 { + if x != nil { + return x.ConfigurationSecs + } + return 0 +} + +func (x *BlueprintTimeEstimate) GetDeploymentSecs() int32 { + if x != nil { + return x.DeploymentSecs + } + return 0 +} + +// The cost estimate for the blueprint based on pre-configured variables. +type BlueprintCostEstimate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - Set using the content defined under "### Cost" as a link + // with a description E.g. + // ### Cost + // [$20.00](https://cloud.google.com/products/calculator?hl=en_US&_ga=2.1665458.-226505189.1675191136#id=02fb0c45-cc29-4567-8cc6-f72ac9024add) + Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description" yaml:"description"` // @gotags: json:"description" yaml:"description" + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url" yaml:"url"` // @gotags: json:"url" yaml:"url" +} + +func (x *BlueprintCostEstimate) Reset() { + *x = BlueprintCostEstimate{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintCostEstimate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintCostEstimate) ProtoMessage() {} + +func (x *BlueprintCostEstimate) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintCostEstimate.ProtoReflect.Descriptor instead. +func (*BlueprintCostEstimate) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{12} +} + +func (x *BlueprintCostEstimate) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *BlueprintCostEstimate) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +// GCP cloud product(s) used in the blueprint. +type BlueprintCloudProduct struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A top-level (e.g. "Compute Engine") or secondary (e.g. "Binary Authorization") + // product used in the blueprint. + // Gen: manually-authored + ProductId string `protobuf:"bytes,1,opt,name=product_id,json=productId,proto3" json:"productId,omitempty" yaml:"productId,omitempty"` // @gotags: json:"productId,omitempty" yaml:"productId,omitempty" + // Url for the product. + // Gen: manually-authored + PageUrl string `protobuf:"bytes,2,opt,name=page_url,json=pageUrl,proto3" json:"pageUrl" yaml:"pageUrl"` // @gotags: json:"pageUrl" yaml:"pageUrl" + // A label string for the product, if it is not an integrated GCP product. + // E.g. "Data Studio" + // Gen: manually-authored + Label string `protobuf:"bytes,3,opt,name=label,proto3" json:"label,omitempty" yaml:"label,omitempty"` // @gotags: json:"label,omitempty" yaml:"label,omitempty" + // Is the product's landing page external to the GCP console e.g. + // lookerstudio.google.com + // Gen: manually-authored + IsExternal bool `protobuf:"varint,4,opt,name=is_external,json=isExternal,proto3" json:"isExternal,omitempty" yaml:"isExternal,omitempty"` // @gotags: json:"isExternal,omitempty" yaml:"isExternal,omitempty" +} + +func (x *BlueprintCloudProduct) Reset() { + *x = BlueprintCloudProduct{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintCloudProduct) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintCloudProduct) ProtoMessage() {} + +func (x *BlueprintCloudProduct) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintCloudProduct.ProtoReflect.Descriptor instead. +func (*BlueprintCloudProduct) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{13} +} + +func (x *BlueprintCloudProduct) GetProductId() string { + if x != nil { + return x.ProductId + } + return "" +} + +func (x *BlueprintCloudProduct) GetPageUrl() string { + if x != nil { + return x.PageUrl + } + return "" +} + +func (x *BlueprintCloudProduct) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +func (x *BlueprintCloudProduct) GetIsExternal() bool { + if x != nil { + return x.IsExternal + } + return false +} + +// BlueprintOrgPolicyCheck defines GCP org policies to be checked +// for successful deployment +type BlueprintOrgPolicyCheck struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Id for the policy e.g. "compute-vmExternalIpAccess" + // Gen: manually-authored + PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policyId" yaml:"policyId"` // @gotags: json:"policyId" yaml:"policyId" + // If not set, it is assumed any version of this org policy + // prevents successful deployment of this solution. + // Gen: manually-authored + RequiredValues []string `protobuf:"bytes,2,rep,name=required_values,json=requiredValues,proto3" json:"requiredValues,omitempty" yaml:"requiredValues,omitempty"` // @gotags: json:"requiredValues,omitempty" yaml:"requiredValues,omitempty" +} + +func (x *BlueprintOrgPolicyCheck) Reset() { + *x = BlueprintOrgPolicyCheck{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintOrgPolicyCheck) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintOrgPolicyCheck) ProtoMessage() {} + +func (x *BlueprintOrgPolicyCheck) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintOrgPolicyCheck.ProtoReflect.Descriptor instead. +func (*BlueprintOrgPolicyCheck) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{14} +} + +func (x *BlueprintOrgPolicyCheck) GetPolicyId() string { + if x != nil { + return x.PolicyId + } + return "" +} + +func (x *BlueprintOrgPolicyCheck) GetRequiredValues() []string { + if x != nil { + return x.RequiredValues + } + return nil +} + +// BlueprintQuotaDetail defines the quota details for a blueprint. +type BlueprintQuotaDetail struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // 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. + // Gen: manually-authored + DynamicVariable string `protobuf:"bytes,1,opt,name=dynamic_variable,json=dynamicVariable,proto3" json:"dynamicVariable,omitempty" yaml:"dynamicVariable,omitempty"` // @gotags: json:"dynamicVariable,omitempty" yaml:"dynamicVariable,omitempty" + // ResourceType is the type of resource the quota will be applied to i.e. + // GCE Instance or Disk etc. + // Gen: manually-authored + ResourceType QuotaResourceType `protobuf:"varint,2,opt,name=resource_type,json=resourceType,proto3,enum=google.cloud.config.bpmetadata.QuotaResourceType" json:"resourceType" yaml:"resourceType"` // @gotags: json:"resourceType" yaml:"resourceType" + // QuotaType is a key/value pair of the actual quotas and their corresponding + // values. Valid keys for quota_type can be: + // MACHINE_TYPE, + // CPUs, + // DISK_TYPE OR + // SIZE_GB. + // Gen: manually-authored + QuotaType map[string]string `protobuf:"bytes,3,rep,name=quota_type,json=quotaType,proto3" json:"quotaType" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"quotaType"` // @gotags: json:"quotaType" yaml:"quotaType" +} + +func (x *BlueprintQuotaDetail) Reset() { + *x = BlueprintQuotaDetail{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintQuotaDetail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintQuotaDetail) ProtoMessage() {} + +func (x *BlueprintQuotaDetail) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintQuotaDetail.ProtoReflect.Descriptor instead. +func (*BlueprintQuotaDetail) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{15} +} + +func (x *BlueprintQuotaDetail) GetDynamicVariable() string { + if x != nil { + return x.DynamicVariable + } + return "" +} + +func (x *BlueprintQuotaDetail) GetResourceType() QuotaResourceType { + if x != nil { + return x.ResourceType + } + return QuotaResourceType_QRT_UNDEFINED +} + +func (x *BlueprintQuotaDetail) GetQuotaType() map[string]string { + if x != nil { + return x.QuotaType + } + return nil +} + +// BlueprintAuthor defines the author of a blueprint. +type BlueprintAuthor struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of template author or organization. + // Gen: manually-authored + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" + // Description of the author. + // Gen: manually-authored + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" + // Link to the author's website. + // Gen: manually-authored + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty" yaml:"url,omitempty"` // @gotags: json:"url,omitempty" yaml:"url,omitempty" +} + +func (x *BlueprintAuthor) Reset() { + *x = BlueprintAuthor{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintAuthor) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintAuthor) ProtoMessage() {} + +func (x *BlueprintAuthor) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintAuthor.ProtoReflect.Descriptor instead. +func (*BlueprintAuthor) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{16} +} + +func (x *BlueprintAuthor) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *BlueprintAuthor) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *BlueprintAuthor) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +// A group of related software components for the blueprint. +type BlueprintSoftwareGroup struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Pre-defined software types. + // Gen: manually-authored + Type SoftwareGroupType `protobuf:"varint,1,opt,name=type,proto3,enum=google.cloud.config.bpmetadata.SoftwareGroupType" json:"type,omitempty" yaml:"type,omitempty"` // @gotags: json:"type,omitempty" yaml:"type,omitempty" + // Software components belonging to this group. + // Gen: manually-authored + Software []*BlueprintSoftware `protobuf:"bytes,2,rep,name=software,proto3" json:"software,omitempty" yaml:"software,omitempty"` // @gotags: json:"software,omitempty" yaml:"software,omitempty" +} + +func (x *BlueprintSoftwareGroup) Reset() { + *x = BlueprintSoftwareGroup{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintSoftwareGroup) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintSoftwareGroup) ProtoMessage() {} + +func (x *BlueprintSoftwareGroup) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintSoftwareGroup.ProtoReflect.Descriptor instead. +func (*BlueprintSoftwareGroup) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{17} +} + +func (x *BlueprintSoftwareGroup) GetType() SoftwareGroupType { + if x != nil { + return x.Type + } + return SoftwareGroupType_SG_UNSPECIFIED +} + +func (x *BlueprintSoftwareGroup) GetSoftware() []*BlueprintSoftware { + if x != nil { + return x.Software + } + return nil +} + +// A description of a piece of a single software component +// installed by the blueprint. +type BlueprintSoftware struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // User-visible title. + // Gen: manually-authored + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" + // Software version. + // Gen: manually-authored + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty" yaml:"version,omitempty"` // @gotags: json:"version,omitempty" yaml:"version,omitempty" + // Link to development site or marketing page for this software. + // Gen: manually-authored + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty" yaml:"url,omitempty"` // @gotags: json:"url,omitempty" yaml:"url,omitempty" + // Link to license page. + // Gen: manually-authored + LicenseUrl string `protobuf:"bytes,4,opt,name=license_url,json=licenseUrl,proto3" json:"licenseUrl,omitempty" yaml:"licenseUrl,omitempty"` // @gotags: json:"licenseUrl,omitempty" yaml:"licenseUrl,omitempty" +} + +func (x *BlueprintSoftware) Reset() { + *x = BlueprintSoftware{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintSoftware) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintSoftware) ProtoMessage() {} + +func (x *BlueprintSoftware) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintSoftware.ProtoReflect.Descriptor instead. +func (*BlueprintSoftware) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{18} +} + +func (x *BlueprintSoftware) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *BlueprintSoftware) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *BlueprintSoftware) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *BlueprintSoftware) GetLicenseUrl() string { + if x != nil { + return x.LicenseUrl + } + return "" +} + +// A description of a support option +type BlueprintSupport struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Description of the support option. + // Gen: manually-authored + Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description" yaml:"description"` // @gotags: json:"description" yaml:"description" + // Link to the page providing this support option. + // Gen: manually-authored + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty" yaml:"url,omitempty"` // @gotags: json:"url,omitempty" yaml:"url,omitempty" + // The organization or group that provides the support option (e.g.: + // "Community", "Google"). + // Gen: manually-authored + Entity string `protobuf:"bytes,3,opt,name=entity,proto3" json:"entity,omitempty" yaml:"entity,omitempty"` // @gotags: json:"entity,omitempty" yaml:"entity,omitempty" + // Whether to show the customer's support ID. + // Gen: manually-authored + ShowSupportId bool `protobuf:"varint,4,opt,name=show_support_id,json=showSupportId,proto3" json:"showSupportId,omitempty" yaml:"showSupportId,omitempty"` // @gotags: json:"showSupportId,omitempty" yaml:"showSupportId,omitempty" +} + +func (x *BlueprintSupport) Reset() { + *x = BlueprintSupport{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintSupport) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintSupport) ProtoMessage() {} + +func (x *BlueprintSupport) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintSupport.ProtoReflect.Descriptor instead. +func (*BlueprintSupport) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{19} +} + +func (x *BlueprintSupport) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *BlueprintSupport) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *BlueprintSupport) GetEntity() string { + if x != nil { + return x.Entity + } + return "" +} + +func (x *BlueprintSupport) GetShowSupportId() bool { + if x != nil { + return x.ShowSupportId + } + return false +} + +type BlueprintArchitecture struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - the URL & list content following the "## Architecture" tag e.g. + // ## Architecture + // ![Blueprint Architecture](assets/architecture.png) + // 1. Step no. 1 + // 2. Step no. 2 + // 3. Step no. 3 + DiagramUrl string `protobuf:"bytes,1,opt,name=diagram_url,json=diagramUrl,proto3" json:"diagramUrl" yaml:"diagramUrl"` // @gotags: json:"diagramUrl" yaml:"diagramUrl" + // Gen: auto-generated - the list items following the "## Architecture" tag. + Description []string `protobuf:"bytes,2,rep,name=description,proto3" json:"description" yaml:"description"` // @gotags: json:"description" yaml:"description" +} + +func (x *BlueprintArchitecture) Reset() { + *x = BlueprintArchitecture{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintArchitecture) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintArchitecture) ProtoMessage() {} + +func (x *BlueprintArchitecture) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintArchitecture.ProtoReflect.Descriptor instead. +func (*BlueprintArchitecture) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{20} +} + +func (x *BlueprintArchitecture) GetDiagramUrl() string { + if x != nil { + return x.DiagramUrl + } + return "" +} + +func (x *BlueprintArchitecture) GetDescription() []string { + if x != nil { + return x.Description + } + return nil +} + +type BlueprintMiscContent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + Location string `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty" yaml:"location,omitempty"` // @gotags: json:"location,omitempty" yaml:"location,omitempty" +} + +func (x *BlueprintMiscContent) Reset() { + *x = BlueprintMiscContent{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintMiscContent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintMiscContent) ProtoMessage() {} + +func (x *BlueprintMiscContent) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintMiscContent.ProtoReflect.Descriptor instead. +func (*BlueprintMiscContent) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{21} +} + +func (x *BlueprintMiscContent) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *BlueprintMiscContent) GetLocation() string { + if x != nil { + return x.Location + } + return "" +} + +type BlueprintDiagram struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + AltText string `protobuf:"bytes,2,opt,name=alt_text,json=altText,proto3" json:"altText,omitempty" yaml:"altText,omitempty"` // @gotags: json:"altText,omitempty" yaml:"altText,omitempty" + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" +} + +func (x *BlueprintDiagram) Reset() { + *x = BlueprintDiagram{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintDiagram) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintDiagram) ProtoMessage() {} + +func (x *BlueprintDiagram) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintDiagram.ProtoReflect.Descriptor instead. +func (*BlueprintDiagram) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{22} +} + +func (x *BlueprintDiagram) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *BlueprintDiagram) GetAltText() string { + if x != nil { + return x.AltText + } + return "" +} + +func (x *BlueprintDiagram) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +type BlueprintListContent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty" yaml:"url,omitempty"` // @gotags: json:"url,omitempty" yaml:"url,omitempty" +} + +func (x *BlueprintListContent) Reset() { + *x = BlueprintListContent{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintListContent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintListContent) ProtoMessage() {} + +func (x *BlueprintListContent) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintListContent.ProtoReflect.Descriptor instead. +func (*BlueprintListContent) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{23} +} + +func (x *BlueprintListContent) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *BlueprintListContent) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +type BlueprintVariable struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty" yaml:"name,omitempty"` // @gotags: json:"name,omitempty" yaml:"name,omitempty" + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" + VarType string `protobuf:"bytes,3,opt,name=var_type,json=varType,proto3" json:"varType,omitempty" yaml:"varType,omitempty"` // @gotags: json:"varType,omitempty" yaml:"varType,omitempty" + DefaultValue string `protobuf:"bytes,4,opt,name=default_value,json=defaultValue,proto3" json:"defaultValue,omitempty" yaml:"defaultValue,omitempty"` // @gotags: json:"defaultValue,omitempty" yaml:"defaultValue,omitempty" + Required bool `protobuf:"varint,5,opt,name=required,proto3" json:"required,omitempty" yaml:"required,omitempty"` // @gotags: json:"required,omitempty" yaml:"required,omitempty" +} + +func (x *BlueprintVariable) Reset() { + *x = BlueprintVariable{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintVariable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintVariable) ProtoMessage() {} + +func (x *BlueprintVariable) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintVariable.ProtoReflect.Descriptor instead. +func (*BlueprintVariable) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{24} +} + +func (x *BlueprintVariable) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *BlueprintVariable) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *BlueprintVariable) GetVarType() string { + if x != nil { + return x.VarType + } + return "" +} + +func (x *BlueprintVariable) GetDefaultValue() string { + if x != nil { + return x.DefaultValue + } + return "" +} + +func (x *BlueprintVariable) GetRequired() bool { + if x != nil { + return x.Required + } + return false +} + +// BlueprintVariableGroup is manually entered. +type BlueprintVariableGroup struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" + Variables []string `protobuf:"bytes,3,rep,name=variables,proto3" json:"variables,omitempty" yaml:"variables,omitempty"` // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" +} + +func (x *BlueprintVariableGroup) Reset() { + *x = BlueprintVariableGroup{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintVariableGroup) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintVariableGroup) ProtoMessage() {} + +func (x *BlueprintVariableGroup) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintVariableGroup.ProtoReflect.Descriptor instead. +func (*BlueprintVariableGroup) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{25} +} + +func (x *BlueprintVariableGroup) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *BlueprintVariableGroup) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *BlueprintVariableGroup) GetVariables() []string { + if x != nil { + return x.Variables + } + return nil +} + +type BlueprintOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" +} + +func (x *BlueprintOutput) Reset() { + *x = BlueprintOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintOutput) ProtoMessage() {} + +func (x *BlueprintOutput) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintOutput.ProtoReflect.Descriptor instead. +func (*BlueprintOutput) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{26} +} + +func (x *BlueprintOutput) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *BlueprintOutput) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +type BlueprintRoles struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Level string `protobuf:"bytes,1,opt,name=level,proto3" json:"level" yaml:"level"` // @gotags: json:"level" yaml:"level" + Roles []string `protobuf:"bytes,2,rep,name=roles,proto3" json:"roles" yaml:"roles"` // @gotags: json:"roles" yaml:"roles" +} + +func (x *BlueprintRoles) Reset() { + *x = BlueprintRoles{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintRoles) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintRoles) ProtoMessage() {} + +func (x *BlueprintRoles) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintRoles.ProtoReflect.Descriptor instead. +func (*BlueprintRoles) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{27} +} + +func (x *BlueprintRoles) GetLevel() string { + if x != nil { + return x.Level + } + return "" +} + +func (x *BlueprintRoles) GetRoles() []string { + if x != nil { + return x.Roles + } + return nil +} + +var File_bpmetadata_proto protoreflect.FileDescriptor + +var file_bpmetadata_proto_rawDesc = []byte{ + 0x0a, 0x10, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x1a, 0x13, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, + 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe1, 0x01, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, + 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, + 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, + 0x6e, 0x64, 0x12, 0x4c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x49, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0xdc, 0x02, 0x0a, 0x10, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x61, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x63, 0x0a, 0x0b, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, + 0x61, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, + 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x92, 0x03, 0x0a, 0x15, 0x42, + 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x53, 0x70, 0x65, 0x63, 0x12, 0x41, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x0a, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, + 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x02, 0x75, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x52, 0x02, 0x75, 0x69, 0x22, + 0xe5, 0x08, 0x0a, 0x0d, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x06, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5d, + 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6f, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x41, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6f, 0x6c, 0x52, 0x0d, + 0x61, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6f, 0x6c, 0x12, 0x56, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x66, 0x0a, 0x13, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x12, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x5a, 0x0a, 0x0d, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, + 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, + 0x0c, 0x63, 0x6f, 0x73, 0x74, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x5c, 0x0a, + 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, + 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x0d, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x59, 0x0a, 0x0d, 0x71, + 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x6f, + 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x47, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, + 0x5f, 0x0a, 0x0f, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x52, 0x0e, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x12, 0x53, 0x0a, 0x0c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x0b, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x63, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x5f, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x72, 0x67, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x69, + 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xc6, 0x03, 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x59, 0x0a, 0x0c, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, 0x72, 0x63, + 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x4c, 0x0a, 0x08, 0x64, 0x69, 0x61, 0x67, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, + 0x72, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x08, 0x64, 0x69, 0x61, + 0x67, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x5a, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, + 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x52, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x5b, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x5f, 0x62, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, + 0x72, 0x69, 0x6e, 0x74, 0x4d, 0x69, 0x73, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, + 0x0d, 0x73, 0x75, 0x62, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x50, + 0x0a, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, 0x69, 0x73, 0x63, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, + 0x22, 0x91, 0x02, 0x0a, 0x12, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x5f, 0x0a, 0x0f, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0e, 0x76, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x49, 0x0a, 0x07, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x73, 0x22, 0x79, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x44, 0x0a, + 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, + 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x05, 0x72, 0x6f, + 0x6c, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, + 0xa2, 0x01, 0x0a, 0x0b, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x12, + 0x46, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4b, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x22, 0x5c, 0x0a, 0x13, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, + 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, + 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, + 0x69, 0x72, 0x22, 0x4a, 0x0a, 0x16, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, + 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, + 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6c, + 0x61, 0x76, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc0, + 0x01, 0x0a, 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x67, 0x6c, 0x69, + 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x67, 0x6c, 0x69, 0x6e, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x1d, 0x0a, + 0x0a, 0x70, 0x72, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x70, 0x72, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x12, 0x0a, 0x04, + 0x68, 0x74, 0x6d, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x74, 0x6d, 0x6c, + 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x75, 0x6c, 0x61, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x08, 0x65, 0x75, 0x6c, 0x61, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x22, 0x0a, + 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, + 0x65, 0x22, 0x6f, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, + 0x63, 0x73, 0x22, 0x4b, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x43, + 0x6f, 0x73, 0x74, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, + 0x88, 0x01, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x67, 0x65, + 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x69, 0x73, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x22, 0x5f, 0x0a, 0x17, 0x42, 0x6c, + 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x72, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, + 0x75, 0x69, 0x72, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xbb, 0x02, 0x0a, 0x14, + 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, + 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, + 0x56, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x62, 0x0a, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x61, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, + 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x09, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x3c, 0x0a, 0x0e, 0x51, + 0x75, 0x6f, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5b, 0x0a, 0x0f, 0x42, 0x6c, 0x75, + 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0xae, 0x01, 0x0a, 0x16, 0x42, 0x6c, 0x75, 0x65, 0x70, + 0x72, 0x69, 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x12, 0x45, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x08, 0x73, 0x6f, 0x66, 0x74, + 0x77, 0x61, 0x72, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x52, 0x08, 0x73, + 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x22, 0x76, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, + 0x72, 0x69, 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, + 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1f, + 0x0a, 0x0b, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x22, + 0x86, 0x01, 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x53, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x53, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x22, 0x5a, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, + 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x72, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x55, + 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x46, 0x0a, 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x4d, 0x69, 0x73, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x10, + 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6c, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x74, 0x54, 0x65, 0x78, 0x74, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x3e, 0x0a, 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, + 0x6c, 0x22, 0xa5, 0x01, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, + 0x08, 0x76, 0x61, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x76, 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, 0x6c, 0x0a, 0x16, 0x42, 0x6c, 0x75, + 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x47, 0x0a, 0x0f, 0x42, 0x6c, 0x75, 0x65, 0x70, + 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x3c, 0x0a, 0x0e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x6f, 0x6c, + 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2a, 0x6a, + 0x0a, 0x11, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x51, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, + 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x51, 0x52, 0x54, 0x5f, 0x52, 0x45, + 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x43, 0x45, 0x5f, + 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x51, 0x52, + 0x54, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x10, 0x02, 0x2a, 0x32, 0x0a, 0x11, 0x53, 0x6f, + 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x12, 0x0a, 0x0e, 0x53, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x47, 0x5f, 0x4f, 0x53, 0x10, 0x01, 0x42, 0x48, + 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_bpmetadata_proto_rawDescOnce sync.Once + file_bpmetadata_proto_rawDescData = file_bpmetadata_proto_rawDesc +) + +func file_bpmetadata_proto_rawDescGZIP() []byte { + file_bpmetadata_proto_rawDescOnce.Do(func() { + file_bpmetadata_proto_rawDescData = protoimpl.X.CompressGZIP(file_bpmetadata_proto_rawDescData) + }) + return file_bpmetadata_proto_rawDescData +} + +var file_bpmetadata_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_bpmetadata_proto_msgTypes = make([]protoimpl.MessageInfo, 31) +var file_bpmetadata_proto_goTypes = []interface{}{ + (QuotaResourceType)(0), // 0: google.cloud.config.bpmetadata.QuotaResourceType + (SoftwareGroupType)(0), // 1: google.cloud.config.bpmetadata.SoftwareGroupType + (*BlueprintMetadata)(nil), // 2: google.cloud.config.bpmetadata.BlueprintMetadata + (*ResourceTypeMeta)(nil), // 3: google.cloud.config.bpmetadata.ResourceTypeMeta + (*BlueprintMetadataSpec)(nil), // 4: google.cloud.config.bpmetadata.BlueprintMetadataSpec + (*BlueprintInfo)(nil), // 5: google.cloud.config.bpmetadata.BlueprintInfo + (*BlueprintContent)(nil), // 6: google.cloud.config.bpmetadata.BlueprintContent + (*BlueprintInterface)(nil), // 7: google.cloud.config.bpmetadata.BlueprintInterface + (*BlueprintRequirements)(nil), // 8: google.cloud.config.bpmetadata.BlueprintRequirements + (*BlueprintUI)(nil), // 9: google.cloud.config.bpmetadata.BlueprintUI + (*BlueprintRepoDetail)(nil), // 10: google.cloud.config.bpmetadata.BlueprintRepoDetail + (*BlueprintActuationTool)(nil), // 11: google.cloud.config.bpmetadata.BlueprintActuationTool + (*BlueprintDescription)(nil), // 12: google.cloud.config.bpmetadata.BlueprintDescription + (*BlueprintTimeEstimate)(nil), // 13: google.cloud.config.bpmetadata.BlueprintTimeEstimate + (*BlueprintCostEstimate)(nil), // 14: google.cloud.config.bpmetadata.BlueprintCostEstimate + (*BlueprintCloudProduct)(nil), // 15: google.cloud.config.bpmetadata.BlueprintCloudProduct + (*BlueprintOrgPolicyCheck)(nil), // 16: google.cloud.config.bpmetadata.BlueprintOrgPolicyCheck + (*BlueprintQuotaDetail)(nil), // 17: google.cloud.config.bpmetadata.BlueprintQuotaDetail + (*BlueprintAuthor)(nil), // 18: google.cloud.config.bpmetadata.BlueprintAuthor + (*BlueprintSoftwareGroup)(nil), // 19: google.cloud.config.bpmetadata.BlueprintSoftwareGroup + (*BlueprintSoftware)(nil), // 20: google.cloud.config.bpmetadata.BlueprintSoftware + (*BlueprintSupport)(nil), // 21: google.cloud.config.bpmetadata.BlueprintSupport + (*BlueprintArchitecture)(nil), // 22: google.cloud.config.bpmetadata.BlueprintArchitecture + (*BlueprintMiscContent)(nil), // 23: google.cloud.config.bpmetadata.BlueprintMiscContent + (*BlueprintDiagram)(nil), // 24: google.cloud.config.bpmetadata.BlueprintDiagram + (*BlueprintListContent)(nil), // 25: google.cloud.config.bpmetadata.BlueprintListContent + (*BlueprintVariable)(nil), // 26: google.cloud.config.bpmetadata.BlueprintVariable + (*BlueprintVariableGroup)(nil), // 27: google.cloud.config.bpmetadata.BlueprintVariableGroup + (*BlueprintOutput)(nil), // 28: google.cloud.config.bpmetadata.BlueprintOutput + (*BlueprintRoles)(nil), // 29: google.cloud.config.bpmetadata.BlueprintRoles + nil, // 30: google.cloud.config.bpmetadata.ResourceTypeMeta.LabelsEntry + nil, // 31: google.cloud.config.bpmetadata.ResourceTypeMeta.AnnotationsEntry + nil, // 32: google.cloud.config.bpmetadata.BlueprintQuotaDetail.QuotaTypeEntry + (*BlueprintUIInput)(nil), // 33: google.cloud.config.bpmetadata.BlueprintUIInput + (*BlueprintUIOutput)(nil), // 34: google.cloud.config.bpmetadata.BlueprintUIOutput +} +var file_bpmetadata_proto_depIdxs = []int32{ + 3, // 0: google.cloud.config.bpmetadata.BlueprintMetadata.metadata:type_name -> google.cloud.config.bpmetadata.ResourceTypeMeta + 4, // 1: google.cloud.config.bpmetadata.BlueprintMetadata.spec:type_name -> google.cloud.config.bpmetadata.BlueprintMetadataSpec + 30, // 2: google.cloud.config.bpmetadata.ResourceTypeMeta.labels:type_name -> google.cloud.config.bpmetadata.ResourceTypeMeta.LabelsEntry + 31, // 3: google.cloud.config.bpmetadata.ResourceTypeMeta.annotations:type_name -> google.cloud.config.bpmetadata.ResourceTypeMeta.AnnotationsEntry + 5, // 4: google.cloud.config.bpmetadata.BlueprintMetadataSpec.info:type_name -> google.cloud.config.bpmetadata.BlueprintInfo + 6, // 5: google.cloud.config.bpmetadata.BlueprintMetadataSpec.content:type_name -> google.cloud.config.bpmetadata.BlueprintContent + 7, // 6: google.cloud.config.bpmetadata.BlueprintMetadataSpec.interfaces:type_name -> google.cloud.config.bpmetadata.BlueprintInterface + 8, // 7: google.cloud.config.bpmetadata.BlueprintMetadataSpec.requirements:type_name -> google.cloud.config.bpmetadata.BlueprintRequirements + 9, // 8: google.cloud.config.bpmetadata.BlueprintMetadataSpec.ui:type_name -> google.cloud.config.bpmetadata.BlueprintUI + 10, // 9: google.cloud.config.bpmetadata.BlueprintInfo.source:type_name -> google.cloud.config.bpmetadata.BlueprintRepoDetail + 11, // 10: google.cloud.config.bpmetadata.BlueprintInfo.actuation_tool:type_name -> google.cloud.config.bpmetadata.BlueprintActuationTool + 12, // 11: google.cloud.config.bpmetadata.BlueprintInfo.description:type_name -> google.cloud.config.bpmetadata.BlueprintDescription + 13, // 12: google.cloud.config.bpmetadata.BlueprintInfo.deployment_duration:type_name -> google.cloud.config.bpmetadata.BlueprintTimeEstimate + 14, // 13: google.cloud.config.bpmetadata.BlueprintInfo.cost_estimate:type_name -> google.cloud.config.bpmetadata.BlueprintCostEstimate + 15, // 14: google.cloud.config.bpmetadata.BlueprintInfo.cloud_products:type_name -> google.cloud.config.bpmetadata.BlueprintCloudProduct + 17, // 15: google.cloud.config.bpmetadata.BlueprintInfo.quota_details:type_name -> google.cloud.config.bpmetadata.BlueprintQuotaDetail + 18, // 16: google.cloud.config.bpmetadata.BlueprintInfo.author:type_name -> google.cloud.config.bpmetadata.BlueprintAuthor + 19, // 17: google.cloud.config.bpmetadata.BlueprintInfo.software_groups:type_name -> google.cloud.config.bpmetadata.BlueprintSoftwareGroup + 21, // 18: google.cloud.config.bpmetadata.BlueprintInfo.support_info:type_name -> google.cloud.config.bpmetadata.BlueprintSupport + 16, // 19: google.cloud.config.bpmetadata.BlueprintInfo.org_policy_checks:type_name -> google.cloud.config.bpmetadata.BlueprintOrgPolicyCheck + 22, // 20: google.cloud.config.bpmetadata.BlueprintContent.architecture:type_name -> google.cloud.config.bpmetadata.BlueprintArchitecture + 24, // 21: google.cloud.config.bpmetadata.BlueprintContent.diagrams:type_name -> google.cloud.config.bpmetadata.BlueprintDiagram + 25, // 22: google.cloud.config.bpmetadata.BlueprintContent.documentation:type_name -> google.cloud.config.bpmetadata.BlueprintListContent + 23, // 23: google.cloud.config.bpmetadata.BlueprintContent.sub_blueprints:type_name -> google.cloud.config.bpmetadata.BlueprintMiscContent + 23, // 24: google.cloud.config.bpmetadata.BlueprintContent.examples:type_name -> google.cloud.config.bpmetadata.BlueprintMiscContent + 26, // 25: google.cloud.config.bpmetadata.BlueprintInterface.variables:type_name -> google.cloud.config.bpmetadata.BlueprintVariable + 27, // 26: google.cloud.config.bpmetadata.BlueprintInterface.variable_groups:type_name -> google.cloud.config.bpmetadata.BlueprintVariableGroup + 28, // 27: google.cloud.config.bpmetadata.BlueprintInterface.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintOutput + 29, // 28: google.cloud.config.bpmetadata.BlueprintRequirements.roles:type_name -> google.cloud.config.bpmetadata.BlueprintRoles + 33, // 29: google.cloud.config.bpmetadata.BlueprintUI.input:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput + 34, // 30: google.cloud.config.bpmetadata.BlueprintUI.runtime:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput + 0, // 31: google.cloud.config.bpmetadata.BlueprintQuotaDetail.resource_type:type_name -> google.cloud.config.bpmetadata.QuotaResourceType + 32, // 32: google.cloud.config.bpmetadata.BlueprintQuotaDetail.quota_type:type_name -> google.cloud.config.bpmetadata.BlueprintQuotaDetail.QuotaTypeEntry + 1, // 33: google.cloud.config.bpmetadata.BlueprintSoftwareGroup.type:type_name -> google.cloud.config.bpmetadata.SoftwareGroupType + 20, // 34: google.cloud.config.bpmetadata.BlueprintSoftwareGroup.software:type_name -> google.cloud.config.bpmetadata.BlueprintSoftware + 35, // [35:35] is the sub-list for method output_type + 35, // [35:35] is the sub-list for method input_type + 35, // [35:35] is the sub-list for extension type_name + 35, // [35:35] is the sub-list for extension extendee + 0, // [0:35] is the sub-list for field type_name +} + +func init() { file_bpmetadata_proto_init() } +func file_bpmetadata_proto_init() { + if File_bpmetadata_proto != nil { + return + } + file_bpmetadata_ui_proto_init() + if !protoimpl.UnsafeEnabled { + file_bpmetadata_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResourceTypeMeta); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintMetadataSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintContent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintInterface); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintRequirements); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintUI); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintRepoDetail); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintActuationTool); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintDescription); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintTimeEstimate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintCostEstimate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintCloudProduct); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintOrgPolicyCheck); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintQuotaDetail); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintAuthor); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintSoftwareGroup); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintSoftware); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintSupport); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintArchitecture); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintMiscContent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintDiagram); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintListContent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintVariable); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintVariableGroup); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintOutput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintRoles); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_bpmetadata_proto_rawDesc, + NumEnums: 2, + NumMessages: 31, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_bpmetadata_proto_goTypes, + DependencyIndexes: file_bpmetadata_proto_depIdxs, + EnumInfos: file_bpmetadata_proto_enumTypes, + MessageInfos: file_bpmetadata_proto_msgTypes, + }.Build() + File_bpmetadata_proto = out.File + file_bpmetadata_proto_rawDesc = nil + file_bpmetadata_proto_goTypes = nil + file_bpmetadata_proto_depIdxs = nil +} diff --git a/cli/bpmetadata/bpmetadata_ui.pb.go b/cli/bpmetadata/bpmetadata_ui.pb.go new file mode 100644 index 00000000000..c0206987d15 --- /dev/null +++ b/cli/bpmetadata/bpmetadata_ui.pb.go @@ -0,0 +1,853 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.12 +// source: bpmetadata_ui.proto + +package bpmetadata + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// BlueprintUIInput is the structure for holding Input and Input Section (i.e. groups) specific metadata. +type BlueprintUIInput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // variables is a map defining all inputs on the UI. + // Gen: partial + Variables map[string]*DisplayVariable `protobuf:"bytes,1,rep,name=variables,proto3" json:"variables,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"variables,omitempty"` // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" + // Sections is a generic structure for grouping inputs together. + // Gen: manually-authored + Sections []*DisplaySection `protobuf:"bytes,2,rep,name=sections,proto3" json:"sections,omitempty" yaml:"sections,omitempty"` // @gotags: json:"sections,omitempty" yaml:"sections,omitempty" +} + +func (x *BlueprintUIInput) Reset() { + *x = BlueprintUIInput{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintUIInput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintUIInput) ProtoMessage() {} + +func (x *BlueprintUIInput) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintUIInput.ProtoReflect.Descriptor instead. +func (*BlueprintUIInput) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{0} +} + +func (x *BlueprintUIInput) GetVariables() map[string]*DisplayVariable { + if x != nil { + return x.Variables + } + return nil +} + +func (x *BlueprintUIInput) GetSections() []*DisplaySection { + if x != nil { + return x.Sections + } + return nil +} + +// Additional display specific metadata pertaining to a particular +// input variable. +type DisplayVariable struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The variable name from the corresponding standard metadata file. + // Gen: auto-generated - the Terraform variable name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + // Visible title for the variable on the UI. If not present, + // Name will be used for the Title. + // Gen: auto-generated - the Terraform variable converted to title case e.g. + // variable "bucket_admins" will convert to "Bucket Admins" as the title. + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" + // A flag to hide or show the variable on the UI. + // Gen: manually-authored + Invisible bool `protobuf:"varint,3,opt,name=invisible,proto3" json:"invisible,omitempty" yaml:"invisible,omitempty"` // @gotags: json:"invisible,omitempty" yaml:"invisible,omitempty" + // Variable tooltip. + // Gen: manually-authored + Tooltip string `protobuf:"bytes,4,opt,name=tooltip,proto3" json:"tooltip,omitempty" yaml:"tooltip,omitempty"` // @gotags: json:"tooltip,omitempty" yaml:"tooltip,omitempty" + // Placeholder text (when there is no default). + // Gen: manually-authored + Placeholder string `protobuf:"bytes,5,opt,name=placeholder,proto3" json:"placeholder,omitempty" yaml:"placeholder,omitempty"` // @gotags: json:"placeholder,omitempty" yaml:"placeholder,omitempty" + // Regex based validation rules for the variable. + // Gen: manually-authored + RegexValidation string `protobuf:"bytes,6,opt,name=regex_validation,json=regexValidation,proto3" json:"regexValidation,omitempty" yaml:"regexValidation,omitempty"` // @gotags: json:"regexValidation,omitempty" yaml:"regexValidation,omitempty" + // Minimum no. of inputs for the input variable. + // Gen: manually-authored + MinItems int32 `protobuf:"varint,7,opt,name=min_items,json=minItems,proto3" json:"minItems,omitempty" yaml:"minItems,omitempty"` // @gotags: json:"minItems,omitempty" yaml:"minItems,omitempty" + // Max no. of inputs for the input variable. + // Gen: manually-authored + MaxItems int32 `protobuf:"varint,8,opt,name=max_items,json=maxItems,proto3" json:"maxItems,omitempty" yaml:"maxItems,omitempty"` // @gotags: json:"maxItems,omitempty" yaml:"maxItems,omitempty" + // Minimum length for string values. + // Gen: manually-authored + MinLength int32 `protobuf:"varint,9,opt,name=min_length,json=minLength,proto3" json:"minLength,omitempty" yaml:"minLength,omitempty"` // @gotags: json:"minLength,omitempty" yaml:"minLength,omitempty" + // Max length for string values. + // Gen: manually-authored + MaxLength int32 `protobuf:"varint,10,opt,name=max_length,json=maxLength,proto3" json:"maxLength,omitempty" yaml:"maxLength,omitempty"` // @gotags: json:"maxLength,omitempty" yaml:"maxLength,omitempty" + // Minimum value for numeric types. + // Gen: manually-authored + Min float32 `protobuf:"fixed32,11,opt,name=min,proto3" json:"min,omitempty" yaml:"min,omitempty"` // @gotags: json:"min,omitempty" yaml:"min,omitempty" + // Max value for numeric types. + // Gen: manually-authored + Max float32 `protobuf:"fixed32,12,opt,name=max,proto3" json:"max,omitempty" yaml:"max,omitempty"` // @gotags: 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. + // Gen: manually-authored + Section string `protobuf:"bytes,13,opt,name=section,proto3" json:"section,omitempty" yaml:"section,omitempty"` // @gotags: json:"section,omitempty" yaml:"section,omitempty" + // UI extension associated with the input variable. + // E.g. for rendering a GCE machine type selector: + // + // xGoogleProperty: + // + // type: GCE_MACHINE_TYPE + // zoneProperty: myZone + // gceMachineType: + // minCpu: 2 + // minRamGb: + // + // Gen: manually-authored + XGoogleProperty *GooglePropertyExtension `protobuf:"bytes,14,opt,name=x_google_property,json=xGoogleProperty,proto3" json:"xGoogleProperty,omitempty" yaml:"xGoogleProperty,omitempty"` // @gotags: json:"xGoogleProperty,omitempty" yaml:"xGoogleProperty,omitempty" + // Text describing the validation rules for the property. Typically shown + // after an invalid input. + // Optional. UTF-8 text. No markup. At most 128 characters. + // Gen: manually-authored + Validation string `protobuf:"bytes,15,opt,name=validation,proto3" json:"validation,omitempty" yaml:"validation,omitempty"` // @gotags: json:"validation,omitempty" yaml:"validation,omitempty" +} + +func (x *DisplayVariable) Reset() { + *x = DisplayVariable{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisplayVariable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisplayVariable) ProtoMessage() {} + +func (x *DisplayVariable) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisplayVariable.ProtoReflect.Descriptor instead. +func (*DisplayVariable) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{1} +} + +func (x *DisplayVariable) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DisplayVariable) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *DisplayVariable) GetInvisible() bool { + if x != nil { + return x.Invisible + } + return false +} + +func (x *DisplayVariable) GetTooltip() string { + if x != nil { + return x.Tooltip + } + return "" +} + +func (x *DisplayVariable) GetPlaceholder() string { + if x != nil { + return x.Placeholder + } + return "" +} + +func (x *DisplayVariable) GetRegexValidation() string { + if x != nil { + return x.RegexValidation + } + return "" +} + +func (x *DisplayVariable) GetMinItems() int32 { + if x != nil { + return x.MinItems + } + return 0 +} + +func (x *DisplayVariable) GetMaxItems() int32 { + if x != nil { + return x.MaxItems + } + return 0 +} + +func (x *DisplayVariable) GetMinLength() int32 { + if x != nil { + return x.MinLength + } + return 0 +} + +func (x *DisplayVariable) GetMaxLength() int32 { + if x != nil { + return x.MaxLength + } + return 0 +} + +func (x *DisplayVariable) GetMin() float32 { + if x != nil { + return x.Min + } + return 0 +} + +func (x *DisplayVariable) GetMax() float32 { + if x != nil { + return x.Max + } + return 0 +} + +func (x *DisplayVariable) GetSection() string { + if x != nil { + return x.Section + } + return "" +} + +func (x *DisplayVariable) GetXGoogleProperty() *GooglePropertyExtension { + if x != nil { + return x.XGoogleProperty + } + return nil +} + +func (x *DisplayVariable) GetValidation() string { + if x != nil { + return x.Validation + } + return "" +} + +// A logical group of variables. [Section][]s may also be grouped into +// sub-sections. +type DisplaySection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the section, referenced by DisplayVariable.Section + // Section names must be unique. + // Gen: manually-authored + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + // Section title. + // If not provided, name will be used instead. + // Gen: manually-authored + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty" yaml:"title,omitempty"` // @gotags: json:"title,omitempty" yaml:"title,omitempty" + // Section tooltip. + // Gen: manually-authored + Tooltip string `protobuf:"bytes,3,opt,name=tooltip,proto3" json:"tooltip,omitempty" yaml:"tooltip,omitempty"` // @gotags: json:"tooltip,omitempty" yaml:"tooltip,omitempty" + // Section subtext. + // Gen: manually-authored + Subtext string `protobuf:"bytes,4,opt,name=subtext,proto3" json:"subtext,omitempty" yaml:"subtext,omitempty"` // @gotags: json:"subtext,omitempty" yaml:"subtext,omitempty" + // The name of the parent section (if parent is not the root section). + // Gen: manually-authored + Parent string `protobuf:"bytes,5,opt,name=parent,proto3" json:"parent,omitempty" yaml:"parent,omitempty"` // @gotags: json:"parent,omitempty" yaml:"parent,omitempty" +} + +func (x *DisplaySection) Reset() { + *x = DisplaySection{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisplaySection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisplaySection) ProtoMessage() {} + +func (x *DisplaySection) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisplaySection.ProtoReflect.Descriptor instead. +func (*DisplaySection) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{2} +} + +func (x *DisplaySection) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DisplaySection) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *DisplaySection) GetTooltip() string { + if x != nil { + return x.Tooltip + } + return "" +} + +func (x *DisplaySection) GetSubtext() string { + if x != nil { + return x.Subtext + } + return "" +} + +func (x *DisplaySection) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +type BlueprintUIOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Short message to be displayed while the blueprint is deploying. + // At most 128 characters. + // Gen: manually-authored + OutputMessage string `protobuf:"bytes,1,opt,name=output_message,json=outputMessage,proto3" json:"outputMessage,omitempty" yaml:"outputMessage,omitempty"` // @gotags: json:"outputMessage,omitempty" yaml:"outputMessage,omitempty" + // List of suggested actions to take. + // Gen: manually-authored + SuggestedActions []*UIActionItem `protobuf:"bytes,2,rep,name=suggested_actions,json=suggestedActions,proto3" json:"suggestedActions,omitempty" yaml:"suggestedActions,omitempty"` // @gotags: json:"suggestedActions,omitempty" yaml:"suggestedActions,omitempty" + // outputs is a map defining a subset of Terraform outputs on the UI + // that may need additional UI configuration. + // Gen: manually-authored + Outputs map[string]*DisplayOutput `protobuf:"bytes,3,rep,name=outputs,proto3" json:"outputs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"outputs,omitempty"` // @gotags: json:"outputs,omitempty" yaml:"outputs,omitempty" +} + +func (x *BlueprintUIOutput) Reset() { + *x = BlueprintUIOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintUIOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintUIOutput) ProtoMessage() {} + +func (x *BlueprintUIOutput) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintUIOutput.ProtoReflect.Descriptor instead. +func (*BlueprintUIOutput) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{3} +} + +func (x *BlueprintUIOutput) GetOutputMessage() string { + if x != nil { + return x.OutputMessage + } + return "" +} + +func (x *BlueprintUIOutput) GetSuggestedActions() []*UIActionItem { + if x != nil { + return x.SuggestedActions + } + return nil +} + +func (x *BlueprintUIOutput) GetOutputs() map[string]*DisplayOutput { + if x != nil { + return x.Outputs + } + return nil +} + +// An item appearing in a list of required or suggested steps. +type UIActionItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Summary heading for the item. + // Required. Accepts string expressions. At most 64 characters. + // Gen: manually-authored + Heading string `protobuf:"bytes,1,opt,name=heading,proto3" json:"heading" yaml:"heading"` // @gotags: json:"heading" yaml:"heading" + // Longer description of the item. + // At least one description or snippet is required. + // Accepts string expressions. HTML <a href> + // tags only. At most 512 characters. + // Gen: manually-authored + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: 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. + // Gen: manually-authored + Snippet string `protobuf:"bytes,3,opt,name=snippet,proto3" json:"snippet,omitempty" yaml:"snippet,omitempty"` // @gotags: 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. + // Gen: manually-authored + ShowIf string `protobuf:"bytes,4,opt,name=show_if,json=showIf,proto3" json:"showIf,omitempty" yaml:"showIf,omitempty"` // @gotags: json:"showIf,omitempty" yaml:"showIf,omitempty" +} + +func (x *UIActionItem) Reset() { + *x = UIActionItem{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UIActionItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UIActionItem) ProtoMessage() {} + +func (x *UIActionItem) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UIActionItem.ProtoReflect.Descriptor instead. +func (*UIActionItem) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{4} +} + +func (x *UIActionItem) GetHeading() string { + if x != nil { + return x.Heading + } + return "" +} + +func (x *UIActionItem) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *UIActionItem) GetSnippet() string { + if x != nil { + return x.Snippet + } + return "" +} + +func (x *UIActionItem) GetShowIf() string { + if x != nil { + return x.ShowIf + } + return "" +} + +// Additional display specific metadata pertaining to a particular +// Terraform output. +type DisplayOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // open_in_new_tab defines if the Output action should be opened + // in a new tab. + // Gen: manually-authored + OpenInNewTab bool `protobuf:"varint,1,opt,name=open_in_new_tab,json=openInNewTab,proto3" json:"openInNewTab,omitempty" yaml:"openInNewTab,omitempty"` // @gotags: json:"openInNewTab,omitempty" yaml:"openInNewTab,omitempty" + // show_in_notification defines if the Output should shown in + // notification for the deployment. + // Gen: manually-authored + ShowInNotification bool `protobuf:"varint,2,opt,name=show_in_notification,json=showInNotification,proto3" json:"showInNotification,omitempty" yaml:"showInNotification,omitempty"` // @gotags: json:"showInNotification,omitempty" yaml:"showInNotification,omitempty" +} + +func (x *DisplayOutput) Reset() { + *x = DisplayOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisplayOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisplayOutput) ProtoMessage() {} + +func (x *DisplayOutput) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisplayOutput.ProtoReflect.Descriptor instead. +func (*DisplayOutput) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{5} +} + +func (x *DisplayOutput) GetOpenInNewTab() bool { + if x != nil { + return x.OpenInNewTab + } + return false +} + +func (x *DisplayOutput) GetShowInNotification() bool { + if x != nil { + return x.ShowInNotification + } + return false +} + +var File_bpmetadata_ui_proto protoreflect.FileDescriptor + +var file_bpmetadata_ui_proto_rawDesc = []byte{ + 0x0a, 0x13, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x69, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x17, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x75, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, + 0x02, 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x12, 0x5d, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x55, 0x49, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x6d, + 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfb, 0x03, + 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, + 0x6e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x69, 0x6e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, + 0x6c, 0x74, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, + 0x74, 0x69, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, + 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, + 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1b, 0x0a, + 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x69, + 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x6d, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x78, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6d, + 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, + 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x63, 0x0a, 0x11, 0x78, 0x5f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x78, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x86, 0x01, 0x0a, 0x0e, + 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, + 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, + 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, + 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, + 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, + 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, + 0x22, 0x68, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, + 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, + 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, + 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, + 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_bpmetadata_ui_proto_rawDescOnce sync.Once + file_bpmetadata_ui_proto_rawDescData = file_bpmetadata_ui_proto_rawDesc +) + +func file_bpmetadata_ui_proto_rawDescGZIP() []byte { + file_bpmetadata_ui_proto_rawDescOnce.Do(func() { + file_bpmetadata_ui_proto_rawDescData = protoimpl.X.CompressGZIP(file_bpmetadata_ui_proto_rawDescData) + }) + return file_bpmetadata_ui_proto_rawDescData +} + +var file_bpmetadata_ui_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_bpmetadata_ui_proto_goTypes = []interface{}{ + (*BlueprintUIInput)(nil), // 0: google.cloud.config.bpmetadata.BlueprintUIInput + (*DisplayVariable)(nil), // 1: google.cloud.config.bpmetadata.DisplayVariable + (*DisplaySection)(nil), // 2: google.cloud.config.bpmetadata.DisplaySection + (*BlueprintUIOutput)(nil), // 3: google.cloud.config.bpmetadata.BlueprintUIOutput + (*UIActionItem)(nil), // 4: google.cloud.config.bpmetadata.UIActionItem + (*DisplayOutput)(nil), // 5: google.cloud.config.bpmetadata.DisplayOutput + nil, // 6: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry + nil, // 7: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry + (*GooglePropertyExtension)(nil), // 8: google.cloud.config.bpmetadata.GooglePropertyExtension +} +var file_bpmetadata_ui_proto_depIdxs = []int32{ + 6, // 0: google.cloud.config.bpmetadata.BlueprintUIInput.variables:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry + 2, // 1: google.cloud.config.bpmetadata.BlueprintUIInput.sections:type_name -> google.cloud.config.bpmetadata.DisplaySection + 8, // 2: google.cloud.config.bpmetadata.DisplayVariable.x_google_property:type_name -> google.cloud.config.bpmetadata.GooglePropertyExtension + 4, // 3: google.cloud.config.bpmetadata.BlueprintUIOutput.suggested_actions:type_name -> google.cloud.config.bpmetadata.UIActionItem + 7, // 4: google.cloud.config.bpmetadata.BlueprintUIOutput.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry + 1, // 5: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayVariable + 5, // 6: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayOutput + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { file_bpmetadata_ui_proto_init() } +func file_bpmetadata_ui_proto_init() { + if File_bpmetadata_ui_proto != nil { + return + } + file_bpmetadata_ui_ext_proto_init() + if !protoimpl.UnsafeEnabled { + file_bpmetadata_ui_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintUIInput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisplayVariable); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisplaySection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintUIOutput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UIActionItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisplayOutput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_bpmetadata_ui_proto_rawDesc, + NumEnums: 0, + NumMessages: 8, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_bpmetadata_ui_proto_goTypes, + DependencyIndexes: file_bpmetadata_ui_proto_depIdxs, + MessageInfos: file_bpmetadata_ui_proto_msgTypes, + }.Build() + File_bpmetadata_ui_proto = out.File + file_bpmetadata_ui_proto_rawDesc = nil + file_bpmetadata_ui_proto_goTypes = nil + file_bpmetadata_ui_proto_depIdxs = nil +} diff --git a/cli/bpmetadata/bpmetadata_ui_ext.pb.go b/cli/bpmetadata/bpmetadata_ui_ext.pb.go new file mode 100644 index 00000000000..bf49624cfe6 --- /dev/null +++ b/cli/bpmetadata/bpmetadata_ui_ext.pb.go @@ -0,0 +1,1567 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.12 +// source: bpmetadata_ui_ext.proto + +package bpmetadata + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// ExtensionType specifies the type of extension. +type ExtensionType int32 + +const ( + // EXTENSIONTYPE_UNDEFINED indicates that the extension type is undefined. + ExtensionType_ET_UNDEFINED ExtensionType = 0 + // General formats. + ExtensionType_ET_EMAIL_ADDRESS ExtensionType = 1 + ExtensionType_ET_MULTI_LINE_STRING ExtensionType = 2 + // GCE related. + ExtensionType_ET_GCE_DISK_IMAGE ExtensionType = 3 + ExtensionType_ET_GCE_DISK_TYPE ExtensionType = 4 + ExtensionType_ET_GCE_DISK_SIZE ExtensionType = 5 + ExtensionType_ET_GCE_MACHINE_TYPE ExtensionType = 6 + ExtensionType_ET_GCE_NETWORK ExtensionType = 7 + ExtensionType_ET_GCE_ZONE ExtensionType = 8 + ExtensionType_ET_GCE_SUBNETWORK ExtensionType = 9 + ExtensionType_ET_GCE_REGION ExtensionType = 10 + ExtensionType_ET_GCE_GPU_TYPE ExtensionType = 11 + ExtensionType_ET_GCE_GPU_COUNT ExtensionType = 12 + ExtensionType_ET_GCE_EXTERNAL_IP ExtensionType = 13 + ExtensionType_ET_GCE_IP_FORWARDING ExtensionType = 14 + ExtensionType_ET_GCE_FIREWALL ExtensionType = 15 + ExtensionType_ET_GCE_FIREWALL_RANGE ExtensionType = 16 + ExtensionType_ET_GCE_GENERIC_RESOURCE ExtensionType = 17 + // GCS related. + ExtensionType_ET_GCS_BUCKET ExtensionType = 18 + // IAM related. + ExtensionType_ET_IAM_SERVICE_ACCOUNT ExtensionType = 19 +) + +// Enum value maps for ExtensionType. +var ( + ExtensionType_name = map[int32]string{ + 0: "ET_UNDEFINED", + 1: "ET_EMAIL_ADDRESS", + 2: "ET_MULTI_LINE_STRING", + 3: "ET_GCE_DISK_IMAGE", + 4: "ET_GCE_DISK_TYPE", + 5: "ET_GCE_DISK_SIZE", + 6: "ET_GCE_MACHINE_TYPE", + 7: "ET_GCE_NETWORK", + 8: "ET_GCE_ZONE", + 9: "ET_GCE_SUBNETWORK", + 10: "ET_GCE_REGION", + 11: "ET_GCE_GPU_TYPE", + 12: "ET_GCE_GPU_COUNT", + 13: "ET_GCE_EXTERNAL_IP", + 14: "ET_GCE_IP_FORWARDING", + 15: "ET_GCE_FIREWALL", + 16: "ET_GCE_FIREWALL_RANGE", + 17: "ET_GCE_GENERIC_RESOURCE", + 18: "ET_GCS_BUCKET", + 19: "ET_IAM_SERVICE_ACCOUNT", + } + ExtensionType_value = map[string]int32{ + "ET_UNDEFINED": 0, + "ET_EMAIL_ADDRESS": 1, + "ET_MULTI_LINE_STRING": 2, + "ET_GCE_DISK_IMAGE": 3, + "ET_GCE_DISK_TYPE": 4, + "ET_GCE_DISK_SIZE": 5, + "ET_GCE_MACHINE_TYPE": 6, + "ET_GCE_NETWORK": 7, + "ET_GCE_ZONE": 8, + "ET_GCE_SUBNETWORK": 9, + "ET_GCE_REGION": 10, + "ET_GCE_GPU_TYPE": 11, + "ET_GCE_GPU_COUNT": 12, + "ET_GCE_EXTERNAL_IP": 13, + "ET_GCE_IP_FORWARDING": 14, + "ET_GCE_FIREWALL": 15, + "ET_GCE_FIREWALL_RANGE": 16, + "ET_GCE_GENERIC_RESOURCE": 17, + "ET_GCS_BUCKET": 18, + "ET_IAM_SERVICE_ACCOUNT": 19, + } +) + +func (x ExtensionType) Enum() *ExtensionType { + p := new(ExtensionType) + *p = x + return p +} + +func (x ExtensionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ExtensionType) Descriptor() protoreflect.EnumDescriptor { + return file_bpmetadata_ui_ext_proto_enumTypes[0].Descriptor() +} + +func (ExtensionType) Type() protoreflect.EnumType { + return &file_bpmetadata_ui_ext_proto_enumTypes[0] +} + +func (x ExtensionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ExtensionType.Descriptor instead. +func (ExtensionType) EnumDescriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{0} +} + +// ExternalIPType specifies the type of external IP address. +type ExternalIPType int32 + +const ( + ExternalIPType_IP_UNSPECIFIED ExternalIPType = 0 + // EPHEMERAL indicates that the external IP address is ephemeral. + ExternalIPType_IP_EPHEMERAL ExternalIPType = 1 + // STATIC indicates that the external IP address is static. + ExternalIPType_IP_STATIC ExternalIPType = 2 + // NONE indicates that an external IP is not assigned. + ExternalIPType_IP_NONE ExternalIPType = 3 +) + +// Enum value maps for ExternalIPType. +var ( + ExternalIPType_name = map[int32]string{ + 0: "IP_UNSPECIFIED", + 1: "IP_EPHEMERAL", + 2: "IP_STATIC", + 3: "IP_NONE", + } + ExternalIPType_value = map[string]int32{ + "IP_UNSPECIFIED": 0, + "IP_EPHEMERAL": 1, + "IP_STATIC": 2, + "IP_NONE": 3, + } +) + +func (x ExternalIPType) Enum() *ExternalIPType { + p := new(ExternalIPType) + *p = x + return p +} + +func (x ExternalIPType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ExternalIPType) Descriptor() protoreflect.EnumDescriptor { + return file_bpmetadata_ui_ext_proto_enumTypes[1].Descriptor() +} + +func (ExternalIPType) Type() protoreflect.EnumType { + return &file_bpmetadata_ui_ext_proto_enumTypes[1] +} + +func (x ExternalIPType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ExternalIPType.Descriptor instead. +func (ExternalIPType) EnumDescriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{1} +} + +// 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 GooglePropertyExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Type specifies the type of extension. + // Gen: manually-authored + Type ExtensionType `protobuf:"varint,1,opt,name=type,proto3,enum=google.cloud.config.bpmetadata.ExtensionType" json:"type" yaml:"type"` // @gotags: json:"type" 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. + // Gen: manually-authored + ZoneProperty string `protobuf:"bytes,2,opt,name=zone_property,json=zoneProperty,proto3" json:"zoneProperty,omitempty" yaml:"zoneProperty,omitempty"` // @gotags: json:"zoneProperty,omitempty" yaml:"zoneProperty,omitempty" + // Property-specific extensions. + // Gen: manually-authored (all property extensions and their child properties) + GceMachineType *GCEMachineTypeExtension `protobuf:"bytes,3,opt,name=gce_machine_type,json=gceMachineType,proto3" json:"gceMachineType,omitempty" yaml:"gceMachineType,omitempty"` // @gotags: json:"gceMachineType,omitempty" yaml:"gceMachineType,omitempty" + GceDiskSize *GCEDiskSizeExtension `protobuf:"bytes,4,opt,name=gce_disk_size,json=gceDiskSize,proto3" json:"gceDiskSize,omitempty" yaml:"gceDiskSize,omitempty"` // @gotags: json:"gceDiskSize,omitempty" yaml:"gceDiskSize,omitempty" + GceSubnetwork *GCESubnetworkExtension `protobuf:"bytes,5,opt,name=gce_subnetwork,json=gceSubnetwork,proto3" json:"gceSubnetwork,omitempty" yaml:"gceSubnetwork,omitempty"` // @gotags: json:"gceSubnetwork,omitempty" yaml:"gceSubnetwork,omitempty" + GceResource *GCEGenericResourceExtension `protobuf:"bytes,6,opt,name=gce_resource,json=gceResource,proto3" json:"gceResource,omitempty" yaml:"gceResource,omitempty"` // @gotags: json:"gceResource,omitempty" yaml:"gceResource,omitempty" + GceGpuType *GCEGPUTypeExtension `protobuf:"bytes,7,opt,name=gce_gpu_type,json=gceGpuType,proto3" json:"gceGpuType,omitempty" yaml:"gceGpuType,omitempty"` // @gotags: json:"gceGpuType,omitempty" yaml:"gceGpuType,omitempty" + GceGpuCount *GCEGPUCountExtension `protobuf:"bytes,8,opt,name=gce_gpu_count,json=gceGpuCount,proto3" json:"gceGpuCount,omitempty" yaml:"gceGpuCount,omitempty"` // @gotags: json:"gceGpuCount,omitempty" yaml:"gceGpuCount,omitempty" + GceNetwork *GCENetworkExtension `protobuf:"bytes,9,opt,name=gce_network,json=gceNetwork,proto3" json:"gceNetwork,omitempty" yaml:"gceNetwork,omitempty"` // @gotags: json:"gceNetwork,omitempty" yaml:"gceNetwork,omitempty" + GceExternalIp *GCEExternalIPExtension `protobuf:"bytes,10,opt,name=gce_external_ip,json=gceExternalIp,proto3" json:"gceExternalIp,omitempty" yaml:"gceExternalIp,omitempty"` // @gotags: json:"gceExternalIp,omitempty" yaml:"gceExternalIp,omitempty" + GceIpForwarding *GCEIPForwardingExtension `protobuf:"bytes,11,opt,name=gce_ip_forwarding,json=gceIpForwarding,proto3" json:"gceIpForwarding,omitempty" yaml:"gceIpForwarding,omitempty"` // @gotags: json:"gceIpForwarding,omitempty" yaml:"gceIpForwarding,omitempty" + GceFirewall *GCEFirewallExtension `protobuf:"bytes,12,opt,name=gce_firewall,json=gceFirewall,proto3" json:"gceFirewall,omitempty" yaml:"gceFirewall,omitempty"` // @gotags: json:"gceFirewall,omitempty" yaml:"gceFirewall,omitempty" + GceFirewallRange *GCEFirewallRangeExtension `protobuf:"bytes,13,opt,name=gce_firewall_range,json=gceFirewallRange,proto3" json:"gceFirewallRange,omitempty" yaml:"gceFirewallRange,omitempty"` // @gotags: json:"gceFirewallRange,omitempty" yaml:"gceFirewallRange,omitempty" + GceZone *GCELocationExtension `protobuf:"bytes,14,opt,name=gce_zone,json=gceZone,proto3" json:"gceZone,omitempty" yaml:"gceZone,omitempty"` // @gotags: json:"gceZone,omitempty" yaml:"gceZone,omitempty" + GceRegion *GCELocationExtension `protobuf:"bytes,15,opt,name=gce_region,json=gceRegion,proto3" json:"gceRegion,omitempty" yaml:"gceRegion,omitempty"` // @gotags: json:"gceRegion,omitempty" yaml:"gceRegion,omitempty" + IamServiceAccount *IAMServiceAccountExtension `protobuf:"bytes,16,opt,name=iam_service_account,json=iamServiceAccount,proto3" json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty"` // @gotags: json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty" +} + +func (x *GooglePropertyExtension) Reset() { + *x = GooglePropertyExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GooglePropertyExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GooglePropertyExtension) ProtoMessage() {} + +func (x *GooglePropertyExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GooglePropertyExtension.ProtoReflect.Descriptor instead. +func (*GooglePropertyExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{0} +} + +func (x *GooglePropertyExtension) GetType() ExtensionType { + if x != nil { + return x.Type + } + return ExtensionType_ET_UNDEFINED +} + +func (x *GooglePropertyExtension) GetZoneProperty() string { + if x != nil { + return x.ZoneProperty + } + return "" +} + +func (x *GooglePropertyExtension) GetGceMachineType() *GCEMachineTypeExtension { + if x != nil { + return x.GceMachineType + } + return nil +} + +func (x *GooglePropertyExtension) GetGceDiskSize() *GCEDiskSizeExtension { + if x != nil { + return x.GceDiskSize + } + return nil +} + +func (x *GooglePropertyExtension) GetGceSubnetwork() *GCESubnetworkExtension { + if x != nil { + return x.GceSubnetwork + } + return nil +} + +func (x *GooglePropertyExtension) GetGceResource() *GCEGenericResourceExtension { + if x != nil { + return x.GceResource + } + return nil +} + +func (x *GooglePropertyExtension) GetGceGpuType() *GCEGPUTypeExtension { + if x != nil { + return x.GceGpuType + } + return nil +} + +func (x *GooglePropertyExtension) GetGceGpuCount() *GCEGPUCountExtension { + if x != nil { + return x.GceGpuCount + } + return nil +} + +func (x *GooglePropertyExtension) GetGceNetwork() *GCENetworkExtension { + if x != nil { + return x.GceNetwork + } + return nil +} + +func (x *GooglePropertyExtension) GetGceExternalIp() *GCEExternalIPExtension { + if x != nil { + return x.GceExternalIp + } + return nil +} + +func (x *GooglePropertyExtension) GetGceIpForwarding() *GCEIPForwardingExtension { + if x != nil { + return x.GceIpForwarding + } + return nil +} + +func (x *GooglePropertyExtension) GetGceFirewall() *GCEFirewallExtension { + if x != nil { + return x.GceFirewall + } + return nil +} + +func (x *GooglePropertyExtension) GetGceFirewallRange() *GCEFirewallRangeExtension { + if x != nil { + return x.GceFirewallRange + } + return nil +} + +func (x *GooglePropertyExtension) GetGceZone() *GCELocationExtension { + if x != nil { + return x.GceZone + } + return nil +} + +func (x *GooglePropertyExtension) GetGceRegion() *GCELocationExtension { + if x != nil { + return x.GceRegion + } + return nil +} + +func (x *GooglePropertyExtension) GetIamServiceAccount() *IAMServiceAccountExtension { + if x != nil { + return x.IamServiceAccount + } + return nil +} + +// GCELocationExtension specifies a location extension for a Google Compute Engine (GCE) resource. +type GCELocationExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // AllowlistedZones is a list of zones that are allowed for the resource. + AllowlistedZones []string `protobuf:"bytes,1,rep,name=allowlisted_zones,json=allowlistedZones,proto3" json:"allowlistedZones,omitempty" yaml:"allowlistedZones,omitempty"` // @gotags: json:"allowlistedZones,omitempty" yaml:"allowlistedZones,omitempty" + // AllowlistedRegions is a list of regions that are allowed for the resource. + AllowlistedRegions []string `protobuf:"bytes,2,rep,name=allowlisted_regions,json=allowlistedRegions,proto3" json:"allowlistedRegions,omitempty" yaml:"allowlistedRegions,omitempty"` // @gotags: json:"allowlistedRegions,omitempty" yaml:"allowlistedRegions,omitempty" +} + +func (x *GCELocationExtension) Reset() { + *x = GCELocationExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCELocationExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCELocationExtension) ProtoMessage() {} + +func (x *GCELocationExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCELocationExtension.ProtoReflect.Descriptor instead. +func (*GCELocationExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{1} +} + +func (x *GCELocationExtension) GetAllowlistedZones() []string { + if x != nil { + return x.AllowlistedZones + } + return nil +} + +func (x *GCELocationExtension) GetAllowlistedRegions() []string { + if x != nil { + return x.AllowlistedRegions + } + return nil +} + +// GCEMachineTypeExtension specifies a machine type extension for a GCE resource. +type GCEMachineTypeExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Minimum cpu. Used to filter the list of selectable machine types. + MinCpu int32 `protobuf:"varint,1,opt,name=min_cpu,json=minCpu,proto3" json:"minCpu,omitempty" yaml:"minCpu,omitempty"` // @gotags: json:"minCpu,omitempty" yaml:"minCpu,omitempty" + // Minimum ram. Used to filter the list of selectable machine types. + MinRamGb float32 `protobuf:"fixed32,2,opt,name=min_ram_gb,json=minRamGb,proto3" json:"minRamGb,omitempty" yaml:"minRamGb,omitempty"` // @gotags: 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 `protobuf:"varint,3,opt,name=disallow_custom_machine_types,json=disallowCustomMachineTypes,proto3" json:"disallowCustomMachineTypes,omitempty" yaml:"disallowCustomMachineTypes,omitempty"` // @gotags: json:"disallowCustomMachineTypes,omitempty" yaml:"disallowCustomMachineTypes,omitempty" +} + +func (x *GCEMachineTypeExtension) Reset() { + *x = GCEMachineTypeExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEMachineTypeExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEMachineTypeExtension) ProtoMessage() {} + +func (x *GCEMachineTypeExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEMachineTypeExtension.ProtoReflect.Descriptor instead. +func (*GCEMachineTypeExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{2} +} + +func (x *GCEMachineTypeExtension) GetMinCpu() int32 { + if x != nil { + return x.MinCpu + } + return 0 +} + +func (x *GCEMachineTypeExtension) GetMinRamGb() float32 { + if x != nil { + return x.MinRamGb + } + return 0 +} + +func (x *GCEMachineTypeExtension) GetDisallowCustomMachineTypes() bool { + if x != nil { + return x.DisallowCustomMachineTypes + } + return false +} + +// GCEGPUTypeExtension specifies a GPU type extension for a GCE resource. +type GCEGPUTypeExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // MachineType is the name of the machine type that the GPU is attached to. + MachineType string `protobuf:"bytes,1,opt,name=machine_type,json=machineType,proto3" json:"machineType" yaml:"machineType"` // @gotags: json:"machineType" yaml:"machineType" + // GPUType is the type(s) of GPU that is attached to the machine. + GpuType []string `protobuf:"bytes,2,rep,name=gpu_type,json=gpuType,proto3" json:"gpuType,omitempty" yaml:"gpuType,omitempty"` // @gotags: json:"gpuType,omitempty" yaml:"gpuType,omitempty" +} + +func (x *GCEGPUTypeExtension) Reset() { + *x = GCEGPUTypeExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEGPUTypeExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEGPUTypeExtension) ProtoMessage() {} + +func (x *GCEGPUTypeExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEGPUTypeExtension.ProtoReflect.Descriptor instead. +func (*GCEGPUTypeExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{3} +} + +func (x *GCEGPUTypeExtension) GetMachineType() string { + if x != nil { + return x.MachineType + } + return "" +} + +func (x *GCEGPUTypeExtension) GetGpuType() []string { + if x != nil { + return x.GpuType + } + return nil +} + +// GCEGPUCountExtension specifies the number of GPUs that should be attached to a machine. +type GCEGPUCountExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // This field references another variable from the schema, + // which must have type GCEMachineType. + MachineTypeVariable string `protobuf:"bytes,1,opt,name=machine_type_variable,json=machineTypeVariable,proto3" json:"machineTypeVariable" yaml:"machineTypeVariable"` // @gotags: json:"machineTypeVariable" yaml:"machineTypeVariable" +} + +func (x *GCEGPUCountExtension) Reset() { + *x = GCEGPUCountExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEGPUCountExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEGPUCountExtension) ProtoMessage() {} + +func (x *GCEGPUCountExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEGPUCountExtension.ProtoReflect.Descriptor instead. +func (*GCEGPUCountExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{4} +} + +func (x *GCEGPUCountExtension) GetMachineTypeVariable() string { + if x != nil { + return x.MachineTypeVariable + } + return "" +} + +// GCEDiskSizeExtension specifies the size of a disk for a GCE resource. +type GCEDiskSizeExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // 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 `protobuf:"bytes,1,opt,name=disk_type_variable,json=diskTypeVariable,proto3" json:"diskTypeVariable" yaml:"diskTypeVariable"` // @gotags: json:"diskTypeVariable" yaml:"diskTypeVariable" +} + +func (x *GCEDiskSizeExtension) Reset() { + *x = GCEDiskSizeExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEDiskSizeExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEDiskSizeExtension) ProtoMessage() {} + +func (x *GCEDiskSizeExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEDiskSizeExtension.ProtoReflect.Descriptor instead. +func (*GCEDiskSizeExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{5} +} + +func (x *GCEDiskSizeExtension) GetDiskTypeVariable() string { + if x != nil { + return x.DiskTypeVariable + } + return "" +} + +// GCENetworkExtension specifies a network extension for a GCE resource. +type GCENetworkExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // AllowSharedVpcs indicates this solution can receive + // shared VPC selflinks (fully qualified compute links). + AllowSharedVpcs bool `protobuf:"varint,1,opt,name=allow_shared_vpcs,json=allowSharedVpcs,proto3" json:"allowSharedVpcs,omitempty" yaml:"allowSharedVpcs,omitempty"` // @gotags: json:"allowSharedVpcs,omitempty" yaml:"allowSharedVpcs,omitempty" + // Used to indicate to which machine type this network interface will be + // attached to. + MachineTypeVariable string `protobuf:"bytes,2,opt,name=machine_type_variable,json=machineTypeVariable,proto3" json:"machineTypeVariable" yaml:"machineTypeVariable"` // @gotags: json:"machineTypeVariable" yaml:"machineTypeVariable" + // Label that will be in front of each Network Interface. + Labels []string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" yaml:"labels,omitempty"` // @gotags: json:"labels,omitempty" yaml:"labels,omitempty" +} + +func (x *GCENetworkExtension) Reset() { + *x = GCENetworkExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCENetworkExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCENetworkExtension) ProtoMessage() {} + +func (x *GCENetworkExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCENetworkExtension.ProtoReflect.Descriptor instead. +func (*GCENetworkExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{6} +} + +func (x *GCENetworkExtension) GetAllowSharedVpcs() bool { + if x != nil { + return x.AllowSharedVpcs + } + return false +} + +func (x *GCENetworkExtension) GetMachineTypeVariable() string { + if x != nil { + return x.MachineTypeVariable + } + return "" +} + +func (x *GCENetworkExtension) GetLabels() []string { + if x != nil { + return x.Labels + } + return nil +} + +type GCEExternalIPExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // NetworkVariable is the name of the network variable that the external IP address belongs to. + NetworkVariable string `protobuf:"bytes,1,opt,name=network_variable,json=networkVariable,proto3" json:"networkVariable" yaml:"networkVariable"` // @gotags: json:"networkVariable" yaml:"networkVariable" + // Type specifies the type of external IP address. Defaults to EPHEMERAL if not specified. + Type ExternalIPType `protobuf:"varint,2,opt,name=type,proto3,enum=google.cloud.config.bpmetadata.ExternalIPType" json:"type,omitempty" yaml:"type,omitempty"` // @gotags: json:"type,omitempty" yaml:"type,omitempty" + // Flag to denote if an external IP should be configurable. + NotConfigurable bool `protobuf:"varint,3,opt,name=not_configurable,json=notConfigurable,proto3" json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty"` // @gotags: json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty" + // Flag to denote if static IPs are allowed for the external IP. + AllowStaticIps bool `protobuf:"varint,4,opt,name=allow_static_ips,json=allowStaticIps,proto3" json:"allowStaticIPs,omitempty" yaml:"allowStaticIPs,omitempty"` // @gotags: json:"allowStaticIPs,omitempty" yaml:"allowStaticIPs,omitempty" +} + +func (x *GCEExternalIPExtension) Reset() { + *x = GCEExternalIPExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEExternalIPExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEExternalIPExtension) ProtoMessage() {} + +func (x *GCEExternalIPExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEExternalIPExtension.ProtoReflect.Descriptor instead. +func (*GCEExternalIPExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{7} +} + +func (x *GCEExternalIPExtension) GetNetworkVariable() string { + if x != nil { + return x.NetworkVariable + } + return "" +} + +func (x *GCEExternalIPExtension) GetType() ExternalIPType { + if x != nil { + return x.Type + } + return ExternalIPType_IP_UNSPECIFIED +} + +func (x *GCEExternalIPExtension) GetNotConfigurable() bool { + if x != nil { + return x.NotConfigurable + } + return false +} + +func (x *GCEExternalIPExtension) GetAllowStaticIps() bool { + if x != nil { + return x.AllowStaticIps + } + return false +} + +// GCEIPForwardingExtension specifies an IP forwarding extension for a GCE resource. +type GCEIPForwardingExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // NetworkVariable is the name of the network variable that the IP forwarding belongs to. + NetworkVariable string `protobuf:"bytes,1,opt,name=network_variable,json=networkVariable,proto3" json:"networkVariable" yaml:"networkVariable"` // @gotags: json:"networkVariable" yaml:"networkVariable" + // NotConfigurable specifies whether the IP forwarding is configurable. Defaults to false if not specified. + NotConfigurable bool `protobuf:"varint,2,opt,name=not_configurable,json=notConfigurable,proto3" json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty"` // @gotags: json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty" +} + +func (x *GCEIPForwardingExtension) Reset() { + *x = GCEIPForwardingExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEIPForwardingExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEIPForwardingExtension) ProtoMessage() {} + +func (x *GCEIPForwardingExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEIPForwardingExtension.ProtoReflect.Descriptor instead. +func (*GCEIPForwardingExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{8} +} + +func (x *GCEIPForwardingExtension) GetNetworkVariable() string { + if x != nil { + return x.NetworkVariable + } + return "" +} + +func (x *GCEIPForwardingExtension) GetNotConfigurable() bool { + if x != nil { + return x.NotConfigurable + } + return false +} + +type GCEFirewallExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // NetworkVariable is used to indicate the network variable in the schema + // this external IP belongs to. + NetworkVariable string `protobuf:"bytes,1,opt,name=network_variable,json=networkVariable,proto3" json:"networkVariable" yaml:"networkVariable"` // @gotags: json:"networkVariable" yaml:"networkVariable" +} + +func (x *GCEFirewallExtension) Reset() { + *x = GCEFirewallExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEFirewallExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEFirewallExtension) ProtoMessage() {} + +func (x *GCEFirewallExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEFirewallExtension.ProtoReflect.Descriptor instead. +func (*GCEFirewallExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{9} +} + +func (x *GCEFirewallExtension) GetNetworkVariable() string { + if x != nil { + return x.NetworkVariable + } + return "" +} + +type GCEFirewallRangeExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // FirewallVariable is used to indicate the firewall variable with the type + // GCEFirewall in the schema to which this firewall range belongs to. + FirewallVariable string `protobuf:"bytes,1,opt,name=firewall_variable,json=firewallVariable,proto3" json:"firewallVariable" yaml:"firewallVariable"` // @gotags: json:"firewallVariable" yaml:"firewallVariable" +} + +func (x *GCEFirewallRangeExtension) Reset() { + *x = GCEFirewallRangeExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEFirewallRangeExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEFirewallRangeExtension) ProtoMessage() {} + +func (x *GCEFirewallRangeExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEFirewallRangeExtension.ProtoReflect.Descriptor instead. +func (*GCEFirewallRangeExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{10} +} + +func (x *GCEFirewallRangeExtension) GetFirewallVariable() string { + if x != nil { + return x.FirewallVariable + } + return "" +} + +type GCESubnetworkExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // 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 `protobuf:"bytes,1,opt,name=network_variable,json=networkVariable,proto3" json:"networkVariable" yaml:"networkVariable"` // @gotags: json:"networkVariable" yaml:"networkVariable" +} + +func (x *GCESubnetworkExtension) Reset() { + *x = GCESubnetworkExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCESubnetworkExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCESubnetworkExtension) ProtoMessage() {} + +func (x *GCESubnetworkExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCESubnetworkExtension.ProtoReflect.Descriptor instead. +func (*GCESubnetworkExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{11} +} + +func (x *GCESubnetworkExtension) GetNetworkVariable() string { + if x != nil { + return x.NetworkVariable + } + return "" +} + +type GCEGenericResourceExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // GCE resource type to be fetched. This field references another + // property from the schema, which must have type GCEGenericResource. + ResourceVariable string `protobuf:"bytes,1,opt,name=resource_variable,json=resourceVariable,proto3" json:"resourceVariable" yaml:"resourceVariable"` // @gotags: json:"resourceVariable" yaml:"resourceVariable" +} + +func (x *GCEGenericResourceExtension) Reset() { + *x = GCEGenericResourceExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEGenericResourceExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEGenericResourceExtension) ProtoMessage() {} + +func (x *GCEGenericResourceExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEGenericResourceExtension.ProtoReflect.Descriptor instead. +func (*GCEGenericResourceExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{12} +} + +func (x *GCEGenericResourceExtension) GetResourceVariable() string { + if x != nil { + return x.ResourceVariable + } + return "" +} + +type IAMServiceAccountExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of IAM roles that to grant to a new SA, or the roles to filter + // existing SAs with. + Roles []string `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles" yaml:"roles"` // @gotags: json:"roles" yaml:"roles" +} + +func (x *IAMServiceAccountExtension) Reset() { + *x = IAMServiceAccountExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IAMServiceAccountExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IAMServiceAccountExtension) ProtoMessage() {} + +func (x *IAMServiceAccountExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IAMServiceAccountExtension.ProtoReflect.Descriptor instead. +func (*IAMServiceAccountExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{13} +} + +func (x *IAMServiceAccountExtension) GetRoles() []string { + if x != nil { + return x.Roles + } + return nil +} + +var File_bpmetadata_ui_ext_proto protoreflect.FileDescriptor + +var file_bpmetadata_ui_ext_proto_rawDesc = []byte{ + 0x0a, 0x17, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x69, 0x5f, + 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x9e, 0x0b, 0x0a, 0x17, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x7a, 0x6f, 0x6e, 0x65, + 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x7a, 0x6f, 0x6e, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x61, 0x0a, + 0x10, 0x67, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x4d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x0e, 0x67, 0x63, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x58, 0x0a, 0x0d, 0x67, 0x63, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x44, 0x69, 0x73, 0x6b, + 0x53, 0x69, 0x7a, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, + 0x63, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x5d, 0x0a, 0x0e, 0x67, 0x63, + 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x67, 0x63, 0x65, 0x53, + 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x5e, 0x0a, 0x0c, 0x67, 0x63, 0x65, + 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x47, 0x43, 0x45, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x0c, 0x67, 0x63, 0x65, + 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x67, 0x63, 0x65, 0x47, 0x70, 0x75, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x58, 0x0a, 0x0d, 0x67, 0x63, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, + 0x63, 0x65, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x54, 0x0a, 0x0b, 0x67, 0x63, + 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x47, 0x43, 0x45, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x67, 0x63, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x12, 0x5e, 0x0a, 0x0f, 0x67, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x5f, 0x69, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x45, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x0d, 0x67, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x70, + 0x12, 0x64, 0x0a, 0x11, 0x67, 0x63, 0x65, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, + 0x49, 0x50, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x67, 0x63, 0x65, 0x49, 0x70, 0x46, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x0c, 0x67, 0x63, 0x65, 0x5f, 0x66, 0x69, + 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, + 0x45, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x0b, 0x67, 0x63, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x12, + 0x67, 0x0a, 0x12, 0x67, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, + 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, + 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x67, 0x63, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, + 0x61, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x4f, 0x0a, 0x08, 0x67, 0x63, 0x65, 0x5f, + 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x07, 0x67, 0x63, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x53, 0x0a, 0x0a, 0x67, 0x63, 0x65, + 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, + 0x43, 0x45, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x67, 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x6a, + 0x0a, 0x13, 0x69, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x41, 0x4d, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x69, 0x61, 0x6d, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x74, 0x0a, 0x14, 0x47, 0x43, + 0x45, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, + 0x64, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5a, 0x6f, 0x6e, 0x65, 0x73, 0x12, + 0x2f, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x72, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0x93, 0x01, 0x0a, 0x17, 0x47, 0x43, 0x45, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, + 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, + 0x69, 0x6e, 0x43, 0x70, 0x75, 0x12, 0x1c, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x61, 0x6d, + 0x5f, 0x67, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x52, 0x61, + 0x6d, 0x47, 0x62, 0x12, 0x41, 0x0a, 0x1d, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x64, 0x69, 0x73, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x53, 0x0a, 0x13, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, + 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, + 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x19, 0x0a, 0x08, 0x67, 0x70, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x07, 0x67, 0x70, 0x75, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4a, 0x0a, 0x14, 0x47, + 0x43, 0x45, 0x47, 0x50, 0x55, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x44, 0x0a, 0x14, 0x47, 0x43, 0x45, 0x44, 0x69, + 0x73, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x2c, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x69, 0x73, + 0x6b, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x8d, 0x01, + 0x0a, 0x13, 0x47, 0x43, 0x45, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x76, 0x70, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x56, 0x70, 0x63, + 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0xdc, 0x01, + 0x0a, 0x16, 0x47, 0x43, 0x45, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x74, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x63, 0x5f, 0x69, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x49, 0x70, 0x73, 0x22, 0x70, 0x0a, 0x18, + 0x47, 0x43, 0x45, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, + 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x41, + 0x0a, 0x14, 0x47, 0x43, 0x45, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x22, 0x48, 0x0a, 0x19, 0x47, 0x43, 0x45, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, + 0x0a, 0x11, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x66, 0x69, 0x72, 0x65, 0x77, + 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x43, 0x0a, 0x16, 0x47, + 0x43, 0x45, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x22, 0x4a, 0x0a, 0x1b, 0x47, 0x43, 0x45, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x32, 0x0a, 0x1a, + 0x49, 0x41, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, + 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, + 0x2a, 0xd5, 0x03, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x54, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, + 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x54, + 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, + 0x4e, 0x47, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, + 0x49, 0x53, 0x4b, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x45, + 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, + 0x04, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, + 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x54, 0x5f, 0x47, 0x43, + 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x06, + 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, + 0x52, 0x4b, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x5a, + 0x4f, 0x4e, 0x45, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, + 0x53, 0x55, 0x42, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, + 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, + 0x13, 0x0a, 0x0f, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, 0x50, 0x55, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x10, 0x0b, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, + 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x54, + 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x49, 0x50, + 0x10, 0x0d, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x5f, + 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, + 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x46, 0x49, 0x52, 0x45, 0x57, 0x41, 0x4c, 0x4c, 0x10, + 0x0f, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x46, 0x49, 0x52, 0x45, + 0x57, 0x41, 0x4c, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x10, 0x12, 0x1b, 0x0a, 0x17, + 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x52, + 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x54, 0x5f, + 0x47, 0x43, 0x53, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x12, 0x12, 0x1a, 0x0a, 0x16, + 0x45, 0x54, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, + 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x13, 0x2a, 0x52, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x50, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, + 0x0a, 0x0c, 0x49, 0x50, 0x5f, 0x45, 0x50, 0x48, 0x45, 0x4d, 0x45, 0x52, 0x41, 0x4c, 0x10, 0x01, + 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x02, 0x12, + 0x0b, 0x0a, 0x07, 0x49, 0x50, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x42, 0x48, 0x5a, 0x46, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, + 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_bpmetadata_ui_ext_proto_rawDescOnce sync.Once + file_bpmetadata_ui_ext_proto_rawDescData = file_bpmetadata_ui_ext_proto_rawDesc +) + +func file_bpmetadata_ui_ext_proto_rawDescGZIP() []byte { + file_bpmetadata_ui_ext_proto_rawDescOnce.Do(func() { + file_bpmetadata_ui_ext_proto_rawDescData = protoimpl.X.CompressGZIP(file_bpmetadata_ui_ext_proto_rawDescData) + }) + return file_bpmetadata_ui_ext_proto_rawDescData +} + +var file_bpmetadata_ui_ext_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_bpmetadata_ui_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_bpmetadata_ui_ext_proto_goTypes = []interface{}{ + (ExtensionType)(0), // 0: google.cloud.config.bpmetadata.ExtensionType + (ExternalIPType)(0), // 1: google.cloud.config.bpmetadata.ExternalIPType + (*GooglePropertyExtension)(nil), // 2: google.cloud.config.bpmetadata.GooglePropertyExtension + (*GCELocationExtension)(nil), // 3: google.cloud.config.bpmetadata.GCELocationExtension + (*GCEMachineTypeExtension)(nil), // 4: google.cloud.config.bpmetadata.GCEMachineTypeExtension + (*GCEGPUTypeExtension)(nil), // 5: google.cloud.config.bpmetadata.GCEGPUTypeExtension + (*GCEGPUCountExtension)(nil), // 6: google.cloud.config.bpmetadata.GCEGPUCountExtension + (*GCEDiskSizeExtension)(nil), // 7: google.cloud.config.bpmetadata.GCEDiskSizeExtension + (*GCENetworkExtension)(nil), // 8: google.cloud.config.bpmetadata.GCENetworkExtension + (*GCEExternalIPExtension)(nil), // 9: google.cloud.config.bpmetadata.GCEExternalIPExtension + (*GCEIPForwardingExtension)(nil), // 10: google.cloud.config.bpmetadata.GCEIPForwardingExtension + (*GCEFirewallExtension)(nil), // 11: google.cloud.config.bpmetadata.GCEFirewallExtension + (*GCEFirewallRangeExtension)(nil), // 12: google.cloud.config.bpmetadata.GCEFirewallRangeExtension + (*GCESubnetworkExtension)(nil), // 13: google.cloud.config.bpmetadata.GCESubnetworkExtension + (*GCEGenericResourceExtension)(nil), // 14: google.cloud.config.bpmetadata.GCEGenericResourceExtension + (*IAMServiceAccountExtension)(nil), // 15: google.cloud.config.bpmetadata.IAMServiceAccountExtension +} +var file_bpmetadata_ui_ext_proto_depIdxs = []int32{ + 0, // 0: google.cloud.config.bpmetadata.GooglePropertyExtension.type:type_name -> google.cloud.config.bpmetadata.ExtensionType + 4, // 1: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_machine_type:type_name -> google.cloud.config.bpmetadata.GCEMachineTypeExtension + 7, // 2: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_disk_size:type_name -> google.cloud.config.bpmetadata.GCEDiskSizeExtension + 13, // 3: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_subnetwork:type_name -> google.cloud.config.bpmetadata.GCESubnetworkExtension + 14, // 4: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_resource:type_name -> google.cloud.config.bpmetadata.GCEGenericResourceExtension + 5, // 5: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_gpu_type:type_name -> google.cloud.config.bpmetadata.GCEGPUTypeExtension + 6, // 6: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_gpu_count:type_name -> google.cloud.config.bpmetadata.GCEGPUCountExtension + 8, // 7: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_network:type_name -> google.cloud.config.bpmetadata.GCENetworkExtension + 9, // 8: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_external_ip:type_name -> google.cloud.config.bpmetadata.GCEExternalIPExtension + 10, // 9: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_ip_forwarding:type_name -> google.cloud.config.bpmetadata.GCEIPForwardingExtension + 11, // 10: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_firewall:type_name -> google.cloud.config.bpmetadata.GCEFirewallExtension + 12, // 11: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_firewall_range:type_name -> google.cloud.config.bpmetadata.GCEFirewallRangeExtension + 3, // 12: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_zone:type_name -> google.cloud.config.bpmetadata.GCELocationExtension + 3, // 13: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_region:type_name -> google.cloud.config.bpmetadata.GCELocationExtension + 15, // 14: google.cloud.config.bpmetadata.GooglePropertyExtension.iam_service_account:type_name -> google.cloud.config.bpmetadata.IAMServiceAccountExtension + 1, // 15: google.cloud.config.bpmetadata.GCEExternalIPExtension.type:type_name -> google.cloud.config.bpmetadata.ExternalIPType + 16, // [16:16] is the sub-list for method output_type + 16, // [16:16] is the sub-list for method input_type + 16, // [16:16] is the sub-list for extension type_name + 16, // [16:16] is the sub-list for extension extendee + 0, // [0:16] is the sub-list for field type_name +} + +func init() { file_bpmetadata_ui_ext_proto_init() } +func file_bpmetadata_ui_ext_proto_init() { + if File_bpmetadata_ui_ext_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_bpmetadata_ui_ext_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GooglePropertyExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCELocationExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEMachineTypeExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEGPUTypeExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEGPUCountExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEDiskSizeExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCENetworkExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEExternalIPExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEIPForwardingExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEFirewallExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEFirewallRangeExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCESubnetworkExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEGenericResourceExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IAMServiceAccountExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_bpmetadata_ui_ext_proto_rawDesc, + NumEnums: 2, + NumMessages: 14, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_bpmetadata_ui_ext_proto_goTypes, + DependencyIndexes: file_bpmetadata_ui_ext_proto_depIdxs, + EnumInfos: file_bpmetadata_ui_ext_proto_enumTypes, + MessageInfos: file_bpmetadata_ui_ext_proto_msgTypes, + }.Build() + File_bpmetadata_ui_ext_proto = out.File + file_bpmetadata_ui_ext_proto_rawDesc = nil + file_bpmetadata_ui_ext_proto_goTypes = nil + file_bpmetadata_ui_ext_proto_depIdxs = nil +} diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index ac18803108a..baeaec8417a 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -8,9 +8,11 @@ import ( "strings" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/util" + goyaml "github.com/goccy/go-yaml" "github.com/spf13/cobra" "github.com/spf13/viper" - "sigs.k8s.io/kustomize/kyaml/yaml" + "google.golang.org/protobuf/encoding/protojson" + "sigs.k8s.io/yaml" ) var mdFlags struct { @@ -84,7 +86,7 @@ func generate(cmd *cobra.Command, args []string) error { // throw an error and exit if root level readme.md doesn't exist if err != nil { - return fmt.Errorf("top-level module does not have a readme. Details: %w\n", err) + return fmt.Errorf("top-level module does not have a readme: %w", err) } allBpPaths = append(allBpPaths, currBpPath) @@ -201,19 +203,22 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* } // start creating blueprint metadata - bpMetadataObj.ResourceMeta = yaml.ResourceMeta{ - TypeMeta: yaml.TypeMeta{ - APIVersion: metadataApiVersion, - Kind: metadataKind, - }, - ObjectMeta: yaml.ObjectMeta{ - NameMeta: yaml.NameMeta{ - Name: repoDetails.ModuleName, - Namespace: "", - }, - Labels: bpMetadataObj.ResourceMeta.ObjectMeta.Labels, + bpMetadataObj.ApiVersion = metadataApiVersion + bpMetadataObj.Kind = metadataKind + + if bpMetadataObj.Metadata == nil { + bpMetadataObj.Metadata = &ResourceTypeMeta{ + Name: repoDetails.ModuleName, Annotations: map[string]string{localConfigAnnotation: "true"}, - }, + } + } + + if bpMetadataObj.Spec == nil { + bpMetadataObj.Spec = &BlueprintMetadataSpec{} + } + + if bpMetadataObj.Spec.Info == nil { + bpMetadataObj.Spec.Info = &BlueprintInfo{} } // create blueprint info @@ -222,6 +227,10 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* return nil, fmt.Errorf("error creating blueprint info: %w", err) } + if bpMetadataObj.Spec.Interfaces == nil { + bpMetadataObj.Spec.Interfaces = &BlueprintInterface{} + } + // create blueprint interfaces i.e. variables & outputs err = bpMetadataObj.Spec.Interfaces.create(bpPath) if err != nil { @@ -235,7 +244,11 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* if err != nil { Log.Warn(fmt.Sprintf("Blueprint requirements could not be created. Details: %s", err.Error())) } else { - bpMetadataObj.Spec.Requirements = *requirements + bpMetadataObj.Spec.Requirements = requirements + } + + if bpMetadataObj.Spec.Content == nil { + bpMetadataObj.Spec.Content = &BlueprintContent{} } // create blueprint content i.e. documentation, icons, etc. @@ -245,23 +258,32 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* func CreateBlueprintDisplayMetadata(bpPath string, bpDisp, bpCore *BlueprintMetadata) (*BlueprintMetadata, error) { // start creating blueprint metadata - bpDisp.ResourceMeta = yaml.ResourceMeta{ - TypeMeta: yaml.TypeMeta{ - APIVersion: bpCore.ResourceMeta.APIVersion, - Kind: bpCore.ResourceMeta.Kind, - }, - ObjectMeta: yaml.ObjectMeta{ - NameMeta: yaml.NameMeta{ - Name: bpCore.ResourceMeta.ObjectMeta.Name + "-display", - }, - Labels: bpDisp.ResourceMeta.ObjectMeta.Labels, + bpDisp.ApiVersion = bpCore.ApiVersion + bpDisp.Kind = bpCore.Kind + + if bpDisp.Metadata == nil { + bpDisp.Metadata = &ResourceTypeMeta{ + Name: bpCore.Metadata.Name + "-display", Annotations: map[string]string{localConfigAnnotation: "true"}, - }, + } + } + + if bpDisp.Spec == nil { + bpDisp.Spec = &BlueprintMetadataSpec{} + } + + if bpDisp.Spec.Info == nil { + bpDisp.Spec.Info = &BlueprintInfo{} + } + + if bpDisp.Spec.Ui == nil { + bpDisp.Spec.Ui = &BlueprintUI{} + bpDisp.Spec.Ui.Input = &BlueprintUIInput{} } bpDisp.Spec.Info.Title = bpCore.Spec.Info.Title bpDisp.Spec.Info.Source = bpCore.Spec.Info.Source - buildUIInputFromVariables(bpCore.Spec.Interfaces.Variables, &bpDisp.Spec.UI.Input) + buildUIInputFromVariables(bpCore.Spec.Interfaces.Variables, bpDisp.Spec.Ui.Input) return bpDisp, nil } @@ -288,7 +310,7 @@ func (i *BlueprintInfo) create(bpPath string, r repoDetail, readmeContent []byte versionInfo, err := getBlueprintVersion(path.Join(bpPath, tfVersionsFileName)) if err == nil { i.Version = versionInfo.moduleVersion - i.ActuationTool = BlueprintActuationTool{ + i.ActuationTool = &BlueprintActuationTool{ Version: versionInfo.requiredTfVersion, Flavor: "Terraform", } @@ -330,12 +352,12 @@ func (i *BlueprintInfo) create(bpPath string, r repoDetail, readmeContent []byte d, err := getDeploymentDuration(readmeContent, "Deployment Duration") if err == nil { - i.DeploymentDuration = *d + i.DeploymentDuration = d } c, err := getCostEstimate(readmeContent, "Cost") if err == nil { - i.CostEstimate = *c + i.CostEstimate = c } return nil @@ -354,13 +376,13 @@ func (i *BlueprintInterface) create(bpPath string) error { } func (c *BlueprintContent) create(bpPath string, rootPath string, readmeContent []byte) { - var docListToSet []BlueprintListContent + var docListToSet []*BlueprintListContent documentation, err := getMdContent(readmeContent, -1, -1, "Documentation", true) if err == nil { for _, li := range documentation.listItems { - doc := BlueprintListContent{ + doc := &BlueprintListContent{ Title: li.text, - URL: li.url, + Url: li.url, } docListToSet = append(docListToSet, doc) @@ -372,7 +394,7 @@ func (c *BlueprintContent) create(bpPath string, rootPath string, readmeContent // create architecture a, err := getArchitctureInfo(readmeContent, "Architecture") if err == nil { - c.Architecture = *a + c.Architecture = a } // create sub-blueprints @@ -391,13 +413,19 @@ func (c *BlueprintContent) create(bpPath string, rootPath string, readmeContent } func WriteMetadata(obj *BlueprintMetadata, bpPath, fileName string) error { - // marshal and write the file - yFile, err := yaml.Marshal(obj) + jBytes, err := protojson.Marshal(obj) if err != nil { return err } - return os.WriteFile(path.Join(bpPath, fileName), yFile, 0644) + // convert json bytes to yaml bytes for before writing to disk + // using go-yaml package here since that preserves the order of fields + yBytes, err := goyaml.JSONToYAML(jBytes) + if err != nil { + return err + } + + return os.WriteFile(path.Join(bpPath, fileName), yBytes, 0644) } func UnmarshalMetadata(bpPath, fileName string) (*BlueprintMetadata, error) { @@ -414,13 +442,19 @@ func UnmarshalMetadata(bpPath, fileName string) (*BlueprintMetadata, error) { return &bpObj, fmt.Errorf("unable to read metadata from the existing file: %w", err) } - err = yaml.Unmarshal(f, &bpObj) + // convert yaml bytes to json bytes for unmarshaling metadata + // content to proto definition + j, err := yaml.YAMLToJSON(f) if err != nil { + return nil, err + } + + if err := protojson.Unmarshal(j, &bpObj); err != nil { return &bpObj, err } - currVersion := bpObj.ResourceMeta.TypeMeta.APIVersion - currKind := bpObj.ResourceMeta.TypeMeta.Kind + currVersion := bpObj.ApiVersion + currKind := bpObj.Kind //validate GVK for current metadata if currVersion != metadataApiVersion { diff --git a/cli/bpmetadata/display.go b/cli/bpmetadata/display.go index 537e7120c19..58d6cc6a0eb 100644 --- a/cli/bpmetadata/display.go +++ b/cli/bpmetadata/display.go @@ -7,7 +7,7 @@ import ( "golang.org/x/text/language" ) -func buildUIInputFromVariables(vars []BlueprintVariable, input *BlueprintUIInput) { +func buildUIInputFromVariables(vars []*BlueprintVariable, input *BlueprintUIInput) { if input.Variables == nil { input.Variables = make(map[string]*DisplayVariable) } diff --git a/cli/bpmetadata/display_test.go b/cli/bpmetadata/display_test.go index 414d02c03e9..b657a3f716b 100644 --- a/cli/bpmetadata/display_test.go +++ b/cli/bpmetadata/display_test.go @@ -9,12 +9,12 @@ import ( func TestUIInputFromVariables(t *testing.T) { tests := []struct { name string - coreVars []BlueprintVariable + coreVars []*BlueprintVariable UIinput *BlueprintUIInput }{ { name: "display metadata does not exist", - coreVars: []BlueprintVariable{ + coreVars: []*BlueprintVariable{ { Name: "test_var_1", }, @@ -29,7 +29,7 @@ func TestUIInputFromVariables(t *testing.T) { }, { name: "display metadata exists and is in line with core metadata", - coreVars: []BlueprintVariable{ + coreVars: []*BlueprintVariable{ { Name: "test_var_1", }, @@ -56,7 +56,7 @@ func TestUIInputFromVariables(t *testing.T) { }, { name: "display metadata exists and is not in line with core metadata", - coreVars: []BlueprintVariable{ + coreVars: []*BlueprintVariable{ { Name: "test_var_1", }, diff --git a/cli/bpmetadata/int-test/goldens/golden-metadata.yaml b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml index d05fc1e1716..7dfca2a9eb4 100644 --- a/cli/bpmetadata/int-test/goldens/golden-metadata.yaml +++ b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml @@ -13,7 +13,7 @@ spec: version: 4.0.0 actuationTool: flavor: Terraform - version: '>= 0.13' + version: ">= 0.13" description: {} content: subBlueprints: @@ -29,125 +29,87 @@ spec: - name: admins description: IAM-style members who will be granted roles/storage.objectAdmin on all buckets. varType: list(string) - defaultValue: [] + defaultValue: "[]" - name: bucket_admins description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket admins. varType: map(string) - defaultValue: {} + defaultValue: map[] - name: bucket_creators description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket creators. varType: map(string) - defaultValue: {} + defaultValue: map[] - name: bucket_hmac_key_admins description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket HMAC Key admins. varType: map(string) - defaultValue: {} + defaultValue: map[] - name: bucket_lifecycle_rules description: Additional lifecycle_rules for specific buckets. Map of lowercase unprefixed name => list of lifecycle rules to configure. - varType: |- - map(set(object({ - # Object with keys: - # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass. - # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule. - action = map(string) - - # Object with keys: - # - age - (Optional) Minimum age of an object in days to satisfy this condition. - # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition. - # - with_state - (Optional) Match to live and/or archived objects. Supported values include: "LIVE", "ARCHIVED", "ANY". - # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY. - # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition. - # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition. - # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true. - # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object. - # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent. - condition = map(string) - }))) - defaultValue: {} + varType: "map(set(object({\n # Object with keys:\n # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass.\n # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule.\n action = map(string)\n\n # Object with keys:\n # - age - (Optional) Minimum age of an object in days to satisfy this condition.\n # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition.\n # - with_state - (Optional) Match to live and/or archived objects. Supported values include: \"LIVE\", \"ARCHIVED\", \"ANY\".\n # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY.\n # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition.\n # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition.\n # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true.\n # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object.\n # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent.\n condition = map(string)\n })))" + defaultValue: map[] - name: bucket_policy_only description: Disable ad-hoc ACLs on specified buckets. Defaults to true. Map of lowercase unprefixed name => boolean varType: map(bool) - defaultValue: {} + defaultValue: map[] - name: bucket_storage_admins description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket storage admins. varType: map(string) - defaultValue: {} + defaultValue: map[] - name: bucket_viewers description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket viewers. varType: map(string) - defaultValue: {} + defaultValue: map[] - name: cors - description: 'Set of maps of mixed type attributes for CORS values. See appropriate attribute types here: https://www.terraform.io/docs/providers/google/r/storage_bucket.html#cors' + description: "Set of maps of mixed type attributes for CORS values. See appropriate attribute types here: https://www.terraform.io/docs/providers/google/r/storage_bucket.html#cors" varType: set(any) - defaultValue: [] + defaultValue: "[]" - name: creators description: IAM-style members who will be granted roles/storage.objectCreators on all buckets. varType: list(string) - defaultValue: [] + defaultValue: "[]" - name: custom_placement_config - description: Map of lowercase unprefixed name => custom placement config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#custom_placement_config + description: "Map of lowercase unprefixed name => custom placement config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#custom_placement_config" varType: any - defaultValue: {} + defaultValue: map[] - name: default_event_based_hold description: Enable event based hold to new objects added to specific bucket. Defaults to false. Map of lowercase unprefixed name => boolean varType: map(bool) - defaultValue: {} + defaultValue: map[] - name: encryption_key_names description: Optional map of lowercase unprefixed name => string, empty strings are ignored. varType: map(string) - defaultValue: {} + defaultValue: map[] - name: folders description: Map of lowercase unprefixed name => list of top level folder objects. varType: map(list(string)) - defaultValue: {} + defaultValue: map[] - name: force_destroy description: Optional map of lowercase unprefixed name => boolean, defaults to false. varType: map(bool) - defaultValue: {} + defaultValue: map[] - name: hmac_key_admins description: IAM-style members who will be granted roles/storage.hmacKeyAdmin on all buckets. varType: list(string) - defaultValue: [] + defaultValue: "[]" - name: hmac_service_accounts description: List of HMAC service accounts to grant access to GCS. varType: map(string) - defaultValue: {} + defaultValue: map[] - name: labels description: Labels to be attached to the buckets varType: map(string) - defaultValue: {} + defaultValue: map[] - name: lifecycle_rules - description: List of lifecycle rules to configure. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#lifecycle_rule except condition.matches_storage_class should be a comma delimited string. - varType: |- - set(object({ - # Object with keys: - # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass. - # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule. - action = map(string) - - # Object with keys: - # - age - (Optional) Minimum age of an object in days to satisfy this condition. - # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition. - # - with_state - (Optional) Match to live and/or archived objects. Supported values include: "LIVE", "ARCHIVED", "ANY". - # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY. - # - matches_prefix - (Optional) One or more matching name prefixes to satisfy this condition. - # - matches_suffix - (Optional) One or more matching name suffixes to satisfy this condition. - # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition. - # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition. - # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true. - # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object. - # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent. - condition = map(string) - })) - defaultValue: [] + description: "List of lifecycle rules to configure. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#lifecycle_rule except condition.matches_storage_class should be a comma delimited string." + varType: "set(object({\n # Object with keys:\n # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass.\n # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule.\n action = map(string)\n\n # Object with keys:\n # - age - (Optional) Minimum age of an object in days to satisfy this condition.\n # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition.\n # - with_state - (Optional) Match to live and/or archived objects. Supported values include: \"LIVE\", \"ARCHIVED\", \"ANY\".\n # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY.\n # - matches_prefix - (Optional) One or more matching name prefixes to satisfy this condition.\n # - matches_suffix - (Optional) One or more matching name suffixes to satisfy this condition.\n # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition.\n # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition.\n # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true.\n # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object.\n # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent.\n condition = map(string)\n }))" + defaultValue: "[]" - name: location description: Bucket location. varType: string defaultValue: EU - name: logging - description: Map of lowercase unprefixed name => bucket logging config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#logging + description: "Map of lowercase unprefixed name => bucket logging config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#logging" varType: any - defaultValue: {} + defaultValue: map[] - name: names description: Bucket name suffixes. varType: list(string) @@ -155,7 +117,6 @@ spec: - name: prefix description: Prefix used to generate the bucket name. varType: string - defaultValue: "" - name: project_id description: Bucket project id. varType: string @@ -167,39 +128,39 @@ spec: - name: randomize_suffix description: Adds an identical, but randomized 4-character suffix to all bucket names varType: bool - defaultValue: false + defaultValue: "false" - name: retention_policy - description: Map of retention policy values. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#retention_policy + description: "Map of retention policy values. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#retention_policy" varType: any - defaultValue: {} + defaultValue: map[] - name: set_admin_roles description: Grant roles/storage.objectAdmin role to admins and bucket_admins. varType: bool - defaultValue: false + defaultValue: "false" - name: set_creator_roles description: Grant roles/storage.objectCreator role to creators and bucket_creators. varType: bool - defaultValue: false + defaultValue: "false" - name: set_hmac_access description: Set S3 compatible access to GCS. varType: bool - defaultValue: false + defaultValue: "false" - name: set_hmac_key_admin_roles description: Grant roles/storage.hmacKeyAdmin role to hmac_key_admins and bucket_hmac_key_admins. varType: bool - defaultValue: false + defaultValue: "false" - name: set_storage_admin_roles description: Grant roles/storage.admin role to storage_admins and bucket_storage_admins. varType: bool - defaultValue: false + defaultValue: "false" - name: set_viewer_roles description: Grant roles/storage.objectViewer role to viewers and bucket_viewers. varType: bool - defaultValue: false + defaultValue: "false" - name: storage_admins description: IAM-style members who will be granted roles/storage.admin on all buckets. varType: list(string) - defaultValue: [] + defaultValue: "[]" - name: storage_class description: Bucket storage class. varType: string @@ -207,15 +168,15 @@ spec: - name: versioning description: Optional map of lowercase unprefixed name => boolean, defaults to false. varType: map(bool) - defaultValue: {} + defaultValue: map[] - name: viewers description: IAM-style members who will be granted roles/storage.objectViewer on all buckets. varType: list(string) - defaultValue: [] + defaultValue: "[]" - name: website - description: 'Map of website values. Supported attributes: main_page_suffix, not_found_page' + description: "Map of website values. Supported attributes: main_page_suffix, not_found_page" varType: map(any) - defaultValue: {} + defaultValue: map[] outputs: - name: bucket description: Bucket resource (for single use). diff --git a/cli/bpmetadata/int-test/workflow.sh b/cli/bpmetadata/int-test/workflow.sh index 5ba029b1b92..8365732901e 100755 --- a/cli/bpmetadata/int-test/workflow.sh +++ b/cli/bpmetadata/int-test/workflow.sh @@ -49,7 +49,7 @@ mkdir $WORKING_FOLDER && cd $WORKING_FOLDER # to be validated is for that version. git config --global advice.detachedHead false git clone -b v4.0.0 --single-branch https://github.com/terraform-google-modules/terraform-google-cloud-storage.git "./$BLUPRINT_FOLDER/" -../../../bin/cft blueprint metadata -p $BLUPRINT_FOLDER -d -q +../../../bin/cft blueprint metadata -p $BLUPRINT_FOLDER -d -q -f mkdir $GIT_FOLDER cp "../$GOLDENS_FOLDER/$GOLDEN_METADATA" "$GIT_FOLDER/$WORKING_METADATA" diff --git a/cli/bpmetadata/markdown.go b/cli/bpmetadata/markdown.go index 6aba3d65858..2ef7c239b7a 100644 --- a/cli/bpmetadata/markdown.go +++ b/cli/bpmetadata/markdown.go @@ -136,12 +136,12 @@ func getDeploymentDuration(content []byte, headTitle string) (*BlueprintTimeEsti } if m[1] == "Configuration" { - timeEstimate.ConfigurationSecs = i * 60 + timeEstimate.ConfigurationSecs = int32(i) * 60 continue } if m[1] == "Deployment" { - timeEstimate.DeploymentSecs = i * 60 + timeEstimate.DeploymentSecs = int32(i) * 60 continue } } @@ -159,7 +159,7 @@ func getCostEstimate(content []byte, headTitle string) (*BlueprintCostEstimate, return &BlueprintCostEstimate{ Description: costDetails.literal, - URL: costDetails.url, + Url: costDetails.url, }, nil } @@ -203,7 +203,7 @@ func getArchitctureInfo(content []byte, headTitle string) (*BlueprintArchitectur if isImage { return &BlueprintArchitecture{ Description: dList, - DiagramURL: string(iNode.Destination), + DiagramUrl: string(iNode.Destination), }, nil } @@ -211,7 +211,7 @@ func getArchitctureInfo(content []byte, headTitle string) (*BlueprintArchitectur if isLink { return &BlueprintArchitecture{ Description: dList, - DiagramURL: string(lNode.Destination), + DiagramUrl: string(lNode.Destination), }, nil } } diff --git a/cli/bpmetadata/markdown_test.go b/cli/bpmetadata/markdown_test.go index 634b9b2b764..1765f407c98 100644 --- a/cli/bpmetadata/markdown_test.go +++ b/cli/bpmetadata/markdown_test.go @@ -194,7 +194,7 @@ func TestProcessArchitectureContent(t *testing.T) { `2. Step 2`, `3. Step 3`, }, - DiagramURL: "https://i.redd.it/w3kr4m2fi3111.png", + DiagramUrl: "https://i.redd.it/w3kr4m2fi3111.png", }, }, { @@ -296,7 +296,7 @@ func TestProcessCostEstimateContent(t *testing.T) { title: "Cost", want: &BlueprintCostEstimate{ Description: "Solution cost details", - URL: "https://cloud.google.com/products/calculator?id=02fb0c45-cc29-4567-8cc6-f72ac9024add", + Url: "https://cloud.google.com/products/calculator?id=02fb0c45-cc29-4567-8cc6-f72ac9024add", }, }, { diff --git a/cli/bpmetadata/path.go b/cli/bpmetadata/path.go index 27e7ddfdbf4..a5b8b297ecb 100644 --- a/cli/bpmetadata/path.go +++ b/cli/bpmetadata/path.go @@ -33,19 +33,19 @@ func fileExists(path string) (bool, error) { return true, nil } -func getExamples(configPath string) ([]BlueprintMiscContent, error) { +func getExamples(configPath string) ([]*BlueprintMiscContent, error) { return getDirPaths(configPath, reExamples) } -func getModules(configPath string) ([]BlueprintMiscContent, error) { +func getModules(configPath string) ([]*BlueprintMiscContent, error) { return getDirPaths(configPath, reModules) } // getDirPaths traverses a given path and looks for directories // with TF configs while ignoring the .terraform* directories created and // used internally by the Terraform CLI -func getDirPaths(configPath string, re *regexp.Regexp) ([]BlueprintMiscContent, error) { - paths := []BlueprintMiscContent{} +func getDirPaths(configPath string, re *regexp.Regexp) ([]*BlueprintMiscContent, error) { + paths := []*BlueprintMiscContent{} err := filepath.Walk(configPath, func(path string, info fs.FileInfo, err error) error { if err != nil { return fmt.Errorf("error accessing examples in the path %q: %v", configPath, err) @@ -60,7 +60,7 @@ func getDirPaths(configPath string, re *regexp.Regexp) ([]BlueprintMiscContent, if !info.IsDir() && strings.HasSuffix(info.Name(), ".tf") { d := filepath.Dir(path) if l := trimPath(d, re); l != "" { - dirPath := BlueprintMiscContent{ + dirPath := &BlueprintMiscContent{ Name: filepath.Base(d), Location: l, } diff --git a/cli/bpmetadata/path_test.go b/cli/bpmetadata/path_test.go index 07323f3f2fa..993010f5dbf 100644 --- a/cli/bpmetadata/path_test.go +++ b/cli/bpmetadata/path_test.go @@ -57,27 +57,27 @@ func TestDirContent(t *testing.T) { name string path string regex string - want []BlueprintMiscContent + want []*BlueprintMiscContent wantErr bool }{ { name: "valid examples", path: "content/examples", regex: regexExamples, - want: []BlueprintMiscContent{ - BlueprintMiscContent{ + want: []*BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "terraform", Location: "examples/acm/acm-terraform-blog-part1/terraform", }, - BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "acm-terraform-blog-part2", Location: "examples/acm/acm-terraform-blog-part2", }, - BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "simple_regional", Location: "examples/simple_regional", }, - BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "simple_regional_beta", Location: "examples/simple_regional_beta", }, @@ -88,16 +88,16 @@ func TestDirContent(t *testing.T) { name: "valid modules", path: "content/modules", regex: regexModules, - want: []BlueprintMiscContent{ - BlueprintMiscContent{ + want: []*BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "beta-public-cluster", Location: "modules/beta-public-cluster", }, - BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "binary-authorization", Location: "modules/binary-authorization", }, - BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "private-cluster", Location: "modules/private-cluster", }, @@ -114,12 +114,12 @@ func TestDirContent(t *testing.T) { name: "some example folders without any tf", path: "content/examples-some-without-tf/examples", regex: regexExamples, - want: []BlueprintMiscContent{ - BlueprintMiscContent{ + want: []*BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "terraform", Location: "examples/acm/acm-terraform-blog-part1/terraform", }, - BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "simple_regional", Location: "examples/simple_regional", }, @@ -130,14 +130,14 @@ func TestDirContent(t *testing.T) { name: "all module folders without any tf", path: "content/modules-no-tf/modules", regex: regexModules, - want: []BlueprintMiscContent{}, + want: []*BlueprintMiscContent{}, wantErr: false, }, { name: "mismatched regex", path: "content/modules", regex: "badRegex", - want: []BlueprintMiscContent{}, + want: []*BlueprintMiscContent{}, wantErr: false, }, } diff --git a/cli/bpmetadata/proto/bpmetadata.proto b/cli/bpmetadata/proto/bpmetadata.proto index 759628e3c9d..ae7e0ccd8cd 100644 --- a/cli/bpmetadata/proto/bpmetadata.proto +++ b/cli/bpmetadata/proto/bpmetadata.proto @@ -2,8 +2,9 @@ syntax = "proto3"; package google.cloud.config.bpmetadata; -import "bpmetadata/proto/bpmetadata_ui.proto"; +import "bpmetadata_ui.proto"; +// TODO: update copybara configuration for go to java package transformation option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata"; // BlueprintMetadata defines the overall structure for blueprint metadata. @@ -17,70 +18,70 @@ option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli message BlueprintMetadata { // APIVersion is the apiVersion field of a metadata file // Gen: auto-generated - string api_version = 1; + string api_version = 1; // @gotags: json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" // Kind is the kind field of a metadata file // Gen: auto-generated - string kind = 2; + string kind = 2; // @gotags: json:"kind,omitempty" yaml:"kind,omitempty" // ResourceTypeMeta is the metadata field of a metadata file // Gen: partial - ResourceTypeMeta metadata = 3; + ResourceTypeMeta metadata = 3; // @gotags: json:"metadata,omitempty" yaml:"metadata,omitempty" // BlueprintMetadataSpec is the metadata specification for the blueprint // Gen: partial - BlueprintMetadataSpec spec = 4; + BlueprintMetadataSpec spec = 4; // @gotags: yaml:"spec" json:"spec" } message ResourceTypeMeta { // Name is the metadata.name field of a Resource // Gen: auto-generated - string name = 1; + string name = 1; // @gotags: json:"name,omitempty" yaml:"name,omitempty" // Labels is the metadata.labels field of a Resource // Gen: manually-authored - map labels = 2; + map labels = 2; // @gotags: json:"labels,omitempty" yaml:"labels,omitempty" // Annotations is the metadata.annotations field of a Resource. // Gen: auto-generated - map annotations = 3; + map annotations = 3; // @gotags: json:"annotations,omitempty" yaml:"annotations,omitempty" } // BlueprintMetadataSpec defines the spec portion of the blueprint metadata. message BlueprintMetadataSpec { // BlueprintInfo defines the basic information of the blueprint. // Gen: partial - BlueprintInfo info = 1; + BlueprintInfo info = 1; // @gotags: json:"info,omitempty" yaml:"info,omitempty" // BlueprintContent defines the detail for blueprint related content such as // related documentation, diagrams, examples etc. // Gen: partial - BlueprintContent content = 2; + BlueprintContent content = 2; // @gotags: json:"content,omitempty" yaml:"content,omitempty" // BlueprintInterface defines the input and output variables for the blueprint. // Gen: partial - BlueprintInterface interfaces = 3; + BlueprintInterface interfaces = 3; // @gotags: json:"interfaces,omitempty" yaml:"interfaces,omitempty" // BlueprintRequirements defines the roles required and the associated services // that need to be enabled to provision blueprint resources. // Gen: auto-generated - BlueprintRequirements requirements = 4; + BlueprintRequirements requirements = 4; // @gotags: json:"requirements,omitempty" yaml:"requirements,omitempty" // BlueprintUI defines the user interface for the blueprint. // Gen: partial - BlueprintUI ui = 5; + BlueprintUI ui = 5; // @gotags: json:"ui,omitempty" yaml:"ui,omitempty" } // BlueprintInfo defines the basic information of the blueprint. message BlueprintInfo { // Title for the blueprint. // Gen: auto-generated - First H1 text in readme.md. - string title = 1; + string title = 1; // @gotags: json:"title" yaml:"title" // Blueprint source location and source type. // Gen: auto-generated - user will be prompted if repo information can not // be determined from the blueprint path. - BlueprintRepoDetail source = 2; + BlueprintRepoDetail source = 2; // @gotags: json:"source,omitempty" yaml:"source,omitempty" // Last released semantic version for the packaged blueprint. // Gen: auto-generated - From the `module_name` attribute of @@ -89,90 +90,90 @@ message BlueprintInfo { // provider_meta "google" { // module_name = "blueprints/terraform/terraform-google-log-analysis/v0.1.5" // } - string version = 3; + string version = 3; // @gotags: json:"version,omitempty" yaml:"version,omitempty" // Actuation tool e.g. Terraform and its required version. // Gen: auto-generated - BlueprintActuationTool actuation_tool = 4; + BlueprintActuationTool actuation_tool = 4; // @gotags: json:"actuationTool,omitempty" yaml:"actuationTool,omitempty" // Various types of descriptions associated with the blueprint. // Gen: auto-generated - BlueprintDescription description = 5; + BlueprintDescription description = 5; // @gotags: 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. // Gen: auto-generated - string icon = 6; + string icon = 6; // @gotags: json:"icon,omitempty" yaml:"icon,omitempty" // The time estimate for configuring and deploying the blueprint. // Gen: auto-generated - BlueprintTimeEstimate deployment_duration = 7; + BlueprintTimeEstimate deployment_duration = 7; // @gotags: json:"deploymentDuration,omitempty" yaml:"deploymentDuration,omitempty" // The cost estimate for the blueprint based on preconfigured variables. // Gen: auto-generated - BlueprintCostEstimate cost_estimate = 8; + BlueprintCostEstimate cost_estimate = 8; // @gotags: json:"costEstimate,omitempty" yaml:"costEstimate,omitempty" // A list of GCP cloud products used in the blueprint. // Gen: manually-authored - repeated BlueprintCloudProduct cloud_products = 9; + repeated BlueprintCloudProduct cloud_products = 9; // @gotags: json:"cloudProducts,omitempty" yaml:"cloudProducts,omitempty" // A configuration of fixed and dynamic GCP quotas that apply to the blueprint. // Gen: manually-authored - repeated BlueprintQuotaDetail quota_details = 10; + repeated BlueprintQuotaDetail quota_details = 10; // @gotags: json:"quotaDetails,omitempty" yaml:"quotaDetails,omitempty" // Details on the author producing the blueprint. // Gen: manually-authored - BlueprintAuthor author = 11; + BlueprintAuthor author = 11; // @gotags: json:"author,omitempty" yaml:"author,omitempty" // Details on software installed as part of the blueprint. // Gen: manually-authored - repeated BlueprintSoftwareGroup software_groups = 12; + repeated BlueprintSoftwareGroup software_groups = 12; // @gotags: json:"softwareGroups,omitempty" yaml:"softwareGroups,omitempty" // Support offered, if any for the blueprint. // Gen: manually-authored - BlueprintSupport support_info = 13; + BlueprintSupport support_info = 13; // @gotags: json:"supportInfo,omitempty" yaml:"supportInfo,omitempty" // A list of GCP org policies to be checked for successful deployment. // Gen: manually-authored - repeated BlueprintOrgPolicyCheck org_policy_checks = 14; + repeated BlueprintOrgPolicyCheck org_policy_checks = 14; // @gotags: json:"orgPolicyChecks,omitempty" yaml:"orgPolicyChecks,omitempty" // Specifies if the blueprint supports single or multiple deployments per GCP project. // If set to true, the blueprint can not be deployed more than once in the same GCP project. // Gen: manually-authored - bool single_deployment = 15; + bool single_deployment = 15; // @gotags: json:"singleDeployment,omitempty" yaml:"singleDeployment,omitempty" } // BlueprintContent defines the detail for blueprint related content such as // related documentation, diagrams, examples etc. message BlueprintContent { // Gen: auto-generated - BlueprintArchitecture architecture = 1; + BlueprintArchitecture architecture = 1; // @gotags: json:"architecture,omitempty" yaml:"architecture,omitempty" // Gen: manually-authored - repeated BlueprintDiagram diagrams = 2; + repeated BlueprintDiagram diagrams = 2; // @gotags: json:"diagrams,omitempty" yaml:"diagrams,omitempty" // Gen: auto-generated - the list content following the "## Documentation" tag. E.g. // ## Documentation // - [Hosting a Static Website](https://cloud.google.com/storage/docs/hosting-static-website) - repeated BlueprintListContent documentation = 3; + repeated BlueprintListContent documentation = 3; // @gotags: json:"documentation,omitempty" yaml:"documentation,omitempty" // Gen: auto-generated - blueprints under the modules/ folder. - repeated BlueprintMiscContent sub_blueprints = 4; + repeated BlueprintMiscContent sub_blueprints = 4; // @gotags: json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty" // Gen: auto-generated - examples under the examples/ folder. - repeated BlueprintMiscContent examples = 5; + repeated BlueprintMiscContent examples = 5; // @gotags: json:"examples,omitempty" yaml:"examples,omitempty" } // BlueprintInterface defines the input and output variables for the blueprint. message BlueprintInterface { // Gen: auto-generated - all defined variables for the blueprint - repeated BlueprintVariable variables = 1; + repeated BlueprintVariable variables = 1; // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" // Gen: manually-authored - repeated BlueprintVariableGroup variable_groups = 2; + repeated BlueprintVariableGroup variable_groups = 2; // @gotags: json:"variableGroups,omitempty" yaml:"variableGroups,omitempty" // Gen: auto-generated - all defined outputs for the blueprint - repeated BlueprintOutput outputs = 3; + repeated BlueprintOutput outputs = 3; // @gotags: json:"outputs,omitempty" yaml:"outputs,omitempty" } // BlueprintRequirements defines the roles required and the associated services @@ -185,11 +186,11 @@ message BlueprintRequirements { // "roles/compute.admin", // ] // } - repeated BlueprintRoles roles = 1; + repeated BlueprintRoles roles = 1; // @gotags: json:"roles,omitempty" yaml:"roles,omitempty" // Gen: auto-generated - all services required for the blueprint in test/setup/main.tf // as "activate_apis" in the project module. - repeated string services = 2; + repeated string services = 2; // @gotags: json:"services,omitempty" yaml:"services,omitempty" } // BlueprintUI is the top-level structure for holding UI specific metadata. @@ -197,33 +198,33 @@ message BlueprintUI { // The top-level input section that defines the list of variables and // their sections on the deployment page. // Gen: partial - BlueprintUIInput input = 1; + BlueprintUIInput input = 1; // @gotags: 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. // Gen: manually-authored - BlueprintUIOutput runtime = 2; + BlueprintUIOutput runtime = 2; // @gotags: json:"runtime,omitempty" yaml:"runtime,omitempty" } message BlueprintRepoDetail { // Gen: auto-generated - URL from the .git dir. // Can be manually overridden with a custom URL if needed. - string repo = 1; + string repo = 1; // @gotags: json:"repo" yaml:"repo" // Gen: auto-generated - set as "git" for now until more // types are supported. - string source_type = 2; + string source_type = 2; // @gotags: json:"sourceType" yaml:"sourceType" // Gen: auto-generated - not set for root modules but // set as the module name for submodules, if found. - string dir = 3; + string dir = 3; // @gotags: json:"dir,omitempty" yaml:"dir,omitempty" } // BlueprintActuationTool defines the actuation tool used to provision the blueprint. message BlueprintActuationTool { // Gen: auto-generated - set as "Terraform" for now until //more flavors are supported. - string flavor = 1; + string flavor = 1; // @gotags: json:"flavor,omitempty" yaml:"flavor,omitempty" // Required version for the actuation tool. // Gen: auto-generated - For Terraform this is the `required_version` @@ -231,30 +232,30 @@ message BlueprintActuationTool { // terraform { // required_version = ">= 0.13" // } - string version = 2; + string version = 2; // @gotags: json:"version,omitempty" yaml:"version,omitempty" } // All descriptions are set with the markdown content immediately // after each type's heading declaration in readme.md. message BlueprintDescription { // Gen: auto-generated - Markdown after "### Tagline". - string tagline = 1; + string tagline = 1; // @gotags: json:"tagline,omitempty" yaml:"tagline,omitempty" // Gen: auto-generated - Markdown after "### Detailed". - string detailed = 2; + string detailed = 2; // @gotags: json:"detailed,omitempty" yaml:"detailed,omitempty" // Gen: auto-generated - Markdown after "### PreDeploy". - string pre_deploy = 3; + string pre_deploy = 3; // @gotags: json:"preDeploy,omitempty" yaml:"preDeploy,omitempty" // Gen: auto-generated - Markdown after "### Html". - string html = 4; + string html = 4; // @gotags: json:"html,omitempty" yaml:"html,omitempty" // Gen: auto-generated - Markdown after "### EulaUrls". - repeated string eula_urls = 5; + repeated string eula_urls = 5; // @gotags: json:"eulaUrls,omitempty" yaml:"eulaUrls,omitempty" // Gen: auto-generated - Markdown after "### Architecture" // Deprecated. Use BlueprintContent.Architecture instead. - repeated string architecture = 6; + repeated string architecture = 6; // @gotags: json:"architecture,omitempty" yaml:"architecture,omitempty" } // A time estimate in secs required for configuring and deploying the blueprint. @@ -263,8 +264,8 @@ message BlueprintTimeEstimate { // ### DeploymentTime // - Configuration: X secs // - Deployment: Y secs - int32 configuration_secs = 1; - int32 deployment_secs = 2; + int32 configuration_secs = 1; // @gotags: json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty" + int32 deployment_secs = 2; // @gotags: json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty" } // The cost estimate for the blueprint based on pre-configured variables. @@ -273,8 +274,8 @@ message BlueprintCostEstimate { // with a description E.g. // ### Cost // [$20.00](https://cloud.google.com/products/calculator?hl=en_US&_ga=2.1665458.-226505189.1675191136#id=02fb0c45-cc29-4567-8cc6-f72ac9024add) - string description = 1; - string url = 2; + string description = 1; // @gotags: json:"description" yaml:"description" + string url = 2; // @gotags: json:"url" yaml:"url" } // GCP cloud product(s) used in the blueprint. @@ -282,21 +283,21 @@ message BlueprintCloudProduct { // A top-level (e.g. "Compute Engine") or secondary (e.g. "Binary Authorization") // product used in the blueprint. // Gen: manually-authored - string product_id = 1; + string product_id = 1; // @gotags: json:"productId,omitempty" yaml:"productId,omitempty" // Url for the product. // Gen: manually-authored - string page_url = 2; + string page_url = 2; // @gotags: json:"pageUrl" yaml:"pageUrl" // A label string for the product, if it is not an integrated GCP product. // E.g. "Data Studio" // Gen: manually-authored - string label = 3; + string label = 3; // @gotags: json:"label,omitempty" yaml:"label,omitempty" // Is the product's landing page external to the GCP console e.g. // lookerstudio.google.com // Gen: manually-authored - bool is_external = 4; + bool is_external = 4; // @gotags: json:"isExternal,omitempty" yaml:"isExternal,omitempty" } // BlueprintOrgPolicyCheck defines GCP org policies to be checked @@ -304,12 +305,12 @@ message BlueprintCloudProduct { message BlueprintOrgPolicyCheck { // Id for the policy e.g. "compute-vmExternalIpAccess" // Gen: manually-authored - string policy_id = 1; + string policy_id = 1; // @gotags: json:"policyId" yaml:"policyId" // If not set, it is assumed any version of this org policy // prevents successful deployment of this solution. // Gen: manually-authored - repeated string required_values = 2; + repeated string required_values = 2; // @gotags: json:"requiredValues,omitempty" yaml:"requiredValues,omitempty" } // QuotaResourceType defines the type of resource a quota is applied to. @@ -325,12 +326,12 @@ message BlueprintQuotaDetail { // with the corresponding resource and quota type. In its absence, the quota // detail is assumed to be fixed. // Gen: manually-authored - string dynamic_variable = 1; + string dynamic_variable = 1; // @gotags: json:"dynamicVariable,omitempty" yaml:"dynamicVariable,omitempty" // ResourceType is the type of resource the quota will be applied to i.e. // GCE Instance or Disk etc. // Gen: manually-authored - QuotaResourceType resource_type = 2; + QuotaResourceType resource_type = 2; // @gotags: json:"resourceType" yaml:"resourceType" // QuotaType is a key/value pair of the actual quotas and their corresponding // values. Valid keys for quota_type can be: @@ -339,22 +340,22 @@ message BlueprintQuotaDetail { // DISK_TYPE OR // SIZE_GB. // Gen: manually-authored - map quota_type = 3; + map quota_type = 3; // @gotags: json:"quotaType" yaml:"quotaType" } // BlueprintAuthor defines the author of a blueprint. message BlueprintAuthor { // Name of template author or organization. // Gen: manually-authored - string title = 1; + string title = 1; // @gotags: json:"title" yaml:"title" // Description of the author. // Gen: manually-authored - string description = 2; + string description = 2; // @gotags: json:"description,omitempty" yaml:"description,omitempty" // Link to the author's website. // Gen: manually-authored - string url = 3; + string url = 3; // @gotags: json:"url,omitempty" yaml:"url,omitempty" } // SoftwareGroupType is a string enum representing the different types of software groups. @@ -369,11 +370,11 @@ enum SoftwareGroupType { message BlueprintSoftwareGroup { // Pre-defined software types. // Gen: manually-authored - SoftwareGroupType type = 1; + SoftwareGroupType type = 1; // @gotags: json:"type,omitempty" yaml:"type,omitempty" // Software components belonging to this group. // Gen: manually-authored - repeated BlueprintSoftware software = 2; + repeated BlueprintSoftware software = 2; // @gotags: json:"software,omitempty" yaml:"software,omitempty" } // A description of a piece of a single software component @@ -381,39 +382,39 @@ message BlueprintSoftwareGroup { message BlueprintSoftware { // User-visible title. // Gen: manually-authored - string title = 1; + string title = 1; // @gotags: json:"title" yaml:"title" // Software version. // Gen: manually-authored - string version = 2; + string version = 2; // @gotags: json:"version,omitempty" yaml:"version,omitempty" // Link to development site or marketing page for this software. // Gen: manually-authored - string url = 3; + string url = 3; // @gotags: json:"url,omitempty" yaml:"url,omitempty" // Link to license page. // Gen: manually-authored - string license_url = 4; + string license_url = 4; // @gotags: json:"licenseUrl,omitempty" yaml:"licenseUrl,omitempty" } // A description of a support option message BlueprintSupport { // Description of the support option. // Gen: manually-authored - string description = 1; + string description = 1; // @gotags: json:"description" yaml:"description" // Link to the page providing this support option. // Gen: manually-authored - string url = 2; + string url = 2; // @gotags: json:"url,omitempty" yaml:"url,omitempty" // The organization or group that provides the support option (e.g.: // "Community", "Google"). // Gen: manually-authored - string entity = 3; + string entity = 3; // @gotags: json:"entity,omitempty" yaml:"entity,omitempty" // Whether to show the customer's support ID. // Gen: manually-authored - bool show_support_id = 4; + bool show_support_id = 4; // @gotags: json:"showSupportId,omitempty" yaml:"showSupportId,omitempty" } message BlueprintArchitecture { @@ -423,49 +424,49 @@ message BlueprintArchitecture { // 1. Step no. 1 // 2. Step no. 2 // 3. Step no. 3 - string diagram_url = 1; + string diagram_url = 1; // @gotags: json:"diagramUrl" yaml:"diagramUrl" // Gen: auto-generated - the list items following the "## Architecture" tag. - repeated string description = 2; + repeated string description = 2; // @gotags: json:"description" yaml:"description" } message BlueprintMiscContent { - string name = 1; - string location = 2; + string name = 1; // @gotags: json:"name" yaml:"name" + string location = 2; // @gotags: json:"location,omitempty" yaml:"location,omitempty" } message BlueprintDiagram { - string name = 1; - string alt_text = 2; - string description = 3; + string name = 1; // @gotags: json:"name" yaml:"name" + string alt_text = 2; // @gotags: json:"altText,omitempty" yaml:"altText,omitempty" + string description = 3; // @gotags: json:"description,omitempty" yaml:"description,omitempty" } message BlueprintListContent { - string title = 1; - string url = 2; + string title = 1; // @gotags: json:"title" yaml:"title" + string url = 2; // @gotags: json:"url,omitempty" yaml:"url,omitempty" } message BlueprintVariable { - string name = 1; - string description = 2; - string var_type = 3; - string default_value = 4; - bool required = 5; + string name = 1; // @gotags: json:"name,omitempty" yaml:"name,omitempty" + string description = 2; // @gotags: json:"description,omitempty" yaml:"description,omitempty" + string var_type = 3; // @gotags: json:"varType,omitempty" yaml:"varType,omitempty" + string default_value = 4; // @gotags: json:"defaultValue,omitempty" yaml:"defaultValue,omitempty" + bool required = 5; // @gotags: json:"required,omitempty" yaml:"required,omitempty" } // BlueprintVariableGroup is manually entered. message BlueprintVariableGroup { - string name = 1; - string description = 2; - repeated string variables = 3; + string name = 1; // @gotags: json:"name" yaml:"name" + string description = 2; // @gotags: json:"description,omitempty" yaml:"description,omitempty" + repeated string variables = 3; // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" } message BlueprintOutput { - string name = 1; - string description = 2; + string name = 1; // @gotags: json:"name" yaml:"name" + string description = 2; // @gotags: json:"description,omitempty" yaml:"description,omitempty" } message BlueprintRoles { - string level = 1; - repeated string roles = 2; + string level = 1; // @gotags: json:"level" yaml:"level" + repeated string roles = 2; // @gotags: json:"roles" yaml:"roles" } diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index 81d57d45c7f..88940f5db7d 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -2,19 +2,20 @@ syntax = "proto3"; package google.cloud.config.bpmetadata; -import "bpmetadata/proto/bpmetadata_ui_ext.proto"; +import "bpmetadata_ui_ext.proto"; +// TODO: update copybara configuration for go to java package transformation option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata"; // BlueprintUIInput is the structure for holding Input and Input Section (i.e. groups) specific metadata. message BlueprintUIInput { // variables is a map defining all inputs on the UI. // Gen: partial - map variables = 1; + map variables = 1; // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" // Sections is a generic structure for grouping inputs together. // Gen: manually-authored - repeated DisplaySection sections = 2; + repeated DisplaySection sections = 2; // @gotags: json:"sections,omitempty" yaml:"sections,omitempty" } // Additional display specific metadata pertaining to a particular @@ -22,59 +23,59 @@ message BlueprintUIInput { message DisplayVariable { // The variable name from the corresponding standard metadata file. // Gen: auto-generated - the Terraform variable name - string name = 1; + string name = 1; // @gotags: json:"name" yaml:"name" // Visible title for the variable on the UI. If not present, // Name will be used for the Title. // Gen: auto-generated - the Terraform variable converted to title case e.g. // variable "bucket_admins" will convert to "Bucket Admins" as the title. - string title = 2; + string title = 2; // @gotags: json:"title" yaml:"title" // A flag to hide or show the variable on the UI. // Gen: manually-authored - bool invisible = 3; + bool invisible = 3; // @gotags: json:"invisible,omitempty" yaml:"invisible,omitempty" // Variable tooltip. // Gen: manually-authored - string tooltip = 4; + string tooltip = 4; // @gotags: json:"tooltip,omitempty" yaml:"tooltip,omitempty" // Placeholder text (when there is no default). // Gen: manually-authored - string placeholder = 5; + string placeholder = 5; // @gotags: json:"placeholder,omitempty" yaml:"placeholder,omitempty" // Regex based validation rules for the variable. // Gen: manually-authored - string regex_validation = 6; + string regex_validation = 6; // @gotags: json:"regexValidation,omitempty" yaml:"regexValidation,omitempty" // Minimum no. of inputs for the input variable. // Gen: manually-authored - int32 min_items = 7; + int32 min_items = 7; // @gotags: json:"minItems,omitempty" yaml:"minItems,omitempty" // Max no. of inputs for the input variable. // Gen: manually-authored - int32 max_items = 8; + int32 max_items = 8; // @gotags: json:"maxItems,omitempty" yaml:"maxItems,omitempty" // Minimum length for string values. // Gen: manually-authored - int32 min_length = 9; + int32 min_length = 9; // @gotags: json:"minLength,omitempty" yaml:"minLength,omitempty" // Max length for string values. // Gen: manually-authored - int32 max_length = 10; + int32 max_length = 10; // @gotags: json:"maxLength,omitempty" yaml:"maxLength,omitempty" // Minimum value for numeric types. // Gen: manually-authored - float min = 11; + float min = 11; // @gotags: json:"min,omitempty" yaml:"min,omitempty" // Max value for numeric types. // Gen: manually-authored - float max = 12; + float max = 12; // @gotags: 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. // Gen: manually-authored - string section = 13; + string section = 13; // @gotags: json:"section,omitempty" yaml:"section,omitempty" // UI extension associated with the input variable. // E.g. for rendering a GCE machine type selector: @@ -86,13 +87,13 @@ message DisplayVariable { // minCpu: 2 // minRamGb: // Gen: manually-authored - GooglePropertyExtension x_google_property = 14; + GooglePropertyExtension x_google_property = 14; // @gotags: json:"xGoogleProperty,omitempty" yaml:"xGoogleProperty,omitempty" // Text describing the validation rules for the property. Typically shown // after an invalid input. // Optional. UTF-8 text. No markup. At most 128 characters. // Gen: manually-authored - string validation = 15; + string validation = 15; // @gotags: json:"validation,omitempty" yaml:"validation,omitempty" } // A logical group of variables. [Section][]s may also be grouped into @@ -101,40 +102,40 @@ message DisplaySection { // The name of the section, referenced by DisplayVariable.Section // Section names must be unique. // Gen: manually-authored - string name = 1; + string name = 1; // @gotags: json:"name" yaml:"name" // Section title. // If not provided, name will be used instead. // Gen: manually-authored - string title = 2; + string title = 2; // @gotags: json:"title,omitempty" yaml:"title,omitempty" // Section tooltip. // Gen: manually-authored - string tooltip = 3; + string tooltip = 3; // @gotags: json:"tooltip,omitempty" yaml:"tooltip,omitempty" // Section subtext. // Gen: manually-authored - string subtext = 4; + string subtext = 4; // @gotags: json:"subtext,omitempty" yaml:"subtext,omitempty" // The name of the parent section (if parent is not the root section). // Gen: manually-authored - string parent = 5; + string parent = 5; // @gotags: json:"parent,omitempty" yaml:"parent,omitempty" } message BlueprintUIOutput { // Short message to be displayed while the blueprint is deploying. // At most 128 characters. // Gen: manually-authored - string output_message = 1; + string output_message = 1; // @gotags: json:"outputMessage,omitempty" yaml:"outputMessage,omitempty" // List of suggested actions to take. // Gen: manually-authored - repeated UIActionItem suggested_actions = 2; + repeated UIActionItem suggested_actions = 2; // @gotags: json:"suggestedActions,omitempty" yaml:"suggestedActions,omitempty" // outputs is a map defining a subset of Terraform outputs on the UI // that may need additional UI configuration. // Gen: manually-authored - map outputs = 3; + map outputs = 3; // @gotags: json:"outputs,omitempty" yaml:"outputs,omitempty" } // An item appearing in a list of required or suggested steps. @@ -142,26 +143,26 @@ message UIActionItem { // Summary heading for the item. // Required. Accepts string expressions. At most 64 characters. // Gen: manually-authored - string heading = 1; + string heading = 1; // @gotags: json:"heading" yaml:"heading" // Longer description of the item. // At least one description or snippet is required. // Accepts string expressions. HTML <a href> // tags only. At most 512 characters. // Gen: manually-authored - string description = 2; + string description = 2; // @gotags: 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. // Gen: manually-authored - string snippet = 3; + string snippet = 3; // @gotags: 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. // Gen: manually-authored - string show_if = 4; + string show_if = 4; // @gotags: json:"showIf,omitempty" yaml:"showIf,omitempty" } // Additional display specific metadata pertaining to a particular @@ -170,10 +171,10 @@ message DisplayOutput { // open_in_new_tab defines if the Output action should be opened // in a new tab. // Gen: manually-authored - bool open_in_new_tab = 1; + bool open_in_new_tab = 1; // @gotags: json:"openInNewTab,omitempty" yaml:"openInNewTab,omitempty" // show_in_notification defines if the Output should shown in // notification for the deployment. // Gen: manually-authored - bool show_in_notification = 2; + bool show_in_notification = 2; // @gotags: json:"showInNotification,omitempty" yaml:"showInNotification,omitempty" } diff --git a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto index 784dfd76b83..31d497c166e 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package google.cloud.config.bpmetadata; +// TODO: update copybara configuration for go to java package transformation option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata"; // ExtensionType specifies the type of extension. @@ -43,90 +44,90 @@ enum ExtensionType { message GooglePropertyExtension { // Type specifies the type of extension. // Gen: manually-authored - ExtensionType type = 1; + ExtensionType type = 1; // @gotags: json:"type" 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. // Gen: manually-authored - string zone_property = 2; + string zone_property = 2; // @gotags: json:"zoneProperty,omitempty" yaml:"zoneProperty,omitempty" // Property-specific extensions. // Gen: manually-authored (all property extensions and their child properties) - GCEMachineTypeExtension gce_machine_type = 3; - GCEDiskSizeExtension gce_disk_size = 4; - GCESubnetworkExtension gce_subnetwork = 5; - GCEGenericResourceExtension gce_resource = 6; - GCEGPUTypeExtension gce_gpu_type = 7; - GCEGPUCountExtension gce_gpu_count = 8; - GCENetworkExtension gce_network = 9; - GCEExternalIPExtension gce_external_ip = 10; - GCEIPForwardingExtension gce_ip_forwarding = 11; - GCEFirewallExtension gce_firewall = 12; - GCEFirewallRangeExtension gce_firewall_range = 13; - GCELocationExtension gce_zone = 14; - GCELocationExtension gce_region = 15; - IAMServiceAccountExtension iam_service_account = 16; + GCEMachineTypeExtension gce_machine_type = 3; // @gotags: json:"gceMachineType,omitempty" yaml:"gceMachineType,omitempty" + GCEDiskSizeExtension gce_disk_size = 4; // @gotags: json:"gceDiskSize,omitempty" yaml:"gceDiskSize,omitempty" + GCESubnetworkExtension gce_subnetwork = 5; // @gotags: json:"gceSubnetwork,omitempty" yaml:"gceSubnetwork,omitempty" + GCEGenericResourceExtension gce_resource = 6; // @gotags: json:"gceResource,omitempty" yaml:"gceResource,omitempty" + GCEGPUTypeExtension gce_gpu_type = 7; // @gotags: json:"gceGpuType,omitempty" yaml:"gceGpuType,omitempty" + GCEGPUCountExtension gce_gpu_count = 8; // @gotags: json:"gceGpuCount,omitempty" yaml:"gceGpuCount,omitempty" + GCENetworkExtension gce_network = 9; // @gotags: json:"gceNetwork,omitempty" yaml:"gceNetwork,omitempty" + GCEExternalIPExtension gce_external_ip = 10; // @gotags: json:"gceExternalIp,omitempty" yaml:"gceExternalIp,omitempty" + GCEIPForwardingExtension gce_ip_forwarding = 11; // @gotags: json:"gceIpForwarding,omitempty" yaml:"gceIpForwarding,omitempty" + GCEFirewallExtension gce_firewall = 12; // @gotags: json:"gceFirewall,omitempty" yaml:"gceFirewall,omitempty" + GCEFirewallRangeExtension gce_firewall_range = 13; // @gotags: json:"gceFirewallRange,omitempty" yaml:"gceFirewallRange,omitempty" + GCELocationExtension gce_zone = 14; // @gotags: json:"gceZone,omitempty" yaml:"gceZone,omitempty" + GCELocationExtension gce_region = 15; // @gotags: json:"gceRegion,omitempty" yaml:"gceRegion,omitempty" + IAMServiceAccountExtension iam_service_account = 16; // @gotags: json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty" } // GCELocationExtension specifies a location extension for a Google Compute Engine (GCE) resource. message GCELocationExtension { // AllowlistedZones is a list of zones that are allowed for the resource. - repeated string allowlisted_zones = 1; + repeated string allowlisted_zones = 1; // @gotags: json:"allowlistedZones,omitempty" yaml:"allowlistedZones,omitempty" // AllowlistedRegions is a list of regions that are allowed for the resource. - repeated string allowlisted_regions = 2; + repeated string allowlisted_regions = 2; // @gotags: json:"allowlistedRegions,omitempty" yaml:"allowlistedRegions,omitempty" } // GCEMachineTypeExtension specifies a machine type extension for a GCE resource. message GCEMachineTypeExtension { // Minimum cpu. Used to filter the list of selectable machine types. - int32 min_cpu = 1; + int32 min_cpu = 1; // @gotags: json:"minCpu,omitempty" yaml:"minCpu,omitempty" // Minimum ram. Used to filter the list of selectable machine types. - float min_ram_gb = 2; + float min_ram_gb = 2; // @gotags: 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 - bool disallow_custom_machine_types = 3; + bool disallow_custom_machine_types = 3; // @gotags: json:"disallowCustomMachineTypes,omitempty" yaml:"disallowCustomMachineTypes,omitempty" } // GCEGPUTypeExtension specifies a GPU type extension for a GCE resource. message GCEGPUTypeExtension { // MachineType is the name of the machine type that the GPU is attached to. - string machine_type = 1; + string machine_type = 1; // @gotags: json:"machineType" yaml:"machineType" // GPUType is the type(s) of GPU that is attached to the machine. - repeated string gpu_type = 2; + repeated string gpu_type = 2; // @gotags: json:"gpuType,omitempty" yaml:"gpuType,omitempty" } // GCEGPUCountExtension specifies the number of GPUs that should be attached to a machine. message GCEGPUCountExtension { // This field references another variable from the schema, // which must have type GCEMachineType. - string machine_type_variable = 1; + string machine_type_variable = 1; // @gotags: json:"machineTypeVariable" yaml:"machineTypeVariable" } // GCEDiskSizeExtension specifies the size of a disk for a GCE resource. message GCEDiskSizeExtension { // The allowable range of disk sizes depends on the disk type. This field // references another variable from the schema, which must have type GCEDiskType. - string disk_type_variable = 1; + string disk_type_variable = 1; // @gotags: json:"diskTypeVariable" yaml:"diskTypeVariable" } // GCENetworkExtension specifies a network extension for a GCE resource. message GCENetworkExtension { // AllowSharedVpcs indicates this solution can receive // shared VPC selflinks (fully qualified compute links). - bool allow_shared_vpcs = 1; + bool allow_shared_vpcs = 1; // @gotags: json:"allowSharedVpcs,omitempty" yaml:"allowSharedVpcs,omitempty" // Used to indicate to which machine type this network interface will be // attached to. - string machine_type_variable = 2; + string machine_type_variable = 2; // @gotags: json:"machineTypeVariable" yaml:"machineTypeVariable" // Label that will be in front of each Network Interface. - repeated string labels = 3; + repeated string labels = 3; // @gotags: json:"labels,omitempty" yaml:"labels,omitempty" } // ExternalIPType specifies the type of external IP address. @@ -142,54 +143,54 @@ enum ExternalIPType { message GCEExternalIPExtension { // NetworkVariable is the name of the network variable that the external IP address belongs to. - string network_variable = 1; + string network_variable = 1; // @gotags: json:"networkVariable" yaml:"networkVariable" // Type specifies the type of external IP address. Defaults to EPHEMERAL if not specified. - ExternalIPType type = 2; + ExternalIPType type = 2; // @gotags: json:"type,omitempty" yaml:"type,omitempty" // Flag to denote if an external IP should be configurable. - bool not_configurable = 3; + bool not_configurable = 3; // @gotags: json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty" // Flag to denote if static IPs are allowed for the external IP. - bool allow_static_ips = 4; + bool allow_static_ips = 4; // @gotags: json:"allowStaticIPs,omitempty" yaml:"allowStaticIPs,omitempty" } // GCEIPForwardingExtension specifies an IP forwarding extension for a GCE resource. message GCEIPForwardingExtension { // NetworkVariable is the name of the network variable that the IP forwarding belongs to. - string network_variable = 1; + string network_variable = 1; // @gotags: json:"networkVariable" yaml:"networkVariable" // NotConfigurable specifies whether the IP forwarding is configurable. Defaults to false if not specified. - bool not_configurable = 2; + bool not_configurable = 2; // @gotags: json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty" } message GCEFirewallExtension { // NetworkVariable is used to indicate the network variable in the schema // this external IP belongs to. - string network_variable = 1; + string network_variable = 1; // @gotags: json:"networkVariable" yaml:"networkVariable" } message GCEFirewallRangeExtension { // FirewallVariable is used to indicate the firewall variable with the type // GCEFirewall in the schema to which this firewall range belongs to. - string firewall_variable = 1; + string firewall_variable = 1; // @gotags: json:"firewallVariable" yaml:"firewallVariable" } message GCESubnetworkExtension { // 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. - string network_variable = 1; + string network_variable = 1; // @gotags: json:"networkVariable" yaml:"networkVariable" } message GCEGenericResourceExtension { // GCE resource type to be fetched. This field references another // property from the schema, which must have type GCEGenericResource. - string resource_variable = 1; + string resource_variable = 1; // @gotags: json:"resourceVariable" yaml:"resourceVariable" } message IAMServiceAccountExtension { // List of IAM roles that to grant to a new SA, or the roles to filter // existing SAs with. - repeated string roles = 1; + repeated string roles = 1; // @gotags: json:"roles" yaml:"roles" } diff --git a/cli/bpmetadata/repo.go b/cli/bpmetadata/repo.go index 25e4c4dc87d..0cfd64ba511 100644 --- a/cli/bpmetadata/repo.go +++ b/cli/bpmetadata/repo.go @@ -88,11 +88,19 @@ func getRepoDetailsFromRootBp(bpPath string) repoDetail { } } + if err != nil && strings.Contains(err.Error(), "proto:") { + return repoDetail{ + Source: &repoSource{ + BlueprintRootPath: rootBp, + }, + } + } + // There is metadata for root but does not have source info // which means this is a non-git hosted blueprint if b.Spec.Info.Source == nil { return repoDetail{ - RepoName: b.ResourceMeta.ObjectMeta.NameMeta.Name, + RepoName: b.Metadata.Name, Source: &repoSource{ BlueprintRootPath: rootBp, }, @@ -101,7 +109,7 @@ func getRepoDetailsFromRootBp(bpPath string) repoDetail { // If we get here, root metadata exists and has git info return repoDetail{ - RepoName: b.ResourceMeta.ObjectMeta.NameMeta.Name, + RepoName: b.Metadata.Name, Source: &repoSource{ URL: b.Spec.Info.Source.Repo, SourceType: "git", diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index 54d39c19b3b..46f118f5955 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -202,12 +202,6 @@ }, "type": "array" }, - "orgPolicyChecks": { - "items": { - "$ref": "#/$defs/BlueprintOrgPolicyCheck" - }, - "type": "array" - }, "quotaDetails": { "items": { "$ref": "#/$defs/BlueprintQuotaDetail" @@ -226,6 +220,12 @@ "supportInfo": { "$ref": "#/$defs/BlueprintSupport" }, + "orgPolicyChecks": { + "items": { + "$ref": "#/$defs/BlueprintOrgPolicyCheck" + }, + "type": "array" + }, "singleDeployment": { "type": "boolean" } @@ -284,7 +284,7 @@ "type": "string" }, "metadata": { - "$ref": "#/$defs/ObjectMeta" + "$ref": "#/$defs/ResourceTypeMeta" }, "spec": { "$ref": "#/$defs/BlueprintMetadataSpec" @@ -371,11 +371,13 @@ "type": "string" }, "resourceType": { - "type": "string", - "enum": [ - "QRT_GCE_INSTANCE", - "QRT_GCE_DISK", - "QRT_UNDEFINED" + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } ] }, "quotaType": { @@ -474,10 +476,13 @@ "BlueprintSoftwareGroup": { "properties": { "type": { - "type": "string", - "enum": [ - "SG_UNSPECIFIED", - "SG_OS" + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } ] }, "software": { @@ -671,9 +676,6 @@ "placeholder": { "type": "string" }, - "validation": { - "type": "string" - }, "regexValidation": { "type": "string" }, @@ -700,6 +702,9 @@ }, "xGoogleProperty": { "$ref": "#/$defs/GooglePropertyExtension" + }, + "validation": { + "type": "string" } }, "additionalProperties": false, @@ -727,11 +732,13 @@ "type": "string" }, "type": { - "type": "string", - "enum": [ - "IP_UNSPECIFIED", - "IP_EPHEMERAL", - "NONE" + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } ] }, "notConfigurable": { @@ -897,27 +904,13 @@ "GooglePropertyExtension": { "properties": { "type": { - "type": "string", - "enum": [ - "ET_EMAIL_ADDRESS", - "ET_MULTI_LINE_STRING", - "ET_GCE_DISK_IMAGE", - "ET_GCE_DISK_TYPE", - "ET_GCE_DISK_SIZE", - "ET_GCE_MACHINE_TYPE", - "ET_GCE_NETWORK", - "ET_GCE_ZONE", - "ET_GCE_SUBNETWORK", - "ET_GCE_REGION", - "ET_GCE_GPU_TYPE", - "ET_GCE_GPU_COUNT", - "ET_GCE_EXTERNAL_IP", - "ET_GCE_IP_FORWARDING", - "ET_GCE_FIREWALL", - "ET_GCE_FIREWALL_RANGE", - "ET_GCE_GENERIC_RESOURCE", - "ET_GCS_BUCKET", - "ET_IAM_SERVICE_ACCOUNT" + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } ] }, "zoneProperty": { @@ -987,14 +980,11 @@ "roles" ] }, - "ObjectMeta": { + "ResourceTypeMeta": { "properties": { "name": { "type": "string" }, - "namespace": { - "type": "string" - }, "labels": { "patternProperties": { ".*": { diff --git a/cli/bpmetadata/schema/generate.go b/cli/bpmetadata/schema/generate.go index 50fc47a22a2..e937264a9eb 100644 --- a/cli/bpmetadata/schema/generate.go +++ b/cli/bpmetadata/schema/generate.go @@ -41,6 +41,16 @@ func GenerateSchema() ([]byte, error) { r := &jsonschema.Reflector{} s := r.Reflect(&bpmetadata.BlueprintMetadata{}) s.Version = "http://json-schema.org/draft-07/schema#" + + // defaultValue was defined as interface{} and has changed to + // string type with proto definitions. To keep backwards + // compatibility for schema validation, this is being set to + // true i.e. it's presence is validated regardless of type. + vDef, defExists := s.Definitions["BlueprintVariable"] + if defExists { + vDef.Properties.Set("defaultValue", true) + } + sData, err := json.MarshalIndent(s, "", " ") if err != nil { return nil, err diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index c0928edc3e1..380c1b7a839 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -197,7 +197,7 @@ func getBlueprintInterfaces(configPath string) (*BlueprintInterface, error) { return nil, err } - var variables []BlueprintVariable + var variables []*BlueprintVariable for _, val := range mod.Variables { v := getBlueprintVariable(val) variables = append(variables, v) @@ -206,7 +206,7 @@ func getBlueprintInterfaces(configPath string) (*BlueprintInterface, error) { // Sort variables sort.SliceStable(variables, func(i, j int) bool { return variables[i].Name < variables[j].Name }) - var outputs []BlueprintOutput + var outputs []*BlueprintOutput for _, val := range mod.Outputs { o := getBlueprintOutput(val) @@ -223,19 +223,24 @@ func getBlueprintInterfaces(configPath string) (*BlueprintInterface, error) { } // build variable -func getBlueprintVariable(modVar *tfconfig.Variable) BlueprintVariable { - return BlueprintVariable{ - Name: modVar.Name, - Description: modVar.Description, - DefaultValue: modVar.Default, - Required: modVar.Required, - VarType: modVar.Type, +func getBlueprintVariable(modVar *tfconfig.Variable) *BlueprintVariable { + v := &BlueprintVariable{ + Name: modVar.Name, + Description: modVar.Description, + Required: modVar.Required, + VarType: modVar.Type, } + + if modVar.Default != nil { + v.DefaultValue = fmt.Sprintf("%v", modVar.Default) + } + + return v } // build output -func getBlueprintOutput(modOut *tfconfig.Output) BlueprintOutput { - return BlueprintOutput{ +func getBlueprintOutput(modOut *tfconfig.Output) *BlueprintOutput { + return &BlueprintOutput{ Name: modOut.Name, Description: modOut.Description, } @@ -276,8 +281,8 @@ func getBlueprintRequirements(rolesConfigPath, servicesConfigPath string) (*Blue } // parseBlueprintRoles gets the roles required for the blueprint to be provisioned -func parseBlueprintRoles(rolesFile *hcl.File) ([]BlueprintRoles, error) { - var r []BlueprintRoles +func parseBlueprintRoles(rolesFile *hcl.File) ([]*BlueprintRoles, error) { + var r []*BlueprintRoles iamContent, _, diags := rolesFile.Body.PartialContent(rootSchema) err := hasHclErrors(diags) if err != nil { @@ -308,7 +313,7 @@ func parseBlueprintRoles(rolesFile *hcl.File) ([]BlueprintRoles, error) { iamRoles = append(iamRoles, v.AsString()) } - containerRoles := BlueprintRoles{ + containerRoles := &BlueprintRoles{ // TODO: (b/248123274) no good way to associate granularity yet Level: "Project", Roles: iamRoles, diff --git a/cli/bpmetadata/tfconfig_test.go b/cli/bpmetadata/tfconfig_test.go index 28f4885b0f2..ab1b8b72ebb 100644 --- a/cli/bpmetadata/tfconfig_test.go +++ b/cli/bpmetadata/tfconfig_test.go @@ -7,6 +7,7 @@ import ( "github.com/hashicorp/hcl/v2/hclparse" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "golang.org/x/exp/slices" ) const ( @@ -20,7 +21,7 @@ func TestTFInterfaces(t *testing.T) { varName string wantDescription string wantVarType string - wantDefault interface{} + wantDefault string wantRequired bool }{ { @@ -35,15 +36,27 @@ func TestTFInterfaces(t *testing.T) { wantDescription: "The description of the cluster", wantVarType: "string", wantDefault: "some description", - wantRequired: false, }, { - name: "with required as fasle", + name: "with required as false", varName: "regional", wantDescription: "Whether is a regional cluster", wantVarType: "bool", - wantDefault: true, - wantRequired: false, + wantDefault: "true", + }, + { + name: "with an optional map", + varName: "optional_map", + wantDescription: "Optional map of booleans", + wantVarType: "map(bool)", + wantDefault: "map[]", + }, + { + name: "with an optional map", + varName: "optional_list", + wantDescription: "Optional list of strings", + wantVarType: "list(string)", + wantDefault: "[]", }, } @@ -68,22 +81,46 @@ func TestTFInterfaces(t *testing.T) { require.NoError(t, err) for _, tt := range varTests { t.Run(tt.name, func(t *testing.T) { - assert.Contains(t, got.Variables, BlueprintVariable{ - Name: tt.varName, - Description: tt.wantDescription, - DefaultValue: tt.wantDefault, - Required: tt.wantRequired, - VarType: tt.wantVarType, - }) + i := slices.IndexFunc(got.Variables, func(v *BlueprintVariable) bool { return v.Name == tt.varName }) + if got.Variables[i].Name != tt.varName { + t.Errorf("getBlueprintInterfaces() - Variable.Name = %v, want %v", got.Variables[i].Name, tt.varName) + return + } + + if got.Variables[i].Description != tt.wantDescription { + t.Errorf("getBlueprintInterfaces() - Variable.Description = %v, want %v", got.Variables[i].Description, tt.wantDescription) + return + } + + if got.Variables[i].DefaultValue != tt.wantDefault { + t.Errorf("getBlueprintInterfaces() - Variable.DefaultValue = %v, want %v", got.Variables[i].DefaultValue, tt.wantDefault) + return + } + + if got.Variables[i].Required != tt.wantRequired { + t.Errorf("getBlueprintInterfaces() - Variable.Required = %v, want %v", got.Variables[i].Required, tt.wantRequired) + return + } + + if got.Variables[i].VarType != tt.wantVarType { + t.Errorf("getBlueprintInterfaces() - Variable.VarType = %v, want %v", got.Variables[i].VarType, tt.wantVarType) + return + } }) } for _, tt := range outTests { t.Run(tt.name, func(t *testing.T) { - assert.Contains(t, got.Outputs, BlueprintOutput{ - Name: tt.outName, - Description: tt.wantDescription, - }) + i := slices.IndexFunc(got.Outputs, func(o *BlueprintOutput) bool { return o.Name == tt.outName }) + if got.Outputs[i].Name != tt.outName { + t.Errorf("getBlueprintInterfaces() - Output.Name = %v, want %v", got.Outputs[i].Name, tt.outName) + return + } + + if got.Outputs[i].Description != tt.wantDescription { + t.Errorf("getBlueprintInterfaces() - Output.Description = %v, want %v", got.Outputs[i].Description, tt.wantDescription) + return + } }) } } @@ -211,12 +248,12 @@ func TestTFRoles(t *testing.T) { tests := []struct { name string configName string - wantRoles []BlueprintRoles + wantRoles []*BlueprintRoles }{ { name: "simple list of roles", configName: "iam.tf", - wantRoles: []BlueprintRoles{ + wantRoles: []*BlueprintRoles{ { Level: "Project", Roles: []string{ diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go deleted file mode 100644 index 7933dda37f8..00000000000 --- a/cli/bpmetadata/types.go +++ /dev/null @@ -1,420 +0,0 @@ -package bpmetadata - -import ( - "sigs.k8s.io/kustomize/kyaml/yaml" -) - -// BlueprintMetadata defines the overall structure for blueprint metadata. -// The cli command i.e. `cft blueprint metadata` attempts at auto-generating -// metadata if the blueprint is structured based on the TF blueprint template -// i.e. https://github.com/terraform-google-modules/terraform-google-module-template -// All fields within BlueprintMetadata and its children are denoted as: -// - Gen: auto-generated - -// - Gen: manually-authored -// - Gen: partial (contains child nodes that can be both auto-generated and manually authored) -type BlueprintMetadata struct { - // Gen: auto-generated - yaml.ResourceMeta `json:",inline" yaml:",inline"` - // Gen: partial - Spec BlueprintMetadataSpec `json:"spec" yaml:"spec"` -} - -// BlueprintMetadataSpec defines the spec portion of the blueprint metadata. -type BlueprintMetadataSpec struct { - // Gen: partial - Info BlueprintInfo `json:"info,omitempty" yaml:"info,omitempty"` - // Gen: partial - Content BlueprintContent `json:"content,omitempty" yaml:"content,omitempty"` - // Gen: partial - Interfaces BlueprintInterface `json:"interfaces,omitempty" yaml:"interfaces,omitempty"` - // Gen: auto-generated - Requirements BlueprintRequirements `json:"requirements,omitempty" yaml:"requirements,omitempty"` - // Gen: partial - UI BlueprintUI `json:"ui,omitempty" yaml:"ui,omitempty"` -} - -type BlueprintInfo struct { - // Title for the blueprint. - // Gen: auto-generated - First H1 text in readme.md. - Title string `json:"title" yaml:"title"` - - // Blueprint source location and source type. - // Gen: auto-generated - user will be prompted if repo information can not - // be determined from the blueprint path. - Source *BlueprintRepoDetail `json:"source,omitempty" yaml:"source,omitempty"` - - // Last released semantic version for the packaged blueprint. - // Gen: auto-generated - 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. - // Gen: auto-generated - ActuationTool BlueprintActuationTool `json:"actuationTool,omitempty" yaml:"actuationTool,omitempty"` - - // Various types of descriptions associated with the blueprint. - // Gen: auto-generated - 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. - // Gen: auto-generated - Icon string `json:"icon,omitempty" yaml:"icon,omitempty"` - - // The time estimate for configuring and deploying the blueprint. - // Gen: auto-generated - DeploymentDuration BlueprintTimeEstimate `json:"deploymentDuration,omitempty" yaml:"deploymentDuration,omitempty"` - - // The cost estimate for the blueprint based on preconfigured variables. - // Gen: auto-generated - CostEstimate BlueprintCostEstimate `json:"costEstimate,omitempty" yaml:"costEstimate,omitempty"` - - // A list of GCP cloud products used in the blueprint. - // Gen: manually-authored - CloudProducts []BlueprintCloudProduct `json:"cloudProducts,omitempty" yaml:"cloudProducts,omitempty"` - - // A list of GCP org policies to be checked for successful deployment. - // Gen: manually-authored - OrgPolicyChecks []BlueprintOrgPolicyCheck `json:"orgPolicyChecks,omitempty" yaml:"orgPolicyChecks,omitempty"` - - // A configuration of fixed and dynamic GCP quotas that apply to the blueprint. - // Gen: manually-authored - QuotaDetails []BlueprintQuotaDetail `json:"quotaDetails,omitempty" yaml:"quotaDetails,omitempty"` - - // Details on the author producing the blueprint. - // Gen: manually-authored - Author BlueprintAuthor `json:"author,omitempty" yaml:"author,omitempty"` - - // Details on software installed as part of the blueprint. - // Gen: manually-authored - SoftwareGroups []BlueprintSoftwareGroup `json:"softwareGroups,omitempty" yaml:"softwareGroups,omitempty"` - - // Support offered, if any for the blueprint. - // Gen: manually-authored - SupportInfo BlueprintSupport `json:"supportInfo,omitempty" yaml:"supportInfo,omitempty"` - - // Specifies if the blueprint supports single or multiple deployments per GCP project. - // If set to true, the blueprint can not be deployed more than once in the same GCP project. - // Gen: manually-authored - SingleDeployment bool `json:"singleDeployment,omitempty" yaml:"singleDeployment,omitempty"` -} - -type BlueprintRepoDetail struct { - // Gen: auto-generated - URL from the .git dir. - // Can be manually overridden with a custom URL if needed. - Repo string `json:"repo" yaml:"repo"` - - // Gen: auto-generated - set as "git" for now until more - // types are supported. - SourceType string `json:"sourceType" yaml:"sourceType"` - - // Gen: auto-generated - not set for root modules but - // set as the module name for submodules, if found. - Dir string `json:"dir,omitempty" yaml:"dir,omitempty"` -} - -type BlueprintActuationTool struct { - // Gen: auto-generated - set as "Terraform" for now until - //more flavors are supported. - Flavor string `json:"flavor,omitempty" yaml:"flavor,omitempty"` - - // Required version for the actuation tool. - // Gen: auto-generated - 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"` -} - -// All descriptions are set with the markdown content immediately -// after each type's heading declaration in readme.md. -type BlueprintDescription struct { - // Gen: auto-generated - Markdown after "### Tagline". - Tagline string `json:"tagline,omitempty" yaml:"tagline,omitempty"` - - // Gen: auto-generated - Markdown after "### Detailed". - Detailed string `json:"detailed,omitempty" yaml:"detailed,omitempty"` - - // Gen: auto-generated - Markdown after "### PreDeploy". - PreDeploy string `json:"preDeploy,omitempty" yaml:"preDeploy,omitempty"` - - // Gen: auto-generated - Markdown after "### Html". - HTML string `json:"html,omitempty" yaml:"html,omitempty"` - - // Gen: auto-generated - Markdown after "### EulaUrls". - EulaURLs []string `json:"eulaUrls,omitempty" yaml:"eulaUrls,omitempty"` - - // Gen: auto-generated - Markdown after "### Architecture" - // Deprecated. Use BlueprintContent.Architecture instead. - Architecture []string `json:"architecture,omitempty" yaml:"architecture,omitempty"` -} - -// A time estimate in secs required for configuring and deploying the blueprint. -type BlueprintTimeEstimate struct { - // Gen: auto-generated - Set using the content defined under "### DeploymentTime" E.g. - // ### DeploymentTime - // - Configuration: X secs - // - Deployment: Y secs - ConfigurationSecs int `json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty"` - DeploymentSecs int `json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty"` -} - -// The cost estimate for the blueprint based on pre-configured variables. -type BlueprintCostEstimate struct { - // Gen: auto-generated - Set using the content defined under "### Cost" as a link - // with a description E.g. - // ### Cost - // [$20.00](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"` -} - -// GCP cloud product(s) used in the blueprint. -type BlueprintCloudProduct struct { - // A top-level (e.g. "Compute Engine") or secondary (e.g. "Binary Authorization") - // product used in the blueprint. - // Gen: manually-authored - ProductId string `json:"productId,omitempty" yaml:"productId,omitempty"` - - // Url for the product. - // Gen: manually-authored - PageURL string `json:"pageUrl" yaml:"pageUrl"` - - // A label string for the product, if it is not an integrated GCP product. - // E.g. "Data Studio" - // Gen: manually-authored - Label string `json:"label,omitempty" yaml:"label,omitempty"` - - // Is the product's landing page external to the GCP console e.g. - // lookerstudio.google.com - // Gen: manually-authored - IsExternal bool `json:"isExternal,omitempty" yaml:"isExternal,omitempty"` -} - -// BlueprintOrgPolicyCheck defines GCP org policies to be checked -// for successful deployment -type BlueprintOrgPolicyCheck struct { - // Id for the policy e.g. "compute-vmExternalIpAccess" - // Gen: manually-authored - PolicyId string `json:"policyId" yaml:"policyId"` - - // If not set, it is assumed any version of this org policy - // prevents successful deployment of this solution. - // Gen: manually-authored - RequiredValues []string `json:"requiredValues,omitempty" yaml:"requiredValues,omitempty"` -} - -type QuotaResourceType string - -const ( - QuotaResTypeUndefined QuotaResourceType = "QRT_UNDEFINED" - QuotaResTypeGCEInstance QuotaResourceType = "QRT_GCE_INSTANCE" - QuotaResTypeGCEDisk QuotaResourceType = "QRT_GCE_DISK" -) - -type QuotaType string - -const ( - MachineType QuotaType = "MACHINE_TYPE" - CPUs QuotaType = "CPUs" - DiskType QuotaType = "DISK_TYPE" - DiskSizeGB QuotaType = "SIZE_GB" -) - -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. - // Gen: manually-authored - DynamicVariable string `json:"dynamicVariable,omitempty" yaml:"dynamicVariable,omitempty"` - - // ResourceType is the type of resource the quota will be applied to i.e. - // GCE Instance or Disk etc. - // Gen: manually-authored - ResourceType QuotaResourceType `json:"resourceType" yaml:"resourceType" jsonschema:"enum=QRT_GCE_INSTANCE,enum=QRT_GCE_DISK,enum=QRT_UNDEFINED"` - - // QuotaType is a key/value pair of the actual quotas and their corresponding - // values. - // Gen: manually-authored - QuotaType map[QuotaType]string `json:"quotaType" yaml:"quotaType"` -} - -type BlueprintAuthor struct { - // Name of template author or organization. - // Gen: manually-authored - Title string `json:"title" yaml:"title"` - - // Description of the author. - // Gen: manually-authored - Description string `json:"description,omitempty" yaml:"description,omitempty"` - - // Link to the author's website. - // Gen: manually-authored - URL string `json:"url,omitempty" yaml:"url,omitempty"` -} - -type SoftwareGroupType string - -const ( - SG_Unspecified SoftwareGroupType = "SG_UNSPECIFIED" - SG_OS SoftwareGroupType = "SG_OS" -) - -// A group of related software components for the blueprint. -type BlueprintSoftwareGroup struct { - // Pre-defined software types. - // Gen: manually-authored - Type SoftwareGroupType `json:"type,omitempty" yaml:"type,omitempty" jsonschema:"enum=SG_UNSPECIFIED,enum=SG_OS"` - - // Software components belonging to this group. - // Gen: manually-authored - Software []BlueprintSoftware `json:"software,omitempty" yaml:"software,omitempty"` -} - -// A description of a piece of a single software component -// installed by the blueprint. -type BlueprintSoftware struct { - // User-visible title. - // Gen: manually-authored - Title string `json:"title" yaml:"title"` - - // Software version. - // Gen: manually-authored - Version string `json:"version,omitempty" yaml:"version,omitempty"` - - // Link to development site or marketing page for this software. - // Gen: manually-authored - URL string `json:"url,omitempty" yaml:"url,omitempty"` - - // Link to license page. - // Gen: manually-authored - LicenseURL string `json:"licenseUrl,omitempty" yaml:"licenseUrl,omitempty"` -} - -// A description of a support option -type BlueprintSupport struct { - // Description of the support option. - // Gen: manually-authored - Description string `json:"description" yaml:"description"` - - // Link to the page providing this support option. - // Gen: manually-authored - URL string `json:"url,omitempty" yaml:"url,omitempty"` - - // The organization or group that provides the support option (e.g.: - // "Community", "Google"). - // Gen: manually-authored - Entity string `json:"entity,omitempty" yaml:"entity,omitempty"` - - // Whether to show the customer's support ID. - // Gen: manually-authored - ShowSupportId bool `json:"showSupportId,omitempty" yaml:"showSupportId,omitempty"` -} - -// BlueprintContent defines the detail for blueprint related content such as -// related documentation, diagrams, examples etc. -type BlueprintContent struct { - // Gen: auto-generated - Architecture BlueprintArchitecture `json:"architecture,omitempty" yaml:"architecture,omitempty"` - - // Gen: manually-authored - Diagrams []BlueprintDiagram `json:"diagrams,omitempty" yaml:"diagrams,omitempty"` - - // Gen: auto-generated - the list content following the "## Documentation" tag. E.g. - // ## Documentation - // - [Hosting a Static Website](https://cloud.google.com/storage/docs/hosting-static-website) - Documentation []BlueprintListContent `json:"documentation,omitempty" yaml:"documentation,omitempty"` - - // Gen: auto-generated - blueprints under the modules/ folder. - SubBlueprints []BlueprintMiscContent `json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty"` - - // Gen: auto-generated - examples under the examples/ folder. - Examples []BlueprintMiscContent `json:"examples,omitempty" yaml:"examples,omitempty"` -} - -// BlueprintInterface defines the input and output variables for the blueprint. -type BlueprintInterface struct { - // Gen: auto-generated - all defined variables for the blueprint - Variables []BlueprintVariable `json:"variables,omitempty" yaml:"variables,omitempty"` - - // Gen: manually-authored - VariableGroups []BlueprintVariableGroup `json:"variableGroups,omitempty" yaml:"variableGroups,omitempty"` - - // Gen: auto-generated - all defined outputs for the blueprint - Outputs []BlueprintOutput `json:"outputs,omitempty" yaml:"outputs,omitempty"` -} - -// BlueprintRequirements defines the roles required and the associated services -// that need to be enabled to provision blueprint resources. -type BlueprintRequirements struct { - // Gen: auto-generated - all roles required for the blueprint in test/setup/iam.tf - // as the "int_required_roles" local. E.g. - // locals { - // int_required_roles = [ - // "roles/compute.admin", - // ] - // } - Roles []BlueprintRoles `json:"roles,omitempty" yaml:"roles,omitempty"` - - // Gen: auto-generated - all services required for the blueprint in test/setup/main.tf - // as "activate_apis" in the project module. - Services []string `json:"services,omitempty" yaml:"services,omitempty"` -} - -type BlueprintArchitecture struct { - // Gen: auto-generated - the URL & list content following the "## Architecture" tag e.g. - // ## Architecture - // ![Blueprint Architecture](assets/architecture.png) - // 1. Step no. 1 - // 2. Step no. 2 - // 3. Step no. 3 - DiagramURL string `json:"diagramUrl" yaml:"diagramUrl"` - - // Gen: auto-generated - the list items following the "## Architecture" tag. - Description []string `json:"description" yaml:"description"` -} - -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"` -} - -type BlueprintMiscContent struct { - Name string `json:"name" yaml:"name"` - Location string `json:"location,omitempty" yaml:"location,omitempty"` -} - -type BlueprintListContent struct { - Title string `json:"title" yaml:"title"` - URL string `json:"url,omitempty" yaml:"url,omitempty"` -} - -type BlueprintVariable struct { - Name string `json:"name,omitempty" yaml:"name,omitempty"` - Description string `json:"description,omitempty" yaml:"description,omitempty"` - VarType string `json:"varType,omitempty" yaml:"varType,omitempty"` - DefaultValue interface{} `json:"defaultValue,omitempty" yaml:"defaultValue,omitempty"` - Required bool `json:"required,omitempty" yaml:"required,omitempty"` -} - -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"` -} - -type BlueprintOutput struct { - Name string `json:"name" yaml:"name"` - Description string `json:"description,omitempty" yaml:"description,omitempty"` -} - -type BlueprintRoles struct { - Level string `json:"level" yaml:"level"` - Roles []string `json:"roles" yaml:"roles"` -} diff --git a/cli/bpmetadata/types_ui.go b/cli/bpmetadata/types_ui.go deleted file mode 100644 index 957fab7f6d4..00000000000 --- a/cli/bpmetadata/types_ui.go +++ /dev/null @@ -1,186 +0,0 @@ -package bpmetadata - -// BlueprintUI is the top-level structure for holding UI specific metadata. -type BlueprintUI struct { - // The top-level input section that defines the list of variables and - // their sections on the deployment page. - // Gen: partial - 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. - // Gen: manually-authored - Runtime BlueprintUIOutput `json:"runtime,omitempty" yaml:"runtime,omitempty"` -} - -// BlueprintUIInput is the structure for holding Input and Input Section (i.e. groups) specific metadata. -type BlueprintUIInput struct { - // variables is a map defining all inputs on the UI. - // Gen: partial - Variables map[string]*DisplayVariable `json:"variables,omitempty" yaml:"variables,omitempty"` - - // Sections is a generic structure for grouping inputs together. - // Gen: manually-authored - Sections []DisplaySection `json:"sections,omitempty" yaml:"sections,omitempty"` -} - -// Additional display specific metadata pertaining to a particular -// input variable. -type DisplayVariable struct { - // The variable name from the corresponding standard metadata file. - // Gen: auto-generated - the Terraform variable name - Name string `json:"name" yaml:"name"` - - // Visible title for the variable on the UI. If not present, - // Name will be used for the Title. - // Gen: auto-generated - the Terraform variable converted to title case e.g. - // variable "bucket_admins" will convert to "Bucket Admins" as the title. - Title string `json:"title" yaml:"title"` - - // A flag to hide or show the variable on the UI. - // Gen: manually-authored - Invisible bool `json:"invisible,omitempty" yaml:"invisible,omitempty"` - - // Variable tooltip. - // Gen: manually-authored - Tooltip string `json:"tooltip,omitempty" yaml:"tooltip,omitempty"` - - // Placeholder text (when there is no default). - // Gen: manually-authored - Placeholder string `json:"placeholder,omitempty" yaml:"placeholder,omitempty"` - - // Text describing the validation rules for the property. Typically shown - // after an invalid input. - // Optional. UTF-8 text. No markup. At most 128 characters. - // Gen: manually-authored - Validation string `json:"validation,omitempty" yaml:"validation,omitempty"` - - // Regex based validation rules for the variable. - // Gen: manually-authored - RegExValidation string `json:"regexValidation,omitempty" yaml:"regexValidation,omitempty"` - - // Minimum no. of inputs for the input variable. - // Gen: manually-authored - MinimumItems int `json:"minItems,omitempty" yaml:"minItems,omitempty"` - - // Max no. of inputs for the input variable. - // Gen: manually-authored - MaximumItems int `json:"maxItems,omitempty" yaml:"maxItems,omitempty"` - - // Minimum length for string values. - // Gen: manually-authored - MinimumLength int `json:"minLength,omitempty" yaml:"minLength,omitempty"` - - // Max length for string values. - // Gen: manually-authored - MaximumLength int `json:"maxLength,omitempty" yaml:"maxLength,omitempty"` - - // Minimum value for numeric types. - // Gen: manually-authored - Minimum float32 `json:"min,omitempty" yaml:"min,omitempty"` - - // Max value for numeric types. - // Gen: manually-authored - Maximum float32 `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. - // Gen: manually-authored - Section string `json:"section,omitempty" yaml:"section,omitempty"` - - // UI extension associated with the input variable. - // E.g. for rendering a GCE machine type selector: - // - // xGoogleProperty: - // type: GCE_MACHINE_TYPE - // zoneProperty: myZone - // gceMachineType: - // minCpu: 2 - // minRamGb: 6 - // Gen: manually-authored - XGoogleProperty GooglePropertyExtension `json:"xGoogleProperty,omitempty" yaml:"xGoogleProperty,omitempty"` -} - -// A logical group of variables. [Section][]s may also be grouped into -// sub-sections. -type DisplaySection struct { - // The name of the section, referenced by DisplayVariable.Section - // Section names must be unique. - // Gen: manually-authored - Name string `json:"name" yaml:"name"` - - // Section title. - // If not provided, name will be used instead. - // Gen: manually-authored - Title string `json:"title,omitempty" yaml:"title,omitempty"` - - // Section tooltip. - // Gen: manually-authored - Tooltip string `json:"tooltip,omitempty" yaml:"tooltip,omitempty"` - - // Section subtext. - // Gen: manually-authored - Subtext string `json:"subtext,omitempty" yaml:"subtext,omitempty"` - - // The name of the parent section (if parent is not the root section). - // Gen: manually-authored - Parent string `json:"parent,omitempty" yaml:"parent,omitempty"` -} - -type BlueprintUIOutput struct { - // Short message to be displayed while the blueprint is deploying. - // At most 128 characters. - // Gen: manually-authored - OutputMessage string `json:"outputMessage,omitempty" yaml:"outputMessage,omitempty"` - - // List of suggested actions to take. - // Gen: manually-authored - SuggestedActions []UIActionItem `json:"suggestedActions,omitempty" yaml:"suggestedActions,omitempty"` - - // Outputs is a map defining a subset of Terraform outputs on the UI - // that may need additional UI configuration. - // Gen: manually-authored - Outputs map[string]DisplayOutput `json:"outputs,omitempty" yaml:"outputs,omitempty"` -} - -// An item appearing in a list of required or suggested steps. -type UIActionItem struct { - // Summary heading for the item. - // Required. Accepts string expressions. At most 64 characters. - // Gen: manually-authored - Heading string `json:"heading" yaml:"heading"` - - // Longer description of the item. - // At least one description or snippet is required. - // Accepts string expressions. HTML <a href> - // tags only. At most 512 characters. - // Gen: manually-authored - 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. - // Gen: manually-authored - 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. - // Gen: manually-authored - ShowIf string `json:"showIf,omitempty" yaml:"showIf,omitempty"` -} - -// Additional display specific metadata pertaining to a particular -// Terraform output. -type DisplayOutput struct { - // OpenInNewTab defines if the Output action should be opened - // in a new tab. - // Gen: manually-authored - OpenInNewTab bool `json:"openInNewTab,omitempty" yaml:"openInNewTab,omitempty"` - - // ShowInNotification defines if the Output should shown in - // notification for the deployment. - // Gen: manually-authored - ShowInNotification bool `json:"showInNotification,omitempty" yaml:"showInNotification,omitempty"` -} diff --git a/cli/bpmetadata/types_ui_ext.go b/cli/bpmetadata/types_ui_ext.go deleted file mode 100644 index e949205adba..00000000000 --- a/cli/bpmetadata/types_ui_ext.go +++ /dev/null @@ -1,173 +0,0 @@ -package bpmetadata - -type ExtensionType string - -const ( - ExtTypeUndefined ExtensionType = "ET_UNDEFINED" - - // General formats. - EmailAddress ExtensionType = "ET_EMAIL_ADDRESS" - MultiLineString ExtensionType = "ET_MULTI_LINE_STRING" - - // GCE related. - GCEDiskImage ExtensionType = "ET_GCE_DISK_IMAGE" - GCEDiskType ExtensionType = "ET_GCE_DISK_TYPE" - GCEDiskSize ExtensionType = "ET_GCE_DISK_SIZE" - GCEMachineType ExtensionType = "ET_GCE_MACHINE_TYPE" - GCENetwork ExtensionType = "ET_GCE_NETWORK" - GCEZone ExtensionType = "ET_GCE_ZONE" - GCESubnetwork ExtensionType = "ET_GCE_SUBNETWORK" - GCERegion ExtensionType = "ET_GCE_REGION" - GCEGPUType ExtensionType = "ET_GCE_GPU_TYPE" - GCEGPUCount ExtensionType = "ET_GCE_GPU_COUNT" - GCEExternalIP ExtensionType = "ET_GCE_EXTERNAL_IP" - GCEIPForwarding ExtensionType = "ET_GCE_IP_FORWARDING" - GCEFirewall ExtensionType = "ET_GCE_FIREWALL" - GCEFirewallRange ExtensionType = "ET_GCE_FIREWALL_RANGE" - GCEGenericResource ExtensionType = "ET_GCE_GENERIC_RESOURCE" - - // GCS related. - GCSBucket ExtensionType = "ET_GCS_BUCKET" - - // IAM related. - IAMServiceAccount ExtensionType = "ET_IAM_SERVICE_ACCOUNT" -) - -// 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 GooglePropertyExtension struct { - // Gen: manually-authored - Type ExtensionType `json:"type" yaml:"type" jsonschema:"enum=ET_EMAIL_ADDRESS,enum=ET_MULTI_LINE_STRING,enum=ET_GCE_DISK_IMAGE,enum=ET_GCE_DISK_TYPE,enum=ET_GCE_DISK_SIZE,enum=ET_GCE_MACHINE_TYPE,enum=ET_GCE_NETWORK,enum=ET_GCE_ZONE,enum=ET_GCE_SUBNETWORK,enum=ET_GCE_REGION,enum=ET_GCE_GPU_TYPE,enum=ET_GCE_GPU_COUNT,enum=ET_GCE_EXTERNAL_IP,enum=ET_GCE_IP_FORWARDING,enum=ET_GCE_FIREWALL,enum=ET_GCE_FIREWALL_RANGE,enum=ET_GCE_GENERIC_RESOURCE,enum=ET_GCS_BUCKET,enum=ET_IAM_SERVICE_ACCOUNT"` - - // 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. - // Gen: manually-authored - ZoneProperty string `json:"zoneProperty,omitempty" yaml:"zoneProperty,omitempty"` - - // Property-specific extensions. - // Gen: manually-authored (all property extensions and their child properties) - 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"` -} - -type GCELocationExtension struct { - AllowlistedZones []string `json:"allowlistedZones,omitempty" yaml:"allowlistedZones,omitempty"` - AllowlistedRegions []string `json:"allowlistedRegions,omitempty" yaml:"allowlistedRegions,omitempty"` -} - -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 float32 `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 GCEGPUTypeExtension struct { - MachineType string `json:"machineType" yaml:"machineType"` - GPUType []string `json:"gpuType,omitempty" yaml:"gpuType,omitempty"` -} - -type GCEGPUCountExtension struct { - // This field references another variable from the schema, - // which must have type GCEMachineType. - MachineTypeVariable string `json:"machineTypeVariable" yaml:"machineTypeVariable"` -} - -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 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"` - // Label that will be in front of each Network Interface. - Labels []string `json:"labels,omitempty" yaml:"labels,omitempty"` -} - -type ExternalIPType string - -const ( - IPUnspecified ExternalIPType = "IP_UNSPECIFIED" - IPEphemeral ExternalIPType = "IP_EPHEMERAL" - IPNone ExternalIPType = "NONE" -) - -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:"type,omitempty" yaml:"type,omitempty" jsonschema:"enum=IP_UNSPECIFIED,enum=IP_EPHEMERAL,enum=NONE"` - - // Flag to denote if an external IP should be configurable. - NotConfigurable bool `json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty"` - - // Flag to denote if static IPs are allowed for the external IP. - AllowStaticIPs bool `json:"allowStaticIPs,omitempty" yaml:"allowStaticIPs,omitempty"` -} - -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 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 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 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 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 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"` -} diff --git a/cli/go.mod b/cli/go.mod index 7eb014fb09b..83753bb7f01 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -11,6 +11,7 @@ require ( github.com/fatih/color v1.15.0 github.com/gammazero/workerpool v1.1.3 github.com/go-git/go-git/v5 v5.7.0 + github.com/goccy/go-yaml v1.11.0 github.com/golang/protobuf v1.5.3 github.com/gomarkdown/markdown v0.0.0-20230322041520-c84983bdbf2a github.com/google/go-cmp v0.5.9 @@ -32,11 +33,12 @@ require ( github.com/spf13/viper v1.16.0 github.com/stretchr/testify v1.8.4 github.com/xeipuuv/gojsonschema v1.2.0 + golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df golang.org/x/oauth2 v0.9.0 golang.org/x/text v0.10.0 google.golang.org/api v0.129.0 + google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v2 v2.4.0 - sigs.k8s.io/kustomize/kyaml v0.14.2 sigs.k8s.io/yaml v1.3.0 ) @@ -165,7 +167,7 @@ require ( go.opentelemetry.io/otel/trace v1.10.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect golang.org/x/crypto v0.10.0 // indirect - golang.org/x/mod v0.10.0 // indirect + golang.org/x/mod v0.11.0 // indirect golang.org/x/net v0.11.0 // indirect golang.org/x/sys v0.9.0 // indirect golang.org/x/term v0.9.0 // indirect @@ -177,7 +179,6 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect google.golang.org/grpc v1.56.1 // indirect - google.golang.org/protobuf v1.31.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect @@ -195,5 +196,6 @@ require ( sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.36 // indirect sigs.k8s.io/controller-runtime v0.14.6 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect + sigs.k8s.io/kustomize/kyaml v0.14.2 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect ) diff --git a/cli/go.sum b/cli/go.sum index 58798c75206..9163a6e1c21 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -298,6 +298,9 @@ github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/ github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-openapi/validate v0.21.0 h1:+Wqk39yKOhfpLqNLEC0/eViCkzM5FVXVqrvt526+wcI= github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= +github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= +github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= +github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= @@ -329,6 +332,8 @@ github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/V github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/goccy/go-yaml v1.11.0 h1:n7Z+zx8S9f9KgzG6KtQKf+kwqXZlLNR2F6018Dgau54= +github.com/goccy/go-yaml v1.11.0/go.mod h1:H+mJrWtjPTJAHvRbV09MCK9xYwODM+wRTVFFTWckfng= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= @@ -550,6 +555,7 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -909,6 +915,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaUSth8Pyn3Tq5Y5mJGME= +golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -936,8 +944,8 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= diff --git a/cli/testdata/bpmetadata/tf/sample-module/variables.tf b/cli/testdata/bpmetadata/tf/sample-module/variables.tf index acef73a6227..e6d56ebc264 100644 --- a/cli/testdata/bpmetadata/tf/sample-module/variables.tf +++ b/cli/testdata/bpmetadata/tf/sample-module/variables.tf @@ -32,3 +32,15 @@ variable "regional" { description = "Whether is a regional cluster" default = true } + +variable "optional_map" { + description = "Optional map of booleans" + type = map(bool) + default = {} +} + +variable "optional_list" { + description = "Optional list of strings" + type = list(string) + default = [] +} From 51a0a42134b00be76869e7dd4a1d3da512230a52 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Mon, 10 Jul 2023 13:59:09 -0700 Subject: [PATCH 2/7] whitespace --- cli/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 2f1665bc68c..fbeb3b0f0ad 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -17,7 +17,7 @@ PROTOC_DIR=./bpmetadata LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" .PHONY: build -build: build-schema +build: build-schema go build ${LDFLAGS} -o ${BUILD_DIR}/${NAME} .PHONY: build-schema @@ -36,7 +36,7 @@ protoc-gen: protoc-deps: go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28 go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2 - go install github.com/favadi/protoc-go-inject-tag@v1.4.0 + go install github.com/favadi/protoc-go-inject-tag@v1.4.0 .PHONY: publish publish: From 0397e9b385fd334bc4a8e17a6eea2941de628768 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Mon, 10 Jul 2023 14:48:06 -0700 Subject: [PATCH 3/7] int overflow error fix --- cli/bpmetadata/bpmetadata.pb.go | 12 ++++++------ cli/bpmetadata/markdown.go | 6 +++--- cli/bpmetadata/proto/bpmetadata.proto | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/cli/bpmetadata/bpmetadata.pb.go b/cli/bpmetadata/bpmetadata.pb.go index 785667033d0..25461af8fe4 100644 --- a/cli/bpmetadata/bpmetadata.pb.go +++ b/cli/bpmetadata/bpmetadata.pb.go @@ -1090,8 +1090,8 @@ type BlueprintTimeEstimate struct { // ### DeploymentTime // - Configuration: X secs // - Deployment: Y secs - ConfigurationSecs int32 `protobuf:"varint,1,opt,name=configuration_secs,json=configurationSecs,proto3" json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty"` // @gotags: json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty" - DeploymentSecs int32 `protobuf:"varint,2,opt,name=deployment_secs,json=deploymentSecs,proto3" json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty"` // @gotags: json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty" + ConfigurationSecs int64 `protobuf:"varint,1,opt,name=configuration_secs,json=configurationSecs,proto3" json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty"` // @gotags: json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty" + DeploymentSecs int64 `protobuf:"varint,2,opt,name=deployment_secs,json=deploymentSecs,proto3" json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty"` // @gotags: json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty" } func (x *BlueprintTimeEstimate) Reset() { @@ -1126,14 +1126,14 @@ func (*BlueprintTimeEstimate) Descriptor() ([]byte, []int) { return file_bpmetadata_proto_rawDescGZIP(), []int{11} } -func (x *BlueprintTimeEstimate) GetConfigurationSecs() int32 { +func (x *BlueprintTimeEstimate) GetConfigurationSecs() int64 { if x != nil { return x.ConfigurationSecs } return 0 } -func (x *BlueprintTimeEstimate) GetDeploymentSecs() int32 { +func (x *BlueprintTimeEstimate) GetDeploymentSecs() int64 { if x != nil { return x.DeploymentSecs } @@ -2432,10 +2432,10 @@ var file_bpmetadata_proto_rawDesc = []byte{ 0x65, 0x22, 0x6f, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, + 0x28, 0x03, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x73, 0x22, 0x4b, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, diff --git a/cli/bpmetadata/markdown.go b/cli/bpmetadata/markdown.go index 2ef7c239b7a..55603d02144 100644 --- a/cli/bpmetadata/markdown.go +++ b/cli/bpmetadata/markdown.go @@ -130,18 +130,18 @@ func getDeploymentDuration(content []byte, headTitle string) (*BlueprintTimeEsti var timeEstimate BlueprintTimeEstimate for _, m := range matches { // each m[2] will have the time in mins - i, err := strconv.Atoi(m[2]) + i, err := strconv.ParseInt(m[2], 10, 64) if err != nil { continue } if m[1] == "Configuration" { - timeEstimate.ConfigurationSecs = int32(i) * 60 + timeEstimate.ConfigurationSecs = i * 60 continue } if m[1] == "Deployment" { - timeEstimate.DeploymentSecs = int32(i) * 60 + timeEstimate.DeploymentSecs = i * 60 continue } } diff --git a/cli/bpmetadata/proto/bpmetadata.proto b/cli/bpmetadata/proto/bpmetadata.proto index ae7e0ccd8cd..c199f361aa3 100644 --- a/cli/bpmetadata/proto/bpmetadata.proto +++ b/cli/bpmetadata/proto/bpmetadata.proto @@ -264,8 +264,8 @@ message BlueprintTimeEstimate { // ### DeploymentTime // - Configuration: X secs // - Deployment: Y secs - int32 configuration_secs = 1; // @gotags: json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty" - int32 deployment_secs = 2; // @gotags: json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty" + int64 configuration_secs = 1; // @gotags: json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty" + int64 deployment_secs = 2; // @gotags: json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty" } // The cost estimate for the blueprint based on pre-configured variables. From 32e29dd8b261c7c0a8709f919bf59e6208b3ce87 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Wed, 12 Jul 2023 17:39:17 -0700 Subject: [PATCH 4/7] changed defaultValue to Value type --- .gitignore | 1 + cli/Makefile | 5 +- cli/bpmetadata/bpmetadata.pb.go | 3032 ----------------- cli/bpmetadata/bpmetadata_ui.pb.go | 853 ----- cli/bpmetadata/bpmetadata_ui_ext.pb.go | 1567 --------- .../int-test/goldens/golden-metadata.yaml | 67 +- cli/bpmetadata/proto/bpmetadata.proto | 3 +- .../schema/gcp-blueprint-metadata.json | 10 + cli/bpmetadata/schema/generate.go | 2 +- cli/bpmetadata/tfconfig.go | 6 +- cli/bpmetadata/tfconfig_test.go | 22 +- .../bpmetadata/tf/sample-module/variables.tf | 12 - 12 files changed, 58 insertions(+), 5522 deletions(-) delete mode 100644 cli/bpmetadata/bpmetadata.pb.go delete mode 100644 cli/bpmetadata/bpmetadata_ui.pb.go delete mode 100644 cli/bpmetadata/bpmetadata_ui_ext.pb.go diff --git a/.gitignore b/.gitignore index 43d33213e4b..f1fd57100ea 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ config-connector/tests/testcases/environments.yaml .DS_Store .vscode *.pyc +cli/bpmetadata/*.pb.go cli/bpmetadata/int-test/.working diff --git a/cli/Makefile b/cli/Makefile index fbeb3b0f0ad..803c28f7915 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -17,16 +17,13 @@ PROTOC_DIR=./bpmetadata LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" .PHONY: build -build: build-schema +build: protoc-gen build-schema go build ${LDFLAGS} -o ${BUILD_DIR}/${NAME} .PHONY: build-schema build-schema: go run ./${SCHEMA_DIR} -output=${SCHEMA_DIR} -.PHONY: protoc -protoc: protoc-deps protoc-gen - .PHONY: protoc-gen protoc-gen: protoc -I=${SRC_PROTO_DIR} --go_opt=paths=source_relative --go_out=${PROTOC_DIR} ${SRC_PROTO_DIR}/*.proto diff --git a/cli/bpmetadata/bpmetadata.pb.go b/cli/bpmetadata/bpmetadata.pb.go deleted file mode 100644 index 25461af8fe4..00000000000 --- a/cli/bpmetadata/bpmetadata.pb.go +++ /dev/null @@ -1,3032 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.28.1 -// protoc v3.21.12 -// source: bpmetadata.proto - -package bpmetadata - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// QuotaResourceType defines the type of resource a quota is applied to. -type QuotaResourceType int32 - -const ( - QuotaResourceType_QRT_UNDEFINED QuotaResourceType = 0 - QuotaResourceType_QRT_RESOURCE_TYPE_GCE_INSTANCE QuotaResourceType = 1 - QuotaResourceType_QRT_RESOURCE_TYPE_GCE_DISK QuotaResourceType = 2 -) - -// Enum value maps for QuotaResourceType. -var ( - QuotaResourceType_name = map[int32]string{ - 0: "QRT_UNDEFINED", - 1: "QRT_RESOURCE_TYPE_GCE_INSTANCE", - 2: "QRT_RESOURCE_TYPE_GCE_DISK", - } - QuotaResourceType_value = map[string]int32{ - "QRT_UNDEFINED": 0, - "QRT_RESOURCE_TYPE_GCE_INSTANCE": 1, - "QRT_RESOURCE_TYPE_GCE_DISK": 2, - } -) - -func (x QuotaResourceType) Enum() *QuotaResourceType { - p := new(QuotaResourceType) - *p = x - return p -} - -func (x QuotaResourceType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (QuotaResourceType) Descriptor() protoreflect.EnumDescriptor { - return file_bpmetadata_proto_enumTypes[0].Descriptor() -} - -func (QuotaResourceType) Type() protoreflect.EnumType { - return &file_bpmetadata_proto_enumTypes[0] -} - -func (x QuotaResourceType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use QuotaResourceType.Descriptor instead. -func (QuotaResourceType) EnumDescriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{0} -} - -// SoftwareGroupType is a string enum representing the different types of software groups. -type SoftwareGroupType int32 - -const ( - // UNSPECIFIED is the default value for SoftwareGroupType. - SoftwareGroupType_SG_UNSPECIFIED SoftwareGroupType = 0 - // OS is a software group that represents an operating system. - SoftwareGroupType_SG_OS SoftwareGroupType = 1 -) - -// Enum value maps for SoftwareGroupType. -var ( - SoftwareGroupType_name = map[int32]string{ - 0: "SG_UNSPECIFIED", - 1: "SG_OS", - } - SoftwareGroupType_value = map[string]int32{ - "SG_UNSPECIFIED": 0, - "SG_OS": 1, - } -) - -func (x SoftwareGroupType) Enum() *SoftwareGroupType { - p := new(SoftwareGroupType) - *p = x - return p -} - -func (x SoftwareGroupType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SoftwareGroupType) Descriptor() protoreflect.EnumDescriptor { - return file_bpmetadata_proto_enumTypes[1].Descriptor() -} - -func (SoftwareGroupType) Type() protoreflect.EnumType { - return &file_bpmetadata_proto_enumTypes[1] -} - -func (x SoftwareGroupType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use SoftwareGroupType.Descriptor instead. -func (SoftwareGroupType) EnumDescriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{1} -} - -// BlueprintMetadata defines the overall structure for blueprint metadata. -// The cli command i.e. `cft blueprint metadata` attempts at auto-generating -// metadata if the blueprint is structured based on the TF blueprint template -// i.e. https://github.com/terraform-google-modules/terraform-google-module-template -// All fields within BlueprintMetadata and its children are denoted as: -// - Gen: auto-generated - -// - Gen: manually-authored -// - Gen: partial (contains nested messages that can include both auto-generated and manually authored) -type BlueprintMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // APIVersion is the apiVersion field of a metadata file - // Gen: auto-generated - ApiVersion string `protobuf:"bytes,1,opt,name=api_version,json=apiVersion,proto3" json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` // @gotags: json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" - // Kind is the kind field of a metadata file - // Gen: auto-generated - Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty" yaml:"kind,omitempty"` // @gotags: json:"kind,omitempty" yaml:"kind,omitempty" - // ResourceTypeMeta is the metadata field of a metadata file - // Gen: partial - Metadata *ResourceTypeMeta `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty" yaml:"metadata,omitempty"` // @gotags: json:"metadata,omitempty" yaml:"metadata,omitempty" - // BlueprintMetadataSpec is the metadata specification for the blueprint - // Gen: partial - Spec *BlueprintMetadataSpec `protobuf:"bytes,4,opt,name=spec,proto3" json:"spec" yaml:"spec"` // @gotags: yaml:"spec" json:"spec" -} - -func (x *BlueprintMetadata) Reset() { - *x = BlueprintMetadata{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintMetadata) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintMetadata) ProtoMessage() {} - -func (x *BlueprintMetadata) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintMetadata.ProtoReflect.Descriptor instead. -func (*BlueprintMetadata) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{0} -} - -func (x *BlueprintMetadata) GetApiVersion() string { - if x != nil { - return x.ApiVersion - } - return "" -} - -func (x *BlueprintMetadata) GetKind() string { - if x != nil { - return x.Kind - } - return "" -} - -func (x *BlueprintMetadata) GetMetadata() *ResourceTypeMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *BlueprintMetadata) GetSpec() *BlueprintMetadataSpec { - if x != nil { - return x.Spec - } - return nil -} - -type ResourceTypeMeta struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Name is the metadata.name field of a Resource - // Gen: auto-generated - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty" yaml:"name,omitempty"` // @gotags: json:"name,omitempty" yaml:"name,omitempty" - // Labels is the metadata.labels field of a Resource - // Gen: manually-authored - Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"labels,omitempty"` // @gotags: json:"labels,omitempty" yaml:"labels,omitempty" - // Annotations is the metadata.annotations field of a Resource. - // Gen: auto-generated - Annotations map[string]string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"annotations,omitempty"` // @gotags: json:"annotations,omitempty" yaml:"annotations,omitempty" -} - -func (x *ResourceTypeMeta) Reset() { - *x = ResourceTypeMeta{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ResourceTypeMeta) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResourceTypeMeta) ProtoMessage() {} - -func (x *ResourceTypeMeta) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResourceTypeMeta.ProtoReflect.Descriptor instead. -func (*ResourceTypeMeta) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{1} -} - -func (x *ResourceTypeMeta) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ResourceTypeMeta) GetLabels() map[string]string { - if x != nil { - return x.Labels - } - return nil -} - -func (x *ResourceTypeMeta) GetAnnotations() map[string]string { - if x != nil { - return x.Annotations - } - return nil -} - -// BlueprintMetadataSpec defines the spec portion of the blueprint metadata. -type BlueprintMetadataSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // BlueprintInfo defines the basic information of the blueprint. - // Gen: partial - Info *BlueprintInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty" yaml:"info,omitempty"` // @gotags: json:"info,omitempty" yaml:"info,omitempty" - // BlueprintContent defines the detail for blueprint related content such as - // related documentation, diagrams, examples etc. - // Gen: partial - Content *BlueprintContent `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty" yaml:"content,omitempty"` // @gotags: json:"content,omitempty" yaml:"content,omitempty" - // BlueprintInterface defines the input and output variables for the blueprint. - // Gen: partial - Interfaces *BlueprintInterface `protobuf:"bytes,3,opt,name=interfaces,proto3" json:"interfaces,omitempty" yaml:"interfaces,omitempty"` // @gotags: json:"interfaces,omitempty" yaml:"interfaces,omitempty" - // BlueprintRequirements defines the roles required and the associated services - // that need to be enabled to provision blueprint resources. - // Gen: auto-generated - Requirements *BlueprintRequirements `protobuf:"bytes,4,opt,name=requirements,proto3" json:"requirements,omitempty" yaml:"requirements,omitempty"` // @gotags: json:"requirements,omitempty" yaml:"requirements,omitempty" - // BlueprintUI defines the user interface for the blueprint. - // Gen: partial - Ui *BlueprintUI `protobuf:"bytes,5,opt,name=ui,proto3" json:"ui,omitempty" yaml:"ui,omitempty"` // @gotags: json:"ui,omitempty" yaml:"ui,omitempty" -} - -func (x *BlueprintMetadataSpec) Reset() { - *x = BlueprintMetadataSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintMetadataSpec) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintMetadataSpec) ProtoMessage() {} - -func (x *BlueprintMetadataSpec) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintMetadataSpec.ProtoReflect.Descriptor instead. -func (*BlueprintMetadataSpec) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{2} -} - -func (x *BlueprintMetadataSpec) GetInfo() *BlueprintInfo { - if x != nil { - return x.Info - } - return nil -} - -func (x *BlueprintMetadataSpec) GetContent() *BlueprintContent { - if x != nil { - return x.Content - } - return nil -} - -func (x *BlueprintMetadataSpec) GetInterfaces() *BlueprintInterface { - if x != nil { - return x.Interfaces - } - return nil -} - -func (x *BlueprintMetadataSpec) GetRequirements() *BlueprintRequirements { - if x != nil { - return x.Requirements - } - return nil -} - -func (x *BlueprintMetadataSpec) GetUi() *BlueprintUI { - if x != nil { - return x.Ui - } - return nil -} - -// BlueprintInfo defines the basic information of the blueprint. -type BlueprintInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Title for the blueprint. - // Gen: auto-generated - First H1 text in readme.md. - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" - // Blueprint source location and source type. - // Gen: auto-generated - user will be prompted if repo information can not - // be determined from the blueprint path. - Source *BlueprintRepoDetail `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty" yaml:"source,omitempty"` // @gotags: json:"source,omitempty" yaml:"source,omitempty" - // Last released semantic version for the packaged blueprint. - // Gen: auto-generated - 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 `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty" yaml:"version,omitempty"` // @gotags: json:"version,omitempty" yaml:"version,omitempty" - // Actuation tool e.g. Terraform and its required version. - // Gen: auto-generated - ActuationTool *BlueprintActuationTool `protobuf:"bytes,4,opt,name=actuation_tool,json=actuationTool,proto3" json:"actuationTool,omitempty" yaml:"actuationTool,omitempty"` // @gotags: json:"actuationTool,omitempty" yaml:"actuationTool,omitempty" - // Various types of descriptions associated with the blueprint. - // Gen: auto-generated - Description *BlueprintDescription `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: 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. - // Gen: auto-generated - Icon string `protobuf:"bytes,6,opt,name=icon,proto3" json:"icon,omitempty" yaml:"icon,omitempty"` // @gotags: json:"icon,omitempty" yaml:"icon,omitempty" - // The time estimate for configuring and deploying the blueprint. - // Gen: auto-generated - DeploymentDuration *BlueprintTimeEstimate `protobuf:"bytes,7,opt,name=deployment_duration,json=deploymentDuration,proto3" json:"deploymentDuration,omitempty" yaml:"deploymentDuration,omitempty"` // @gotags: json:"deploymentDuration,omitempty" yaml:"deploymentDuration,omitempty" - // The cost estimate for the blueprint based on preconfigured variables. - // Gen: auto-generated - CostEstimate *BlueprintCostEstimate `protobuf:"bytes,8,opt,name=cost_estimate,json=costEstimate,proto3" json:"costEstimate,omitempty" yaml:"costEstimate,omitempty"` // @gotags: json:"costEstimate,omitempty" yaml:"costEstimate,omitempty" - // A list of GCP cloud products used in the blueprint. - // Gen: manually-authored - CloudProducts []*BlueprintCloudProduct `protobuf:"bytes,9,rep,name=cloud_products,json=cloudProducts,proto3" json:"cloudProducts,omitempty" yaml:"cloudProducts,omitempty"` // @gotags: json:"cloudProducts,omitempty" yaml:"cloudProducts,omitempty" - // A configuration of fixed and dynamic GCP quotas that apply to the blueprint. - // Gen: manually-authored - QuotaDetails []*BlueprintQuotaDetail `protobuf:"bytes,10,rep,name=quota_details,json=quotaDetails,proto3" json:"quotaDetails,omitempty" yaml:"quotaDetails,omitempty"` // @gotags: json:"quotaDetails,omitempty" yaml:"quotaDetails,omitempty" - // Details on the author producing the blueprint. - // Gen: manually-authored - Author *BlueprintAuthor `protobuf:"bytes,11,opt,name=author,proto3" json:"author,omitempty" yaml:"author,omitempty"` // @gotags: json:"author,omitempty" yaml:"author,omitempty" - // Details on software installed as part of the blueprint. - // Gen: manually-authored - SoftwareGroups []*BlueprintSoftwareGroup `protobuf:"bytes,12,rep,name=software_groups,json=softwareGroups,proto3" json:"softwareGroups,omitempty" yaml:"softwareGroups,omitempty"` // @gotags: json:"softwareGroups,omitempty" yaml:"softwareGroups,omitempty" - // Support offered, if any for the blueprint. - // Gen: manually-authored - SupportInfo *BlueprintSupport `protobuf:"bytes,13,opt,name=support_info,json=supportInfo,proto3" json:"supportInfo,omitempty" yaml:"supportInfo,omitempty"` // @gotags: json:"supportInfo,omitempty" yaml:"supportInfo,omitempty" - // A list of GCP org policies to be checked for successful deployment. - // Gen: manually-authored - OrgPolicyChecks []*BlueprintOrgPolicyCheck `protobuf:"bytes,14,rep,name=org_policy_checks,json=orgPolicyChecks,proto3" json:"orgPolicyChecks,omitempty" yaml:"orgPolicyChecks,omitempty"` // @gotags: json:"orgPolicyChecks,omitempty" yaml:"orgPolicyChecks,omitempty" - // Specifies if the blueprint supports single or multiple deployments per GCP project. - // If set to true, the blueprint can not be deployed more than once in the same GCP project. - // Gen: manually-authored - SingleDeployment bool `protobuf:"varint,15,opt,name=single_deployment,json=singleDeployment,proto3" json:"singleDeployment,omitempty" yaml:"singleDeployment,omitempty"` // @gotags: json:"singleDeployment,omitempty" yaml:"singleDeployment,omitempty" -} - -func (x *BlueprintInfo) Reset() { - *x = BlueprintInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintInfo) ProtoMessage() {} - -func (x *BlueprintInfo) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintInfo.ProtoReflect.Descriptor instead. -func (*BlueprintInfo) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{3} -} - -func (x *BlueprintInfo) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *BlueprintInfo) GetSource() *BlueprintRepoDetail { - if x != nil { - return x.Source - } - return nil -} - -func (x *BlueprintInfo) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *BlueprintInfo) GetActuationTool() *BlueprintActuationTool { - if x != nil { - return x.ActuationTool - } - return nil -} - -func (x *BlueprintInfo) GetDescription() *BlueprintDescription { - if x != nil { - return x.Description - } - return nil -} - -func (x *BlueprintInfo) GetIcon() string { - if x != nil { - return x.Icon - } - return "" -} - -func (x *BlueprintInfo) GetDeploymentDuration() *BlueprintTimeEstimate { - if x != nil { - return x.DeploymentDuration - } - return nil -} - -func (x *BlueprintInfo) GetCostEstimate() *BlueprintCostEstimate { - if x != nil { - return x.CostEstimate - } - return nil -} - -func (x *BlueprintInfo) GetCloudProducts() []*BlueprintCloudProduct { - if x != nil { - return x.CloudProducts - } - return nil -} - -func (x *BlueprintInfo) GetQuotaDetails() []*BlueprintQuotaDetail { - if x != nil { - return x.QuotaDetails - } - return nil -} - -func (x *BlueprintInfo) GetAuthor() *BlueprintAuthor { - if x != nil { - return x.Author - } - return nil -} - -func (x *BlueprintInfo) GetSoftwareGroups() []*BlueprintSoftwareGroup { - if x != nil { - return x.SoftwareGroups - } - return nil -} - -func (x *BlueprintInfo) GetSupportInfo() *BlueprintSupport { - if x != nil { - return x.SupportInfo - } - return nil -} - -func (x *BlueprintInfo) GetOrgPolicyChecks() []*BlueprintOrgPolicyCheck { - if x != nil { - return x.OrgPolicyChecks - } - return nil -} - -func (x *BlueprintInfo) GetSingleDeployment() bool { - if x != nil { - return x.SingleDeployment - } - return false -} - -// BlueprintContent defines the detail for blueprint related content such as -// related documentation, diagrams, examples etc. -type BlueprintContent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Gen: auto-generated - Architecture *BlueprintArchitecture `protobuf:"bytes,1,opt,name=architecture,proto3" json:"architecture,omitempty" yaml:"architecture,omitempty"` // @gotags: json:"architecture,omitempty" yaml:"architecture,omitempty" - // Gen: manually-authored - Diagrams []*BlueprintDiagram `protobuf:"bytes,2,rep,name=diagrams,proto3" json:"diagrams,omitempty" yaml:"diagrams,omitempty"` // @gotags: json:"diagrams,omitempty" yaml:"diagrams,omitempty" - // Gen: auto-generated - the list content following the "## Documentation" tag. E.g. - // ## Documentation - // - [Hosting a Static Website](https://cloud.google.com/storage/docs/hosting-static-website) - Documentation []*BlueprintListContent `protobuf:"bytes,3,rep,name=documentation,proto3" json:"documentation,omitempty" yaml:"documentation,omitempty"` // @gotags: json:"documentation,omitempty" yaml:"documentation,omitempty" - // Gen: auto-generated - blueprints under the modules/ folder. - SubBlueprints []*BlueprintMiscContent `protobuf:"bytes,4,rep,name=sub_blueprints,json=subBlueprints,proto3" json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty"` // @gotags: json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty" - // Gen: auto-generated - examples under the examples/ folder. - Examples []*BlueprintMiscContent `protobuf:"bytes,5,rep,name=examples,proto3" json:"examples,omitempty" yaml:"examples,omitempty"` // @gotags: json:"examples,omitempty" yaml:"examples,omitempty" -} - -func (x *BlueprintContent) Reset() { - *x = BlueprintContent{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintContent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintContent) ProtoMessage() {} - -func (x *BlueprintContent) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintContent.ProtoReflect.Descriptor instead. -func (*BlueprintContent) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{4} -} - -func (x *BlueprintContent) GetArchitecture() *BlueprintArchitecture { - if x != nil { - return x.Architecture - } - return nil -} - -func (x *BlueprintContent) GetDiagrams() []*BlueprintDiagram { - if x != nil { - return x.Diagrams - } - return nil -} - -func (x *BlueprintContent) GetDocumentation() []*BlueprintListContent { - if x != nil { - return x.Documentation - } - return nil -} - -func (x *BlueprintContent) GetSubBlueprints() []*BlueprintMiscContent { - if x != nil { - return x.SubBlueprints - } - return nil -} - -func (x *BlueprintContent) GetExamples() []*BlueprintMiscContent { - if x != nil { - return x.Examples - } - return nil -} - -// BlueprintInterface defines the input and output variables for the blueprint. -type BlueprintInterface struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Gen: auto-generated - all defined variables for the blueprint - Variables []*BlueprintVariable `protobuf:"bytes,1,rep,name=variables,proto3" json:"variables,omitempty" yaml:"variables,omitempty"` // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" - // Gen: manually-authored - VariableGroups []*BlueprintVariableGroup `protobuf:"bytes,2,rep,name=variable_groups,json=variableGroups,proto3" json:"variableGroups,omitempty" yaml:"variableGroups,omitempty"` // @gotags: json:"variableGroups,omitempty" yaml:"variableGroups,omitempty" - // Gen: auto-generated - all defined outputs for the blueprint - Outputs []*BlueprintOutput `protobuf:"bytes,3,rep,name=outputs,proto3" json:"outputs,omitempty" yaml:"outputs,omitempty"` // @gotags: json:"outputs,omitempty" yaml:"outputs,omitempty" -} - -func (x *BlueprintInterface) Reset() { - *x = BlueprintInterface{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintInterface) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintInterface) ProtoMessage() {} - -func (x *BlueprintInterface) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintInterface.ProtoReflect.Descriptor instead. -func (*BlueprintInterface) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{5} -} - -func (x *BlueprintInterface) GetVariables() []*BlueprintVariable { - if x != nil { - return x.Variables - } - return nil -} - -func (x *BlueprintInterface) GetVariableGroups() []*BlueprintVariableGroup { - if x != nil { - return x.VariableGroups - } - return nil -} - -func (x *BlueprintInterface) GetOutputs() []*BlueprintOutput { - if x != nil { - return x.Outputs - } - return nil -} - -// BlueprintRequirements defines the roles required and the associated services -// that need to be enabled to provision blueprint resources. -type BlueprintRequirements struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Gen: auto-generated - all roles required for the blueprint in test/setup/iam.tf - // as the "int_required_roles" local. E.g. - // - // locals { - // int_required_roles = [ - // "roles/compute.admin", - // ] - // } - Roles []*BlueprintRoles `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles,omitempty" yaml:"roles,omitempty"` // @gotags: json:"roles,omitempty" yaml:"roles,omitempty" - // Gen: auto-generated - all services required for the blueprint in test/setup/main.tf - // as "activate_apis" in the project module. - Services []string `protobuf:"bytes,2,rep,name=services,proto3" json:"services,omitempty" yaml:"services,omitempty"` // @gotags: json:"services,omitempty" yaml:"services,omitempty" -} - -func (x *BlueprintRequirements) Reset() { - *x = BlueprintRequirements{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintRequirements) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintRequirements) ProtoMessage() {} - -func (x *BlueprintRequirements) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintRequirements.ProtoReflect.Descriptor instead. -func (*BlueprintRequirements) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{6} -} - -func (x *BlueprintRequirements) GetRoles() []*BlueprintRoles { - if x != nil { - return x.Roles - } - return nil -} - -func (x *BlueprintRequirements) GetServices() []string { - if x != nil { - return x.Services - } - return nil -} - -// BlueprintUI is the top-level structure for holding UI specific metadata. -type BlueprintUI struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The top-level input section that defines the list of variables and - // their sections on the deployment page. - // Gen: partial - Input *BlueprintUIInput `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty" yaml:"input,omitempty"` // @gotags: 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. - // Gen: manually-authored - Runtime *BlueprintUIOutput `protobuf:"bytes,2,opt,name=runtime,proto3" json:"runtime,omitempty" yaml:"runtime,omitempty"` // @gotags: json:"runtime,omitempty" yaml:"runtime,omitempty" -} - -func (x *BlueprintUI) Reset() { - *x = BlueprintUI{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintUI) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintUI) ProtoMessage() {} - -func (x *BlueprintUI) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintUI.ProtoReflect.Descriptor instead. -func (*BlueprintUI) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{7} -} - -func (x *BlueprintUI) GetInput() *BlueprintUIInput { - if x != nil { - return x.Input - } - return nil -} - -func (x *BlueprintUI) GetRuntime() *BlueprintUIOutput { - if x != nil { - return x.Runtime - } - return nil -} - -type BlueprintRepoDetail struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Gen: auto-generated - URL from the .git dir. - // Can be manually overridden with a custom URL if needed. - Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo" yaml:"repo"` // @gotags: json:"repo" yaml:"repo" - // Gen: auto-generated - set as "git" for now until more - // types are supported. - SourceType string `protobuf:"bytes,2,opt,name=source_type,json=sourceType,proto3" json:"sourceType" yaml:"sourceType"` // @gotags: json:"sourceType" yaml:"sourceType" - // Gen: auto-generated - not set for root modules but - // set as the module name for submodules, if found. - Dir string `protobuf:"bytes,3,opt,name=dir,proto3" json:"dir,omitempty" yaml:"dir,omitempty"` // @gotags: json:"dir,omitempty" yaml:"dir,omitempty" -} - -func (x *BlueprintRepoDetail) Reset() { - *x = BlueprintRepoDetail{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintRepoDetail) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintRepoDetail) ProtoMessage() {} - -func (x *BlueprintRepoDetail) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintRepoDetail.ProtoReflect.Descriptor instead. -func (*BlueprintRepoDetail) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{8} -} - -func (x *BlueprintRepoDetail) GetRepo() string { - if x != nil { - return x.Repo - } - return "" -} - -func (x *BlueprintRepoDetail) GetSourceType() string { - if x != nil { - return x.SourceType - } - return "" -} - -func (x *BlueprintRepoDetail) GetDir() string { - if x != nil { - return x.Dir - } - return "" -} - -// BlueprintActuationTool defines the actuation tool used to provision the blueprint. -type BlueprintActuationTool struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Gen: auto-generated - set as "Terraform" for now until - // more flavors are supported. - Flavor string `protobuf:"bytes,1,opt,name=flavor,proto3" json:"flavor,omitempty" yaml:"flavor,omitempty"` // @gotags: json:"flavor,omitempty" yaml:"flavor,omitempty" - // Required version for the actuation tool. - // Gen: auto-generated - For Terraform this is the `required_version` - // set in `terraform` block. E.g. - // - // terraform { - // required_version = ">= 0.13" - // } - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty" yaml:"version,omitempty"` // @gotags: json:"version,omitempty" yaml:"version,omitempty" -} - -func (x *BlueprintActuationTool) Reset() { - *x = BlueprintActuationTool{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintActuationTool) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintActuationTool) ProtoMessage() {} - -func (x *BlueprintActuationTool) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintActuationTool.ProtoReflect.Descriptor instead. -func (*BlueprintActuationTool) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{9} -} - -func (x *BlueprintActuationTool) GetFlavor() string { - if x != nil { - return x.Flavor - } - return "" -} - -func (x *BlueprintActuationTool) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -// All descriptions are set with the markdown content immediately -// after each type's heading declaration in readme.md. -type BlueprintDescription struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Gen: auto-generated - Markdown after "### Tagline". - Tagline string `protobuf:"bytes,1,opt,name=tagline,proto3" json:"tagline,omitempty" yaml:"tagline,omitempty"` // @gotags: json:"tagline,omitempty" yaml:"tagline,omitempty" - // Gen: auto-generated - Markdown after "### Detailed". - Detailed string `protobuf:"bytes,2,opt,name=detailed,proto3" json:"detailed,omitempty" yaml:"detailed,omitempty"` // @gotags: json:"detailed,omitempty" yaml:"detailed,omitempty" - // Gen: auto-generated - Markdown after "### PreDeploy". - PreDeploy string `protobuf:"bytes,3,opt,name=pre_deploy,json=preDeploy,proto3" json:"preDeploy,omitempty" yaml:"preDeploy,omitempty"` // @gotags: json:"preDeploy,omitempty" yaml:"preDeploy,omitempty" - // Gen: auto-generated - Markdown after "### Html". - Html string `protobuf:"bytes,4,opt,name=html,proto3" json:"html,omitempty" yaml:"html,omitempty"` // @gotags: json:"html,omitempty" yaml:"html,omitempty" - // Gen: auto-generated - Markdown after "### EulaUrls". - EulaUrls []string `protobuf:"bytes,5,rep,name=eula_urls,json=eulaUrls,proto3" json:"eulaUrls,omitempty" yaml:"eulaUrls,omitempty"` // @gotags: json:"eulaUrls,omitempty" yaml:"eulaUrls,omitempty" - // Gen: auto-generated - Markdown after "### Architecture" - // Deprecated. Use BlueprintContent.Architecture instead. - Architecture []string `protobuf:"bytes,6,rep,name=architecture,proto3" json:"architecture,omitempty" yaml:"architecture,omitempty"` // @gotags: json:"architecture,omitempty" yaml:"architecture,omitempty" -} - -func (x *BlueprintDescription) Reset() { - *x = BlueprintDescription{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintDescription) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintDescription) ProtoMessage() {} - -func (x *BlueprintDescription) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintDescription.ProtoReflect.Descriptor instead. -func (*BlueprintDescription) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{10} -} - -func (x *BlueprintDescription) GetTagline() string { - if x != nil { - return x.Tagline - } - return "" -} - -func (x *BlueprintDescription) GetDetailed() string { - if x != nil { - return x.Detailed - } - return "" -} - -func (x *BlueprintDescription) GetPreDeploy() string { - if x != nil { - return x.PreDeploy - } - return "" -} - -func (x *BlueprintDescription) GetHtml() string { - if x != nil { - return x.Html - } - return "" -} - -func (x *BlueprintDescription) GetEulaUrls() []string { - if x != nil { - return x.EulaUrls - } - return nil -} - -func (x *BlueprintDescription) GetArchitecture() []string { - if x != nil { - return x.Architecture - } - return nil -} - -// A time estimate in secs required for configuring and deploying the blueprint. -type BlueprintTimeEstimate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Gen: auto-generated - Set using the content defined under "### DeploymentTime" E.g. - // ### DeploymentTime - // - Configuration: X secs - // - Deployment: Y secs - ConfigurationSecs int64 `protobuf:"varint,1,opt,name=configuration_secs,json=configurationSecs,proto3" json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty"` // @gotags: json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty" - DeploymentSecs int64 `protobuf:"varint,2,opt,name=deployment_secs,json=deploymentSecs,proto3" json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty"` // @gotags: json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty" -} - -func (x *BlueprintTimeEstimate) Reset() { - *x = BlueprintTimeEstimate{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintTimeEstimate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintTimeEstimate) ProtoMessage() {} - -func (x *BlueprintTimeEstimate) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintTimeEstimate.ProtoReflect.Descriptor instead. -func (*BlueprintTimeEstimate) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{11} -} - -func (x *BlueprintTimeEstimate) GetConfigurationSecs() int64 { - if x != nil { - return x.ConfigurationSecs - } - return 0 -} - -func (x *BlueprintTimeEstimate) GetDeploymentSecs() int64 { - if x != nil { - return x.DeploymentSecs - } - return 0 -} - -// The cost estimate for the blueprint based on pre-configured variables. -type BlueprintCostEstimate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Gen: auto-generated - Set using the content defined under "### Cost" as a link - // with a description E.g. - // ### Cost - // [$20.00](https://cloud.google.com/products/calculator?hl=en_US&_ga=2.1665458.-226505189.1675191136#id=02fb0c45-cc29-4567-8cc6-f72ac9024add) - Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description" yaml:"description"` // @gotags: json:"description" yaml:"description" - Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url" yaml:"url"` // @gotags: json:"url" yaml:"url" -} - -func (x *BlueprintCostEstimate) Reset() { - *x = BlueprintCostEstimate{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintCostEstimate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintCostEstimate) ProtoMessage() {} - -func (x *BlueprintCostEstimate) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintCostEstimate.ProtoReflect.Descriptor instead. -func (*BlueprintCostEstimate) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{12} -} - -func (x *BlueprintCostEstimate) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *BlueprintCostEstimate) GetUrl() string { - if x != nil { - return x.Url - } - return "" -} - -// GCP cloud product(s) used in the blueprint. -type BlueprintCloudProduct struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // A top-level (e.g. "Compute Engine") or secondary (e.g. "Binary Authorization") - // product used in the blueprint. - // Gen: manually-authored - ProductId string `protobuf:"bytes,1,opt,name=product_id,json=productId,proto3" json:"productId,omitempty" yaml:"productId,omitempty"` // @gotags: json:"productId,omitempty" yaml:"productId,omitempty" - // Url for the product. - // Gen: manually-authored - PageUrl string `protobuf:"bytes,2,opt,name=page_url,json=pageUrl,proto3" json:"pageUrl" yaml:"pageUrl"` // @gotags: json:"pageUrl" yaml:"pageUrl" - // A label string for the product, if it is not an integrated GCP product. - // E.g. "Data Studio" - // Gen: manually-authored - Label string `protobuf:"bytes,3,opt,name=label,proto3" json:"label,omitempty" yaml:"label,omitempty"` // @gotags: json:"label,omitempty" yaml:"label,omitempty" - // Is the product's landing page external to the GCP console e.g. - // lookerstudio.google.com - // Gen: manually-authored - IsExternal bool `protobuf:"varint,4,opt,name=is_external,json=isExternal,proto3" json:"isExternal,omitempty" yaml:"isExternal,omitempty"` // @gotags: json:"isExternal,omitempty" yaml:"isExternal,omitempty" -} - -func (x *BlueprintCloudProduct) Reset() { - *x = BlueprintCloudProduct{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintCloudProduct) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintCloudProduct) ProtoMessage() {} - -func (x *BlueprintCloudProduct) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintCloudProduct.ProtoReflect.Descriptor instead. -func (*BlueprintCloudProduct) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{13} -} - -func (x *BlueprintCloudProduct) GetProductId() string { - if x != nil { - return x.ProductId - } - return "" -} - -func (x *BlueprintCloudProduct) GetPageUrl() string { - if x != nil { - return x.PageUrl - } - return "" -} - -func (x *BlueprintCloudProduct) GetLabel() string { - if x != nil { - return x.Label - } - return "" -} - -func (x *BlueprintCloudProduct) GetIsExternal() bool { - if x != nil { - return x.IsExternal - } - return false -} - -// BlueprintOrgPolicyCheck defines GCP org policies to be checked -// for successful deployment -type BlueprintOrgPolicyCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Id for the policy e.g. "compute-vmExternalIpAccess" - // Gen: manually-authored - PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policyId" yaml:"policyId"` // @gotags: json:"policyId" yaml:"policyId" - // If not set, it is assumed any version of this org policy - // prevents successful deployment of this solution. - // Gen: manually-authored - RequiredValues []string `protobuf:"bytes,2,rep,name=required_values,json=requiredValues,proto3" json:"requiredValues,omitempty" yaml:"requiredValues,omitempty"` // @gotags: json:"requiredValues,omitempty" yaml:"requiredValues,omitempty" -} - -func (x *BlueprintOrgPolicyCheck) Reset() { - *x = BlueprintOrgPolicyCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintOrgPolicyCheck) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintOrgPolicyCheck) ProtoMessage() {} - -func (x *BlueprintOrgPolicyCheck) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintOrgPolicyCheck.ProtoReflect.Descriptor instead. -func (*BlueprintOrgPolicyCheck) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{14} -} - -func (x *BlueprintOrgPolicyCheck) GetPolicyId() string { - if x != nil { - return x.PolicyId - } - return "" -} - -func (x *BlueprintOrgPolicyCheck) GetRequiredValues() []string { - if x != nil { - return x.RequiredValues - } - return nil -} - -// BlueprintQuotaDetail defines the quota details for a blueprint. -type BlueprintQuotaDetail struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // 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. - // Gen: manually-authored - DynamicVariable string `protobuf:"bytes,1,opt,name=dynamic_variable,json=dynamicVariable,proto3" json:"dynamicVariable,omitempty" yaml:"dynamicVariable,omitempty"` // @gotags: json:"dynamicVariable,omitempty" yaml:"dynamicVariable,omitempty" - // ResourceType is the type of resource the quota will be applied to i.e. - // GCE Instance or Disk etc. - // Gen: manually-authored - ResourceType QuotaResourceType `protobuf:"varint,2,opt,name=resource_type,json=resourceType,proto3,enum=google.cloud.config.bpmetadata.QuotaResourceType" json:"resourceType" yaml:"resourceType"` // @gotags: json:"resourceType" yaml:"resourceType" - // QuotaType is a key/value pair of the actual quotas and their corresponding - // values. Valid keys for quota_type can be: - // MACHINE_TYPE, - // CPUs, - // DISK_TYPE OR - // SIZE_GB. - // Gen: manually-authored - QuotaType map[string]string `protobuf:"bytes,3,rep,name=quota_type,json=quotaType,proto3" json:"quotaType" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"quotaType"` // @gotags: json:"quotaType" yaml:"quotaType" -} - -func (x *BlueprintQuotaDetail) Reset() { - *x = BlueprintQuotaDetail{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintQuotaDetail) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintQuotaDetail) ProtoMessage() {} - -func (x *BlueprintQuotaDetail) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintQuotaDetail.ProtoReflect.Descriptor instead. -func (*BlueprintQuotaDetail) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{15} -} - -func (x *BlueprintQuotaDetail) GetDynamicVariable() string { - if x != nil { - return x.DynamicVariable - } - return "" -} - -func (x *BlueprintQuotaDetail) GetResourceType() QuotaResourceType { - if x != nil { - return x.ResourceType - } - return QuotaResourceType_QRT_UNDEFINED -} - -func (x *BlueprintQuotaDetail) GetQuotaType() map[string]string { - if x != nil { - return x.QuotaType - } - return nil -} - -// BlueprintAuthor defines the author of a blueprint. -type BlueprintAuthor struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Name of template author or organization. - // Gen: manually-authored - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" - // Description of the author. - // Gen: manually-authored - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" - // Link to the author's website. - // Gen: manually-authored - Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty" yaml:"url,omitempty"` // @gotags: json:"url,omitempty" yaml:"url,omitempty" -} - -func (x *BlueprintAuthor) Reset() { - *x = BlueprintAuthor{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintAuthor) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintAuthor) ProtoMessage() {} - -func (x *BlueprintAuthor) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintAuthor.ProtoReflect.Descriptor instead. -func (*BlueprintAuthor) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{16} -} - -func (x *BlueprintAuthor) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *BlueprintAuthor) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *BlueprintAuthor) GetUrl() string { - if x != nil { - return x.Url - } - return "" -} - -// A group of related software components for the blueprint. -type BlueprintSoftwareGroup struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Pre-defined software types. - // Gen: manually-authored - Type SoftwareGroupType `protobuf:"varint,1,opt,name=type,proto3,enum=google.cloud.config.bpmetadata.SoftwareGroupType" json:"type,omitempty" yaml:"type,omitempty"` // @gotags: json:"type,omitempty" yaml:"type,omitempty" - // Software components belonging to this group. - // Gen: manually-authored - Software []*BlueprintSoftware `protobuf:"bytes,2,rep,name=software,proto3" json:"software,omitempty" yaml:"software,omitempty"` // @gotags: json:"software,omitempty" yaml:"software,omitempty" -} - -func (x *BlueprintSoftwareGroup) Reset() { - *x = BlueprintSoftwareGroup{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintSoftwareGroup) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintSoftwareGroup) ProtoMessage() {} - -func (x *BlueprintSoftwareGroup) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintSoftwareGroup.ProtoReflect.Descriptor instead. -func (*BlueprintSoftwareGroup) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{17} -} - -func (x *BlueprintSoftwareGroup) GetType() SoftwareGroupType { - if x != nil { - return x.Type - } - return SoftwareGroupType_SG_UNSPECIFIED -} - -func (x *BlueprintSoftwareGroup) GetSoftware() []*BlueprintSoftware { - if x != nil { - return x.Software - } - return nil -} - -// A description of a piece of a single software component -// installed by the blueprint. -type BlueprintSoftware struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // User-visible title. - // Gen: manually-authored - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" - // Software version. - // Gen: manually-authored - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty" yaml:"version,omitempty"` // @gotags: json:"version,omitempty" yaml:"version,omitempty" - // Link to development site or marketing page for this software. - // Gen: manually-authored - Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty" yaml:"url,omitempty"` // @gotags: json:"url,omitempty" yaml:"url,omitempty" - // Link to license page. - // Gen: manually-authored - LicenseUrl string `protobuf:"bytes,4,opt,name=license_url,json=licenseUrl,proto3" json:"licenseUrl,omitempty" yaml:"licenseUrl,omitempty"` // @gotags: json:"licenseUrl,omitempty" yaml:"licenseUrl,omitempty" -} - -func (x *BlueprintSoftware) Reset() { - *x = BlueprintSoftware{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintSoftware) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintSoftware) ProtoMessage() {} - -func (x *BlueprintSoftware) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintSoftware.ProtoReflect.Descriptor instead. -func (*BlueprintSoftware) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{18} -} - -func (x *BlueprintSoftware) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *BlueprintSoftware) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *BlueprintSoftware) GetUrl() string { - if x != nil { - return x.Url - } - return "" -} - -func (x *BlueprintSoftware) GetLicenseUrl() string { - if x != nil { - return x.LicenseUrl - } - return "" -} - -// A description of a support option -type BlueprintSupport struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description of the support option. - // Gen: manually-authored - Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description" yaml:"description"` // @gotags: json:"description" yaml:"description" - // Link to the page providing this support option. - // Gen: manually-authored - Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty" yaml:"url,omitempty"` // @gotags: json:"url,omitempty" yaml:"url,omitempty" - // The organization or group that provides the support option (e.g.: - // "Community", "Google"). - // Gen: manually-authored - Entity string `protobuf:"bytes,3,opt,name=entity,proto3" json:"entity,omitempty" yaml:"entity,omitempty"` // @gotags: json:"entity,omitempty" yaml:"entity,omitempty" - // Whether to show the customer's support ID. - // Gen: manually-authored - ShowSupportId bool `protobuf:"varint,4,opt,name=show_support_id,json=showSupportId,proto3" json:"showSupportId,omitempty" yaml:"showSupportId,omitempty"` // @gotags: json:"showSupportId,omitempty" yaml:"showSupportId,omitempty" -} - -func (x *BlueprintSupport) Reset() { - *x = BlueprintSupport{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintSupport) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintSupport) ProtoMessage() {} - -func (x *BlueprintSupport) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintSupport.ProtoReflect.Descriptor instead. -func (*BlueprintSupport) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{19} -} - -func (x *BlueprintSupport) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *BlueprintSupport) GetUrl() string { - if x != nil { - return x.Url - } - return "" -} - -func (x *BlueprintSupport) GetEntity() string { - if x != nil { - return x.Entity - } - return "" -} - -func (x *BlueprintSupport) GetShowSupportId() bool { - if x != nil { - return x.ShowSupportId - } - return false -} - -type BlueprintArchitecture struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Gen: auto-generated - the URL & list content following the "## Architecture" tag e.g. - // ## Architecture - // ![Blueprint Architecture](assets/architecture.png) - // 1. Step no. 1 - // 2. Step no. 2 - // 3. Step no. 3 - DiagramUrl string `protobuf:"bytes,1,opt,name=diagram_url,json=diagramUrl,proto3" json:"diagramUrl" yaml:"diagramUrl"` // @gotags: json:"diagramUrl" yaml:"diagramUrl" - // Gen: auto-generated - the list items following the "## Architecture" tag. - Description []string `protobuf:"bytes,2,rep,name=description,proto3" json:"description" yaml:"description"` // @gotags: json:"description" yaml:"description" -} - -func (x *BlueprintArchitecture) Reset() { - *x = BlueprintArchitecture{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintArchitecture) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintArchitecture) ProtoMessage() {} - -func (x *BlueprintArchitecture) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintArchitecture.ProtoReflect.Descriptor instead. -func (*BlueprintArchitecture) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{20} -} - -func (x *BlueprintArchitecture) GetDiagramUrl() string { - if x != nil { - return x.DiagramUrl - } - return "" -} - -func (x *BlueprintArchitecture) GetDescription() []string { - if x != nil { - return x.Description - } - return nil -} - -type BlueprintMiscContent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" - Location string `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty" yaml:"location,omitempty"` // @gotags: json:"location,omitempty" yaml:"location,omitempty" -} - -func (x *BlueprintMiscContent) Reset() { - *x = BlueprintMiscContent{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintMiscContent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintMiscContent) ProtoMessage() {} - -func (x *BlueprintMiscContent) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintMiscContent.ProtoReflect.Descriptor instead. -func (*BlueprintMiscContent) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{21} -} - -func (x *BlueprintMiscContent) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *BlueprintMiscContent) GetLocation() string { - if x != nil { - return x.Location - } - return "" -} - -type BlueprintDiagram struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" - AltText string `protobuf:"bytes,2,opt,name=alt_text,json=altText,proto3" json:"altText,omitempty" yaml:"altText,omitempty"` // @gotags: json:"altText,omitempty" yaml:"altText,omitempty" - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" -} - -func (x *BlueprintDiagram) Reset() { - *x = BlueprintDiagram{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintDiagram) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintDiagram) ProtoMessage() {} - -func (x *BlueprintDiagram) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintDiagram.ProtoReflect.Descriptor instead. -func (*BlueprintDiagram) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{22} -} - -func (x *BlueprintDiagram) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *BlueprintDiagram) GetAltText() string { - if x != nil { - return x.AltText - } - return "" -} - -func (x *BlueprintDiagram) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -type BlueprintListContent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" - Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty" yaml:"url,omitempty"` // @gotags: json:"url,omitempty" yaml:"url,omitempty" -} - -func (x *BlueprintListContent) Reset() { - *x = BlueprintListContent{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintListContent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintListContent) ProtoMessage() {} - -func (x *BlueprintListContent) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintListContent.ProtoReflect.Descriptor instead. -func (*BlueprintListContent) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{23} -} - -func (x *BlueprintListContent) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *BlueprintListContent) GetUrl() string { - if x != nil { - return x.Url - } - return "" -} - -type BlueprintVariable struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty" yaml:"name,omitempty"` // @gotags: json:"name,omitempty" yaml:"name,omitempty" - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" - VarType string `protobuf:"bytes,3,opt,name=var_type,json=varType,proto3" json:"varType,omitempty" yaml:"varType,omitempty"` // @gotags: json:"varType,omitempty" yaml:"varType,omitempty" - DefaultValue string `protobuf:"bytes,4,opt,name=default_value,json=defaultValue,proto3" json:"defaultValue,omitempty" yaml:"defaultValue,omitempty"` // @gotags: json:"defaultValue,omitempty" yaml:"defaultValue,omitempty" - Required bool `protobuf:"varint,5,opt,name=required,proto3" json:"required,omitempty" yaml:"required,omitempty"` // @gotags: json:"required,omitempty" yaml:"required,omitempty" -} - -func (x *BlueprintVariable) Reset() { - *x = BlueprintVariable{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintVariable) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintVariable) ProtoMessage() {} - -func (x *BlueprintVariable) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintVariable.ProtoReflect.Descriptor instead. -func (*BlueprintVariable) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{24} -} - -func (x *BlueprintVariable) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *BlueprintVariable) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *BlueprintVariable) GetVarType() string { - if x != nil { - return x.VarType - } - return "" -} - -func (x *BlueprintVariable) GetDefaultValue() string { - if x != nil { - return x.DefaultValue - } - return "" -} - -func (x *BlueprintVariable) GetRequired() bool { - if x != nil { - return x.Required - } - return false -} - -// BlueprintVariableGroup is manually entered. -type BlueprintVariableGroup struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" - Variables []string `protobuf:"bytes,3,rep,name=variables,proto3" json:"variables,omitempty" yaml:"variables,omitempty"` // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" -} - -func (x *BlueprintVariableGroup) Reset() { - *x = BlueprintVariableGroup{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintVariableGroup) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintVariableGroup) ProtoMessage() {} - -func (x *BlueprintVariableGroup) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintVariableGroup.ProtoReflect.Descriptor instead. -func (*BlueprintVariableGroup) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{25} -} - -func (x *BlueprintVariableGroup) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *BlueprintVariableGroup) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *BlueprintVariableGroup) GetVariables() []string { - if x != nil { - return x.Variables - } - return nil -} - -type BlueprintOutput struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" -} - -func (x *BlueprintOutput) Reset() { - *x = BlueprintOutput{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintOutput) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintOutput) ProtoMessage() {} - -func (x *BlueprintOutput) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintOutput.ProtoReflect.Descriptor instead. -func (*BlueprintOutput) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{26} -} - -func (x *BlueprintOutput) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *BlueprintOutput) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -type BlueprintRoles struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Level string `protobuf:"bytes,1,opt,name=level,proto3" json:"level" yaml:"level"` // @gotags: json:"level" yaml:"level" - Roles []string `protobuf:"bytes,2,rep,name=roles,proto3" json:"roles" yaml:"roles"` // @gotags: json:"roles" yaml:"roles" -} - -func (x *BlueprintRoles) Reset() { - *x = BlueprintRoles{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintRoles) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintRoles) ProtoMessage() {} - -func (x *BlueprintRoles) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintRoles.ProtoReflect.Descriptor instead. -func (*BlueprintRoles) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{27} -} - -func (x *BlueprintRoles) GetLevel() string { - if x != nil { - return x.Level - } - return "" -} - -func (x *BlueprintRoles) GetRoles() []string { - if x != nil { - return x.Roles - } - return nil -} - -var File_bpmetadata_proto protoreflect.FileDescriptor - -var file_bpmetadata_proto_rawDesc = []byte{ - 0x0a, 0x10, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x1a, 0x13, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, - 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe1, 0x01, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, - 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, - 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, - 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, - 0x6e, 0x64, 0x12, 0x4c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x49, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0xdc, 0x02, 0x0a, 0x10, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x61, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x63, 0x0a, 0x0b, 0x61, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, - 0x61, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, - 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x92, 0x03, 0x0a, 0x15, 0x42, - 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x53, 0x70, 0x65, 0x63, 0x12, 0x41, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, - 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, - 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, - 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x0a, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, - 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x02, 0x75, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x52, 0x02, 0x75, 0x69, 0x22, - 0xe5, 0x08, 0x0a, 0x0d, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, - 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x06, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5d, - 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6f, 0x6c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, - 0x74, 0x41, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6f, 0x6c, 0x52, 0x0d, - 0x61, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6f, 0x6c, 0x12, 0x56, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x66, 0x0a, 0x13, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x12, 0x64, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x5a, 0x0a, 0x0d, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, - 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, - 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, - 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, - 0x0c, 0x63, 0x6f, 0x73, 0x74, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x5c, 0x0a, - 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, - 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x0d, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x59, 0x0a, 0x0d, 0x71, - 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x6f, - 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x47, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, - 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, - 0x5f, 0x0a, 0x0f, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, - 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, - 0x69, 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x52, 0x0e, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x12, 0x53, 0x0a, 0x0c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, - 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x0b, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x63, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x5f, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x72, 0x67, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x69, - 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xc6, 0x03, 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, - 0x70, 0x72, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x59, 0x0a, 0x0c, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, 0x72, 0x63, - 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x4c, 0x0a, 0x08, 0x64, 0x69, 0x61, 0x67, 0x72, - 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, - 0x72, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x08, 0x64, 0x69, 0x61, - 0x67, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x5a, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, - 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x52, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x5b, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x5f, 0x62, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, - 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, - 0x72, 0x69, 0x6e, 0x74, 0x4d, 0x69, 0x73, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, - 0x0d, 0x73, 0x75, 0x62, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x50, - 0x0a, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, 0x69, 0x73, 0x63, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, - 0x22, 0x91, 0x02, 0x0a, 0x12, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, - 0x70, 0x72, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x5f, 0x0a, 0x0f, 0x76, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0e, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x49, 0x0a, 0x07, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, - 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x73, 0x22, 0x79, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x44, 0x0a, - 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, - 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x05, 0x72, 0x6f, - 0x6c, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, - 0xa2, 0x01, 0x0a, 0x0b, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x12, - 0x46, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4b, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, - 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, - 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x22, 0x5c, 0x0a, 0x13, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, - 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, - 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, - 0x69, 0x72, 0x22, 0x4a, 0x0a, 0x16, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, - 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, - 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6c, - 0x61, 0x76, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc0, - 0x01, 0x0a, 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x67, 0x6c, 0x69, - 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x67, 0x6c, 0x69, 0x6e, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x70, 0x72, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x12, 0x0a, 0x04, - 0x68, 0x74, 0x6d, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x74, 0x6d, 0x6c, - 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x75, 0x6c, 0x61, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x08, 0x65, 0x75, 0x6c, 0x61, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x22, 0x0a, - 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, - 0x65, 0x22, 0x6f, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x54, 0x69, - 0x6d, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, - 0x63, 0x73, 0x22, 0x4b, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x43, - 0x6f, 0x73, 0x74, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, - 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, - 0x88, 0x01, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x67, 0x65, - 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, - 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, - 0x69, 0x73, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x22, 0x5f, 0x0a, 0x17, 0x42, 0x6c, - 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x72, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xbb, 0x02, 0x0a, 0x14, - 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, - 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, - 0x56, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x62, 0x0a, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x61, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, - 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x09, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x3c, 0x0a, 0x0e, 0x51, - 0x75, 0x6f, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5b, 0x0a, 0x0f, 0x42, 0x6c, 0x75, - 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0xae, 0x01, 0x0a, 0x16, 0x42, 0x6c, 0x75, 0x65, 0x70, - 0x72, 0x69, 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x12, 0x45, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x08, 0x73, 0x6f, 0x66, 0x74, - 0x77, 0x61, 0x72, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, - 0x70, 0x72, 0x69, 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x52, 0x08, 0x73, - 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x22, 0x76, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, - 0x72, 0x69, 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, - 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1f, - 0x0a, 0x0b, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x22, - 0x86, 0x01, 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x53, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x53, - 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x22, 0x5a, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, - 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, - 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x55, - 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x46, 0x0a, 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, - 0x74, 0x4d, 0x69, 0x73, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x10, - 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6c, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x74, 0x54, 0x65, 0x78, 0x74, 0x12, - 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x3e, 0x0a, 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, - 0x6c, 0x22, 0xa5, 0x01, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, - 0x08, 0x76, 0x61, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x76, 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, 0x6c, 0x0a, 0x16, 0x42, 0x6c, 0x75, - 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x47, 0x0a, 0x0f, 0x42, 0x6c, 0x75, 0x65, 0x70, - 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x3c, 0x0a, 0x0e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x6f, 0x6c, - 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2a, 0x6a, - 0x0a, 0x11, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x51, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, - 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x51, 0x52, 0x54, 0x5f, 0x52, 0x45, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x43, 0x45, 0x5f, - 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x51, 0x52, - 0x54, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x10, 0x02, 0x2a, 0x32, 0x0a, 0x11, 0x53, 0x6f, - 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x12, 0x0a, 0x0e, 0x53, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x47, 0x5f, 0x4f, 0x53, 0x10, 0x01, 0x42, 0x48, - 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_bpmetadata_proto_rawDescOnce sync.Once - file_bpmetadata_proto_rawDescData = file_bpmetadata_proto_rawDesc -) - -func file_bpmetadata_proto_rawDescGZIP() []byte { - file_bpmetadata_proto_rawDescOnce.Do(func() { - file_bpmetadata_proto_rawDescData = protoimpl.X.CompressGZIP(file_bpmetadata_proto_rawDescData) - }) - return file_bpmetadata_proto_rawDescData -} - -var file_bpmetadata_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_bpmetadata_proto_msgTypes = make([]protoimpl.MessageInfo, 31) -var file_bpmetadata_proto_goTypes = []interface{}{ - (QuotaResourceType)(0), // 0: google.cloud.config.bpmetadata.QuotaResourceType - (SoftwareGroupType)(0), // 1: google.cloud.config.bpmetadata.SoftwareGroupType - (*BlueprintMetadata)(nil), // 2: google.cloud.config.bpmetadata.BlueprintMetadata - (*ResourceTypeMeta)(nil), // 3: google.cloud.config.bpmetadata.ResourceTypeMeta - (*BlueprintMetadataSpec)(nil), // 4: google.cloud.config.bpmetadata.BlueprintMetadataSpec - (*BlueprintInfo)(nil), // 5: google.cloud.config.bpmetadata.BlueprintInfo - (*BlueprintContent)(nil), // 6: google.cloud.config.bpmetadata.BlueprintContent - (*BlueprintInterface)(nil), // 7: google.cloud.config.bpmetadata.BlueprintInterface - (*BlueprintRequirements)(nil), // 8: google.cloud.config.bpmetadata.BlueprintRequirements - (*BlueprintUI)(nil), // 9: google.cloud.config.bpmetadata.BlueprintUI - (*BlueprintRepoDetail)(nil), // 10: google.cloud.config.bpmetadata.BlueprintRepoDetail - (*BlueprintActuationTool)(nil), // 11: google.cloud.config.bpmetadata.BlueprintActuationTool - (*BlueprintDescription)(nil), // 12: google.cloud.config.bpmetadata.BlueprintDescription - (*BlueprintTimeEstimate)(nil), // 13: google.cloud.config.bpmetadata.BlueprintTimeEstimate - (*BlueprintCostEstimate)(nil), // 14: google.cloud.config.bpmetadata.BlueprintCostEstimate - (*BlueprintCloudProduct)(nil), // 15: google.cloud.config.bpmetadata.BlueprintCloudProduct - (*BlueprintOrgPolicyCheck)(nil), // 16: google.cloud.config.bpmetadata.BlueprintOrgPolicyCheck - (*BlueprintQuotaDetail)(nil), // 17: google.cloud.config.bpmetadata.BlueprintQuotaDetail - (*BlueprintAuthor)(nil), // 18: google.cloud.config.bpmetadata.BlueprintAuthor - (*BlueprintSoftwareGroup)(nil), // 19: google.cloud.config.bpmetadata.BlueprintSoftwareGroup - (*BlueprintSoftware)(nil), // 20: google.cloud.config.bpmetadata.BlueprintSoftware - (*BlueprintSupport)(nil), // 21: google.cloud.config.bpmetadata.BlueprintSupport - (*BlueprintArchitecture)(nil), // 22: google.cloud.config.bpmetadata.BlueprintArchitecture - (*BlueprintMiscContent)(nil), // 23: google.cloud.config.bpmetadata.BlueprintMiscContent - (*BlueprintDiagram)(nil), // 24: google.cloud.config.bpmetadata.BlueprintDiagram - (*BlueprintListContent)(nil), // 25: google.cloud.config.bpmetadata.BlueprintListContent - (*BlueprintVariable)(nil), // 26: google.cloud.config.bpmetadata.BlueprintVariable - (*BlueprintVariableGroup)(nil), // 27: google.cloud.config.bpmetadata.BlueprintVariableGroup - (*BlueprintOutput)(nil), // 28: google.cloud.config.bpmetadata.BlueprintOutput - (*BlueprintRoles)(nil), // 29: google.cloud.config.bpmetadata.BlueprintRoles - nil, // 30: google.cloud.config.bpmetadata.ResourceTypeMeta.LabelsEntry - nil, // 31: google.cloud.config.bpmetadata.ResourceTypeMeta.AnnotationsEntry - nil, // 32: google.cloud.config.bpmetadata.BlueprintQuotaDetail.QuotaTypeEntry - (*BlueprintUIInput)(nil), // 33: google.cloud.config.bpmetadata.BlueprintUIInput - (*BlueprintUIOutput)(nil), // 34: google.cloud.config.bpmetadata.BlueprintUIOutput -} -var file_bpmetadata_proto_depIdxs = []int32{ - 3, // 0: google.cloud.config.bpmetadata.BlueprintMetadata.metadata:type_name -> google.cloud.config.bpmetadata.ResourceTypeMeta - 4, // 1: google.cloud.config.bpmetadata.BlueprintMetadata.spec:type_name -> google.cloud.config.bpmetadata.BlueprintMetadataSpec - 30, // 2: google.cloud.config.bpmetadata.ResourceTypeMeta.labels:type_name -> google.cloud.config.bpmetadata.ResourceTypeMeta.LabelsEntry - 31, // 3: google.cloud.config.bpmetadata.ResourceTypeMeta.annotations:type_name -> google.cloud.config.bpmetadata.ResourceTypeMeta.AnnotationsEntry - 5, // 4: google.cloud.config.bpmetadata.BlueprintMetadataSpec.info:type_name -> google.cloud.config.bpmetadata.BlueprintInfo - 6, // 5: google.cloud.config.bpmetadata.BlueprintMetadataSpec.content:type_name -> google.cloud.config.bpmetadata.BlueprintContent - 7, // 6: google.cloud.config.bpmetadata.BlueprintMetadataSpec.interfaces:type_name -> google.cloud.config.bpmetadata.BlueprintInterface - 8, // 7: google.cloud.config.bpmetadata.BlueprintMetadataSpec.requirements:type_name -> google.cloud.config.bpmetadata.BlueprintRequirements - 9, // 8: google.cloud.config.bpmetadata.BlueprintMetadataSpec.ui:type_name -> google.cloud.config.bpmetadata.BlueprintUI - 10, // 9: google.cloud.config.bpmetadata.BlueprintInfo.source:type_name -> google.cloud.config.bpmetadata.BlueprintRepoDetail - 11, // 10: google.cloud.config.bpmetadata.BlueprintInfo.actuation_tool:type_name -> google.cloud.config.bpmetadata.BlueprintActuationTool - 12, // 11: google.cloud.config.bpmetadata.BlueprintInfo.description:type_name -> google.cloud.config.bpmetadata.BlueprintDescription - 13, // 12: google.cloud.config.bpmetadata.BlueprintInfo.deployment_duration:type_name -> google.cloud.config.bpmetadata.BlueprintTimeEstimate - 14, // 13: google.cloud.config.bpmetadata.BlueprintInfo.cost_estimate:type_name -> google.cloud.config.bpmetadata.BlueprintCostEstimate - 15, // 14: google.cloud.config.bpmetadata.BlueprintInfo.cloud_products:type_name -> google.cloud.config.bpmetadata.BlueprintCloudProduct - 17, // 15: google.cloud.config.bpmetadata.BlueprintInfo.quota_details:type_name -> google.cloud.config.bpmetadata.BlueprintQuotaDetail - 18, // 16: google.cloud.config.bpmetadata.BlueprintInfo.author:type_name -> google.cloud.config.bpmetadata.BlueprintAuthor - 19, // 17: google.cloud.config.bpmetadata.BlueprintInfo.software_groups:type_name -> google.cloud.config.bpmetadata.BlueprintSoftwareGroup - 21, // 18: google.cloud.config.bpmetadata.BlueprintInfo.support_info:type_name -> google.cloud.config.bpmetadata.BlueprintSupport - 16, // 19: google.cloud.config.bpmetadata.BlueprintInfo.org_policy_checks:type_name -> google.cloud.config.bpmetadata.BlueprintOrgPolicyCheck - 22, // 20: google.cloud.config.bpmetadata.BlueprintContent.architecture:type_name -> google.cloud.config.bpmetadata.BlueprintArchitecture - 24, // 21: google.cloud.config.bpmetadata.BlueprintContent.diagrams:type_name -> google.cloud.config.bpmetadata.BlueprintDiagram - 25, // 22: google.cloud.config.bpmetadata.BlueprintContent.documentation:type_name -> google.cloud.config.bpmetadata.BlueprintListContent - 23, // 23: google.cloud.config.bpmetadata.BlueprintContent.sub_blueprints:type_name -> google.cloud.config.bpmetadata.BlueprintMiscContent - 23, // 24: google.cloud.config.bpmetadata.BlueprintContent.examples:type_name -> google.cloud.config.bpmetadata.BlueprintMiscContent - 26, // 25: google.cloud.config.bpmetadata.BlueprintInterface.variables:type_name -> google.cloud.config.bpmetadata.BlueprintVariable - 27, // 26: google.cloud.config.bpmetadata.BlueprintInterface.variable_groups:type_name -> google.cloud.config.bpmetadata.BlueprintVariableGroup - 28, // 27: google.cloud.config.bpmetadata.BlueprintInterface.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintOutput - 29, // 28: google.cloud.config.bpmetadata.BlueprintRequirements.roles:type_name -> google.cloud.config.bpmetadata.BlueprintRoles - 33, // 29: google.cloud.config.bpmetadata.BlueprintUI.input:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput - 34, // 30: google.cloud.config.bpmetadata.BlueprintUI.runtime:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput - 0, // 31: google.cloud.config.bpmetadata.BlueprintQuotaDetail.resource_type:type_name -> google.cloud.config.bpmetadata.QuotaResourceType - 32, // 32: google.cloud.config.bpmetadata.BlueprintQuotaDetail.quota_type:type_name -> google.cloud.config.bpmetadata.BlueprintQuotaDetail.QuotaTypeEntry - 1, // 33: google.cloud.config.bpmetadata.BlueprintSoftwareGroup.type:type_name -> google.cloud.config.bpmetadata.SoftwareGroupType - 20, // 34: google.cloud.config.bpmetadata.BlueprintSoftwareGroup.software:type_name -> google.cloud.config.bpmetadata.BlueprintSoftware - 35, // [35:35] is the sub-list for method output_type - 35, // [35:35] is the sub-list for method input_type - 35, // [35:35] is the sub-list for extension type_name - 35, // [35:35] is the sub-list for extension extendee - 0, // [0:35] is the sub-list for field type_name -} - -func init() { file_bpmetadata_proto_init() } -func file_bpmetadata_proto_init() { - if File_bpmetadata_proto != nil { - return - } - file_bpmetadata_ui_proto_init() - if !protoimpl.UnsafeEnabled { - file_bpmetadata_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintMetadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResourceTypeMeta); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintMetadataSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintContent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintInterface); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintRequirements); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintUI); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintRepoDetail); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintActuationTool); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintDescription); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintTimeEstimate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintCostEstimate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintCloudProduct); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintOrgPolicyCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintQuotaDetail); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintAuthor); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintSoftwareGroup); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintSoftware); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintSupport); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintArchitecture); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintMiscContent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintDiagram); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintListContent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintVariable); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintVariableGroup); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintOutput); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintRoles); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_bpmetadata_proto_rawDesc, - NumEnums: 2, - NumMessages: 31, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_bpmetadata_proto_goTypes, - DependencyIndexes: file_bpmetadata_proto_depIdxs, - EnumInfos: file_bpmetadata_proto_enumTypes, - MessageInfos: file_bpmetadata_proto_msgTypes, - }.Build() - File_bpmetadata_proto = out.File - file_bpmetadata_proto_rawDesc = nil - file_bpmetadata_proto_goTypes = nil - file_bpmetadata_proto_depIdxs = nil -} diff --git a/cli/bpmetadata/bpmetadata_ui.pb.go b/cli/bpmetadata/bpmetadata_ui.pb.go deleted file mode 100644 index c0206987d15..00000000000 --- a/cli/bpmetadata/bpmetadata_ui.pb.go +++ /dev/null @@ -1,853 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.28.1 -// protoc v3.21.12 -// source: bpmetadata_ui.proto - -package bpmetadata - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// BlueprintUIInput is the structure for holding Input and Input Section (i.e. groups) specific metadata. -type BlueprintUIInput struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // variables is a map defining all inputs on the UI. - // Gen: partial - Variables map[string]*DisplayVariable `protobuf:"bytes,1,rep,name=variables,proto3" json:"variables,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"variables,omitempty"` // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" - // Sections is a generic structure for grouping inputs together. - // Gen: manually-authored - Sections []*DisplaySection `protobuf:"bytes,2,rep,name=sections,proto3" json:"sections,omitempty" yaml:"sections,omitempty"` // @gotags: json:"sections,omitempty" yaml:"sections,omitempty" -} - -func (x *BlueprintUIInput) Reset() { - *x = BlueprintUIInput{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintUIInput) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintUIInput) ProtoMessage() {} - -func (x *BlueprintUIInput) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintUIInput.ProtoReflect.Descriptor instead. -func (*BlueprintUIInput) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{0} -} - -func (x *BlueprintUIInput) GetVariables() map[string]*DisplayVariable { - if x != nil { - return x.Variables - } - return nil -} - -func (x *BlueprintUIInput) GetSections() []*DisplaySection { - if x != nil { - return x.Sections - } - return nil -} - -// Additional display specific metadata pertaining to a particular -// input variable. -type DisplayVariable struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The variable name from the corresponding standard metadata file. - // Gen: auto-generated - the Terraform variable name - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" - // Visible title for the variable on the UI. If not present, - // Name will be used for the Title. - // Gen: auto-generated - the Terraform variable converted to title case e.g. - // variable "bucket_admins" will convert to "Bucket Admins" as the title. - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" - // A flag to hide or show the variable on the UI. - // Gen: manually-authored - Invisible bool `protobuf:"varint,3,opt,name=invisible,proto3" json:"invisible,omitempty" yaml:"invisible,omitempty"` // @gotags: json:"invisible,omitempty" yaml:"invisible,omitempty" - // Variable tooltip. - // Gen: manually-authored - Tooltip string `protobuf:"bytes,4,opt,name=tooltip,proto3" json:"tooltip,omitempty" yaml:"tooltip,omitempty"` // @gotags: json:"tooltip,omitempty" yaml:"tooltip,omitempty" - // Placeholder text (when there is no default). - // Gen: manually-authored - Placeholder string `protobuf:"bytes,5,opt,name=placeholder,proto3" json:"placeholder,omitempty" yaml:"placeholder,omitempty"` // @gotags: json:"placeholder,omitempty" yaml:"placeholder,omitempty" - // Regex based validation rules for the variable. - // Gen: manually-authored - RegexValidation string `protobuf:"bytes,6,opt,name=regex_validation,json=regexValidation,proto3" json:"regexValidation,omitempty" yaml:"regexValidation,omitempty"` // @gotags: json:"regexValidation,omitempty" yaml:"regexValidation,omitempty" - // Minimum no. of inputs for the input variable. - // Gen: manually-authored - MinItems int32 `protobuf:"varint,7,opt,name=min_items,json=minItems,proto3" json:"minItems,omitempty" yaml:"minItems,omitempty"` // @gotags: json:"minItems,omitempty" yaml:"minItems,omitempty" - // Max no. of inputs for the input variable. - // Gen: manually-authored - MaxItems int32 `protobuf:"varint,8,opt,name=max_items,json=maxItems,proto3" json:"maxItems,omitempty" yaml:"maxItems,omitempty"` // @gotags: json:"maxItems,omitempty" yaml:"maxItems,omitempty" - // Minimum length for string values. - // Gen: manually-authored - MinLength int32 `protobuf:"varint,9,opt,name=min_length,json=minLength,proto3" json:"minLength,omitempty" yaml:"minLength,omitempty"` // @gotags: json:"minLength,omitempty" yaml:"minLength,omitempty" - // Max length for string values. - // Gen: manually-authored - MaxLength int32 `protobuf:"varint,10,opt,name=max_length,json=maxLength,proto3" json:"maxLength,omitempty" yaml:"maxLength,omitempty"` // @gotags: json:"maxLength,omitempty" yaml:"maxLength,omitempty" - // Minimum value for numeric types. - // Gen: manually-authored - Min float32 `protobuf:"fixed32,11,opt,name=min,proto3" json:"min,omitempty" yaml:"min,omitempty"` // @gotags: json:"min,omitempty" yaml:"min,omitempty" - // Max value for numeric types. - // Gen: manually-authored - Max float32 `protobuf:"fixed32,12,opt,name=max,proto3" json:"max,omitempty" yaml:"max,omitempty"` // @gotags: 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. - // Gen: manually-authored - Section string `protobuf:"bytes,13,opt,name=section,proto3" json:"section,omitempty" yaml:"section,omitempty"` // @gotags: json:"section,omitempty" yaml:"section,omitempty" - // UI extension associated with the input variable. - // E.g. for rendering a GCE machine type selector: - // - // xGoogleProperty: - // - // type: GCE_MACHINE_TYPE - // zoneProperty: myZone - // gceMachineType: - // minCpu: 2 - // minRamGb: - // - // Gen: manually-authored - XGoogleProperty *GooglePropertyExtension `protobuf:"bytes,14,opt,name=x_google_property,json=xGoogleProperty,proto3" json:"xGoogleProperty,omitempty" yaml:"xGoogleProperty,omitempty"` // @gotags: json:"xGoogleProperty,omitempty" yaml:"xGoogleProperty,omitempty" - // Text describing the validation rules for the property. Typically shown - // after an invalid input. - // Optional. UTF-8 text. No markup. At most 128 characters. - // Gen: manually-authored - Validation string `protobuf:"bytes,15,opt,name=validation,proto3" json:"validation,omitempty" yaml:"validation,omitempty"` // @gotags: json:"validation,omitempty" yaml:"validation,omitempty" -} - -func (x *DisplayVariable) Reset() { - *x = DisplayVariable{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DisplayVariable) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DisplayVariable) ProtoMessage() {} - -func (x *DisplayVariable) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DisplayVariable.ProtoReflect.Descriptor instead. -func (*DisplayVariable) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{1} -} - -func (x *DisplayVariable) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *DisplayVariable) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *DisplayVariable) GetInvisible() bool { - if x != nil { - return x.Invisible - } - return false -} - -func (x *DisplayVariable) GetTooltip() string { - if x != nil { - return x.Tooltip - } - return "" -} - -func (x *DisplayVariable) GetPlaceholder() string { - if x != nil { - return x.Placeholder - } - return "" -} - -func (x *DisplayVariable) GetRegexValidation() string { - if x != nil { - return x.RegexValidation - } - return "" -} - -func (x *DisplayVariable) GetMinItems() int32 { - if x != nil { - return x.MinItems - } - return 0 -} - -func (x *DisplayVariable) GetMaxItems() int32 { - if x != nil { - return x.MaxItems - } - return 0 -} - -func (x *DisplayVariable) GetMinLength() int32 { - if x != nil { - return x.MinLength - } - return 0 -} - -func (x *DisplayVariable) GetMaxLength() int32 { - if x != nil { - return x.MaxLength - } - return 0 -} - -func (x *DisplayVariable) GetMin() float32 { - if x != nil { - return x.Min - } - return 0 -} - -func (x *DisplayVariable) GetMax() float32 { - if x != nil { - return x.Max - } - return 0 -} - -func (x *DisplayVariable) GetSection() string { - if x != nil { - return x.Section - } - return "" -} - -func (x *DisplayVariable) GetXGoogleProperty() *GooglePropertyExtension { - if x != nil { - return x.XGoogleProperty - } - return nil -} - -func (x *DisplayVariable) GetValidation() string { - if x != nil { - return x.Validation - } - return "" -} - -// A logical group of variables. [Section][]s may also be grouped into -// sub-sections. -type DisplaySection struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the section, referenced by DisplayVariable.Section - // Section names must be unique. - // Gen: manually-authored - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" - // Section title. - // If not provided, name will be used instead. - // Gen: manually-authored - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty" yaml:"title,omitempty"` // @gotags: json:"title,omitempty" yaml:"title,omitempty" - // Section tooltip. - // Gen: manually-authored - Tooltip string `protobuf:"bytes,3,opt,name=tooltip,proto3" json:"tooltip,omitempty" yaml:"tooltip,omitempty"` // @gotags: json:"tooltip,omitempty" yaml:"tooltip,omitempty" - // Section subtext. - // Gen: manually-authored - Subtext string `protobuf:"bytes,4,opt,name=subtext,proto3" json:"subtext,omitempty" yaml:"subtext,omitempty"` // @gotags: json:"subtext,omitempty" yaml:"subtext,omitempty" - // The name of the parent section (if parent is not the root section). - // Gen: manually-authored - Parent string `protobuf:"bytes,5,opt,name=parent,proto3" json:"parent,omitempty" yaml:"parent,omitempty"` // @gotags: json:"parent,omitempty" yaml:"parent,omitempty" -} - -func (x *DisplaySection) Reset() { - *x = DisplaySection{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DisplaySection) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DisplaySection) ProtoMessage() {} - -func (x *DisplaySection) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DisplaySection.ProtoReflect.Descriptor instead. -func (*DisplaySection) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{2} -} - -func (x *DisplaySection) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *DisplaySection) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *DisplaySection) GetTooltip() string { - if x != nil { - return x.Tooltip - } - return "" -} - -func (x *DisplaySection) GetSubtext() string { - if x != nil { - return x.Subtext - } - return "" -} - -func (x *DisplaySection) GetParent() string { - if x != nil { - return x.Parent - } - return "" -} - -type BlueprintUIOutput struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Short message to be displayed while the blueprint is deploying. - // At most 128 characters. - // Gen: manually-authored - OutputMessage string `protobuf:"bytes,1,opt,name=output_message,json=outputMessage,proto3" json:"outputMessage,omitempty" yaml:"outputMessage,omitempty"` // @gotags: json:"outputMessage,omitempty" yaml:"outputMessage,omitempty" - // List of suggested actions to take. - // Gen: manually-authored - SuggestedActions []*UIActionItem `protobuf:"bytes,2,rep,name=suggested_actions,json=suggestedActions,proto3" json:"suggestedActions,omitempty" yaml:"suggestedActions,omitempty"` // @gotags: json:"suggestedActions,omitempty" yaml:"suggestedActions,omitempty" - // outputs is a map defining a subset of Terraform outputs on the UI - // that may need additional UI configuration. - // Gen: manually-authored - Outputs map[string]*DisplayOutput `protobuf:"bytes,3,rep,name=outputs,proto3" json:"outputs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"outputs,omitempty"` // @gotags: json:"outputs,omitempty" yaml:"outputs,omitempty" -} - -func (x *BlueprintUIOutput) Reset() { - *x = BlueprintUIOutput{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BlueprintUIOutput) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BlueprintUIOutput) ProtoMessage() {} - -func (x *BlueprintUIOutput) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BlueprintUIOutput.ProtoReflect.Descriptor instead. -func (*BlueprintUIOutput) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{3} -} - -func (x *BlueprintUIOutput) GetOutputMessage() string { - if x != nil { - return x.OutputMessage - } - return "" -} - -func (x *BlueprintUIOutput) GetSuggestedActions() []*UIActionItem { - if x != nil { - return x.SuggestedActions - } - return nil -} - -func (x *BlueprintUIOutput) GetOutputs() map[string]*DisplayOutput { - if x != nil { - return x.Outputs - } - return nil -} - -// An item appearing in a list of required or suggested steps. -type UIActionItem struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Summary heading for the item. - // Required. Accepts string expressions. At most 64 characters. - // Gen: manually-authored - Heading string `protobuf:"bytes,1,opt,name=heading,proto3" json:"heading" yaml:"heading"` // @gotags: json:"heading" yaml:"heading" - // Longer description of the item. - // At least one description or snippet is required. - // Accepts string expressions. HTML <a href> - // tags only. At most 512 characters. - // Gen: manually-authored - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: 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. - // Gen: manually-authored - Snippet string `protobuf:"bytes,3,opt,name=snippet,proto3" json:"snippet,omitempty" yaml:"snippet,omitempty"` // @gotags: 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. - // Gen: manually-authored - ShowIf string `protobuf:"bytes,4,opt,name=show_if,json=showIf,proto3" json:"showIf,omitempty" yaml:"showIf,omitempty"` // @gotags: json:"showIf,omitempty" yaml:"showIf,omitempty" -} - -func (x *UIActionItem) Reset() { - *x = UIActionItem{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UIActionItem) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UIActionItem) ProtoMessage() {} - -func (x *UIActionItem) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UIActionItem.ProtoReflect.Descriptor instead. -func (*UIActionItem) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{4} -} - -func (x *UIActionItem) GetHeading() string { - if x != nil { - return x.Heading - } - return "" -} - -func (x *UIActionItem) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *UIActionItem) GetSnippet() string { - if x != nil { - return x.Snippet - } - return "" -} - -func (x *UIActionItem) GetShowIf() string { - if x != nil { - return x.ShowIf - } - return "" -} - -// Additional display specific metadata pertaining to a particular -// Terraform output. -type DisplayOutput struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // open_in_new_tab defines if the Output action should be opened - // in a new tab. - // Gen: manually-authored - OpenInNewTab bool `protobuf:"varint,1,opt,name=open_in_new_tab,json=openInNewTab,proto3" json:"openInNewTab,omitempty" yaml:"openInNewTab,omitempty"` // @gotags: json:"openInNewTab,omitempty" yaml:"openInNewTab,omitempty" - // show_in_notification defines if the Output should shown in - // notification for the deployment. - // Gen: manually-authored - ShowInNotification bool `protobuf:"varint,2,opt,name=show_in_notification,json=showInNotification,proto3" json:"showInNotification,omitempty" yaml:"showInNotification,omitempty"` // @gotags: json:"showInNotification,omitempty" yaml:"showInNotification,omitempty" -} - -func (x *DisplayOutput) Reset() { - *x = DisplayOutput{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DisplayOutput) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DisplayOutput) ProtoMessage() {} - -func (x *DisplayOutput) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DisplayOutput.ProtoReflect.Descriptor instead. -func (*DisplayOutput) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{5} -} - -func (x *DisplayOutput) GetOpenInNewTab() bool { - if x != nil { - return x.OpenInNewTab - } - return false -} - -func (x *DisplayOutput) GetShowInNotification() bool { - if x != nil { - return x.ShowInNotification - } - return false -} - -var File_bpmetadata_ui_proto protoreflect.FileDescriptor - -var file_bpmetadata_ui_proto_rawDesc = []byte{ - 0x0a, 0x13, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x69, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x17, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x5f, 0x75, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, - 0x02, 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x12, 0x5d, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, - 0x74, 0x55, 0x49, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x6d, - 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfb, 0x03, - 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, - 0x6e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x69, 0x6e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, - 0x6c, 0x74, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, - 0x74, 0x69, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, - 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, - 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1b, 0x0a, - 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x69, - 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x6d, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x78, - 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6d, - 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, - 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, - 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x63, 0x0a, 0x11, 0x78, 0x5f, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x78, 0x47, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x86, 0x01, 0x0a, 0x0e, - 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, - 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, - 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, - 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, - 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, - 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, - 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, - 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, - 0x22, 0x68, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, - 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, - 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, - 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, - 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_bpmetadata_ui_proto_rawDescOnce sync.Once - file_bpmetadata_ui_proto_rawDescData = file_bpmetadata_ui_proto_rawDesc -) - -func file_bpmetadata_ui_proto_rawDescGZIP() []byte { - file_bpmetadata_ui_proto_rawDescOnce.Do(func() { - file_bpmetadata_ui_proto_rawDescData = protoimpl.X.CompressGZIP(file_bpmetadata_ui_proto_rawDescData) - }) - return file_bpmetadata_ui_proto_rawDescData -} - -var file_bpmetadata_ui_proto_msgTypes = make([]protoimpl.MessageInfo, 8) -var file_bpmetadata_ui_proto_goTypes = []interface{}{ - (*BlueprintUIInput)(nil), // 0: google.cloud.config.bpmetadata.BlueprintUIInput - (*DisplayVariable)(nil), // 1: google.cloud.config.bpmetadata.DisplayVariable - (*DisplaySection)(nil), // 2: google.cloud.config.bpmetadata.DisplaySection - (*BlueprintUIOutput)(nil), // 3: google.cloud.config.bpmetadata.BlueprintUIOutput - (*UIActionItem)(nil), // 4: google.cloud.config.bpmetadata.UIActionItem - (*DisplayOutput)(nil), // 5: google.cloud.config.bpmetadata.DisplayOutput - nil, // 6: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry - nil, // 7: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry - (*GooglePropertyExtension)(nil), // 8: google.cloud.config.bpmetadata.GooglePropertyExtension -} -var file_bpmetadata_ui_proto_depIdxs = []int32{ - 6, // 0: google.cloud.config.bpmetadata.BlueprintUIInput.variables:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry - 2, // 1: google.cloud.config.bpmetadata.BlueprintUIInput.sections:type_name -> google.cloud.config.bpmetadata.DisplaySection - 8, // 2: google.cloud.config.bpmetadata.DisplayVariable.x_google_property:type_name -> google.cloud.config.bpmetadata.GooglePropertyExtension - 4, // 3: google.cloud.config.bpmetadata.BlueprintUIOutput.suggested_actions:type_name -> google.cloud.config.bpmetadata.UIActionItem - 7, // 4: google.cloud.config.bpmetadata.BlueprintUIOutput.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry - 1, // 5: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayVariable - 5, // 6: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayOutput - 7, // [7:7] is the sub-list for method output_type - 7, // [7:7] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name -} - -func init() { file_bpmetadata_ui_proto_init() } -func file_bpmetadata_ui_proto_init() { - if File_bpmetadata_ui_proto != nil { - return - } - file_bpmetadata_ui_ext_proto_init() - if !protoimpl.UnsafeEnabled { - file_bpmetadata_ui_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintUIInput); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DisplayVariable); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DisplaySection); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintUIOutput); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UIActionItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DisplayOutput); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_bpmetadata_ui_proto_rawDesc, - NumEnums: 0, - NumMessages: 8, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_bpmetadata_ui_proto_goTypes, - DependencyIndexes: file_bpmetadata_ui_proto_depIdxs, - MessageInfos: file_bpmetadata_ui_proto_msgTypes, - }.Build() - File_bpmetadata_ui_proto = out.File - file_bpmetadata_ui_proto_rawDesc = nil - file_bpmetadata_ui_proto_goTypes = nil - file_bpmetadata_ui_proto_depIdxs = nil -} diff --git a/cli/bpmetadata/bpmetadata_ui_ext.pb.go b/cli/bpmetadata/bpmetadata_ui_ext.pb.go deleted file mode 100644 index bf49624cfe6..00000000000 --- a/cli/bpmetadata/bpmetadata_ui_ext.pb.go +++ /dev/null @@ -1,1567 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.28.1 -// protoc v3.21.12 -// source: bpmetadata_ui_ext.proto - -package bpmetadata - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// ExtensionType specifies the type of extension. -type ExtensionType int32 - -const ( - // EXTENSIONTYPE_UNDEFINED indicates that the extension type is undefined. - ExtensionType_ET_UNDEFINED ExtensionType = 0 - // General formats. - ExtensionType_ET_EMAIL_ADDRESS ExtensionType = 1 - ExtensionType_ET_MULTI_LINE_STRING ExtensionType = 2 - // GCE related. - ExtensionType_ET_GCE_DISK_IMAGE ExtensionType = 3 - ExtensionType_ET_GCE_DISK_TYPE ExtensionType = 4 - ExtensionType_ET_GCE_DISK_SIZE ExtensionType = 5 - ExtensionType_ET_GCE_MACHINE_TYPE ExtensionType = 6 - ExtensionType_ET_GCE_NETWORK ExtensionType = 7 - ExtensionType_ET_GCE_ZONE ExtensionType = 8 - ExtensionType_ET_GCE_SUBNETWORK ExtensionType = 9 - ExtensionType_ET_GCE_REGION ExtensionType = 10 - ExtensionType_ET_GCE_GPU_TYPE ExtensionType = 11 - ExtensionType_ET_GCE_GPU_COUNT ExtensionType = 12 - ExtensionType_ET_GCE_EXTERNAL_IP ExtensionType = 13 - ExtensionType_ET_GCE_IP_FORWARDING ExtensionType = 14 - ExtensionType_ET_GCE_FIREWALL ExtensionType = 15 - ExtensionType_ET_GCE_FIREWALL_RANGE ExtensionType = 16 - ExtensionType_ET_GCE_GENERIC_RESOURCE ExtensionType = 17 - // GCS related. - ExtensionType_ET_GCS_BUCKET ExtensionType = 18 - // IAM related. - ExtensionType_ET_IAM_SERVICE_ACCOUNT ExtensionType = 19 -) - -// Enum value maps for ExtensionType. -var ( - ExtensionType_name = map[int32]string{ - 0: "ET_UNDEFINED", - 1: "ET_EMAIL_ADDRESS", - 2: "ET_MULTI_LINE_STRING", - 3: "ET_GCE_DISK_IMAGE", - 4: "ET_GCE_DISK_TYPE", - 5: "ET_GCE_DISK_SIZE", - 6: "ET_GCE_MACHINE_TYPE", - 7: "ET_GCE_NETWORK", - 8: "ET_GCE_ZONE", - 9: "ET_GCE_SUBNETWORK", - 10: "ET_GCE_REGION", - 11: "ET_GCE_GPU_TYPE", - 12: "ET_GCE_GPU_COUNT", - 13: "ET_GCE_EXTERNAL_IP", - 14: "ET_GCE_IP_FORWARDING", - 15: "ET_GCE_FIREWALL", - 16: "ET_GCE_FIREWALL_RANGE", - 17: "ET_GCE_GENERIC_RESOURCE", - 18: "ET_GCS_BUCKET", - 19: "ET_IAM_SERVICE_ACCOUNT", - } - ExtensionType_value = map[string]int32{ - "ET_UNDEFINED": 0, - "ET_EMAIL_ADDRESS": 1, - "ET_MULTI_LINE_STRING": 2, - "ET_GCE_DISK_IMAGE": 3, - "ET_GCE_DISK_TYPE": 4, - "ET_GCE_DISK_SIZE": 5, - "ET_GCE_MACHINE_TYPE": 6, - "ET_GCE_NETWORK": 7, - "ET_GCE_ZONE": 8, - "ET_GCE_SUBNETWORK": 9, - "ET_GCE_REGION": 10, - "ET_GCE_GPU_TYPE": 11, - "ET_GCE_GPU_COUNT": 12, - "ET_GCE_EXTERNAL_IP": 13, - "ET_GCE_IP_FORWARDING": 14, - "ET_GCE_FIREWALL": 15, - "ET_GCE_FIREWALL_RANGE": 16, - "ET_GCE_GENERIC_RESOURCE": 17, - "ET_GCS_BUCKET": 18, - "ET_IAM_SERVICE_ACCOUNT": 19, - } -) - -func (x ExtensionType) Enum() *ExtensionType { - p := new(ExtensionType) - *p = x - return p -} - -func (x ExtensionType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ExtensionType) Descriptor() protoreflect.EnumDescriptor { - return file_bpmetadata_ui_ext_proto_enumTypes[0].Descriptor() -} - -func (ExtensionType) Type() protoreflect.EnumType { - return &file_bpmetadata_ui_ext_proto_enumTypes[0] -} - -func (x ExtensionType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ExtensionType.Descriptor instead. -func (ExtensionType) EnumDescriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{0} -} - -// ExternalIPType specifies the type of external IP address. -type ExternalIPType int32 - -const ( - ExternalIPType_IP_UNSPECIFIED ExternalIPType = 0 - // EPHEMERAL indicates that the external IP address is ephemeral. - ExternalIPType_IP_EPHEMERAL ExternalIPType = 1 - // STATIC indicates that the external IP address is static. - ExternalIPType_IP_STATIC ExternalIPType = 2 - // NONE indicates that an external IP is not assigned. - ExternalIPType_IP_NONE ExternalIPType = 3 -) - -// Enum value maps for ExternalIPType. -var ( - ExternalIPType_name = map[int32]string{ - 0: "IP_UNSPECIFIED", - 1: "IP_EPHEMERAL", - 2: "IP_STATIC", - 3: "IP_NONE", - } - ExternalIPType_value = map[string]int32{ - "IP_UNSPECIFIED": 0, - "IP_EPHEMERAL": 1, - "IP_STATIC": 2, - "IP_NONE": 3, - } -) - -func (x ExternalIPType) Enum() *ExternalIPType { - p := new(ExternalIPType) - *p = x - return p -} - -func (x ExternalIPType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ExternalIPType) Descriptor() protoreflect.EnumDescriptor { - return file_bpmetadata_ui_ext_proto_enumTypes[1].Descriptor() -} - -func (ExternalIPType) Type() protoreflect.EnumType { - return &file_bpmetadata_ui_ext_proto_enumTypes[1] -} - -func (x ExternalIPType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ExternalIPType.Descriptor instead. -func (ExternalIPType) EnumDescriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{1} -} - -// 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 GooglePropertyExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Type specifies the type of extension. - // Gen: manually-authored - Type ExtensionType `protobuf:"varint,1,opt,name=type,proto3,enum=google.cloud.config.bpmetadata.ExtensionType" json:"type" yaml:"type"` // @gotags: json:"type" 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. - // Gen: manually-authored - ZoneProperty string `protobuf:"bytes,2,opt,name=zone_property,json=zoneProperty,proto3" json:"zoneProperty,omitempty" yaml:"zoneProperty,omitempty"` // @gotags: json:"zoneProperty,omitempty" yaml:"zoneProperty,omitempty" - // Property-specific extensions. - // Gen: manually-authored (all property extensions and their child properties) - GceMachineType *GCEMachineTypeExtension `protobuf:"bytes,3,opt,name=gce_machine_type,json=gceMachineType,proto3" json:"gceMachineType,omitempty" yaml:"gceMachineType,omitempty"` // @gotags: json:"gceMachineType,omitempty" yaml:"gceMachineType,omitempty" - GceDiskSize *GCEDiskSizeExtension `protobuf:"bytes,4,opt,name=gce_disk_size,json=gceDiskSize,proto3" json:"gceDiskSize,omitempty" yaml:"gceDiskSize,omitempty"` // @gotags: json:"gceDiskSize,omitempty" yaml:"gceDiskSize,omitempty" - GceSubnetwork *GCESubnetworkExtension `protobuf:"bytes,5,opt,name=gce_subnetwork,json=gceSubnetwork,proto3" json:"gceSubnetwork,omitempty" yaml:"gceSubnetwork,omitempty"` // @gotags: json:"gceSubnetwork,omitempty" yaml:"gceSubnetwork,omitempty" - GceResource *GCEGenericResourceExtension `protobuf:"bytes,6,opt,name=gce_resource,json=gceResource,proto3" json:"gceResource,omitempty" yaml:"gceResource,omitempty"` // @gotags: json:"gceResource,omitempty" yaml:"gceResource,omitempty" - GceGpuType *GCEGPUTypeExtension `protobuf:"bytes,7,opt,name=gce_gpu_type,json=gceGpuType,proto3" json:"gceGpuType,omitempty" yaml:"gceGpuType,omitempty"` // @gotags: json:"gceGpuType,omitempty" yaml:"gceGpuType,omitempty" - GceGpuCount *GCEGPUCountExtension `protobuf:"bytes,8,opt,name=gce_gpu_count,json=gceGpuCount,proto3" json:"gceGpuCount,omitempty" yaml:"gceGpuCount,omitempty"` // @gotags: json:"gceGpuCount,omitempty" yaml:"gceGpuCount,omitempty" - GceNetwork *GCENetworkExtension `protobuf:"bytes,9,opt,name=gce_network,json=gceNetwork,proto3" json:"gceNetwork,omitempty" yaml:"gceNetwork,omitempty"` // @gotags: json:"gceNetwork,omitempty" yaml:"gceNetwork,omitempty" - GceExternalIp *GCEExternalIPExtension `protobuf:"bytes,10,opt,name=gce_external_ip,json=gceExternalIp,proto3" json:"gceExternalIp,omitempty" yaml:"gceExternalIp,omitempty"` // @gotags: json:"gceExternalIp,omitempty" yaml:"gceExternalIp,omitempty" - GceIpForwarding *GCEIPForwardingExtension `protobuf:"bytes,11,opt,name=gce_ip_forwarding,json=gceIpForwarding,proto3" json:"gceIpForwarding,omitempty" yaml:"gceIpForwarding,omitempty"` // @gotags: json:"gceIpForwarding,omitempty" yaml:"gceIpForwarding,omitempty" - GceFirewall *GCEFirewallExtension `protobuf:"bytes,12,opt,name=gce_firewall,json=gceFirewall,proto3" json:"gceFirewall,omitempty" yaml:"gceFirewall,omitempty"` // @gotags: json:"gceFirewall,omitempty" yaml:"gceFirewall,omitempty" - GceFirewallRange *GCEFirewallRangeExtension `protobuf:"bytes,13,opt,name=gce_firewall_range,json=gceFirewallRange,proto3" json:"gceFirewallRange,omitempty" yaml:"gceFirewallRange,omitempty"` // @gotags: json:"gceFirewallRange,omitempty" yaml:"gceFirewallRange,omitempty" - GceZone *GCELocationExtension `protobuf:"bytes,14,opt,name=gce_zone,json=gceZone,proto3" json:"gceZone,omitempty" yaml:"gceZone,omitempty"` // @gotags: json:"gceZone,omitempty" yaml:"gceZone,omitempty" - GceRegion *GCELocationExtension `protobuf:"bytes,15,opt,name=gce_region,json=gceRegion,proto3" json:"gceRegion,omitempty" yaml:"gceRegion,omitempty"` // @gotags: json:"gceRegion,omitempty" yaml:"gceRegion,omitempty" - IamServiceAccount *IAMServiceAccountExtension `protobuf:"bytes,16,opt,name=iam_service_account,json=iamServiceAccount,proto3" json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty"` // @gotags: json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty" -} - -func (x *GooglePropertyExtension) Reset() { - *x = GooglePropertyExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GooglePropertyExtension) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GooglePropertyExtension) ProtoMessage() {} - -func (x *GooglePropertyExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GooglePropertyExtension.ProtoReflect.Descriptor instead. -func (*GooglePropertyExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{0} -} - -func (x *GooglePropertyExtension) GetType() ExtensionType { - if x != nil { - return x.Type - } - return ExtensionType_ET_UNDEFINED -} - -func (x *GooglePropertyExtension) GetZoneProperty() string { - if x != nil { - return x.ZoneProperty - } - return "" -} - -func (x *GooglePropertyExtension) GetGceMachineType() *GCEMachineTypeExtension { - if x != nil { - return x.GceMachineType - } - return nil -} - -func (x *GooglePropertyExtension) GetGceDiskSize() *GCEDiskSizeExtension { - if x != nil { - return x.GceDiskSize - } - return nil -} - -func (x *GooglePropertyExtension) GetGceSubnetwork() *GCESubnetworkExtension { - if x != nil { - return x.GceSubnetwork - } - return nil -} - -func (x *GooglePropertyExtension) GetGceResource() *GCEGenericResourceExtension { - if x != nil { - return x.GceResource - } - return nil -} - -func (x *GooglePropertyExtension) GetGceGpuType() *GCEGPUTypeExtension { - if x != nil { - return x.GceGpuType - } - return nil -} - -func (x *GooglePropertyExtension) GetGceGpuCount() *GCEGPUCountExtension { - if x != nil { - return x.GceGpuCount - } - return nil -} - -func (x *GooglePropertyExtension) GetGceNetwork() *GCENetworkExtension { - if x != nil { - return x.GceNetwork - } - return nil -} - -func (x *GooglePropertyExtension) GetGceExternalIp() *GCEExternalIPExtension { - if x != nil { - return x.GceExternalIp - } - return nil -} - -func (x *GooglePropertyExtension) GetGceIpForwarding() *GCEIPForwardingExtension { - if x != nil { - return x.GceIpForwarding - } - return nil -} - -func (x *GooglePropertyExtension) GetGceFirewall() *GCEFirewallExtension { - if x != nil { - return x.GceFirewall - } - return nil -} - -func (x *GooglePropertyExtension) GetGceFirewallRange() *GCEFirewallRangeExtension { - if x != nil { - return x.GceFirewallRange - } - return nil -} - -func (x *GooglePropertyExtension) GetGceZone() *GCELocationExtension { - if x != nil { - return x.GceZone - } - return nil -} - -func (x *GooglePropertyExtension) GetGceRegion() *GCELocationExtension { - if x != nil { - return x.GceRegion - } - return nil -} - -func (x *GooglePropertyExtension) GetIamServiceAccount() *IAMServiceAccountExtension { - if x != nil { - return x.IamServiceAccount - } - return nil -} - -// GCELocationExtension specifies a location extension for a Google Compute Engine (GCE) resource. -type GCELocationExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // AllowlistedZones is a list of zones that are allowed for the resource. - AllowlistedZones []string `protobuf:"bytes,1,rep,name=allowlisted_zones,json=allowlistedZones,proto3" json:"allowlistedZones,omitempty" yaml:"allowlistedZones,omitempty"` // @gotags: json:"allowlistedZones,omitempty" yaml:"allowlistedZones,omitempty" - // AllowlistedRegions is a list of regions that are allowed for the resource. - AllowlistedRegions []string `protobuf:"bytes,2,rep,name=allowlisted_regions,json=allowlistedRegions,proto3" json:"allowlistedRegions,omitempty" yaml:"allowlistedRegions,omitempty"` // @gotags: json:"allowlistedRegions,omitempty" yaml:"allowlistedRegions,omitempty" -} - -func (x *GCELocationExtension) Reset() { - *x = GCELocationExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GCELocationExtension) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GCELocationExtension) ProtoMessage() {} - -func (x *GCELocationExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GCELocationExtension.ProtoReflect.Descriptor instead. -func (*GCELocationExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{1} -} - -func (x *GCELocationExtension) GetAllowlistedZones() []string { - if x != nil { - return x.AllowlistedZones - } - return nil -} - -func (x *GCELocationExtension) GetAllowlistedRegions() []string { - if x != nil { - return x.AllowlistedRegions - } - return nil -} - -// GCEMachineTypeExtension specifies a machine type extension for a GCE resource. -type GCEMachineTypeExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Minimum cpu. Used to filter the list of selectable machine types. - MinCpu int32 `protobuf:"varint,1,opt,name=min_cpu,json=minCpu,proto3" json:"minCpu,omitempty" yaml:"minCpu,omitempty"` // @gotags: json:"minCpu,omitempty" yaml:"minCpu,omitempty" - // Minimum ram. Used to filter the list of selectable machine types. - MinRamGb float32 `protobuf:"fixed32,2,opt,name=min_ram_gb,json=minRamGb,proto3" json:"minRamGb,omitempty" yaml:"minRamGb,omitempty"` // @gotags: 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 `protobuf:"varint,3,opt,name=disallow_custom_machine_types,json=disallowCustomMachineTypes,proto3" json:"disallowCustomMachineTypes,omitempty" yaml:"disallowCustomMachineTypes,omitempty"` // @gotags: json:"disallowCustomMachineTypes,omitempty" yaml:"disallowCustomMachineTypes,omitempty" -} - -func (x *GCEMachineTypeExtension) Reset() { - *x = GCEMachineTypeExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GCEMachineTypeExtension) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GCEMachineTypeExtension) ProtoMessage() {} - -func (x *GCEMachineTypeExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GCEMachineTypeExtension.ProtoReflect.Descriptor instead. -func (*GCEMachineTypeExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{2} -} - -func (x *GCEMachineTypeExtension) GetMinCpu() int32 { - if x != nil { - return x.MinCpu - } - return 0 -} - -func (x *GCEMachineTypeExtension) GetMinRamGb() float32 { - if x != nil { - return x.MinRamGb - } - return 0 -} - -func (x *GCEMachineTypeExtension) GetDisallowCustomMachineTypes() bool { - if x != nil { - return x.DisallowCustomMachineTypes - } - return false -} - -// GCEGPUTypeExtension specifies a GPU type extension for a GCE resource. -type GCEGPUTypeExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // MachineType is the name of the machine type that the GPU is attached to. - MachineType string `protobuf:"bytes,1,opt,name=machine_type,json=machineType,proto3" json:"machineType" yaml:"machineType"` // @gotags: json:"machineType" yaml:"machineType" - // GPUType is the type(s) of GPU that is attached to the machine. - GpuType []string `protobuf:"bytes,2,rep,name=gpu_type,json=gpuType,proto3" json:"gpuType,omitempty" yaml:"gpuType,omitempty"` // @gotags: json:"gpuType,omitempty" yaml:"gpuType,omitempty" -} - -func (x *GCEGPUTypeExtension) Reset() { - *x = GCEGPUTypeExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GCEGPUTypeExtension) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GCEGPUTypeExtension) ProtoMessage() {} - -func (x *GCEGPUTypeExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GCEGPUTypeExtension.ProtoReflect.Descriptor instead. -func (*GCEGPUTypeExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{3} -} - -func (x *GCEGPUTypeExtension) GetMachineType() string { - if x != nil { - return x.MachineType - } - return "" -} - -func (x *GCEGPUTypeExtension) GetGpuType() []string { - if x != nil { - return x.GpuType - } - return nil -} - -// GCEGPUCountExtension specifies the number of GPUs that should be attached to a machine. -type GCEGPUCountExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // This field references another variable from the schema, - // which must have type GCEMachineType. - MachineTypeVariable string `protobuf:"bytes,1,opt,name=machine_type_variable,json=machineTypeVariable,proto3" json:"machineTypeVariable" yaml:"machineTypeVariable"` // @gotags: json:"machineTypeVariable" yaml:"machineTypeVariable" -} - -func (x *GCEGPUCountExtension) Reset() { - *x = GCEGPUCountExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GCEGPUCountExtension) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GCEGPUCountExtension) ProtoMessage() {} - -func (x *GCEGPUCountExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GCEGPUCountExtension.ProtoReflect.Descriptor instead. -func (*GCEGPUCountExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{4} -} - -func (x *GCEGPUCountExtension) GetMachineTypeVariable() string { - if x != nil { - return x.MachineTypeVariable - } - return "" -} - -// GCEDiskSizeExtension specifies the size of a disk for a GCE resource. -type GCEDiskSizeExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // 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 `protobuf:"bytes,1,opt,name=disk_type_variable,json=diskTypeVariable,proto3" json:"diskTypeVariable" yaml:"diskTypeVariable"` // @gotags: json:"diskTypeVariable" yaml:"diskTypeVariable" -} - -func (x *GCEDiskSizeExtension) Reset() { - *x = GCEDiskSizeExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GCEDiskSizeExtension) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GCEDiskSizeExtension) ProtoMessage() {} - -func (x *GCEDiskSizeExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GCEDiskSizeExtension.ProtoReflect.Descriptor instead. -func (*GCEDiskSizeExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{5} -} - -func (x *GCEDiskSizeExtension) GetDiskTypeVariable() string { - if x != nil { - return x.DiskTypeVariable - } - return "" -} - -// GCENetworkExtension specifies a network extension for a GCE resource. -type GCENetworkExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // AllowSharedVpcs indicates this solution can receive - // shared VPC selflinks (fully qualified compute links). - AllowSharedVpcs bool `protobuf:"varint,1,opt,name=allow_shared_vpcs,json=allowSharedVpcs,proto3" json:"allowSharedVpcs,omitempty" yaml:"allowSharedVpcs,omitempty"` // @gotags: json:"allowSharedVpcs,omitempty" yaml:"allowSharedVpcs,omitempty" - // Used to indicate to which machine type this network interface will be - // attached to. - MachineTypeVariable string `protobuf:"bytes,2,opt,name=machine_type_variable,json=machineTypeVariable,proto3" json:"machineTypeVariable" yaml:"machineTypeVariable"` // @gotags: json:"machineTypeVariable" yaml:"machineTypeVariable" - // Label that will be in front of each Network Interface. - Labels []string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" yaml:"labels,omitempty"` // @gotags: json:"labels,omitempty" yaml:"labels,omitempty" -} - -func (x *GCENetworkExtension) Reset() { - *x = GCENetworkExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GCENetworkExtension) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GCENetworkExtension) ProtoMessage() {} - -func (x *GCENetworkExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GCENetworkExtension.ProtoReflect.Descriptor instead. -func (*GCENetworkExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{6} -} - -func (x *GCENetworkExtension) GetAllowSharedVpcs() bool { - if x != nil { - return x.AllowSharedVpcs - } - return false -} - -func (x *GCENetworkExtension) GetMachineTypeVariable() string { - if x != nil { - return x.MachineTypeVariable - } - return "" -} - -func (x *GCENetworkExtension) GetLabels() []string { - if x != nil { - return x.Labels - } - return nil -} - -type GCEExternalIPExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // NetworkVariable is the name of the network variable that the external IP address belongs to. - NetworkVariable string `protobuf:"bytes,1,opt,name=network_variable,json=networkVariable,proto3" json:"networkVariable" yaml:"networkVariable"` // @gotags: json:"networkVariable" yaml:"networkVariable" - // Type specifies the type of external IP address. Defaults to EPHEMERAL if not specified. - Type ExternalIPType `protobuf:"varint,2,opt,name=type,proto3,enum=google.cloud.config.bpmetadata.ExternalIPType" json:"type,omitempty" yaml:"type,omitempty"` // @gotags: json:"type,omitempty" yaml:"type,omitempty" - // Flag to denote if an external IP should be configurable. - NotConfigurable bool `protobuf:"varint,3,opt,name=not_configurable,json=notConfigurable,proto3" json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty"` // @gotags: json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty" - // Flag to denote if static IPs are allowed for the external IP. - AllowStaticIps bool `protobuf:"varint,4,opt,name=allow_static_ips,json=allowStaticIps,proto3" json:"allowStaticIPs,omitempty" yaml:"allowStaticIPs,omitempty"` // @gotags: json:"allowStaticIPs,omitempty" yaml:"allowStaticIPs,omitempty" -} - -func (x *GCEExternalIPExtension) Reset() { - *x = GCEExternalIPExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GCEExternalIPExtension) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GCEExternalIPExtension) ProtoMessage() {} - -func (x *GCEExternalIPExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GCEExternalIPExtension.ProtoReflect.Descriptor instead. -func (*GCEExternalIPExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{7} -} - -func (x *GCEExternalIPExtension) GetNetworkVariable() string { - if x != nil { - return x.NetworkVariable - } - return "" -} - -func (x *GCEExternalIPExtension) GetType() ExternalIPType { - if x != nil { - return x.Type - } - return ExternalIPType_IP_UNSPECIFIED -} - -func (x *GCEExternalIPExtension) GetNotConfigurable() bool { - if x != nil { - return x.NotConfigurable - } - return false -} - -func (x *GCEExternalIPExtension) GetAllowStaticIps() bool { - if x != nil { - return x.AllowStaticIps - } - return false -} - -// GCEIPForwardingExtension specifies an IP forwarding extension for a GCE resource. -type GCEIPForwardingExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // NetworkVariable is the name of the network variable that the IP forwarding belongs to. - NetworkVariable string `protobuf:"bytes,1,opt,name=network_variable,json=networkVariable,proto3" json:"networkVariable" yaml:"networkVariable"` // @gotags: json:"networkVariable" yaml:"networkVariable" - // NotConfigurable specifies whether the IP forwarding is configurable. Defaults to false if not specified. - NotConfigurable bool `protobuf:"varint,2,opt,name=not_configurable,json=notConfigurable,proto3" json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty"` // @gotags: json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty" -} - -func (x *GCEIPForwardingExtension) Reset() { - *x = GCEIPForwardingExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GCEIPForwardingExtension) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GCEIPForwardingExtension) ProtoMessage() {} - -func (x *GCEIPForwardingExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GCEIPForwardingExtension.ProtoReflect.Descriptor instead. -func (*GCEIPForwardingExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{8} -} - -func (x *GCEIPForwardingExtension) GetNetworkVariable() string { - if x != nil { - return x.NetworkVariable - } - return "" -} - -func (x *GCEIPForwardingExtension) GetNotConfigurable() bool { - if x != nil { - return x.NotConfigurable - } - return false -} - -type GCEFirewallExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // NetworkVariable is used to indicate the network variable in the schema - // this external IP belongs to. - NetworkVariable string `protobuf:"bytes,1,opt,name=network_variable,json=networkVariable,proto3" json:"networkVariable" yaml:"networkVariable"` // @gotags: json:"networkVariable" yaml:"networkVariable" -} - -func (x *GCEFirewallExtension) Reset() { - *x = GCEFirewallExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GCEFirewallExtension) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GCEFirewallExtension) ProtoMessage() {} - -func (x *GCEFirewallExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GCEFirewallExtension.ProtoReflect.Descriptor instead. -func (*GCEFirewallExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{9} -} - -func (x *GCEFirewallExtension) GetNetworkVariable() string { - if x != nil { - return x.NetworkVariable - } - return "" -} - -type GCEFirewallRangeExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // FirewallVariable is used to indicate the firewall variable with the type - // GCEFirewall in the schema to which this firewall range belongs to. - FirewallVariable string `protobuf:"bytes,1,opt,name=firewall_variable,json=firewallVariable,proto3" json:"firewallVariable" yaml:"firewallVariable"` // @gotags: json:"firewallVariable" yaml:"firewallVariable" -} - -func (x *GCEFirewallRangeExtension) Reset() { - *x = GCEFirewallRangeExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GCEFirewallRangeExtension) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GCEFirewallRangeExtension) ProtoMessage() {} - -func (x *GCEFirewallRangeExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GCEFirewallRangeExtension.ProtoReflect.Descriptor instead. -func (*GCEFirewallRangeExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{10} -} - -func (x *GCEFirewallRangeExtension) GetFirewallVariable() string { - if x != nil { - return x.FirewallVariable - } - return "" -} - -type GCESubnetworkExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // 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 `protobuf:"bytes,1,opt,name=network_variable,json=networkVariable,proto3" json:"networkVariable" yaml:"networkVariable"` // @gotags: json:"networkVariable" yaml:"networkVariable" -} - -func (x *GCESubnetworkExtension) Reset() { - *x = GCESubnetworkExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GCESubnetworkExtension) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GCESubnetworkExtension) ProtoMessage() {} - -func (x *GCESubnetworkExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GCESubnetworkExtension.ProtoReflect.Descriptor instead. -func (*GCESubnetworkExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{11} -} - -func (x *GCESubnetworkExtension) GetNetworkVariable() string { - if x != nil { - return x.NetworkVariable - } - return "" -} - -type GCEGenericResourceExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // GCE resource type to be fetched. This field references another - // property from the schema, which must have type GCEGenericResource. - ResourceVariable string `protobuf:"bytes,1,opt,name=resource_variable,json=resourceVariable,proto3" json:"resourceVariable" yaml:"resourceVariable"` // @gotags: json:"resourceVariable" yaml:"resourceVariable" -} - -func (x *GCEGenericResourceExtension) Reset() { - *x = GCEGenericResourceExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GCEGenericResourceExtension) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GCEGenericResourceExtension) ProtoMessage() {} - -func (x *GCEGenericResourceExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GCEGenericResourceExtension.ProtoReflect.Descriptor instead. -func (*GCEGenericResourceExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{12} -} - -func (x *GCEGenericResourceExtension) GetResourceVariable() string { - if x != nil { - return x.ResourceVariable - } - return "" -} - -type IAMServiceAccountExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // List of IAM roles that to grant to a new SA, or the roles to filter - // existing SAs with. - Roles []string `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles" yaml:"roles"` // @gotags: json:"roles" yaml:"roles" -} - -func (x *IAMServiceAccountExtension) Reset() { - *x = IAMServiceAccountExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *IAMServiceAccountExtension) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*IAMServiceAccountExtension) ProtoMessage() {} - -func (x *IAMServiceAccountExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use IAMServiceAccountExtension.ProtoReflect.Descriptor instead. -func (*IAMServiceAccountExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{13} -} - -func (x *IAMServiceAccountExtension) GetRoles() []string { - if x != nil { - return x.Roles - } - return nil -} - -var File_bpmetadata_ui_ext_proto protoreflect.FileDescriptor - -var file_bpmetadata_ui_ext_proto_rawDesc = []byte{ - 0x0a, 0x17, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x69, 0x5f, - 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, - 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x9e, 0x0b, 0x0a, 0x17, 0x47, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x7a, 0x6f, 0x6e, 0x65, - 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x7a, 0x6f, 0x6e, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x61, 0x0a, - 0x10, 0x67, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x4d, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x0e, 0x67, 0x63, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x58, 0x0a, 0x0d, 0x67, 0x63, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x44, 0x69, 0x73, 0x6b, - 0x53, 0x69, 0x7a, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, - 0x63, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x5d, 0x0a, 0x0e, 0x67, 0x63, - 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x67, 0x63, 0x65, 0x53, - 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x5e, 0x0a, 0x0c, 0x67, 0x63, 0x65, - 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x47, 0x43, 0x45, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, 0x63, - 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x0c, 0x67, 0x63, 0x65, - 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x67, 0x63, 0x65, 0x47, 0x70, 0x75, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x58, 0x0a, 0x0d, 0x67, 0x63, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, - 0x63, 0x65, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x54, 0x0a, 0x0b, 0x67, 0x63, - 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x47, 0x43, 0x45, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x67, 0x63, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x12, 0x5e, 0x0a, 0x0f, 0x67, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x5f, 0x69, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x45, 0x78, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x0d, 0x67, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x70, - 0x12, 0x64, 0x0a, 0x11, 0x67, 0x63, 0x65, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, - 0x49, 0x50, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x67, 0x63, 0x65, 0x49, 0x70, 0x46, 0x6f, 0x72, 0x77, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x0c, 0x67, 0x63, 0x65, 0x5f, 0x66, 0x69, - 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, - 0x45, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x0b, 0x67, 0x63, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x12, - 0x67, 0x0a, 0x12, 0x67, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, - 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, - 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x67, 0x63, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, - 0x61, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x4f, 0x0a, 0x08, 0x67, 0x63, 0x65, 0x5f, - 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x07, 0x67, 0x63, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x53, 0x0a, 0x0a, 0x67, 0x63, 0x65, - 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, - 0x43, 0x45, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x67, 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x6a, - 0x0a, 0x13, 0x69, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x41, 0x4d, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x69, 0x61, 0x6d, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x74, 0x0a, 0x14, 0x47, 0x43, - 0x45, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, - 0x64, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5a, 0x6f, 0x6e, 0x65, 0x73, 0x12, - 0x2f, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x72, - 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0x93, 0x01, 0x0a, 0x17, 0x47, 0x43, 0x45, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, - 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, - 0x69, 0x6e, 0x43, 0x70, 0x75, 0x12, 0x1c, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x61, 0x6d, - 0x5f, 0x67, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x52, 0x61, - 0x6d, 0x47, 0x62, 0x12, 0x41, 0x0a, 0x1d, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x64, 0x69, 0x73, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x53, 0x0a, 0x13, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, - 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, - 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x19, 0x0a, 0x08, 0x67, 0x70, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x07, 0x67, 0x70, 0x75, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4a, 0x0a, 0x14, 0x47, - 0x43, 0x45, 0x47, 0x50, 0x55, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x44, 0x0a, 0x14, 0x47, 0x43, 0x45, 0x44, 0x69, - 0x73, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x2c, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x69, 0x73, - 0x6b, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x8d, 0x01, - 0x0a, 0x13, 0x47, 0x43, 0x45, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x76, 0x70, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x56, 0x70, 0x63, - 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0xdc, 0x01, - 0x0a, 0x16, 0x47, 0x43, 0x45, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x74, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, - 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x63, 0x5f, 0x69, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x49, 0x70, 0x73, 0x22, 0x70, 0x0a, 0x18, - 0x47, 0x43, 0x45, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, - 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x41, - 0x0a, 0x14, 0x47, 0x43, 0x45, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x22, 0x48, 0x0a, 0x19, 0x47, 0x43, 0x45, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, - 0x0a, 0x11, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x66, 0x69, 0x72, 0x65, 0x77, - 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x43, 0x0a, 0x16, 0x47, - 0x43, 0x45, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x22, 0x4a, 0x0a, 0x1b, 0x47, 0x43, 0x45, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x32, 0x0a, 0x1a, - 0x49, 0x41, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, - 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, - 0x2a, 0xd5, 0x03, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x54, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, - 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x54, - 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, - 0x4e, 0x47, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, - 0x49, 0x53, 0x4b, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x45, - 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, - 0x04, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, - 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x54, 0x5f, 0x47, 0x43, - 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x06, - 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, - 0x52, 0x4b, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x5a, - 0x4f, 0x4e, 0x45, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, - 0x53, 0x55, 0x42, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, - 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, - 0x13, 0x0a, 0x0f, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, 0x50, 0x55, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x10, 0x0b, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, - 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x54, - 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x49, 0x50, - 0x10, 0x0d, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x5f, - 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, - 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x46, 0x49, 0x52, 0x45, 0x57, 0x41, 0x4c, 0x4c, 0x10, - 0x0f, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x46, 0x49, 0x52, 0x45, - 0x57, 0x41, 0x4c, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x10, 0x12, 0x1b, 0x0a, 0x17, - 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x52, - 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x54, 0x5f, - 0x47, 0x43, 0x53, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x12, 0x12, 0x1a, 0x0a, 0x16, - 0x45, 0x54, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, - 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x13, 0x2a, 0x52, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x50, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, - 0x0a, 0x0c, 0x49, 0x50, 0x5f, 0x45, 0x50, 0x48, 0x45, 0x4d, 0x45, 0x52, 0x41, 0x4c, 0x10, 0x01, - 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x02, 0x12, - 0x0b, 0x0a, 0x07, 0x49, 0x50, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x42, 0x48, 0x5a, 0x46, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, - 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_bpmetadata_ui_ext_proto_rawDescOnce sync.Once - file_bpmetadata_ui_ext_proto_rawDescData = file_bpmetadata_ui_ext_proto_rawDesc -) - -func file_bpmetadata_ui_ext_proto_rawDescGZIP() []byte { - file_bpmetadata_ui_ext_proto_rawDescOnce.Do(func() { - file_bpmetadata_ui_ext_proto_rawDescData = protoimpl.X.CompressGZIP(file_bpmetadata_ui_ext_proto_rawDescData) - }) - return file_bpmetadata_ui_ext_proto_rawDescData -} - -var file_bpmetadata_ui_ext_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_bpmetadata_ui_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 14) -var file_bpmetadata_ui_ext_proto_goTypes = []interface{}{ - (ExtensionType)(0), // 0: google.cloud.config.bpmetadata.ExtensionType - (ExternalIPType)(0), // 1: google.cloud.config.bpmetadata.ExternalIPType - (*GooglePropertyExtension)(nil), // 2: google.cloud.config.bpmetadata.GooglePropertyExtension - (*GCELocationExtension)(nil), // 3: google.cloud.config.bpmetadata.GCELocationExtension - (*GCEMachineTypeExtension)(nil), // 4: google.cloud.config.bpmetadata.GCEMachineTypeExtension - (*GCEGPUTypeExtension)(nil), // 5: google.cloud.config.bpmetadata.GCEGPUTypeExtension - (*GCEGPUCountExtension)(nil), // 6: google.cloud.config.bpmetadata.GCEGPUCountExtension - (*GCEDiskSizeExtension)(nil), // 7: google.cloud.config.bpmetadata.GCEDiskSizeExtension - (*GCENetworkExtension)(nil), // 8: google.cloud.config.bpmetadata.GCENetworkExtension - (*GCEExternalIPExtension)(nil), // 9: google.cloud.config.bpmetadata.GCEExternalIPExtension - (*GCEIPForwardingExtension)(nil), // 10: google.cloud.config.bpmetadata.GCEIPForwardingExtension - (*GCEFirewallExtension)(nil), // 11: google.cloud.config.bpmetadata.GCEFirewallExtension - (*GCEFirewallRangeExtension)(nil), // 12: google.cloud.config.bpmetadata.GCEFirewallRangeExtension - (*GCESubnetworkExtension)(nil), // 13: google.cloud.config.bpmetadata.GCESubnetworkExtension - (*GCEGenericResourceExtension)(nil), // 14: google.cloud.config.bpmetadata.GCEGenericResourceExtension - (*IAMServiceAccountExtension)(nil), // 15: google.cloud.config.bpmetadata.IAMServiceAccountExtension -} -var file_bpmetadata_ui_ext_proto_depIdxs = []int32{ - 0, // 0: google.cloud.config.bpmetadata.GooglePropertyExtension.type:type_name -> google.cloud.config.bpmetadata.ExtensionType - 4, // 1: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_machine_type:type_name -> google.cloud.config.bpmetadata.GCEMachineTypeExtension - 7, // 2: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_disk_size:type_name -> google.cloud.config.bpmetadata.GCEDiskSizeExtension - 13, // 3: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_subnetwork:type_name -> google.cloud.config.bpmetadata.GCESubnetworkExtension - 14, // 4: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_resource:type_name -> google.cloud.config.bpmetadata.GCEGenericResourceExtension - 5, // 5: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_gpu_type:type_name -> google.cloud.config.bpmetadata.GCEGPUTypeExtension - 6, // 6: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_gpu_count:type_name -> google.cloud.config.bpmetadata.GCEGPUCountExtension - 8, // 7: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_network:type_name -> google.cloud.config.bpmetadata.GCENetworkExtension - 9, // 8: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_external_ip:type_name -> google.cloud.config.bpmetadata.GCEExternalIPExtension - 10, // 9: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_ip_forwarding:type_name -> google.cloud.config.bpmetadata.GCEIPForwardingExtension - 11, // 10: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_firewall:type_name -> google.cloud.config.bpmetadata.GCEFirewallExtension - 12, // 11: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_firewall_range:type_name -> google.cloud.config.bpmetadata.GCEFirewallRangeExtension - 3, // 12: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_zone:type_name -> google.cloud.config.bpmetadata.GCELocationExtension - 3, // 13: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_region:type_name -> google.cloud.config.bpmetadata.GCELocationExtension - 15, // 14: google.cloud.config.bpmetadata.GooglePropertyExtension.iam_service_account:type_name -> google.cloud.config.bpmetadata.IAMServiceAccountExtension - 1, // 15: google.cloud.config.bpmetadata.GCEExternalIPExtension.type:type_name -> google.cloud.config.bpmetadata.ExternalIPType - 16, // [16:16] is the sub-list for method output_type - 16, // [16:16] is the sub-list for method input_type - 16, // [16:16] is the sub-list for extension type_name - 16, // [16:16] is the sub-list for extension extendee - 0, // [0:16] is the sub-list for field type_name -} - -func init() { file_bpmetadata_ui_ext_proto_init() } -func file_bpmetadata_ui_ext_proto_init() { - if File_bpmetadata_ui_ext_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_bpmetadata_ui_ext_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GooglePropertyExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_ext_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCELocationExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_ext_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCEMachineTypeExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_ext_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCEGPUTypeExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_ext_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCEGPUCountExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_ext_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCEDiskSizeExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_ext_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCENetworkExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_ext_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCEExternalIPExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_ext_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCEIPForwardingExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_ext_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCEFirewallExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_ext_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCEFirewallRangeExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_ext_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCESubnetworkExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_ext_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCEGenericResourceExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_bpmetadata_ui_ext_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IAMServiceAccountExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_bpmetadata_ui_ext_proto_rawDesc, - NumEnums: 2, - NumMessages: 14, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_bpmetadata_ui_ext_proto_goTypes, - DependencyIndexes: file_bpmetadata_ui_ext_proto_depIdxs, - EnumInfos: file_bpmetadata_ui_ext_proto_enumTypes, - MessageInfos: file_bpmetadata_ui_ext_proto_msgTypes, - }.Build() - File_bpmetadata_ui_ext_proto = out.File - file_bpmetadata_ui_ext_proto_rawDesc = nil - file_bpmetadata_ui_ext_proto_goTypes = nil - file_bpmetadata_ui_ext_proto_depIdxs = nil -} diff --git a/cli/bpmetadata/int-test/goldens/golden-metadata.yaml b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml index 7dfca2a9eb4..9f257bec7c4 100644 --- a/cli/bpmetadata/int-test/goldens/golden-metadata.yaml +++ b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml @@ -29,79 +29,79 @@ spec: - name: admins description: IAM-style members who will be granted roles/storage.objectAdmin on all buckets. varType: list(string) - defaultValue: "[]" + defaultValue: [] - name: bucket_admins description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket admins. varType: map(string) - defaultValue: map[] + defaultValue: {} - name: bucket_creators description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket creators. varType: map(string) - defaultValue: map[] + defaultValue: {} - name: bucket_hmac_key_admins description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket HMAC Key admins. varType: map(string) - defaultValue: map[] + defaultValue: {} - name: bucket_lifecycle_rules description: Additional lifecycle_rules for specific buckets. Map of lowercase unprefixed name => list of lifecycle rules to configure. varType: "map(set(object({\n # Object with keys:\n # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass.\n # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule.\n action = map(string)\n\n # Object with keys:\n # - age - (Optional) Minimum age of an object in days to satisfy this condition.\n # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition.\n # - with_state - (Optional) Match to live and/or archived objects. Supported values include: \"LIVE\", \"ARCHIVED\", \"ANY\".\n # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY.\n # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition.\n # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition.\n # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true.\n # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object.\n # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent.\n condition = map(string)\n })))" - defaultValue: map[] + defaultValue: {} - name: bucket_policy_only description: Disable ad-hoc ACLs on specified buckets. Defaults to true. Map of lowercase unprefixed name => boolean varType: map(bool) - defaultValue: map[] + defaultValue: {} - name: bucket_storage_admins description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket storage admins. varType: map(string) - defaultValue: map[] + defaultValue: {} - name: bucket_viewers description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket viewers. varType: map(string) - defaultValue: map[] + defaultValue: {} - name: cors description: "Set of maps of mixed type attributes for CORS values. See appropriate attribute types here: https://www.terraform.io/docs/providers/google/r/storage_bucket.html#cors" varType: set(any) - defaultValue: "[]" + defaultValue: [] - name: creators description: IAM-style members who will be granted roles/storage.objectCreators on all buckets. varType: list(string) - defaultValue: "[]" + defaultValue: [] - name: custom_placement_config description: "Map of lowercase unprefixed name => custom placement config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#custom_placement_config" varType: any - defaultValue: map[] + defaultValue: {} - name: default_event_based_hold description: Enable event based hold to new objects added to specific bucket. Defaults to false. Map of lowercase unprefixed name => boolean varType: map(bool) - defaultValue: map[] + defaultValue: {} - name: encryption_key_names description: Optional map of lowercase unprefixed name => string, empty strings are ignored. varType: map(string) - defaultValue: map[] + defaultValue: {} - name: folders description: Map of lowercase unprefixed name => list of top level folder objects. varType: map(list(string)) - defaultValue: map[] + defaultValue: {} - name: force_destroy description: Optional map of lowercase unprefixed name => boolean, defaults to false. varType: map(bool) - defaultValue: map[] + defaultValue: {} - name: hmac_key_admins description: IAM-style members who will be granted roles/storage.hmacKeyAdmin on all buckets. varType: list(string) - defaultValue: "[]" + defaultValue: [] - name: hmac_service_accounts description: List of HMAC service accounts to grant access to GCS. varType: map(string) - defaultValue: map[] + defaultValue: {} - name: labels description: Labels to be attached to the buckets varType: map(string) - defaultValue: map[] + defaultValue: {} - name: lifecycle_rules description: "List of lifecycle rules to configure. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#lifecycle_rule except condition.matches_storage_class should be a comma delimited string." varType: "set(object({\n # Object with keys:\n # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass.\n # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule.\n action = map(string)\n\n # Object with keys:\n # - age - (Optional) Minimum age of an object in days to satisfy this condition.\n # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition.\n # - with_state - (Optional) Match to live and/or archived objects. Supported values include: \"LIVE\", \"ARCHIVED\", \"ANY\".\n # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY.\n # - matches_prefix - (Optional) One or more matching name prefixes to satisfy this condition.\n # - matches_suffix - (Optional) One or more matching name suffixes to satisfy this condition.\n # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition.\n # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition.\n # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true.\n # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object.\n # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent.\n condition = map(string)\n }))" - defaultValue: "[]" + defaultValue: [] - name: location description: Bucket location. varType: string @@ -109,17 +109,20 @@ spec: - name: logging description: "Map of lowercase unprefixed name => bucket logging config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#logging" varType: any - defaultValue: map[] + defaultValue: {} - name: names description: Bucket name suffixes. varType: list(string) + defaultValue: null required: true - name: prefix description: Prefix used to generate the bucket name. varType: string + defaultValue: "" - name: project_id description: Bucket project id. varType: string + defaultValue: null required: true - name: public_access_prevention description: Prevents public access to a bucket. Acceptable values are inherited or enforced. If inherited, the bucket uses public access prevention, only if the bucket is subject to the public access prevention organization policy constraint. @@ -128,39 +131,39 @@ spec: - name: randomize_suffix description: Adds an identical, but randomized 4-character suffix to all bucket names varType: bool - defaultValue: "false" + defaultValue: false - name: retention_policy description: "Map of retention policy values. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#retention_policy" varType: any - defaultValue: map[] + defaultValue: {} - name: set_admin_roles description: Grant roles/storage.objectAdmin role to admins and bucket_admins. varType: bool - defaultValue: "false" + defaultValue: false - name: set_creator_roles description: Grant roles/storage.objectCreator role to creators and bucket_creators. varType: bool - defaultValue: "false" + defaultValue: false - name: set_hmac_access description: Set S3 compatible access to GCS. varType: bool - defaultValue: "false" + defaultValue: false - name: set_hmac_key_admin_roles description: Grant roles/storage.hmacKeyAdmin role to hmac_key_admins and bucket_hmac_key_admins. varType: bool - defaultValue: "false" + defaultValue: false - name: set_storage_admin_roles description: Grant roles/storage.admin role to storage_admins and bucket_storage_admins. varType: bool - defaultValue: "false" + defaultValue: false - name: set_viewer_roles description: Grant roles/storage.objectViewer role to viewers and bucket_viewers. varType: bool - defaultValue: "false" + defaultValue: false - name: storage_admins description: IAM-style members who will be granted roles/storage.admin on all buckets. varType: list(string) - defaultValue: "[]" + defaultValue: [] - name: storage_class description: Bucket storage class. varType: string @@ -168,15 +171,15 @@ spec: - name: versioning description: Optional map of lowercase unprefixed name => boolean, defaults to false. varType: map(bool) - defaultValue: map[] + defaultValue: {} - name: viewers description: IAM-style members who will be granted roles/storage.objectViewer on all buckets. varType: list(string) - defaultValue: "[]" + defaultValue: [] - name: website description: "Map of website values. Supported attributes: main_page_suffix, not_found_page" varType: map(any) - defaultValue: map[] + defaultValue: {} outputs: - name: bucket description: Bucket resource (for single use). diff --git a/cli/bpmetadata/proto/bpmetadata.proto b/cli/bpmetadata/proto/bpmetadata.proto index c199f361aa3..59d5d1a1762 100644 --- a/cli/bpmetadata/proto/bpmetadata.proto +++ b/cli/bpmetadata/proto/bpmetadata.proto @@ -3,6 +3,7 @@ syntax = "proto3"; package google.cloud.config.bpmetadata; import "bpmetadata_ui.proto"; +import "google/protobuf/struct.proto"; // TODO: update copybara configuration for go to java package transformation option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata"; @@ -450,7 +451,7 @@ message BlueprintVariable { string name = 1; // @gotags: json:"name,omitempty" yaml:"name,omitempty" string description = 2; // @gotags: json:"description,omitempty" yaml:"description,omitempty" string var_type = 3; // @gotags: json:"varType,omitempty" yaml:"varType,omitempty" - string default_value = 4; // @gotags: json:"defaultValue,omitempty" yaml:"defaultValue,omitempty" + google.protobuf.Value default_value = 4; // @gotags: json:"defaultValue,omitempty" yaml:"defaultValue,omitempty" bool required = 5; // @gotags: json:"required,omitempty" yaml:"required,omitempty" } diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index 46f118f5955..7174e765f88 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -1025,6 +1025,16 @@ "required": [ "heading" ] + }, + "Value": { + "properties": { + "Kind": true + }, + "additionalProperties": false, + "type": "object", + "required": [ + "Kind" + ] } } } \ No newline at end of file diff --git a/cli/bpmetadata/schema/generate.go b/cli/bpmetadata/schema/generate.go index e937264a9eb..65a74ab7994 100644 --- a/cli/bpmetadata/schema/generate.go +++ b/cli/bpmetadata/schema/generate.go @@ -43,7 +43,7 @@ func GenerateSchema() ([]byte, error) { s.Version = "http://json-schema.org/draft-07/schema#" // defaultValue was defined as interface{} and has changed to - // string type with proto definitions. To keep backwards + // Value type with proto definitions. To keep backwards // compatibility for schema validation, this is being set to // true i.e. it's presence is validated regardless of type. vDef, defExists := s.Definitions["BlueprintVariable"] diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index 380c1b7a839..41c810c88bc 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -11,6 +11,7 @@ import ( "github.com/hashicorp/hcl/v2/gohcl" "github.com/hashicorp/hcl/v2/hclparse" "github.com/hashicorp/terraform-config-inspect/tfconfig" + "google.golang.org/protobuf/types/known/structpb" ) const ( @@ -231,8 +232,9 @@ func getBlueprintVariable(modVar *tfconfig.Variable) *BlueprintVariable { VarType: modVar.Type, } - if modVar.Default != nil { - v.DefaultValue = fmt.Sprintf("%v", modVar.Default) + vl, err := structpb.NewValue(modVar.Default) + if err == nil { + v.DefaultValue = vl } return v diff --git a/cli/bpmetadata/tfconfig_test.go b/cli/bpmetadata/tfconfig_test.go index ab1b8b72ebb..6abf9c6e556 100644 --- a/cli/bpmetadata/tfconfig_test.go +++ b/cli/bpmetadata/tfconfig_test.go @@ -21,7 +21,7 @@ func TestTFInterfaces(t *testing.T) { varName string wantDescription string wantVarType string - wantDefault string + wantDefault interface{} wantRequired bool }{ { @@ -42,21 +42,7 @@ func TestTFInterfaces(t *testing.T) { varName: "regional", wantDescription: "Whether is a regional cluster", wantVarType: "bool", - wantDefault: "true", - }, - { - name: "with an optional map", - varName: "optional_map", - wantDescription: "Optional map of booleans", - wantVarType: "map(bool)", - wantDefault: "map[]", - }, - { - name: "with an optional map", - varName: "optional_list", - wantDescription: "Optional list of strings", - wantVarType: "list(string)", - wantDefault: "[]", + wantDefault: true, }, } @@ -92,8 +78,8 @@ func TestTFInterfaces(t *testing.T) { return } - if got.Variables[i].DefaultValue != tt.wantDefault { - t.Errorf("getBlueprintInterfaces() - Variable.DefaultValue = %v, want %v", got.Variables[i].DefaultValue, tt.wantDefault) + if got.Variables[i].DefaultValue.AsInterface() != tt.wantDefault { + t.Errorf("getBlueprintInterfaces() - Variable.DefaultValue = %v, want %v", got.Variables[i].DefaultValue.AsInterface(), tt.wantDefault) return } diff --git a/cli/testdata/bpmetadata/tf/sample-module/variables.tf b/cli/testdata/bpmetadata/tf/sample-module/variables.tf index e6d56ebc264..acef73a6227 100644 --- a/cli/testdata/bpmetadata/tf/sample-module/variables.tf +++ b/cli/testdata/bpmetadata/tf/sample-module/variables.tf @@ -32,15 +32,3 @@ variable "regional" { description = "Whether is a regional cluster" default = true } - -variable "optional_map" { - description = "Optional map of booleans" - type = map(bool) - default = {} -} - -variable "optional_list" { - description = "Optional list of strings" - type = list(string) - default = [] -} From a79c47c93c9dc71f6a72b1f5ebf231d9954ce7d1 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Wed, 12 Jul 2023 17:43:57 -0700 Subject: [PATCH 5/7] adding back the protogen files --- .gitignore | 1 - cli/bpmetadata/bpmetadata.pb.go | 3039 ++++++++++++++++++++++++ cli/bpmetadata/bpmetadata_ui.pb.go | 853 +++++++ cli/bpmetadata/bpmetadata_ui_ext.pb.go | 1567 ++++++++++++ 4 files changed, 5459 insertions(+), 1 deletion(-) create mode 100644 cli/bpmetadata/bpmetadata.pb.go create mode 100644 cli/bpmetadata/bpmetadata_ui.pb.go create mode 100644 cli/bpmetadata/bpmetadata_ui_ext.pb.go diff --git a/.gitignore b/.gitignore index f1fd57100ea..43d33213e4b 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,4 @@ config-connector/tests/testcases/environments.yaml .DS_Store .vscode *.pyc -cli/bpmetadata/*.pb.go cli/bpmetadata/int-test/.working diff --git a/cli/bpmetadata/bpmetadata.pb.go b/cli/bpmetadata/bpmetadata.pb.go new file mode 100644 index 00000000000..ccd310d78d4 --- /dev/null +++ b/cli/bpmetadata/bpmetadata.pb.go @@ -0,0 +1,3039 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.12 +// source: bpmetadata.proto + +package bpmetadata + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// QuotaResourceType defines the type of resource a quota is applied to. +type QuotaResourceType int32 + +const ( + QuotaResourceType_QRT_UNDEFINED QuotaResourceType = 0 + QuotaResourceType_QRT_RESOURCE_TYPE_GCE_INSTANCE QuotaResourceType = 1 + QuotaResourceType_QRT_RESOURCE_TYPE_GCE_DISK QuotaResourceType = 2 +) + +// Enum value maps for QuotaResourceType. +var ( + QuotaResourceType_name = map[int32]string{ + 0: "QRT_UNDEFINED", + 1: "QRT_RESOURCE_TYPE_GCE_INSTANCE", + 2: "QRT_RESOURCE_TYPE_GCE_DISK", + } + QuotaResourceType_value = map[string]int32{ + "QRT_UNDEFINED": 0, + "QRT_RESOURCE_TYPE_GCE_INSTANCE": 1, + "QRT_RESOURCE_TYPE_GCE_DISK": 2, + } +) + +func (x QuotaResourceType) Enum() *QuotaResourceType { + p := new(QuotaResourceType) + *p = x + return p +} + +func (x QuotaResourceType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (QuotaResourceType) Descriptor() protoreflect.EnumDescriptor { + return file_bpmetadata_proto_enumTypes[0].Descriptor() +} + +func (QuotaResourceType) Type() protoreflect.EnumType { + return &file_bpmetadata_proto_enumTypes[0] +} + +func (x QuotaResourceType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use QuotaResourceType.Descriptor instead. +func (QuotaResourceType) EnumDescriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{0} +} + +// SoftwareGroupType is a string enum representing the different types of software groups. +type SoftwareGroupType int32 + +const ( + // UNSPECIFIED is the default value for SoftwareGroupType. + SoftwareGroupType_SG_UNSPECIFIED SoftwareGroupType = 0 + // OS is a software group that represents an operating system. + SoftwareGroupType_SG_OS SoftwareGroupType = 1 +) + +// Enum value maps for SoftwareGroupType. +var ( + SoftwareGroupType_name = map[int32]string{ + 0: "SG_UNSPECIFIED", + 1: "SG_OS", + } + SoftwareGroupType_value = map[string]int32{ + "SG_UNSPECIFIED": 0, + "SG_OS": 1, + } +) + +func (x SoftwareGroupType) Enum() *SoftwareGroupType { + p := new(SoftwareGroupType) + *p = x + return p +} + +func (x SoftwareGroupType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SoftwareGroupType) Descriptor() protoreflect.EnumDescriptor { + return file_bpmetadata_proto_enumTypes[1].Descriptor() +} + +func (SoftwareGroupType) Type() protoreflect.EnumType { + return &file_bpmetadata_proto_enumTypes[1] +} + +func (x SoftwareGroupType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SoftwareGroupType.Descriptor instead. +func (SoftwareGroupType) EnumDescriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{1} +} + +// BlueprintMetadata defines the overall structure for blueprint metadata. +// The cli command i.e. `cft blueprint metadata` attempts at auto-generating +// metadata if the blueprint is structured based on the TF blueprint template +// i.e. https://github.com/terraform-google-modules/terraform-google-module-template +// All fields within BlueprintMetadata and its children are denoted as: +// - Gen: auto-generated - +// - Gen: manually-authored +// - Gen: partial (contains nested messages that can include both auto-generated and manually authored) +type BlueprintMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // APIVersion is the apiVersion field of a metadata file + // Gen: auto-generated + ApiVersion string `protobuf:"bytes,1,opt,name=api_version,json=apiVersion,proto3" json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` // @gotags: json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" + // Kind is the kind field of a metadata file + // Gen: auto-generated + Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty" yaml:"kind,omitempty"` // @gotags: json:"kind,omitempty" yaml:"kind,omitempty" + // ResourceTypeMeta is the metadata field of a metadata file + // Gen: partial + Metadata *ResourceTypeMeta `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty" yaml:"metadata,omitempty"` // @gotags: json:"metadata,omitempty" yaml:"metadata,omitempty" + // BlueprintMetadataSpec is the metadata specification for the blueprint + // Gen: partial + Spec *BlueprintMetadataSpec `protobuf:"bytes,4,opt,name=spec,proto3" json:"spec" yaml:"spec"` // @gotags: yaml:"spec" json:"spec" +} + +func (x *BlueprintMetadata) Reset() { + *x = BlueprintMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintMetadata) ProtoMessage() {} + +func (x *BlueprintMetadata) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintMetadata.ProtoReflect.Descriptor instead. +func (*BlueprintMetadata) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{0} +} + +func (x *BlueprintMetadata) GetApiVersion() string { + if x != nil { + return x.ApiVersion + } + return "" +} + +func (x *BlueprintMetadata) GetKind() string { + if x != nil { + return x.Kind + } + return "" +} + +func (x *BlueprintMetadata) GetMetadata() *ResourceTypeMeta { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *BlueprintMetadata) GetSpec() *BlueprintMetadataSpec { + if x != nil { + return x.Spec + } + return nil +} + +type ResourceTypeMeta struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name is the metadata.name field of a Resource + // Gen: auto-generated + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty" yaml:"name,omitempty"` // @gotags: json:"name,omitempty" yaml:"name,omitempty" + // Labels is the metadata.labels field of a Resource + // Gen: manually-authored + Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"labels,omitempty"` // @gotags: json:"labels,omitempty" yaml:"labels,omitempty" + // Annotations is the metadata.annotations field of a Resource. + // Gen: auto-generated + Annotations map[string]string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"annotations,omitempty"` // @gotags: json:"annotations,omitempty" yaml:"annotations,omitempty" +} + +func (x *ResourceTypeMeta) Reset() { + *x = ResourceTypeMeta{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResourceTypeMeta) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResourceTypeMeta) ProtoMessage() {} + +func (x *ResourceTypeMeta) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResourceTypeMeta.ProtoReflect.Descriptor instead. +func (*ResourceTypeMeta) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{1} +} + +func (x *ResourceTypeMeta) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ResourceTypeMeta) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *ResourceTypeMeta) GetAnnotations() map[string]string { + if x != nil { + return x.Annotations + } + return nil +} + +// BlueprintMetadataSpec defines the spec portion of the blueprint metadata. +type BlueprintMetadataSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // BlueprintInfo defines the basic information of the blueprint. + // Gen: partial + Info *BlueprintInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty" yaml:"info,omitempty"` // @gotags: json:"info,omitempty" yaml:"info,omitempty" + // BlueprintContent defines the detail for blueprint related content such as + // related documentation, diagrams, examples etc. + // Gen: partial + Content *BlueprintContent `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty" yaml:"content,omitempty"` // @gotags: json:"content,omitempty" yaml:"content,omitempty" + // BlueprintInterface defines the input and output variables for the blueprint. + // Gen: partial + Interfaces *BlueprintInterface `protobuf:"bytes,3,opt,name=interfaces,proto3" json:"interfaces,omitempty" yaml:"interfaces,omitempty"` // @gotags: json:"interfaces,omitempty" yaml:"interfaces,omitempty" + // BlueprintRequirements defines the roles required and the associated services + // that need to be enabled to provision blueprint resources. + // Gen: auto-generated + Requirements *BlueprintRequirements `protobuf:"bytes,4,opt,name=requirements,proto3" json:"requirements,omitempty" yaml:"requirements,omitempty"` // @gotags: json:"requirements,omitempty" yaml:"requirements,omitempty" + // BlueprintUI defines the user interface for the blueprint. + // Gen: partial + Ui *BlueprintUI `protobuf:"bytes,5,opt,name=ui,proto3" json:"ui,omitempty" yaml:"ui,omitempty"` // @gotags: json:"ui,omitempty" yaml:"ui,omitempty" +} + +func (x *BlueprintMetadataSpec) Reset() { + *x = BlueprintMetadataSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintMetadataSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintMetadataSpec) ProtoMessage() {} + +func (x *BlueprintMetadataSpec) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintMetadataSpec.ProtoReflect.Descriptor instead. +func (*BlueprintMetadataSpec) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{2} +} + +func (x *BlueprintMetadataSpec) GetInfo() *BlueprintInfo { + if x != nil { + return x.Info + } + return nil +} + +func (x *BlueprintMetadataSpec) GetContent() *BlueprintContent { + if x != nil { + return x.Content + } + return nil +} + +func (x *BlueprintMetadataSpec) GetInterfaces() *BlueprintInterface { + if x != nil { + return x.Interfaces + } + return nil +} + +func (x *BlueprintMetadataSpec) GetRequirements() *BlueprintRequirements { + if x != nil { + return x.Requirements + } + return nil +} + +func (x *BlueprintMetadataSpec) GetUi() *BlueprintUI { + if x != nil { + return x.Ui + } + return nil +} + +// BlueprintInfo defines the basic information of the blueprint. +type BlueprintInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Title for the blueprint. + // Gen: auto-generated - First H1 text in readme.md. + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" + // Blueprint source location and source type. + // Gen: auto-generated - user will be prompted if repo information can not + // be determined from the blueprint path. + Source *BlueprintRepoDetail `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty" yaml:"source,omitempty"` // @gotags: json:"source,omitempty" yaml:"source,omitempty" + // Last released semantic version for the packaged blueprint. + // Gen: auto-generated - 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 `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty" yaml:"version,omitempty"` // @gotags: json:"version,omitempty" yaml:"version,omitempty" + // Actuation tool e.g. Terraform and its required version. + // Gen: auto-generated + ActuationTool *BlueprintActuationTool `protobuf:"bytes,4,opt,name=actuation_tool,json=actuationTool,proto3" json:"actuationTool,omitempty" yaml:"actuationTool,omitempty"` // @gotags: json:"actuationTool,omitempty" yaml:"actuationTool,omitempty" + // Various types of descriptions associated with the blueprint. + // Gen: auto-generated + Description *BlueprintDescription `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: 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. + // Gen: auto-generated + Icon string `protobuf:"bytes,6,opt,name=icon,proto3" json:"icon,omitempty" yaml:"icon,omitempty"` // @gotags: json:"icon,omitempty" yaml:"icon,omitempty" + // The time estimate for configuring and deploying the blueprint. + // Gen: auto-generated + DeploymentDuration *BlueprintTimeEstimate `protobuf:"bytes,7,opt,name=deployment_duration,json=deploymentDuration,proto3" json:"deploymentDuration,omitempty" yaml:"deploymentDuration,omitempty"` // @gotags: json:"deploymentDuration,omitempty" yaml:"deploymentDuration,omitempty" + // The cost estimate for the blueprint based on preconfigured variables. + // Gen: auto-generated + CostEstimate *BlueprintCostEstimate `protobuf:"bytes,8,opt,name=cost_estimate,json=costEstimate,proto3" json:"costEstimate,omitempty" yaml:"costEstimate,omitempty"` // @gotags: json:"costEstimate,omitempty" yaml:"costEstimate,omitempty" + // A list of GCP cloud products used in the blueprint. + // Gen: manually-authored + CloudProducts []*BlueprintCloudProduct `protobuf:"bytes,9,rep,name=cloud_products,json=cloudProducts,proto3" json:"cloudProducts,omitempty" yaml:"cloudProducts,omitempty"` // @gotags: json:"cloudProducts,omitempty" yaml:"cloudProducts,omitempty" + // A configuration of fixed and dynamic GCP quotas that apply to the blueprint. + // Gen: manually-authored + QuotaDetails []*BlueprintQuotaDetail `protobuf:"bytes,10,rep,name=quota_details,json=quotaDetails,proto3" json:"quotaDetails,omitempty" yaml:"quotaDetails,omitempty"` // @gotags: json:"quotaDetails,omitempty" yaml:"quotaDetails,omitempty" + // Details on the author producing the blueprint. + // Gen: manually-authored + Author *BlueprintAuthor `protobuf:"bytes,11,opt,name=author,proto3" json:"author,omitempty" yaml:"author,omitempty"` // @gotags: json:"author,omitempty" yaml:"author,omitempty" + // Details on software installed as part of the blueprint. + // Gen: manually-authored + SoftwareGroups []*BlueprintSoftwareGroup `protobuf:"bytes,12,rep,name=software_groups,json=softwareGroups,proto3" json:"softwareGroups,omitempty" yaml:"softwareGroups,omitempty"` // @gotags: json:"softwareGroups,omitempty" yaml:"softwareGroups,omitempty" + // Support offered, if any for the blueprint. + // Gen: manually-authored + SupportInfo *BlueprintSupport `protobuf:"bytes,13,opt,name=support_info,json=supportInfo,proto3" json:"supportInfo,omitempty" yaml:"supportInfo,omitempty"` // @gotags: json:"supportInfo,omitempty" yaml:"supportInfo,omitempty" + // A list of GCP org policies to be checked for successful deployment. + // Gen: manually-authored + OrgPolicyChecks []*BlueprintOrgPolicyCheck `protobuf:"bytes,14,rep,name=org_policy_checks,json=orgPolicyChecks,proto3" json:"orgPolicyChecks,omitempty" yaml:"orgPolicyChecks,omitempty"` // @gotags: json:"orgPolicyChecks,omitempty" yaml:"orgPolicyChecks,omitempty" + // Specifies if the blueprint supports single or multiple deployments per GCP project. + // If set to true, the blueprint can not be deployed more than once in the same GCP project. + // Gen: manually-authored + SingleDeployment bool `protobuf:"varint,15,opt,name=single_deployment,json=singleDeployment,proto3" json:"singleDeployment,omitempty" yaml:"singleDeployment,omitempty"` // @gotags: json:"singleDeployment,omitempty" yaml:"singleDeployment,omitempty" +} + +func (x *BlueprintInfo) Reset() { + *x = BlueprintInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintInfo) ProtoMessage() {} + +func (x *BlueprintInfo) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintInfo.ProtoReflect.Descriptor instead. +func (*BlueprintInfo) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{3} +} + +func (x *BlueprintInfo) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *BlueprintInfo) GetSource() *BlueprintRepoDetail { + if x != nil { + return x.Source + } + return nil +} + +func (x *BlueprintInfo) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *BlueprintInfo) GetActuationTool() *BlueprintActuationTool { + if x != nil { + return x.ActuationTool + } + return nil +} + +func (x *BlueprintInfo) GetDescription() *BlueprintDescription { + if x != nil { + return x.Description + } + return nil +} + +func (x *BlueprintInfo) GetIcon() string { + if x != nil { + return x.Icon + } + return "" +} + +func (x *BlueprintInfo) GetDeploymentDuration() *BlueprintTimeEstimate { + if x != nil { + return x.DeploymentDuration + } + return nil +} + +func (x *BlueprintInfo) GetCostEstimate() *BlueprintCostEstimate { + if x != nil { + return x.CostEstimate + } + return nil +} + +func (x *BlueprintInfo) GetCloudProducts() []*BlueprintCloudProduct { + if x != nil { + return x.CloudProducts + } + return nil +} + +func (x *BlueprintInfo) GetQuotaDetails() []*BlueprintQuotaDetail { + if x != nil { + return x.QuotaDetails + } + return nil +} + +func (x *BlueprintInfo) GetAuthor() *BlueprintAuthor { + if x != nil { + return x.Author + } + return nil +} + +func (x *BlueprintInfo) GetSoftwareGroups() []*BlueprintSoftwareGroup { + if x != nil { + return x.SoftwareGroups + } + return nil +} + +func (x *BlueprintInfo) GetSupportInfo() *BlueprintSupport { + if x != nil { + return x.SupportInfo + } + return nil +} + +func (x *BlueprintInfo) GetOrgPolicyChecks() []*BlueprintOrgPolicyCheck { + if x != nil { + return x.OrgPolicyChecks + } + return nil +} + +func (x *BlueprintInfo) GetSingleDeployment() bool { + if x != nil { + return x.SingleDeployment + } + return false +} + +// BlueprintContent defines the detail for blueprint related content such as +// related documentation, diagrams, examples etc. +type BlueprintContent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated + Architecture *BlueprintArchitecture `protobuf:"bytes,1,opt,name=architecture,proto3" json:"architecture,omitempty" yaml:"architecture,omitempty"` // @gotags: json:"architecture,omitempty" yaml:"architecture,omitempty" + // Gen: manually-authored + Diagrams []*BlueprintDiagram `protobuf:"bytes,2,rep,name=diagrams,proto3" json:"diagrams,omitempty" yaml:"diagrams,omitempty"` // @gotags: json:"diagrams,omitempty" yaml:"diagrams,omitempty" + // Gen: auto-generated - the list content following the "## Documentation" tag. E.g. + // ## Documentation + // - [Hosting a Static Website](https://cloud.google.com/storage/docs/hosting-static-website) + Documentation []*BlueprintListContent `protobuf:"bytes,3,rep,name=documentation,proto3" json:"documentation,omitempty" yaml:"documentation,omitempty"` // @gotags: json:"documentation,omitempty" yaml:"documentation,omitempty" + // Gen: auto-generated - blueprints under the modules/ folder. + SubBlueprints []*BlueprintMiscContent `protobuf:"bytes,4,rep,name=sub_blueprints,json=subBlueprints,proto3" json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty"` // @gotags: json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty" + // Gen: auto-generated - examples under the examples/ folder. + Examples []*BlueprintMiscContent `protobuf:"bytes,5,rep,name=examples,proto3" json:"examples,omitempty" yaml:"examples,omitempty"` // @gotags: json:"examples,omitempty" yaml:"examples,omitempty" +} + +func (x *BlueprintContent) Reset() { + *x = BlueprintContent{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintContent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintContent) ProtoMessage() {} + +func (x *BlueprintContent) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintContent.ProtoReflect.Descriptor instead. +func (*BlueprintContent) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{4} +} + +func (x *BlueprintContent) GetArchitecture() *BlueprintArchitecture { + if x != nil { + return x.Architecture + } + return nil +} + +func (x *BlueprintContent) GetDiagrams() []*BlueprintDiagram { + if x != nil { + return x.Diagrams + } + return nil +} + +func (x *BlueprintContent) GetDocumentation() []*BlueprintListContent { + if x != nil { + return x.Documentation + } + return nil +} + +func (x *BlueprintContent) GetSubBlueprints() []*BlueprintMiscContent { + if x != nil { + return x.SubBlueprints + } + return nil +} + +func (x *BlueprintContent) GetExamples() []*BlueprintMiscContent { + if x != nil { + return x.Examples + } + return nil +} + +// BlueprintInterface defines the input and output variables for the blueprint. +type BlueprintInterface struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - all defined variables for the blueprint + Variables []*BlueprintVariable `protobuf:"bytes,1,rep,name=variables,proto3" json:"variables,omitempty" yaml:"variables,omitempty"` // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" + // Gen: manually-authored + VariableGroups []*BlueprintVariableGroup `protobuf:"bytes,2,rep,name=variable_groups,json=variableGroups,proto3" json:"variableGroups,omitempty" yaml:"variableGroups,omitempty"` // @gotags: json:"variableGroups,omitempty" yaml:"variableGroups,omitempty" + // Gen: auto-generated - all defined outputs for the blueprint + Outputs []*BlueprintOutput `protobuf:"bytes,3,rep,name=outputs,proto3" json:"outputs,omitempty" yaml:"outputs,omitempty"` // @gotags: json:"outputs,omitempty" yaml:"outputs,omitempty" +} + +func (x *BlueprintInterface) Reset() { + *x = BlueprintInterface{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintInterface) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintInterface) ProtoMessage() {} + +func (x *BlueprintInterface) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintInterface.ProtoReflect.Descriptor instead. +func (*BlueprintInterface) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{5} +} + +func (x *BlueprintInterface) GetVariables() []*BlueprintVariable { + if x != nil { + return x.Variables + } + return nil +} + +func (x *BlueprintInterface) GetVariableGroups() []*BlueprintVariableGroup { + if x != nil { + return x.VariableGroups + } + return nil +} + +func (x *BlueprintInterface) GetOutputs() []*BlueprintOutput { + if x != nil { + return x.Outputs + } + return nil +} + +// BlueprintRequirements defines the roles required and the associated services +// that need to be enabled to provision blueprint resources. +type BlueprintRequirements struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - all roles required for the blueprint in test/setup/iam.tf + // as the "int_required_roles" local. E.g. + // + // locals { + // int_required_roles = [ + // "roles/compute.admin", + // ] + // } + Roles []*BlueprintRoles `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles,omitempty" yaml:"roles,omitempty"` // @gotags: json:"roles,omitempty" yaml:"roles,omitempty" + // Gen: auto-generated - all services required for the blueprint in test/setup/main.tf + // as "activate_apis" in the project module. + Services []string `protobuf:"bytes,2,rep,name=services,proto3" json:"services,omitempty" yaml:"services,omitempty"` // @gotags: json:"services,omitempty" yaml:"services,omitempty" +} + +func (x *BlueprintRequirements) Reset() { + *x = BlueprintRequirements{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintRequirements) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintRequirements) ProtoMessage() {} + +func (x *BlueprintRequirements) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintRequirements.ProtoReflect.Descriptor instead. +func (*BlueprintRequirements) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{6} +} + +func (x *BlueprintRequirements) GetRoles() []*BlueprintRoles { + if x != nil { + return x.Roles + } + return nil +} + +func (x *BlueprintRequirements) GetServices() []string { + if x != nil { + return x.Services + } + return nil +} + +// BlueprintUI is the top-level structure for holding UI specific metadata. +type BlueprintUI struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The top-level input section that defines the list of variables and + // their sections on the deployment page. + // Gen: partial + Input *BlueprintUIInput `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty" yaml:"input,omitempty"` // @gotags: 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. + // Gen: manually-authored + Runtime *BlueprintUIOutput `protobuf:"bytes,2,opt,name=runtime,proto3" json:"runtime,omitempty" yaml:"runtime,omitempty"` // @gotags: json:"runtime,omitempty" yaml:"runtime,omitempty" +} + +func (x *BlueprintUI) Reset() { + *x = BlueprintUI{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintUI) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintUI) ProtoMessage() {} + +func (x *BlueprintUI) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintUI.ProtoReflect.Descriptor instead. +func (*BlueprintUI) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{7} +} + +func (x *BlueprintUI) GetInput() *BlueprintUIInput { + if x != nil { + return x.Input + } + return nil +} + +func (x *BlueprintUI) GetRuntime() *BlueprintUIOutput { + if x != nil { + return x.Runtime + } + return nil +} + +type BlueprintRepoDetail struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - URL from the .git dir. + // Can be manually overridden with a custom URL if needed. + Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo" yaml:"repo"` // @gotags: json:"repo" yaml:"repo" + // Gen: auto-generated - set as "git" for now until more + // types are supported. + SourceType string `protobuf:"bytes,2,opt,name=source_type,json=sourceType,proto3" json:"sourceType" yaml:"sourceType"` // @gotags: json:"sourceType" yaml:"sourceType" + // Gen: auto-generated - not set for root modules but + // set as the module name for submodules, if found. + Dir string `protobuf:"bytes,3,opt,name=dir,proto3" json:"dir,omitempty" yaml:"dir,omitempty"` // @gotags: json:"dir,omitempty" yaml:"dir,omitempty" +} + +func (x *BlueprintRepoDetail) Reset() { + *x = BlueprintRepoDetail{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintRepoDetail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintRepoDetail) ProtoMessage() {} + +func (x *BlueprintRepoDetail) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintRepoDetail.ProtoReflect.Descriptor instead. +func (*BlueprintRepoDetail) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{8} +} + +func (x *BlueprintRepoDetail) GetRepo() string { + if x != nil { + return x.Repo + } + return "" +} + +func (x *BlueprintRepoDetail) GetSourceType() string { + if x != nil { + return x.SourceType + } + return "" +} + +func (x *BlueprintRepoDetail) GetDir() string { + if x != nil { + return x.Dir + } + return "" +} + +// BlueprintActuationTool defines the actuation tool used to provision the blueprint. +type BlueprintActuationTool struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - set as "Terraform" for now until + // more flavors are supported. + Flavor string `protobuf:"bytes,1,opt,name=flavor,proto3" json:"flavor,omitempty" yaml:"flavor,omitempty"` // @gotags: json:"flavor,omitempty" yaml:"flavor,omitempty" + // Required version for the actuation tool. + // Gen: auto-generated - For Terraform this is the `required_version` + // set in `terraform` block. E.g. + // + // terraform { + // required_version = ">= 0.13" + // } + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty" yaml:"version,omitempty"` // @gotags: json:"version,omitempty" yaml:"version,omitempty" +} + +func (x *BlueprintActuationTool) Reset() { + *x = BlueprintActuationTool{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintActuationTool) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintActuationTool) ProtoMessage() {} + +func (x *BlueprintActuationTool) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintActuationTool.ProtoReflect.Descriptor instead. +func (*BlueprintActuationTool) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{9} +} + +func (x *BlueprintActuationTool) GetFlavor() string { + if x != nil { + return x.Flavor + } + return "" +} + +func (x *BlueprintActuationTool) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +// All descriptions are set with the markdown content immediately +// after each type's heading declaration in readme.md. +type BlueprintDescription struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - Markdown after "### Tagline". + Tagline string `protobuf:"bytes,1,opt,name=tagline,proto3" json:"tagline,omitempty" yaml:"tagline,omitempty"` // @gotags: json:"tagline,omitempty" yaml:"tagline,omitempty" + // Gen: auto-generated - Markdown after "### Detailed". + Detailed string `protobuf:"bytes,2,opt,name=detailed,proto3" json:"detailed,omitempty" yaml:"detailed,omitempty"` // @gotags: json:"detailed,omitempty" yaml:"detailed,omitempty" + // Gen: auto-generated - Markdown after "### PreDeploy". + PreDeploy string `protobuf:"bytes,3,opt,name=pre_deploy,json=preDeploy,proto3" json:"preDeploy,omitempty" yaml:"preDeploy,omitempty"` // @gotags: json:"preDeploy,omitempty" yaml:"preDeploy,omitempty" + // Gen: auto-generated - Markdown after "### Html". + Html string `protobuf:"bytes,4,opt,name=html,proto3" json:"html,omitempty" yaml:"html,omitempty"` // @gotags: json:"html,omitempty" yaml:"html,omitempty" + // Gen: auto-generated - Markdown after "### EulaUrls". + EulaUrls []string `protobuf:"bytes,5,rep,name=eula_urls,json=eulaUrls,proto3" json:"eulaUrls,omitempty" yaml:"eulaUrls,omitempty"` // @gotags: json:"eulaUrls,omitempty" yaml:"eulaUrls,omitempty" + // Gen: auto-generated - Markdown after "### Architecture" + // Deprecated. Use BlueprintContent.Architecture instead. + Architecture []string `protobuf:"bytes,6,rep,name=architecture,proto3" json:"architecture,omitempty" yaml:"architecture,omitempty"` // @gotags: json:"architecture,omitempty" yaml:"architecture,omitempty" +} + +func (x *BlueprintDescription) Reset() { + *x = BlueprintDescription{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintDescription) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintDescription) ProtoMessage() {} + +func (x *BlueprintDescription) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintDescription.ProtoReflect.Descriptor instead. +func (*BlueprintDescription) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{10} +} + +func (x *BlueprintDescription) GetTagline() string { + if x != nil { + return x.Tagline + } + return "" +} + +func (x *BlueprintDescription) GetDetailed() string { + if x != nil { + return x.Detailed + } + return "" +} + +func (x *BlueprintDescription) GetPreDeploy() string { + if x != nil { + return x.PreDeploy + } + return "" +} + +func (x *BlueprintDescription) GetHtml() string { + if x != nil { + return x.Html + } + return "" +} + +func (x *BlueprintDescription) GetEulaUrls() []string { + if x != nil { + return x.EulaUrls + } + return nil +} + +func (x *BlueprintDescription) GetArchitecture() []string { + if x != nil { + return x.Architecture + } + return nil +} + +// A time estimate in secs required for configuring and deploying the blueprint. +type BlueprintTimeEstimate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - Set using the content defined under "### DeploymentTime" E.g. + // ### DeploymentTime + // - Configuration: X secs + // - Deployment: Y secs + ConfigurationSecs int64 `protobuf:"varint,1,opt,name=configuration_secs,json=configurationSecs,proto3" json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty"` // @gotags: json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty" + DeploymentSecs int64 `protobuf:"varint,2,opt,name=deployment_secs,json=deploymentSecs,proto3" json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty"` // @gotags: json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty" +} + +func (x *BlueprintTimeEstimate) Reset() { + *x = BlueprintTimeEstimate{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintTimeEstimate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintTimeEstimate) ProtoMessage() {} + +func (x *BlueprintTimeEstimate) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintTimeEstimate.ProtoReflect.Descriptor instead. +func (*BlueprintTimeEstimate) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{11} +} + +func (x *BlueprintTimeEstimate) GetConfigurationSecs() int64 { + if x != nil { + return x.ConfigurationSecs + } + return 0 +} + +func (x *BlueprintTimeEstimate) GetDeploymentSecs() int64 { + if x != nil { + return x.DeploymentSecs + } + return 0 +} + +// The cost estimate for the blueprint based on pre-configured variables. +type BlueprintCostEstimate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - Set using the content defined under "### Cost" as a link + // with a description E.g. + // ### Cost + // [$20.00](https://cloud.google.com/products/calculator?hl=en_US&_ga=2.1665458.-226505189.1675191136#id=02fb0c45-cc29-4567-8cc6-f72ac9024add) + Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description" yaml:"description"` // @gotags: json:"description" yaml:"description" + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url" yaml:"url"` // @gotags: json:"url" yaml:"url" +} + +func (x *BlueprintCostEstimate) Reset() { + *x = BlueprintCostEstimate{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintCostEstimate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintCostEstimate) ProtoMessage() {} + +func (x *BlueprintCostEstimate) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintCostEstimate.ProtoReflect.Descriptor instead. +func (*BlueprintCostEstimate) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{12} +} + +func (x *BlueprintCostEstimate) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *BlueprintCostEstimate) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +// GCP cloud product(s) used in the blueprint. +type BlueprintCloudProduct struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A top-level (e.g. "Compute Engine") or secondary (e.g. "Binary Authorization") + // product used in the blueprint. + // Gen: manually-authored + ProductId string `protobuf:"bytes,1,opt,name=product_id,json=productId,proto3" json:"productId,omitempty" yaml:"productId,omitempty"` // @gotags: json:"productId,omitempty" yaml:"productId,omitempty" + // Url for the product. + // Gen: manually-authored + PageUrl string `protobuf:"bytes,2,opt,name=page_url,json=pageUrl,proto3" json:"pageUrl" yaml:"pageUrl"` // @gotags: json:"pageUrl" yaml:"pageUrl" + // A label string for the product, if it is not an integrated GCP product. + // E.g. "Data Studio" + // Gen: manually-authored + Label string `protobuf:"bytes,3,opt,name=label,proto3" json:"label,omitempty" yaml:"label,omitempty"` // @gotags: json:"label,omitempty" yaml:"label,omitempty" + // Is the product's landing page external to the GCP console e.g. + // lookerstudio.google.com + // Gen: manually-authored + IsExternal bool `protobuf:"varint,4,opt,name=is_external,json=isExternal,proto3" json:"isExternal,omitempty" yaml:"isExternal,omitempty"` // @gotags: json:"isExternal,omitempty" yaml:"isExternal,omitempty" +} + +func (x *BlueprintCloudProduct) Reset() { + *x = BlueprintCloudProduct{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintCloudProduct) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintCloudProduct) ProtoMessage() {} + +func (x *BlueprintCloudProduct) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintCloudProduct.ProtoReflect.Descriptor instead. +func (*BlueprintCloudProduct) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{13} +} + +func (x *BlueprintCloudProduct) GetProductId() string { + if x != nil { + return x.ProductId + } + return "" +} + +func (x *BlueprintCloudProduct) GetPageUrl() string { + if x != nil { + return x.PageUrl + } + return "" +} + +func (x *BlueprintCloudProduct) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +func (x *BlueprintCloudProduct) GetIsExternal() bool { + if x != nil { + return x.IsExternal + } + return false +} + +// BlueprintOrgPolicyCheck defines GCP org policies to be checked +// for successful deployment +type BlueprintOrgPolicyCheck struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Id for the policy e.g. "compute-vmExternalIpAccess" + // Gen: manually-authored + PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policyId" yaml:"policyId"` // @gotags: json:"policyId" yaml:"policyId" + // If not set, it is assumed any version of this org policy + // prevents successful deployment of this solution. + // Gen: manually-authored + RequiredValues []string `protobuf:"bytes,2,rep,name=required_values,json=requiredValues,proto3" json:"requiredValues,omitempty" yaml:"requiredValues,omitempty"` // @gotags: json:"requiredValues,omitempty" yaml:"requiredValues,omitempty" +} + +func (x *BlueprintOrgPolicyCheck) Reset() { + *x = BlueprintOrgPolicyCheck{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintOrgPolicyCheck) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintOrgPolicyCheck) ProtoMessage() {} + +func (x *BlueprintOrgPolicyCheck) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintOrgPolicyCheck.ProtoReflect.Descriptor instead. +func (*BlueprintOrgPolicyCheck) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{14} +} + +func (x *BlueprintOrgPolicyCheck) GetPolicyId() string { + if x != nil { + return x.PolicyId + } + return "" +} + +func (x *BlueprintOrgPolicyCheck) GetRequiredValues() []string { + if x != nil { + return x.RequiredValues + } + return nil +} + +// BlueprintQuotaDetail defines the quota details for a blueprint. +type BlueprintQuotaDetail struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // 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. + // Gen: manually-authored + DynamicVariable string `protobuf:"bytes,1,opt,name=dynamic_variable,json=dynamicVariable,proto3" json:"dynamicVariable,omitempty" yaml:"dynamicVariable,omitempty"` // @gotags: json:"dynamicVariable,omitempty" yaml:"dynamicVariable,omitempty" + // ResourceType is the type of resource the quota will be applied to i.e. + // GCE Instance or Disk etc. + // Gen: manually-authored + ResourceType QuotaResourceType `protobuf:"varint,2,opt,name=resource_type,json=resourceType,proto3,enum=google.cloud.config.bpmetadata.QuotaResourceType" json:"resourceType" yaml:"resourceType"` // @gotags: json:"resourceType" yaml:"resourceType" + // QuotaType is a key/value pair of the actual quotas and their corresponding + // values. Valid keys for quota_type can be: + // MACHINE_TYPE, + // CPUs, + // DISK_TYPE OR + // SIZE_GB. + // Gen: manually-authored + QuotaType map[string]string `protobuf:"bytes,3,rep,name=quota_type,json=quotaType,proto3" json:"quotaType" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"quotaType"` // @gotags: json:"quotaType" yaml:"quotaType" +} + +func (x *BlueprintQuotaDetail) Reset() { + *x = BlueprintQuotaDetail{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintQuotaDetail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintQuotaDetail) ProtoMessage() {} + +func (x *BlueprintQuotaDetail) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintQuotaDetail.ProtoReflect.Descriptor instead. +func (*BlueprintQuotaDetail) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{15} +} + +func (x *BlueprintQuotaDetail) GetDynamicVariable() string { + if x != nil { + return x.DynamicVariable + } + return "" +} + +func (x *BlueprintQuotaDetail) GetResourceType() QuotaResourceType { + if x != nil { + return x.ResourceType + } + return QuotaResourceType_QRT_UNDEFINED +} + +func (x *BlueprintQuotaDetail) GetQuotaType() map[string]string { + if x != nil { + return x.QuotaType + } + return nil +} + +// BlueprintAuthor defines the author of a blueprint. +type BlueprintAuthor struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of template author or organization. + // Gen: manually-authored + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" + // Description of the author. + // Gen: manually-authored + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" + // Link to the author's website. + // Gen: manually-authored + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty" yaml:"url,omitempty"` // @gotags: json:"url,omitempty" yaml:"url,omitempty" +} + +func (x *BlueprintAuthor) Reset() { + *x = BlueprintAuthor{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintAuthor) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintAuthor) ProtoMessage() {} + +func (x *BlueprintAuthor) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintAuthor.ProtoReflect.Descriptor instead. +func (*BlueprintAuthor) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{16} +} + +func (x *BlueprintAuthor) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *BlueprintAuthor) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *BlueprintAuthor) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +// A group of related software components for the blueprint. +type BlueprintSoftwareGroup struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Pre-defined software types. + // Gen: manually-authored + Type SoftwareGroupType `protobuf:"varint,1,opt,name=type,proto3,enum=google.cloud.config.bpmetadata.SoftwareGroupType" json:"type,omitempty" yaml:"type,omitempty"` // @gotags: json:"type,omitempty" yaml:"type,omitempty" + // Software components belonging to this group. + // Gen: manually-authored + Software []*BlueprintSoftware `protobuf:"bytes,2,rep,name=software,proto3" json:"software,omitempty" yaml:"software,omitempty"` // @gotags: json:"software,omitempty" yaml:"software,omitempty" +} + +func (x *BlueprintSoftwareGroup) Reset() { + *x = BlueprintSoftwareGroup{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintSoftwareGroup) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintSoftwareGroup) ProtoMessage() {} + +func (x *BlueprintSoftwareGroup) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintSoftwareGroup.ProtoReflect.Descriptor instead. +func (*BlueprintSoftwareGroup) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{17} +} + +func (x *BlueprintSoftwareGroup) GetType() SoftwareGroupType { + if x != nil { + return x.Type + } + return SoftwareGroupType_SG_UNSPECIFIED +} + +func (x *BlueprintSoftwareGroup) GetSoftware() []*BlueprintSoftware { + if x != nil { + return x.Software + } + return nil +} + +// A description of a piece of a single software component +// installed by the blueprint. +type BlueprintSoftware struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // User-visible title. + // Gen: manually-authored + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" + // Software version. + // Gen: manually-authored + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty" yaml:"version,omitempty"` // @gotags: json:"version,omitempty" yaml:"version,omitempty" + // Link to development site or marketing page for this software. + // Gen: manually-authored + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty" yaml:"url,omitempty"` // @gotags: json:"url,omitempty" yaml:"url,omitempty" + // Link to license page. + // Gen: manually-authored + LicenseUrl string `protobuf:"bytes,4,opt,name=license_url,json=licenseUrl,proto3" json:"licenseUrl,omitempty" yaml:"licenseUrl,omitempty"` // @gotags: json:"licenseUrl,omitempty" yaml:"licenseUrl,omitempty" +} + +func (x *BlueprintSoftware) Reset() { + *x = BlueprintSoftware{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintSoftware) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintSoftware) ProtoMessage() {} + +func (x *BlueprintSoftware) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintSoftware.ProtoReflect.Descriptor instead. +func (*BlueprintSoftware) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{18} +} + +func (x *BlueprintSoftware) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *BlueprintSoftware) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *BlueprintSoftware) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *BlueprintSoftware) GetLicenseUrl() string { + if x != nil { + return x.LicenseUrl + } + return "" +} + +// A description of a support option +type BlueprintSupport struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Description of the support option. + // Gen: manually-authored + Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description" yaml:"description"` // @gotags: json:"description" yaml:"description" + // Link to the page providing this support option. + // Gen: manually-authored + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty" yaml:"url,omitempty"` // @gotags: json:"url,omitempty" yaml:"url,omitempty" + // The organization or group that provides the support option (e.g.: + // "Community", "Google"). + // Gen: manually-authored + Entity string `protobuf:"bytes,3,opt,name=entity,proto3" json:"entity,omitempty" yaml:"entity,omitempty"` // @gotags: json:"entity,omitempty" yaml:"entity,omitempty" + // Whether to show the customer's support ID. + // Gen: manually-authored + ShowSupportId bool `protobuf:"varint,4,opt,name=show_support_id,json=showSupportId,proto3" json:"showSupportId,omitempty" yaml:"showSupportId,omitempty"` // @gotags: json:"showSupportId,omitempty" yaml:"showSupportId,omitempty" +} + +func (x *BlueprintSupport) Reset() { + *x = BlueprintSupport{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintSupport) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintSupport) ProtoMessage() {} + +func (x *BlueprintSupport) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintSupport.ProtoReflect.Descriptor instead. +func (*BlueprintSupport) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{19} +} + +func (x *BlueprintSupport) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *BlueprintSupport) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *BlueprintSupport) GetEntity() string { + if x != nil { + return x.Entity + } + return "" +} + +func (x *BlueprintSupport) GetShowSupportId() bool { + if x != nil { + return x.ShowSupportId + } + return false +} + +type BlueprintArchitecture struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - the URL & list content following the "## Architecture" tag e.g. + // ## Architecture + // ![Blueprint Architecture](assets/architecture.png) + // 1. Step no. 1 + // 2. Step no. 2 + // 3. Step no. 3 + DiagramUrl string `protobuf:"bytes,1,opt,name=diagram_url,json=diagramUrl,proto3" json:"diagramUrl" yaml:"diagramUrl"` // @gotags: json:"diagramUrl" yaml:"diagramUrl" + // Gen: auto-generated - the list items following the "## Architecture" tag. + Description []string `protobuf:"bytes,2,rep,name=description,proto3" json:"description" yaml:"description"` // @gotags: json:"description" yaml:"description" +} + +func (x *BlueprintArchitecture) Reset() { + *x = BlueprintArchitecture{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintArchitecture) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintArchitecture) ProtoMessage() {} + +func (x *BlueprintArchitecture) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintArchitecture.ProtoReflect.Descriptor instead. +func (*BlueprintArchitecture) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{20} +} + +func (x *BlueprintArchitecture) GetDiagramUrl() string { + if x != nil { + return x.DiagramUrl + } + return "" +} + +func (x *BlueprintArchitecture) GetDescription() []string { + if x != nil { + return x.Description + } + return nil +} + +type BlueprintMiscContent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + Location string `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty" yaml:"location,omitempty"` // @gotags: json:"location,omitempty" yaml:"location,omitempty" +} + +func (x *BlueprintMiscContent) Reset() { + *x = BlueprintMiscContent{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintMiscContent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintMiscContent) ProtoMessage() {} + +func (x *BlueprintMiscContent) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintMiscContent.ProtoReflect.Descriptor instead. +func (*BlueprintMiscContent) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{21} +} + +func (x *BlueprintMiscContent) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *BlueprintMiscContent) GetLocation() string { + if x != nil { + return x.Location + } + return "" +} + +type BlueprintDiagram struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + AltText string `protobuf:"bytes,2,opt,name=alt_text,json=altText,proto3" json:"altText,omitempty" yaml:"altText,omitempty"` // @gotags: json:"altText,omitempty" yaml:"altText,omitempty" + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" +} + +func (x *BlueprintDiagram) Reset() { + *x = BlueprintDiagram{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintDiagram) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintDiagram) ProtoMessage() {} + +func (x *BlueprintDiagram) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintDiagram.ProtoReflect.Descriptor instead. +func (*BlueprintDiagram) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{22} +} + +func (x *BlueprintDiagram) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *BlueprintDiagram) GetAltText() string { + if x != nil { + return x.AltText + } + return "" +} + +func (x *BlueprintDiagram) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +type BlueprintListContent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty" yaml:"url,omitempty"` // @gotags: json:"url,omitempty" yaml:"url,omitempty" +} + +func (x *BlueprintListContent) Reset() { + *x = BlueprintListContent{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintListContent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintListContent) ProtoMessage() {} + +func (x *BlueprintListContent) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintListContent.ProtoReflect.Descriptor instead. +func (*BlueprintListContent) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{23} +} + +func (x *BlueprintListContent) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *BlueprintListContent) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +type BlueprintVariable struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty" yaml:"name,omitempty"` // @gotags: json:"name,omitempty" yaml:"name,omitempty" + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" + VarType string `protobuf:"bytes,3,opt,name=var_type,json=varType,proto3" json:"varType,omitempty" yaml:"varType,omitempty"` // @gotags: json:"varType,omitempty" yaml:"varType,omitempty" + DefaultValue *structpb.Value `protobuf:"bytes,4,opt,name=default_value,json=defaultValue,proto3" json:"defaultValue,omitempty" yaml:"defaultValue,omitempty"` // @gotags: json:"defaultValue,omitempty" yaml:"defaultValue,omitempty" + Required bool `protobuf:"varint,5,opt,name=required,proto3" json:"required,omitempty" yaml:"required,omitempty"` // @gotags: json:"required,omitempty" yaml:"required,omitempty" +} + +func (x *BlueprintVariable) Reset() { + *x = BlueprintVariable{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintVariable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintVariable) ProtoMessage() {} + +func (x *BlueprintVariable) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintVariable.ProtoReflect.Descriptor instead. +func (*BlueprintVariable) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{24} +} + +func (x *BlueprintVariable) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *BlueprintVariable) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *BlueprintVariable) GetVarType() string { + if x != nil { + return x.VarType + } + return "" +} + +func (x *BlueprintVariable) GetDefaultValue() *structpb.Value { + if x != nil { + return x.DefaultValue + } + return nil +} + +func (x *BlueprintVariable) GetRequired() bool { + if x != nil { + return x.Required + } + return false +} + +// BlueprintVariableGroup is manually entered. +type BlueprintVariableGroup struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" + Variables []string `protobuf:"bytes,3,rep,name=variables,proto3" json:"variables,omitempty" yaml:"variables,omitempty"` // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" +} + +func (x *BlueprintVariableGroup) Reset() { + *x = BlueprintVariableGroup{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintVariableGroup) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintVariableGroup) ProtoMessage() {} + +func (x *BlueprintVariableGroup) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintVariableGroup.ProtoReflect.Descriptor instead. +func (*BlueprintVariableGroup) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{25} +} + +func (x *BlueprintVariableGroup) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *BlueprintVariableGroup) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *BlueprintVariableGroup) GetVariables() []string { + if x != nil { + return x.Variables + } + return nil +} + +type BlueprintOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" +} + +func (x *BlueprintOutput) Reset() { + *x = BlueprintOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintOutput) ProtoMessage() {} + +func (x *BlueprintOutput) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintOutput.ProtoReflect.Descriptor instead. +func (*BlueprintOutput) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{26} +} + +func (x *BlueprintOutput) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *BlueprintOutput) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +type BlueprintRoles struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Level string `protobuf:"bytes,1,opt,name=level,proto3" json:"level" yaml:"level"` // @gotags: json:"level" yaml:"level" + Roles []string `protobuf:"bytes,2,rep,name=roles,proto3" json:"roles" yaml:"roles"` // @gotags: json:"roles" yaml:"roles" +} + +func (x *BlueprintRoles) Reset() { + *x = BlueprintRoles{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintRoles) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintRoles) ProtoMessage() {} + +func (x *BlueprintRoles) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintRoles.ProtoReflect.Descriptor instead. +func (*BlueprintRoles) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{27} +} + +func (x *BlueprintRoles) GetLevel() string { + if x != nil { + return x.Level + } + return "" +} + +func (x *BlueprintRoles) GetRoles() []string { + if x != nil { + return x.Roles + } + return nil +} + +var File_bpmetadata_proto protoreflect.FileDescriptor + +var file_bpmetadata_proto_rawDesc = []byte{ + 0x0a, 0x10, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x1a, 0x13, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, + 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe1, 0x01, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x61, + 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, + 0x12, 0x4c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x49, + 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, + 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, + 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0xdc, 0x02, 0x0a, 0x10, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x63, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x2e, + 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, 0x0a, + 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x92, 0x03, 0x0a, 0x15, 0x42, 0x6c, 0x75, + 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x70, + 0x65, 0x63, 0x12, 0x41, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x12, 0x52, 0x0a, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, + 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0x3b, 0x0a, 0x02, 0x75, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, + 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x52, 0x02, 0x75, 0x69, 0x22, 0xe5, 0x08, + 0x0a, 0x0d, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, + 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x0e, + 0x61, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6f, 0x6c, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, + 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6f, 0x6c, 0x52, 0x0d, 0x61, 0x63, + 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6f, 0x6c, 0x12, 0x56, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x66, 0x0a, 0x13, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x12, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x5a, 0x0a, 0x0d, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x43, 0x6f, 0x73, 0x74, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x63, + 0x6f, 0x73, 0x74, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x09, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x0d, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x59, 0x0a, 0x0d, 0x71, 0x75, 0x6f, + 0x74, 0x61, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x61, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x12, 0x47, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x5f, 0x0a, + 0x0f, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0e, + 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x53, + 0x0a, 0x0c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x53, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x0b, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x63, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x72, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x69, 0x6e, 0x67, + 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xc6, 0x03, 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x59, 0x0a, 0x0c, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, + 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, + 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x4c, 0x0a, 0x08, 0x64, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x44, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x08, 0x64, 0x69, 0x61, 0x67, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x5a, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x52, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x5b, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x5f, 0x62, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x4d, 0x69, 0x73, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x73, + 0x75, 0x62, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x08, + 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, 0x69, 0x73, 0x63, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x91, + 0x02, 0x0a, 0x12, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x5f, 0x0a, 0x0f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0e, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x49, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x73, 0x22, 0x79, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x05, 0x72, + 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0xa2, 0x01, + 0x0a, 0x0b, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x12, 0x46, 0x0a, + 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, + 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x05, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4b, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x22, 0x5c, 0x0a, 0x13, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, + 0x65, 0x70, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, + 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x1f, 0x0a, + 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x64, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x72, + 0x22, 0x4a, 0x0a, 0x16, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, 0x63, 0x74, + 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6c, + 0x61, 0x76, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6c, 0x61, 0x76, + 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc0, 0x01, 0x0a, + 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x67, 0x6c, 0x69, 0x6e, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x67, 0x6c, 0x69, 0x6e, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, + 0x72, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x72, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x74, + 0x6d, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x74, 0x6d, 0x6c, 0x12, 0x1b, + 0x0a, 0x09, 0x65, 0x75, 0x6c, 0x61, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x08, 0x65, 0x75, 0x6c, 0x61, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x22, + 0x6f, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x73, + 0x22, 0x4b, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x73, + 0x74, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, + 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x88, 0x01, + 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x75, + 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x67, 0x65, 0x55, 0x72, + 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x65, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, + 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x22, 0x5f, 0x0a, 0x17, 0x42, 0x6c, 0x75, 0x65, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x72, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, + 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xbb, 0x02, 0x0a, 0x14, 0x42, 0x6c, + 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x76, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x79, + 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x56, 0x0a, + 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x62, 0x0a, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, + 0x72, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, + 0x51, 0x75, 0x6f, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, + 0x71, 0x75, 0x6f, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x3c, 0x0a, 0x0e, 0x51, 0x75, 0x6f, + 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5b, 0x0a, 0x0f, 0x42, 0x6c, 0x75, 0x65, 0x70, + 0x72, 0x69, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x22, 0xae, 0x01, 0x0a, 0x16, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x45, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, + 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x08, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, + 0x72, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x52, 0x08, 0x73, 0x6f, 0x66, + 0x74, 0x77, 0x61, 0x72, 0x65, 0x22, 0x76, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, + 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x22, 0x86, 0x01, + 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x26, + 0x0a, 0x0f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x53, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x22, 0x5a, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x55, 0x72, 0x6c, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x46, 0x0a, 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, + 0x69, 0x73, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x10, 0x42, 0x6c, + 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6c, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x74, 0x54, 0x65, 0x78, 0x74, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x3e, 0x0a, 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, + 0xbd, 0x01, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x76, + 0x61, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, + 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, + 0x6c, 0x0a, 0x16, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x47, 0x0a, + 0x0f, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3c, 0x0a, 0x0e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, + 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x72, + 0x6f, 0x6c, 0x65, 0x73, 0x2a, 0x6a, 0x0a, 0x11, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x51, 0x52, 0x54, + 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, + 0x51, 0x52, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x01, + 0x12, 0x1e, 0x0a, 0x1a, 0x51, 0x52, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x10, 0x02, + 0x2a, 0x32, 0x0a, 0x11, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x47, 0x5f, + 0x4f, 0x53, 0x10, 0x01, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, + 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, + 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_bpmetadata_proto_rawDescOnce sync.Once + file_bpmetadata_proto_rawDescData = file_bpmetadata_proto_rawDesc +) + +func file_bpmetadata_proto_rawDescGZIP() []byte { + file_bpmetadata_proto_rawDescOnce.Do(func() { + file_bpmetadata_proto_rawDescData = protoimpl.X.CompressGZIP(file_bpmetadata_proto_rawDescData) + }) + return file_bpmetadata_proto_rawDescData +} + +var file_bpmetadata_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_bpmetadata_proto_msgTypes = make([]protoimpl.MessageInfo, 31) +var file_bpmetadata_proto_goTypes = []interface{}{ + (QuotaResourceType)(0), // 0: google.cloud.config.bpmetadata.QuotaResourceType + (SoftwareGroupType)(0), // 1: google.cloud.config.bpmetadata.SoftwareGroupType + (*BlueprintMetadata)(nil), // 2: google.cloud.config.bpmetadata.BlueprintMetadata + (*ResourceTypeMeta)(nil), // 3: google.cloud.config.bpmetadata.ResourceTypeMeta + (*BlueprintMetadataSpec)(nil), // 4: google.cloud.config.bpmetadata.BlueprintMetadataSpec + (*BlueprintInfo)(nil), // 5: google.cloud.config.bpmetadata.BlueprintInfo + (*BlueprintContent)(nil), // 6: google.cloud.config.bpmetadata.BlueprintContent + (*BlueprintInterface)(nil), // 7: google.cloud.config.bpmetadata.BlueprintInterface + (*BlueprintRequirements)(nil), // 8: google.cloud.config.bpmetadata.BlueprintRequirements + (*BlueprintUI)(nil), // 9: google.cloud.config.bpmetadata.BlueprintUI + (*BlueprintRepoDetail)(nil), // 10: google.cloud.config.bpmetadata.BlueprintRepoDetail + (*BlueprintActuationTool)(nil), // 11: google.cloud.config.bpmetadata.BlueprintActuationTool + (*BlueprintDescription)(nil), // 12: google.cloud.config.bpmetadata.BlueprintDescription + (*BlueprintTimeEstimate)(nil), // 13: google.cloud.config.bpmetadata.BlueprintTimeEstimate + (*BlueprintCostEstimate)(nil), // 14: google.cloud.config.bpmetadata.BlueprintCostEstimate + (*BlueprintCloudProduct)(nil), // 15: google.cloud.config.bpmetadata.BlueprintCloudProduct + (*BlueprintOrgPolicyCheck)(nil), // 16: google.cloud.config.bpmetadata.BlueprintOrgPolicyCheck + (*BlueprintQuotaDetail)(nil), // 17: google.cloud.config.bpmetadata.BlueprintQuotaDetail + (*BlueprintAuthor)(nil), // 18: google.cloud.config.bpmetadata.BlueprintAuthor + (*BlueprintSoftwareGroup)(nil), // 19: google.cloud.config.bpmetadata.BlueprintSoftwareGroup + (*BlueprintSoftware)(nil), // 20: google.cloud.config.bpmetadata.BlueprintSoftware + (*BlueprintSupport)(nil), // 21: google.cloud.config.bpmetadata.BlueprintSupport + (*BlueprintArchitecture)(nil), // 22: google.cloud.config.bpmetadata.BlueprintArchitecture + (*BlueprintMiscContent)(nil), // 23: google.cloud.config.bpmetadata.BlueprintMiscContent + (*BlueprintDiagram)(nil), // 24: google.cloud.config.bpmetadata.BlueprintDiagram + (*BlueprintListContent)(nil), // 25: google.cloud.config.bpmetadata.BlueprintListContent + (*BlueprintVariable)(nil), // 26: google.cloud.config.bpmetadata.BlueprintVariable + (*BlueprintVariableGroup)(nil), // 27: google.cloud.config.bpmetadata.BlueprintVariableGroup + (*BlueprintOutput)(nil), // 28: google.cloud.config.bpmetadata.BlueprintOutput + (*BlueprintRoles)(nil), // 29: google.cloud.config.bpmetadata.BlueprintRoles + nil, // 30: google.cloud.config.bpmetadata.ResourceTypeMeta.LabelsEntry + nil, // 31: google.cloud.config.bpmetadata.ResourceTypeMeta.AnnotationsEntry + nil, // 32: google.cloud.config.bpmetadata.BlueprintQuotaDetail.QuotaTypeEntry + (*BlueprintUIInput)(nil), // 33: google.cloud.config.bpmetadata.BlueprintUIInput + (*BlueprintUIOutput)(nil), // 34: google.cloud.config.bpmetadata.BlueprintUIOutput + (*structpb.Value)(nil), // 35: google.protobuf.Value +} +var file_bpmetadata_proto_depIdxs = []int32{ + 3, // 0: google.cloud.config.bpmetadata.BlueprintMetadata.metadata:type_name -> google.cloud.config.bpmetadata.ResourceTypeMeta + 4, // 1: google.cloud.config.bpmetadata.BlueprintMetadata.spec:type_name -> google.cloud.config.bpmetadata.BlueprintMetadataSpec + 30, // 2: google.cloud.config.bpmetadata.ResourceTypeMeta.labels:type_name -> google.cloud.config.bpmetadata.ResourceTypeMeta.LabelsEntry + 31, // 3: google.cloud.config.bpmetadata.ResourceTypeMeta.annotations:type_name -> google.cloud.config.bpmetadata.ResourceTypeMeta.AnnotationsEntry + 5, // 4: google.cloud.config.bpmetadata.BlueprintMetadataSpec.info:type_name -> google.cloud.config.bpmetadata.BlueprintInfo + 6, // 5: google.cloud.config.bpmetadata.BlueprintMetadataSpec.content:type_name -> google.cloud.config.bpmetadata.BlueprintContent + 7, // 6: google.cloud.config.bpmetadata.BlueprintMetadataSpec.interfaces:type_name -> google.cloud.config.bpmetadata.BlueprintInterface + 8, // 7: google.cloud.config.bpmetadata.BlueprintMetadataSpec.requirements:type_name -> google.cloud.config.bpmetadata.BlueprintRequirements + 9, // 8: google.cloud.config.bpmetadata.BlueprintMetadataSpec.ui:type_name -> google.cloud.config.bpmetadata.BlueprintUI + 10, // 9: google.cloud.config.bpmetadata.BlueprintInfo.source:type_name -> google.cloud.config.bpmetadata.BlueprintRepoDetail + 11, // 10: google.cloud.config.bpmetadata.BlueprintInfo.actuation_tool:type_name -> google.cloud.config.bpmetadata.BlueprintActuationTool + 12, // 11: google.cloud.config.bpmetadata.BlueprintInfo.description:type_name -> google.cloud.config.bpmetadata.BlueprintDescription + 13, // 12: google.cloud.config.bpmetadata.BlueprintInfo.deployment_duration:type_name -> google.cloud.config.bpmetadata.BlueprintTimeEstimate + 14, // 13: google.cloud.config.bpmetadata.BlueprintInfo.cost_estimate:type_name -> google.cloud.config.bpmetadata.BlueprintCostEstimate + 15, // 14: google.cloud.config.bpmetadata.BlueprintInfo.cloud_products:type_name -> google.cloud.config.bpmetadata.BlueprintCloudProduct + 17, // 15: google.cloud.config.bpmetadata.BlueprintInfo.quota_details:type_name -> google.cloud.config.bpmetadata.BlueprintQuotaDetail + 18, // 16: google.cloud.config.bpmetadata.BlueprintInfo.author:type_name -> google.cloud.config.bpmetadata.BlueprintAuthor + 19, // 17: google.cloud.config.bpmetadata.BlueprintInfo.software_groups:type_name -> google.cloud.config.bpmetadata.BlueprintSoftwareGroup + 21, // 18: google.cloud.config.bpmetadata.BlueprintInfo.support_info:type_name -> google.cloud.config.bpmetadata.BlueprintSupport + 16, // 19: google.cloud.config.bpmetadata.BlueprintInfo.org_policy_checks:type_name -> google.cloud.config.bpmetadata.BlueprintOrgPolicyCheck + 22, // 20: google.cloud.config.bpmetadata.BlueprintContent.architecture:type_name -> google.cloud.config.bpmetadata.BlueprintArchitecture + 24, // 21: google.cloud.config.bpmetadata.BlueprintContent.diagrams:type_name -> google.cloud.config.bpmetadata.BlueprintDiagram + 25, // 22: google.cloud.config.bpmetadata.BlueprintContent.documentation:type_name -> google.cloud.config.bpmetadata.BlueprintListContent + 23, // 23: google.cloud.config.bpmetadata.BlueprintContent.sub_blueprints:type_name -> google.cloud.config.bpmetadata.BlueprintMiscContent + 23, // 24: google.cloud.config.bpmetadata.BlueprintContent.examples:type_name -> google.cloud.config.bpmetadata.BlueprintMiscContent + 26, // 25: google.cloud.config.bpmetadata.BlueprintInterface.variables:type_name -> google.cloud.config.bpmetadata.BlueprintVariable + 27, // 26: google.cloud.config.bpmetadata.BlueprintInterface.variable_groups:type_name -> google.cloud.config.bpmetadata.BlueprintVariableGroup + 28, // 27: google.cloud.config.bpmetadata.BlueprintInterface.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintOutput + 29, // 28: google.cloud.config.bpmetadata.BlueprintRequirements.roles:type_name -> google.cloud.config.bpmetadata.BlueprintRoles + 33, // 29: google.cloud.config.bpmetadata.BlueprintUI.input:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput + 34, // 30: google.cloud.config.bpmetadata.BlueprintUI.runtime:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput + 0, // 31: google.cloud.config.bpmetadata.BlueprintQuotaDetail.resource_type:type_name -> google.cloud.config.bpmetadata.QuotaResourceType + 32, // 32: google.cloud.config.bpmetadata.BlueprintQuotaDetail.quota_type:type_name -> google.cloud.config.bpmetadata.BlueprintQuotaDetail.QuotaTypeEntry + 1, // 33: google.cloud.config.bpmetadata.BlueprintSoftwareGroup.type:type_name -> google.cloud.config.bpmetadata.SoftwareGroupType + 20, // 34: google.cloud.config.bpmetadata.BlueprintSoftwareGroup.software:type_name -> google.cloud.config.bpmetadata.BlueprintSoftware + 35, // 35: google.cloud.config.bpmetadata.BlueprintVariable.default_value:type_name -> google.protobuf.Value + 36, // [36:36] is the sub-list for method output_type + 36, // [36:36] is the sub-list for method input_type + 36, // [36:36] is the sub-list for extension type_name + 36, // [36:36] is the sub-list for extension extendee + 0, // [0:36] is the sub-list for field type_name +} + +func init() { file_bpmetadata_proto_init() } +func file_bpmetadata_proto_init() { + if File_bpmetadata_proto != nil { + return + } + file_bpmetadata_ui_proto_init() + if !protoimpl.UnsafeEnabled { + file_bpmetadata_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResourceTypeMeta); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintMetadataSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintContent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintInterface); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintRequirements); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintUI); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintRepoDetail); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintActuationTool); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintDescription); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintTimeEstimate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintCostEstimate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintCloudProduct); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintOrgPolicyCheck); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintQuotaDetail); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintAuthor); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintSoftwareGroup); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintSoftware); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintSupport); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintArchitecture); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintMiscContent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintDiagram); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintListContent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintVariable); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintVariableGroup); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintOutput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintRoles); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_bpmetadata_proto_rawDesc, + NumEnums: 2, + NumMessages: 31, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_bpmetadata_proto_goTypes, + DependencyIndexes: file_bpmetadata_proto_depIdxs, + EnumInfos: file_bpmetadata_proto_enumTypes, + MessageInfos: file_bpmetadata_proto_msgTypes, + }.Build() + File_bpmetadata_proto = out.File + file_bpmetadata_proto_rawDesc = nil + file_bpmetadata_proto_goTypes = nil + file_bpmetadata_proto_depIdxs = nil +} diff --git a/cli/bpmetadata/bpmetadata_ui.pb.go b/cli/bpmetadata/bpmetadata_ui.pb.go new file mode 100644 index 00000000000..c0206987d15 --- /dev/null +++ b/cli/bpmetadata/bpmetadata_ui.pb.go @@ -0,0 +1,853 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.12 +// source: bpmetadata_ui.proto + +package bpmetadata + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// BlueprintUIInput is the structure for holding Input and Input Section (i.e. groups) specific metadata. +type BlueprintUIInput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // variables is a map defining all inputs on the UI. + // Gen: partial + Variables map[string]*DisplayVariable `protobuf:"bytes,1,rep,name=variables,proto3" json:"variables,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"variables,omitempty"` // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" + // Sections is a generic structure for grouping inputs together. + // Gen: manually-authored + Sections []*DisplaySection `protobuf:"bytes,2,rep,name=sections,proto3" json:"sections,omitempty" yaml:"sections,omitempty"` // @gotags: json:"sections,omitempty" yaml:"sections,omitempty" +} + +func (x *BlueprintUIInput) Reset() { + *x = BlueprintUIInput{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintUIInput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintUIInput) ProtoMessage() {} + +func (x *BlueprintUIInput) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintUIInput.ProtoReflect.Descriptor instead. +func (*BlueprintUIInput) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{0} +} + +func (x *BlueprintUIInput) GetVariables() map[string]*DisplayVariable { + if x != nil { + return x.Variables + } + return nil +} + +func (x *BlueprintUIInput) GetSections() []*DisplaySection { + if x != nil { + return x.Sections + } + return nil +} + +// Additional display specific metadata pertaining to a particular +// input variable. +type DisplayVariable struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The variable name from the corresponding standard metadata file. + // Gen: auto-generated - the Terraform variable name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + // Visible title for the variable on the UI. If not present, + // Name will be used for the Title. + // Gen: auto-generated - the Terraform variable converted to title case e.g. + // variable "bucket_admins" will convert to "Bucket Admins" as the title. + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" + // A flag to hide or show the variable on the UI. + // Gen: manually-authored + Invisible bool `protobuf:"varint,3,opt,name=invisible,proto3" json:"invisible,omitempty" yaml:"invisible,omitempty"` // @gotags: json:"invisible,omitempty" yaml:"invisible,omitempty" + // Variable tooltip. + // Gen: manually-authored + Tooltip string `protobuf:"bytes,4,opt,name=tooltip,proto3" json:"tooltip,omitempty" yaml:"tooltip,omitempty"` // @gotags: json:"tooltip,omitempty" yaml:"tooltip,omitempty" + // Placeholder text (when there is no default). + // Gen: manually-authored + Placeholder string `protobuf:"bytes,5,opt,name=placeholder,proto3" json:"placeholder,omitempty" yaml:"placeholder,omitempty"` // @gotags: json:"placeholder,omitempty" yaml:"placeholder,omitempty" + // Regex based validation rules for the variable. + // Gen: manually-authored + RegexValidation string `protobuf:"bytes,6,opt,name=regex_validation,json=regexValidation,proto3" json:"regexValidation,omitempty" yaml:"regexValidation,omitempty"` // @gotags: json:"regexValidation,omitempty" yaml:"regexValidation,omitempty" + // Minimum no. of inputs for the input variable. + // Gen: manually-authored + MinItems int32 `protobuf:"varint,7,opt,name=min_items,json=minItems,proto3" json:"minItems,omitempty" yaml:"minItems,omitempty"` // @gotags: json:"minItems,omitempty" yaml:"minItems,omitempty" + // Max no. of inputs for the input variable. + // Gen: manually-authored + MaxItems int32 `protobuf:"varint,8,opt,name=max_items,json=maxItems,proto3" json:"maxItems,omitempty" yaml:"maxItems,omitempty"` // @gotags: json:"maxItems,omitempty" yaml:"maxItems,omitempty" + // Minimum length for string values. + // Gen: manually-authored + MinLength int32 `protobuf:"varint,9,opt,name=min_length,json=minLength,proto3" json:"minLength,omitempty" yaml:"minLength,omitempty"` // @gotags: json:"minLength,omitempty" yaml:"minLength,omitempty" + // Max length for string values. + // Gen: manually-authored + MaxLength int32 `protobuf:"varint,10,opt,name=max_length,json=maxLength,proto3" json:"maxLength,omitempty" yaml:"maxLength,omitempty"` // @gotags: json:"maxLength,omitempty" yaml:"maxLength,omitempty" + // Minimum value for numeric types. + // Gen: manually-authored + Min float32 `protobuf:"fixed32,11,opt,name=min,proto3" json:"min,omitempty" yaml:"min,omitempty"` // @gotags: json:"min,omitempty" yaml:"min,omitempty" + // Max value for numeric types. + // Gen: manually-authored + Max float32 `protobuf:"fixed32,12,opt,name=max,proto3" json:"max,omitempty" yaml:"max,omitempty"` // @gotags: 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. + // Gen: manually-authored + Section string `protobuf:"bytes,13,opt,name=section,proto3" json:"section,omitempty" yaml:"section,omitempty"` // @gotags: json:"section,omitempty" yaml:"section,omitempty" + // UI extension associated with the input variable. + // E.g. for rendering a GCE machine type selector: + // + // xGoogleProperty: + // + // type: GCE_MACHINE_TYPE + // zoneProperty: myZone + // gceMachineType: + // minCpu: 2 + // minRamGb: + // + // Gen: manually-authored + XGoogleProperty *GooglePropertyExtension `protobuf:"bytes,14,opt,name=x_google_property,json=xGoogleProperty,proto3" json:"xGoogleProperty,omitempty" yaml:"xGoogleProperty,omitempty"` // @gotags: json:"xGoogleProperty,omitempty" yaml:"xGoogleProperty,omitempty" + // Text describing the validation rules for the property. Typically shown + // after an invalid input. + // Optional. UTF-8 text. No markup. At most 128 characters. + // Gen: manually-authored + Validation string `protobuf:"bytes,15,opt,name=validation,proto3" json:"validation,omitempty" yaml:"validation,omitempty"` // @gotags: json:"validation,omitempty" yaml:"validation,omitempty" +} + +func (x *DisplayVariable) Reset() { + *x = DisplayVariable{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisplayVariable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisplayVariable) ProtoMessage() {} + +func (x *DisplayVariable) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisplayVariable.ProtoReflect.Descriptor instead. +func (*DisplayVariable) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{1} +} + +func (x *DisplayVariable) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DisplayVariable) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *DisplayVariable) GetInvisible() bool { + if x != nil { + return x.Invisible + } + return false +} + +func (x *DisplayVariable) GetTooltip() string { + if x != nil { + return x.Tooltip + } + return "" +} + +func (x *DisplayVariable) GetPlaceholder() string { + if x != nil { + return x.Placeholder + } + return "" +} + +func (x *DisplayVariable) GetRegexValidation() string { + if x != nil { + return x.RegexValidation + } + return "" +} + +func (x *DisplayVariable) GetMinItems() int32 { + if x != nil { + return x.MinItems + } + return 0 +} + +func (x *DisplayVariable) GetMaxItems() int32 { + if x != nil { + return x.MaxItems + } + return 0 +} + +func (x *DisplayVariable) GetMinLength() int32 { + if x != nil { + return x.MinLength + } + return 0 +} + +func (x *DisplayVariable) GetMaxLength() int32 { + if x != nil { + return x.MaxLength + } + return 0 +} + +func (x *DisplayVariable) GetMin() float32 { + if x != nil { + return x.Min + } + return 0 +} + +func (x *DisplayVariable) GetMax() float32 { + if x != nil { + return x.Max + } + return 0 +} + +func (x *DisplayVariable) GetSection() string { + if x != nil { + return x.Section + } + return "" +} + +func (x *DisplayVariable) GetXGoogleProperty() *GooglePropertyExtension { + if x != nil { + return x.XGoogleProperty + } + return nil +} + +func (x *DisplayVariable) GetValidation() string { + if x != nil { + return x.Validation + } + return "" +} + +// A logical group of variables. [Section][]s may also be grouped into +// sub-sections. +type DisplaySection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the section, referenced by DisplayVariable.Section + // Section names must be unique. + // Gen: manually-authored + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + // Section title. + // If not provided, name will be used instead. + // Gen: manually-authored + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty" yaml:"title,omitempty"` // @gotags: json:"title,omitempty" yaml:"title,omitempty" + // Section tooltip. + // Gen: manually-authored + Tooltip string `protobuf:"bytes,3,opt,name=tooltip,proto3" json:"tooltip,omitempty" yaml:"tooltip,omitempty"` // @gotags: json:"tooltip,omitempty" yaml:"tooltip,omitempty" + // Section subtext. + // Gen: manually-authored + Subtext string `protobuf:"bytes,4,opt,name=subtext,proto3" json:"subtext,omitempty" yaml:"subtext,omitempty"` // @gotags: json:"subtext,omitempty" yaml:"subtext,omitempty" + // The name of the parent section (if parent is not the root section). + // Gen: manually-authored + Parent string `protobuf:"bytes,5,opt,name=parent,proto3" json:"parent,omitempty" yaml:"parent,omitempty"` // @gotags: json:"parent,omitempty" yaml:"parent,omitempty" +} + +func (x *DisplaySection) Reset() { + *x = DisplaySection{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisplaySection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisplaySection) ProtoMessage() {} + +func (x *DisplaySection) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisplaySection.ProtoReflect.Descriptor instead. +func (*DisplaySection) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{2} +} + +func (x *DisplaySection) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DisplaySection) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *DisplaySection) GetTooltip() string { + if x != nil { + return x.Tooltip + } + return "" +} + +func (x *DisplaySection) GetSubtext() string { + if x != nil { + return x.Subtext + } + return "" +} + +func (x *DisplaySection) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +type BlueprintUIOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Short message to be displayed while the blueprint is deploying. + // At most 128 characters. + // Gen: manually-authored + OutputMessage string `protobuf:"bytes,1,opt,name=output_message,json=outputMessage,proto3" json:"outputMessage,omitempty" yaml:"outputMessage,omitempty"` // @gotags: json:"outputMessage,omitempty" yaml:"outputMessage,omitempty" + // List of suggested actions to take. + // Gen: manually-authored + SuggestedActions []*UIActionItem `protobuf:"bytes,2,rep,name=suggested_actions,json=suggestedActions,proto3" json:"suggestedActions,omitempty" yaml:"suggestedActions,omitempty"` // @gotags: json:"suggestedActions,omitempty" yaml:"suggestedActions,omitempty" + // outputs is a map defining a subset of Terraform outputs on the UI + // that may need additional UI configuration. + // Gen: manually-authored + Outputs map[string]*DisplayOutput `protobuf:"bytes,3,rep,name=outputs,proto3" json:"outputs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"outputs,omitempty"` // @gotags: json:"outputs,omitempty" yaml:"outputs,omitempty" +} + +func (x *BlueprintUIOutput) Reset() { + *x = BlueprintUIOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintUIOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintUIOutput) ProtoMessage() {} + +func (x *BlueprintUIOutput) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintUIOutput.ProtoReflect.Descriptor instead. +func (*BlueprintUIOutput) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{3} +} + +func (x *BlueprintUIOutput) GetOutputMessage() string { + if x != nil { + return x.OutputMessage + } + return "" +} + +func (x *BlueprintUIOutput) GetSuggestedActions() []*UIActionItem { + if x != nil { + return x.SuggestedActions + } + return nil +} + +func (x *BlueprintUIOutput) GetOutputs() map[string]*DisplayOutput { + if x != nil { + return x.Outputs + } + return nil +} + +// An item appearing in a list of required or suggested steps. +type UIActionItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Summary heading for the item. + // Required. Accepts string expressions. At most 64 characters. + // Gen: manually-authored + Heading string `protobuf:"bytes,1,opt,name=heading,proto3" json:"heading" yaml:"heading"` // @gotags: json:"heading" yaml:"heading" + // Longer description of the item. + // At least one description or snippet is required. + // Accepts string expressions. HTML <a href> + // tags only. At most 512 characters. + // Gen: manually-authored + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: 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. + // Gen: manually-authored + Snippet string `protobuf:"bytes,3,opt,name=snippet,proto3" json:"snippet,omitempty" yaml:"snippet,omitempty"` // @gotags: 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. + // Gen: manually-authored + ShowIf string `protobuf:"bytes,4,opt,name=show_if,json=showIf,proto3" json:"showIf,omitempty" yaml:"showIf,omitempty"` // @gotags: json:"showIf,omitempty" yaml:"showIf,omitempty" +} + +func (x *UIActionItem) Reset() { + *x = UIActionItem{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UIActionItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UIActionItem) ProtoMessage() {} + +func (x *UIActionItem) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UIActionItem.ProtoReflect.Descriptor instead. +func (*UIActionItem) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{4} +} + +func (x *UIActionItem) GetHeading() string { + if x != nil { + return x.Heading + } + return "" +} + +func (x *UIActionItem) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *UIActionItem) GetSnippet() string { + if x != nil { + return x.Snippet + } + return "" +} + +func (x *UIActionItem) GetShowIf() string { + if x != nil { + return x.ShowIf + } + return "" +} + +// Additional display specific metadata pertaining to a particular +// Terraform output. +type DisplayOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // open_in_new_tab defines if the Output action should be opened + // in a new tab. + // Gen: manually-authored + OpenInNewTab bool `protobuf:"varint,1,opt,name=open_in_new_tab,json=openInNewTab,proto3" json:"openInNewTab,omitempty" yaml:"openInNewTab,omitempty"` // @gotags: json:"openInNewTab,omitempty" yaml:"openInNewTab,omitempty" + // show_in_notification defines if the Output should shown in + // notification for the deployment. + // Gen: manually-authored + ShowInNotification bool `protobuf:"varint,2,opt,name=show_in_notification,json=showInNotification,proto3" json:"showInNotification,omitempty" yaml:"showInNotification,omitempty"` // @gotags: json:"showInNotification,omitempty" yaml:"showInNotification,omitempty" +} + +func (x *DisplayOutput) Reset() { + *x = DisplayOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisplayOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisplayOutput) ProtoMessage() {} + +func (x *DisplayOutput) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisplayOutput.ProtoReflect.Descriptor instead. +func (*DisplayOutput) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{5} +} + +func (x *DisplayOutput) GetOpenInNewTab() bool { + if x != nil { + return x.OpenInNewTab + } + return false +} + +func (x *DisplayOutput) GetShowInNotification() bool { + if x != nil { + return x.ShowInNotification + } + return false +} + +var File_bpmetadata_ui_proto protoreflect.FileDescriptor + +var file_bpmetadata_ui_proto_rawDesc = []byte{ + 0x0a, 0x13, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x69, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x17, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x75, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, + 0x02, 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x12, 0x5d, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x55, 0x49, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x6d, + 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfb, 0x03, + 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, + 0x6e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x69, 0x6e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, + 0x6c, 0x74, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, + 0x74, 0x69, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, + 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, + 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1b, 0x0a, + 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x69, + 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x6d, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x78, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6d, + 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, + 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x63, 0x0a, 0x11, 0x78, 0x5f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x78, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x86, 0x01, 0x0a, 0x0e, + 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, + 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, + 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, + 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, + 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, + 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, + 0x22, 0x68, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, + 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, + 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, + 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, + 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_bpmetadata_ui_proto_rawDescOnce sync.Once + file_bpmetadata_ui_proto_rawDescData = file_bpmetadata_ui_proto_rawDesc +) + +func file_bpmetadata_ui_proto_rawDescGZIP() []byte { + file_bpmetadata_ui_proto_rawDescOnce.Do(func() { + file_bpmetadata_ui_proto_rawDescData = protoimpl.X.CompressGZIP(file_bpmetadata_ui_proto_rawDescData) + }) + return file_bpmetadata_ui_proto_rawDescData +} + +var file_bpmetadata_ui_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_bpmetadata_ui_proto_goTypes = []interface{}{ + (*BlueprintUIInput)(nil), // 0: google.cloud.config.bpmetadata.BlueprintUIInput + (*DisplayVariable)(nil), // 1: google.cloud.config.bpmetadata.DisplayVariable + (*DisplaySection)(nil), // 2: google.cloud.config.bpmetadata.DisplaySection + (*BlueprintUIOutput)(nil), // 3: google.cloud.config.bpmetadata.BlueprintUIOutput + (*UIActionItem)(nil), // 4: google.cloud.config.bpmetadata.UIActionItem + (*DisplayOutput)(nil), // 5: google.cloud.config.bpmetadata.DisplayOutput + nil, // 6: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry + nil, // 7: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry + (*GooglePropertyExtension)(nil), // 8: google.cloud.config.bpmetadata.GooglePropertyExtension +} +var file_bpmetadata_ui_proto_depIdxs = []int32{ + 6, // 0: google.cloud.config.bpmetadata.BlueprintUIInput.variables:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry + 2, // 1: google.cloud.config.bpmetadata.BlueprintUIInput.sections:type_name -> google.cloud.config.bpmetadata.DisplaySection + 8, // 2: google.cloud.config.bpmetadata.DisplayVariable.x_google_property:type_name -> google.cloud.config.bpmetadata.GooglePropertyExtension + 4, // 3: google.cloud.config.bpmetadata.BlueprintUIOutput.suggested_actions:type_name -> google.cloud.config.bpmetadata.UIActionItem + 7, // 4: google.cloud.config.bpmetadata.BlueprintUIOutput.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry + 1, // 5: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayVariable + 5, // 6: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayOutput + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { file_bpmetadata_ui_proto_init() } +func file_bpmetadata_ui_proto_init() { + if File_bpmetadata_ui_proto != nil { + return + } + file_bpmetadata_ui_ext_proto_init() + if !protoimpl.UnsafeEnabled { + file_bpmetadata_ui_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintUIInput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisplayVariable); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisplaySection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintUIOutput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UIActionItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisplayOutput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_bpmetadata_ui_proto_rawDesc, + NumEnums: 0, + NumMessages: 8, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_bpmetadata_ui_proto_goTypes, + DependencyIndexes: file_bpmetadata_ui_proto_depIdxs, + MessageInfos: file_bpmetadata_ui_proto_msgTypes, + }.Build() + File_bpmetadata_ui_proto = out.File + file_bpmetadata_ui_proto_rawDesc = nil + file_bpmetadata_ui_proto_goTypes = nil + file_bpmetadata_ui_proto_depIdxs = nil +} diff --git a/cli/bpmetadata/bpmetadata_ui_ext.pb.go b/cli/bpmetadata/bpmetadata_ui_ext.pb.go new file mode 100644 index 00000000000..bf49624cfe6 --- /dev/null +++ b/cli/bpmetadata/bpmetadata_ui_ext.pb.go @@ -0,0 +1,1567 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.12 +// source: bpmetadata_ui_ext.proto + +package bpmetadata + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// ExtensionType specifies the type of extension. +type ExtensionType int32 + +const ( + // EXTENSIONTYPE_UNDEFINED indicates that the extension type is undefined. + ExtensionType_ET_UNDEFINED ExtensionType = 0 + // General formats. + ExtensionType_ET_EMAIL_ADDRESS ExtensionType = 1 + ExtensionType_ET_MULTI_LINE_STRING ExtensionType = 2 + // GCE related. + ExtensionType_ET_GCE_DISK_IMAGE ExtensionType = 3 + ExtensionType_ET_GCE_DISK_TYPE ExtensionType = 4 + ExtensionType_ET_GCE_DISK_SIZE ExtensionType = 5 + ExtensionType_ET_GCE_MACHINE_TYPE ExtensionType = 6 + ExtensionType_ET_GCE_NETWORK ExtensionType = 7 + ExtensionType_ET_GCE_ZONE ExtensionType = 8 + ExtensionType_ET_GCE_SUBNETWORK ExtensionType = 9 + ExtensionType_ET_GCE_REGION ExtensionType = 10 + ExtensionType_ET_GCE_GPU_TYPE ExtensionType = 11 + ExtensionType_ET_GCE_GPU_COUNT ExtensionType = 12 + ExtensionType_ET_GCE_EXTERNAL_IP ExtensionType = 13 + ExtensionType_ET_GCE_IP_FORWARDING ExtensionType = 14 + ExtensionType_ET_GCE_FIREWALL ExtensionType = 15 + ExtensionType_ET_GCE_FIREWALL_RANGE ExtensionType = 16 + ExtensionType_ET_GCE_GENERIC_RESOURCE ExtensionType = 17 + // GCS related. + ExtensionType_ET_GCS_BUCKET ExtensionType = 18 + // IAM related. + ExtensionType_ET_IAM_SERVICE_ACCOUNT ExtensionType = 19 +) + +// Enum value maps for ExtensionType. +var ( + ExtensionType_name = map[int32]string{ + 0: "ET_UNDEFINED", + 1: "ET_EMAIL_ADDRESS", + 2: "ET_MULTI_LINE_STRING", + 3: "ET_GCE_DISK_IMAGE", + 4: "ET_GCE_DISK_TYPE", + 5: "ET_GCE_DISK_SIZE", + 6: "ET_GCE_MACHINE_TYPE", + 7: "ET_GCE_NETWORK", + 8: "ET_GCE_ZONE", + 9: "ET_GCE_SUBNETWORK", + 10: "ET_GCE_REGION", + 11: "ET_GCE_GPU_TYPE", + 12: "ET_GCE_GPU_COUNT", + 13: "ET_GCE_EXTERNAL_IP", + 14: "ET_GCE_IP_FORWARDING", + 15: "ET_GCE_FIREWALL", + 16: "ET_GCE_FIREWALL_RANGE", + 17: "ET_GCE_GENERIC_RESOURCE", + 18: "ET_GCS_BUCKET", + 19: "ET_IAM_SERVICE_ACCOUNT", + } + ExtensionType_value = map[string]int32{ + "ET_UNDEFINED": 0, + "ET_EMAIL_ADDRESS": 1, + "ET_MULTI_LINE_STRING": 2, + "ET_GCE_DISK_IMAGE": 3, + "ET_GCE_DISK_TYPE": 4, + "ET_GCE_DISK_SIZE": 5, + "ET_GCE_MACHINE_TYPE": 6, + "ET_GCE_NETWORK": 7, + "ET_GCE_ZONE": 8, + "ET_GCE_SUBNETWORK": 9, + "ET_GCE_REGION": 10, + "ET_GCE_GPU_TYPE": 11, + "ET_GCE_GPU_COUNT": 12, + "ET_GCE_EXTERNAL_IP": 13, + "ET_GCE_IP_FORWARDING": 14, + "ET_GCE_FIREWALL": 15, + "ET_GCE_FIREWALL_RANGE": 16, + "ET_GCE_GENERIC_RESOURCE": 17, + "ET_GCS_BUCKET": 18, + "ET_IAM_SERVICE_ACCOUNT": 19, + } +) + +func (x ExtensionType) Enum() *ExtensionType { + p := new(ExtensionType) + *p = x + return p +} + +func (x ExtensionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ExtensionType) Descriptor() protoreflect.EnumDescriptor { + return file_bpmetadata_ui_ext_proto_enumTypes[0].Descriptor() +} + +func (ExtensionType) Type() protoreflect.EnumType { + return &file_bpmetadata_ui_ext_proto_enumTypes[0] +} + +func (x ExtensionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ExtensionType.Descriptor instead. +func (ExtensionType) EnumDescriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{0} +} + +// ExternalIPType specifies the type of external IP address. +type ExternalIPType int32 + +const ( + ExternalIPType_IP_UNSPECIFIED ExternalIPType = 0 + // EPHEMERAL indicates that the external IP address is ephemeral. + ExternalIPType_IP_EPHEMERAL ExternalIPType = 1 + // STATIC indicates that the external IP address is static. + ExternalIPType_IP_STATIC ExternalIPType = 2 + // NONE indicates that an external IP is not assigned. + ExternalIPType_IP_NONE ExternalIPType = 3 +) + +// Enum value maps for ExternalIPType. +var ( + ExternalIPType_name = map[int32]string{ + 0: "IP_UNSPECIFIED", + 1: "IP_EPHEMERAL", + 2: "IP_STATIC", + 3: "IP_NONE", + } + ExternalIPType_value = map[string]int32{ + "IP_UNSPECIFIED": 0, + "IP_EPHEMERAL": 1, + "IP_STATIC": 2, + "IP_NONE": 3, + } +) + +func (x ExternalIPType) Enum() *ExternalIPType { + p := new(ExternalIPType) + *p = x + return p +} + +func (x ExternalIPType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ExternalIPType) Descriptor() protoreflect.EnumDescriptor { + return file_bpmetadata_ui_ext_proto_enumTypes[1].Descriptor() +} + +func (ExternalIPType) Type() protoreflect.EnumType { + return &file_bpmetadata_ui_ext_proto_enumTypes[1] +} + +func (x ExternalIPType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ExternalIPType.Descriptor instead. +func (ExternalIPType) EnumDescriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{1} +} + +// 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 GooglePropertyExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Type specifies the type of extension. + // Gen: manually-authored + Type ExtensionType `protobuf:"varint,1,opt,name=type,proto3,enum=google.cloud.config.bpmetadata.ExtensionType" json:"type" yaml:"type"` // @gotags: json:"type" 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. + // Gen: manually-authored + ZoneProperty string `protobuf:"bytes,2,opt,name=zone_property,json=zoneProperty,proto3" json:"zoneProperty,omitempty" yaml:"zoneProperty,omitempty"` // @gotags: json:"zoneProperty,omitempty" yaml:"zoneProperty,omitempty" + // Property-specific extensions. + // Gen: manually-authored (all property extensions and their child properties) + GceMachineType *GCEMachineTypeExtension `protobuf:"bytes,3,opt,name=gce_machine_type,json=gceMachineType,proto3" json:"gceMachineType,omitempty" yaml:"gceMachineType,omitempty"` // @gotags: json:"gceMachineType,omitempty" yaml:"gceMachineType,omitempty" + GceDiskSize *GCEDiskSizeExtension `protobuf:"bytes,4,opt,name=gce_disk_size,json=gceDiskSize,proto3" json:"gceDiskSize,omitempty" yaml:"gceDiskSize,omitempty"` // @gotags: json:"gceDiskSize,omitempty" yaml:"gceDiskSize,omitempty" + GceSubnetwork *GCESubnetworkExtension `protobuf:"bytes,5,opt,name=gce_subnetwork,json=gceSubnetwork,proto3" json:"gceSubnetwork,omitempty" yaml:"gceSubnetwork,omitempty"` // @gotags: json:"gceSubnetwork,omitempty" yaml:"gceSubnetwork,omitempty" + GceResource *GCEGenericResourceExtension `protobuf:"bytes,6,opt,name=gce_resource,json=gceResource,proto3" json:"gceResource,omitempty" yaml:"gceResource,omitempty"` // @gotags: json:"gceResource,omitempty" yaml:"gceResource,omitempty" + GceGpuType *GCEGPUTypeExtension `protobuf:"bytes,7,opt,name=gce_gpu_type,json=gceGpuType,proto3" json:"gceGpuType,omitempty" yaml:"gceGpuType,omitempty"` // @gotags: json:"gceGpuType,omitempty" yaml:"gceGpuType,omitempty" + GceGpuCount *GCEGPUCountExtension `protobuf:"bytes,8,opt,name=gce_gpu_count,json=gceGpuCount,proto3" json:"gceGpuCount,omitempty" yaml:"gceGpuCount,omitempty"` // @gotags: json:"gceGpuCount,omitempty" yaml:"gceGpuCount,omitempty" + GceNetwork *GCENetworkExtension `protobuf:"bytes,9,opt,name=gce_network,json=gceNetwork,proto3" json:"gceNetwork,omitempty" yaml:"gceNetwork,omitempty"` // @gotags: json:"gceNetwork,omitempty" yaml:"gceNetwork,omitempty" + GceExternalIp *GCEExternalIPExtension `protobuf:"bytes,10,opt,name=gce_external_ip,json=gceExternalIp,proto3" json:"gceExternalIp,omitempty" yaml:"gceExternalIp,omitempty"` // @gotags: json:"gceExternalIp,omitempty" yaml:"gceExternalIp,omitempty" + GceIpForwarding *GCEIPForwardingExtension `protobuf:"bytes,11,opt,name=gce_ip_forwarding,json=gceIpForwarding,proto3" json:"gceIpForwarding,omitempty" yaml:"gceIpForwarding,omitempty"` // @gotags: json:"gceIpForwarding,omitempty" yaml:"gceIpForwarding,omitempty" + GceFirewall *GCEFirewallExtension `protobuf:"bytes,12,opt,name=gce_firewall,json=gceFirewall,proto3" json:"gceFirewall,omitempty" yaml:"gceFirewall,omitempty"` // @gotags: json:"gceFirewall,omitempty" yaml:"gceFirewall,omitempty" + GceFirewallRange *GCEFirewallRangeExtension `protobuf:"bytes,13,opt,name=gce_firewall_range,json=gceFirewallRange,proto3" json:"gceFirewallRange,omitempty" yaml:"gceFirewallRange,omitempty"` // @gotags: json:"gceFirewallRange,omitempty" yaml:"gceFirewallRange,omitempty" + GceZone *GCELocationExtension `protobuf:"bytes,14,opt,name=gce_zone,json=gceZone,proto3" json:"gceZone,omitempty" yaml:"gceZone,omitempty"` // @gotags: json:"gceZone,omitempty" yaml:"gceZone,omitempty" + GceRegion *GCELocationExtension `protobuf:"bytes,15,opt,name=gce_region,json=gceRegion,proto3" json:"gceRegion,omitempty" yaml:"gceRegion,omitempty"` // @gotags: json:"gceRegion,omitempty" yaml:"gceRegion,omitempty" + IamServiceAccount *IAMServiceAccountExtension `protobuf:"bytes,16,opt,name=iam_service_account,json=iamServiceAccount,proto3" json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty"` // @gotags: json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty" +} + +func (x *GooglePropertyExtension) Reset() { + *x = GooglePropertyExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GooglePropertyExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GooglePropertyExtension) ProtoMessage() {} + +func (x *GooglePropertyExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GooglePropertyExtension.ProtoReflect.Descriptor instead. +func (*GooglePropertyExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{0} +} + +func (x *GooglePropertyExtension) GetType() ExtensionType { + if x != nil { + return x.Type + } + return ExtensionType_ET_UNDEFINED +} + +func (x *GooglePropertyExtension) GetZoneProperty() string { + if x != nil { + return x.ZoneProperty + } + return "" +} + +func (x *GooglePropertyExtension) GetGceMachineType() *GCEMachineTypeExtension { + if x != nil { + return x.GceMachineType + } + return nil +} + +func (x *GooglePropertyExtension) GetGceDiskSize() *GCEDiskSizeExtension { + if x != nil { + return x.GceDiskSize + } + return nil +} + +func (x *GooglePropertyExtension) GetGceSubnetwork() *GCESubnetworkExtension { + if x != nil { + return x.GceSubnetwork + } + return nil +} + +func (x *GooglePropertyExtension) GetGceResource() *GCEGenericResourceExtension { + if x != nil { + return x.GceResource + } + return nil +} + +func (x *GooglePropertyExtension) GetGceGpuType() *GCEGPUTypeExtension { + if x != nil { + return x.GceGpuType + } + return nil +} + +func (x *GooglePropertyExtension) GetGceGpuCount() *GCEGPUCountExtension { + if x != nil { + return x.GceGpuCount + } + return nil +} + +func (x *GooglePropertyExtension) GetGceNetwork() *GCENetworkExtension { + if x != nil { + return x.GceNetwork + } + return nil +} + +func (x *GooglePropertyExtension) GetGceExternalIp() *GCEExternalIPExtension { + if x != nil { + return x.GceExternalIp + } + return nil +} + +func (x *GooglePropertyExtension) GetGceIpForwarding() *GCEIPForwardingExtension { + if x != nil { + return x.GceIpForwarding + } + return nil +} + +func (x *GooglePropertyExtension) GetGceFirewall() *GCEFirewallExtension { + if x != nil { + return x.GceFirewall + } + return nil +} + +func (x *GooglePropertyExtension) GetGceFirewallRange() *GCEFirewallRangeExtension { + if x != nil { + return x.GceFirewallRange + } + return nil +} + +func (x *GooglePropertyExtension) GetGceZone() *GCELocationExtension { + if x != nil { + return x.GceZone + } + return nil +} + +func (x *GooglePropertyExtension) GetGceRegion() *GCELocationExtension { + if x != nil { + return x.GceRegion + } + return nil +} + +func (x *GooglePropertyExtension) GetIamServiceAccount() *IAMServiceAccountExtension { + if x != nil { + return x.IamServiceAccount + } + return nil +} + +// GCELocationExtension specifies a location extension for a Google Compute Engine (GCE) resource. +type GCELocationExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // AllowlistedZones is a list of zones that are allowed for the resource. + AllowlistedZones []string `protobuf:"bytes,1,rep,name=allowlisted_zones,json=allowlistedZones,proto3" json:"allowlistedZones,omitempty" yaml:"allowlistedZones,omitempty"` // @gotags: json:"allowlistedZones,omitempty" yaml:"allowlistedZones,omitempty" + // AllowlistedRegions is a list of regions that are allowed for the resource. + AllowlistedRegions []string `protobuf:"bytes,2,rep,name=allowlisted_regions,json=allowlistedRegions,proto3" json:"allowlistedRegions,omitempty" yaml:"allowlistedRegions,omitempty"` // @gotags: json:"allowlistedRegions,omitempty" yaml:"allowlistedRegions,omitempty" +} + +func (x *GCELocationExtension) Reset() { + *x = GCELocationExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCELocationExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCELocationExtension) ProtoMessage() {} + +func (x *GCELocationExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCELocationExtension.ProtoReflect.Descriptor instead. +func (*GCELocationExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{1} +} + +func (x *GCELocationExtension) GetAllowlistedZones() []string { + if x != nil { + return x.AllowlistedZones + } + return nil +} + +func (x *GCELocationExtension) GetAllowlistedRegions() []string { + if x != nil { + return x.AllowlistedRegions + } + return nil +} + +// GCEMachineTypeExtension specifies a machine type extension for a GCE resource. +type GCEMachineTypeExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Minimum cpu. Used to filter the list of selectable machine types. + MinCpu int32 `protobuf:"varint,1,opt,name=min_cpu,json=minCpu,proto3" json:"minCpu,omitempty" yaml:"minCpu,omitempty"` // @gotags: json:"minCpu,omitempty" yaml:"minCpu,omitempty" + // Minimum ram. Used to filter the list of selectable machine types. + MinRamGb float32 `protobuf:"fixed32,2,opt,name=min_ram_gb,json=minRamGb,proto3" json:"minRamGb,omitempty" yaml:"minRamGb,omitempty"` // @gotags: 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 `protobuf:"varint,3,opt,name=disallow_custom_machine_types,json=disallowCustomMachineTypes,proto3" json:"disallowCustomMachineTypes,omitempty" yaml:"disallowCustomMachineTypes,omitempty"` // @gotags: json:"disallowCustomMachineTypes,omitempty" yaml:"disallowCustomMachineTypes,omitempty" +} + +func (x *GCEMachineTypeExtension) Reset() { + *x = GCEMachineTypeExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEMachineTypeExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEMachineTypeExtension) ProtoMessage() {} + +func (x *GCEMachineTypeExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEMachineTypeExtension.ProtoReflect.Descriptor instead. +func (*GCEMachineTypeExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{2} +} + +func (x *GCEMachineTypeExtension) GetMinCpu() int32 { + if x != nil { + return x.MinCpu + } + return 0 +} + +func (x *GCEMachineTypeExtension) GetMinRamGb() float32 { + if x != nil { + return x.MinRamGb + } + return 0 +} + +func (x *GCEMachineTypeExtension) GetDisallowCustomMachineTypes() bool { + if x != nil { + return x.DisallowCustomMachineTypes + } + return false +} + +// GCEGPUTypeExtension specifies a GPU type extension for a GCE resource. +type GCEGPUTypeExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // MachineType is the name of the machine type that the GPU is attached to. + MachineType string `protobuf:"bytes,1,opt,name=machine_type,json=machineType,proto3" json:"machineType" yaml:"machineType"` // @gotags: json:"machineType" yaml:"machineType" + // GPUType is the type(s) of GPU that is attached to the machine. + GpuType []string `protobuf:"bytes,2,rep,name=gpu_type,json=gpuType,proto3" json:"gpuType,omitempty" yaml:"gpuType,omitempty"` // @gotags: json:"gpuType,omitempty" yaml:"gpuType,omitempty" +} + +func (x *GCEGPUTypeExtension) Reset() { + *x = GCEGPUTypeExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEGPUTypeExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEGPUTypeExtension) ProtoMessage() {} + +func (x *GCEGPUTypeExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEGPUTypeExtension.ProtoReflect.Descriptor instead. +func (*GCEGPUTypeExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{3} +} + +func (x *GCEGPUTypeExtension) GetMachineType() string { + if x != nil { + return x.MachineType + } + return "" +} + +func (x *GCEGPUTypeExtension) GetGpuType() []string { + if x != nil { + return x.GpuType + } + return nil +} + +// GCEGPUCountExtension specifies the number of GPUs that should be attached to a machine. +type GCEGPUCountExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // This field references another variable from the schema, + // which must have type GCEMachineType. + MachineTypeVariable string `protobuf:"bytes,1,opt,name=machine_type_variable,json=machineTypeVariable,proto3" json:"machineTypeVariable" yaml:"machineTypeVariable"` // @gotags: json:"machineTypeVariable" yaml:"machineTypeVariable" +} + +func (x *GCEGPUCountExtension) Reset() { + *x = GCEGPUCountExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEGPUCountExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEGPUCountExtension) ProtoMessage() {} + +func (x *GCEGPUCountExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEGPUCountExtension.ProtoReflect.Descriptor instead. +func (*GCEGPUCountExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{4} +} + +func (x *GCEGPUCountExtension) GetMachineTypeVariable() string { + if x != nil { + return x.MachineTypeVariable + } + return "" +} + +// GCEDiskSizeExtension specifies the size of a disk for a GCE resource. +type GCEDiskSizeExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // 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 `protobuf:"bytes,1,opt,name=disk_type_variable,json=diskTypeVariable,proto3" json:"diskTypeVariable" yaml:"diskTypeVariable"` // @gotags: json:"diskTypeVariable" yaml:"diskTypeVariable" +} + +func (x *GCEDiskSizeExtension) Reset() { + *x = GCEDiskSizeExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEDiskSizeExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEDiskSizeExtension) ProtoMessage() {} + +func (x *GCEDiskSizeExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEDiskSizeExtension.ProtoReflect.Descriptor instead. +func (*GCEDiskSizeExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{5} +} + +func (x *GCEDiskSizeExtension) GetDiskTypeVariable() string { + if x != nil { + return x.DiskTypeVariable + } + return "" +} + +// GCENetworkExtension specifies a network extension for a GCE resource. +type GCENetworkExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // AllowSharedVpcs indicates this solution can receive + // shared VPC selflinks (fully qualified compute links). + AllowSharedVpcs bool `protobuf:"varint,1,opt,name=allow_shared_vpcs,json=allowSharedVpcs,proto3" json:"allowSharedVpcs,omitempty" yaml:"allowSharedVpcs,omitempty"` // @gotags: json:"allowSharedVpcs,omitempty" yaml:"allowSharedVpcs,omitempty" + // Used to indicate to which machine type this network interface will be + // attached to. + MachineTypeVariable string `protobuf:"bytes,2,opt,name=machine_type_variable,json=machineTypeVariable,proto3" json:"machineTypeVariable" yaml:"machineTypeVariable"` // @gotags: json:"machineTypeVariable" yaml:"machineTypeVariable" + // Label that will be in front of each Network Interface. + Labels []string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" yaml:"labels,omitempty"` // @gotags: json:"labels,omitempty" yaml:"labels,omitempty" +} + +func (x *GCENetworkExtension) Reset() { + *x = GCENetworkExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCENetworkExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCENetworkExtension) ProtoMessage() {} + +func (x *GCENetworkExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCENetworkExtension.ProtoReflect.Descriptor instead. +func (*GCENetworkExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{6} +} + +func (x *GCENetworkExtension) GetAllowSharedVpcs() bool { + if x != nil { + return x.AllowSharedVpcs + } + return false +} + +func (x *GCENetworkExtension) GetMachineTypeVariable() string { + if x != nil { + return x.MachineTypeVariable + } + return "" +} + +func (x *GCENetworkExtension) GetLabels() []string { + if x != nil { + return x.Labels + } + return nil +} + +type GCEExternalIPExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // NetworkVariable is the name of the network variable that the external IP address belongs to. + NetworkVariable string `protobuf:"bytes,1,opt,name=network_variable,json=networkVariable,proto3" json:"networkVariable" yaml:"networkVariable"` // @gotags: json:"networkVariable" yaml:"networkVariable" + // Type specifies the type of external IP address. Defaults to EPHEMERAL if not specified. + Type ExternalIPType `protobuf:"varint,2,opt,name=type,proto3,enum=google.cloud.config.bpmetadata.ExternalIPType" json:"type,omitempty" yaml:"type,omitempty"` // @gotags: json:"type,omitempty" yaml:"type,omitempty" + // Flag to denote if an external IP should be configurable. + NotConfigurable bool `protobuf:"varint,3,opt,name=not_configurable,json=notConfigurable,proto3" json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty"` // @gotags: json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty" + // Flag to denote if static IPs are allowed for the external IP. + AllowStaticIps bool `protobuf:"varint,4,opt,name=allow_static_ips,json=allowStaticIps,proto3" json:"allowStaticIPs,omitempty" yaml:"allowStaticIPs,omitempty"` // @gotags: json:"allowStaticIPs,omitempty" yaml:"allowStaticIPs,omitempty" +} + +func (x *GCEExternalIPExtension) Reset() { + *x = GCEExternalIPExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEExternalIPExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEExternalIPExtension) ProtoMessage() {} + +func (x *GCEExternalIPExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEExternalIPExtension.ProtoReflect.Descriptor instead. +func (*GCEExternalIPExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{7} +} + +func (x *GCEExternalIPExtension) GetNetworkVariable() string { + if x != nil { + return x.NetworkVariable + } + return "" +} + +func (x *GCEExternalIPExtension) GetType() ExternalIPType { + if x != nil { + return x.Type + } + return ExternalIPType_IP_UNSPECIFIED +} + +func (x *GCEExternalIPExtension) GetNotConfigurable() bool { + if x != nil { + return x.NotConfigurable + } + return false +} + +func (x *GCEExternalIPExtension) GetAllowStaticIps() bool { + if x != nil { + return x.AllowStaticIps + } + return false +} + +// GCEIPForwardingExtension specifies an IP forwarding extension for a GCE resource. +type GCEIPForwardingExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // NetworkVariable is the name of the network variable that the IP forwarding belongs to. + NetworkVariable string `protobuf:"bytes,1,opt,name=network_variable,json=networkVariable,proto3" json:"networkVariable" yaml:"networkVariable"` // @gotags: json:"networkVariable" yaml:"networkVariable" + // NotConfigurable specifies whether the IP forwarding is configurable. Defaults to false if not specified. + NotConfigurable bool `protobuf:"varint,2,opt,name=not_configurable,json=notConfigurable,proto3" json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty"` // @gotags: json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty" +} + +func (x *GCEIPForwardingExtension) Reset() { + *x = GCEIPForwardingExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEIPForwardingExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEIPForwardingExtension) ProtoMessage() {} + +func (x *GCEIPForwardingExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEIPForwardingExtension.ProtoReflect.Descriptor instead. +func (*GCEIPForwardingExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{8} +} + +func (x *GCEIPForwardingExtension) GetNetworkVariable() string { + if x != nil { + return x.NetworkVariable + } + return "" +} + +func (x *GCEIPForwardingExtension) GetNotConfigurable() bool { + if x != nil { + return x.NotConfigurable + } + return false +} + +type GCEFirewallExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // NetworkVariable is used to indicate the network variable in the schema + // this external IP belongs to. + NetworkVariable string `protobuf:"bytes,1,opt,name=network_variable,json=networkVariable,proto3" json:"networkVariable" yaml:"networkVariable"` // @gotags: json:"networkVariable" yaml:"networkVariable" +} + +func (x *GCEFirewallExtension) Reset() { + *x = GCEFirewallExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEFirewallExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEFirewallExtension) ProtoMessage() {} + +func (x *GCEFirewallExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEFirewallExtension.ProtoReflect.Descriptor instead. +func (*GCEFirewallExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{9} +} + +func (x *GCEFirewallExtension) GetNetworkVariable() string { + if x != nil { + return x.NetworkVariable + } + return "" +} + +type GCEFirewallRangeExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // FirewallVariable is used to indicate the firewall variable with the type + // GCEFirewall in the schema to which this firewall range belongs to. + FirewallVariable string `protobuf:"bytes,1,opt,name=firewall_variable,json=firewallVariable,proto3" json:"firewallVariable" yaml:"firewallVariable"` // @gotags: json:"firewallVariable" yaml:"firewallVariable" +} + +func (x *GCEFirewallRangeExtension) Reset() { + *x = GCEFirewallRangeExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEFirewallRangeExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEFirewallRangeExtension) ProtoMessage() {} + +func (x *GCEFirewallRangeExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEFirewallRangeExtension.ProtoReflect.Descriptor instead. +func (*GCEFirewallRangeExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{10} +} + +func (x *GCEFirewallRangeExtension) GetFirewallVariable() string { + if x != nil { + return x.FirewallVariable + } + return "" +} + +type GCESubnetworkExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // 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 `protobuf:"bytes,1,opt,name=network_variable,json=networkVariable,proto3" json:"networkVariable" yaml:"networkVariable"` // @gotags: json:"networkVariable" yaml:"networkVariable" +} + +func (x *GCESubnetworkExtension) Reset() { + *x = GCESubnetworkExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCESubnetworkExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCESubnetworkExtension) ProtoMessage() {} + +func (x *GCESubnetworkExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCESubnetworkExtension.ProtoReflect.Descriptor instead. +func (*GCESubnetworkExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{11} +} + +func (x *GCESubnetworkExtension) GetNetworkVariable() string { + if x != nil { + return x.NetworkVariable + } + return "" +} + +type GCEGenericResourceExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // GCE resource type to be fetched. This field references another + // property from the schema, which must have type GCEGenericResource. + ResourceVariable string `protobuf:"bytes,1,opt,name=resource_variable,json=resourceVariable,proto3" json:"resourceVariable" yaml:"resourceVariable"` // @gotags: json:"resourceVariable" yaml:"resourceVariable" +} + +func (x *GCEGenericResourceExtension) Reset() { + *x = GCEGenericResourceExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEGenericResourceExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEGenericResourceExtension) ProtoMessage() {} + +func (x *GCEGenericResourceExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEGenericResourceExtension.ProtoReflect.Descriptor instead. +func (*GCEGenericResourceExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{12} +} + +func (x *GCEGenericResourceExtension) GetResourceVariable() string { + if x != nil { + return x.ResourceVariable + } + return "" +} + +type IAMServiceAccountExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of IAM roles that to grant to a new SA, or the roles to filter + // existing SAs with. + Roles []string `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles" yaml:"roles"` // @gotags: json:"roles" yaml:"roles" +} + +func (x *IAMServiceAccountExtension) Reset() { + *x = IAMServiceAccountExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IAMServiceAccountExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IAMServiceAccountExtension) ProtoMessage() {} + +func (x *IAMServiceAccountExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IAMServiceAccountExtension.ProtoReflect.Descriptor instead. +func (*IAMServiceAccountExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{13} +} + +func (x *IAMServiceAccountExtension) GetRoles() []string { + if x != nil { + return x.Roles + } + return nil +} + +var File_bpmetadata_ui_ext_proto protoreflect.FileDescriptor + +var file_bpmetadata_ui_ext_proto_rawDesc = []byte{ + 0x0a, 0x17, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x69, 0x5f, + 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x9e, 0x0b, 0x0a, 0x17, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x7a, 0x6f, 0x6e, 0x65, + 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x7a, 0x6f, 0x6e, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x61, 0x0a, + 0x10, 0x67, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x4d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x0e, 0x67, 0x63, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x58, 0x0a, 0x0d, 0x67, 0x63, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x44, 0x69, 0x73, 0x6b, + 0x53, 0x69, 0x7a, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, + 0x63, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x5d, 0x0a, 0x0e, 0x67, 0x63, + 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x67, 0x63, 0x65, 0x53, + 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x5e, 0x0a, 0x0c, 0x67, 0x63, 0x65, + 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x47, 0x43, 0x45, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x0c, 0x67, 0x63, 0x65, + 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x67, 0x63, 0x65, 0x47, 0x70, 0x75, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x58, 0x0a, 0x0d, 0x67, 0x63, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, + 0x63, 0x65, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x54, 0x0a, 0x0b, 0x67, 0x63, + 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x47, 0x43, 0x45, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x67, 0x63, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x12, 0x5e, 0x0a, 0x0f, 0x67, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x5f, 0x69, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x45, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x0d, 0x67, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x70, + 0x12, 0x64, 0x0a, 0x11, 0x67, 0x63, 0x65, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, + 0x49, 0x50, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x67, 0x63, 0x65, 0x49, 0x70, 0x46, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x0c, 0x67, 0x63, 0x65, 0x5f, 0x66, 0x69, + 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, + 0x45, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x0b, 0x67, 0x63, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x12, + 0x67, 0x0a, 0x12, 0x67, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, + 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, + 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x67, 0x63, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, + 0x61, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x4f, 0x0a, 0x08, 0x67, 0x63, 0x65, 0x5f, + 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x07, 0x67, 0x63, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x53, 0x0a, 0x0a, 0x67, 0x63, 0x65, + 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, + 0x43, 0x45, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x67, 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x6a, + 0x0a, 0x13, 0x69, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x41, 0x4d, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x69, 0x61, 0x6d, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x74, 0x0a, 0x14, 0x47, 0x43, + 0x45, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, + 0x64, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5a, 0x6f, 0x6e, 0x65, 0x73, 0x12, + 0x2f, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x72, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0x93, 0x01, 0x0a, 0x17, 0x47, 0x43, 0x45, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, + 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, + 0x69, 0x6e, 0x43, 0x70, 0x75, 0x12, 0x1c, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x61, 0x6d, + 0x5f, 0x67, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x52, 0x61, + 0x6d, 0x47, 0x62, 0x12, 0x41, 0x0a, 0x1d, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x64, 0x69, 0x73, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x53, 0x0a, 0x13, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, + 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, + 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x19, 0x0a, 0x08, 0x67, 0x70, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x07, 0x67, 0x70, 0x75, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4a, 0x0a, 0x14, 0x47, + 0x43, 0x45, 0x47, 0x50, 0x55, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x44, 0x0a, 0x14, 0x47, 0x43, 0x45, 0x44, 0x69, + 0x73, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x2c, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x69, 0x73, + 0x6b, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x8d, 0x01, + 0x0a, 0x13, 0x47, 0x43, 0x45, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x76, 0x70, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x56, 0x70, 0x63, + 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0xdc, 0x01, + 0x0a, 0x16, 0x47, 0x43, 0x45, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x74, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x63, 0x5f, 0x69, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x49, 0x70, 0x73, 0x22, 0x70, 0x0a, 0x18, + 0x47, 0x43, 0x45, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, + 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x41, + 0x0a, 0x14, 0x47, 0x43, 0x45, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x22, 0x48, 0x0a, 0x19, 0x47, 0x43, 0x45, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, + 0x0a, 0x11, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x66, 0x69, 0x72, 0x65, 0x77, + 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x43, 0x0a, 0x16, 0x47, + 0x43, 0x45, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x22, 0x4a, 0x0a, 0x1b, 0x47, 0x43, 0x45, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x32, 0x0a, 0x1a, + 0x49, 0x41, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, + 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, + 0x2a, 0xd5, 0x03, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x54, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, + 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x54, + 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, + 0x4e, 0x47, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, + 0x49, 0x53, 0x4b, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x45, + 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, + 0x04, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, + 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x54, 0x5f, 0x47, 0x43, + 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x06, + 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, + 0x52, 0x4b, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x5a, + 0x4f, 0x4e, 0x45, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, + 0x53, 0x55, 0x42, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, + 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, + 0x13, 0x0a, 0x0f, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, 0x50, 0x55, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x10, 0x0b, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, + 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x54, + 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x49, 0x50, + 0x10, 0x0d, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x5f, + 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, + 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x46, 0x49, 0x52, 0x45, 0x57, 0x41, 0x4c, 0x4c, 0x10, + 0x0f, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x46, 0x49, 0x52, 0x45, + 0x57, 0x41, 0x4c, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x10, 0x12, 0x1b, 0x0a, 0x17, + 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x52, + 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x54, 0x5f, + 0x47, 0x43, 0x53, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x12, 0x12, 0x1a, 0x0a, 0x16, + 0x45, 0x54, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, + 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x13, 0x2a, 0x52, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x50, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, + 0x0a, 0x0c, 0x49, 0x50, 0x5f, 0x45, 0x50, 0x48, 0x45, 0x4d, 0x45, 0x52, 0x41, 0x4c, 0x10, 0x01, + 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x02, 0x12, + 0x0b, 0x0a, 0x07, 0x49, 0x50, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x42, 0x48, 0x5a, 0x46, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, + 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_bpmetadata_ui_ext_proto_rawDescOnce sync.Once + file_bpmetadata_ui_ext_proto_rawDescData = file_bpmetadata_ui_ext_proto_rawDesc +) + +func file_bpmetadata_ui_ext_proto_rawDescGZIP() []byte { + file_bpmetadata_ui_ext_proto_rawDescOnce.Do(func() { + file_bpmetadata_ui_ext_proto_rawDescData = protoimpl.X.CompressGZIP(file_bpmetadata_ui_ext_proto_rawDescData) + }) + return file_bpmetadata_ui_ext_proto_rawDescData +} + +var file_bpmetadata_ui_ext_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_bpmetadata_ui_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_bpmetadata_ui_ext_proto_goTypes = []interface{}{ + (ExtensionType)(0), // 0: google.cloud.config.bpmetadata.ExtensionType + (ExternalIPType)(0), // 1: google.cloud.config.bpmetadata.ExternalIPType + (*GooglePropertyExtension)(nil), // 2: google.cloud.config.bpmetadata.GooglePropertyExtension + (*GCELocationExtension)(nil), // 3: google.cloud.config.bpmetadata.GCELocationExtension + (*GCEMachineTypeExtension)(nil), // 4: google.cloud.config.bpmetadata.GCEMachineTypeExtension + (*GCEGPUTypeExtension)(nil), // 5: google.cloud.config.bpmetadata.GCEGPUTypeExtension + (*GCEGPUCountExtension)(nil), // 6: google.cloud.config.bpmetadata.GCEGPUCountExtension + (*GCEDiskSizeExtension)(nil), // 7: google.cloud.config.bpmetadata.GCEDiskSizeExtension + (*GCENetworkExtension)(nil), // 8: google.cloud.config.bpmetadata.GCENetworkExtension + (*GCEExternalIPExtension)(nil), // 9: google.cloud.config.bpmetadata.GCEExternalIPExtension + (*GCEIPForwardingExtension)(nil), // 10: google.cloud.config.bpmetadata.GCEIPForwardingExtension + (*GCEFirewallExtension)(nil), // 11: google.cloud.config.bpmetadata.GCEFirewallExtension + (*GCEFirewallRangeExtension)(nil), // 12: google.cloud.config.bpmetadata.GCEFirewallRangeExtension + (*GCESubnetworkExtension)(nil), // 13: google.cloud.config.bpmetadata.GCESubnetworkExtension + (*GCEGenericResourceExtension)(nil), // 14: google.cloud.config.bpmetadata.GCEGenericResourceExtension + (*IAMServiceAccountExtension)(nil), // 15: google.cloud.config.bpmetadata.IAMServiceAccountExtension +} +var file_bpmetadata_ui_ext_proto_depIdxs = []int32{ + 0, // 0: google.cloud.config.bpmetadata.GooglePropertyExtension.type:type_name -> google.cloud.config.bpmetadata.ExtensionType + 4, // 1: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_machine_type:type_name -> google.cloud.config.bpmetadata.GCEMachineTypeExtension + 7, // 2: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_disk_size:type_name -> google.cloud.config.bpmetadata.GCEDiskSizeExtension + 13, // 3: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_subnetwork:type_name -> google.cloud.config.bpmetadata.GCESubnetworkExtension + 14, // 4: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_resource:type_name -> google.cloud.config.bpmetadata.GCEGenericResourceExtension + 5, // 5: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_gpu_type:type_name -> google.cloud.config.bpmetadata.GCEGPUTypeExtension + 6, // 6: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_gpu_count:type_name -> google.cloud.config.bpmetadata.GCEGPUCountExtension + 8, // 7: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_network:type_name -> google.cloud.config.bpmetadata.GCENetworkExtension + 9, // 8: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_external_ip:type_name -> google.cloud.config.bpmetadata.GCEExternalIPExtension + 10, // 9: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_ip_forwarding:type_name -> google.cloud.config.bpmetadata.GCEIPForwardingExtension + 11, // 10: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_firewall:type_name -> google.cloud.config.bpmetadata.GCEFirewallExtension + 12, // 11: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_firewall_range:type_name -> google.cloud.config.bpmetadata.GCEFirewallRangeExtension + 3, // 12: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_zone:type_name -> google.cloud.config.bpmetadata.GCELocationExtension + 3, // 13: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_region:type_name -> google.cloud.config.bpmetadata.GCELocationExtension + 15, // 14: google.cloud.config.bpmetadata.GooglePropertyExtension.iam_service_account:type_name -> google.cloud.config.bpmetadata.IAMServiceAccountExtension + 1, // 15: google.cloud.config.bpmetadata.GCEExternalIPExtension.type:type_name -> google.cloud.config.bpmetadata.ExternalIPType + 16, // [16:16] is the sub-list for method output_type + 16, // [16:16] is the sub-list for method input_type + 16, // [16:16] is the sub-list for extension type_name + 16, // [16:16] is the sub-list for extension extendee + 0, // [0:16] is the sub-list for field type_name +} + +func init() { file_bpmetadata_ui_ext_proto_init() } +func file_bpmetadata_ui_ext_proto_init() { + if File_bpmetadata_ui_ext_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_bpmetadata_ui_ext_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GooglePropertyExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCELocationExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEMachineTypeExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEGPUTypeExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEGPUCountExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEDiskSizeExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCENetworkExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEExternalIPExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEIPForwardingExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEFirewallExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEFirewallRangeExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCESubnetworkExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEGenericResourceExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IAMServiceAccountExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_bpmetadata_ui_ext_proto_rawDesc, + NumEnums: 2, + NumMessages: 14, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_bpmetadata_ui_ext_proto_goTypes, + DependencyIndexes: file_bpmetadata_ui_ext_proto_depIdxs, + EnumInfos: file_bpmetadata_ui_ext_proto_enumTypes, + MessageInfos: file_bpmetadata_ui_ext_proto_msgTypes, + }.Build() + File_bpmetadata_ui_ext_proto = out.File + file_bpmetadata_ui_ext_proto_rawDesc = nil + file_bpmetadata_ui_ext_proto_goTypes = nil + file_bpmetadata_ui_ext_proto_depIdxs = nil +} From 0a532a546e92b761f734e83784d4f7a2955d20af Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Wed, 12 Jul 2023 18:04:51 -0700 Subject: [PATCH 6/7] added build to test target --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 803c28f7915..b73ccfb257f 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -52,7 +52,7 @@ int_test: ${INT_TEST_DIR}/workflow.sh ${INT_TEST_DIR} .PHONY: go_test -go_test: +go_test: build go test ./... .PHONY: test From 4a91f116ecc37e203bc6b7df626386317982da4b Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Mon, 31 Jul 2023 14:07:27 -0700 Subject: [PATCH 7/7] reconciling makefile changes --- cli/Makefile | 6 +++--- cli/bpmetadata/bpmetadata.pb.go | 4 ++-- cli/bpmetadata/bpmetadata_ui.pb.go | 4 ++-- cli/bpmetadata/bpmetadata_ui_ext.pb.go | 4 ++-- .../developer-tools/build/scripts/task_helper_functions.sh | 1 + 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 8067895affa..07cda1b828e 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -27,9 +27,9 @@ build: protoc-gen build-schema protoc-gen: docker run --rm -it \ -v "$(CURDIR)":/workspace \ - $(REGISTRY_URL)/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ - protoc -I=${SRC_PROTO_DIR} --go_opt=paths=source_relative --go_out=${PROTOC_DIR} ${SRC_PROTO_DIR}/*.proto && \ - protoc-go-inject-tag -input="${PROTOC_DIR}/*.pb.go" + $(REGISTRY_URL)/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ + protoc -I=${SRC_PROTO_DIR} --go_opt=paths=source_relative --go_out=${PROTOC_DIR} ${SRC_PROTO_DIR}/*.proto && \ + protoc-go-inject-tag -input="${PROTOC_DIR}/*.pb.go" .PHONY: build-schema build-schema: diff --git a/cli/bpmetadata/bpmetadata.pb.go b/cli/bpmetadata/bpmetadata.pb.go index ccd310d78d4..f777b3d25c1 100644 --- a/cli/bpmetadata/bpmetadata.pb.go +++ b/cli/bpmetadata/bpmetadata.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 -// protoc v3.21.12 +// protoc-gen-go v1.31.0 +// protoc v4.23.4 // source: bpmetadata.proto package bpmetadata diff --git a/cli/bpmetadata/bpmetadata_ui.pb.go b/cli/bpmetadata/bpmetadata_ui.pb.go index c0206987d15..f3ef4f9b4ff 100644 --- a/cli/bpmetadata/bpmetadata_ui.pb.go +++ b/cli/bpmetadata/bpmetadata_ui.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 -// protoc v3.21.12 +// protoc-gen-go v1.31.0 +// protoc v4.23.4 // source: bpmetadata_ui.proto package bpmetadata diff --git a/cli/bpmetadata/bpmetadata_ui_ext.pb.go b/cli/bpmetadata/bpmetadata_ui_ext.pb.go index bf49624cfe6..0796148f2ab 100644 --- a/cli/bpmetadata/bpmetadata_ui_ext.pb.go +++ b/cli/bpmetadata/bpmetadata_ui_ext.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 -// protoc v3.21.12 +// protoc-gen-go v1.31.0 +// protoc v4.23.4 // source: bpmetadata_ui_ext.proto package bpmetadata diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 1d5916c5919..2800ddbfbe0 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -331,6 +331,7 @@ function generate_metadata() { if [ $? -ne 0 ]; then echo "Warning! Unable to generate metadata." + return 1 fi # add headers since comments are not preserved with metadata generation # TODO: b/260869608