pulumi-language-ruby 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +39 -0
  4. data/Rakefile +8 -0
  5. data/exe/pulumi-language-ruby +39 -0
  6. data/lib/ruby_pulumi/generated/pulumi/alias_pb.rb +16 -0
  7. data/lib/ruby_pulumi/generated/pulumi/analyzer_pb.rb +43 -0
  8. data/lib/ruby_pulumi/generated/pulumi/analyzer_services_pb.rb +69 -0
  9. data/lib/ruby_pulumi/generated/pulumi/callback_pb.rb +17 -0
  10. data/lib/ruby_pulumi/generated/pulumi/callback_services_pb.rb +39 -0
  11. data/lib/ruby_pulumi/generated/pulumi/codegen/hcl_pb.rb +20 -0
  12. data/lib/ruby_pulumi/generated/pulumi/codegen/loader_pb.rb +17 -0
  13. data/lib/ruby_pulumi/generated/pulumi/codegen/loader_services_pb.rb +40 -0
  14. data/lib/ruby_pulumi/generated/pulumi/codegen/mapper_pb.rb +17 -0
  15. data/lib/ruby_pulumi/generated/pulumi/codegen/mapper_services_pb.rb +50 -0
  16. data/lib/ruby_pulumi/generated/pulumi/converter_pb.rb +21 -0
  17. data/lib/ruby_pulumi/generated/pulumi/converter_services_pb.rb +42 -0
  18. data/lib/ruby_pulumi/generated/pulumi/engine_pb.rb +26 -0
  19. data/lib/ruby_pulumi/generated/pulumi/engine_services_pb.rb +51 -0
  20. data/lib/ruby_pulumi/generated/pulumi/errors_pb.rb +17 -0
  21. data/lib/ruby_pulumi/generated/pulumi/events_pb.rb +17 -0
  22. data/lib/ruby_pulumi/generated/pulumi/events_services_pb.rb +45 -0
  23. data/lib/ruby_pulumi/generated/pulumi/language_pb.rb +55 -0
  24. data/lib/ruby_pulumi/generated/pulumi/language_services_pb.rb +121 -0
  25. data/lib/ruby_pulumi/generated/pulumi/plugin_pb.rb +19 -0
  26. data/lib/ruby_pulumi/generated/pulumi/provider_pb.rb +66 -0
  27. data/lib/ruby_pulumi/generated/pulumi/provider_services_pb.rb +232 -0
  28. data/lib/ruby_pulumi/generated/pulumi/resource_pb.rb +51 -0
  29. data/lib/ruby_pulumi/generated/pulumi/resource_services_pb.rb +64 -0
  30. data/lib/ruby_pulumi/generated/pulumi/resource_status_pb.rb +23 -0
  31. data/lib/ruby_pulumi/generated/pulumi/resource_status_services_pb.rb +44 -0
  32. data/lib/ruby_pulumi/generated/pulumi/source_pb.rb +17 -0
  33. data/lib/ruby_pulumi/generated/pulumi/testing/language_pb.rb +24 -0
  34. data/lib/ruby_pulumi/generated/pulumi/testing/language_services_pb.rb +47 -0
  35. data/lib/ruby_pulumi/language_host.rb +46 -0
  36. data/lib/ruby_pulumi/pulumi.rb +2 -0
  37. data/lib/ruby_pulumi/resource.rb +24 -0
  38. data/lib/ruby_pulumi/runtime.rb +7 -0
  39. data/pulumi/alias.proto +38 -0
  40. data/pulumi/analyzer.proto +293 -0
  41. data/pulumi/callback.proto +44 -0
  42. data/pulumi/codegen/hcl.proto +89 -0
  43. data/pulumi/codegen/loader.proto +51 -0
  44. data/pulumi/codegen/mapper.proto +74 -0
  45. data/pulumi/converter.proto +94 -0
  46. data/pulumi/engine.proto +113 -0
  47. data/pulumi/errors.proto +38 -0
  48. data/pulumi/events.proto +39 -0
  49. data/pulumi/language.proto +653 -0
  50. data/pulumi/plugin.proto +66 -0
  51. data/pulumi/provider.proto +1227 -0
  52. data/pulumi/resource.proto +394 -0
  53. data/pulumi/resource_status.proto +172 -0
  54. data/pulumi/source.proto +36 -0
  55. data/pulumi/testing/language.proto +106 -0
  56. data/sig/pulumi/language/ruby.rbs +8 -0
  57. metadata +125 -0
