Skip to content

Commit f412d39

Browse files
authored
Add protobuf support for list messages and rpcs (#512)
* Add protobuf support for list messages and rpcs * Update protobuf to reflect core changes
1 parent 8c53222 commit f412d39

File tree

8 files changed

+1838
-751
lines changed

8 files changed

+1838
-751
lines changed

tfprotov5/internal/tfplugin5/tfplugin5.pb.go

Lines changed: 798 additions & 384 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tfprotov5/internal/tfplugin5/tfplugin5.proto

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
// Copyright (c) HashiCorp, Inc.
22
// SPDX-License-Identifier: MPL-2.0
33

4-
// Terraform Plugin RPC protocol version 5.9
4+
// Terraform Plugin RPC protocol version 5.10
55
//
6-
// This file defines version 5.9 of the RPC protocol. To implement a plugin
6+
// This file defines version 5.10 of the RPC protocol. To implement a plugin
77
// against this protocol, copy this definition into your own codebase and
88
// use protoc to generate stubs for your target language.
99
//
@@ -349,6 +349,10 @@ service Provider {
349349
rpc RenewEphemeralResource(RenewEphemeralResource.Request) returns (RenewEphemeralResource.Response);
350350
rpc CloseEphemeralResource(CloseEphemeralResource.Request) returns (CloseEphemeralResource.Response);
351351

352+
/////// List
353+
rpc ListResource(ListResource.Request) returns (stream ListResource.Event);
354+
rpc ValidateListResourceConfig(ValidateListResourceConfig.Request) returns (ValidateListResourceConfig.Response);
355+
352356
// Functions
353357

354358
// GetFunctions returns the definitions of all functions.
@@ -375,6 +379,7 @@ message GetMetadata {
375379
// functions returns metadata for any functions.
376380
repeated FunctionMetadata functions = 5;
377381
repeated EphemeralResourceMetadata ephemeral_resources = 6;
382+
repeated ListResourceMetadata list_resources = 7;
378383
}
379384

380385
message FunctionMetadata {
@@ -393,6 +398,10 @@ message GetMetadata {
393398
message EphemeralResourceMetadata {
394399
string type_name = 1;
395400
}
401+
402+
message ListResourceMetadata {
403+
string type_name = 1;
404+
}
396405
}
397406

398407
message GetProviderSchema {
@@ -409,6 +418,7 @@ message GetProviderSchema {
409418
// functions is a mapping of function names to definitions.
410419
map<string, Function> functions = 7;
411420
map<string, Schema> ephemeral_resource_schemas = 8;
421+
map<string, Schema> list_resource_schemas = 9;
412422
}
413423
}
414424

@@ -824,3 +834,41 @@ message UpgradeResourceIdentity {
824834
repeated Diagnostic diagnostics = 2;
825835
}
826836
}
837+
838+
message ListResource {
839+
message Request {
840+
// type_name is the list resource type name.
841+
string type_name = 1;
842+
843+
// configuration is the list ConfigSchema-based configuration data.
844+
DynamicValue config = 2;
845+
846+
// when include_resource_object is set to true, the provider should
847+
// include the full resource object for each result
848+
bool include_resource_object = 3;
849+
}
850+
851+
message Event {
852+
// identity is the resource identity data of the resource instance.
853+
ResourceIdentityData identity = 1;
854+
855+
// display_name can be displayed in a UI to make it easier for humans to identify a resource
856+
string display_name = 2;
857+
858+
// optional resource object which can be useful when combining list blocks in configuration
859+
optional DynamicValue resource_object = 3;
860+
861+
// A warning or error diagnostics for this event
862+
repeated Diagnostic diagnostic = 4;
863+
}
864+
}
865+
866+
message ValidateListResourceConfig {
867+
message Request {
868+
string type_name = 1;
869+
DynamicValue config = 2;
870+
}
871+
message Response {
872+
repeated Diagnostic diagnostics = 1;
873+
}
874+
}

tfprotov5/internal/tfplugin5/tfplugin5_grpc.pb.go

Lines changed: 85 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tfprotov5/tf5server/server.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ const (
4949
//
5050
// In the future, it may be possible to include this information directly
5151
// in the protocol buffers rather than recreating a constant here.
52-
protocolVersionMinor uint = 9
52+
protocolVersionMinor uint = 10
5353
)
5454

5555
// protocolVersion represents the combined major and minor version numbers of

0 commit comments

Comments
 (0)