diff --git a/gen/go/infracost/parser/options/options.pb.go b/gen/go/infracost/parser/options/options.pb.go index 115274e..7cc0ee8 100644 --- a/gen/go/infracost/parser/options/options.pb.go +++ b/gen/go/infracost/parser/options/options.pb.go @@ -120,8 +120,18 @@ type GenericOptions struct { // Force module sources to resolve as local paths instead of downloading them. Source: caller flag. // Consumed by the terraform-family plugins. ForceLocalModulePaths bool `protobuf:"varint,19,opt,name=force_local_module_paths,json=forceLocalModulePaths,proto3" json:"force_local_module_paths,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // The Terraform workspace to select when parsing. Source: the project's configured workspace + // (config file / INFRACOST_TERRAFORM_WORKSPACE env). Consumed by the terraform-family plugins. + // It is a caller-sourced runtime option, NOT part of the raw_options blob, because it is also read + // outside the plugin (e.g. the project's workspace in the cost output / provider input). + Workspace string `protobuf:"bytes,20,opt,name=workspace,proto3" json:"workspace,omitempty"` + // Terraform Cloud / Enterprise identity for the project. Source: the project's configured + // terraform.cloud.*. Consumed by the terraform-family plugins to read the remote workspace. Typed + // (not in the raw_options blob) because it is caller-sourced and the hostname is also read by the + // caller to pair with the token in a terraform-cloud credential_set. + TerraformCloudConfiguration *TerraformCloudConfiguration `protobuf:"bytes,21,opt,name=terraform_cloud_configuration,json=terraformCloudConfiguration,proto3" json:"terraform_cloud_configuration,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GenericOptions) Reset() { @@ -287,6 +297,88 @@ func (x *GenericOptions) GetForceLocalModulePaths() bool { return false } +func (x *GenericOptions) GetWorkspace() string { + if x != nil { + return x.Workspace + } + return "" +} + +func (x *GenericOptions) GetTerraformCloudConfiguration() *TerraformCloudConfiguration { + if x != nil { + return x.TerraformCloudConfiguration + } + return nil +} + +// TerraformCloudConfiguration identifies the Terraform Cloud / Enterprise workspace to read. The +// plugin pairs it with its auth token by matching hostname against a credential_set's host, then +// uses organization + workspace to address the remote workspace. NOTE: this workspace is the TFC +// remote workspace, distinct from GenericOptions.workspace (the terraform CLI workspace). +type TerraformCloudConfiguration struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The Terraform Cloud organization. + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + // The Terraform Cloud remote workspace name. + Workspace string `protobuf:"bytes,2,opt,name=workspace,proto3" json:"workspace,omitempty"` + // The Terraform Cloud / Enterprise hostname (e.g. app.terraform.io); the key used to pair with the + // credential_set that carries the token for this host. + Hostname string `protobuf:"bytes,3,opt,name=hostname,proto3" json:"hostname,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TerraformCloudConfiguration) Reset() { + *x = TerraformCloudConfiguration{} + mi := &file_infracost_parser_options_options_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TerraformCloudConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TerraformCloudConfiguration) ProtoMessage() {} + +func (x *TerraformCloudConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_infracost_parser_options_options_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TerraformCloudConfiguration.ProtoReflect.Descriptor instead. +func (*TerraformCloudConfiguration) Descriptor() ([]byte, []int) { + return file_infracost_parser_options_options_proto_rawDescGZIP(), []int{1} +} + +func (x *TerraformCloudConfiguration) GetOrganization() string { + if x != nil { + return x.Organization + } + return "" +} + +func (x *TerraformCloudConfiguration) GetWorkspace() string { + if x != nil { + return x.Workspace + } + return "" +} + +func (x *TerraformCloudConfiguration) GetHostname() string { + if x != nil { + return x.Hostname + } + return "" +} + // AttributeRequirement lists the attributes a given resource type must set for a FinOps // naming/tagging policy. type AttributeRequirement struct { @@ -301,7 +393,7 @@ type AttributeRequirement struct { func (x *AttributeRequirement) Reset() { *x = AttributeRequirement{} - mi := &file_infracost_parser_options_options_proto_msgTypes[1] + mi := &file_infracost_parser_options_options_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -313,7 +405,7 @@ func (x *AttributeRequirement) String() string { func (*AttributeRequirement) ProtoMessage() {} func (x *AttributeRequirement) ProtoReflect() protoreflect.Message { - mi := &file_infracost_parser_options_options_proto_msgTypes[1] + mi := &file_infracost_parser_options_options_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -326,7 +418,7 @@ func (x *AttributeRequirement) ProtoReflect() protoreflect.Message { // Deprecated: Use AttributeRequirement.ProtoReflect.Descriptor instead. func (*AttributeRequirement) Descriptor() ([]byte, []int) { - return file_infracost_parser_options_options_proto_rawDescGZIP(), []int{1} + return file_infracost_parser_options_options_proto_rawDescGZIP(), []int{2} } func (x *AttributeRequirement) GetResourceType() string { @@ -361,7 +453,7 @@ type DependencyRequest struct { func (x *DependencyRequest) Reset() { *x = DependencyRequest{} - mi := &file_infracost_parser_options_options_proto_msgTypes[2] + mi := &file_infracost_parser_options_options_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -373,7 +465,7 @@ func (x *DependencyRequest) String() string { func (*DependencyRequest) ProtoMessage() {} func (x *DependencyRequest) ProtoReflect() protoreflect.Message { - mi := &file_infracost_parser_options_options_proto_msgTypes[2] + mi := &file_infracost_parser_options_options_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -386,7 +478,7 @@ func (x *DependencyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DependencyRequest.ProtoReflect.Descriptor instead. func (*DependencyRequest) Descriptor() ([]byte, []int) { - return file_infracost_parser_options_options_proto_rawDescGZIP(), []int{2} + return file_infracost_parser_options_options_proto_rawDescGZIP(), []int{3} } func (x *DependencyRequest) GetProjectName() string { @@ -429,7 +521,7 @@ type Debug struct { func (x *Debug) Reset() { *x = Debug{} - mi := &file_infracost_parser_options_options_proto_msgTypes[3] + mi := &file_infracost_parser_options_options_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -441,7 +533,7 @@ func (x *Debug) String() string { func (*Debug) ProtoMessage() {} func (x *Debug) ProtoReflect() protoreflect.Message { - mi := &file_infracost_parser_options_options_proto_msgTypes[3] + mi := &file_infracost_parser_options_options_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -454,7 +546,7 @@ func (x *Debug) ProtoReflect() protoreflect.Message { // Deprecated: Use Debug.ProtoReflect.Descriptor instead. func (*Debug) Descriptor() ([]byte, []int) { - return file_infracost_parser_options_options_proto_rawDescGZIP(), []int{3} + return file_infracost_parser_options_options_proto_rawDescGZIP(), []int{4} } func (x *Debug) GetAddresses() []string { @@ -485,7 +577,7 @@ type CredentialSet struct { func (x *CredentialSet) Reset() { *x = CredentialSet{} - mi := &file_infracost_parser_options_options_proto_msgTypes[4] + mi := &file_infracost_parser_options_options_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -497,7 +589,7 @@ func (x *CredentialSet) String() string { func (*CredentialSet) ProtoMessage() {} func (x *CredentialSet) ProtoReflect() protoreflect.Message { - mi := &file_infracost_parser_options_options_proto_msgTypes[4] + mi := &file_infracost_parser_options_options_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -510,7 +602,7 @@ func (x *CredentialSet) ProtoReflect() protoreflect.Message { // Deprecated: Use CredentialSet.ProtoReflect.Descriptor instead. func (*CredentialSet) Descriptor() ([]byte, []int) { - return file_infracost_parser_options_options_proto_rawDescGZIP(), []int{4} + return file_infracost_parser_options_options_proto_rawDescGZIP(), []int{5} } func (x *CredentialSet) GetToken() string { @@ -550,7 +642,7 @@ type RemoteModuleCacheConfig struct { func (x *RemoteModuleCacheConfig) Reset() { *x = RemoteModuleCacheConfig{} - mi := &file_infracost_parser_options_options_proto_msgTypes[5] + mi := &file_infracost_parser_options_options_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -562,7 +654,7 @@ func (x *RemoteModuleCacheConfig) String() string { func (*RemoteModuleCacheConfig) ProtoMessage() {} func (x *RemoteModuleCacheConfig) ProtoReflect() protoreflect.Message { - mi := &file_infracost_parser_options_options_proto_msgTypes[5] + mi := &file_infracost_parser_options_options_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -575,7 +667,7 @@ func (x *RemoteModuleCacheConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoteModuleCacheConfig.ProtoReflect.Descriptor instead. func (*RemoteModuleCacheConfig) Descriptor() ([]byte, []int) { - return file_infracost_parser_options_options_proto_rawDescGZIP(), []int{5} + return file_infracost_parser_options_options_proto_rawDescGZIP(), []int{6} } func (x *RemoteModuleCacheConfig) GetRegion() string { @@ -622,7 +714,7 @@ type AwsCredentials struct { func (x *AwsCredentials) Reset() { *x = AwsCredentials{} - mi := &file_infracost_parser_options_options_proto_msgTypes[6] + mi := &file_infracost_parser_options_options_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -634,7 +726,7 @@ func (x *AwsCredentials) String() string { func (*AwsCredentials) ProtoMessage() {} func (x *AwsCredentials) ProtoReflect() protoreflect.Message { - mi := &file_infracost_parser_options_options_proto_msgTypes[6] + mi := &file_infracost_parser_options_options_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -647,7 +739,7 @@ func (x *AwsCredentials) ProtoReflect() protoreflect.Message { // Deprecated: Use AwsCredentials.ProtoReflect.Descriptor instead. func (*AwsCredentials) Descriptor() ([]byte, []int) { - return file_infracost_parser_options_options_proto_rawDescGZIP(), []int{6} + return file_infracost_parser_options_options_proto_rawDescGZIP(), []int{7} } func (x *AwsCredentials) GetAccessKeyId() string { @@ -687,7 +779,7 @@ type ProxyRouter struct { func (x *ProxyRouter) Reset() { *x = ProxyRouter{} - mi := &file_infracost_parser_options_options_proto_msgTypes[7] + mi := &file_infracost_parser_options_options_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -699,7 +791,7 @@ func (x *ProxyRouter) String() string { func (*ProxyRouter) ProtoMessage() {} func (x *ProxyRouter) ProtoReflect() protoreflect.Message { - mi := &file_infracost_parser_options_options_proto_msgTypes[7] + mi := &file_infracost_parser_options_options_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -712,7 +804,7 @@ func (x *ProxyRouter) ProtoReflect() protoreflect.Message { // Deprecated: Use ProxyRouter.ProtoReflect.Descriptor instead. func (*ProxyRouter) Descriptor() ([]byte, []int) { - return file_infracost_parser_options_options_proto_rawDescGZIP(), []int{7} + return file_infracost_parser_options_options_proto_rawDescGZIP(), []int{8} } func (x *ProxyRouter) GetRoutes() map[string]string { @@ -726,7 +818,7 @@ var File_infracost_parser_options_options_proto protoreflect.FileDescriptor const file_infracost_parser_options_options_proto_rawDesc = "" + "\n" + - "&infracost/parser/options/options.proto\x12\x18infracost.parser.options\"\xc8\v\n" + + "&infracost/parser/options/options.proto\x12\x18infracost.parser.options\"\xe1\f\n" + "\x0eGenericOptions\x12!\n" + "\fproject_name\x18\x01 \x01(\tR\vprojectName\x12)\n" + "\x10environment_name\x18\x02 \x01(\tR\x0fenvironmentName\x12%\n" + @@ -748,7 +840,9 @@ const file_infracost_parser_options_options_proto_rawDesc = "" + "\n" + "source_map\x18\x11 \x03(\v27.infracost.parser.options.GenericOptions.SourceMapEntryR\tsourceMap\x12C\n" + "\x03env\x18\x12 \x03(\v21.infracost.parser.options.GenericOptions.EnvEntryR\x03env\x127\n" + - "\x18force_local_module_paths\x18\x13 \x01(\bR\x15forceLocalModulePaths\x1a>\n" + + "\x18force_local_module_paths\x18\x13 \x01(\bR\x15forceLocalModulePaths\x12\x1c\n" + + "\tworkspace\x18\x14 \x01(\tR\tworkspace\x12y\n" + + "\x1dterraform_cloud_configuration\x18\x15 \x01(\v25.infracost.parser.options.TerraformCloudConfigurationR\x1bterraformCloudConfiguration\x1a>\n" + "\x10DefaultTagsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a<\n" + @@ -758,7 +852,11 @@ const file_infracost_parser_options_options_proto_rawDesc = "" + "\bEnvEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x15\n" + - "\x13_dependency_request\"[\n" + + "\x13_dependency_request\"{\n" + + "\x1bTerraformCloudConfiguration\x12\"\n" + + "\forganization\x18\x01 \x01(\tR\forganization\x12\x1c\n" + + "\tworkspace\x18\x02 \x01(\tR\tworkspace\x12\x1a\n" + + "\bhostname\x18\x03 \x01(\tR\bhostname\"[\n" + "\x14AttributeRequirement\x12#\n" + "\rresource_type\x18\x01 \x01(\tR\fresourceType\x12\x1e\n" + "\n" + @@ -812,40 +910,42 @@ func file_infracost_parser_options_options_proto_rawDescGZIP() []byte { } var file_infracost_parser_options_options_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_infracost_parser_options_options_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_infracost_parser_options_options_proto_msgTypes = make([]protoimpl.MessageInfo, 13) var file_infracost_parser_options_options_proto_goTypes = []any{ - (CredentialType)(0), // 0: infracost.parser.options.CredentialType - (*GenericOptions)(nil), // 1: infracost.parser.options.GenericOptions - (*AttributeRequirement)(nil), // 2: infracost.parser.options.AttributeRequirement - (*DependencyRequest)(nil), // 3: infracost.parser.options.DependencyRequest - (*Debug)(nil), // 4: infracost.parser.options.Debug - (*CredentialSet)(nil), // 5: infracost.parser.options.CredentialSet - (*RemoteModuleCacheConfig)(nil), // 6: infracost.parser.options.RemoteModuleCacheConfig - (*AwsCredentials)(nil), // 7: infracost.parser.options.AwsCredentials - (*ProxyRouter)(nil), // 8: infracost.parser.options.ProxyRouter - nil, // 9: infracost.parser.options.GenericOptions.DefaultTagsEntry - nil, // 10: infracost.parser.options.GenericOptions.SourceMapEntry - nil, // 11: infracost.parser.options.GenericOptions.EnvEntry - nil, // 12: infracost.parser.options.ProxyRouter.RoutesEntry + (CredentialType)(0), // 0: infracost.parser.options.CredentialType + (*GenericOptions)(nil), // 1: infracost.parser.options.GenericOptions + (*TerraformCloudConfiguration)(nil), // 2: infracost.parser.options.TerraformCloudConfiguration + (*AttributeRequirement)(nil), // 3: infracost.parser.options.AttributeRequirement + (*DependencyRequest)(nil), // 4: infracost.parser.options.DependencyRequest + (*Debug)(nil), // 5: infracost.parser.options.Debug + (*CredentialSet)(nil), // 6: infracost.parser.options.CredentialSet + (*RemoteModuleCacheConfig)(nil), // 7: infracost.parser.options.RemoteModuleCacheConfig + (*AwsCredentials)(nil), // 8: infracost.parser.options.AwsCredentials + (*ProxyRouter)(nil), // 9: infracost.parser.options.ProxyRouter + nil, // 10: infracost.parser.options.GenericOptions.DefaultTagsEntry + nil, // 11: infracost.parser.options.GenericOptions.SourceMapEntry + nil, // 12: infracost.parser.options.GenericOptions.EnvEntry + nil, // 13: infracost.parser.options.ProxyRouter.RoutesEntry } var file_infracost_parser_options_options_proto_depIdxs = []int32{ - 5, // 0: infracost.parser.options.GenericOptions.credential_sets:type_name -> infracost.parser.options.CredentialSet - 7, // 1: infracost.parser.options.GenericOptions.aws_credentials:type_name -> infracost.parser.options.AwsCredentials - 4, // 2: infracost.parser.options.GenericOptions.debug:type_name -> infracost.parser.options.Debug - 8, // 3: infracost.parser.options.GenericOptions.proxy_router:type_name -> infracost.parser.options.ProxyRouter - 6, // 4: infracost.parser.options.GenericOptions.remote_module_cache_config:type_name -> infracost.parser.options.RemoteModuleCacheConfig - 3, // 5: infracost.parser.options.GenericOptions.dependency_request:type_name -> infracost.parser.options.DependencyRequest - 2, // 6: infracost.parser.options.GenericOptions.required_attributes:type_name -> infracost.parser.options.AttributeRequirement - 9, // 7: infracost.parser.options.GenericOptions.default_tags:type_name -> infracost.parser.options.GenericOptions.DefaultTagsEntry - 10, // 8: infracost.parser.options.GenericOptions.source_map:type_name -> infracost.parser.options.GenericOptions.SourceMapEntry - 11, // 9: infracost.parser.options.GenericOptions.env:type_name -> infracost.parser.options.GenericOptions.EnvEntry - 0, // 10: infracost.parser.options.CredentialSet.type:type_name -> infracost.parser.options.CredentialType - 12, // 11: infracost.parser.options.ProxyRouter.routes:type_name -> infracost.parser.options.ProxyRouter.RoutesEntry - 12, // [12:12] is the sub-list for method output_type - 12, // [12:12] is the sub-list for method input_type - 12, // [12:12] is the sub-list for extension type_name - 12, // [12:12] is the sub-list for extension extendee - 0, // [0:12] is the sub-list for field type_name + 6, // 0: infracost.parser.options.GenericOptions.credential_sets:type_name -> infracost.parser.options.CredentialSet + 8, // 1: infracost.parser.options.GenericOptions.aws_credentials:type_name -> infracost.parser.options.AwsCredentials + 5, // 2: infracost.parser.options.GenericOptions.debug:type_name -> infracost.parser.options.Debug + 9, // 3: infracost.parser.options.GenericOptions.proxy_router:type_name -> infracost.parser.options.ProxyRouter + 7, // 4: infracost.parser.options.GenericOptions.remote_module_cache_config:type_name -> infracost.parser.options.RemoteModuleCacheConfig + 4, // 5: infracost.parser.options.GenericOptions.dependency_request:type_name -> infracost.parser.options.DependencyRequest + 3, // 6: infracost.parser.options.GenericOptions.required_attributes:type_name -> infracost.parser.options.AttributeRequirement + 10, // 7: infracost.parser.options.GenericOptions.default_tags:type_name -> infracost.parser.options.GenericOptions.DefaultTagsEntry + 11, // 8: infracost.parser.options.GenericOptions.source_map:type_name -> infracost.parser.options.GenericOptions.SourceMapEntry + 12, // 9: infracost.parser.options.GenericOptions.env:type_name -> infracost.parser.options.GenericOptions.EnvEntry + 2, // 10: infracost.parser.options.GenericOptions.terraform_cloud_configuration:type_name -> infracost.parser.options.TerraformCloudConfiguration + 0, // 11: infracost.parser.options.CredentialSet.type:type_name -> infracost.parser.options.CredentialType + 13, // 12: infracost.parser.options.ProxyRouter.routes:type_name -> infracost.parser.options.ProxyRouter.RoutesEntry + 13, // [13:13] is the sub-list for method output_type + 13, // [13:13] is the sub-list for method input_type + 13, // [13:13] is the sub-list for extension type_name + 13, // [13:13] is the sub-list for extension extendee + 0, // [0:13] is the sub-list for field type_name } func init() { file_infracost_parser_options_options_proto_init() } @@ -860,7 +960,7 @@ func file_infracost_parser_options_options_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_infracost_parser_options_options_proto_rawDesc), len(file_infracost_parser_options_options_proto_rawDesc)), NumEnums: 1, - NumMessages: 12, + NumMessages: 13, NumExtensions: 0, NumServices: 0, }, diff --git a/gen/ts/infracost/parser/options/options_pb.d.ts b/gen/ts/infracost/parser/options/options_pb.d.ts index 182ca89..462e45e 100644 --- a/gen/ts/infracost/parser/options/options_pb.d.ts +++ b/gen/ts/infracost/parser/options/options_pb.d.ts @@ -153,6 +153,26 @@ export declare type GenericOptions = Message<"infracost.parser.options.GenericOp * @generated from field: bool force_local_module_paths = 19; */ forceLocalModulePaths: boolean; + + /** + * The Terraform workspace to select when parsing. Source: the project's configured workspace + * (config file / INFRACOST_TERRAFORM_WORKSPACE env). Consumed by the terraform-family plugins. + * It is a caller-sourced runtime option, NOT part of the raw_options blob, because it is also read + * outside the plugin (e.g. the project's workspace in the cost output / provider input). + * + * @generated from field: string workspace = 20; + */ + workspace: string; + + /** + * Terraform Cloud / Enterprise identity for the project. Source: the project's configured + * terraform.cloud.*. Consumed by the terraform-family plugins to read the remote workspace. Typed + * (not in the raw_options blob) because it is caller-sourced and the hostname is also read by the + * caller to pair with the token in a terraform-cloud credential_set. + * + * @generated from field: infracost.parser.options.TerraformCloudConfiguration terraform_cloud_configuration = 21; + */ + terraformCloudConfiguration?: TerraformCloudConfiguration; }; /** @@ -161,6 +181,44 @@ export declare type GenericOptions = Message<"infracost.parser.options.GenericOp */ export declare const GenericOptionsSchema: GenMessage; +/** + * TerraformCloudConfiguration identifies the Terraform Cloud / Enterprise workspace to read. The + * plugin pairs it with its auth token by matching hostname against a credential_set's host, then + * uses organization + workspace to address the remote workspace. NOTE: this workspace is the TFC + * remote workspace, distinct from GenericOptions.workspace (the terraform CLI workspace). + * + * @generated from message infracost.parser.options.TerraformCloudConfiguration + */ +export declare type TerraformCloudConfiguration = Message<"infracost.parser.options.TerraformCloudConfiguration"> & { + /** + * The Terraform Cloud organization. + * + * @generated from field: string organization = 1; + */ + organization: string; + + /** + * The Terraform Cloud remote workspace name. + * + * @generated from field: string workspace = 2; + */ + workspace: string; + + /** + * The Terraform Cloud / Enterprise hostname (e.g. app.terraform.io); the key used to pair with the + * credential_set that carries the token for this host. + * + * @generated from field: string hostname = 3; + */ + hostname: string; +}; + +/** + * Describes the message infracost.parser.options.TerraformCloudConfiguration. + * Use `create(TerraformCloudConfigurationSchema)` to create a new message. + */ +export declare const TerraformCloudConfigurationSchema: GenMessage; + /** * AttributeRequirement lists the attributes a given resource type must set for a FinOps * naming/tagging policy. diff --git a/gen/ts/infracost/parser/options/options_pb.js b/gen/ts/infracost/parser/options/options_pb.js index 8dd3122..6414843 100644 --- a/gen/ts/infracost/parser/options/options_pb.js +++ b/gen/ts/infracost/parser/options/options_pb.js @@ -8,7 +8,7 @@ import { enumDesc, fileDesc, messageDesc, tsEnum } from "@bufbuild/protobuf/code * Describes the file infracost/parser/options/options.proto. */ export const file_infracost_parser_options_options = /*@__PURE__*/ - fileDesc("CiZpbmZyYWNvc3QvcGFyc2VyL29wdGlvbnMvb3B0aW9ucy5wcm90bxIYaW5mcmFjb3N0LnBhcnNlci5vcHRpb25zIvEICg5HZW5lcmljT3B0aW9ucxIUCgxwcm9qZWN0X25hbWUYASABKAkSGAoQZW52aXJvbm1lbnRfbmFtZRgCIAEoCRIWCg5yZXBvX2RpcmVjdG9yeRgDIAEoCRIbChN0ZW1wb3JhcnlfZGlyZWN0b3J5GAQgASgJEhcKD2NhY2hlX2RpcmVjdG9yeRgFIAEoCRIZChF3b3JraW5nX2RpcmVjdG9yeRgGIAEoCRJACg9jcmVkZW50aWFsX3NldHMYByADKAsyJy5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuQ3JlZGVudGlhbFNldBJBCg9hd3NfY3JlZGVudGlhbHMYCCABKAsyKC5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuQXdzQ3JlZGVudGlhbHMSLgoFZGVidWcYCSABKAsyHy5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuRGVidWcSFwoPc3BhcnNlX2NoZWNrb3V0GAogASgIEjsKDHByb3h5X3JvdXRlchgLIAEoCzIlLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5Qcm94eVJvdXRlchJVChpyZW1vdGVfbW9kdWxlX2NhY2hlX2NvbmZpZxgMIAEoCzIxLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5SZW1vdGVNb2R1bGVDYWNoZUNvbmZpZxJMChJkZXBlbmRlbmN5X3JlcXVlc3QYDSABKAsyKy5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuRGVwZW5kZW5jeVJlcXVlc3RIAIgBARIgChhlbmFibGVfZ2l0X25vcm1hbGl6YXRpb24YDiABKAgSSwoTcmVxdWlyZWRfYXR0cmlidXRlcxgPIAMoCzIuLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5BdHRyaWJ1dGVSZXF1aXJlbWVudBJPCgxkZWZhdWx0X3RhZ3MYECADKAsyOS5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuR2VuZXJpY09wdGlvbnMuRGVmYXVsdFRhZ3NFbnRyeRJLCgpzb3VyY2VfbWFwGBEgAygLMjcuaW5mcmFjb3N0LnBhcnNlci5vcHRpb25zLkdlbmVyaWNPcHRpb25zLlNvdXJjZU1hcEVudHJ5Ej4KA2VudhgSIAMoCzIxLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5HZW5lcmljT3B0aW9ucy5FbnZFbnRyeRIgChhmb3JjZV9sb2NhbF9tb2R1bGVfcGF0aHMYEyABKAgaMgoQRGVmYXVsdFRhZ3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjAKDlNvdXJjZU1hcEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaKgoIRW52RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIVChNfZGVwZW5kZW5jeV9yZXF1ZXN0IkEKFEF0dHJpYnV0ZVJlcXVpcmVtZW50EhUKDXJlc291cmNlX3R5cGUYASABKAkSEgoKYXR0cmlidXRlcxgCIAMoCSKCAQoRRGVwZW5kZW5jeVJlcXVlc3QSFAoMcHJvamVjdF9uYW1lGAEgASgJEhgKEHJlc291cmNlX2FkZHJlc3MYAiABKAkSIgoadXNlX3JlbW90ZV9tb2R1bGVfc25pcHBldHMYAyABKAgSGQoRd29ya2luZ19kaXJlY3RvcnkYBCABKAkiMQoFRGVidWcSEQoJYWRkcmVzc2VzGAEgAygJEhUKDWluY2x1ZGVfZHVtcHMYAiABKAgiZAoNQ3JlZGVudGlhbFNldBINCgV0b2tlbhgBIAEoCRIMCgRob3N0GAIgASgJEjYKBHR5cGUYAyABKA4yKC5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuQ3JlZGVudGlhbFR5cGUiYgoXUmVtb3RlTW9kdWxlQ2FjaGVDb25maWcSDgoGcmVnaW9uGAEgASgJEhMKC2J1Y2tldF9uYW1lGAIgASgJEg4KBnByZWZpeBgDIAEoCRISCgppc19wcml2YXRlGAQgASgIImgKDkF3c0NyZWRlbnRpYWxzEhUKDWFjY2Vzc19rZXlfaWQYASABKAkSGQoRc2VjcmV0X2FjY2Vzc19rZXkYAiABKAkSFAoMYWNjZXNzX3Rva2VuGAMgASgJEg4KBnJlZ2lvbhgEIAEoCSJ/CgtQcm94eVJvdXRlchJBCgZyb3V0ZXMYASADKAsyMS5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuUHJveHlSb3V0ZXIuUm91dGVzRW50cnkaLQoLUm91dGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASpRCg5DcmVkZW50aWFsVHlwZRIfChtDUkVERU5USUFMX1RZUEVfVU5TUEVDSUZJRUQQABIJCgVUT0tFThABEhMKD1RFUlJBRk9STV9DTE9VRBACQuoBChxjb20uaW5mcmFjb3N0LnBhcnNlci5vcHRpb25zQgxPcHRpb25zUHJvdG9QAVo6Z2l0aHViLmNvbS9pbmZyYWNvc3QvcHJvdG8vZ2VuL2dvL2luZnJhY29zdC9wYXJzZXIvb3B0aW9uc6ICA0lQT6oCGEluZnJhY29zdC5QYXJzZXIuT3B0aW9uc8oCGEluZnJhY29zdFxQYXJzZXJcT3B0aW9uc+ICJEluZnJhY29zdFxQYXJzZXJcT3B0aW9uc1xHUEJNZXRhZGF0YeoCGkluZnJhY29zdDo6UGFyc2VyOjpPcHRpb25zYgZwcm90bzM"); + fileDesc("CiZpbmZyYWNvc3QvcGFyc2VyL29wdGlvbnMvb3B0aW9ucy5wcm90bxIYaW5mcmFjb3N0LnBhcnNlci5vcHRpb25zIuIJCg5HZW5lcmljT3B0aW9ucxIUCgxwcm9qZWN0X25hbWUYASABKAkSGAoQZW52aXJvbm1lbnRfbmFtZRgCIAEoCRIWCg5yZXBvX2RpcmVjdG9yeRgDIAEoCRIbChN0ZW1wb3JhcnlfZGlyZWN0b3J5GAQgASgJEhcKD2NhY2hlX2RpcmVjdG9yeRgFIAEoCRIZChF3b3JraW5nX2RpcmVjdG9yeRgGIAEoCRJACg9jcmVkZW50aWFsX3NldHMYByADKAsyJy5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuQ3JlZGVudGlhbFNldBJBCg9hd3NfY3JlZGVudGlhbHMYCCABKAsyKC5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuQXdzQ3JlZGVudGlhbHMSLgoFZGVidWcYCSABKAsyHy5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuRGVidWcSFwoPc3BhcnNlX2NoZWNrb3V0GAogASgIEjsKDHByb3h5X3JvdXRlchgLIAEoCzIlLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5Qcm94eVJvdXRlchJVChpyZW1vdGVfbW9kdWxlX2NhY2hlX2NvbmZpZxgMIAEoCzIxLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5SZW1vdGVNb2R1bGVDYWNoZUNvbmZpZxJMChJkZXBlbmRlbmN5X3JlcXVlc3QYDSABKAsyKy5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuRGVwZW5kZW5jeVJlcXVlc3RIAIgBARIgChhlbmFibGVfZ2l0X25vcm1hbGl6YXRpb24YDiABKAgSSwoTcmVxdWlyZWRfYXR0cmlidXRlcxgPIAMoCzIuLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5BdHRyaWJ1dGVSZXF1aXJlbWVudBJPCgxkZWZhdWx0X3RhZ3MYECADKAsyOS5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuR2VuZXJpY09wdGlvbnMuRGVmYXVsdFRhZ3NFbnRyeRJLCgpzb3VyY2VfbWFwGBEgAygLMjcuaW5mcmFjb3N0LnBhcnNlci5vcHRpb25zLkdlbmVyaWNPcHRpb25zLlNvdXJjZU1hcEVudHJ5Ej4KA2VudhgSIAMoCzIxLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5HZW5lcmljT3B0aW9ucy5FbnZFbnRyeRIgChhmb3JjZV9sb2NhbF9tb2R1bGVfcGF0aHMYEyABKAgSEQoJd29ya3NwYWNlGBQgASgJElwKHXRlcnJhZm9ybV9jbG91ZF9jb25maWd1cmF0aW9uGBUgASgLMjUuaW5mcmFjb3N0LnBhcnNlci5vcHRpb25zLlRlcnJhZm9ybUNsb3VkQ29uZmlndXJhdGlvbhoyChBEZWZhdWx0VGFnc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaMAoOU291cmNlTWFwRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARoqCghFbnZFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQhUKE19kZXBlbmRlbmN5X3JlcXVlc3QiWAobVGVycmFmb3JtQ2xvdWRDb25maWd1cmF0aW9uEhQKDG9yZ2FuaXphdGlvbhgBIAEoCRIRCgl3b3Jrc3BhY2UYAiABKAkSEAoIaG9zdG5hbWUYAyABKAkiQQoUQXR0cmlidXRlUmVxdWlyZW1lbnQSFQoNcmVzb3VyY2VfdHlwZRgBIAEoCRISCgphdHRyaWJ1dGVzGAIgAygJIoIBChFEZXBlbmRlbmN5UmVxdWVzdBIUCgxwcm9qZWN0X25hbWUYASABKAkSGAoQcmVzb3VyY2VfYWRkcmVzcxgCIAEoCRIiChp1c2VfcmVtb3RlX21vZHVsZV9zbmlwcGV0cxgDIAEoCBIZChF3b3JraW5nX2RpcmVjdG9yeRgEIAEoCSIxCgVEZWJ1ZxIRCglhZGRyZXNzZXMYASADKAkSFQoNaW5jbHVkZV9kdW1wcxgCIAEoCCJkCg1DcmVkZW50aWFsU2V0Eg0KBXRva2VuGAEgASgJEgwKBGhvc3QYAiABKAkSNgoEdHlwZRgDIAEoDjIoLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5DcmVkZW50aWFsVHlwZSJiChdSZW1vdGVNb2R1bGVDYWNoZUNvbmZpZxIOCgZyZWdpb24YASABKAkSEwoLYnVja2V0X25hbWUYAiABKAkSDgoGcHJlZml4GAMgASgJEhIKCmlzX3ByaXZhdGUYBCABKAgiaAoOQXdzQ3JlZGVudGlhbHMSFQoNYWNjZXNzX2tleV9pZBgBIAEoCRIZChFzZWNyZXRfYWNjZXNzX2tleRgCIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAyABKAkSDgoGcmVnaW9uGAQgASgJIn8KC1Byb3h5Um91dGVyEkEKBnJvdXRlcxgBIAMoCzIxLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5Qcm94eVJvdXRlci5Sb3V0ZXNFbnRyeRotCgtSb3V0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBKlEKDkNyZWRlbnRpYWxUeXBlEh8KG0NSRURFTlRJQUxfVFlQRV9VTlNQRUNJRklFRBAAEgkKBVRPS0VOEAESEwoPVEVSUkFGT1JNX0NMT1VEEAJC6gEKHGNvbS5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnNCDE9wdGlvbnNQcm90b1ABWjpnaXRodWIuY29tL2luZnJhY29zdC9wcm90by9nZW4vZ28vaW5mcmFjb3N0L3BhcnNlci9vcHRpb25zogIDSVBPqgIYSW5mcmFjb3N0LlBhcnNlci5PcHRpb25zygIYSW5mcmFjb3N0XFBhcnNlclxPcHRpb25z4gIkSW5mcmFjb3N0XFBhcnNlclxPcHRpb25zXEdQQk1ldGFkYXRh6gIaSW5mcmFjb3N0OjpQYXJzZXI6Ok9wdGlvbnNiBnByb3RvMw"); /** * Describes the message infracost.parser.options.GenericOptions. @@ -17,54 +17,61 @@ export const file_infracost_parser_options_options = /*@__PURE__*/ export const GenericOptionsSchema = /*@__PURE__*/ messageDesc(file_infracost_parser_options_options, 0); +/** + * Describes the message infracost.parser.options.TerraformCloudConfiguration. + * Use `create(TerraformCloudConfigurationSchema)` to create a new message. + */ +export const TerraformCloudConfigurationSchema = /*@__PURE__*/ + messageDesc(file_infracost_parser_options_options, 1); + /** * Describes the message infracost.parser.options.AttributeRequirement. * Use `create(AttributeRequirementSchema)` to create a new message. */ export const AttributeRequirementSchema = /*@__PURE__*/ - messageDesc(file_infracost_parser_options_options, 1); + messageDesc(file_infracost_parser_options_options, 2); /** * Describes the message infracost.parser.options.DependencyRequest. * Use `create(DependencyRequestSchema)` to create a new message. */ export const DependencyRequestSchema = /*@__PURE__*/ - messageDesc(file_infracost_parser_options_options, 2); + messageDesc(file_infracost_parser_options_options, 3); /** * Describes the message infracost.parser.options.Debug. * Use `create(DebugSchema)` to create a new message. */ export const DebugSchema = /*@__PURE__*/ - messageDesc(file_infracost_parser_options_options, 3); + messageDesc(file_infracost_parser_options_options, 4); /** * Describes the message infracost.parser.options.CredentialSet. * Use `create(CredentialSetSchema)` to create a new message. */ export const CredentialSetSchema = /*@__PURE__*/ - messageDesc(file_infracost_parser_options_options, 4); + messageDesc(file_infracost_parser_options_options, 5); /** * Describes the message infracost.parser.options.RemoteModuleCacheConfig. * Use `create(RemoteModuleCacheConfigSchema)` to create a new message. */ export const RemoteModuleCacheConfigSchema = /*@__PURE__*/ - messageDesc(file_infracost_parser_options_options, 5); + messageDesc(file_infracost_parser_options_options, 6); /** * Describes the message infracost.parser.options.AwsCredentials. * Use `create(AwsCredentialsSchema)` to create a new message. */ export const AwsCredentialsSchema = /*@__PURE__*/ - messageDesc(file_infracost_parser_options_options, 6); + messageDesc(file_infracost_parser_options_options, 7); /** * Describes the message infracost.parser.options.ProxyRouter. * Use `create(ProxyRouterSchema)` to create a new message. */ export const ProxyRouterSchema = /*@__PURE__*/ - messageDesc(file_infracost_parser_options_options, 7); + messageDesc(file_infracost_parser_options_options, 8); /** * Describes the enum infracost.parser.options.CredentialType. diff --git a/gen/ts/infracost/parser/options/options_pb.ts b/gen/ts/infracost/parser/options/options_pb.ts index 34b7986..6504eec 100644 --- a/gen/ts/infracost/parser/options/options_pb.ts +++ b/gen/ts/infracost/parser/options/options_pb.ts @@ -10,7 +10,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file infracost/parser/options/options.proto. */ export const file_infracost_parser_options_options: GenFile = /*@__PURE__*/ - fileDesc("CiZpbmZyYWNvc3QvcGFyc2VyL29wdGlvbnMvb3B0aW9ucy5wcm90bxIYaW5mcmFjb3N0LnBhcnNlci5vcHRpb25zIvEICg5HZW5lcmljT3B0aW9ucxIUCgxwcm9qZWN0X25hbWUYASABKAkSGAoQZW52aXJvbm1lbnRfbmFtZRgCIAEoCRIWCg5yZXBvX2RpcmVjdG9yeRgDIAEoCRIbChN0ZW1wb3JhcnlfZGlyZWN0b3J5GAQgASgJEhcKD2NhY2hlX2RpcmVjdG9yeRgFIAEoCRIZChF3b3JraW5nX2RpcmVjdG9yeRgGIAEoCRJACg9jcmVkZW50aWFsX3NldHMYByADKAsyJy5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuQ3JlZGVudGlhbFNldBJBCg9hd3NfY3JlZGVudGlhbHMYCCABKAsyKC5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuQXdzQ3JlZGVudGlhbHMSLgoFZGVidWcYCSABKAsyHy5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuRGVidWcSFwoPc3BhcnNlX2NoZWNrb3V0GAogASgIEjsKDHByb3h5X3JvdXRlchgLIAEoCzIlLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5Qcm94eVJvdXRlchJVChpyZW1vdGVfbW9kdWxlX2NhY2hlX2NvbmZpZxgMIAEoCzIxLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5SZW1vdGVNb2R1bGVDYWNoZUNvbmZpZxJMChJkZXBlbmRlbmN5X3JlcXVlc3QYDSABKAsyKy5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuRGVwZW5kZW5jeVJlcXVlc3RIAIgBARIgChhlbmFibGVfZ2l0X25vcm1hbGl6YXRpb24YDiABKAgSSwoTcmVxdWlyZWRfYXR0cmlidXRlcxgPIAMoCzIuLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5BdHRyaWJ1dGVSZXF1aXJlbWVudBJPCgxkZWZhdWx0X3RhZ3MYECADKAsyOS5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuR2VuZXJpY09wdGlvbnMuRGVmYXVsdFRhZ3NFbnRyeRJLCgpzb3VyY2VfbWFwGBEgAygLMjcuaW5mcmFjb3N0LnBhcnNlci5vcHRpb25zLkdlbmVyaWNPcHRpb25zLlNvdXJjZU1hcEVudHJ5Ej4KA2VudhgSIAMoCzIxLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5HZW5lcmljT3B0aW9ucy5FbnZFbnRyeRIgChhmb3JjZV9sb2NhbF9tb2R1bGVfcGF0aHMYEyABKAgaMgoQRGVmYXVsdFRhZ3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjAKDlNvdXJjZU1hcEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaKgoIRW52RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIVChNfZGVwZW5kZW5jeV9yZXF1ZXN0IkEKFEF0dHJpYnV0ZVJlcXVpcmVtZW50EhUKDXJlc291cmNlX3R5cGUYASABKAkSEgoKYXR0cmlidXRlcxgCIAMoCSKCAQoRRGVwZW5kZW5jeVJlcXVlc3QSFAoMcHJvamVjdF9uYW1lGAEgASgJEhgKEHJlc291cmNlX2FkZHJlc3MYAiABKAkSIgoadXNlX3JlbW90ZV9tb2R1bGVfc25pcHBldHMYAyABKAgSGQoRd29ya2luZ19kaXJlY3RvcnkYBCABKAkiMQoFRGVidWcSEQoJYWRkcmVzc2VzGAEgAygJEhUKDWluY2x1ZGVfZHVtcHMYAiABKAgiZAoNQ3JlZGVudGlhbFNldBINCgV0b2tlbhgBIAEoCRIMCgRob3N0GAIgASgJEjYKBHR5cGUYAyABKA4yKC5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuQ3JlZGVudGlhbFR5cGUiYgoXUmVtb3RlTW9kdWxlQ2FjaGVDb25maWcSDgoGcmVnaW9uGAEgASgJEhMKC2J1Y2tldF9uYW1lGAIgASgJEg4KBnByZWZpeBgDIAEoCRISCgppc19wcml2YXRlGAQgASgIImgKDkF3c0NyZWRlbnRpYWxzEhUKDWFjY2Vzc19rZXlfaWQYASABKAkSGQoRc2VjcmV0X2FjY2Vzc19rZXkYAiABKAkSFAoMYWNjZXNzX3Rva2VuGAMgASgJEg4KBnJlZ2lvbhgEIAEoCSJ/CgtQcm94eVJvdXRlchJBCgZyb3V0ZXMYASADKAsyMS5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuUHJveHlSb3V0ZXIuUm91dGVzRW50cnkaLQoLUm91dGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASpRCg5DcmVkZW50aWFsVHlwZRIfChtDUkVERU5USUFMX1RZUEVfVU5TUEVDSUZJRUQQABIJCgVUT0tFThABEhMKD1RFUlJBRk9STV9DTE9VRBACQuoBChxjb20uaW5mcmFjb3N0LnBhcnNlci5vcHRpb25zQgxPcHRpb25zUHJvdG9QAVo6Z2l0aHViLmNvbS9pbmZyYWNvc3QvcHJvdG8vZ2VuL2dvL2luZnJhY29zdC9wYXJzZXIvb3B0aW9uc6ICA0lQT6oCGEluZnJhY29zdC5QYXJzZXIuT3B0aW9uc8oCGEluZnJhY29zdFxQYXJzZXJcT3B0aW9uc+ICJEluZnJhY29zdFxQYXJzZXJcT3B0aW9uc1xHUEJNZXRhZGF0YeoCGkluZnJhY29zdDo6UGFyc2VyOjpPcHRpb25zYgZwcm90bzM"); + fileDesc("CiZpbmZyYWNvc3QvcGFyc2VyL29wdGlvbnMvb3B0aW9ucy5wcm90bxIYaW5mcmFjb3N0LnBhcnNlci5vcHRpb25zIuIJCg5HZW5lcmljT3B0aW9ucxIUCgxwcm9qZWN0X25hbWUYASABKAkSGAoQZW52aXJvbm1lbnRfbmFtZRgCIAEoCRIWCg5yZXBvX2RpcmVjdG9yeRgDIAEoCRIbChN0ZW1wb3JhcnlfZGlyZWN0b3J5GAQgASgJEhcKD2NhY2hlX2RpcmVjdG9yeRgFIAEoCRIZChF3b3JraW5nX2RpcmVjdG9yeRgGIAEoCRJACg9jcmVkZW50aWFsX3NldHMYByADKAsyJy5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuQ3JlZGVudGlhbFNldBJBCg9hd3NfY3JlZGVudGlhbHMYCCABKAsyKC5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuQXdzQ3JlZGVudGlhbHMSLgoFZGVidWcYCSABKAsyHy5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuRGVidWcSFwoPc3BhcnNlX2NoZWNrb3V0GAogASgIEjsKDHByb3h5X3JvdXRlchgLIAEoCzIlLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5Qcm94eVJvdXRlchJVChpyZW1vdGVfbW9kdWxlX2NhY2hlX2NvbmZpZxgMIAEoCzIxLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5SZW1vdGVNb2R1bGVDYWNoZUNvbmZpZxJMChJkZXBlbmRlbmN5X3JlcXVlc3QYDSABKAsyKy5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuRGVwZW5kZW5jeVJlcXVlc3RIAIgBARIgChhlbmFibGVfZ2l0X25vcm1hbGl6YXRpb24YDiABKAgSSwoTcmVxdWlyZWRfYXR0cmlidXRlcxgPIAMoCzIuLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5BdHRyaWJ1dGVSZXF1aXJlbWVudBJPCgxkZWZhdWx0X3RhZ3MYECADKAsyOS5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnMuR2VuZXJpY09wdGlvbnMuRGVmYXVsdFRhZ3NFbnRyeRJLCgpzb3VyY2VfbWFwGBEgAygLMjcuaW5mcmFjb3N0LnBhcnNlci5vcHRpb25zLkdlbmVyaWNPcHRpb25zLlNvdXJjZU1hcEVudHJ5Ej4KA2VudhgSIAMoCzIxLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5HZW5lcmljT3B0aW9ucy5FbnZFbnRyeRIgChhmb3JjZV9sb2NhbF9tb2R1bGVfcGF0aHMYEyABKAgSEQoJd29ya3NwYWNlGBQgASgJElwKHXRlcnJhZm9ybV9jbG91ZF9jb25maWd1cmF0aW9uGBUgASgLMjUuaW5mcmFjb3N0LnBhcnNlci5vcHRpb25zLlRlcnJhZm9ybUNsb3VkQ29uZmlndXJhdGlvbhoyChBEZWZhdWx0VGFnc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaMAoOU291cmNlTWFwRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARoqCghFbnZFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQhUKE19kZXBlbmRlbmN5X3JlcXVlc3QiWAobVGVycmFmb3JtQ2xvdWRDb25maWd1cmF0aW9uEhQKDG9yZ2FuaXphdGlvbhgBIAEoCRIRCgl3b3Jrc3BhY2UYAiABKAkSEAoIaG9zdG5hbWUYAyABKAkiQQoUQXR0cmlidXRlUmVxdWlyZW1lbnQSFQoNcmVzb3VyY2VfdHlwZRgBIAEoCRISCgphdHRyaWJ1dGVzGAIgAygJIoIBChFEZXBlbmRlbmN5UmVxdWVzdBIUCgxwcm9qZWN0X25hbWUYASABKAkSGAoQcmVzb3VyY2VfYWRkcmVzcxgCIAEoCRIiChp1c2VfcmVtb3RlX21vZHVsZV9zbmlwcGV0cxgDIAEoCBIZChF3b3JraW5nX2RpcmVjdG9yeRgEIAEoCSIxCgVEZWJ1ZxIRCglhZGRyZXNzZXMYASADKAkSFQoNaW5jbHVkZV9kdW1wcxgCIAEoCCJkCg1DcmVkZW50aWFsU2V0Eg0KBXRva2VuGAEgASgJEgwKBGhvc3QYAiABKAkSNgoEdHlwZRgDIAEoDjIoLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5DcmVkZW50aWFsVHlwZSJiChdSZW1vdGVNb2R1bGVDYWNoZUNvbmZpZxIOCgZyZWdpb24YASABKAkSEwoLYnVja2V0X25hbWUYAiABKAkSDgoGcHJlZml4GAMgASgJEhIKCmlzX3ByaXZhdGUYBCABKAgiaAoOQXdzQ3JlZGVudGlhbHMSFQoNYWNjZXNzX2tleV9pZBgBIAEoCRIZChFzZWNyZXRfYWNjZXNzX2tleRgCIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAyABKAkSDgoGcmVnaW9uGAQgASgJIn8KC1Byb3h5Um91dGVyEkEKBnJvdXRlcxgBIAMoCzIxLmluZnJhY29zdC5wYXJzZXIub3B0aW9ucy5Qcm94eVJvdXRlci5Sb3V0ZXNFbnRyeRotCgtSb3V0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBKlEKDkNyZWRlbnRpYWxUeXBlEh8KG0NSRURFTlRJQUxfVFlQRV9VTlNQRUNJRklFRBAAEgkKBVRPS0VOEAESEwoPVEVSUkFGT1JNX0NMT1VEEAJC6gEKHGNvbS5pbmZyYWNvc3QucGFyc2VyLm9wdGlvbnNCDE9wdGlvbnNQcm90b1ABWjpnaXRodWIuY29tL2luZnJhY29zdC9wcm90by9nZW4vZ28vaW5mcmFjb3N0L3BhcnNlci9vcHRpb25zogIDSVBPqgIYSW5mcmFjb3N0LlBhcnNlci5PcHRpb25zygIYSW5mcmFjb3N0XFBhcnNlclxPcHRpb25z4gIkSW5mcmFjb3N0XFBhcnNlclxPcHRpb25zXEdQQk1ldGFkYXRh6gIaSW5mcmFjb3N0OjpQYXJzZXI6Ok9wdGlvbnNiBnByb3RvMw"); /** * @generated from message infracost.parser.options.GenericOptions @@ -155,6 +155,26 @@ export type GenericOptions = Message<"infracost.parser.options.GenericOptions"> * @generated from field: bool force_local_module_paths = 19; */ forceLocalModulePaths: boolean; + + /** + * The Terraform workspace to select when parsing. Source: the project's configured workspace + * (config file / INFRACOST_TERRAFORM_WORKSPACE env). Consumed by the terraform-family plugins. + * It is a caller-sourced runtime option, NOT part of the raw_options blob, because it is also read + * outside the plugin (e.g. the project's workspace in the cost output / provider input). + * + * @generated from field: string workspace = 20; + */ + workspace: string; + + /** + * Terraform Cloud / Enterprise identity for the project. Source: the project's configured + * terraform.cloud.*. Consumed by the terraform-family plugins to read the remote workspace. Typed + * (not in the raw_options blob) because it is caller-sourced and the hostname is also read by the + * caller to pair with the token in a terraform-cloud credential_set. + * + * @generated from field: infracost.parser.options.TerraformCloudConfiguration terraform_cloud_configuration = 21; + */ + terraformCloudConfiguration?: TerraformCloudConfiguration; }; /** @@ -164,6 +184,45 @@ export type GenericOptions = Message<"infracost.parser.options.GenericOptions"> export const GenericOptionsSchema: GenMessage = /*@__PURE__*/ messageDesc(file_infracost_parser_options_options, 0); +/** + * TerraformCloudConfiguration identifies the Terraform Cloud / Enterprise workspace to read. The + * plugin pairs it with its auth token by matching hostname against a credential_set's host, then + * uses organization + workspace to address the remote workspace. NOTE: this workspace is the TFC + * remote workspace, distinct from GenericOptions.workspace (the terraform CLI workspace). + * + * @generated from message infracost.parser.options.TerraformCloudConfiguration + */ +export type TerraformCloudConfiguration = Message<"infracost.parser.options.TerraformCloudConfiguration"> & { + /** + * The Terraform Cloud organization. + * + * @generated from field: string organization = 1; + */ + organization: string; + + /** + * The Terraform Cloud remote workspace name. + * + * @generated from field: string workspace = 2; + */ + workspace: string; + + /** + * The Terraform Cloud / Enterprise hostname (e.g. app.terraform.io); the key used to pair with the + * credential_set that carries the token for this host. + * + * @generated from field: string hostname = 3; + */ + hostname: string; +}; + +/** + * Describes the message infracost.parser.options.TerraformCloudConfiguration. + * Use `create(TerraformCloudConfigurationSchema)` to create a new message. + */ +export const TerraformCloudConfigurationSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_infracost_parser_options_options, 1); + /** * AttributeRequirement lists the attributes a given resource type must set for a FinOps * naming/tagging policy. @@ -191,7 +250,7 @@ export type AttributeRequirement = Message<"infracost.parser.options.AttributeRe * Use `create(AttributeRequirementSchema)` to create a new message. */ export const AttributeRequirementSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_infracost_parser_options_options, 1); + messageDesc(file_infracost_parser_options_options, 2); /** * DependencyRequest specifies parameters for extracting resource dependencies during parsing. @@ -234,7 +293,7 @@ export type DependencyRequest = Message<"infracost.parser.options.DependencyRequ * Use `create(DependencyRequestSchema)` to create a new message. */ export const DependencyRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_infracost_parser_options_options, 2); + messageDesc(file_infracost_parser_options_options, 3); /** * @generated from message infracost.parser.options.Debug @@ -260,7 +319,7 @@ export type Debug = Message<"infracost.parser.options.Debug"> & { * Use `create(DebugSchema)` to create a new message. */ export const DebugSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_infracost_parser_options_options, 3); + messageDesc(file_infracost_parser_options_options, 4); /** * @generated from message infracost.parser.options.CredentialSet @@ -293,7 +352,7 @@ export type CredentialSet = Message<"infracost.parser.options.CredentialSet"> & * Use `create(CredentialSetSchema)` to create a new message. */ export const CredentialSetSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_infracost_parser_options_options, 4); + messageDesc(file_infracost_parser_options_options, 5); /** * @generated from message infracost.parser.options.RemoteModuleCacheConfig @@ -333,7 +392,7 @@ export type RemoteModuleCacheConfig = Message<"infracost.parser.options.RemoteMo * Use `create(RemoteModuleCacheConfigSchema)` to create a new message. */ export const RemoteModuleCacheConfigSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_infracost_parser_options_options, 5); + messageDesc(file_infracost_parser_options_options, 6); /** * @generated from message infracost.parser.options.AwsCredentials @@ -373,7 +432,7 @@ export type AwsCredentials = Message<"infracost.parser.options.AwsCredentials"> * Use `create(AwsCredentialsSchema)` to create a new message. */ export const AwsCredentialsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_infracost_parser_options_options, 6); + messageDesc(file_infracost_parser_options_options, 7); /** * @generated from message infracost.parser.options.ProxyRouter @@ -390,7 +449,7 @@ export type ProxyRouter = Message<"infracost.parser.options.ProxyRouter"> & { * Use `create(ProxyRouterSchema)` to create a new message. */ export const ProxyRouterSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_infracost_parser_options_options, 7); + messageDesc(file_infracost_parser_options_options, 8); /** * @generated from enum infracost.parser.options.CredentialType diff --git a/package-lock.json b/package-lock.json index 812fe21..1eaec1e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@infracost/proto", - "version": "1.157.0", + "version": "1.158.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@infracost/proto", - "version": "1.157.0", + "version": "1.158.0", "license": "Apache-2.0", "dependencies": { "@bufbuild/protobuf": "^2.10.1" diff --git a/proto/infracost/parser/options/options.proto b/proto/infracost/parser/options/options.proto index cbb4285..2e48104 100644 --- a/proto/infracost/parser/options/options.proto +++ b/proto/infracost/parser/options/options.proto @@ -53,6 +53,30 @@ message GenericOptions { // Force module sources to resolve as local paths instead of downloading them. Source: caller flag. // Consumed by the terraform-family plugins. bool force_local_module_paths = 19; + // The Terraform workspace to select when parsing. Source: the project's configured workspace + // (config file / INFRACOST_TERRAFORM_WORKSPACE env). Consumed by the terraform-family plugins. + // It is a caller-sourced runtime option, NOT part of the raw_options blob, because it is also read + // outside the plugin (e.g. the project's workspace in the cost output / provider input). + string workspace = 20; + // Terraform Cloud / Enterprise identity for the project. Source: the project's configured + // terraform.cloud.*. Consumed by the terraform-family plugins to read the remote workspace. Typed + // (not in the raw_options blob) because it is caller-sourced and the hostname is also read by the + // caller to pair with the token in a terraform-cloud credential_set. + TerraformCloudConfiguration terraform_cloud_configuration = 21; +} + +// TerraformCloudConfiguration identifies the Terraform Cloud / Enterprise workspace to read. The +// plugin pairs it with its auth token by matching hostname against a credential_set's host, then +// uses organization + workspace to address the remote workspace. NOTE: this workspace is the TFC +// remote workspace, distinct from GenericOptions.workspace (the terraform CLI workspace). +message TerraformCloudConfiguration { + // The Terraform Cloud organization. + string organization = 1; + // The Terraform Cloud remote workspace name. + string workspace = 2; + // The Terraform Cloud / Enterprise hostname (e.g. app.terraform.io); the key used to pair with the + // credential_set that carries the token for this host. + string hostname = 3; } // AttributeRequirement lists the attributes a given resource type must set for a FinOps