@@ -0,0 +1,232 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # Source: pulumi/provider.proto for package 'pulumirpc'
3
+ # Original file comments:
4
+ # Copyright 2016-2026, Pulumi Corporation.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'grpc'
20
+ require 'pulumi/provider_pb'
21
+
22
+ module Pulumirpc
23
+ module ResourceProvider
24
+ # The ResourceProvider service defines a standard interface for [resource providers](providers). A resource provider
25
+ # manages a set of configuration, resources, functions and so on in a single package, and offers methods such as CRUD
26
+ # operations on resources and invocations of functions. Resource providers are primarily managed by the Pulumi engine
27
+ # as part of a deployment in order to interact with the cloud providers underpinning a Pulumi application.
28
+ class Service
29
+
30
+ include ::GRPC::GenericService
31
+
32
+ self.marshal_class_method = :encode
33
+ self.unmarshal_class_method = :decode
34
+ self.service_name = 'pulumirpc.ResourceProvider'
35
+
36
+ # `Handshake` is the first call made by the engine to a provider. It is used to pass the engine's address to the
37
+ # provider so that it may establish its own connections back, and to establish protocol configuration that will be
38
+ # used to communicate between the two parties. Providers that support `Handshake` should return responses
39
+ # consistent with those returned in response to [](pulumirpc.ResourceProvider.Configure) calls where there is
40
+ # overlap due to the use of `Configure` prior to `Handshake`'s introduction.
41
+ rpc :Handshake, ::Pulumirpc::ProviderHandshakeRequest, ::Pulumirpc::ProviderHandshakeResponse
42
+ # `Parameterize` is the primary means of supporting [parameterized providers](parameterized-providers), which allow
43
+ # a caller to change a provider's behavior ahead of its [configuration](pulumirpc.ResourceProvider.Configure) and
44
+ # subsequent use. Where a [](pulumirpc.ResourceProvider.Configure) call allows a caller to influence provider
45
+ # behaviour at a high level (e.g. by specifying the region in which an AWS provider should operate), a
46
+ # `Parameterize` call may change the set of resources and functions that a provider offers (that is, its schema).
47
+ # This is useful in any case where some "set" of providers can be captured by a single implementation that may
48
+ # power fundamentally different schemata -- dynamically bridging Terraform providers, or managing Kubernetes
49
+ # clusters with custom resource definitions, for instance, are good examples. The parameterized package that
50
+ # `Parameterize` yields is known as a *sub-package* of the original (unparameterized) package.
51
+ #
52
+ # `Parameterize` supports two types of parameterization:
53
+ #
54
+ # * *Replacement parameterization*, whereby a `Parameterize` call results in a schema that completely replaces the
55
+ # original provider schema. Bridging a Terraform provider dynamically might be an example of this -- following
56
+ # the call to `Parameterize`, the provider's schema will become that of the Terraform provider that was bridged.
57
+ # Providers that implement replacement parameterization expect a *single* call to `Parameterize`.
58
+ #
59
+ # * *Extension parameterization*, in which a `Parameterize` call results in a schema that is a superset of the
60
+ # original. This is useful in cases where a provider can be extended with additional resources or functions, such
61
+ # as a Kubernetes provider that can be extended with resources representing custom resource definitions.
62
+ # Providers that implement extension parameterization should accept multiple calls to `Parameterize`. Extension
63
+ # packages may even be called multiple times with the same package name, but with different versions. The CRUD
64
+ # operations of extension resources must include the version of which sub-package they correspond to.
65
+ #
66
+ # `Parameterize` should work the same whether it is provided with `ParametersArgs` or `ParametersValue` input. In
67
+ # each case it should return the sub-package name and version (which when a `ParametersValue` is supplied should
68
+ # match the given input).
69
+ rpc :Parameterize, ::Pulumirpc::ParameterizeRequest, ::Pulumirpc::ParameterizeResponse
70
+ # GetSchema fetches the schema for this resource provider.
71
+ rpc :GetSchema, ::Pulumirpc::GetSchemaRequest, ::Pulumirpc::GetSchemaResponse
72
+ # `CheckConfig` validates a set of configuration inputs that will be passed to this provider instance.
73
+ # `CheckConfig` is to provider resources what [](pulumirpc.ResourceProvider.Check) is to individual resources, and
74
+ # is the first stage in configuring (that is, eventually executing a [](pulumirpc.ResourceProvider.Configure) call)
75
+ # a provider using user-supplied values. In the case that provider inputs are coming from some source that has been
76
+ # checked previously (e.g. a Pulumi state), it is not necessary to call `CheckConfig`.
77
+ #
78
+ # A `CheckConfig` call returns either a set of checked, known-valid inputs that may subsequently be passed to
79
+ # [](pulumirpc.ResourceProvider.DiffConfig) and/or [](pulumirpc.ResourceProvider.Configure), or a set of errors
80
+ # explaining why the inputs are invalid. In the case that a set of inputs are successfully validated and returned,
81
+ # `CheckConfig` *may also populate default values* for provider configuration, returning them so that they may be
82
+ # passed to a subsequent [](pulumirpc.ResourceProvider.Configure) call and persisted in the Pulumi state. In the
83
+ # case that `CheckConfig` fails and returns a set of errors, it is expected that the caller (typically the Pulumi
84
+ # engine) will fail provider registration.
85
+ #
86
+ # As a rule, the provider inputs returned by a call to `CheckConfig` should preserve the original representation of
87
+ # the properties as present in the program inputs. Though this rule is not required for correctness, violations
88
+ # thereof can negatively impact the end-user experience, as the provider inputs are used for detecting and
89
+ # rendering diffs.
90
+ rpc :CheckConfig, ::Pulumirpc::CheckRequest, ::Pulumirpc::CheckResponse
91
+ # `DiffConfig` compares an existing ("old") provider configuration with a new configuration and computes the
92
+ # difference (if any) between them. `DiffConfig` is to provider resources what [](pulumirpc.ResourceProvider.Diff)
93
+ # is to individual resources. `DiffConfig` should only be called with values that have at some point been validated
94
+ # by a [](pulumirpc.ResourceProvider.CheckConfig) call. The [](pulumirpc.DiffResponse) returned by a `DiffConfig`
95
+ # call is used primarily to determine whether or not the newly configured provider is capable of managing resources
96
+ # owned by the old provider. If `DiffConfig` indicates that the provider resource needs to be replaced, for
97
+ # instance, then all resources owned by that provider will *also* need to be replaced. Replacement semantics should
98
+ # thus be reserved for changes to configuration properties that are guaranteed to make old resources unmanageable.
99
+ # Changes to an AWS region, for example, will almost certainly require a provider replacement, but changes to an
100
+ # AWS access key, should almost certainly not.
101
+ #
102
+ # Implementations must satisfy the invariants documented on `DiffResponse`.
103
+ rpc :DiffConfig, ::Pulumirpc::DiffRequest, ::Pulumirpc::DiffResponse
104
+ # `Configure` is the final stage in configuring a provider instance. Callers may supply two sets of data:
105
+ #
106
+ # * Provider-specific configuration, which is the set of inputs that have been validated by a previous
107
+ # [](pulumirpc.ResourceProvider.CheckConfig) call.
108
+ # * Provider-agnostic ("protocol") configuration, such as whether or not the caller supports secrets.
109
+ #
110
+ # The provider is expected to return its own set of protocol configuration, indicating which features it supports
111
+ # in turn so that the caller and the provider can interact appropriately.
112
+ #
113
+ # Providers may expect a *single* call to `Configure`. If a call to `Configure` is missing required configuration,
114
+ # the provider may return a set of error details containing [](pulumirpc.ConfigureErrorMissingKeys) values to
115
+ # indicate which keys are missing.
116
+ #
117
+ # :::{important}
118
+ # The use of `Configure` to configure protocol features is deprecated in favour of the
119
+ # [](pulumirpc.ResourceProvider.Handshake) method, which should be implemented by newer providers. To enable
120
+ # compatibility between older engines and providers:
121
+ #
122
+ # * Callers which call `Handshake` *must* call `Configure` with flags such as `acceptSecrets` and `acceptResources`
123
+ # set to `true`, since these features predate the introduction of `Handshake` and thus `Handshake`-aware callers
124
+ # must support them. See [](pulumirpc.ConfigureRequest) for more information.
125
+ # * Providers which implement `Handshake` *must* support flags such as `acceptSecrets` and `acceptResources`, and
126
+ # indicate as such by always returning `true` for these fields in [](pulumirpc.ConfigureResponse). See
127
+ # [](pulumirpc.ConfigureResponse) for more information.
128
+ # :::
129
+ rpc :Configure, ::Pulumirpc::ConfigureRequest, ::Pulumirpc::ConfigureResponse
130
+ # Invoke dynamically executes a built-in function in the provider.
131
+ rpc :Invoke, ::Pulumirpc::InvokeRequest, ::Pulumirpc::InvokeResponse
132
+ # Call dynamically executes a method in the provider associated with a component resource.
133
+ rpc :Call, ::Pulumirpc::CallRequest, ::Pulumirpc::CallResponse
134
+ # `Check` validates a set of input properties against a given resource type. A `Check` call returns either a set of
135
+ # checked, known-valid inputs that may subsequently be passed to [](pulumirpc.ResourceProvider.Diff),
136
+ # [](pulumirpc.ResourceProvider.Create), or [](pulumirpc.ResourceProvider.Update); or a set of errors explaining
137
+ # why the inputs are invalid. In the case that a set of inputs are successfully validated and returned, `Check`
138
+ # *may also populate default values* for resource inputs, returning them so that they may be passed to a subsequent
139
+ # call and persisted in the Pulumi state. In the case that `Check` fails and returns a set of errors, it is
140
+ # expected that the caller (typically the Pulumi engine) will fail resource registration.
141
+ #
142
+ # As a rule, the provider inputs returned by a call to `Check` should preserve the original representation of the
143
+ # properties as present in the program inputs. Though this rule is not required for correctness, violations thereof
144
+ # can negatively impact the end-user experience, as the provider inputs are used for detecting and rendering
145
+ # diffs.
146
+ rpc :Check, ::Pulumirpc::CheckRequest, ::Pulumirpc::CheckResponse
147
+ # `Diff` compares an existing ("old") set of resource properties with a new set of properties and computes the
148
+ # difference (if any) between them. `Diff` should only be called with values that have at some point been validated
149
+ # by a [](pulumirpc.ResourceProvider.Check) call.
150
+ #
151
+ # Implementations must satisfy the invariants documented on `DiffResponse`.
152
+ rpc :Diff, ::Pulumirpc::DiffRequest, ::Pulumirpc::DiffResponse
153
+ # `Create` provisions a new instance of the specified [(custom) resource](custom-resources). It returns a
154
+ # provider-assigned ID for the resource as well as the output properties that arose from the creation properties.
155
+ # Output properties are typically the union of the resource's input properties and any additional values that were
156
+ # computed or made available during creation.
157
+ #
158
+ # If creation fails, `Create` may return an [](pulumirpc.ErrorResourceInitFailed) error detail explaining why.
159
+ # Moreover, if `Create` does return an error, it must be the case that the resource was *not* created (that is,
160
+ # `Create` can be thought of as transactional or atomic).
161
+ rpc :Create, ::Pulumirpc::CreateRequest, ::Pulumirpc::CreateResponse
162
+ # `Read` reads the current live state associated with a resource identified by the supplied state. The given state
163
+ # must be sufficient to uniquely identify the resource. This is typically just the resource ID, but may also
164
+ # include other properties.
165
+ rpc :Read, ::Pulumirpc::ReadRequest, ::Pulumirpc::ReadResponse
166
+ # `Update` updates an existing resource according to a new set of inputs, returning a new set of output properties.
167
+ rpc :Update, ::Pulumirpc::UpdateRequest, ::Pulumirpc::UpdateResponse
168
+ # `Delete` deprovisions an existing resource as specified by its ID. `Delete` should be transactional/atomic -- if
169
+ # a call to `Delete` fails, it must be the case that the resource was *not* deleted and can be assumed to still
170
+ # exist.
171
+ rpc :Delete, ::Pulumirpc::DeleteRequest, ::Google::Protobuf::Empty
172
+ # `Construct` provisions a new [component resource](component-resources). Providers that implement `Construct` are
173
+ # referred to as [component providers](component-providers). `Construct` is to component resources what
174
+ # [](pulumirpc.ResourceProvider.Create) is to [custom resources](custom-resources). Components do not have any
175
+ # lifecycle of their own, and instead embody the lifecycles of the resources that they are composed of. As such,
176
+ # `Construct` is effectively a subprogram whose resources will be persisted in the caller's state. It is
177
+ # consequently passed enough information to manage fully these resources. At a high level, this comprises:
178
+ #
179
+ # * A [](pulumirpc.ResourceMonitor) endpoint which the provider can use to [register](resource-registration) nested
180
+ # custom or component resources that belong to the component.
181
+ #
182
+ # * A set of input properties.
183
+ #
184
+ # * A full set of [resource options](https://www.pulumi.com/docs/iac/concepts/options/) that the component should
185
+ # propagate to resources it registers against the supplied resource monitor.
186
+ rpc :Construct, ::Pulumirpc::ConstructRequest, ::Pulumirpc::ConstructResponse
187
+ # Cancel signals the provider to gracefully shut down and abort any ongoing resource operations.
188
+ # Operations aborted in this way will return an error (e.g., `Update` and `Create` will either return a
189
+ # creation error or an initialization error). Since Cancel is advisory and non-blocking, it is up
190
+ # to the host to decide how long to wait after Cancel is called before (e.g.)
191
+ # hard-closing any gRPC connection.
192
+ rpc :Cancel, ::Google::Protobuf::Empty, ::Google::Protobuf::Empty
193
+ # GetPluginInfo returns generic information about this plugin, like its version.
194
+ rpc :GetPluginInfo, ::Google::Protobuf::Empty, ::Pulumirpc::PluginInfo
195
+ # Attach sends the engine address to an already running plugin.
196
+ rpc :Attach, ::Pulumirpc::PluginAttach, ::Google::Protobuf::Empty
197
+ # GetMapping fetches the mapping for this resource provider, if any. A provider should return an empty
198
+ # response (not an error) if it doesn't have a mapping for the given key.
199
+ #
200
+ # `GetMapping` returns mappings designed to aid in [converting programs and state from other
201
+ # ecosystems](converters). It accepts a "conversion key", which effectively corresponds to a source language, such
202
+ # as `terraform`, and a *source provider name*, which is the name of the provider *in the source language*. Given
203
+ # these, it returns source-specific mapping data for the provider requested. As an example, the Pulumi AWS
204
+ # provider, which is bridged from the Terraform AWS provider and thus capable of mapping names between the two,
205
+ # might respond to a call with key `terraform` and source provider name `aws` with mapping data for transforming
206
+ # (among other things) Terraform AWS names such as `aws_s3_bucket` into Pulumi AWS types such as
207
+ # `aws:s3/bucket:Bucket`. If a provider only supports a single source provider, or has some sensible default, it
208
+ # may respond also to a call in which the source provider name is empty (`""`), which will be made when the engine
209
+ # does not have sufficient knowledge to work out which provider offers a specific mapping.
210
+ #
211
+ # In general, it is expected that providers implemented by bridging an equivalent provider from another ecosystem
212
+ # (such as bridged Terraform providers built atop the `pulumi-terraform-bridge`, for instance) implement
213
+ # `GetMapping` to support conversion from that ecosystem into Pulumi using the same logic that underpins the
214
+ # bridging itself.
215
+ rpc :GetMapping, ::Pulumirpc::GetMappingRequest, ::Pulumirpc::GetMappingResponse
216
+ # `GetMappings` is an optional method designed to aid in [converting programs and state from other
217
+ # ecosystems](converters). `GetMappings` accepts a "conversion key". This corresponds to a source language, for
218
+ # which we want to retrieve mappings for names etc. from that source language into Pulumi. An example key might
219
+ # therefore be `terraform` in the event that we wish to map e.g. Terraform resource names to Pulumi resource types.
220
+ # Given a key, `GetMappings` returns a list of *source provider names* for which calls to `GetMapping` will return
221
+ # mappings. So, continuing the Terraform example, the Pulumi AWS provider, which is bridged from the Terraform AWS
222
+ # provider and thus capable of mapping names between the two, might return the list `["aws"]` in response to a call
223
+ # with key `terraform`.
224
+ #
225
+ # If a provider does not implement `GetMappings`, the engine will fall back to calling `GetMapping` blindly without
226
+ # a source provider name (that is, with the value `""`).
227
+ rpc :GetMappings, ::Pulumirpc::GetMappingsRequest, ::Pulumirpc::GetMappingsResponse
228
+ end
229
+
230
+ Stub = Service.rpc_stub_class
231
+ end
232
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: pulumi/resource.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+ require 'google/protobuf/empty_pb'
8
+ require 'google/protobuf/struct_pb'
9
+ require 'pulumi/provider_pb'
10
+ require 'pulumi/alias_pb'
11
+ require 'pulumi/source_pb'
12
+ require 'pulumi/callback_pb'
13
+
14
+
15
+ descriptor_data = "\n\x15pulumi/resource.proto\x12\tpulumirpc\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x15pulumi/provider.proto\x1a\x12pulumi/alias.proto\x1a\x13pulumi/source.proto\x1a\x15pulumi/callback.proto\"$\n\x16SupportsFeatureRequest\x12\n\n\x02id\x18\x01 \x01(\t\"-\n\x17SupportsFeatureResponse\x12\x12\n\nhasSupport\x18\x01 \x01(\x08\"\xc6\x04\n\x13ReadResourceRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0e\n\x06parent\x18\x04 \x01(\t\x12+\n\nproperties\x18\x05 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x14\n\x0c\x64\x65pendencies\x18\x06 \x03(\t\x12\x10\n\x08provider\x18\x07 \x01(\t\x12\x0f\n\x07version\x18\x08 \x01(\t\x12\x15\n\racceptSecrets\x18\t \x01(\x08\x12\x1f\n\x17\x61\x64\x64itionalSecretOutputs\x18\n \x03(\t\x12\x17\n\x0f\x61\x63\x63\x65ptResources\x18\x0c \x01(\x08\x12\x19\n\x11pluginDownloadURL\x18\r \x01(\t\x12L\n\x0fpluginChecksums\x18\x0f \x03(\x0b\x32\x33.pulumirpc.ReadResourceRequest.PluginChecksumsEntry\x12\x31\n\x0esourcePosition\x18\x0e \x01(\x0b\x32\x19.pulumirpc.SourcePosition\x12)\n\nstackTrace\x18\x11 \x01(\x0b\x32\x15.pulumirpc.StackTrace\x12\x1e\n\x16parentStackTraceHandle\x18\x12 \x01(\t\x12\x12\n\npackageRef\x18\x10 \x01(\t\x1a\x36\n\x14PluginChecksumsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01J\x04\x08\x0b\x10\x0cR\x07\x61liases\"P\n\x14ReadResourceResponse\x12\x0b\n\x03urn\x18\x01 \x01(\t\x12+\n\nproperties\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"\xd8\x0f\n\x17RegisterResourceRequest\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06parent\x18\x03 \x01(\t\x12\x0e\n\x06\x63ustom\x18\x04 \x01(\x08\x12\'\n\x06object\x18\x05 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x14\n\x07protect\x18\x06 \x01(\x08H\x00\x88\x01\x01\x12\x14\n\x0c\x64\x65pendencies\x18\x07 \x03(\t\x12\x10\n\x08provider\x18\x08 \x01(\t\x12Z\n\x14propertyDependencies\x18\t \x03(\x0b\x32<.pulumirpc.RegisterResourceRequest.PropertyDependenciesEntry\x12\x1b\n\x13\x64\x65leteBeforeReplace\x18\n \x01(\x08\x12\x0f\n\x07version\x18\x0b \x01(\t\x12\x15\n\rignoreChanges\x18\x0c \x03(\t\x12\x15\n\racceptSecrets\x18\r \x01(\x08\x12\x1f\n\x17\x61\x64\x64itionalSecretOutputs\x18\x0e \x03(\t\x12\x11\n\taliasURNs\x18\x0f \x03(\t\x12\x10\n\x08importId\x18\x10 \x01(\t\x12I\n\x0e\x63ustomTimeouts\x18\x11 \x01(\x0b\x32\x31.pulumirpc.RegisterResourceRequest.CustomTimeouts\x12\"\n\x1a\x64\x65leteBeforeReplaceDefined\x18\x12 \x01(\x08\x12\x1d\n\x15supportsPartialValues\x18\x13 \x01(\x08\x12\x0e\n\x06remote\x18\x14 \x01(\x08\x12\x17\n\x0f\x61\x63\x63\x65ptResources\x18\x15 \x01(\x08\x12\x44\n\tproviders\x18\x16 \x03(\x0b\x32\x31.pulumirpc.RegisterResourceRequest.ProvidersEntry\x12\x18\n\x10replaceOnChanges\x18\x17 \x03(\t\x12\x19\n\x11pluginDownloadURL\x18\x18 \x01(\t\x12P\n\x0fpluginChecksums\x18\x1e \x03(\x0b\x32\x37.pulumirpc.RegisterResourceRequest.PluginChecksumsEntry\x12\x1b\n\x0eretainOnDelete\x18\x19 \x01(\x08H\x01\x88\x01\x01\x12!\n\x07\x61liases\x18\x1a \x03(\x0b\x32\x10.pulumirpc.Alias\x12\x13\n\x0b\x64\x65letedWith\x18\x1b \x01(\t\x12\x14\n\x0creplace_with\x18& \x03(\t\x12\x33\n\x13replacement_trigger\x18\' \x01(\x0b\x32\x16.google.protobuf.Value\x12\x12\n\naliasSpecs\x18\x1c \x01(\x08\x12\x31\n\x0esourcePosition\x18\x1d \x01(\x0b\x32\x19.pulumirpc.SourcePosition\x12)\n\nstackTrace\x18# \x01(\x0b\x32\x15.pulumirpc.StackTrace\x12\x1e\n\x16parentStackTraceHandle\x18$ \x01(\t\x12\'\n\ntransforms\x18\x1f \x03(\x0b\x32\x13.pulumirpc.Callback\x12\x1f\n\x17supportsResultReporting\x18 \x01(\x08\x12\x12\n\npackageRef\x18! \x01(\t\x12K\n\x05hooks\x18\" \x01(\x0b\x32\x37.pulumirpc.RegisterResourceRequest.ResourceHooksBindingH\x02\x88\x01\x01\x12\x11\n\thideDiffs\x18% \x03(\t\x12N\n\x0e\x65nvVarMappings\x18) \x03(\x0b\x32\x36.pulumirpc.RegisterResourceRequest.EnvVarMappingsEntry\x1a$\n\x14PropertyDependencies\x12\x0c\n\x04urns\x18\x01 \x03(\t\x1a@\n\x0e\x43ustomTimeouts\x12\x0e\n\x06\x63reate\x18\x01 \x01(\t\x12\x0e\n\x06update\x18\x02 \x01(\t\x12\x0e\n\x06\x64\x65lete\x18\x03 \x01(\t\x1at\n\x19PropertyDependenciesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x46\n\x05value\x18\x02 \x01(\x0b\x32\x37.pulumirpc.RegisterResourceRequest.PropertyDependencies:\x02\x38\x01\x1a\x30\n\x0eProvidersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x36\n\x14PluginChecksumsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\xaf\x01\n\x14ResourceHooksBinding\x12\x15\n\rbefore_create\x18\x01 \x03(\t\x12\x14\n\x0c\x61\x66ter_create\x18\x02 \x03(\t\x12\x15\n\rbefore_update\x18\x03 \x03(\t\x12\x14\n\x0c\x61\x66ter_update\x18\x04 \x03(\t\x12\x15\n\rbefore_delete\x18\x05 \x03(\t\x12\x14\n\x0c\x61\x66ter_delete\x18\x06 \x03(\t\x12\x10\n\x08on_error\x18\x07 \x03(\t\x1a\x35\n\x13\x45nvVarMappingsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\n\n\x08_protectB\x11\n\x0f_retainOnDeleteB\x08\n\x06_hooks\"\x9a\x03\n\x18RegisterResourceResponse\x12\x0b\n\x03urn\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\t\x12\'\n\x06object\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x0e\n\x06stable\x18\x04 \x01(\x08\x12\x0f\n\x07stables\x18\x05 \x03(\t\x12[\n\x14propertyDependencies\x18\x06 \x03(\x0b\x32=.pulumirpc.RegisterResourceResponse.PropertyDependenciesEntry\x12!\n\x06result\x18\x07 \x01(\x0e\x32\x11.pulumirpc.Result\x1a$\n\x14PropertyDependencies\x12\x0c\n\x04urns\x18\x01 \x03(\t\x1au\n\x19PropertyDependenciesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12G\n\x05value\x18\x02 \x01(\x0b\x32\x38.pulumirpc.RegisterResourceResponse.PropertyDependencies:\x02\x38\x01\"W\n\x1eRegisterResourceOutputsRequest\x12\x0b\n\x03urn\x18\x01 \x01(\t\x12(\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"\xbc\x03\n\x15ResourceInvokeRequest\x12\x0b\n\x03tok\x18\x01 \x01(\t\x12%\n\x04\x61rgs\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x10\n\x08provider\x18\x03 \x01(\t\x12\x0f\n\x07version\x18\x04 \x01(\t\x12\x17\n\x0f\x61\x63\x63\x65ptResources\x18\x05 \x01(\x08\x12\x19\n\x11pluginDownloadURL\x18\x06 \x01(\t\x12N\n\x0fpluginChecksums\x18\x08 \x03(\x0b\x32\x35.pulumirpc.ResourceInvokeRequest.PluginChecksumsEntry\x12\x31\n\x0esourcePosition\x18\x07 \x01(\x0b\x32\x19.pulumirpc.SourcePosition\x12)\n\nstackTrace\x18\n \x01(\x0b\x32\x15.pulumirpc.StackTrace\x12\x1e\n\x16parentStackTraceHandle\x18\x0b \x01(\t\x12\x12\n\npackageRef\x18\t \x01(\t\x1a\x36\n\x14PluginChecksumsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"\x8b\x06\n\x13ResourceCallRequest\x12\x0b\n\x03tok\x18\x01 \x01(\t\x12%\n\x04\x61rgs\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12L\n\x0f\x61rgDependencies\x18\x03 \x03(\x0b\x32\x33.pulumirpc.ResourceCallRequest.ArgDependenciesEntry\x12\x10\n\x08provider\x18\x04 \x01(\t\x12\x0f\n\x07version\x18\x05 \x01(\t\x12\x19\n\x11pluginDownloadURL\x18\r \x01(\t\x12L\n\x0fpluginChecksums\x18\x10 \x03(\x0b\x32\x33.pulumirpc.ResourceCallRequest.PluginChecksumsEntry\x12\x31\n\x0esourcePosition\x18\x0f \x01(\x0b\x32\x19.pulumirpc.SourcePosition\x12)\n\nstackTrace\x18\x12 \x01(\x0b\x32\x15.pulumirpc.StackTrace\x12\x1e\n\x16parentStackTraceHandle\x18\x13 \x01(\t\x12\x12\n\npackageRef\x18\x11 \x01(\t\x1a$\n\x14\x41rgumentDependencies\x12\x0c\n\x04urns\x18\x01 \x03(\t\x1ak\n\x14\x41rgDependenciesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x42\n\x05value\x18\x02 \x01(\x0b\x32\x33.pulumirpc.ResourceCallRequest.ArgumentDependencies:\x02\x38\x01\x1a\x36\n\x14PluginChecksumsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tJ\x04\x08\t\x10\nJ\x04\x08\n\x10\x0bJ\x04\x08\x0b\x10\x0cJ\x04\x08\x0c\x10\rJ\x04\x08\x0e\x10\x0fR\x07projectR\x05stackR\x06\x63onfigR\x10\x63onfigSecretKeysR\x06\x64ryRunR\x08parallelR\x0fmonitorEndpointR\x0corganization\"\x99\x07\n\x18TransformResourceOptions\x12\x12\n\ndepends_on\x18\x01 \x03(\t\x12\x14\n\x07protect\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12\x16\n\x0eignore_changes\x18\x03 \x03(\t\x12\x1a\n\x12replace_on_changes\x18\x04 \x03(\t\x12\x0f\n\x07version\x18\x05 \x01(\t\x12!\n\x07\x61liases\x18\x06 \x03(\x0b\x32\x10.pulumirpc.Alias\x12\x10\n\x08provider\x18\x07 \x01(\t\x12J\n\x0f\x63ustom_timeouts\x18\x08 \x01(\x0b\x32\x31.pulumirpc.RegisterResourceRequest.CustomTimeouts\x12\x1b\n\x13plugin_download_url\x18\t \x01(\t\x12\x1d\n\x10retain_on_delete\x18\n \x01(\x08H\x01\x88\x01\x01\x12\x14\n\x0c\x64\x65leted_with\x18\x0b \x01(\t\x12\"\n\x15\x64\x65lete_before_replace\x18\x0c \x01(\x08H\x02\x88\x01\x01\x12!\n\x19\x61\x64\x64itional_secret_outputs\x18\r \x03(\t\x12\x45\n\tproviders\x18\x0e \x03(\x0b\x32\x32.pulumirpc.TransformResourceOptions.ProvidersEntry\x12R\n\x10plugin_checksums\x18\x0f \x03(\x0b\x32\x38.pulumirpc.TransformResourceOptions.PluginChecksumsEntry\x12\x46\n\x05hooks\x18\x10 \x01(\x0b\x32\x37.pulumirpc.RegisterResourceRequest.ResourceHooksBinding\x12\x0e\n\x06import\x18\x11 \x01(\t\x12\x11\n\thide_diff\x18\x12 \x03(\t\x12\x14\n\x0creplace_with\x18\x13 \x03(\t\x12\x33\n\x13replacement_trigger\x18\x14 \x01(\x0b\x32\x16.google.protobuf.Value\x1a\x30\n\x0eProvidersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x36\n\x14PluginChecksumsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x42\n\n\x08_protectB\x13\n\x11_retain_on_deleteB\x18\n\x16_delete_before_replace\"\xb1\x01\n\x10TransformRequest\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06\x63ustom\x18\x03 \x01(\x08\x12\x0e\n\x06parent\x18\x04 \x01(\t\x12+\n\nproperties\x18\x05 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x34\n\x07options\x18\x06 \x01(\x0b\x32#.pulumirpc.TransformResourceOptions\"v\n\x11TransformResponse\x12+\n\nproperties\x18\x01 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x34\n\x07options\x18\x02 \x01(\x0b\x32#.pulumirpc.TransformResourceOptions\"\x82\x01\n\x16TransformInvokeRequest\x12\r\n\x05token\x18\x01 \x01(\t\x12%\n\x04\x61rgs\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x32\n\x07options\x18\x03 \x01(\x0b\x32!.pulumirpc.TransformInvokeOptions\"t\n\x17TransformInvokeResponse\x12%\n\x04\x61rgs\x18\x01 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x32\n\x07options\x18\x02 \x01(\x0b\x32!.pulumirpc.TransformInvokeOptions\"\xe2\x01\n\x16TransformInvokeOptions\x12\x10\n\x08provider\x18\x01 \x01(\t\x12\x1b\n\x13plugin_download_url\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12P\n\x10plugin_checksums\x18\x04 \x03(\x0b\x32\x36.pulumirpc.TransformInvokeOptions.PluginChecksumsEntry\x1a\x36\n\x14PluginChecksumsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"\x80\x02\n\x13ResourceHookRequest\x12\x0b\n\x03urn\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0c\n\x04type\x18\x04 \x01(\t\x12+\n\nnew_inputs\x18\x05 \x01(\x0b\x32\x17.google.protobuf.Struct\x12+\n\nold_inputs\x18\x06 \x01(\x0b\x32\x17.google.protobuf.Struct\x12,\n\x0bnew_outputs\x18\x07 \x01(\x0b\x32\x17.google.protobuf.Struct\x12,\n\x0bold_outputs\x18\x08 \x01(\x0b\x32\x17.google.protobuf.Struct\"%\n\x14ResourceHookResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\"\xf9\x01\n\x10\x45rrorHookRequest\x12\x0b\n\x03urn\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0c\n\x04type\x18\x04 \x01(\t\x12+\n\nnew_inputs\x18\x05 \x01(\x0b\x32\x17.google.protobuf.Struct\x12+\n\nold_inputs\x18\x06 \x01(\x0b\x32\x17.google.protobuf.Struct\x12,\n\x0bold_outputs\x18\x07 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x18\n\x10\x66\x61iled_operation\x18\x08 \x01(\t\x12\x0e\n\x06\x65rrors\x18\t \x03(\t\"1\n\x11\x45rrorHookResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\r\n\x05retry\x18\x02 \x01(\x08\"\xfb\x01\n\x16RegisterPackageRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x14\n\x0c\x64ownload_url\x18\x03 \x01(\t\x12\x43\n\tchecksums\x18\x04 \x03(\x0b\x32\x30.pulumirpc.RegisterPackageRequest.ChecksumsEntry\x12\x35\n\x10parameterization\x18\x05 \x01(\x0b\x32\x1b.pulumirpc.Parameterization\x1a\x30\n\x0e\x43hecksumsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"&\n\x17RegisterPackageResponse\x12\x0b\n\x03ref\x18\x01 \x01(\t\"@\n\x10Parameterization\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\x0c\"f\n\x1bRegisterResourceHookRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x08\x63\x61llback\x18\x02 \x01(\x0b\x32\x13.pulumirpc.Callback\x12\x12\n\non_dry_run\x18\x03 \x01(\x08\"O\n\x18RegisterErrorHookRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x08\x63\x61llback\x18\x02 \x01(\x0b\x32\x13.pulumirpc.Callback*)\n\x06Result\x12\x0b\n\x07SUCCESS\x10\x00\x12\x08\n\x04\x46\x41IL\x10\x01\x12\x08\n\x04SKIP\x10\x02\x32\xfb\x07\n\x0fResourceMonitor\x12Z\n\x0fSupportsFeature\x12!.pulumirpc.SupportsFeatureRequest\x1a\".pulumirpc.SupportsFeatureResponse\"\x00\x12G\n\x06Invoke\x12 .pulumirpc.ResourceInvokeRequest\x1a\x19.pulumirpc.InvokeResponse\"\x00\x12\x41\n\x04\x43\x61ll\x12\x1e.pulumirpc.ResourceCallRequest\x1a\x17.pulumirpc.CallResponse\"\x00\x12Q\n\x0cReadResource\x12\x1e.pulumirpc.ReadResourceRequest\x1a\x1f.pulumirpc.ReadResourceResponse\"\x00\x12]\n\x10RegisterResource\x12\".pulumirpc.RegisterResourceRequest\x1a#.pulumirpc.RegisterResourceResponse\"\x00\x12^\n\x17RegisterResourceOutputs\x12).pulumirpc.RegisterResourceOutputsRequest\x1a\x16.google.protobuf.Empty\"\x00\x12G\n\x16RegisterStackTransform\x12\x13.pulumirpc.Callback\x1a\x16.google.protobuf.Empty\"\x00\x12M\n\x1cRegisterStackInvokeTransform\x12\x13.pulumirpc.Callback\x1a\x16.google.protobuf.Empty\"\x00\x12X\n\x14RegisterResourceHook\x12&.pulumirpc.RegisterResourceHookRequest\x1a\x16.google.protobuf.Empty\"\x00\x12R\n\x11RegisterErrorHook\x12#.pulumirpc.RegisterErrorHookRequest\x1a\x16.google.protobuf.Empty\"\x00\x12Z\n\x0fRegisterPackage\x12!.pulumirpc.RegisterPackageRequest\x1a\".pulumirpc.RegisterPackageResponse\"\x00\x12L\n\x18SignalAndWaitForShutdown\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"\x00\x42\x34Z2github.com/pulumi/pulumi/sdk/v3/proto/go;pulumirpcb\x06proto3"
16
+
17
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
18
+ pool.add_serialized_file(descriptor_data)
19
+
20
+ module Pulumirpc
21
+ SupportsFeatureRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.SupportsFeatureRequest").msgclass
22
+ SupportsFeatureResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.SupportsFeatureResponse").msgclass
23
+ ReadResourceRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.ReadResourceRequest").msgclass
24
+ ReadResourceResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.ReadResourceResponse").msgclass
25
+ RegisterResourceRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.RegisterResourceRequest").msgclass
26
+ RegisterResourceRequest::PropertyDependencies = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.RegisterResourceRequest.PropertyDependencies").msgclass
27
+ RegisterResourceRequest::CustomTimeouts = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.RegisterResourceRequest.CustomTimeouts").msgclass
28
+ RegisterResourceRequest::ResourceHooksBinding = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.RegisterResourceRequest.ResourceHooksBinding").msgclass
29
+ RegisterResourceResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.RegisterResourceResponse").msgclass
30
+ RegisterResourceResponse::PropertyDependencies = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.RegisterResourceResponse.PropertyDependencies").msgclass
31
+ RegisterResourceOutputsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.RegisterResourceOutputsRequest").msgclass
32
+ ResourceInvokeRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.ResourceInvokeRequest").msgclass
33
+ ResourceCallRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.ResourceCallRequest").msgclass
34
+ ResourceCallRequest::ArgumentDependencies = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.ResourceCallRequest.ArgumentDependencies").msgclass
35
+ TransformResourceOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.TransformResourceOptions").msgclass
36
+ TransformRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.TransformRequest").msgclass
37
+ TransformResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.TransformResponse").msgclass
38
+ TransformInvokeRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.TransformInvokeRequest").msgclass
39
+ TransformInvokeResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.TransformInvokeResponse").msgclass
40
+ TransformInvokeOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.TransformInvokeOptions").msgclass
41
+ ResourceHookRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.ResourceHookRequest").msgclass
42
+ ResourceHookResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.ResourceHookResponse").msgclass
43
+ ErrorHookRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.ErrorHookRequest").msgclass
44
+ ErrorHookResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.ErrorHookResponse").msgclass
45
+ RegisterPackageRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.RegisterPackageRequest").msgclass
46
+ RegisterPackageResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.RegisterPackageResponse").msgclass
47
+ Parameterization = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.Parameterization").msgclass
48
+ RegisterResourceHookRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.RegisterResourceHookRequest").msgclass
49
+ RegisterErrorHookRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.RegisterErrorHookRequest").msgclass
50
+ Result = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.Result").enummodule
51
+ end
@@ -0,0 +1,64 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # Source: pulumi/resource.proto for package 'pulumirpc'
3
+ # Original file comments:
4
+ # Copyright 2016-2022, Pulumi Corporation.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'grpc'
20
+ require 'pulumi/resource_pb'
21
+
22
+ module Pulumirpc
23
+ module ResourceMonitor
24
+ # ResourceMonitor is the interface a source uses to talk back to the planning monitor orchestrating the execution.
25
+ class Service
26
+
27
+ include ::GRPC::GenericService
28
+
29
+ self.marshal_class_method = :encode
30
+ self.unmarshal_class_method = :decode
31
+ self.service_name = 'pulumirpc.ResourceMonitor'
32
+
33
+ rpc :SupportsFeature, ::Pulumirpc::SupportsFeatureRequest, ::Pulumirpc::SupportsFeatureResponse
34
+ rpc :Invoke, ::Pulumirpc::ResourceInvokeRequest, ::Pulumirpc::InvokeResponse
35
+ rpc :Call, ::Pulumirpc::ResourceCallRequest, ::Pulumirpc::CallResponse
36
+ rpc :ReadResource, ::Pulumirpc::ReadResourceRequest, ::Pulumirpc::ReadResourceResponse
37
+ rpc :RegisterResource, ::Pulumirpc::RegisterResourceRequest, ::Pulumirpc::RegisterResourceResponse
38
+ rpc :RegisterResourceOutputs, ::Pulumirpc::RegisterResourceOutputsRequest, ::Google::Protobuf::Empty
39
+ # Register a resource transform for the stack
40
+ rpc :RegisterStackTransform, ::Pulumirpc::Callback, ::Google::Protobuf::Empty
41
+ # Register an invoke transform for the stack
42
+ rpc :RegisterStackInvokeTransform, ::Pulumirpc::Callback, ::Google::Protobuf::Empty
43
+ # Register a resource hook that can be called by the engine during certain
44
+ # steps of a resource's lifecycle.
45
+ rpc :RegisterResourceHook, ::Pulumirpc::RegisterResourceHookRequest, ::Google::Protobuf::Empty
46
+ # Register an error hook that can be called by the engine when an operation fails and is retryable.
47
+ #
48
+ # Error hooks are a separate type of hook to other life cycle hooks as they have different inputs and outputs.
49
+ rpc :RegisterErrorHook, ::Pulumirpc::RegisterErrorHookRequest, ::Google::Protobuf::Empty
50
+ # Registers a package and allocates a packageRef. The same package can be registered multiple times in Pulumi.
51
+ # Multiple requests are idempotent and guaranteed to return the same result.
52
+ rpc :RegisterPackage, ::Pulumirpc::RegisterPackageRequest, ::Pulumirpc::RegisterPackageResponse
53
+ # SignalAndWaitForShutdown lets the resource monitor know that no more
54
+ # events will be generated. This call blocks until the resource monitor is
55
+ # finished, which will happen once all the steps have executed. This allows
56
+ # the language runtime to stay running and handle callback requests, even
57
+ # after the user program has completed. Runtime SDKs should call this after
58
+ # executing the user's program. This can only be called once.
59
+ rpc :SignalAndWaitForShutdown, ::Google::Protobuf::Empty, ::Google::Protobuf::Empty
60
+ end
61
+
62
+ Stub = Service.rpc_stub_class
63
+ end
64
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: pulumi/resource_status.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+ require 'google/protobuf/struct_pb'
8
+ require 'pulumi/provider_pb'
9
+
10
+
11
+ descriptor_data = "\n\x1cpulumi/resource_status.proto\x12\tpulumirpc\x1a\x1cgoogle/protobuf/struct.proto\x1a\x15pulumi/provider.proto\"L\n\x17PublishViewStepsRequest\x12\r\n\x05token\x18\x01 \x01(\t\x12\"\n\x05steps\x18\x02 \x03(\x0b\x32\x13.pulumirpc.ViewStep\"\x1a\n\x18PublishViewStepsResponse\"\xe0\x05\n\x08ViewStep\x12*\n\x06status\x18\x01 \x01(\x0e\x32\x1a.pulumirpc.ViewStep.Status\x12\r\n\x05\x65rror\x18\x02 \x01(\t\x12\"\n\x02op\x18\x03 \x01(\x0e\x32\x16.pulumirpc.ViewStep.Op\x12\x0c\n\x04type\x18\x04 \x01(\t\x12\x0c\n\x04name\x18\x05 \x01(\t\x12%\n\x03old\x18\x06 \x01(\x0b\x32\x18.pulumirpc.ViewStepState\x12%\n\x03new\x18\x07 \x01(\x0b\x32\x18.pulumirpc.ViewStepState\x12\x0c\n\x04keys\x18\x08 \x03(\t\x12\r\n\x05\x64iffs\x18\t \x03(\t\x12<\n\rdetailed_diff\x18\n \x03(\x0b\x32%.pulumirpc.ViewStep.DetailedDiffEntry\x12\x19\n\x11has_detailed_diff\x18\x0b \x01(\x08\x1aL\n\x11\x44\x65tailedDiffEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.pulumirpc.PropertyDiff:\x02\x38\x01\"\x92\x02\n\x02Op\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x08\n\x04SAME\x10\x01\x12\n\n\x06\x43REATE\x10\x02\x12\n\n\x06UPDATE\x10\x03\x12\n\n\x06\x44\x45LETE\x10\x04\x12\x0b\n\x07REPLACE\x10\x05\x12\x16\n\x12\x43REATE_REPLACEMENT\x10\x06\x12\x13\n\x0f\x44\x45LETE_REPLACED\x10\x07\x12\x08\n\x04READ\x10\x08\x12\x14\n\x10READ_REPLACEMENT\x10\t\x12\x0b\n\x07REFRESH\x10\n\x12\x10\n\x0cREAD_DISCARD\x10\x0b\x12\x14\n\x10\x44ISCARD_REPLACED\x10\x0c\x12\x1a\n\x16REMOVE_PENDING_REPLACE\x10\r\x12\n\n\x06IMPORT\x10\x0e\x12\x16\n\x12IMPORT_REPLACEMENT\x10\x0f\"2\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x13\n\x0fPARTIAL_FAILURE\x10\x01\x12\x0b\n\x07UNKNOWN\x10\x02\"\xa8\x01\n\rViewStepState\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0bparent_type\x18\x03 \x01(\t\x12\x13\n\x0bparent_name\x18\x04 \x01(\t\x12\'\n\x06inputs\x18\x05 \x01(\x0b\x32\x17.google.protobuf.Struct\x12(\n\x07outputs\x18\x06 \x01(\x0b\x32\x17.google.protobuf.Struct2o\n\x0eResourceStatus\x12]\n\x10PublishViewSteps\x12\".pulumirpc.PublishViewStepsRequest\x1a#.pulumirpc.PublishViewStepsResponse\"\x00\x42\x34Z2github.com/pulumi/pulumi/sdk/v3/proto/go;pulumirpcb\x06proto3"
12
+
13
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
14
+ pool.add_serialized_file(descriptor_data)
15
+
16
+ module Pulumirpc
17
+ PublishViewStepsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.PublishViewStepsRequest").msgclass
18
+ PublishViewStepsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.PublishViewStepsResponse").msgclass
19
+ ViewStep = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.ViewStep").msgclass
20
+ ViewStep::Op = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.ViewStep.Op").enummodule
21
+ ViewStep::Status = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.ViewStep.Status").enummodule
22
+ ViewStepState = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.ViewStepState").msgclass
23
+ end
@@ -0,0 +1,44 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # Source: pulumi/resource_status.proto for package 'pulumirpc'
3
+ # Original file comments:
4
+ # Copyright 2025, Pulumi Corporation.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'grpc'
20
+ require 'pulumi/resource_status_pb'
21
+
22
+ module Pulumirpc
23
+ module ResourceStatus
24
+ # ResourceStatus is an interface that can be called from a resource provider to update status about a resource.
25
+ class Service
26
+
27
+ include ::GRPC::GenericService
28
+
29
+ self.marshal_class_method = :encode
30
+ self.unmarshal_class_method = :decode
31
+ self.service_name = 'pulumirpc.ResourceStatus'
32
+
33
+ # `PublishViewSteps` is used to publish a series of steps for a view resource.
34
+ # Views can be materialized via create and update steps, and more complex
35
+ # changes, such as replacements, can be modeled as a series of steps.
36
+ # The engine does not actually apply these steps, but rather flows them through
37
+ # the engine such that the view resources are written to state and the view
38
+ # resources are displayed in the UI.
39
+ rpc :PublishViewSteps, ::Pulumirpc::PublishViewStepsRequest, ::Pulumirpc::PublishViewStepsResponse
40
+ end
41
+
42
+ Stub = Service.rpc_stub_class
43
+ end
44
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: pulumi/source.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+
8
+ descriptor_data = "\n\x13pulumi/source.proto\x12\tpulumirpc\";\n\x0eSourcePosition\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x0c\n\x04line\x18\x02 \x01(\x05\x12\x0e\n\x06\x63olumn\x18\x03 \x01(\x05\"3\n\nStackFrame\x12%\n\x02pc\x18\x01 \x01(\x0b\x32\x19.pulumirpc.SourcePosition\"3\n\nStackTrace\x12%\n\x06\x66rames\x18\x01 \x03(\x0b\x32\x15.pulumirpc.StackFrameB4Z2github.com/pulumi/pulumi/sdk/v3/proto/go;pulumirpcb\x06proto3"
9
+
10
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
11
+ pool.add_serialized_file(descriptor_data)
12
+
13
+ module Pulumirpc
14
+ SourcePosition = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.SourcePosition").msgclass
15
+ StackFrame = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.StackFrame").msgclass
16
+ StackTrace = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.StackTrace").msgclass
17
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: pulumi/testing/language.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+
8
+ descriptor_data = "\n\x1dpulumi/testing/language.proto\x12\x11pulumirpc.testing\"\x19\n\x17GetLanguageTestsRequest\")\n\x18GetLanguageTestsResponse\x12\r\n\x05tests\x18\x01 \x03(\t\"\xbf\x05\n\x1bPrepareLanguageTestsRequest\x12\x1c\n\x14language_plugin_name\x18\x01 \x01(\t\x12\x1e\n\x16language_plugin_target\x18\x02 \x01(\t\x12\x1a\n\x12snapshot_directory\x18\x03 \x01(\t\x12\x1b\n\x13temporary_directory\x18\x04 \x01(\t\x12\x1a\n\x12\x63ore_sdk_directory\x18\x05 \x01(\t\x12\x18\n\x10\x63ore_sdk_version\x18\x06 \x01(\t\x12R\n\x0esnapshot_edits\x18\x07 \x03(\x0b\x32:.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement\x12\x15\n\rlanguage_info\x18\x08 \x01(\t\x12_\n\x11program_overrides\x18\t \x03(\x0b\x32\x44.pulumirpc.testing.PrepareLanguageTestsRequest.ProgramOverridesEntry\x12\x1d\n\x15policy_pack_directory\x18\n \x01(\t\x12\r\n\x05local\x18\x0b \x01(\x08\x12\x1b\n\x13providers_directory\x18\x0c \x01(\t\x1a\x41\n\x0bReplacement\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0f\n\x07pattern\x18\x02 \x01(\t\x12\x13\n\x0breplacement\x18\x03 \x01(\t\x1a \n\x0fProgramOverride\x12\r\n\x05paths\x18\x01 \x03(\t\x1aw\n\x15ProgramOverridesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12M\n\x05value\x18\x02 \x01(\x0b\x32>.pulumirpc.testing.PrepareLanguageTestsRequest.ProgramOverride:\x02\x38\x01\"-\n\x1cPrepareLanguageTestsResponse\x12\r\n\x05token\x18\x01 \x01(\t\"5\n\x16RunLanguageTestRequest\x12\r\n\x05token\x18\x01 \x01(\t\x12\x0c\n\x04test\x18\x02 \x01(\t\"\\\n\x17RunLanguageTestResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x10\n\x08messages\x18\x02 \x03(\t\x12\x0e\n\x06stdout\x18\x03 \x01(\t\x12\x0e\n\x06stderr\x18\x04 \x01(\t2\xe4\x02\n\x0cLanguageTest\x12m\n\x10GetLanguageTests\x12*.pulumirpc.testing.GetLanguageTestsRequest\x1a+.pulumirpc.testing.GetLanguageTestsResponse\"\x00\x12y\n\x14PrepareLanguageTests\x12..pulumirpc.testing.PrepareLanguageTestsRequest\x1a/.pulumirpc.testing.PrepareLanguageTestsResponse\"\x00\x12j\n\x0fRunLanguageTest\x12).pulumirpc.testing.RunLanguageTestRequest\x1a*.pulumirpc.testing.RunLanguageTestResponse\"\x00\x42\x32Z0github.com/pulumi/pulumi/sdk/v3/proto/go/testingb\x06proto3"
9
+
10
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
11
+ pool.add_serialized_file(descriptor_data)
12
+
13
+ module Pulumirpc
14
+ module Testing
15
+ GetLanguageTestsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.testing.GetLanguageTestsRequest").msgclass
16
+ GetLanguageTestsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.testing.GetLanguageTestsResponse").msgclass
17
+ PrepareLanguageTestsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.testing.PrepareLanguageTestsRequest").msgclass
18
+ PrepareLanguageTestsRequest::Replacement = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.testing.PrepareLanguageTestsRequest.Replacement").msgclass
19
+ PrepareLanguageTestsRequest::ProgramOverride = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.testing.PrepareLanguageTestsRequest.ProgramOverride").msgclass
20
+ PrepareLanguageTestsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.testing.PrepareLanguageTestsResponse").msgclass
21
+ RunLanguageTestRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.testing.RunLanguageTestRequest").msgclass
22
+ RunLanguageTestResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pulumirpc.testing.RunLanguageTestResponse").msgclass
23
+ end
24
+ end
@@ -0,0 +1,47 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # Source: pulumi/testing/language.proto for package 'pulumirpc.testing'
3
+ # Original file comments:
4
+ # Copyright 2016-2023, Pulumi Corporation.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'grpc'
20
+ require 'pulumi/testing/language_pb'
21
+
22
+ module Pulumirpc
23
+ module Testing
24
+ module LanguageTest
25
+ # LanguageTest is the interface to the pulumi language test framework. This is _highly_ experimental and
26
+ # currently subject to breaking changes without warning.
27
+ class Service
28
+
29
+ include ::GRPC::GenericService
30
+
31
+ self.marshal_class_method = :encode
32
+ self.unmarshal_class_method = :decode
33
+ self.service_name = 'pulumirpc.testing.LanguageTest'
34
+
35
+ # GetLanguageTests returns a list of all the language tests.
36
+ rpc :GetLanguageTests, ::Pulumirpc::Testing::GetLanguageTestsRequest, ::Pulumirpc::Testing::GetLanguageTestsResponse
37
+ # PrepareLanguageTests prepares the engine to run language tests. It sets up a stable artifacts folder
38
+ # (which should be .gitignore'd) and fills it with the core SDK artifact.
39
+ rpc :PrepareLanguageTests, ::Pulumirpc::Testing::PrepareLanguageTestsRequest, ::Pulumirpc::Testing::PrepareLanguageTestsResponse
40
+ # RunLanguageTest runs a single test of the language plugin.
41
+ rpc :RunLanguageTest, ::Pulumirpc::Testing::RunLanguageTestRequest, ::Pulumirpc::Testing::RunLanguageTestResponse
42
+ end
43
+
44
+ Stub = Service.rpc_stub_class
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,46 @@
1
+ require 'grpc'
2
+ require_relative 'generated/pulumi/language_pb'
3
+ require_relative 'generated/pulumi/language_services_pb'
4
+
5
+ require_relative 'generated/pulumi/resource_pb'
6
+ require_relative 'generated/pulumi/resource_services_pb'
7
+
8
+ require_relative 'pulumi'
9
+
10
+ module RubyPulumi
11
+ class LanguageHost < Pulumirpc::LanguageRuntime::Service
12
+
13
+ def get_required_plugins(req, _call)
14
+ Pulumirpc::GetRequiredPluginsResponse.new
15
+ end
16
+
17
+ def get_plugin_info(_req, _call)
18
+ Pulumirpc::PluginInfo.new(
19
+ version: "0.0.1"
20
+ )
21
+ end
22
+
23
+ def run(req, _call)
24
+ begin
25
+ monitor = Pulumirpc::ResourceMonitor::Stub.new(
26
+ req.monitor_address,
27
+ :this_channel_is_insecure
28
+ )
29
+
30
+ ::Pulumi::Runtime.monitor = monitor
31
+
32
+ Dir.chdir(req.pwd) do
33
+ Dir.glob("*.rb").sort.each do |file|
34
+ load file
35
+ end
36
+ end
37
+
38
+ Pulumirpc::RunResponse.new(error: "")
39
+ rescue => e
40
+ Pulumirpc::RunResponse.new(
41
+ error: "#{e.class}: #{e.message}\n#{e.backtrace.join("\n")}"
42
+ )
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,2 @@
1
+ require_relative 'runtime'
2
+ require_relative 'resource'
@@ -0,0 +1,24 @@
1
+ require_relative 'runtime'
2
+
3
+ module Pulumi
4
+ class Resource
5
+ attr_reader :urn
6
+
7
+ def initialize(type, name, custom: false, parent: nil, props: {}, opts: {})
8
+ monitor = Runtime.monitor
9
+ raise 'Monitor not initialized' unless monitor
10
+
11
+ response = monitor.register_resource(
12
+ Pulumirpc::RegisterResourceRequest.new(
13
+ type: type,
14
+ name: name,
15
+ custom: custom,
16
+ parent: parent&.urn.to_s
17
+ )
18
+ )
19
+
20
+ @urn = response.urn
21
+ end
22
+ end
23
+ end
24
+
@@ -0,0 +1,7 @@
1
+ module Pulumi
2
+ module Runtime
3
+ class << self
4
+ attr_accessor :monitor
5
+ end
6
+ end
7
+ end