pulumi-cloudinit 1.3.0a1637244500__tar.gz → 1.4.0__tar.gz

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.

Potentially problematic release.


This version of pulumi-cloudinit might be problematic. Click here for more details.

Files changed (23) hide show
  1. pulumi_cloudinit-1.4.0/PKG-INFO +61 -0
  2. {pulumi_cloudinit-1.3.0a1637244500 → pulumi_cloudinit-1.4.0}/pulumi_cloudinit/_inputs.py +27 -11
  3. {pulumi_cloudinit-1.3.0a1637244500 → pulumi_cloudinit-1.4.0}/pulumi_cloudinit/_utilities.py +55 -0
  4. {pulumi_cloudinit-1.3.0a1637244500 → pulumi_cloudinit-1.4.0}/pulumi_cloudinit/config.py +114 -29
  5. pulumi_cloudinit-1.4.0/pulumi_cloudinit/get_config.py +183 -0
  6. {pulumi_cloudinit-1.3.0a1637244500 → pulumi_cloudinit-1.4.0}/pulumi_cloudinit/outputs.py +26 -10
  7. {pulumi_cloudinit-1.3.0a1637244500 → pulumi_cloudinit-1.4.0}/pulumi_cloudinit/provider.py +2 -4
  8. pulumi_cloudinit-1.4.0/pulumi_cloudinit/pulumi-plugin.json +4 -0
  9. pulumi_cloudinit-1.4.0/pulumi_cloudinit.egg-info/PKG-INFO +61 -0
  10. {pulumi_cloudinit-1.3.0a1637244500 → pulumi_cloudinit-1.4.0}/pulumi_cloudinit.egg-info/SOURCES.txt +2 -2
  11. pulumi_cloudinit-1.4.0/pyproject.toml +22 -0
  12. pulumi_cloudinit-1.3.0a1637244500/PKG-INFO +0 -58
  13. pulumi_cloudinit-1.3.0a1637244500/pulumi_cloudinit/get_config.py +0 -205
  14. pulumi_cloudinit-1.3.0a1637244500/pulumi_cloudinit.egg-info/PKG-INFO +0 -58
  15. pulumi_cloudinit-1.3.0a1637244500/pulumi_cloudinit.egg-info/not-zip-safe +0 -1
  16. pulumi_cloudinit-1.3.0a1637244500/setup.py +0 -65
  17. {pulumi_cloudinit-1.3.0a1637244500 → pulumi_cloudinit-1.4.0}/README.md +0 -0
  18. {pulumi_cloudinit-1.3.0a1637244500 → pulumi_cloudinit-1.4.0}/pulumi_cloudinit/__init__.py +0 -0
  19. {pulumi_cloudinit-1.3.0a1637244500 → pulumi_cloudinit-1.4.0}/pulumi_cloudinit/py.typed +0 -0
  20. {pulumi_cloudinit-1.3.0a1637244500 → pulumi_cloudinit-1.4.0}/pulumi_cloudinit.egg-info/dependency_links.txt +0 -0
  21. {pulumi_cloudinit-1.3.0a1637244500 → pulumi_cloudinit-1.4.0}/pulumi_cloudinit.egg-info/requires.txt +0 -0
  22. {pulumi_cloudinit-1.3.0a1637244500 → pulumi_cloudinit-1.4.0}/pulumi_cloudinit.egg-info/top_level.txt +0 -0
  23. {pulumi_cloudinit-1.3.0a1637244500 → pulumi_cloudinit-1.4.0}/setup.cfg +0 -0
@@ -0,0 +1,61 @@
1
+ Metadata-Version: 2.1
2
+ Name: pulumi_cloudinit
3
+ Version: 1.4.0
4
+ Summary: A Pulumi package for creating and managing cloudinit cloud resources.
5
+ License: Apache-2.0
6
+ Project-URL: Homepage, https://pulumi.io
7
+ Project-URL: Repository, https://github.com/pulumi/pulumi-cloudinit
8
+ Keywords: pulumi,cloudinit
9
+ Requires-Python: >=3.7
10
+ Description-Content-Type: text/markdown
11
+ Requires-Dist: parver>=0.2.1
12
+ Requires-Dist: pulumi<4.0.0,>=3.0.0
13
+ Requires-Dist: semver>=2.8.1
14
+
15
+ [![Actions Status](https://github.com/pulumi/pulumi-cloudinit/workflows/master/badge.svg)](https://github.com/pulumi/pulumi-cloudinit/actions)
16
+ [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
17
+ [![NPM version](https://badge.fury.io/js/%40pulumi%2Fcloudinit.svg)](https://npmjs.com/package/@pulumi/cloudinit)
18
+ [![NuGet version](https://badge.fury.io/nu/pulumi.cloudinit.svg)](https://badge.fury.io/nu/pulumi.cloudinit)
19
+ [![Python version](https://badge.fury.io/py/pulumi-cloudinit.svg)](https://pypi.org/project/pulumi-cloudinit)
20
+ [![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-cloudinit/sdk/go)](https://pkg.go.dev/github.com/pulumi/pulumi-cloudinit/sdk/go)
21
+ [![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-cloudinit/blob/master/LICENSE)
22
+
23
+ # CloudInit Provider
24
+
25
+ Provider for rendering [cloud-init](https://cloudinit.readthedocs.io/) configurations.
26
+
27
+ ## Installing
28
+
29
+ This package is available in many languages in the standard packaging formats.
30
+
31
+ ### Node.js (Java/TypeScript)
32
+
33
+ To use from JavaScript or TypeScript in Node.js, install using either `npm`:
34
+
35
+ $ npm install @pulumi/cloudinit
36
+
37
+ or `yarn`:
38
+
39
+ $ yarn add @pulumi/cloudinit
40
+
41
+ ### Python 3
42
+
43
+ To use from Python, install using `pip`:
44
+
45
+ $ pip install pulumi_cloudinit
46
+
47
+ ### Go
48
+
49
+ To use from Go, use `go get` to grab the latest version of the library
50
+
51
+ $ go get github.com/pulumi/pulumi-cloudinit/sdk
52
+
53
+ ### .NET
54
+
55
+ To use from .NET, install using `dotnet add package`:
56
+
57
+ $ dotnet add package Pulumi.CloudInit
58
+
59
+ ## Reference
60
+
61
+ For further information, please visit [the CloudInit provider docs](https://www.pulumi.com/docs/intro/cloud-providers/cloudinit) or for detailed reference documentation, please visit [the API docs](https://www.pulumi.com/docs/reference/pkg/cloudinit).
@@ -2,6 +2,7 @@
2
2
  # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
3
  # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
4
 
5
+ import copy
5
6
  import warnings
6
7
  import pulumi
7
8
  import pulumi.runtime
@@ -20,6 +21,12 @@ class ConfigPartArgs:
20
21
  content_type: Optional[pulumi.Input[str]] = None,
21
22
  filename: Optional[pulumi.Input[str]] = None,
22
23
  merge_type: Optional[pulumi.Input[str]] = None):
24
+ """
25
+ :param pulumi.Input[str] content: Body content for the part.
26
+ :param pulumi.Input[str] content_type: A MIME-style content type to report in the header for the part. Defaults to `text/plain`
27
+ :param pulumi.Input[str] filename: A filename to report in the header for the part.
28
+ :param pulumi.Input[str] merge_type: A value for the `X-Merge-Type` header of the part, to control [cloud-init merging behavior](https://cloudinit.readthedocs.io/en/latest/reference/merging.html).
29
+ """
23
30
  pulumi.set(__self__, "content", content)
24
31
  if content_type is not None:
25
32
  pulumi.set(__self__, "content_type", content_type)
@@ -31,6 +38,9 @@ class ConfigPartArgs:
31
38
  @property
32
39
  @pulumi.getter
33
40
  def content(self) -> pulumi.Input[str]:
41
+ """
42
+ Body content for the part.
43
+ """
34
44
  return pulumi.get(self, "content")
35
45
 
36
46
  @content.setter
@@ -40,6 +50,9 @@ class ConfigPartArgs:
40
50
  @property
41
51
  @pulumi.getter(name="contentType")
42
52
  def content_type(self) -> Optional[pulumi.Input[str]]:
53
+ """
54
+ A MIME-style content type to report in the header for the part. Defaults to `text/plain`
55
+ """
43
56
  return pulumi.get(self, "content_type")
44
57
 
45
58
  @content_type.setter
@@ -49,6 +62,9 @@ class ConfigPartArgs:
49
62
  @property
50
63
  @pulumi.getter
51
64
  def filename(self) -> Optional[pulumi.Input[str]]:
65
+ """
66
+ A filename to report in the header for the part.
67
+ """
52
68
  return pulumi.get(self, "filename")
53
69
 
54
70
  @filename.setter
@@ -58,6 +74,9 @@ class ConfigPartArgs:
58
74
  @property
59
75
  @pulumi.getter(name="mergeType")
60
76
  def merge_type(self) -> Optional[pulumi.Input[str]]:
77
+ """
78
+ A value for the `X-Merge-Type` header of the part, to control [cloud-init merging behavior](https://cloudinit.readthedocs.io/en/latest/reference/merging.html).
79
+ """
61
80
  return pulumi.get(self, "merge_type")
62
81
 
63
82
  @merge_type.setter
@@ -69,19 +88,17 @@ class ConfigPartArgs:
69
88
  class GetConfigPartArgs:
70
89
  def __init__(__self__, *,
71
90
  content: str,
72
- content_type: Optional[str] = None,
91
+ content_type: str,
73
92
  filename: Optional[str] = None,
74
93
  merge_type: Optional[str] = None):
75
94
  """
76
95
  :param str content: Body content for the part.
77
- :param str content_type: A MIME-style content type to report in the header for the part.
96
+ :param str content_type: A MIME-style content type to report in the header for the part. Defaults to `text/plain`
78
97
  :param str filename: A filename to report in the header for the part.
79
- :param str merge_type: A value for the `X-Merge-Type` header of the part,
80
- to control [cloud-init merging behavior](https://cloudinit.readthedocs.io/en/latest/topics/merging.html).
98
+ :param str merge_type: A value for the `X-Merge-Type` header of the part, to control [cloud-init merging behavior](https://cloudinit.readthedocs.io/en/latest/reference/merging.html).
81
99
  """
82
100
  pulumi.set(__self__, "content", content)
83
- if content_type is not None:
84
- pulumi.set(__self__, "content_type", content_type)
101
+ pulumi.set(__self__, "content_type", content_type)
85
102
  if filename is not None:
86
103
  pulumi.set(__self__, "filename", filename)
87
104
  if merge_type is not None:
@@ -101,14 +118,14 @@ class GetConfigPartArgs:
101
118
 
102
119
  @property
103
120
  @pulumi.getter(name="contentType")
104
- def content_type(self) -> Optional[str]:
121
+ def content_type(self) -> str:
105
122
  """
106
- A MIME-style content type to report in the header for the part.
123
+ A MIME-style content type to report in the header for the part. Defaults to `text/plain`
107
124
  """
108
125
  return pulumi.get(self, "content_type")
109
126
 
110
127
  @content_type.setter
111
- def content_type(self, value: Optional[str]):
128
+ def content_type(self, value: str):
112
129
  pulumi.set(self, "content_type", value)
113
130
 
114
131
  @property
@@ -127,8 +144,7 @@ class GetConfigPartArgs:
127
144
  @pulumi.getter(name="mergeType")
128
145
  def merge_type(self) -> Optional[str]:
129
146
  """
130
- A value for the `X-Merge-Type` header of the part,
131
- to control [cloud-init merging behavior](https://cloudinit.readthedocs.io/en/latest/topics/merging.html).
147
+ A value for the `X-Merge-Type` header of the part, to control [cloud-init merging behavior](https://cloudinit.readthedocs.io/en/latest/reference/merging.html).
132
148
  """
133
149
  return pulumi.get(self, "merge_type")
134
150
 
@@ -3,6 +3,7 @@
3
3
  # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
4
 
5
5
 
6
+ import asyncio
6
7
  import importlib.util
7
8
  import inspect
8
9
  import json
@@ -13,6 +14,7 @@ import typing
13
14
 
14
15
  import pulumi
15
16
  import pulumi.runtime
17
+ from pulumi.runtime.sync_await import _sync_await
16
18
 
17
19
  from semver import VersionInfo as SemverVersion
18
20
  from parver import Version as PEP440Version
@@ -98,6 +100,17 @@ _version_str = str(_version)
98
100
  def get_version():
99
101
  return _version_str
100
102
 
103
+ def get_resource_opts_defaults() -> pulumi.ResourceOptions:
104
+ return pulumi.ResourceOptions(
105
+ version=get_version(),
106
+ plugin_download_url=get_plugin_download_url(),
107
+ )
108
+
109
+ def get_invoke_opts_defaults() -> pulumi.InvokeOptions:
110
+ return pulumi.InvokeOptions(
111
+ version=get_version(),
112
+ plugin_download_url=get_plugin_download_url(),
113
+ )
101
114
 
102
115
  def get_resource_args_opts(resource_args_type, resource_options_type, *args, **kwargs):
103
116
  """
@@ -234,3 +247,45 @@ def lift_output_func(func: typing.Any) -> typing.Callable[[_F], _F]:
234
247
  **resolved_args['kwargs']))
235
248
 
236
249
  return (lambda _: lifted_func)
250
+
251
+
252
+ def call_plain(
253
+ tok: str,
254
+ props: pulumi.Inputs,
255
+ res: typing.Optional[pulumi.Resource] = None,
256
+ typ: typing.Optional[type] = None,
257
+ ) -> typing.Any:
258
+ """
259
+ Wraps pulumi.runtime.plain to force the output and return it plainly.
260
+ """
261
+
262
+ output = pulumi.runtime.call(tok, props, res, typ)
263
+
264
+ # Ingoring deps silently. They are typically non-empty, r.f() calls include r as a dependency.
265
+ result, known, secret, _ = _sync_await(asyncio.ensure_future(_await_output(output)))
266
+
267
+ problem = None
268
+ if not known:
269
+ problem = ' an unknown value'
270
+ elif secret:
271
+ problem = ' a secret value'
272
+
273
+ if problem:
274
+ raise AssertionError(
275
+ f"Plain resource method '{tok}' incorrectly returned {problem}. "
276
+ + "This is an error in the provider, please report this to the provider developer."
277
+ )
278
+
279
+ return result
280
+
281
+
282
+ async def _await_output(o: pulumi.Output[typing.Any]) -> typing.Tuple[object, bool, bool, set]:
283
+ return (
284
+ await o._future,
285
+ await o._is_known,
286
+ await o._is_secret,
287
+ await o._resources,
288
+ )
289
+
290
+ def get_plugin_download_url():
291
+ return None
@@ -2,6 +2,7 @@
2
2
  # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
3
  # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
4
 
5
+ import copy
5
6
  import warnings
6
7
  import pulumi
7
8
  import pulumi.runtime
@@ -15,33 +16,32 @@ __all__ = ['ConfigArgs', 'Config']
15
16
  @pulumi.input_type
16
17
  class ConfigArgs:
17
18
  def __init__(__self__, *,
18
- parts: pulumi.Input[Sequence[pulumi.Input['ConfigPartArgs']]],
19
19
  base64_encode: Optional[pulumi.Input[bool]] = None,
20
20
  boundary: Optional[pulumi.Input[str]] = None,
21
- gzip: Optional[pulumi.Input[bool]] = None):
21
+ gzip: Optional[pulumi.Input[bool]] = None,
22
+ parts: Optional[pulumi.Input[Sequence[pulumi.Input['ConfigPartArgs']]]] = None):
22
23
  """
23
24
  The set of arguments for constructing a Config resource.
25
+ :param pulumi.Input[bool] base64_encode: Specify whether or not to base64 encode the `rendered` output. Defaults to `true`, and cannot be disabled if gzip is `true`.
26
+ :param pulumi.Input[str] boundary: Specify the Writer's default boundary separator. Defaults to `MIMEBOUNDARY`.
27
+ :param pulumi.Input[bool] gzip: Specify whether or not to gzip the `rendered` output. Defaults to `true`.
28
+ :param pulumi.Input[Sequence[pulumi.Input['ConfigPartArgs']]] parts: A nested block type which adds a file to the generated cloud-init configuration. Use multiple `part` blocks to specify multiple files, which will be included in order of declaration in the final MIME document.
24
29
  """
25
- pulumi.set(__self__, "parts", parts)
26
30
  if base64_encode is not None:
27
31
  pulumi.set(__self__, "base64_encode", base64_encode)
28
32
  if boundary is not None:
29
33
  pulumi.set(__self__, "boundary", boundary)
30
34
  if gzip is not None:
31
35
  pulumi.set(__self__, "gzip", gzip)
32
-
33
- @property
34
- @pulumi.getter
35
- def parts(self) -> pulumi.Input[Sequence[pulumi.Input['ConfigPartArgs']]]:
36
- return pulumi.get(self, "parts")
37
-
38
- @parts.setter
39
- def parts(self, value: pulumi.Input[Sequence[pulumi.Input['ConfigPartArgs']]]):
40
- pulumi.set(self, "parts", value)
36
+ if parts is not None:
37
+ pulumi.set(__self__, "parts", parts)
41
38
 
42
39
  @property
43
40
  @pulumi.getter(name="base64Encode")
44
41
  def base64_encode(self) -> Optional[pulumi.Input[bool]]:
42
+ """
43
+ Specify whether or not to base64 encode the `rendered` output. Defaults to `true`, and cannot be disabled if gzip is `true`.
44
+ """
45
45
  return pulumi.get(self, "base64_encode")
46
46
 
47
47
  @base64_encode.setter
@@ -51,6 +51,9 @@ class ConfigArgs:
51
51
  @property
52
52
  @pulumi.getter
53
53
  def boundary(self) -> Optional[pulumi.Input[str]]:
54
+ """
55
+ Specify the Writer's default boundary separator. Defaults to `MIMEBOUNDARY`.
56
+ """
54
57
  return pulumi.get(self, "boundary")
55
58
 
56
59
  @boundary.setter
@@ -60,12 +63,27 @@ class ConfigArgs:
60
63
  @property
61
64
  @pulumi.getter
62
65
  def gzip(self) -> Optional[pulumi.Input[bool]]:
66
+ """
67
+ Specify whether or not to gzip the `rendered` output. Defaults to `true`.
68
+ """
63
69
  return pulumi.get(self, "gzip")
64
70
 
65
71
  @gzip.setter
66
72
  def gzip(self, value: Optional[pulumi.Input[bool]]):
67
73
  pulumi.set(self, "gzip", value)
68
74
 
75
+ @property
76
+ @pulumi.getter
77
+ def parts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ConfigPartArgs']]]]:
78
+ """
79
+ A nested block type which adds a file to the generated cloud-init configuration. Use multiple `part` blocks to specify multiple files, which will be included in order of declaration in the final MIME document.
80
+ """
81
+ return pulumi.get(self, "parts")
82
+
83
+ @parts.setter
84
+ def parts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ConfigPartArgs']]]]):
85
+ pulumi.set(self, "parts", value)
86
+
69
87
 
70
88
  @pulumi.input_type
71
89
  class _ConfigState:
@@ -77,7 +95,11 @@ class _ConfigState:
77
95
  rendered: Optional[pulumi.Input[str]] = None):
78
96
  """
79
97
  Input properties used for looking up and filtering Config resources.
80
- :param pulumi.Input[str] rendered: rendered cloudinit configuration
98
+ :param pulumi.Input[bool] base64_encode: Specify whether or not to base64 encode the `rendered` output. Defaults to `true`, and cannot be disabled if gzip is `true`.
99
+ :param pulumi.Input[str] boundary: Specify the Writer's default boundary separator. Defaults to `MIMEBOUNDARY`.
100
+ :param pulumi.Input[bool] gzip: Specify whether or not to gzip the `rendered` output. Defaults to `true`.
101
+ :param pulumi.Input[Sequence[pulumi.Input['ConfigPartArgs']]] parts: A nested block type which adds a file to the generated cloud-init configuration. Use multiple `part` blocks to specify multiple files, which will be included in order of declaration in the final MIME document.
102
+ :param pulumi.Input[str] rendered: The final rendered multi-part cloud-init config.
81
103
  """
82
104
  if base64_encode is not None:
83
105
  pulumi.set(__self__, "base64_encode", base64_encode)
@@ -93,6 +115,9 @@ class _ConfigState:
93
115
  @property
94
116
  @pulumi.getter(name="base64Encode")
95
117
  def base64_encode(self) -> Optional[pulumi.Input[bool]]:
118
+ """
119
+ Specify whether or not to base64 encode the `rendered` output. Defaults to `true`, and cannot be disabled if gzip is `true`.
120
+ """
96
121
  return pulumi.get(self, "base64_encode")
97
122
 
98
123
  @base64_encode.setter
@@ -102,6 +127,9 @@ class _ConfigState:
102
127
  @property
103
128
  @pulumi.getter
104
129
  def boundary(self) -> Optional[pulumi.Input[str]]:
130
+ """
131
+ Specify the Writer's default boundary separator. Defaults to `MIMEBOUNDARY`.
132
+ """
105
133
  return pulumi.get(self, "boundary")
106
134
 
107
135
  @boundary.setter
@@ -111,6 +139,9 @@ class _ConfigState:
111
139
  @property
112
140
  @pulumi.getter
113
141
  def gzip(self) -> Optional[pulumi.Input[bool]]:
142
+ """
143
+ Specify whether or not to gzip the `rendered` output. Defaults to `true`.
144
+ """
114
145
  return pulumi.get(self, "gzip")
115
146
 
116
147
  @gzip.setter
@@ -120,6 +151,9 @@ class _ConfigState:
120
151
  @property
121
152
  @pulumi.getter
122
153
  def parts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ConfigPartArgs']]]]:
154
+ """
155
+ A nested block type which adds a file to the generated cloud-init configuration. Use multiple `part` blocks to specify multiple files, which will be included in order of declaration in the final MIME document.
156
+ """
123
157
  return pulumi.get(self, "parts")
124
158
 
125
159
  @parts.setter
@@ -130,7 +164,7 @@ class _ConfigState:
130
164
  @pulumi.getter
131
165
  def rendered(self) -> Optional[pulumi.Input[str]]:
132
166
  """
133
- rendered cloudinit configuration
167
+ The final rendered multi-part cloud-init config.
134
168
  """
135
169
  return pulumi.get(self, "rendered")
136
170
 
@@ -150,18 +184,58 @@ class Config(pulumi.CustomResource):
150
184
  parts: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ConfigPartArgs']]]]] = None,
151
185
  __props__=None):
152
186
  """
153
- Create a Config resource with the given unique name, props, and options.
187
+ > **This resource is deprecated** Please use the Config
188
+ data source instead.
189
+
190
+ Renders a [multi-part MIME configuration](https://cloudinit.readthedocs.io/en/latest/explanation/format.html#mime-multi-part-archive) for use with [cloud-init](https://cloudinit.readthedocs.io/en/latest/).
191
+
192
+ Cloud-init is a commonly-used startup configuration utility for cloud compute instances. It accepts configuration via provider-specific user data mechanisms, such as `user_data` for Amazon EC2 instances. Multi-part MIME is one of the data formats it accepts. For more information, see [User-Data Formats](https://cloudinit.readthedocs.io/en/latest/explanation/format.html) in the cloud-init manual.
193
+
194
+ This is not a generalized utility for producing multi-part MIME messages. It's feature set is specialized for cloud-init multi-part MIME messages.
195
+
196
+ ## Example Usage
197
+
198
+ ### Config
199
+
200
+ ### hello-script.sh
201
+
202
+ ### cloud-config.yaml
203
+
204
+ <!-- This schema was originally generated with tfplugindocs, then modified manually to ensure `part` block list is noted as Required -->
205
+
154
206
  :param str resource_name: The name of the resource.
155
207
  :param pulumi.ResourceOptions opts: Options for the resource.
208
+ :param pulumi.Input[bool] base64_encode: Specify whether or not to base64 encode the `rendered` output. Defaults to `true`, and cannot be disabled if gzip is `true`.
209
+ :param pulumi.Input[str] boundary: Specify the Writer's default boundary separator. Defaults to `MIMEBOUNDARY`.
210
+ :param pulumi.Input[bool] gzip: Specify whether or not to gzip the `rendered` output. Defaults to `true`.
211
+ :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ConfigPartArgs']]]] parts: A nested block type which adds a file to the generated cloud-init configuration. Use multiple `part` blocks to specify multiple files, which will be included in order of declaration in the final MIME document.
156
212
  """
157
213
  ...
158
214
  @overload
159
215
  def __init__(__self__,
160
216
  resource_name: str,
161
- args: ConfigArgs,
217
+ args: Optional[ConfigArgs] = None,
162
218
  opts: Optional[pulumi.ResourceOptions] = None):
163
219
  """
164
- Create a Config resource with the given unique name, props, and options.
220
+ > **This resource is deprecated** Please use the Config
221
+ data source instead.
222
+
223
+ Renders a [multi-part MIME configuration](https://cloudinit.readthedocs.io/en/latest/explanation/format.html#mime-multi-part-archive) for use with [cloud-init](https://cloudinit.readthedocs.io/en/latest/).
224
+
225
+ Cloud-init is a commonly-used startup configuration utility for cloud compute instances. It accepts configuration via provider-specific user data mechanisms, such as `user_data` for Amazon EC2 instances. Multi-part MIME is one of the data formats it accepts. For more information, see [User-Data Formats](https://cloudinit.readthedocs.io/en/latest/explanation/format.html) in the cloud-init manual.
226
+
227
+ This is not a generalized utility for producing multi-part MIME messages. It's feature set is specialized for cloud-init multi-part MIME messages.
228
+
229
+ ## Example Usage
230
+
231
+ ### Config
232
+
233
+ ### hello-script.sh
234
+
235
+ ### cloud-config.yaml
236
+
237
+ <!-- This schema was originally generated with tfplugindocs, then modified manually to ensure `part` block list is noted as Required -->
238
+
165
239
  :param str resource_name: The name of the resource.
166
240
  :param ConfigArgs args: The arguments to use to populate this resource's properties.
167
241
  :param pulumi.ResourceOptions opts: Options for the resource.
@@ -182,12 +256,9 @@ class Config(pulumi.CustomResource):
182
256
  gzip: Optional[pulumi.Input[bool]] = None,
183
257
  parts: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ConfigPartArgs']]]]] = None,
184
258
  __props__=None):
185
- if opts is None:
186
- opts = pulumi.ResourceOptions()
259
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
187
260
  if not isinstance(opts, pulumi.ResourceOptions):
188
261
  raise TypeError('Expected resource options to be a ResourceOptions instance')
189
- if opts.version is None:
190
- opts.version = _utilities.get_version()
191
262
  if opts.id is None:
192
263
  if __props__ is not None:
193
264
  raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
@@ -196,8 +267,6 @@ class Config(pulumi.CustomResource):
196
267
  __props__.__dict__["base64_encode"] = base64_encode
197
268
  __props__.__dict__["boundary"] = boundary
198
269
  __props__.__dict__["gzip"] = gzip
199
- if parts is None and not opts.urn:
200
- raise TypeError("Missing required property 'parts'")
201
270
  __props__.__dict__["parts"] = parts
202
271
  __props__.__dict__["rendered"] = None
203
272
  super(Config, __self__).__init__(
@@ -222,7 +291,11 @@ class Config(pulumi.CustomResource):
222
291
  :param str resource_name: The unique name of the resulting resource.
223
292
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
224
293
  :param pulumi.ResourceOptions opts: Options for the resource.
225
- :param pulumi.Input[str] rendered: rendered cloudinit configuration
294
+ :param pulumi.Input[bool] base64_encode: Specify whether or not to base64 encode the `rendered` output. Defaults to `true`, and cannot be disabled if gzip is `true`.
295
+ :param pulumi.Input[str] boundary: Specify the Writer's default boundary separator. Defaults to `MIMEBOUNDARY`.
296
+ :param pulumi.Input[bool] gzip: Specify whether or not to gzip the `rendered` output. Defaults to `true`.
297
+ :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ConfigPartArgs']]]] parts: A nested block type which adds a file to the generated cloud-init configuration. Use multiple `part` blocks to specify multiple files, which will be included in order of declaration in the final MIME document.
298
+ :param pulumi.Input[str] rendered: The final rendered multi-part cloud-init config.
226
299
  """
227
300
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
228
301
 
@@ -237,29 +310,41 @@ class Config(pulumi.CustomResource):
237
310
 
238
311
  @property
239
312
  @pulumi.getter(name="base64Encode")
240
- def base64_encode(self) -> pulumi.Output[Optional[bool]]:
313
+ def base64_encode(self) -> pulumi.Output[bool]:
314
+ """
315
+ Specify whether or not to base64 encode the `rendered` output. Defaults to `true`, and cannot be disabled if gzip is `true`.
316
+ """
241
317
  return pulumi.get(self, "base64_encode")
242
318
 
243
319
  @property
244
320
  @pulumi.getter
245
- def boundary(self) -> pulumi.Output[Optional[str]]:
321
+ def boundary(self) -> pulumi.Output[str]:
322
+ """
323
+ Specify the Writer's default boundary separator. Defaults to `MIMEBOUNDARY`.
324
+ """
246
325
  return pulumi.get(self, "boundary")
247
326
 
248
327
  @property
249
328
  @pulumi.getter
250
- def gzip(self) -> pulumi.Output[Optional[bool]]:
329
+ def gzip(self) -> pulumi.Output[bool]:
330
+ """
331
+ Specify whether or not to gzip the `rendered` output. Defaults to `true`.
332
+ """
251
333
  return pulumi.get(self, "gzip")
252
334
 
253
335
  @property
254
336
  @pulumi.getter
255
- def parts(self) -> pulumi.Output[Sequence['outputs.ConfigPart']]:
337
+ def parts(self) -> pulumi.Output[Optional[Sequence['outputs.ConfigPart']]]:
338
+ """
339
+ A nested block type which adds a file to the generated cloud-init configuration. Use multiple `part` blocks to specify multiple files, which will be included in order of declaration in the final MIME document.
340
+ """
256
341
  return pulumi.get(self, "parts")
257
342
 
258
343
  @property
259
344
  @pulumi.getter
260
345
  def rendered(self) -> pulumi.Output[str]:
261
346
  """
262
- rendered cloudinit configuration
347
+ The final rendered multi-part cloud-init config.
263
348
  """
264
349
  return pulumi.get(self, "rendered")
265
350