pulumi-kubernetes 4.17.0a1723228048__py3-none-any.whl → 4.17.0a1723576835__py3-none-any.whl

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-kubernetes might be problematic. Click here for more details.

Files changed (81) hide show
  1. pulumi_kubernetes/__init__.py +42 -2
  2. pulumi_kubernetes/admissionregistration/v1/ValidatingAdmissionPolicyBindingList.py +18 -17
  3. pulumi_kubernetes/admissionregistration/v1/ValidatingAdmissionPolicyList.py +18 -17
  4. pulumi_kubernetes/admissionregistration/v1alpha1/ValidatingAdmissionPolicyBindingList.py +18 -17
  5. pulumi_kubernetes/admissionregistration/v1alpha1/ValidatingAdmissionPolicyList.py +18 -17
  6. pulumi_kubernetes/admissionregistration/v1beta1/ValidatingAdmissionPolicyBindingList.py +18 -17
  7. pulumi_kubernetes/admissionregistration/v1beta1/ValidatingAdmissionPolicyList.py +18 -17
  8. pulumi_kubernetes/apiextensions/v1/_inputs.py +6 -6
  9. pulumi_kubernetes/apiextensions/v1/outputs.py +4 -4
  10. pulumi_kubernetes/apps/v1/_inputs.py +12 -12
  11. pulumi_kubernetes/apps/v1/outputs.py +8 -8
  12. pulumi_kubernetes/batch/v1/_inputs.py +15 -27
  13. pulumi_kubernetes/batch/v1/outputs.py +12 -20
  14. pulumi_kubernetes/coordination/__init__.py +3 -0
  15. pulumi_kubernetes/coordination/v1/_inputs.py +94 -14
  16. pulumi_kubernetes/coordination/v1/outputs.py +62 -10
  17. pulumi_kubernetes/coordination/v1alpha1/LeaseCandidate.py +214 -0
  18. pulumi_kubernetes/coordination/v1alpha1/LeaseCandidateList.py +215 -0
  19. pulumi_kubernetes/coordination/v1alpha1/LeaseCandidatePatch.py +226 -0
  20. pulumi_kubernetes/coordination/v1alpha1/__init__.py +12 -0
  21. pulumi_kubernetes/coordination/v1alpha1/_inputs.py +418 -0
  22. pulumi_kubernetes/coordination/v1alpha1/outputs.py +334 -0
  23. pulumi_kubernetes/core/v1/_inputs.py +955 -184
  24. pulumi_kubernetes/core/v1/outputs.py +1026 -135
  25. pulumi_kubernetes/networking/v1alpha1/IPAddress.py +2 -0
  26. pulumi_kubernetes/networking/v1alpha1/IPAddressPatch.py +2 -0
  27. pulumi_kubernetes/networking/v1alpha1/ServiceCIDR.py +2 -0
  28. pulumi_kubernetes/networking/v1alpha1/ServiceCIDRPatch.py +2 -0
  29. pulumi_kubernetes/networking/v1beta1/IPAddress.py +216 -0
  30. pulumi_kubernetes/networking/v1beta1/IPAddressList.py +215 -0
  31. pulumi_kubernetes/networking/v1beta1/IPAddressPatch.py +228 -0
  32. pulumi_kubernetes/networking/v1beta1/ServiceCIDR.py +226 -0
  33. pulumi_kubernetes/networking/v1beta1/ServiceCIDRList.py +215 -0
  34. pulumi_kubernetes/networking/v1beta1/ServiceCIDRPatch.py +238 -0
  35. pulumi_kubernetes/networking/v1beta1/__init__.py +6 -0
  36. pulumi_kubernetes/networking/v1beta1/_inputs.py +599 -0
  37. pulumi_kubernetes/networking/v1beta1/outputs.py +461 -0
  38. pulumi_kubernetes/pulumi-plugin.json +1 -1
  39. pulumi_kubernetes/resource/__init__.py +3 -0
  40. pulumi_kubernetes/resource/v1alpha1/ResourceClaim.py +1 -1
  41. pulumi_kubernetes/resource/v1alpha1/ResourceClaimPatch.py +1 -1
  42. pulumi_kubernetes/resource/v1alpha1/ResourceClaimTemplate.py +1 -1
  43. pulumi_kubernetes/resource/v1alpha1/ResourceClaimTemplatePatch.py +1 -1
  44. pulumi_kubernetes/resource/v1alpha2/PodSchedulingContext.py +2 -0
  45. pulumi_kubernetes/resource/v1alpha2/PodSchedulingContextPatch.py +2 -0
  46. pulumi_kubernetes/resource/v1alpha2/ResourceClaim.py +1 -1
  47. pulumi_kubernetes/resource/v1alpha2/ResourceClaimPatch.py +1 -1
  48. pulumi_kubernetes/resource/v1alpha2/ResourceClaimTemplate.py +1 -1
  49. pulumi_kubernetes/resource/v1alpha2/ResourceClaimTemplatePatch.py +1 -1
  50. pulumi_kubernetes/resource/v1alpha2/ResourceSlice.py +2 -0
  51. pulumi_kubernetes/resource/v1alpha2/ResourceSlicePatch.py +2 -0
  52. pulumi_kubernetes/resource/v1alpha3/DeviceClass.py +236 -0
  53. pulumi_kubernetes/resource/v1alpha3/DeviceClassList.py +216 -0
  54. pulumi_kubernetes/resource/v1alpha3/DeviceClassPatch.py +247 -0
  55. pulumi_kubernetes/resource/v1alpha3/PodSchedulingContext.py +231 -0
  56. pulumi_kubernetes/resource/v1alpha3/PodSchedulingContextList.py +215 -0
  57. pulumi_kubernetes/resource/v1alpha3/PodSchedulingContextPatch.py +242 -0
  58. pulumi_kubernetes/resource/v1alpha3/ResourceClaim.py +232 -0
  59. pulumi_kubernetes/resource/v1alpha3/ResourceClaimList.py +216 -0
  60. pulumi_kubernetes/resource/v1alpha3/ResourceClaimPatch.py +243 -0
  61. pulumi_kubernetes/resource/v1alpha3/ResourceClaimTemplate.py +229 -0
  62. pulumi_kubernetes/resource/v1alpha3/ResourceClaimTemplateList.py +215 -0
  63. pulumi_kubernetes/resource/v1alpha3/ResourceClaimTemplatePatch.py +240 -0
  64. pulumi_kubernetes/resource/v1alpha3/ResourceSlice.py +246 -0
  65. pulumi_kubernetes/resource/v1alpha3/ResourceSlicePatch.py +257 -0
  66. pulumi_kubernetes/resource/v1alpha3/__init__.py +23 -0
  67. pulumi_kubernetes/resource/v1alpha3/_inputs.py +3924 -0
  68. pulumi_kubernetes/resource/v1alpha3/outputs.py +3327 -0
  69. pulumi_kubernetes/storage/v1alpha1/VolumeAttributesClass.py +2 -0
  70. pulumi_kubernetes/storage/v1alpha1/VolumeAttributesClassPatch.py +2 -0
  71. pulumi_kubernetes/storage/v1beta1/VolumeAttributesClass.py +252 -0
  72. pulumi_kubernetes/storage/v1beta1/VolumeAttributesClassList.py +215 -0
  73. pulumi_kubernetes/storage/v1beta1/VolumeAttributesClassPatch.py +263 -0
  74. pulumi_kubernetes/storage/v1beta1/__init__.py +3 -0
  75. pulumi_kubernetes/storage/v1beta1/_inputs.py +123 -0
  76. pulumi_kubernetes/storage/v1beta1/outputs.py +94 -0
  77. pulumi_kubernetes/yaml/yaml.py +102 -0
  78. {pulumi_kubernetes-4.17.0a1723228048.dist-info → pulumi_kubernetes-4.17.0a1723576835.dist-info}/METADATA +1 -1
  79. {pulumi_kubernetes-4.17.0a1723228048.dist-info → pulumi_kubernetes-4.17.0a1723576835.dist-info}/RECORD +81 -49
  80. {pulumi_kubernetes-4.17.0a1723228048.dist-info → pulumi_kubernetes-4.17.0a1723576835.dist-info}/WHEEL +1 -1
  81. {pulumi_kubernetes-4.17.0a1723228048.dist-info → pulumi_kubernetes-4.17.0a1723576835.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,3327 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by pulumigen. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from ... import _utilities
16
+ from . import outputs
17
+ from ... import core as _core
18
+ from ... import meta as _meta
19
+
20
+ __all__ = [
21
+ 'AllocationResult',
22
+ 'AllocationResultPatch',
23
+ 'BasicDevice',
24
+ 'BasicDevicePatch',
25
+ 'CELDeviceSelector',
26
+ 'CELDeviceSelectorPatch',
27
+ 'Device',
28
+ 'DeviceAllocationConfiguration',
29
+ 'DeviceAllocationConfigurationPatch',
30
+ 'DeviceAllocationResult',
31
+ 'DeviceAllocationResultPatch',
32
+ 'DeviceAttribute',
33
+ 'DeviceClaim',
34
+ 'DeviceClaimConfiguration',
35
+ 'DeviceClaimConfigurationPatch',
36
+ 'DeviceClaimPatch',
37
+ 'DeviceClass',
38
+ 'DeviceClassConfiguration',
39
+ 'DeviceClassConfigurationPatch',
40
+ 'DeviceClassSpec',
41
+ 'DeviceClassSpecPatch',
42
+ 'DeviceConstraint',
43
+ 'DeviceConstraintPatch',
44
+ 'DevicePatch',
45
+ 'DeviceRequest',
46
+ 'DeviceRequestAllocationResult',
47
+ 'DeviceRequestAllocationResultPatch',
48
+ 'DeviceRequestPatch',
49
+ 'DeviceSelector',
50
+ 'DeviceSelectorPatch',
51
+ 'OpaqueDeviceConfiguration',
52
+ 'OpaqueDeviceConfigurationPatch',
53
+ 'PodSchedulingContext',
54
+ 'PodSchedulingContextSpec',
55
+ 'PodSchedulingContextSpecPatch',
56
+ 'PodSchedulingContextStatus',
57
+ 'PodSchedulingContextStatusPatch',
58
+ 'ResourceClaim',
59
+ 'ResourceClaimConsumerReference',
60
+ 'ResourceClaimConsumerReferencePatch',
61
+ 'ResourceClaimSchedulingStatus',
62
+ 'ResourceClaimSchedulingStatusPatch',
63
+ 'ResourceClaimSpec',
64
+ 'ResourceClaimSpecPatch',
65
+ 'ResourceClaimStatus',
66
+ 'ResourceClaimStatusPatch',
67
+ 'ResourceClaimTemplate',
68
+ 'ResourceClaimTemplateSpec',
69
+ 'ResourceClaimTemplateSpecPatch',
70
+ 'ResourcePool',
71
+ 'ResourcePoolPatch',
72
+ 'ResourceSliceSpec',
73
+ 'ResourceSliceSpecPatch',
74
+ ]
75
+
76
+ @pulumi.output_type
77
+ class AllocationResult(dict):
78
+ """
79
+ AllocationResult contains attributes of an allocated resource.
80
+ """
81
+ @staticmethod
82
+ def __key_warning(key: str):
83
+ suggest = None
84
+ if key == "nodeSelector":
85
+ suggest = "node_selector"
86
+
87
+ if suggest:
88
+ pulumi.log.warn(f"Key '{key}' not found in AllocationResult. Access the value via the '{suggest}' property getter instead.")
89
+
90
+ def __getitem__(self, key: str) -> Any:
91
+ AllocationResult.__key_warning(key)
92
+ return super().__getitem__(key)
93
+
94
+ def get(self, key: str, default = None) -> Any:
95
+ AllocationResult.__key_warning(key)
96
+ return super().get(key, default)
97
+
98
+ def __init__(__self__, *,
99
+ controller: Optional[str] = None,
100
+ devices: Optional['outputs.DeviceAllocationResult'] = None,
101
+ node_selector: Optional['_core.v1.outputs.NodeSelector'] = None):
102
+ """
103
+ AllocationResult contains attributes of an allocated resource.
104
+ :param str controller: Controller is the name of the DRA driver which handled the allocation. That driver is also responsible for deallocating the claim. It is empty when the claim can be deallocated without involving a driver.
105
+
106
+ A driver may allocate devices provided by other drivers, so this driver name here can be different from the driver names listed for the results.
107
+
108
+ This is an alpha field and requires enabling the DRAControlPlaneController feature gate.
109
+ :param 'DeviceAllocationResultArgs' devices: Devices is the result of allocating devices.
110
+ :param '_core.v1.NodeSelectorArgs' node_selector: NodeSelector defines where the allocated resources are available. If unset, they are available everywhere.
111
+ """
112
+ if controller is not None:
113
+ pulumi.set(__self__, "controller", controller)
114
+ if devices is not None:
115
+ pulumi.set(__self__, "devices", devices)
116
+ if node_selector is not None:
117
+ pulumi.set(__self__, "node_selector", node_selector)
118
+
119
+ @property
120
+ @pulumi.getter
121
+ def controller(self) -> Optional[str]:
122
+ """
123
+ Controller is the name of the DRA driver which handled the allocation. That driver is also responsible for deallocating the claim. It is empty when the claim can be deallocated without involving a driver.
124
+
125
+ A driver may allocate devices provided by other drivers, so this driver name here can be different from the driver names listed for the results.
126
+
127
+ This is an alpha field and requires enabling the DRAControlPlaneController feature gate.
128
+ """
129
+ return pulumi.get(self, "controller")
130
+
131
+ @property
132
+ @pulumi.getter
133
+ def devices(self) -> Optional['outputs.DeviceAllocationResult']:
134
+ """
135
+ Devices is the result of allocating devices.
136
+ """
137
+ return pulumi.get(self, "devices")
138
+
139
+ @property
140
+ @pulumi.getter(name="nodeSelector")
141
+ def node_selector(self) -> Optional['_core.v1.outputs.NodeSelector']:
142
+ """
143
+ NodeSelector defines where the allocated resources are available. If unset, they are available everywhere.
144
+ """
145
+ return pulumi.get(self, "node_selector")
146
+
147
+
148
+ @pulumi.output_type
149
+ class AllocationResultPatch(dict):
150
+ """
151
+ AllocationResult contains attributes of an allocated resource.
152
+ """
153
+ @staticmethod
154
+ def __key_warning(key: str):
155
+ suggest = None
156
+ if key == "nodeSelector":
157
+ suggest = "node_selector"
158
+
159
+ if suggest:
160
+ pulumi.log.warn(f"Key '{key}' not found in AllocationResultPatch. Access the value via the '{suggest}' property getter instead.")
161
+
162
+ def __getitem__(self, key: str) -> Any:
163
+ AllocationResultPatch.__key_warning(key)
164
+ return super().__getitem__(key)
165
+
166
+ def get(self, key: str, default = None) -> Any:
167
+ AllocationResultPatch.__key_warning(key)
168
+ return super().get(key, default)
169
+
170
+ def __init__(__self__, *,
171
+ controller: Optional[str] = None,
172
+ devices: Optional['outputs.DeviceAllocationResultPatch'] = None,
173
+ node_selector: Optional['_core.v1.outputs.NodeSelectorPatch'] = None):
174
+ """
175
+ AllocationResult contains attributes of an allocated resource.
176
+ :param str controller: Controller is the name of the DRA driver which handled the allocation. That driver is also responsible for deallocating the claim. It is empty when the claim can be deallocated without involving a driver.
177
+
178
+ A driver may allocate devices provided by other drivers, so this driver name here can be different from the driver names listed for the results.
179
+
180
+ This is an alpha field and requires enabling the DRAControlPlaneController feature gate.
181
+ :param 'DeviceAllocationResultPatchArgs' devices: Devices is the result of allocating devices.
182
+ :param '_core.v1.NodeSelectorPatchArgs' node_selector: NodeSelector defines where the allocated resources are available. If unset, they are available everywhere.
183
+ """
184
+ if controller is not None:
185
+ pulumi.set(__self__, "controller", controller)
186
+ if devices is not None:
187
+ pulumi.set(__self__, "devices", devices)
188
+ if node_selector is not None:
189
+ pulumi.set(__self__, "node_selector", node_selector)
190
+
191
+ @property
192
+ @pulumi.getter
193
+ def controller(self) -> Optional[str]:
194
+ """
195
+ Controller is the name of the DRA driver which handled the allocation. That driver is also responsible for deallocating the claim. It is empty when the claim can be deallocated without involving a driver.
196
+
197
+ A driver may allocate devices provided by other drivers, so this driver name here can be different from the driver names listed for the results.
198
+
199
+ This is an alpha field and requires enabling the DRAControlPlaneController feature gate.
200
+ """
201
+ return pulumi.get(self, "controller")
202
+
203
+ @property
204
+ @pulumi.getter
205
+ def devices(self) -> Optional['outputs.DeviceAllocationResultPatch']:
206
+ """
207
+ Devices is the result of allocating devices.
208
+ """
209
+ return pulumi.get(self, "devices")
210
+
211
+ @property
212
+ @pulumi.getter(name="nodeSelector")
213
+ def node_selector(self) -> Optional['_core.v1.outputs.NodeSelectorPatch']:
214
+ """
215
+ NodeSelector defines where the allocated resources are available. If unset, they are available everywhere.
216
+ """
217
+ return pulumi.get(self, "node_selector")
218
+
219
+
220
+ @pulumi.output_type
221
+ class BasicDevice(dict):
222
+ """
223
+ BasicDevice defines one device instance.
224
+ """
225
+ def __init__(__self__, *,
226
+ attributes: Optional[Mapping[str, 'outputs.DeviceAttribute']] = None,
227
+ capacity: Optional[Mapping[str, str]] = None):
228
+ """
229
+ BasicDevice defines one device instance.
230
+ :param Mapping[str, 'DeviceAttributeArgs'] attributes: Attributes defines the set of attributes for this device. The name of each attribute must be unique in that set.
231
+
232
+ The maximum number of attributes and capacities combined is 32.
233
+ :param Mapping[str, str] capacity: Capacity defines the set of capacities for this device. The name of each capacity must be unique in that set.
234
+
235
+ The maximum number of attributes and capacities combined is 32.
236
+ """
237
+ if attributes is not None:
238
+ pulumi.set(__self__, "attributes", attributes)
239
+ if capacity is not None:
240
+ pulumi.set(__self__, "capacity", capacity)
241
+
242
+ @property
243
+ @pulumi.getter
244
+ def attributes(self) -> Optional[Mapping[str, 'outputs.DeviceAttribute']]:
245
+ """
246
+ Attributes defines the set of attributes for this device. The name of each attribute must be unique in that set.
247
+
248
+ The maximum number of attributes and capacities combined is 32.
249
+ """
250
+ return pulumi.get(self, "attributes")
251
+
252
+ @property
253
+ @pulumi.getter
254
+ def capacity(self) -> Optional[Mapping[str, str]]:
255
+ """
256
+ Capacity defines the set of capacities for this device. The name of each capacity must be unique in that set.
257
+
258
+ The maximum number of attributes and capacities combined is 32.
259
+ """
260
+ return pulumi.get(self, "capacity")
261
+
262
+
263
+ @pulumi.output_type
264
+ class BasicDevicePatch(dict):
265
+ """
266
+ BasicDevice defines one device instance.
267
+ """
268
+ def __init__(__self__, *,
269
+ attributes: Optional[Mapping[str, 'outputs.DeviceAttribute']] = None,
270
+ capacity: Optional[Mapping[str, str]] = None):
271
+ """
272
+ BasicDevice defines one device instance.
273
+ :param Mapping[str, 'DeviceAttributeArgs'] attributes: Attributes defines the set of attributes for this device. The name of each attribute must be unique in that set.
274
+
275
+ The maximum number of attributes and capacities combined is 32.
276
+ :param Mapping[str, str] capacity: Capacity defines the set of capacities for this device. The name of each capacity must be unique in that set.
277
+
278
+ The maximum number of attributes and capacities combined is 32.
279
+ """
280
+ if attributes is not None:
281
+ pulumi.set(__self__, "attributes", attributes)
282
+ if capacity is not None:
283
+ pulumi.set(__self__, "capacity", capacity)
284
+
285
+ @property
286
+ @pulumi.getter
287
+ def attributes(self) -> Optional[Mapping[str, 'outputs.DeviceAttribute']]:
288
+ """
289
+ Attributes defines the set of attributes for this device. The name of each attribute must be unique in that set.
290
+
291
+ The maximum number of attributes and capacities combined is 32.
292
+ """
293
+ return pulumi.get(self, "attributes")
294
+
295
+ @property
296
+ @pulumi.getter
297
+ def capacity(self) -> Optional[Mapping[str, str]]:
298
+ """
299
+ Capacity defines the set of capacities for this device. The name of each capacity must be unique in that set.
300
+
301
+ The maximum number of attributes and capacities combined is 32.
302
+ """
303
+ return pulumi.get(self, "capacity")
304
+
305
+
306
+ @pulumi.output_type
307
+ class CELDeviceSelector(dict):
308
+ """
309
+ CELDeviceSelector contains a CEL expression for selecting a device.
310
+ """
311
+ def __init__(__self__, *,
312
+ expression: str):
313
+ """
314
+ CELDeviceSelector contains a CEL expression for selecting a device.
315
+ :param str expression: Expression is a CEL expression which evaluates a single device. It must evaluate to true when the device under consideration satisfies the desired criteria, and false when it does not. Any other result is an error and causes allocation of devices to abort.
316
+
317
+ The expression's input is an object named "device", which carries the following properties:
318
+ - driver (string): the name of the driver which defines this device.
319
+ - attributes (map[string]object): the device's attributes, grouped by prefix
320
+ (e.g. device.attributes["dra.example.com"] evaluates to an object with all
321
+ of the attributes which were prefixed by "dra.example.com".
322
+ - capacity (map[string]object): the device's capacities, grouped by prefix.
323
+
324
+ Example: Consider a device with driver="dra.example.com", which exposes two attributes named "model" and "ext.example.com/family" and which exposes one capacity named "modules". This input to this expression would have the following fields:
325
+
326
+ device.driver
327
+ device.attributes["dra.example.com"].model
328
+ device.attributes["ext.example.com"].family
329
+ device.capacity["dra.example.com"].modules
330
+
331
+ The device.driver field can be used to check for a specific driver, either as a high-level precondition (i.e. you only want to consider devices from this driver) or as part of a multi-clause expression that is meant to consider devices from different drivers.
332
+
333
+ The value type of each attribute is defined by the device definition, and users who write these expressions must consult the documentation for their specific drivers. The value type of each capacity is Quantity.
334
+
335
+ If an unknown prefix is used as a lookup in either device.attributes or device.capacity, an empty map will be returned. Any reference to an unknown field will cause an evaluation error and allocation to abort.
336
+
337
+ A robust expression should check for the existence of attributes before referencing them.
338
+
339
+ For ease of use, the cel.bind() function is enabled, and can be used to simplify expressions that access multiple attributes with the same domain. For example:
340
+
341
+ cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool)
342
+ """
343
+ pulumi.set(__self__, "expression", expression)
344
+
345
+ @property
346
+ @pulumi.getter
347
+ def expression(self) -> str:
348
+ """
349
+ Expression is a CEL expression which evaluates a single device. It must evaluate to true when the device under consideration satisfies the desired criteria, and false when it does not. Any other result is an error and causes allocation of devices to abort.
350
+
351
+ The expression's input is an object named "device", which carries the following properties:
352
+ - driver (string): the name of the driver which defines this device.
353
+ - attributes (map[string]object): the device's attributes, grouped by prefix
354
+ (e.g. device.attributes["dra.example.com"] evaluates to an object with all
355
+ of the attributes which were prefixed by "dra.example.com".
356
+ - capacity (map[string]object): the device's capacities, grouped by prefix.
357
+
358
+ Example: Consider a device with driver="dra.example.com", which exposes two attributes named "model" and "ext.example.com/family" and which exposes one capacity named "modules". This input to this expression would have the following fields:
359
+
360
+ device.driver
361
+ device.attributes["dra.example.com"].model
362
+ device.attributes["ext.example.com"].family
363
+ device.capacity["dra.example.com"].modules
364
+
365
+ The device.driver field can be used to check for a specific driver, either as a high-level precondition (i.e. you only want to consider devices from this driver) or as part of a multi-clause expression that is meant to consider devices from different drivers.
366
+
367
+ The value type of each attribute is defined by the device definition, and users who write these expressions must consult the documentation for their specific drivers. The value type of each capacity is Quantity.
368
+
369
+ If an unknown prefix is used as a lookup in either device.attributes or device.capacity, an empty map will be returned. Any reference to an unknown field will cause an evaluation error and allocation to abort.
370
+
371
+ A robust expression should check for the existence of attributes before referencing them.
372
+
373
+ For ease of use, the cel.bind() function is enabled, and can be used to simplify expressions that access multiple attributes with the same domain. For example:
374
+
375
+ cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool)
376
+ """
377
+ return pulumi.get(self, "expression")
378
+
379
+
380
+ @pulumi.output_type
381
+ class CELDeviceSelectorPatch(dict):
382
+ """
383
+ CELDeviceSelector contains a CEL expression for selecting a device.
384
+ """
385
+ def __init__(__self__, *,
386
+ expression: Optional[str] = None):
387
+ """
388
+ CELDeviceSelector contains a CEL expression for selecting a device.
389
+ :param str expression: Expression is a CEL expression which evaluates a single device. It must evaluate to true when the device under consideration satisfies the desired criteria, and false when it does not. Any other result is an error and causes allocation of devices to abort.
390
+
391
+ The expression's input is an object named "device", which carries the following properties:
392
+ - driver (string): the name of the driver which defines this device.
393
+ - attributes (map[string]object): the device's attributes, grouped by prefix
394
+ (e.g. device.attributes["dra.example.com"] evaluates to an object with all
395
+ of the attributes which were prefixed by "dra.example.com".
396
+ - capacity (map[string]object): the device's capacities, grouped by prefix.
397
+
398
+ Example: Consider a device with driver="dra.example.com", which exposes two attributes named "model" and "ext.example.com/family" and which exposes one capacity named "modules". This input to this expression would have the following fields:
399
+
400
+ device.driver
401
+ device.attributes["dra.example.com"].model
402
+ device.attributes["ext.example.com"].family
403
+ device.capacity["dra.example.com"].modules
404
+
405
+ The device.driver field can be used to check for a specific driver, either as a high-level precondition (i.e. you only want to consider devices from this driver) or as part of a multi-clause expression that is meant to consider devices from different drivers.
406
+
407
+ The value type of each attribute is defined by the device definition, and users who write these expressions must consult the documentation for their specific drivers. The value type of each capacity is Quantity.
408
+
409
+ If an unknown prefix is used as a lookup in either device.attributes or device.capacity, an empty map will be returned. Any reference to an unknown field will cause an evaluation error and allocation to abort.
410
+
411
+ A robust expression should check for the existence of attributes before referencing them.
412
+
413
+ For ease of use, the cel.bind() function is enabled, and can be used to simplify expressions that access multiple attributes with the same domain. For example:
414
+
415
+ cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool)
416
+ """
417
+ if expression is not None:
418
+ pulumi.set(__self__, "expression", expression)
419
+
420
+ @property
421
+ @pulumi.getter
422
+ def expression(self) -> Optional[str]:
423
+ """
424
+ Expression is a CEL expression which evaluates a single device. It must evaluate to true when the device under consideration satisfies the desired criteria, and false when it does not. Any other result is an error and causes allocation of devices to abort.
425
+
426
+ The expression's input is an object named "device", which carries the following properties:
427
+ - driver (string): the name of the driver which defines this device.
428
+ - attributes (map[string]object): the device's attributes, grouped by prefix
429
+ (e.g. device.attributes["dra.example.com"] evaluates to an object with all
430
+ of the attributes which were prefixed by "dra.example.com".
431
+ - capacity (map[string]object): the device's capacities, grouped by prefix.
432
+
433
+ Example: Consider a device with driver="dra.example.com", which exposes two attributes named "model" and "ext.example.com/family" and which exposes one capacity named "modules". This input to this expression would have the following fields:
434
+
435
+ device.driver
436
+ device.attributes["dra.example.com"].model
437
+ device.attributes["ext.example.com"].family
438
+ device.capacity["dra.example.com"].modules
439
+
440
+ The device.driver field can be used to check for a specific driver, either as a high-level precondition (i.e. you only want to consider devices from this driver) or as part of a multi-clause expression that is meant to consider devices from different drivers.
441
+
442
+ The value type of each attribute is defined by the device definition, and users who write these expressions must consult the documentation for their specific drivers. The value type of each capacity is Quantity.
443
+
444
+ If an unknown prefix is used as a lookup in either device.attributes or device.capacity, an empty map will be returned. Any reference to an unknown field will cause an evaluation error and allocation to abort.
445
+
446
+ A robust expression should check for the existence of attributes before referencing them.
447
+
448
+ For ease of use, the cel.bind() function is enabled, and can be used to simplify expressions that access multiple attributes with the same domain. For example:
449
+
450
+ cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool)
451
+ """
452
+ return pulumi.get(self, "expression")
453
+
454
+
455
+ @pulumi.output_type
456
+ class Device(dict):
457
+ """
458
+ Device represents one individual hardware instance that can be selected based on its attributes. Besides the name, exactly one field must be set.
459
+ """
460
+ def __init__(__self__, *,
461
+ name: str,
462
+ basic: Optional['outputs.BasicDevice'] = None):
463
+ """
464
+ Device represents one individual hardware instance that can be selected based on its attributes. Besides the name, exactly one field must be set.
465
+ :param str name: Name is unique identifier among all devices managed by the driver in the pool. It must be a DNS label.
466
+ :param 'BasicDeviceArgs' basic: Basic defines one device instance.
467
+ """
468
+ pulumi.set(__self__, "name", name)
469
+ if basic is not None:
470
+ pulumi.set(__self__, "basic", basic)
471
+
472
+ @property
473
+ @pulumi.getter
474
+ def name(self) -> str:
475
+ """
476
+ Name is unique identifier among all devices managed by the driver in the pool. It must be a DNS label.
477
+ """
478
+ return pulumi.get(self, "name")
479
+
480
+ @property
481
+ @pulumi.getter
482
+ def basic(self) -> Optional['outputs.BasicDevice']:
483
+ """
484
+ Basic defines one device instance.
485
+ """
486
+ return pulumi.get(self, "basic")
487
+
488
+
489
+ @pulumi.output_type
490
+ class DeviceAllocationConfiguration(dict):
491
+ """
492
+ DeviceAllocationConfiguration gets embedded in an AllocationResult.
493
+ """
494
+ def __init__(__self__, *,
495
+ source: str,
496
+ opaque: Optional['outputs.OpaqueDeviceConfiguration'] = None,
497
+ requests: Optional[Sequence[str]] = None):
498
+ """
499
+ DeviceAllocationConfiguration gets embedded in an AllocationResult.
500
+ :param str source: Source records whether the configuration comes from a class and thus is not something that a normal user would have been able to set or from a claim.
501
+ :param 'OpaqueDeviceConfigurationArgs' opaque: Opaque provides driver-specific configuration parameters.
502
+ :param Sequence[str] requests: Requests lists the names of requests where the configuration applies. If empty, its applies to all requests.
503
+ """
504
+ pulumi.set(__self__, "source", source)
505
+ if opaque is not None:
506
+ pulumi.set(__self__, "opaque", opaque)
507
+ if requests is not None:
508
+ pulumi.set(__self__, "requests", requests)
509
+
510
+ @property
511
+ @pulumi.getter
512
+ def source(self) -> str:
513
+ """
514
+ Source records whether the configuration comes from a class and thus is not something that a normal user would have been able to set or from a claim.
515
+ """
516
+ return pulumi.get(self, "source")
517
+
518
+ @property
519
+ @pulumi.getter
520
+ def opaque(self) -> Optional['outputs.OpaqueDeviceConfiguration']:
521
+ """
522
+ Opaque provides driver-specific configuration parameters.
523
+ """
524
+ return pulumi.get(self, "opaque")
525
+
526
+ @property
527
+ @pulumi.getter
528
+ def requests(self) -> Optional[Sequence[str]]:
529
+ """
530
+ Requests lists the names of requests where the configuration applies. If empty, its applies to all requests.
531
+ """
532
+ return pulumi.get(self, "requests")
533
+
534
+
535
+ @pulumi.output_type
536
+ class DeviceAllocationConfigurationPatch(dict):
537
+ """
538
+ DeviceAllocationConfiguration gets embedded in an AllocationResult.
539
+ """
540
+ def __init__(__self__, *,
541
+ opaque: Optional['outputs.OpaqueDeviceConfigurationPatch'] = None,
542
+ requests: Optional[Sequence[str]] = None,
543
+ source: Optional[str] = None):
544
+ """
545
+ DeviceAllocationConfiguration gets embedded in an AllocationResult.
546
+ :param 'OpaqueDeviceConfigurationPatchArgs' opaque: Opaque provides driver-specific configuration parameters.
547
+ :param Sequence[str] requests: Requests lists the names of requests where the configuration applies. If empty, its applies to all requests.
548
+ :param str source: Source records whether the configuration comes from a class and thus is not something that a normal user would have been able to set or from a claim.
549
+ """
550
+ if opaque is not None:
551
+ pulumi.set(__self__, "opaque", opaque)
552
+ if requests is not None:
553
+ pulumi.set(__self__, "requests", requests)
554
+ if source is not None:
555
+ pulumi.set(__self__, "source", source)
556
+
557
+ @property
558
+ @pulumi.getter
559
+ def opaque(self) -> Optional['outputs.OpaqueDeviceConfigurationPatch']:
560
+ """
561
+ Opaque provides driver-specific configuration parameters.
562
+ """
563
+ return pulumi.get(self, "opaque")
564
+
565
+ @property
566
+ @pulumi.getter
567
+ def requests(self) -> Optional[Sequence[str]]:
568
+ """
569
+ Requests lists the names of requests where the configuration applies. If empty, its applies to all requests.
570
+ """
571
+ return pulumi.get(self, "requests")
572
+
573
+ @property
574
+ @pulumi.getter
575
+ def source(self) -> Optional[str]:
576
+ """
577
+ Source records whether the configuration comes from a class and thus is not something that a normal user would have been able to set or from a claim.
578
+ """
579
+ return pulumi.get(self, "source")
580
+
581
+
582
+ @pulumi.output_type
583
+ class DeviceAllocationResult(dict):
584
+ """
585
+ DeviceAllocationResult is the result of allocating devices.
586
+ """
587
+ def __init__(__self__, *,
588
+ config: Optional[Sequence['outputs.DeviceAllocationConfiguration']] = None,
589
+ results: Optional[Sequence['outputs.DeviceRequestAllocationResult']] = None):
590
+ """
591
+ DeviceAllocationResult is the result of allocating devices.
592
+ :param Sequence['DeviceAllocationConfigurationArgs'] config: This field is a combination of all the claim and class configuration parameters. Drivers can distinguish between those based on a flag.
593
+
594
+ This includes configuration parameters for drivers which have no allocated devices in the result because it is up to the drivers which configuration parameters they support. They can silently ignore unknown configuration parameters.
595
+ :param Sequence['DeviceRequestAllocationResultArgs'] results: Results lists all allocated devices.
596
+ """
597
+ if config is not None:
598
+ pulumi.set(__self__, "config", config)
599
+ if results is not None:
600
+ pulumi.set(__self__, "results", results)
601
+
602
+ @property
603
+ @pulumi.getter
604
+ def config(self) -> Optional[Sequence['outputs.DeviceAllocationConfiguration']]:
605
+ """
606
+ This field is a combination of all the claim and class configuration parameters. Drivers can distinguish between those based on a flag.
607
+
608
+ This includes configuration parameters for drivers which have no allocated devices in the result because it is up to the drivers which configuration parameters they support. They can silently ignore unknown configuration parameters.
609
+ """
610
+ return pulumi.get(self, "config")
611
+
612
+ @property
613
+ @pulumi.getter
614
+ def results(self) -> Optional[Sequence['outputs.DeviceRequestAllocationResult']]:
615
+ """
616
+ Results lists all allocated devices.
617
+ """
618
+ return pulumi.get(self, "results")
619
+
620
+
621
+ @pulumi.output_type
622
+ class DeviceAllocationResultPatch(dict):
623
+ """
624
+ DeviceAllocationResult is the result of allocating devices.
625
+ """
626
+ def __init__(__self__, *,
627
+ config: Optional[Sequence['outputs.DeviceAllocationConfigurationPatch']] = None,
628
+ results: Optional[Sequence['outputs.DeviceRequestAllocationResultPatch']] = None):
629
+ """
630
+ DeviceAllocationResult is the result of allocating devices.
631
+ :param Sequence['DeviceAllocationConfigurationPatchArgs'] config: This field is a combination of all the claim and class configuration parameters. Drivers can distinguish between those based on a flag.
632
+
633
+ This includes configuration parameters for drivers which have no allocated devices in the result because it is up to the drivers which configuration parameters they support. They can silently ignore unknown configuration parameters.
634
+ :param Sequence['DeviceRequestAllocationResultPatchArgs'] results: Results lists all allocated devices.
635
+ """
636
+ if config is not None:
637
+ pulumi.set(__self__, "config", config)
638
+ if results is not None:
639
+ pulumi.set(__self__, "results", results)
640
+
641
+ @property
642
+ @pulumi.getter
643
+ def config(self) -> Optional[Sequence['outputs.DeviceAllocationConfigurationPatch']]:
644
+ """
645
+ This field is a combination of all the claim and class configuration parameters. Drivers can distinguish between those based on a flag.
646
+
647
+ This includes configuration parameters for drivers which have no allocated devices in the result because it is up to the drivers which configuration parameters they support. They can silently ignore unknown configuration parameters.
648
+ """
649
+ return pulumi.get(self, "config")
650
+
651
+ @property
652
+ @pulumi.getter
653
+ def results(self) -> Optional[Sequence['outputs.DeviceRequestAllocationResultPatch']]:
654
+ """
655
+ Results lists all allocated devices.
656
+ """
657
+ return pulumi.get(self, "results")
658
+
659
+
660
+ @pulumi.output_type
661
+ class DeviceAttribute(dict):
662
+ """
663
+ DeviceAttribute must have exactly one field set.
664
+ """
665
+ def __init__(__self__, *,
666
+ bool: Optional[bool] = None,
667
+ int: Optional[int] = None,
668
+ string: Optional[str] = None,
669
+ version: Optional[str] = None):
670
+ """
671
+ DeviceAttribute must have exactly one field set.
672
+ :param bool bool: BoolValue is a true/false value.
673
+ :param int int: IntValue is a number.
674
+ :param str string: StringValue is a string. Must not be longer than 64 characters.
675
+ :param str version: VersionValue is a semantic version according to semver.org spec 2.0.0. Must not be longer than 64 characters.
676
+ """
677
+ if bool is not None:
678
+ pulumi.set(__self__, "bool", bool)
679
+ if int is not None:
680
+ pulumi.set(__self__, "int", int)
681
+ if string is not None:
682
+ pulumi.set(__self__, "string", string)
683
+ if version is not None:
684
+ pulumi.set(__self__, "version", version)
685
+
686
+ @property
687
+ @pulumi.getter
688
+ def bool(self) -> Optional[bool]:
689
+ """
690
+ BoolValue is a true/false value.
691
+ """
692
+ return pulumi.get(self, "bool")
693
+
694
+ @property
695
+ @pulumi.getter
696
+ def int(self) -> Optional[int]:
697
+ """
698
+ IntValue is a number.
699
+ """
700
+ return pulumi.get(self, "int")
701
+
702
+ @property
703
+ @pulumi.getter
704
+ def string(self) -> Optional[str]:
705
+ """
706
+ StringValue is a string. Must not be longer than 64 characters.
707
+ """
708
+ return pulumi.get(self, "string")
709
+
710
+ @property
711
+ @pulumi.getter
712
+ def version(self) -> Optional[str]:
713
+ """
714
+ VersionValue is a semantic version according to semver.org spec 2.0.0. Must not be longer than 64 characters.
715
+ """
716
+ return pulumi.get(self, "version")
717
+
718
+
719
+ @pulumi.output_type
720
+ class DeviceClaim(dict):
721
+ """
722
+ DeviceClaim defines how to request devices with a ResourceClaim.
723
+ """
724
+ def __init__(__self__, *,
725
+ config: Optional[Sequence['outputs.DeviceClaimConfiguration']] = None,
726
+ constraints: Optional[Sequence['outputs.DeviceConstraint']] = None,
727
+ requests: Optional[Sequence['outputs.DeviceRequest']] = None):
728
+ """
729
+ DeviceClaim defines how to request devices with a ResourceClaim.
730
+ :param Sequence['DeviceClaimConfigurationArgs'] config: This field holds configuration for multiple potential drivers which could satisfy requests in this claim. It is ignored while allocating the claim.
731
+ :param Sequence['DeviceConstraintArgs'] constraints: These constraints must be satisfied by the set of devices that get allocated for the claim.
732
+ :param Sequence['DeviceRequestArgs'] requests: Requests represent individual requests for distinct devices which must all be satisfied. If empty, nothing needs to be allocated.
733
+ """
734
+ if config is not None:
735
+ pulumi.set(__self__, "config", config)
736
+ if constraints is not None:
737
+ pulumi.set(__self__, "constraints", constraints)
738
+ if requests is not None:
739
+ pulumi.set(__self__, "requests", requests)
740
+
741
+ @property
742
+ @pulumi.getter
743
+ def config(self) -> Optional[Sequence['outputs.DeviceClaimConfiguration']]:
744
+ """
745
+ This field holds configuration for multiple potential drivers which could satisfy requests in this claim. It is ignored while allocating the claim.
746
+ """
747
+ return pulumi.get(self, "config")
748
+
749
+ @property
750
+ @pulumi.getter
751
+ def constraints(self) -> Optional[Sequence['outputs.DeviceConstraint']]:
752
+ """
753
+ These constraints must be satisfied by the set of devices that get allocated for the claim.
754
+ """
755
+ return pulumi.get(self, "constraints")
756
+
757
+ @property
758
+ @pulumi.getter
759
+ def requests(self) -> Optional[Sequence['outputs.DeviceRequest']]:
760
+ """
761
+ Requests represent individual requests for distinct devices which must all be satisfied. If empty, nothing needs to be allocated.
762
+ """
763
+ return pulumi.get(self, "requests")
764
+
765
+
766
+ @pulumi.output_type
767
+ class DeviceClaimConfiguration(dict):
768
+ """
769
+ DeviceClaimConfiguration is used for configuration parameters in DeviceClaim.
770
+ """
771
+ def __init__(__self__, *,
772
+ opaque: Optional['outputs.OpaqueDeviceConfiguration'] = None,
773
+ requests: Optional[Sequence[str]] = None):
774
+ """
775
+ DeviceClaimConfiguration is used for configuration parameters in DeviceClaim.
776
+ :param 'OpaqueDeviceConfigurationArgs' opaque: Opaque provides driver-specific configuration parameters.
777
+ :param Sequence[str] requests: Requests lists the names of requests where the configuration applies. If empty, it applies to all requests.
778
+ """
779
+ if opaque is not None:
780
+ pulumi.set(__self__, "opaque", opaque)
781
+ if requests is not None:
782
+ pulumi.set(__self__, "requests", requests)
783
+
784
+ @property
785
+ @pulumi.getter
786
+ def opaque(self) -> Optional['outputs.OpaqueDeviceConfiguration']:
787
+ """
788
+ Opaque provides driver-specific configuration parameters.
789
+ """
790
+ return pulumi.get(self, "opaque")
791
+
792
+ @property
793
+ @pulumi.getter
794
+ def requests(self) -> Optional[Sequence[str]]:
795
+ """
796
+ Requests lists the names of requests where the configuration applies. If empty, it applies to all requests.
797
+ """
798
+ return pulumi.get(self, "requests")
799
+
800
+
801
+ @pulumi.output_type
802
+ class DeviceClaimConfigurationPatch(dict):
803
+ """
804
+ DeviceClaimConfiguration is used for configuration parameters in DeviceClaim.
805
+ """
806
+ def __init__(__self__, *,
807
+ opaque: Optional['outputs.OpaqueDeviceConfigurationPatch'] = None,
808
+ requests: Optional[Sequence[str]] = None):
809
+ """
810
+ DeviceClaimConfiguration is used for configuration parameters in DeviceClaim.
811
+ :param 'OpaqueDeviceConfigurationPatchArgs' opaque: Opaque provides driver-specific configuration parameters.
812
+ :param Sequence[str] requests: Requests lists the names of requests where the configuration applies. If empty, it applies to all requests.
813
+ """
814
+ if opaque is not None:
815
+ pulumi.set(__self__, "opaque", opaque)
816
+ if requests is not None:
817
+ pulumi.set(__self__, "requests", requests)
818
+
819
+ @property
820
+ @pulumi.getter
821
+ def opaque(self) -> Optional['outputs.OpaqueDeviceConfigurationPatch']:
822
+ """
823
+ Opaque provides driver-specific configuration parameters.
824
+ """
825
+ return pulumi.get(self, "opaque")
826
+
827
+ @property
828
+ @pulumi.getter
829
+ def requests(self) -> Optional[Sequence[str]]:
830
+ """
831
+ Requests lists the names of requests where the configuration applies. If empty, it applies to all requests.
832
+ """
833
+ return pulumi.get(self, "requests")
834
+
835
+
836
+ @pulumi.output_type
837
+ class DeviceClaimPatch(dict):
838
+ """
839
+ DeviceClaim defines how to request devices with a ResourceClaim.
840
+ """
841
+ def __init__(__self__, *,
842
+ config: Optional[Sequence['outputs.DeviceClaimConfigurationPatch']] = None,
843
+ constraints: Optional[Sequence['outputs.DeviceConstraintPatch']] = None,
844
+ requests: Optional[Sequence['outputs.DeviceRequestPatch']] = None):
845
+ """
846
+ DeviceClaim defines how to request devices with a ResourceClaim.
847
+ :param Sequence['DeviceClaimConfigurationPatchArgs'] config: This field holds configuration for multiple potential drivers which could satisfy requests in this claim. It is ignored while allocating the claim.
848
+ :param Sequence['DeviceConstraintPatchArgs'] constraints: These constraints must be satisfied by the set of devices that get allocated for the claim.
849
+ :param Sequence['DeviceRequestPatchArgs'] requests: Requests represent individual requests for distinct devices which must all be satisfied. If empty, nothing needs to be allocated.
850
+ """
851
+ if config is not None:
852
+ pulumi.set(__self__, "config", config)
853
+ if constraints is not None:
854
+ pulumi.set(__self__, "constraints", constraints)
855
+ if requests is not None:
856
+ pulumi.set(__self__, "requests", requests)
857
+
858
+ @property
859
+ @pulumi.getter
860
+ def config(self) -> Optional[Sequence['outputs.DeviceClaimConfigurationPatch']]:
861
+ """
862
+ This field holds configuration for multiple potential drivers which could satisfy requests in this claim. It is ignored while allocating the claim.
863
+ """
864
+ return pulumi.get(self, "config")
865
+
866
+ @property
867
+ @pulumi.getter
868
+ def constraints(self) -> Optional[Sequence['outputs.DeviceConstraintPatch']]:
869
+ """
870
+ These constraints must be satisfied by the set of devices that get allocated for the claim.
871
+ """
872
+ return pulumi.get(self, "constraints")
873
+
874
+ @property
875
+ @pulumi.getter
876
+ def requests(self) -> Optional[Sequence['outputs.DeviceRequestPatch']]:
877
+ """
878
+ Requests represent individual requests for distinct devices which must all be satisfied. If empty, nothing needs to be allocated.
879
+ """
880
+ return pulumi.get(self, "requests")
881
+
882
+
883
+ @pulumi.output_type
884
+ class DeviceClass(dict):
885
+ """
886
+ DeviceClass is a vendor- or admin-provided resource that contains device configuration and selectors. It can be referenced in the device requests of a claim to apply these presets. Cluster scoped.
887
+
888
+ This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
889
+ """
890
+ @staticmethod
891
+ def __key_warning(key: str):
892
+ suggest = None
893
+ if key == "apiVersion":
894
+ suggest = "api_version"
895
+
896
+ if suggest:
897
+ pulumi.log.warn(f"Key '{key}' not found in DeviceClass. Access the value via the '{suggest}' property getter instead.")
898
+
899
+ def __getitem__(self, key: str) -> Any:
900
+ DeviceClass.__key_warning(key)
901
+ return super().__getitem__(key)
902
+
903
+ def get(self, key: str, default = None) -> Any:
904
+ DeviceClass.__key_warning(key)
905
+ return super().get(key, default)
906
+
907
+ def __init__(__self__, *,
908
+ spec: 'outputs.DeviceClassSpec',
909
+ api_version: Optional[str] = None,
910
+ kind: Optional[str] = None,
911
+ metadata: Optional['_meta.v1.outputs.ObjectMeta'] = None):
912
+ """
913
+ DeviceClass is a vendor- or admin-provided resource that contains device configuration and selectors. It can be referenced in the device requests of a claim to apply these presets. Cluster scoped.
914
+
915
+ This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
916
+ :param 'DeviceClassSpecArgs' spec: Spec defines what can be allocated and how to configure it.
917
+
918
+ This is mutable. Consumers have to be prepared for classes changing at any time, either because they get updated or replaced. Claim allocations are done once based on whatever was set in classes at the time of allocation.
919
+
920
+ Changing the spec automatically increments the metadata.generation number.
921
+ :param str api_version: APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
922
+ :param str kind: Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
923
+ :param '_meta.v1.ObjectMetaArgs' metadata: Standard object metadata
924
+ """
925
+ pulumi.set(__self__, "spec", spec)
926
+ if api_version is not None:
927
+ pulumi.set(__self__, "api_version", 'resource.k8s.io/v1alpha3')
928
+ if kind is not None:
929
+ pulumi.set(__self__, "kind", 'DeviceClass')
930
+ if metadata is not None:
931
+ pulumi.set(__self__, "metadata", metadata)
932
+
933
+ @property
934
+ @pulumi.getter
935
+ def spec(self) -> 'outputs.DeviceClassSpec':
936
+ """
937
+ Spec defines what can be allocated and how to configure it.
938
+
939
+ This is mutable. Consumers have to be prepared for classes changing at any time, either because they get updated or replaced. Claim allocations are done once based on whatever was set in classes at the time of allocation.
940
+
941
+ Changing the spec automatically increments the metadata.generation number.
942
+ """
943
+ return pulumi.get(self, "spec")
944
+
945
+ @property
946
+ @pulumi.getter(name="apiVersion")
947
+ def api_version(self) -> Optional[str]:
948
+ """
949
+ APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
950
+ """
951
+ return pulumi.get(self, "api_version")
952
+
953
+ @property
954
+ @pulumi.getter
955
+ def kind(self) -> Optional[str]:
956
+ """
957
+ Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
958
+ """
959
+ return pulumi.get(self, "kind")
960
+
961
+ @property
962
+ @pulumi.getter
963
+ def metadata(self) -> Optional['_meta.v1.outputs.ObjectMeta']:
964
+ """
965
+ Standard object metadata
966
+ """
967
+ return pulumi.get(self, "metadata")
968
+
969
+
970
+ @pulumi.output_type
971
+ class DeviceClassConfiguration(dict):
972
+ """
973
+ DeviceClassConfiguration is used in DeviceClass.
974
+ """
975
+ def __init__(__self__, *,
976
+ opaque: Optional['outputs.OpaqueDeviceConfiguration'] = None):
977
+ """
978
+ DeviceClassConfiguration is used in DeviceClass.
979
+ :param 'OpaqueDeviceConfigurationArgs' opaque: Opaque provides driver-specific configuration parameters.
980
+ """
981
+ if opaque is not None:
982
+ pulumi.set(__self__, "opaque", opaque)
983
+
984
+ @property
985
+ @pulumi.getter
986
+ def opaque(self) -> Optional['outputs.OpaqueDeviceConfiguration']:
987
+ """
988
+ Opaque provides driver-specific configuration parameters.
989
+ """
990
+ return pulumi.get(self, "opaque")
991
+
992
+
993
+ @pulumi.output_type
994
+ class DeviceClassConfigurationPatch(dict):
995
+ """
996
+ DeviceClassConfiguration is used in DeviceClass.
997
+ """
998
+ def __init__(__self__, *,
999
+ opaque: Optional['outputs.OpaqueDeviceConfigurationPatch'] = None):
1000
+ """
1001
+ DeviceClassConfiguration is used in DeviceClass.
1002
+ :param 'OpaqueDeviceConfigurationPatchArgs' opaque: Opaque provides driver-specific configuration parameters.
1003
+ """
1004
+ if opaque is not None:
1005
+ pulumi.set(__self__, "opaque", opaque)
1006
+
1007
+ @property
1008
+ @pulumi.getter
1009
+ def opaque(self) -> Optional['outputs.OpaqueDeviceConfigurationPatch']:
1010
+ """
1011
+ Opaque provides driver-specific configuration parameters.
1012
+ """
1013
+ return pulumi.get(self, "opaque")
1014
+
1015
+
1016
+ @pulumi.output_type
1017
+ class DeviceClassSpec(dict):
1018
+ """
1019
+ DeviceClassSpec is used in a [DeviceClass] to define what can be allocated and how to configure it.
1020
+ """
1021
+ @staticmethod
1022
+ def __key_warning(key: str):
1023
+ suggest = None
1024
+ if key == "suitableNodes":
1025
+ suggest = "suitable_nodes"
1026
+
1027
+ if suggest:
1028
+ pulumi.log.warn(f"Key '{key}' not found in DeviceClassSpec. Access the value via the '{suggest}' property getter instead.")
1029
+
1030
+ def __getitem__(self, key: str) -> Any:
1031
+ DeviceClassSpec.__key_warning(key)
1032
+ return super().__getitem__(key)
1033
+
1034
+ def get(self, key: str, default = None) -> Any:
1035
+ DeviceClassSpec.__key_warning(key)
1036
+ return super().get(key, default)
1037
+
1038
+ def __init__(__self__, *,
1039
+ config: Optional[Sequence['outputs.DeviceClassConfiguration']] = None,
1040
+ selectors: Optional[Sequence['outputs.DeviceSelector']] = None,
1041
+ suitable_nodes: Optional['_core.v1.outputs.NodeSelector'] = None):
1042
+ """
1043
+ DeviceClassSpec is used in a [DeviceClass] to define what can be allocated and how to configure it.
1044
+ :param Sequence['DeviceClassConfigurationArgs'] config: Config defines configuration parameters that apply to each device that is claimed via this class. Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor configuration applies to exactly one driver.
1045
+
1046
+ They are passed to the driver, but are not considered while allocating the claim.
1047
+ :param Sequence['DeviceSelectorArgs'] selectors: Each selector must be satisfied by a device which is claimed via this class.
1048
+ :param '_core.v1.NodeSelectorArgs' suitable_nodes: Only nodes matching the selector will be considered by the scheduler when trying to find a Node that fits a Pod when that Pod uses a claim that has not been allocated yet *and* that claim gets allocated through a control plane controller. It is ignored when the claim does not use a control plane controller for allocation.
1049
+
1050
+ Setting this field is optional. If unset, all Nodes are candidates.
1051
+
1052
+ This is an alpha field and requires enabling the DRAControlPlaneController feature gate.
1053
+ """
1054
+ if config is not None:
1055
+ pulumi.set(__self__, "config", config)
1056
+ if selectors is not None:
1057
+ pulumi.set(__self__, "selectors", selectors)
1058
+ if suitable_nodes is not None:
1059
+ pulumi.set(__self__, "suitable_nodes", suitable_nodes)
1060
+
1061
+ @property
1062
+ @pulumi.getter
1063
+ def config(self) -> Optional[Sequence['outputs.DeviceClassConfiguration']]:
1064
+ """
1065
+ Config defines configuration parameters that apply to each device that is claimed via this class. Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor configuration applies to exactly one driver.
1066
+
1067
+ They are passed to the driver, but are not considered while allocating the claim.
1068
+ """
1069
+ return pulumi.get(self, "config")
1070
+
1071
+ @property
1072
+ @pulumi.getter
1073
+ def selectors(self) -> Optional[Sequence['outputs.DeviceSelector']]:
1074
+ """
1075
+ Each selector must be satisfied by a device which is claimed via this class.
1076
+ """
1077
+ return pulumi.get(self, "selectors")
1078
+
1079
+ @property
1080
+ @pulumi.getter(name="suitableNodes")
1081
+ def suitable_nodes(self) -> Optional['_core.v1.outputs.NodeSelector']:
1082
+ """
1083
+ Only nodes matching the selector will be considered by the scheduler when trying to find a Node that fits a Pod when that Pod uses a claim that has not been allocated yet *and* that claim gets allocated through a control plane controller. It is ignored when the claim does not use a control plane controller for allocation.
1084
+
1085
+ Setting this field is optional. If unset, all Nodes are candidates.
1086
+
1087
+ This is an alpha field and requires enabling the DRAControlPlaneController feature gate.
1088
+ """
1089
+ return pulumi.get(self, "suitable_nodes")
1090
+
1091
+
1092
+ @pulumi.output_type
1093
+ class DeviceClassSpecPatch(dict):
1094
+ """
1095
+ DeviceClassSpec is used in a [DeviceClass] to define what can be allocated and how to configure it.
1096
+ """
1097
+ @staticmethod
1098
+ def __key_warning(key: str):
1099
+ suggest = None
1100
+ if key == "suitableNodes":
1101
+ suggest = "suitable_nodes"
1102
+
1103
+ if suggest:
1104
+ pulumi.log.warn(f"Key '{key}' not found in DeviceClassSpecPatch. Access the value via the '{suggest}' property getter instead.")
1105
+
1106
+ def __getitem__(self, key: str) -> Any:
1107
+ DeviceClassSpecPatch.__key_warning(key)
1108
+ return super().__getitem__(key)
1109
+
1110
+ def get(self, key: str, default = None) -> Any:
1111
+ DeviceClassSpecPatch.__key_warning(key)
1112
+ return super().get(key, default)
1113
+
1114
+ def __init__(__self__, *,
1115
+ config: Optional[Sequence['outputs.DeviceClassConfigurationPatch']] = None,
1116
+ selectors: Optional[Sequence['outputs.DeviceSelectorPatch']] = None,
1117
+ suitable_nodes: Optional['_core.v1.outputs.NodeSelectorPatch'] = None):
1118
+ """
1119
+ DeviceClassSpec is used in a [DeviceClass] to define what can be allocated and how to configure it.
1120
+ :param Sequence['DeviceClassConfigurationPatchArgs'] config: Config defines configuration parameters that apply to each device that is claimed via this class. Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor configuration applies to exactly one driver.
1121
+
1122
+ They are passed to the driver, but are not considered while allocating the claim.
1123
+ :param Sequence['DeviceSelectorPatchArgs'] selectors: Each selector must be satisfied by a device which is claimed via this class.
1124
+ :param '_core.v1.NodeSelectorPatchArgs' suitable_nodes: Only nodes matching the selector will be considered by the scheduler when trying to find a Node that fits a Pod when that Pod uses a claim that has not been allocated yet *and* that claim gets allocated through a control plane controller. It is ignored when the claim does not use a control plane controller for allocation.
1125
+
1126
+ Setting this field is optional. If unset, all Nodes are candidates.
1127
+
1128
+ This is an alpha field and requires enabling the DRAControlPlaneController feature gate.
1129
+ """
1130
+ if config is not None:
1131
+ pulumi.set(__self__, "config", config)
1132
+ if selectors is not None:
1133
+ pulumi.set(__self__, "selectors", selectors)
1134
+ if suitable_nodes is not None:
1135
+ pulumi.set(__self__, "suitable_nodes", suitable_nodes)
1136
+
1137
+ @property
1138
+ @pulumi.getter
1139
+ def config(self) -> Optional[Sequence['outputs.DeviceClassConfigurationPatch']]:
1140
+ """
1141
+ Config defines configuration parameters that apply to each device that is claimed via this class. Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor configuration applies to exactly one driver.
1142
+
1143
+ They are passed to the driver, but are not considered while allocating the claim.
1144
+ """
1145
+ return pulumi.get(self, "config")
1146
+
1147
+ @property
1148
+ @pulumi.getter
1149
+ def selectors(self) -> Optional[Sequence['outputs.DeviceSelectorPatch']]:
1150
+ """
1151
+ Each selector must be satisfied by a device which is claimed via this class.
1152
+ """
1153
+ return pulumi.get(self, "selectors")
1154
+
1155
+ @property
1156
+ @pulumi.getter(name="suitableNodes")
1157
+ def suitable_nodes(self) -> Optional['_core.v1.outputs.NodeSelectorPatch']:
1158
+ """
1159
+ Only nodes matching the selector will be considered by the scheduler when trying to find a Node that fits a Pod when that Pod uses a claim that has not been allocated yet *and* that claim gets allocated through a control plane controller. It is ignored when the claim does not use a control plane controller for allocation.
1160
+
1161
+ Setting this field is optional. If unset, all Nodes are candidates.
1162
+
1163
+ This is an alpha field and requires enabling the DRAControlPlaneController feature gate.
1164
+ """
1165
+ return pulumi.get(self, "suitable_nodes")
1166
+
1167
+
1168
+ @pulumi.output_type
1169
+ class DeviceConstraint(dict):
1170
+ """
1171
+ DeviceConstraint must have exactly one field set besides Requests.
1172
+ """
1173
+ @staticmethod
1174
+ def __key_warning(key: str):
1175
+ suggest = None
1176
+ if key == "matchAttribute":
1177
+ suggest = "match_attribute"
1178
+
1179
+ if suggest:
1180
+ pulumi.log.warn(f"Key '{key}' not found in DeviceConstraint. Access the value via the '{suggest}' property getter instead.")
1181
+
1182
+ def __getitem__(self, key: str) -> Any:
1183
+ DeviceConstraint.__key_warning(key)
1184
+ return super().__getitem__(key)
1185
+
1186
+ def get(self, key: str, default = None) -> Any:
1187
+ DeviceConstraint.__key_warning(key)
1188
+ return super().get(key, default)
1189
+
1190
+ def __init__(__self__, *,
1191
+ match_attribute: Optional[str] = None,
1192
+ requests: Optional[Sequence[str]] = None):
1193
+ """
1194
+ DeviceConstraint must have exactly one field set besides Requests.
1195
+ :param str match_attribute: MatchAttribute requires that all devices in question have this attribute and that its type and value are the same across those devices.
1196
+
1197
+ For example, if you specified "dra.example.com/numa" (a hypothetical example!), then only devices in the same NUMA node will be chosen. A device which does not have that attribute will not be chosen. All devices should use a value of the same type for this attribute because that is part of its specification, but if one device doesn't, then it also will not be chosen.
1198
+
1199
+ Must include the domain qualifier.
1200
+ :param Sequence[str] requests: Requests is a list of the one or more requests in this claim which must co-satisfy this constraint. If a request is fulfilled by multiple devices, then all of the devices must satisfy the constraint. If this is not specified, this constraint applies to all requests in this claim.
1201
+ """
1202
+ if match_attribute is not None:
1203
+ pulumi.set(__self__, "match_attribute", match_attribute)
1204
+ if requests is not None:
1205
+ pulumi.set(__self__, "requests", requests)
1206
+
1207
+ @property
1208
+ @pulumi.getter(name="matchAttribute")
1209
+ def match_attribute(self) -> Optional[str]:
1210
+ """
1211
+ MatchAttribute requires that all devices in question have this attribute and that its type and value are the same across those devices.
1212
+
1213
+ For example, if you specified "dra.example.com/numa" (a hypothetical example!), then only devices in the same NUMA node will be chosen. A device which does not have that attribute will not be chosen. All devices should use a value of the same type for this attribute because that is part of its specification, but if one device doesn't, then it also will not be chosen.
1214
+
1215
+ Must include the domain qualifier.
1216
+ """
1217
+ return pulumi.get(self, "match_attribute")
1218
+
1219
+ @property
1220
+ @pulumi.getter
1221
+ def requests(self) -> Optional[Sequence[str]]:
1222
+ """
1223
+ Requests is a list of the one or more requests in this claim which must co-satisfy this constraint. If a request is fulfilled by multiple devices, then all of the devices must satisfy the constraint. If this is not specified, this constraint applies to all requests in this claim.
1224
+ """
1225
+ return pulumi.get(self, "requests")
1226
+
1227
+
1228
+ @pulumi.output_type
1229
+ class DeviceConstraintPatch(dict):
1230
+ """
1231
+ DeviceConstraint must have exactly one field set besides Requests.
1232
+ """
1233
+ @staticmethod
1234
+ def __key_warning(key: str):
1235
+ suggest = None
1236
+ if key == "matchAttribute":
1237
+ suggest = "match_attribute"
1238
+
1239
+ if suggest:
1240
+ pulumi.log.warn(f"Key '{key}' not found in DeviceConstraintPatch. Access the value via the '{suggest}' property getter instead.")
1241
+
1242
+ def __getitem__(self, key: str) -> Any:
1243
+ DeviceConstraintPatch.__key_warning(key)
1244
+ return super().__getitem__(key)
1245
+
1246
+ def get(self, key: str, default = None) -> Any:
1247
+ DeviceConstraintPatch.__key_warning(key)
1248
+ return super().get(key, default)
1249
+
1250
+ def __init__(__self__, *,
1251
+ match_attribute: Optional[str] = None,
1252
+ requests: Optional[Sequence[str]] = None):
1253
+ """
1254
+ DeviceConstraint must have exactly one field set besides Requests.
1255
+ :param str match_attribute: MatchAttribute requires that all devices in question have this attribute and that its type and value are the same across those devices.
1256
+
1257
+ For example, if you specified "dra.example.com/numa" (a hypothetical example!), then only devices in the same NUMA node will be chosen. A device which does not have that attribute will not be chosen. All devices should use a value of the same type for this attribute because that is part of its specification, but if one device doesn't, then it also will not be chosen.
1258
+
1259
+ Must include the domain qualifier.
1260
+ :param Sequence[str] requests: Requests is a list of the one or more requests in this claim which must co-satisfy this constraint. If a request is fulfilled by multiple devices, then all of the devices must satisfy the constraint. If this is not specified, this constraint applies to all requests in this claim.
1261
+ """
1262
+ if match_attribute is not None:
1263
+ pulumi.set(__self__, "match_attribute", match_attribute)
1264
+ if requests is not None:
1265
+ pulumi.set(__self__, "requests", requests)
1266
+
1267
+ @property
1268
+ @pulumi.getter(name="matchAttribute")
1269
+ def match_attribute(self) -> Optional[str]:
1270
+ """
1271
+ MatchAttribute requires that all devices in question have this attribute and that its type and value are the same across those devices.
1272
+
1273
+ For example, if you specified "dra.example.com/numa" (a hypothetical example!), then only devices in the same NUMA node will be chosen. A device which does not have that attribute will not be chosen. All devices should use a value of the same type for this attribute because that is part of its specification, but if one device doesn't, then it also will not be chosen.
1274
+
1275
+ Must include the domain qualifier.
1276
+ """
1277
+ return pulumi.get(self, "match_attribute")
1278
+
1279
+ @property
1280
+ @pulumi.getter
1281
+ def requests(self) -> Optional[Sequence[str]]:
1282
+ """
1283
+ Requests is a list of the one or more requests in this claim which must co-satisfy this constraint. If a request is fulfilled by multiple devices, then all of the devices must satisfy the constraint. If this is not specified, this constraint applies to all requests in this claim.
1284
+ """
1285
+ return pulumi.get(self, "requests")
1286
+
1287
+
1288
+ @pulumi.output_type
1289
+ class DevicePatch(dict):
1290
+ """
1291
+ Device represents one individual hardware instance that can be selected based on its attributes. Besides the name, exactly one field must be set.
1292
+ """
1293
+ def __init__(__self__, *,
1294
+ basic: Optional['outputs.BasicDevicePatch'] = None,
1295
+ name: Optional[str] = None):
1296
+ """
1297
+ Device represents one individual hardware instance that can be selected based on its attributes. Besides the name, exactly one field must be set.
1298
+ :param 'BasicDevicePatchArgs' basic: Basic defines one device instance.
1299
+ :param str name: Name is unique identifier among all devices managed by the driver in the pool. It must be a DNS label.
1300
+ """
1301
+ if basic is not None:
1302
+ pulumi.set(__self__, "basic", basic)
1303
+ if name is not None:
1304
+ pulumi.set(__self__, "name", name)
1305
+
1306
+ @property
1307
+ @pulumi.getter
1308
+ def basic(self) -> Optional['outputs.BasicDevicePatch']:
1309
+ """
1310
+ Basic defines one device instance.
1311
+ """
1312
+ return pulumi.get(self, "basic")
1313
+
1314
+ @property
1315
+ @pulumi.getter
1316
+ def name(self) -> Optional[str]:
1317
+ """
1318
+ Name is unique identifier among all devices managed by the driver in the pool. It must be a DNS label.
1319
+ """
1320
+ return pulumi.get(self, "name")
1321
+
1322
+
1323
+ @pulumi.output_type
1324
+ class DeviceRequest(dict):
1325
+ """
1326
+ DeviceRequest is a request for devices required for a claim. This is typically a request for a single resource like a device, but can also ask for several identical devices.
1327
+
1328
+ A DeviceClassName is currently required. Clients must check that it is indeed set. It's absence indicates that something changed in a way that is not supported by the client yet, in which case it must refuse to handle the request.
1329
+ """
1330
+ @staticmethod
1331
+ def __key_warning(key: str):
1332
+ suggest = None
1333
+ if key == "deviceClassName":
1334
+ suggest = "device_class_name"
1335
+ elif key == "adminAccess":
1336
+ suggest = "admin_access"
1337
+ elif key == "allocationMode":
1338
+ suggest = "allocation_mode"
1339
+
1340
+ if suggest:
1341
+ pulumi.log.warn(f"Key '{key}' not found in DeviceRequest. Access the value via the '{suggest}' property getter instead.")
1342
+
1343
+ def __getitem__(self, key: str) -> Any:
1344
+ DeviceRequest.__key_warning(key)
1345
+ return super().__getitem__(key)
1346
+
1347
+ def get(self, key: str, default = None) -> Any:
1348
+ DeviceRequest.__key_warning(key)
1349
+ return super().get(key, default)
1350
+
1351
+ def __init__(__self__, *,
1352
+ device_class_name: str,
1353
+ name: str,
1354
+ admin_access: Optional[bool] = None,
1355
+ allocation_mode: Optional[str] = None,
1356
+ count: Optional[int] = None,
1357
+ selectors: Optional[Sequence['outputs.DeviceSelector']] = None):
1358
+ """
1359
+ DeviceRequest is a request for devices required for a claim. This is typically a request for a single resource like a device, but can also ask for several identical devices.
1360
+
1361
+ A DeviceClassName is currently required. Clients must check that it is indeed set. It's absence indicates that something changed in a way that is not supported by the client yet, in which case it must refuse to handle the request.
1362
+ :param str device_class_name: DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request.
1363
+
1364
+ A class is required. Which classes are available depends on the cluster.
1365
+
1366
+ Administrators may use this to restrict which devices may get requested by only installing classes with selectors for permitted devices. If users are free to request anything without restrictions, then administrators can create an empty DeviceClass for users to reference.
1367
+ :param str name: Name can be used to reference this request in a pod.spec.containers[].resources.claims entry and in a constraint of the claim.
1368
+
1369
+ Must be a DNS label.
1370
+ :param bool admin_access: AdminAccess indicates that this is a claim for administrative access to the device(s). Claims with AdminAccess are expected to be used for monitoring or other management services for a device. They ignore all ordinary claims to the device with respect to access modes and any resource allocations.
1371
+ :param str allocation_mode: AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:
1372
+
1373
+ - ExactCount: This request is for a specific number of devices.
1374
+ This is the default. The exact number is provided in the
1375
+ count field.
1376
+
1377
+ - All: This request is for all of the matching devices in a pool.
1378
+ Allocation will fail if some devices are already allocated,
1379
+ unless adminAccess is requested.
1380
+
1381
+ If AlloctionMode is not specified, the default mode is ExactCount. If the mode is ExactCount and count is not specified, the default count is one. Any other requests must specify this field.
1382
+
1383
+ More modes may get added in the future. Clients must refuse to handle requests with unknown modes.
1384
+ :param int count: Count is used only when the count mode is "ExactCount". Must be greater than zero. If AllocationMode is ExactCount and this field is not specified, the default is one.
1385
+ :param Sequence['DeviceSelectorArgs'] selectors: Selectors define criteria which must be satisfied by a specific device in order for that device to be considered for this request. All selectors must be satisfied for a device to be considered.
1386
+ """
1387
+ pulumi.set(__self__, "device_class_name", device_class_name)
1388
+ pulumi.set(__self__, "name", name)
1389
+ if admin_access is not None:
1390
+ pulumi.set(__self__, "admin_access", admin_access)
1391
+ if allocation_mode is not None:
1392
+ pulumi.set(__self__, "allocation_mode", allocation_mode)
1393
+ if count is not None:
1394
+ pulumi.set(__self__, "count", count)
1395
+ if selectors is not None:
1396
+ pulumi.set(__self__, "selectors", selectors)
1397
+
1398
+ @property
1399
+ @pulumi.getter(name="deviceClassName")
1400
+ def device_class_name(self) -> str:
1401
+ """
1402
+ DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request.
1403
+
1404
+ A class is required. Which classes are available depends on the cluster.
1405
+
1406
+ Administrators may use this to restrict which devices may get requested by only installing classes with selectors for permitted devices. If users are free to request anything without restrictions, then administrators can create an empty DeviceClass for users to reference.
1407
+ """
1408
+ return pulumi.get(self, "device_class_name")
1409
+
1410
+ @property
1411
+ @pulumi.getter
1412
+ def name(self) -> str:
1413
+ """
1414
+ Name can be used to reference this request in a pod.spec.containers[].resources.claims entry and in a constraint of the claim.
1415
+
1416
+ Must be a DNS label.
1417
+ """
1418
+ return pulumi.get(self, "name")
1419
+
1420
+ @property
1421
+ @pulumi.getter(name="adminAccess")
1422
+ def admin_access(self) -> Optional[bool]:
1423
+ """
1424
+ AdminAccess indicates that this is a claim for administrative access to the device(s). Claims with AdminAccess are expected to be used for monitoring or other management services for a device. They ignore all ordinary claims to the device with respect to access modes and any resource allocations.
1425
+ """
1426
+ return pulumi.get(self, "admin_access")
1427
+
1428
+ @property
1429
+ @pulumi.getter(name="allocationMode")
1430
+ def allocation_mode(self) -> Optional[str]:
1431
+ """
1432
+ AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:
1433
+
1434
+ - ExactCount: This request is for a specific number of devices.
1435
+ This is the default. The exact number is provided in the
1436
+ count field.
1437
+
1438
+ - All: This request is for all of the matching devices in a pool.
1439
+ Allocation will fail if some devices are already allocated,
1440
+ unless adminAccess is requested.
1441
+
1442
+ If AlloctionMode is not specified, the default mode is ExactCount. If the mode is ExactCount and count is not specified, the default count is one. Any other requests must specify this field.
1443
+
1444
+ More modes may get added in the future. Clients must refuse to handle requests with unknown modes.
1445
+ """
1446
+ return pulumi.get(self, "allocation_mode")
1447
+
1448
+ @property
1449
+ @pulumi.getter
1450
+ def count(self) -> Optional[int]:
1451
+ """
1452
+ Count is used only when the count mode is "ExactCount". Must be greater than zero. If AllocationMode is ExactCount and this field is not specified, the default is one.
1453
+ """
1454
+ return pulumi.get(self, "count")
1455
+
1456
+ @property
1457
+ @pulumi.getter
1458
+ def selectors(self) -> Optional[Sequence['outputs.DeviceSelector']]:
1459
+ """
1460
+ Selectors define criteria which must be satisfied by a specific device in order for that device to be considered for this request. All selectors must be satisfied for a device to be considered.
1461
+ """
1462
+ return pulumi.get(self, "selectors")
1463
+
1464
+
1465
+ @pulumi.output_type
1466
+ class DeviceRequestAllocationResult(dict):
1467
+ """
1468
+ DeviceRequestAllocationResult contains the allocation result for one request.
1469
+ """
1470
+ def __init__(__self__, *,
1471
+ device: str,
1472
+ driver: str,
1473
+ pool: str,
1474
+ request: str):
1475
+ """
1476
+ DeviceRequestAllocationResult contains the allocation result for one request.
1477
+ :param str device: Device references one device instance via its name in the driver's resource pool. It must be a DNS label.
1478
+ :param str driver: Driver specifies the name of the DRA driver whose kubelet plugin should be invoked to process the allocation once the claim is needed on a node.
1479
+
1480
+ Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.
1481
+ :param str pool: This name together with the driver name and the device name field identify which device was allocated (`<driver name>/<pool name>/<device name>`).
1482
+
1483
+ Must not be longer than 253 characters and may contain one or more DNS sub-domains separated by slashes.
1484
+ :param str request: Request is the name of the request in the claim which caused this device to be allocated. Multiple devices may have been allocated per request.
1485
+ """
1486
+ pulumi.set(__self__, "device", device)
1487
+ pulumi.set(__self__, "driver", driver)
1488
+ pulumi.set(__self__, "pool", pool)
1489
+ pulumi.set(__self__, "request", request)
1490
+
1491
+ @property
1492
+ @pulumi.getter
1493
+ def device(self) -> str:
1494
+ """
1495
+ Device references one device instance via its name in the driver's resource pool. It must be a DNS label.
1496
+ """
1497
+ return pulumi.get(self, "device")
1498
+
1499
+ @property
1500
+ @pulumi.getter
1501
+ def driver(self) -> str:
1502
+ """
1503
+ Driver specifies the name of the DRA driver whose kubelet plugin should be invoked to process the allocation once the claim is needed on a node.
1504
+
1505
+ Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.
1506
+ """
1507
+ return pulumi.get(self, "driver")
1508
+
1509
+ @property
1510
+ @pulumi.getter
1511
+ def pool(self) -> str:
1512
+ """
1513
+ This name together with the driver name and the device name field identify which device was allocated (`<driver name>/<pool name>/<device name>`).
1514
+
1515
+ Must not be longer than 253 characters and may contain one or more DNS sub-domains separated by slashes.
1516
+ """
1517
+ return pulumi.get(self, "pool")
1518
+
1519
+ @property
1520
+ @pulumi.getter
1521
+ def request(self) -> str:
1522
+ """
1523
+ Request is the name of the request in the claim which caused this device to be allocated. Multiple devices may have been allocated per request.
1524
+ """
1525
+ return pulumi.get(self, "request")
1526
+
1527
+
1528
+ @pulumi.output_type
1529
+ class DeviceRequestAllocationResultPatch(dict):
1530
+ """
1531
+ DeviceRequestAllocationResult contains the allocation result for one request.
1532
+ """
1533
+ def __init__(__self__, *,
1534
+ device: Optional[str] = None,
1535
+ driver: Optional[str] = None,
1536
+ pool: Optional[str] = None,
1537
+ request: Optional[str] = None):
1538
+ """
1539
+ DeviceRequestAllocationResult contains the allocation result for one request.
1540
+ :param str device: Device references one device instance via its name in the driver's resource pool. It must be a DNS label.
1541
+ :param str driver: Driver specifies the name of the DRA driver whose kubelet plugin should be invoked to process the allocation once the claim is needed on a node.
1542
+
1543
+ Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.
1544
+ :param str pool: This name together with the driver name and the device name field identify which device was allocated (`<driver name>/<pool name>/<device name>`).
1545
+
1546
+ Must not be longer than 253 characters and may contain one or more DNS sub-domains separated by slashes.
1547
+ :param str request: Request is the name of the request in the claim which caused this device to be allocated. Multiple devices may have been allocated per request.
1548
+ """
1549
+ if device is not None:
1550
+ pulumi.set(__self__, "device", device)
1551
+ if driver is not None:
1552
+ pulumi.set(__self__, "driver", driver)
1553
+ if pool is not None:
1554
+ pulumi.set(__self__, "pool", pool)
1555
+ if request is not None:
1556
+ pulumi.set(__self__, "request", request)
1557
+
1558
+ @property
1559
+ @pulumi.getter
1560
+ def device(self) -> Optional[str]:
1561
+ """
1562
+ Device references one device instance via its name in the driver's resource pool. It must be a DNS label.
1563
+ """
1564
+ return pulumi.get(self, "device")
1565
+
1566
+ @property
1567
+ @pulumi.getter
1568
+ def driver(self) -> Optional[str]:
1569
+ """
1570
+ Driver specifies the name of the DRA driver whose kubelet plugin should be invoked to process the allocation once the claim is needed on a node.
1571
+
1572
+ Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.
1573
+ """
1574
+ return pulumi.get(self, "driver")
1575
+
1576
+ @property
1577
+ @pulumi.getter
1578
+ def pool(self) -> Optional[str]:
1579
+ """
1580
+ This name together with the driver name and the device name field identify which device was allocated (`<driver name>/<pool name>/<device name>`).
1581
+
1582
+ Must not be longer than 253 characters and may contain one or more DNS sub-domains separated by slashes.
1583
+ """
1584
+ return pulumi.get(self, "pool")
1585
+
1586
+ @property
1587
+ @pulumi.getter
1588
+ def request(self) -> Optional[str]:
1589
+ """
1590
+ Request is the name of the request in the claim which caused this device to be allocated. Multiple devices may have been allocated per request.
1591
+ """
1592
+ return pulumi.get(self, "request")
1593
+
1594
+
1595
+ @pulumi.output_type
1596
+ class DeviceRequestPatch(dict):
1597
+ """
1598
+ DeviceRequest is a request for devices required for a claim. This is typically a request for a single resource like a device, but can also ask for several identical devices.
1599
+
1600
+ A DeviceClassName is currently required. Clients must check that it is indeed set. It's absence indicates that something changed in a way that is not supported by the client yet, in which case it must refuse to handle the request.
1601
+ """
1602
+ @staticmethod
1603
+ def __key_warning(key: str):
1604
+ suggest = None
1605
+ if key == "adminAccess":
1606
+ suggest = "admin_access"
1607
+ elif key == "allocationMode":
1608
+ suggest = "allocation_mode"
1609
+ elif key == "deviceClassName":
1610
+ suggest = "device_class_name"
1611
+
1612
+ if suggest:
1613
+ pulumi.log.warn(f"Key '{key}' not found in DeviceRequestPatch. Access the value via the '{suggest}' property getter instead.")
1614
+
1615
+ def __getitem__(self, key: str) -> Any:
1616
+ DeviceRequestPatch.__key_warning(key)
1617
+ return super().__getitem__(key)
1618
+
1619
+ def get(self, key: str, default = None) -> Any:
1620
+ DeviceRequestPatch.__key_warning(key)
1621
+ return super().get(key, default)
1622
+
1623
+ def __init__(__self__, *,
1624
+ admin_access: Optional[bool] = None,
1625
+ allocation_mode: Optional[str] = None,
1626
+ count: Optional[int] = None,
1627
+ device_class_name: Optional[str] = None,
1628
+ name: Optional[str] = None,
1629
+ selectors: Optional[Sequence['outputs.DeviceSelectorPatch']] = None):
1630
+ """
1631
+ DeviceRequest is a request for devices required for a claim. This is typically a request for a single resource like a device, but can also ask for several identical devices.
1632
+
1633
+ A DeviceClassName is currently required. Clients must check that it is indeed set. It's absence indicates that something changed in a way that is not supported by the client yet, in which case it must refuse to handle the request.
1634
+ :param bool admin_access: AdminAccess indicates that this is a claim for administrative access to the device(s). Claims with AdminAccess are expected to be used for monitoring or other management services for a device. They ignore all ordinary claims to the device with respect to access modes and any resource allocations.
1635
+ :param str allocation_mode: AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:
1636
+
1637
+ - ExactCount: This request is for a specific number of devices.
1638
+ This is the default. The exact number is provided in the
1639
+ count field.
1640
+
1641
+ - All: This request is for all of the matching devices in a pool.
1642
+ Allocation will fail if some devices are already allocated,
1643
+ unless adminAccess is requested.
1644
+
1645
+ If AlloctionMode is not specified, the default mode is ExactCount. If the mode is ExactCount and count is not specified, the default count is one. Any other requests must specify this field.
1646
+
1647
+ More modes may get added in the future. Clients must refuse to handle requests with unknown modes.
1648
+ :param int count: Count is used only when the count mode is "ExactCount". Must be greater than zero. If AllocationMode is ExactCount and this field is not specified, the default is one.
1649
+ :param str device_class_name: DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request.
1650
+
1651
+ A class is required. Which classes are available depends on the cluster.
1652
+
1653
+ Administrators may use this to restrict which devices may get requested by only installing classes with selectors for permitted devices. If users are free to request anything without restrictions, then administrators can create an empty DeviceClass for users to reference.
1654
+ :param str name: Name can be used to reference this request in a pod.spec.containers[].resources.claims entry and in a constraint of the claim.
1655
+
1656
+ Must be a DNS label.
1657
+ :param Sequence['DeviceSelectorPatchArgs'] selectors: Selectors define criteria which must be satisfied by a specific device in order for that device to be considered for this request. All selectors must be satisfied for a device to be considered.
1658
+ """
1659
+ if admin_access is not None:
1660
+ pulumi.set(__self__, "admin_access", admin_access)
1661
+ if allocation_mode is not None:
1662
+ pulumi.set(__self__, "allocation_mode", allocation_mode)
1663
+ if count is not None:
1664
+ pulumi.set(__self__, "count", count)
1665
+ if device_class_name is not None:
1666
+ pulumi.set(__self__, "device_class_name", device_class_name)
1667
+ if name is not None:
1668
+ pulumi.set(__self__, "name", name)
1669
+ if selectors is not None:
1670
+ pulumi.set(__self__, "selectors", selectors)
1671
+
1672
+ @property
1673
+ @pulumi.getter(name="adminAccess")
1674
+ def admin_access(self) -> Optional[bool]:
1675
+ """
1676
+ AdminAccess indicates that this is a claim for administrative access to the device(s). Claims with AdminAccess are expected to be used for monitoring or other management services for a device. They ignore all ordinary claims to the device with respect to access modes and any resource allocations.
1677
+ """
1678
+ return pulumi.get(self, "admin_access")
1679
+
1680
+ @property
1681
+ @pulumi.getter(name="allocationMode")
1682
+ def allocation_mode(self) -> Optional[str]:
1683
+ """
1684
+ AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:
1685
+
1686
+ - ExactCount: This request is for a specific number of devices.
1687
+ This is the default. The exact number is provided in the
1688
+ count field.
1689
+
1690
+ - All: This request is for all of the matching devices in a pool.
1691
+ Allocation will fail if some devices are already allocated,
1692
+ unless adminAccess is requested.
1693
+
1694
+ If AlloctionMode is not specified, the default mode is ExactCount. If the mode is ExactCount and count is not specified, the default count is one. Any other requests must specify this field.
1695
+
1696
+ More modes may get added in the future. Clients must refuse to handle requests with unknown modes.
1697
+ """
1698
+ return pulumi.get(self, "allocation_mode")
1699
+
1700
+ @property
1701
+ @pulumi.getter
1702
+ def count(self) -> Optional[int]:
1703
+ """
1704
+ Count is used only when the count mode is "ExactCount". Must be greater than zero. If AllocationMode is ExactCount and this field is not specified, the default is one.
1705
+ """
1706
+ return pulumi.get(self, "count")
1707
+
1708
+ @property
1709
+ @pulumi.getter(name="deviceClassName")
1710
+ def device_class_name(self) -> Optional[str]:
1711
+ """
1712
+ DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request.
1713
+
1714
+ A class is required. Which classes are available depends on the cluster.
1715
+
1716
+ Administrators may use this to restrict which devices may get requested by only installing classes with selectors for permitted devices. If users are free to request anything without restrictions, then administrators can create an empty DeviceClass for users to reference.
1717
+ """
1718
+ return pulumi.get(self, "device_class_name")
1719
+
1720
+ @property
1721
+ @pulumi.getter
1722
+ def name(self) -> Optional[str]:
1723
+ """
1724
+ Name can be used to reference this request in a pod.spec.containers[].resources.claims entry and in a constraint of the claim.
1725
+
1726
+ Must be a DNS label.
1727
+ """
1728
+ return pulumi.get(self, "name")
1729
+
1730
+ @property
1731
+ @pulumi.getter
1732
+ def selectors(self) -> Optional[Sequence['outputs.DeviceSelectorPatch']]:
1733
+ """
1734
+ Selectors define criteria which must be satisfied by a specific device in order for that device to be considered for this request. All selectors must be satisfied for a device to be considered.
1735
+ """
1736
+ return pulumi.get(self, "selectors")
1737
+
1738
+
1739
+ @pulumi.output_type
1740
+ class DeviceSelector(dict):
1741
+ """
1742
+ DeviceSelector must have exactly one field set.
1743
+ """
1744
+ def __init__(__self__, *,
1745
+ cel: Optional['outputs.CELDeviceSelector'] = None):
1746
+ """
1747
+ DeviceSelector must have exactly one field set.
1748
+ :param 'CELDeviceSelectorArgs' cel: CEL contains a CEL expression for selecting a device.
1749
+ """
1750
+ if cel is not None:
1751
+ pulumi.set(__self__, "cel", cel)
1752
+
1753
+ @property
1754
+ @pulumi.getter
1755
+ def cel(self) -> Optional['outputs.CELDeviceSelector']:
1756
+ """
1757
+ CEL contains a CEL expression for selecting a device.
1758
+ """
1759
+ return pulumi.get(self, "cel")
1760
+
1761
+
1762
+ @pulumi.output_type
1763
+ class DeviceSelectorPatch(dict):
1764
+ """
1765
+ DeviceSelector must have exactly one field set.
1766
+ """
1767
+ def __init__(__self__, *,
1768
+ cel: Optional['outputs.CELDeviceSelectorPatch'] = None):
1769
+ """
1770
+ DeviceSelector must have exactly one field set.
1771
+ :param 'CELDeviceSelectorPatchArgs' cel: CEL contains a CEL expression for selecting a device.
1772
+ """
1773
+ if cel is not None:
1774
+ pulumi.set(__self__, "cel", cel)
1775
+
1776
+ @property
1777
+ @pulumi.getter
1778
+ def cel(self) -> Optional['outputs.CELDeviceSelectorPatch']:
1779
+ """
1780
+ CEL contains a CEL expression for selecting a device.
1781
+ """
1782
+ return pulumi.get(self, "cel")
1783
+
1784
+
1785
+ @pulumi.output_type
1786
+ class OpaqueDeviceConfiguration(dict):
1787
+ """
1788
+ OpaqueDeviceConfiguration contains configuration parameters for a driver in a format defined by the driver vendor.
1789
+ """
1790
+ def __init__(__self__, *,
1791
+ driver: str,
1792
+ parameters: Any):
1793
+ """
1794
+ OpaqueDeviceConfiguration contains configuration parameters for a driver in a format defined by the driver vendor.
1795
+ :param str driver: Driver is used to determine which kubelet plugin needs to be passed these configuration parameters.
1796
+
1797
+ An admission policy provided by the driver developer could use this to decide whether it needs to validate them.
1798
+
1799
+ Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.
1800
+ :param Any parameters: Parameters can contain arbitrary data. It is the responsibility of the driver developer to handle validation and versioning. Typically this includes self-identification and a version ("kind" + "apiVersion" for Kubernetes types), with conversion between different versions.
1801
+ """
1802
+ pulumi.set(__self__, "driver", driver)
1803
+ pulumi.set(__self__, "parameters", parameters)
1804
+
1805
+ @property
1806
+ @pulumi.getter
1807
+ def driver(self) -> str:
1808
+ """
1809
+ Driver is used to determine which kubelet plugin needs to be passed these configuration parameters.
1810
+
1811
+ An admission policy provided by the driver developer could use this to decide whether it needs to validate them.
1812
+
1813
+ Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.
1814
+ """
1815
+ return pulumi.get(self, "driver")
1816
+
1817
+ @property
1818
+ @pulumi.getter
1819
+ def parameters(self) -> Any:
1820
+ """
1821
+ Parameters can contain arbitrary data. It is the responsibility of the driver developer to handle validation and versioning. Typically this includes self-identification and a version ("kind" + "apiVersion" for Kubernetes types), with conversion between different versions.
1822
+ """
1823
+ return pulumi.get(self, "parameters")
1824
+
1825
+
1826
+ @pulumi.output_type
1827
+ class OpaqueDeviceConfigurationPatch(dict):
1828
+ """
1829
+ OpaqueDeviceConfiguration contains configuration parameters for a driver in a format defined by the driver vendor.
1830
+ """
1831
+ def __init__(__self__, *,
1832
+ driver: Optional[str] = None,
1833
+ parameters: Optional[Any] = None):
1834
+ """
1835
+ OpaqueDeviceConfiguration contains configuration parameters for a driver in a format defined by the driver vendor.
1836
+ :param str driver: Driver is used to determine which kubelet plugin needs to be passed these configuration parameters.
1837
+
1838
+ An admission policy provided by the driver developer could use this to decide whether it needs to validate them.
1839
+
1840
+ Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.
1841
+ :param Any parameters: Parameters can contain arbitrary data. It is the responsibility of the driver developer to handle validation and versioning. Typically this includes self-identification and a version ("kind" + "apiVersion" for Kubernetes types), with conversion between different versions.
1842
+ """
1843
+ if driver is not None:
1844
+ pulumi.set(__self__, "driver", driver)
1845
+ if parameters is not None:
1846
+ pulumi.set(__self__, "parameters", parameters)
1847
+
1848
+ @property
1849
+ @pulumi.getter
1850
+ def driver(self) -> Optional[str]:
1851
+ """
1852
+ Driver is used to determine which kubelet plugin needs to be passed these configuration parameters.
1853
+
1854
+ An admission policy provided by the driver developer could use this to decide whether it needs to validate them.
1855
+
1856
+ Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.
1857
+ """
1858
+ return pulumi.get(self, "driver")
1859
+
1860
+ @property
1861
+ @pulumi.getter
1862
+ def parameters(self) -> Optional[Any]:
1863
+ """
1864
+ Parameters can contain arbitrary data. It is the responsibility of the driver developer to handle validation and versioning. Typically this includes self-identification and a version ("kind" + "apiVersion" for Kubernetes types), with conversion between different versions.
1865
+ """
1866
+ return pulumi.get(self, "parameters")
1867
+
1868
+
1869
+ @pulumi.output_type
1870
+ class PodSchedulingContext(dict):
1871
+ """
1872
+ PodSchedulingContext objects hold information that is needed to schedule a Pod with ResourceClaims that use "WaitForFirstConsumer" allocation mode.
1873
+
1874
+ This is an alpha type and requires enabling the DRAControlPlaneController feature gate.
1875
+ """
1876
+ @staticmethod
1877
+ def __key_warning(key: str):
1878
+ suggest = None
1879
+ if key == "apiVersion":
1880
+ suggest = "api_version"
1881
+
1882
+ if suggest:
1883
+ pulumi.log.warn(f"Key '{key}' not found in PodSchedulingContext. Access the value via the '{suggest}' property getter instead.")
1884
+
1885
+ def __getitem__(self, key: str) -> Any:
1886
+ PodSchedulingContext.__key_warning(key)
1887
+ return super().__getitem__(key)
1888
+
1889
+ def get(self, key: str, default = None) -> Any:
1890
+ PodSchedulingContext.__key_warning(key)
1891
+ return super().get(key, default)
1892
+
1893
+ def __init__(__self__, *,
1894
+ spec: 'outputs.PodSchedulingContextSpec',
1895
+ api_version: Optional[str] = None,
1896
+ kind: Optional[str] = None,
1897
+ metadata: Optional['_meta.v1.outputs.ObjectMeta'] = None,
1898
+ status: Optional['outputs.PodSchedulingContextStatus'] = None):
1899
+ """
1900
+ PodSchedulingContext objects hold information that is needed to schedule a Pod with ResourceClaims that use "WaitForFirstConsumer" allocation mode.
1901
+
1902
+ This is an alpha type and requires enabling the DRAControlPlaneController feature gate.
1903
+ :param 'PodSchedulingContextSpecArgs' spec: Spec describes where resources for the Pod are needed.
1904
+ :param str api_version: APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
1905
+ :param str kind: Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
1906
+ :param '_meta.v1.ObjectMetaArgs' metadata: Standard object metadata
1907
+ :param 'PodSchedulingContextStatusArgs' status: Status describes where resources for the Pod can be allocated.
1908
+ """
1909
+ pulumi.set(__self__, "spec", spec)
1910
+ if api_version is not None:
1911
+ pulumi.set(__self__, "api_version", 'resource.k8s.io/v1alpha3')
1912
+ if kind is not None:
1913
+ pulumi.set(__self__, "kind", 'PodSchedulingContext')
1914
+ if metadata is not None:
1915
+ pulumi.set(__self__, "metadata", metadata)
1916
+ if status is not None:
1917
+ pulumi.set(__self__, "status", status)
1918
+
1919
+ @property
1920
+ @pulumi.getter
1921
+ def spec(self) -> 'outputs.PodSchedulingContextSpec':
1922
+ """
1923
+ Spec describes where resources for the Pod are needed.
1924
+ """
1925
+ return pulumi.get(self, "spec")
1926
+
1927
+ @property
1928
+ @pulumi.getter(name="apiVersion")
1929
+ def api_version(self) -> Optional[str]:
1930
+ """
1931
+ APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
1932
+ """
1933
+ return pulumi.get(self, "api_version")
1934
+
1935
+ @property
1936
+ @pulumi.getter
1937
+ def kind(self) -> Optional[str]:
1938
+ """
1939
+ Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
1940
+ """
1941
+ return pulumi.get(self, "kind")
1942
+
1943
+ @property
1944
+ @pulumi.getter
1945
+ def metadata(self) -> Optional['_meta.v1.outputs.ObjectMeta']:
1946
+ """
1947
+ Standard object metadata
1948
+ """
1949
+ return pulumi.get(self, "metadata")
1950
+
1951
+ @property
1952
+ @pulumi.getter
1953
+ def status(self) -> Optional['outputs.PodSchedulingContextStatus']:
1954
+ """
1955
+ Status describes where resources for the Pod can be allocated.
1956
+ """
1957
+ return pulumi.get(self, "status")
1958
+
1959
+
1960
+ @pulumi.output_type
1961
+ class PodSchedulingContextSpec(dict):
1962
+ """
1963
+ PodSchedulingContextSpec describes where resources for the Pod are needed.
1964
+ """
1965
+ @staticmethod
1966
+ def __key_warning(key: str):
1967
+ suggest = None
1968
+ if key == "potentialNodes":
1969
+ suggest = "potential_nodes"
1970
+ elif key == "selectedNode":
1971
+ suggest = "selected_node"
1972
+
1973
+ if suggest:
1974
+ pulumi.log.warn(f"Key '{key}' not found in PodSchedulingContextSpec. Access the value via the '{suggest}' property getter instead.")
1975
+
1976
+ def __getitem__(self, key: str) -> Any:
1977
+ PodSchedulingContextSpec.__key_warning(key)
1978
+ return super().__getitem__(key)
1979
+
1980
+ def get(self, key: str, default = None) -> Any:
1981
+ PodSchedulingContextSpec.__key_warning(key)
1982
+ return super().get(key, default)
1983
+
1984
+ def __init__(__self__, *,
1985
+ potential_nodes: Optional[Sequence[str]] = None,
1986
+ selected_node: Optional[str] = None):
1987
+ """
1988
+ PodSchedulingContextSpec describes where resources for the Pod are needed.
1989
+ :param Sequence[str] potential_nodes: PotentialNodes lists nodes where the Pod might be able to run.
1990
+
1991
+ The size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced.
1992
+ :param str selected_node: SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use "WaitForFirstConsumer" allocation is to be attempted.
1993
+ """
1994
+ if potential_nodes is not None:
1995
+ pulumi.set(__self__, "potential_nodes", potential_nodes)
1996
+ if selected_node is not None:
1997
+ pulumi.set(__self__, "selected_node", selected_node)
1998
+
1999
+ @property
2000
+ @pulumi.getter(name="potentialNodes")
2001
+ def potential_nodes(self) -> Optional[Sequence[str]]:
2002
+ """
2003
+ PotentialNodes lists nodes where the Pod might be able to run.
2004
+
2005
+ The size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced.
2006
+ """
2007
+ return pulumi.get(self, "potential_nodes")
2008
+
2009
+ @property
2010
+ @pulumi.getter(name="selectedNode")
2011
+ def selected_node(self) -> Optional[str]:
2012
+ """
2013
+ SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use "WaitForFirstConsumer" allocation is to be attempted.
2014
+ """
2015
+ return pulumi.get(self, "selected_node")
2016
+
2017
+
2018
+ @pulumi.output_type
2019
+ class PodSchedulingContextSpecPatch(dict):
2020
+ """
2021
+ PodSchedulingContextSpec describes where resources for the Pod are needed.
2022
+ """
2023
+ @staticmethod
2024
+ def __key_warning(key: str):
2025
+ suggest = None
2026
+ if key == "potentialNodes":
2027
+ suggest = "potential_nodes"
2028
+ elif key == "selectedNode":
2029
+ suggest = "selected_node"
2030
+
2031
+ if suggest:
2032
+ pulumi.log.warn(f"Key '{key}' not found in PodSchedulingContextSpecPatch. Access the value via the '{suggest}' property getter instead.")
2033
+
2034
+ def __getitem__(self, key: str) -> Any:
2035
+ PodSchedulingContextSpecPatch.__key_warning(key)
2036
+ return super().__getitem__(key)
2037
+
2038
+ def get(self, key: str, default = None) -> Any:
2039
+ PodSchedulingContextSpecPatch.__key_warning(key)
2040
+ return super().get(key, default)
2041
+
2042
+ def __init__(__self__, *,
2043
+ potential_nodes: Optional[Sequence[str]] = None,
2044
+ selected_node: Optional[str] = None):
2045
+ """
2046
+ PodSchedulingContextSpec describes where resources for the Pod are needed.
2047
+ :param Sequence[str] potential_nodes: PotentialNodes lists nodes where the Pod might be able to run.
2048
+
2049
+ The size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced.
2050
+ :param str selected_node: SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use "WaitForFirstConsumer" allocation is to be attempted.
2051
+ """
2052
+ if potential_nodes is not None:
2053
+ pulumi.set(__self__, "potential_nodes", potential_nodes)
2054
+ if selected_node is not None:
2055
+ pulumi.set(__self__, "selected_node", selected_node)
2056
+
2057
+ @property
2058
+ @pulumi.getter(name="potentialNodes")
2059
+ def potential_nodes(self) -> Optional[Sequence[str]]:
2060
+ """
2061
+ PotentialNodes lists nodes where the Pod might be able to run.
2062
+
2063
+ The size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced.
2064
+ """
2065
+ return pulumi.get(self, "potential_nodes")
2066
+
2067
+ @property
2068
+ @pulumi.getter(name="selectedNode")
2069
+ def selected_node(self) -> Optional[str]:
2070
+ """
2071
+ SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use "WaitForFirstConsumer" allocation is to be attempted.
2072
+ """
2073
+ return pulumi.get(self, "selected_node")
2074
+
2075
+
2076
+ @pulumi.output_type
2077
+ class PodSchedulingContextStatus(dict):
2078
+ """
2079
+ PodSchedulingContextStatus describes where resources for the Pod can be allocated.
2080
+ """
2081
+ @staticmethod
2082
+ def __key_warning(key: str):
2083
+ suggest = None
2084
+ if key == "resourceClaims":
2085
+ suggest = "resource_claims"
2086
+
2087
+ if suggest:
2088
+ pulumi.log.warn(f"Key '{key}' not found in PodSchedulingContextStatus. Access the value via the '{suggest}' property getter instead.")
2089
+
2090
+ def __getitem__(self, key: str) -> Any:
2091
+ PodSchedulingContextStatus.__key_warning(key)
2092
+ return super().__getitem__(key)
2093
+
2094
+ def get(self, key: str, default = None) -> Any:
2095
+ PodSchedulingContextStatus.__key_warning(key)
2096
+ return super().get(key, default)
2097
+
2098
+ def __init__(__self__, *,
2099
+ resource_claims: Optional[Sequence['outputs.ResourceClaimSchedulingStatus']] = None):
2100
+ """
2101
+ PodSchedulingContextStatus describes where resources for the Pod can be allocated.
2102
+ :param Sequence['ResourceClaimSchedulingStatusArgs'] resource_claims: ResourceClaims describes resource availability for each pod.spec.resourceClaim entry where the corresponding ResourceClaim uses "WaitForFirstConsumer" allocation mode.
2103
+ """
2104
+ if resource_claims is not None:
2105
+ pulumi.set(__self__, "resource_claims", resource_claims)
2106
+
2107
+ @property
2108
+ @pulumi.getter(name="resourceClaims")
2109
+ def resource_claims(self) -> Optional[Sequence['outputs.ResourceClaimSchedulingStatus']]:
2110
+ """
2111
+ ResourceClaims describes resource availability for each pod.spec.resourceClaim entry where the corresponding ResourceClaim uses "WaitForFirstConsumer" allocation mode.
2112
+ """
2113
+ return pulumi.get(self, "resource_claims")
2114
+
2115
+
2116
+ @pulumi.output_type
2117
+ class PodSchedulingContextStatusPatch(dict):
2118
+ """
2119
+ PodSchedulingContextStatus describes where resources for the Pod can be allocated.
2120
+ """
2121
+ @staticmethod
2122
+ def __key_warning(key: str):
2123
+ suggest = None
2124
+ if key == "resourceClaims":
2125
+ suggest = "resource_claims"
2126
+
2127
+ if suggest:
2128
+ pulumi.log.warn(f"Key '{key}' not found in PodSchedulingContextStatusPatch. Access the value via the '{suggest}' property getter instead.")
2129
+
2130
+ def __getitem__(self, key: str) -> Any:
2131
+ PodSchedulingContextStatusPatch.__key_warning(key)
2132
+ return super().__getitem__(key)
2133
+
2134
+ def get(self, key: str, default = None) -> Any:
2135
+ PodSchedulingContextStatusPatch.__key_warning(key)
2136
+ return super().get(key, default)
2137
+
2138
+ def __init__(__self__, *,
2139
+ resource_claims: Optional[Sequence['outputs.ResourceClaimSchedulingStatusPatch']] = None):
2140
+ """
2141
+ PodSchedulingContextStatus describes where resources for the Pod can be allocated.
2142
+ :param Sequence['ResourceClaimSchedulingStatusPatchArgs'] resource_claims: ResourceClaims describes resource availability for each pod.spec.resourceClaim entry where the corresponding ResourceClaim uses "WaitForFirstConsumer" allocation mode.
2143
+ """
2144
+ if resource_claims is not None:
2145
+ pulumi.set(__self__, "resource_claims", resource_claims)
2146
+
2147
+ @property
2148
+ @pulumi.getter(name="resourceClaims")
2149
+ def resource_claims(self) -> Optional[Sequence['outputs.ResourceClaimSchedulingStatusPatch']]:
2150
+ """
2151
+ ResourceClaims describes resource availability for each pod.spec.resourceClaim entry where the corresponding ResourceClaim uses "WaitForFirstConsumer" allocation mode.
2152
+ """
2153
+ return pulumi.get(self, "resource_claims")
2154
+
2155
+
2156
+ @pulumi.output_type
2157
+ class ResourceClaim(dict):
2158
+ """
2159
+ ResourceClaim describes a request for access to resources in the cluster, for use by workloads. For example, if a workload needs an accelerator device with specific properties, this is how that request is expressed. The status stanza tracks whether this claim has been satisfied and what specific resources have been allocated.
2160
+
2161
+ This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
2162
+ """
2163
+ @staticmethod
2164
+ def __key_warning(key: str):
2165
+ suggest = None
2166
+ if key == "apiVersion":
2167
+ suggest = "api_version"
2168
+
2169
+ if suggest:
2170
+ pulumi.log.warn(f"Key '{key}' not found in ResourceClaim. Access the value via the '{suggest}' property getter instead.")
2171
+
2172
+ def __getitem__(self, key: str) -> Any:
2173
+ ResourceClaim.__key_warning(key)
2174
+ return super().__getitem__(key)
2175
+
2176
+ def get(self, key: str, default = None) -> Any:
2177
+ ResourceClaim.__key_warning(key)
2178
+ return super().get(key, default)
2179
+
2180
+ def __init__(__self__, *,
2181
+ spec: 'outputs.ResourceClaimSpec',
2182
+ api_version: Optional[str] = None,
2183
+ kind: Optional[str] = None,
2184
+ metadata: Optional['_meta.v1.outputs.ObjectMeta'] = None,
2185
+ status: Optional['outputs.ResourceClaimStatus'] = None):
2186
+ """
2187
+ ResourceClaim describes a request for access to resources in the cluster, for use by workloads. For example, if a workload needs an accelerator device with specific properties, this is how that request is expressed. The status stanza tracks whether this claim has been satisfied and what specific resources have been allocated.
2188
+
2189
+ This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
2190
+ :param 'ResourceClaimSpecArgs' spec: Spec describes what is being requested and how to configure it. The spec is immutable.
2191
+ :param str api_version: APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
2192
+ :param str kind: Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
2193
+ :param '_meta.v1.ObjectMetaArgs' metadata: Standard object metadata
2194
+ :param 'ResourceClaimStatusArgs' status: Status describes whether the claim is ready to use and what has been allocated.
2195
+ """
2196
+ pulumi.set(__self__, "spec", spec)
2197
+ if api_version is not None:
2198
+ pulumi.set(__self__, "api_version", 'resource.k8s.io/v1alpha3')
2199
+ if kind is not None:
2200
+ pulumi.set(__self__, "kind", 'ResourceClaim')
2201
+ if metadata is not None:
2202
+ pulumi.set(__self__, "metadata", metadata)
2203
+ if status is not None:
2204
+ pulumi.set(__self__, "status", status)
2205
+
2206
+ @property
2207
+ @pulumi.getter
2208
+ def spec(self) -> 'outputs.ResourceClaimSpec':
2209
+ """
2210
+ Spec describes what is being requested and how to configure it. The spec is immutable.
2211
+ """
2212
+ return pulumi.get(self, "spec")
2213
+
2214
+ @property
2215
+ @pulumi.getter(name="apiVersion")
2216
+ def api_version(self) -> Optional[str]:
2217
+ """
2218
+ APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
2219
+ """
2220
+ return pulumi.get(self, "api_version")
2221
+
2222
+ @property
2223
+ @pulumi.getter
2224
+ def kind(self) -> Optional[str]:
2225
+ """
2226
+ Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
2227
+ """
2228
+ return pulumi.get(self, "kind")
2229
+
2230
+ @property
2231
+ @pulumi.getter
2232
+ def metadata(self) -> Optional['_meta.v1.outputs.ObjectMeta']:
2233
+ """
2234
+ Standard object metadata
2235
+ """
2236
+ return pulumi.get(self, "metadata")
2237
+
2238
+ @property
2239
+ @pulumi.getter
2240
+ def status(self) -> Optional['outputs.ResourceClaimStatus']:
2241
+ """
2242
+ Status describes whether the claim is ready to use and what has been allocated.
2243
+ """
2244
+ return pulumi.get(self, "status")
2245
+
2246
+
2247
+ @pulumi.output_type
2248
+ class ResourceClaimConsumerReference(dict):
2249
+ """
2250
+ ResourceClaimConsumerReference contains enough information to let you locate the consumer of a ResourceClaim. The user must be a resource in the same namespace as the ResourceClaim.
2251
+ """
2252
+ @staticmethod
2253
+ def __key_warning(key: str):
2254
+ suggest = None
2255
+ if key == "apiGroup":
2256
+ suggest = "api_group"
2257
+
2258
+ if suggest:
2259
+ pulumi.log.warn(f"Key '{key}' not found in ResourceClaimConsumerReference. Access the value via the '{suggest}' property getter instead.")
2260
+
2261
+ def __getitem__(self, key: str) -> Any:
2262
+ ResourceClaimConsumerReference.__key_warning(key)
2263
+ return super().__getitem__(key)
2264
+
2265
+ def get(self, key: str, default = None) -> Any:
2266
+ ResourceClaimConsumerReference.__key_warning(key)
2267
+ return super().get(key, default)
2268
+
2269
+ def __init__(__self__, *,
2270
+ name: str,
2271
+ resource: str,
2272
+ uid: str,
2273
+ api_group: Optional[str] = None):
2274
+ """
2275
+ ResourceClaimConsumerReference contains enough information to let you locate the consumer of a ResourceClaim. The user must be a resource in the same namespace as the ResourceClaim.
2276
+ :param str name: Name is the name of resource being referenced.
2277
+ :param str resource: Resource is the type of resource being referenced, for example "pods".
2278
+ :param str uid: UID identifies exactly one incarnation of the resource.
2279
+ :param str api_group: APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
2280
+ """
2281
+ pulumi.set(__self__, "name", name)
2282
+ pulumi.set(__self__, "resource", resource)
2283
+ pulumi.set(__self__, "uid", uid)
2284
+ if api_group is not None:
2285
+ pulumi.set(__self__, "api_group", api_group)
2286
+
2287
+ @property
2288
+ @pulumi.getter
2289
+ def name(self) -> str:
2290
+ """
2291
+ Name is the name of resource being referenced.
2292
+ """
2293
+ return pulumi.get(self, "name")
2294
+
2295
+ @property
2296
+ @pulumi.getter
2297
+ def resource(self) -> str:
2298
+ """
2299
+ Resource is the type of resource being referenced, for example "pods".
2300
+ """
2301
+ return pulumi.get(self, "resource")
2302
+
2303
+ @property
2304
+ @pulumi.getter
2305
+ def uid(self) -> str:
2306
+ """
2307
+ UID identifies exactly one incarnation of the resource.
2308
+ """
2309
+ return pulumi.get(self, "uid")
2310
+
2311
+ @property
2312
+ @pulumi.getter(name="apiGroup")
2313
+ def api_group(self) -> Optional[str]:
2314
+ """
2315
+ APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
2316
+ """
2317
+ return pulumi.get(self, "api_group")
2318
+
2319
+
2320
+ @pulumi.output_type
2321
+ class ResourceClaimConsumerReferencePatch(dict):
2322
+ """
2323
+ ResourceClaimConsumerReference contains enough information to let you locate the consumer of a ResourceClaim. The user must be a resource in the same namespace as the ResourceClaim.
2324
+ """
2325
+ @staticmethod
2326
+ def __key_warning(key: str):
2327
+ suggest = None
2328
+ if key == "apiGroup":
2329
+ suggest = "api_group"
2330
+
2331
+ if suggest:
2332
+ pulumi.log.warn(f"Key '{key}' not found in ResourceClaimConsumerReferencePatch. Access the value via the '{suggest}' property getter instead.")
2333
+
2334
+ def __getitem__(self, key: str) -> Any:
2335
+ ResourceClaimConsumerReferencePatch.__key_warning(key)
2336
+ return super().__getitem__(key)
2337
+
2338
+ def get(self, key: str, default = None) -> Any:
2339
+ ResourceClaimConsumerReferencePatch.__key_warning(key)
2340
+ return super().get(key, default)
2341
+
2342
+ def __init__(__self__, *,
2343
+ api_group: Optional[str] = None,
2344
+ name: Optional[str] = None,
2345
+ resource: Optional[str] = None,
2346
+ uid: Optional[str] = None):
2347
+ """
2348
+ ResourceClaimConsumerReference contains enough information to let you locate the consumer of a ResourceClaim. The user must be a resource in the same namespace as the ResourceClaim.
2349
+ :param str api_group: APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
2350
+ :param str name: Name is the name of resource being referenced.
2351
+ :param str resource: Resource is the type of resource being referenced, for example "pods".
2352
+ :param str uid: UID identifies exactly one incarnation of the resource.
2353
+ """
2354
+ if api_group is not None:
2355
+ pulumi.set(__self__, "api_group", api_group)
2356
+ if name is not None:
2357
+ pulumi.set(__self__, "name", name)
2358
+ if resource is not None:
2359
+ pulumi.set(__self__, "resource", resource)
2360
+ if uid is not None:
2361
+ pulumi.set(__self__, "uid", uid)
2362
+
2363
+ @property
2364
+ @pulumi.getter(name="apiGroup")
2365
+ def api_group(self) -> Optional[str]:
2366
+ """
2367
+ APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
2368
+ """
2369
+ return pulumi.get(self, "api_group")
2370
+
2371
+ @property
2372
+ @pulumi.getter
2373
+ def name(self) -> Optional[str]:
2374
+ """
2375
+ Name is the name of resource being referenced.
2376
+ """
2377
+ return pulumi.get(self, "name")
2378
+
2379
+ @property
2380
+ @pulumi.getter
2381
+ def resource(self) -> Optional[str]:
2382
+ """
2383
+ Resource is the type of resource being referenced, for example "pods".
2384
+ """
2385
+ return pulumi.get(self, "resource")
2386
+
2387
+ @property
2388
+ @pulumi.getter
2389
+ def uid(self) -> Optional[str]:
2390
+ """
2391
+ UID identifies exactly one incarnation of the resource.
2392
+ """
2393
+ return pulumi.get(self, "uid")
2394
+
2395
+
2396
+ @pulumi.output_type
2397
+ class ResourceClaimSchedulingStatus(dict):
2398
+ """
2399
+ ResourceClaimSchedulingStatus contains information about one particular ResourceClaim with "WaitForFirstConsumer" allocation mode.
2400
+ """
2401
+ @staticmethod
2402
+ def __key_warning(key: str):
2403
+ suggest = None
2404
+ if key == "unsuitableNodes":
2405
+ suggest = "unsuitable_nodes"
2406
+
2407
+ if suggest:
2408
+ pulumi.log.warn(f"Key '{key}' not found in ResourceClaimSchedulingStatus. Access the value via the '{suggest}' property getter instead.")
2409
+
2410
+ def __getitem__(self, key: str) -> Any:
2411
+ ResourceClaimSchedulingStatus.__key_warning(key)
2412
+ return super().__getitem__(key)
2413
+
2414
+ def get(self, key: str, default = None) -> Any:
2415
+ ResourceClaimSchedulingStatus.__key_warning(key)
2416
+ return super().get(key, default)
2417
+
2418
+ def __init__(__self__, *,
2419
+ name: str,
2420
+ unsuitable_nodes: Optional[Sequence[str]] = None):
2421
+ """
2422
+ ResourceClaimSchedulingStatus contains information about one particular ResourceClaim with "WaitForFirstConsumer" allocation mode.
2423
+ :param str name: Name matches the pod.spec.resourceClaims[*].Name field.
2424
+ :param Sequence[str] unsuitable_nodes: UnsuitableNodes lists nodes that the ResourceClaim cannot be allocated for.
2425
+
2426
+ The size of this field is limited to 128, the same as for PodSchedulingSpec.PotentialNodes. This may get increased in the future, but not reduced.
2427
+ """
2428
+ pulumi.set(__self__, "name", name)
2429
+ if unsuitable_nodes is not None:
2430
+ pulumi.set(__self__, "unsuitable_nodes", unsuitable_nodes)
2431
+
2432
+ @property
2433
+ @pulumi.getter
2434
+ def name(self) -> str:
2435
+ """
2436
+ Name matches the pod.spec.resourceClaims[*].Name field.
2437
+ """
2438
+ return pulumi.get(self, "name")
2439
+
2440
+ @property
2441
+ @pulumi.getter(name="unsuitableNodes")
2442
+ def unsuitable_nodes(self) -> Optional[Sequence[str]]:
2443
+ """
2444
+ UnsuitableNodes lists nodes that the ResourceClaim cannot be allocated for.
2445
+
2446
+ The size of this field is limited to 128, the same as for PodSchedulingSpec.PotentialNodes. This may get increased in the future, but not reduced.
2447
+ """
2448
+ return pulumi.get(self, "unsuitable_nodes")
2449
+
2450
+
2451
+ @pulumi.output_type
2452
+ class ResourceClaimSchedulingStatusPatch(dict):
2453
+ """
2454
+ ResourceClaimSchedulingStatus contains information about one particular ResourceClaim with "WaitForFirstConsumer" allocation mode.
2455
+ """
2456
+ @staticmethod
2457
+ def __key_warning(key: str):
2458
+ suggest = None
2459
+ if key == "unsuitableNodes":
2460
+ suggest = "unsuitable_nodes"
2461
+
2462
+ if suggest:
2463
+ pulumi.log.warn(f"Key '{key}' not found in ResourceClaimSchedulingStatusPatch. Access the value via the '{suggest}' property getter instead.")
2464
+
2465
+ def __getitem__(self, key: str) -> Any:
2466
+ ResourceClaimSchedulingStatusPatch.__key_warning(key)
2467
+ return super().__getitem__(key)
2468
+
2469
+ def get(self, key: str, default = None) -> Any:
2470
+ ResourceClaimSchedulingStatusPatch.__key_warning(key)
2471
+ return super().get(key, default)
2472
+
2473
+ def __init__(__self__, *,
2474
+ name: Optional[str] = None,
2475
+ unsuitable_nodes: Optional[Sequence[str]] = None):
2476
+ """
2477
+ ResourceClaimSchedulingStatus contains information about one particular ResourceClaim with "WaitForFirstConsumer" allocation mode.
2478
+ :param str name: Name matches the pod.spec.resourceClaims[*].Name field.
2479
+ :param Sequence[str] unsuitable_nodes: UnsuitableNodes lists nodes that the ResourceClaim cannot be allocated for.
2480
+
2481
+ The size of this field is limited to 128, the same as for PodSchedulingSpec.PotentialNodes. This may get increased in the future, but not reduced.
2482
+ """
2483
+ if name is not None:
2484
+ pulumi.set(__self__, "name", name)
2485
+ if unsuitable_nodes is not None:
2486
+ pulumi.set(__self__, "unsuitable_nodes", unsuitable_nodes)
2487
+
2488
+ @property
2489
+ @pulumi.getter
2490
+ def name(self) -> Optional[str]:
2491
+ """
2492
+ Name matches the pod.spec.resourceClaims[*].Name field.
2493
+ """
2494
+ return pulumi.get(self, "name")
2495
+
2496
+ @property
2497
+ @pulumi.getter(name="unsuitableNodes")
2498
+ def unsuitable_nodes(self) -> Optional[Sequence[str]]:
2499
+ """
2500
+ UnsuitableNodes lists nodes that the ResourceClaim cannot be allocated for.
2501
+
2502
+ The size of this field is limited to 128, the same as for PodSchedulingSpec.PotentialNodes. This may get increased in the future, but not reduced.
2503
+ """
2504
+ return pulumi.get(self, "unsuitable_nodes")
2505
+
2506
+
2507
+ @pulumi.output_type
2508
+ class ResourceClaimSpec(dict):
2509
+ """
2510
+ ResourceClaimSpec defines what is being requested in a ResourceClaim and how to configure it.
2511
+ """
2512
+ def __init__(__self__, *,
2513
+ controller: Optional[str] = None,
2514
+ devices: Optional['outputs.DeviceClaim'] = None):
2515
+ """
2516
+ ResourceClaimSpec defines what is being requested in a ResourceClaim and how to configure it.
2517
+ :param str controller: Controller is the name of the DRA driver that is meant to handle allocation of this claim. If empty, allocation is handled by the scheduler while scheduling a pod.
2518
+
2519
+ Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.
2520
+
2521
+ This is an alpha field and requires enabling the DRAControlPlaneController feature gate.
2522
+ :param 'DeviceClaimArgs' devices: Devices defines how to request devices.
2523
+ """
2524
+ if controller is not None:
2525
+ pulumi.set(__self__, "controller", controller)
2526
+ if devices is not None:
2527
+ pulumi.set(__self__, "devices", devices)
2528
+
2529
+ @property
2530
+ @pulumi.getter
2531
+ def controller(self) -> Optional[str]:
2532
+ """
2533
+ Controller is the name of the DRA driver that is meant to handle allocation of this claim. If empty, allocation is handled by the scheduler while scheduling a pod.
2534
+
2535
+ Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.
2536
+
2537
+ This is an alpha field and requires enabling the DRAControlPlaneController feature gate.
2538
+ """
2539
+ return pulumi.get(self, "controller")
2540
+
2541
+ @property
2542
+ @pulumi.getter
2543
+ def devices(self) -> Optional['outputs.DeviceClaim']:
2544
+ """
2545
+ Devices defines how to request devices.
2546
+ """
2547
+ return pulumi.get(self, "devices")
2548
+
2549
+
2550
+ @pulumi.output_type
2551
+ class ResourceClaimSpecPatch(dict):
2552
+ """
2553
+ ResourceClaimSpec defines what is being requested in a ResourceClaim and how to configure it.
2554
+ """
2555
+ def __init__(__self__, *,
2556
+ controller: Optional[str] = None,
2557
+ devices: Optional['outputs.DeviceClaimPatch'] = None):
2558
+ """
2559
+ ResourceClaimSpec defines what is being requested in a ResourceClaim and how to configure it.
2560
+ :param str controller: Controller is the name of the DRA driver that is meant to handle allocation of this claim. If empty, allocation is handled by the scheduler while scheduling a pod.
2561
+
2562
+ Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.
2563
+
2564
+ This is an alpha field and requires enabling the DRAControlPlaneController feature gate.
2565
+ :param 'DeviceClaimPatchArgs' devices: Devices defines how to request devices.
2566
+ """
2567
+ if controller is not None:
2568
+ pulumi.set(__self__, "controller", controller)
2569
+ if devices is not None:
2570
+ pulumi.set(__self__, "devices", devices)
2571
+
2572
+ @property
2573
+ @pulumi.getter
2574
+ def controller(self) -> Optional[str]:
2575
+ """
2576
+ Controller is the name of the DRA driver that is meant to handle allocation of this claim. If empty, allocation is handled by the scheduler while scheduling a pod.
2577
+
2578
+ Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.
2579
+
2580
+ This is an alpha field and requires enabling the DRAControlPlaneController feature gate.
2581
+ """
2582
+ return pulumi.get(self, "controller")
2583
+
2584
+ @property
2585
+ @pulumi.getter
2586
+ def devices(self) -> Optional['outputs.DeviceClaimPatch']:
2587
+ """
2588
+ Devices defines how to request devices.
2589
+ """
2590
+ return pulumi.get(self, "devices")
2591
+
2592
+
2593
+ @pulumi.output_type
2594
+ class ResourceClaimStatus(dict):
2595
+ """
2596
+ ResourceClaimStatus tracks whether the resource has been allocated and what the result of that was.
2597
+ """
2598
+ @staticmethod
2599
+ def __key_warning(key: str):
2600
+ suggest = None
2601
+ if key == "deallocationRequested":
2602
+ suggest = "deallocation_requested"
2603
+ elif key == "reservedFor":
2604
+ suggest = "reserved_for"
2605
+
2606
+ if suggest:
2607
+ pulumi.log.warn(f"Key '{key}' not found in ResourceClaimStatus. Access the value via the '{suggest}' property getter instead.")
2608
+
2609
+ def __getitem__(self, key: str) -> Any:
2610
+ ResourceClaimStatus.__key_warning(key)
2611
+ return super().__getitem__(key)
2612
+
2613
+ def get(self, key: str, default = None) -> Any:
2614
+ ResourceClaimStatus.__key_warning(key)
2615
+ return super().get(key, default)
2616
+
2617
+ def __init__(__self__, *,
2618
+ allocation: Optional['outputs.AllocationResult'] = None,
2619
+ deallocation_requested: Optional[bool] = None,
2620
+ reserved_for: Optional[Sequence['outputs.ResourceClaimConsumerReference']] = None):
2621
+ """
2622
+ ResourceClaimStatus tracks whether the resource has been allocated and what the result of that was.
2623
+ :param 'AllocationResultArgs' allocation: Allocation is set once the claim has been allocated successfully.
2624
+ :param bool deallocation_requested: Indicates that a claim is to be deallocated. While this is set, no new consumers may be added to ReservedFor.
2625
+
2626
+ This is only used if the claim needs to be deallocated by a DRA driver. That driver then must deallocate this claim and reset the field together with clearing the Allocation field.
2627
+
2628
+ This is an alpha field and requires enabling the DRAControlPlaneController feature gate.
2629
+ :param Sequence['ResourceClaimConsumerReferenceArgs'] reserved_for: ReservedFor indicates which entities are currently allowed to use the claim. A Pod which references a ResourceClaim which is not reserved for that Pod will not be started. A claim that is in use or might be in use because it has been reserved must not get deallocated.
2630
+
2631
+ In a cluster with multiple scheduler instances, two pods might get scheduled concurrently by different schedulers. When they reference the same ResourceClaim which already has reached its maximum number of consumers, only one pod can be scheduled.
2632
+
2633
+ Both schedulers try to add their pod to the claim.status.reservedFor field, but only the update that reaches the API server first gets stored. The other one fails with an error and the scheduler which issued it knows that it must put the pod back into the queue, waiting for the ResourceClaim to become usable again.
2634
+
2635
+ There can be at most 32 such reservations. This may get increased in the future, but not reduced.
2636
+ """
2637
+ if allocation is not None:
2638
+ pulumi.set(__self__, "allocation", allocation)
2639
+ if deallocation_requested is not None:
2640
+ pulumi.set(__self__, "deallocation_requested", deallocation_requested)
2641
+ if reserved_for is not None:
2642
+ pulumi.set(__self__, "reserved_for", reserved_for)
2643
+
2644
+ @property
2645
+ @pulumi.getter
2646
+ def allocation(self) -> Optional['outputs.AllocationResult']:
2647
+ """
2648
+ Allocation is set once the claim has been allocated successfully.
2649
+ """
2650
+ return pulumi.get(self, "allocation")
2651
+
2652
+ @property
2653
+ @pulumi.getter(name="deallocationRequested")
2654
+ def deallocation_requested(self) -> Optional[bool]:
2655
+ """
2656
+ Indicates that a claim is to be deallocated. While this is set, no new consumers may be added to ReservedFor.
2657
+
2658
+ This is only used if the claim needs to be deallocated by a DRA driver. That driver then must deallocate this claim and reset the field together with clearing the Allocation field.
2659
+
2660
+ This is an alpha field and requires enabling the DRAControlPlaneController feature gate.
2661
+ """
2662
+ return pulumi.get(self, "deallocation_requested")
2663
+
2664
+ @property
2665
+ @pulumi.getter(name="reservedFor")
2666
+ def reserved_for(self) -> Optional[Sequence['outputs.ResourceClaimConsumerReference']]:
2667
+ """
2668
+ ReservedFor indicates which entities are currently allowed to use the claim. A Pod which references a ResourceClaim which is not reserved for that Pod will not be started. A claim that is in use or might be in use because it has been reserved must not get deallocated.
2669
+
2670
+ In a cluster with multiple scheduler instances, two pods might get scheduled concurrently by different schedulers. When they reference the same ResourceClaim which already has reached its maximum number of consumers, only one pod can be scheduled.
2671
+
2672
+ Both schedulers try to add their pod to the claim.status.reservedFor field, but only the update that reaches the API server first gets stored. The other one fails with an error and the scheduler which issued it knows that it must put the pod back into the queue, waiting for the ResourceClaim to become usable again.
2673
+
2674
+ There can be at most 32 such reservations. This may get increased in the future, but not reduced.
2675
+ """
2676
+ return pulumi.get(self, "reserved_for")
2677
+
2678
+
2679
+ @pulumi.output_type
2680
+ class ResourceClaimStatusPatch(dict):
2681
+ """
2682
+ ResourceClaimStatus tracks whether the resource has been allocated and what the result of that was.
2683
+ """
2684
+ @staticmethod
2685
+ def __key_warning(key: str):
2686
+ suggest = None
2687
+ if key == "deallocationRequested":
2688
+ suggest = "deallocation_requested"
2689
+ elif key == "reservedFor":
2690
+ suggest = "reserved_for"
2691
+
2692
+ if suggest:
2693
+ pulumi.log.warn(f"Key '{key}' not found in ResourceClaimStatusPatch. Access the value via the '{suggest}' property getter instead.")
2694
+
2695
+ def __getitem__(self, key: str) -> Any:
2696
+ ResourceClaimStatusPatch.__key_warning(key)
2697
+ return super().__getitem__(key)
2698
+
2699
+ def get(self, key: str, default = None) -> Any:
2700
+ ResourceClaimStatusPatch.__key_warning(key)
2701
+ return super().get(key, default)
2702
+
2703
+ def __init__(__self__, *,
2704
+ allocation: Optional['outputs.AllocationResultPatch'] = None,
2705
+ deallocation_requested: Optional[bool] = None,
2706
+ reserved_for: Optional[Sequence['outputs.ResourceClaimConsumerReferencePatch']] = None):
2707
+ """
2708
+ ResourceClaimStatus tracks whether the resource has been allocated and what the result of that was.
2709
+ :param 'AllocationResultPatchArgs' allocation: Allocation is set once the claim has been allocated successfully.
2710
+ :param bool deallocation_requested: Indicates that a claim is to be deallocated. While this is set, no new consumers may be added to ReservedFor.
2711
+
2712
+ This is only used if the claim needs to be deallocated by a DRA driver. That driver then must deallocate this claim and reset the field together with clearing the Allocation field.
2713
+
2714
+ This is an alpha field and requires enabling the DRAControlPlaneController feature gate.
2715
+ :param Sequence['ResourceClaimConsumerReferencePatchArgs'] reserved_for: ReservedFor indicates which entities are currently allowed to use the claim. A Pod which references a ResourceClaim which is not reserved for that Pod will not be started. A claim that is in use or might be in use because it has been reserved must not get deallocated.
2716
+
2717
+ In a cluster with multiple scheduler instances, two pods might get scheduled concurrently by different schedulers. When they reference the same ResourceClaim which already has reached its maximum number of consumers, only one pod can be scheduled.
2718
+
2719
+ Both schedulers try to add their pod to the claim.status.reservedFor field, but only the update that reaches the API server first gets stored. The other one fails with an error and the scheduler which issued it knows that it must put the pod back into the queue, waiting for the ResourceClaim to become usable again.
2720
+
2721
+ There can be at most 32 such reservations. This may get increased in the future, but not reduced.
2722
+ """
2723
+ if allocation is not None:
2724
+ pulumi.set(__self__, "allocation", allocation)
2725
+ if deallocation_requested is not None:
2726
+ pulumi.set(__self__, "deallocation_requested", deallocation_requested)
2727
+ if reserved_for is not None:
2728
+ pulumi.set(__self__, "reserved_for", reserved_for)
2729
+
2730
+ @property
2731
+ @pulumi.getter
2732
+ def allocation(self) -> Optional['outputs.AllocationResultPatch']:
2733
+ """
2734
+ Allocation is set once the claim has been allocated successfully.
2735
+ """
2736
+ return pulumi.get(self, "allocation")
2737
+
2738
+ @property
2739
+ @pulumi.getter(name="deallocationRequested")
2740
+ def deallocation_requested(self) -> Optional[bool]:
2741
+ """
2742
+ Indicates that a claim is to be deallocated. While this is set, no new consumers may be added to ReservedFor.
2743
+
2744
+ This is only used if the claim needs to be deallocated by a DRA driver. That driver then must deallocate this claim and reset the field together with clearing the Allocation field.
2745
+
2746
+ This is an alpha field and requires enabling the DRAControlPlaneController feature gate.
2747
+ """
2748
+ return pulumi.get(self, "deallocation_requested")
2749
+
2750
+ @property
2751
+ @pulumi.getter(name="reservedFor")
2752
+ def reserved_for(self) -> Optional[Sequence['outputs.ResourceClaimConsumerReferencePatch']]:
2753
+ """
2754
+ ReservedFor indicates which entities are currently allowed to use the claim. A Pod which references a ResourceClaim which is not reserved for that Pod will not be started. A claim that is in use or might be in use because it has been reserved must not get deallocated.
2755
+
2756
+ In a cluster with multiple scheduler instances, two pods might get scheduled concurrently by different schedulers. When they reference the same ResourceClaim which already has reached its maximum number of consumers, only one pod can be scheduled.
2757
+
2758
+ Both schedulers try to add their pod to the claim.status.reservedFor field, but only the update that reaches the API server first gets stored. The other one fails with an error and the scheduler which issued it knows that it must put the pod back into the queue, waiting for the ResourceClaim to become usable again.
2759
+
2760
+ There can be at most 32 such reservations. This may get increased in the future, but not reduced.
2761
+ """
2762
+ return pulumi.get(self, "reserved_for")
2763
+
2764
+
2765
+ @pulumi.output_type
2766
+ class ResourceClaimTemplate(dict):
2767
+ """
2768
+ ResourceClaimTemplate is used to produce ResourceClaim objects.
2769
+
2770
+ This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
2771
+ """
2772
+ @staticmethod
2773
+ def __key_warning(key: str):
2774
+ suggest = None
2775
+ if key == "apiVersion":
2776
+ suggest = "api_version"
2777
+
2778
+ if suggest:
2779
+ pulumi.log.warn(f"Key '{key}' not found in ResourceClaimTemplate. Access the value via the '{suggest}' property getter instead.")
2780
+
2781
+ def __getitem__(self, key: str) -> Any:
2782
+ ResourceClaimTemplate.__key_warning(key)
2783
+ return super().__getitem__(key)
2784
+
2785
+ def get(self, key: str, default = None) -> Any:
2786
+ ResourceClaimTemplate.__key_warning(key)
2787
+ return super().get(key, default)
2788
+
2789
+ def __init__(__self__, *,
2790
+ spec: 'outputs.ResourceClaimTemplateSpec',
2791
+ api_version: Optional[str] = None,
2792
+ kind: Optional[str] = None,
2793
+ metadata: Optional['_meta.v1.outputs.ObjectMeta'] = None):
2794
+ """
2795
+ ResourceClaimTemplate is used to produce ResourceClaim objects.
2796
+
2797
+ This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
2798
+ :param 'ResourceClaimTemplateSpecArgs' spec: Describes the ResourceClaim that is to be generated.
2799
+
2800
+ This field is immutable. A ResourceClaim will get created by the control plane for a Pod when needed and then not get updated anymore.
2801
+ :param str api_version: APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
2802
+ :param str kind: Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
2803
+ :param '_meta.v1.ObjectMetaArgs' metadata: Standard object metadata
2804
+ """
2805
+ pulumi.set(__self__, "spec", spec)
2806
+ if api_version is not None:
2807
+ pulumi.set(__self__, "api_version", 'resource.k8s.io/v1alpha3')
2808
+ if kind is not None:
2809
+ pulumi.set(__self__, "kind", 'ResourceClaimTemplate')
2810
+ if metadata is not None:
2811
+ pulumi.set(__self__, "metadata", metadata)
2812
+
2813
+ @property
2814
+ @pulumi.getter
2815
+ def spec(self) -> 'outputs.ResourceClaimTemplateSpec':
2816
+ """
2817
+ Describes the ResourceClaim that is to be generated.
2818
+
2819
+ This field is immutable. A ResourceClaim will get created by the control plane for a Pod when needed and then not get updated anymore.
2820
+ """
2821
+ return pulumi.get(self, "spec")
2822
+
2823
+ @property
2824
+ @pulumi.getter(name="apiVersion")
2825
+ def api_version(self) -> Optional[str]:
2826
+ """
2827
+ APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
2828
+ """
2829
+ return pulumi.get(self, "api_version")
2830
+
2831
+ @property
2832
+ @pulumi.getter
2833
+ def kind(self) -> Optional[str]:
2834
+ """
2835
+ Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
2836
+ """
2837
+ return pulumi.get(self, "kind")
2838
+
2839
+ @property
2840
+ @pulumi.getter
2841
+ def metadata(self) -> Optional['_meta.v1.outputs.ObjectMeta']:
2842
+ """
2843
+ Standard object metadata
2844
+ """
2845
+ return pulumi.get(self, "metadata")
2846
+
2847
+
2848
+ @pulumi.output_type
2849
+ class ResourceClaimTemplateSpec(dict):
2850
+ """
2851
+ ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim.
2852
+ """
2853
+ def __init__(__self__, *,
2854
+ spec: 'outputs.ResourceClaimSpec',
2855
+ metadata: Optional['_meta.v1.outputs.ObjectMeta'] = None):
2856
+ """
2857
+ ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim.
2858
+ :param 'ResourceClaimSpecArgs' spec: Spec for the ResourceClaim. The entire content is copied unchanged into the ResourceClaim that gets created from this template. The same fields as in a ResourceClaim are also valid here.
2859
+ :param '_meta.v1.ObjectMetaArgs' metadata: ObjectMeta may contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.
2860
+ """
2861
+ pulumi.set(__self__, "spec", spec)
2862
+ if metadata is not None:
2863
+ pulumi.set(__self__, "metadata", metadata)
2864
+
2865
+ @property
2866
+ @pulumi.getter
2867
+ def spec(self) -> 'outputs.ResourceClaimSpec':
2868
+ """
2869
+ Spec for the ResourceClaim. The entire content is copied unchanged into the ResourceClaim that gets created from this template. The same fields as in a ResourceClaim are also valid here.
2870
+ """
2871
+ return pulumi.get(self, "spec")
2872
+
2873
+ @property
2874
+ @pulumi.getter
2875
+ def metadata(self) -> Optional['_meta.v1.outputs.ObjectMeta']:
2876
+ """
2877
+ ObjectMeta may contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.
2878
+ """
2879
+ return pulumi.get(self, "metadata")
2880
+
2881
+
2882
+ @pulumi.output_type
2883
+ class ResourceClaimTemplateSpecPatch(dict):
2884
+ """
2885
+ ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim.
2886
+ """
2887
+ def __init__(__self__, *,
2888
+ metadata: Optional['_meta.v1.outputs.ObjectMetaPatch'] = None,
2889
+ spec: Optional['outputs.ResourceClaimSpecPatch'] = None):
2890
+ """
2891
+ ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim.
2892
+ :param '_meta.v1.ObjectMetaPatchArgs' metadata: ObjectMeta may contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.
2893
+ :param 'ResourceClaimSpecPatchArgs' spec: Spec for the ResourceClaim. The entire content is copied unchanged into the ResourceClaim that gets created from this template. The same fields as in a ResourceClaim are also valid here.
2894
+ """
2895
+ if metadata is not None:
2896
+ pulumi.set(__self__, "metadata", metadata)
2897
+ if spec is not None:
2898
+ pulumi.set(__self__, "spec", spec)
2899
+
2900
+ @property
2901
+ @pulumi.getter
2902
+ def metadata(self) -> Optional['_meta.v1.outputs.ObjectMetaPatch']:
2903
+ """
2904
+ ObjectMeta may contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.
2905
+ """
2906
+ return pulumi.get(self, "metadata")
2907
+
2908
+ @property
2909
+ @pulumi.getter
2910
+ def spec(self) -> Optional['outputs.ResourceClaimSpecPatch']:
2911
+ """
2912
+ Spec for the ResourceClaim. The entire content is copied unchanged into the ResourceClaim that gets created from this template. The same fields as in a ResourceClaim are also valid here.
2913
+ """
2914
+ return pulumi.get(self, "spec")
2915
+
2916
+
2917
+ @pulumi.output_type
2918
+ class ResourcePool(dict):
2919
+ """
2920
+ ResourcePool describes the pool that ResourceSlices belong to.
2921
+ """
2922
+ @staticmethod
2923
+ def __key_warning(key: str):
2924
+ suggest = None
2925
+ if key == "resourceSliceCount":
2926
+ suggest = "resource_slice_count"
2927
+
2928
+ if suggest:
2929
+ pulumi.log.warn(f"Key '{key}' not found in ResourcePool. Access the value via the '{suggest}' property getter instead.")
2930
+
2931
+ def __getitem__(self, key: str) -> Any:
2932
+ ResourcePool.__key_warning(key)
2933
+ return super().__getitem__(key)
2934
+
2935
+ def get(self, key: str, default = None) -> Any:
2936
+ ResourcePool.__key_warning(key)
2937
+ return super().get(key, default)
2938
+
2939
+ def __init__(__self__, *,
2940
+ generation: int,
2941
+ name: str,
2942
+ resource_slice_count: int):
2943
+ """
2944
+ ResourcePool describes the pool that ResourceSlices belong to.
2945
+ :param int generation: Generation tracks the change in a pool over time. Whenever a driver changes something about one or more of the resources in a pool, it must change the generation in all ResourceSlices which are part of that pool. Consumers of ResourceSlices should only consider resources from the pool with the highest generation number. The generation may be reset by drivers, which should be fine for consumers, assuming that all ResourceSlices in a pool are updated to match or deleted.
2946
+
2947
+ Combined with ResourceSliceCount, this mechanism enables consumers to detect pools which are comprised of multiple ResourceSlices and are in an incomplete state.
2948
+ :param str name: Name is used to identify the pool. For node-local devices, this is often the node name, but this is not required.
2949
+
2950
+ It must not be longer than 253 characters and must consist of one or more DNS sub-domains separated by slashes. This field is immutable.
2951
+ :param int resource_slice_count: ResourceSliceCount is the total number of ResourceSlices in the pool at this generation number. Must be greater than zero.
2952
+
2953
+ Consumers can use this to check whether they have seen all ResourceSlices belonging to the same pool.
2954
+ """
2955
+ pulumi.set(__self__, "generation", generation)
2956
+ pulumi.set(__self__, "name", name)
2957
+ pulumi.set(__self__, "resource_slice_count", resource_slice_count)
2958
+
2959
+ @property
2960
+ @pulumi.getter
2961
+ def generation(self) -> int:
2962
+ """
2963
+ Generation tracks the change in a pool over time. Whenever a driver changes something about one or more of the resources in a pool, it must change the generation in all ResourceSlices which are part of that pool. Consumers of ResourceSlices should only consider resources from the pool with the highest generation number. The generation may be reset by drivers, which should be fine for consumers, assuming that all ResourceSlices in a pool are updated to match or deleted.
2964
+
2965
+ Combined with ResourceSliceCount, this mechanism enables consumers to detect pools which are comprised of multiple ResourceSlices and are in an incomplete state.
2966
+ """
2967
+ return pulumi.get(self, "generation")
2968
+
2969
+ @property
2970
+ @pulumi.getter
2971
+ def name(self) -> str:
2972
+ """
2973
+ Name is used to identify the pool. For node-local devices, this is often the node name, but this is not required.
2974
+
2975
+ It must not be longer than 253 characters and must consist of one or more DNS sub-domains separated by slashes. This field is immutable.
2976
+ """
2977
+ return pulumi.get(self, "name")
2978
+
2979
+ @property
2980
+ @pulumi.getter(name="resourceSliceCount")
2981
+ def resource_slice_count(self) -> int:
2982
+ """
2983
+ ResourceSliceCount is the total number of ResourceSlices in the pool at this generation number. Must be greater than zero.
2984
+
2985
+ Consumers can use this to check whether they have seen all ResourceSlices belonging to the same pool.
2986
+ """
2987
+ return pulumi.get(self, "resource_slice_count")
2988
+
2989
+
2990
+ @pulumi.output_type
2991
+ class ResourcePoolPatch(dict):
2992
+ """
2993
+ ResourcePool describes the pool that ResourceSlices belong to.
2994
+ """
2995
+ @staticmethod
2996
+ def __key_warning(key: str):
2997
+ suggest = None
2998
+ if key == "resourceSliceCount":
2999
+ suggest = "resource_slice_count"
3000
+
3001
+ if suggest:
3002
+ pulumi.log.warn(f"Key '{key}' not found in ResourcePoolPatch. Access the value via the '{suggest}' property getter instead.")
3003
+
3004
+ def __getitem__(self, key: str) -> Any:
3005
+ ResourcePoolPatch.__key_warning(key)
3006
+ return super().__getitem__(key)
3007
+
3008
+ def get(self, key: str, default = None) -> Any:
3009
+ ResourcePoolPatch.__key_warning(key)
3010
+ return super().get(key, default)
3011
+
3012
+ def __init__(__self__, *,
3013
+ generation: Optional[int] = None,
3014
+ name: Optional[str] = None,
3015
+ resource_slice_count: Optional[int] = None):
3016
+ """
3017
+ ResourcePool describes the pool that ResourceSlices belong to.
3018
+ :param int generation: Generation tracks the change in a pool over time. Whenever a driver changes something about one or more of the resources in a pool, it must change the generation in all ResourceSlices which are part of that pool. Consumers of ResourceSlices should only consider resources from the pool with the highest generation number. The generation may be reset by drivers, which should be fine for consumers, assuming that all ResourceSlices in a pool are updated to match or deleted.
3019
+
3020
+ Combined with ResourceSliceCount, this mechanism enables consumers to detect pools which are comprised of multiple ResourceSlices and are in an incomplete state.
3021
+ :param str name: Name is used to identify the pool. For node-local devices, this is often the node name, but this is not required.
3022
+
3023
+ It must not be longer than 253 characters and must consist of one or more DNS sub-domains separated by slashes. This field is immutable.
3024
+ :param int resource_slice_count: ResourceSliceCount is the total number of ResourceSlices in the pool at this generation number. Must be greater than zero.
3025
+
3026
+ Consumers can use this to check whether they have seen all ResourceSlices belonging to the same pool.
3027
+ """
3028
+ if generation is not None:
3029
+ pulumi.set(__self__, "generation", generation)
3030
+ if name is not None:
3031
+ pulumi.set(__self__, "name", name)
3032
+ if resource_slice_count is not None:
3033
+ pulumi.set(__self__, "resource_slice_count", resource_slice_count)
3034
+
3035
+ @property
3036
+ @pulumi.getter
3037
+ def generation(self) -> Optional[int]:
3038
+ """
3039
+ Generation tracks the change in a pool over time. Whenever a driver changes something about one or more of the resources in a pool, it must change the generation in all ResourceSlices which are part of that pool. Consumers of ResourceSlices should only consider resources from the pool with the highest generation number. The generation may be reset by drivers, which should be fine for consumers, assuming that all ResourceSlices in a pool are updated to match or deleted.
3040
+
3041
+ Combined with ResourceSliceCount, this mechanism enables consumers to detect pools which are comprised of multiple ResourceSlices and are in an incomplete state.
3042
+ """
3043
+ return pulumi.get(self, "generation")
3044
+
3045
+ @property
3046
+ @pulumi.getter
3047
+ def name(self) -> Optional[str]:
3048
+ """
3049
+ Name is used to identify the pool. For node-local devices, this is often the node name, but this is not required.
3050
+
3051
+ It must not be longer than 253 characters and must consist of one or more DNS sub-domains separated by slashes. This field is immutable.
3052
+ """
3053
+ return pulumi.get(self, "name")
3054
+
3055
+ @property
3056
+ @pulumi.getter(name="resourceSliceCount")
3057
+ def resource_slice_count(self) -> Optional[int]:
3058
+ """
3059
+ ResourceSliceCount is the total number of ResourceSlices in the pool at this generation number. Must be greater than zero.
3060
+
3061
+ Consumers can use this to check whether they have seen all ResourceSlices belonging to the same pool.
3062
+ """
3063
+ return pulumi.get(self, "resource_slice_count")
3064
+
3065
+
3066
+ @pulumi.output_type
3067
+ class ResourceSliceSpec(dict):
3068
+ """
3069
+ ResourceSliceSpec contains the information published by the driver in one ResourceSlice.
3070
+ """
3071
+ @staticmethod
3072
+ def __key_warning(key: str):
3073
+ suggest = None
3074
+ if key == "allNodes":
3075
+ suggest = "all_nodes"
3076
+ elif key == "nodeName":
3077
+ suggest = "node_name"
3078
+ elif key == "nodeSelector":
3079
+ suggest = "node_selector"
3080
+
3081
+ if suggest:
3082
+ pulumi.log.warn(f"Key '{key}' not found in ResourceSliceSpec. Access the value via the '{suggest}' property getter instead.")
3083
+
3084
+ def __getitem__(self, key: str) -> Any:
3085
+ ResourceSliceSpec.__key_warning(key)
3086
+ return super().__getitem__(key)
3087
+
3088
+ def get(self, key: str, default = None) -> Any:
3089
+ ResourceSliceSpec.__key_warning(key)
3090
+ return super().get(key, default)
3091
+
3092
+ def __init__(__self__, *,
3093
+ driver: str,
3094
+ pool: 'outputs.ResourcePool',
3095
+ all_nodes: Optional[bool] = None,
3096
+ devices: Optional[Sequence['outputs.Device']] = None,
3097
+ node_name: Optional[str] = None,
3098
+ node_selector: Optional['_core.v1.outputs.NodeSelector'] = None):
3099
+ """
3100
+ ResourceSliceSpec contains the information published by the driver in one ResourceSlice.
3101
+ :param str driver: Driver identifies the DRA driver providing the capacity information. A field selector can be used to list only ResourceSlice objects with a certain driver name.
3102
+
3103
+ Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. This field is immutable.
3104
+ :param 'ResourcePoolArgs' pool: Pool describes the pool that this ResourceSlice belongs to.
3105
+ :param bool all_nodes: AllNodes indicates that all nodes have access to the resources in the pool.
3106
+
3107
+ Exactly one of NodeName, NodeSelector and AllNodes must be set.
3108
+ :param Sequence['DeviceArgs'] devices: Devices lists some or all of the devices in this pool.
3109
+
3110
+ Must not have more than 128 entries.
3111
+ :param str node_name: NodeName identifies the node which provides the resources in this pool. A field selector can be used to list only ResourceSlice objects belonging to a certain node.
3112
+
3113
+ This field can be used to limit access from nodes to ResourceSlices with the same node name. It also indicates to autoscalers that adding new nodes of the same type as some old node might also make new resources available.
3114
+
3115
+ Exactly one of NodeName, NodeSelector and AllNodes must be set. This field is immutable.
3116
+ :param '_core.v1.NodeSelectorArgs' node_selector: NodeSelector defines which nodes have access to the resources in the pool, when that pool is not limited to a single node.
3117
+
3118
+ Must use exactly one term.
3119
+
3120
+ Exactly one of NodeName, NodeSelector and AllNodes must be set.
3121
+ """
3122
+ pulumi.set(__self__, "driver", driver)
3123
+ pulumi.set(__self__, "pool", pool)
3124
+ if all_nodes is not None:
3125
+ pulumi.set(__self__, "all_nodes", all_nodes)
3126
+ if devices is not None:
3127
+ pulumi.set(__self__, "devices", devices)
3128
+ if node_name is not None:
3129
+ pulumi.set(__self__, "node_name", node_name)
3130
+ if node_selector is not None:
3131
+ pulumi.set(__self__, "node_selector", node_selector)
3132
+
3133
+ @property
3134
+ @pulumi.getter
3135
+ def driver(self) -> str:
3136
+ """
3137
+ Driver identifies the DRA driver providing the capacity information. A field selector can be used to list only ResourceSlice objects with a certain driver name.
3138
+
3139
+ Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. This field is immutable.
3140
+ """
3141
+ return pulumi.get(self, "driver")
3142
+
3143
+ @property
3144
+ @pulumi.getter
3145
+ def pool(self) -> 'outputs.ResourcePool':
3146
+ """
3147
+ Pool describes the pool that this ResourceSlice belongs to.
3148
+ """
3149
+ return pulumi.get(self, "pool")
3150
+
3151
+ @property
3152
+ @pulumi.getter(name="allNodes")
3153
+ def all_nodes(self) -> Optional[bool]:
3154
+ """
3155
+ AllNodes indicates that all nodes have access to the resources in the pool.
3156
+
3157
+ Exactly one of NodeName, NodeSelector and AllNodes must be set.
3158
+ """
3159
+ return pulumi.get(self, "all_nodes")
3160
+
3161
+ @property
3162
+ @pulumi.getter
3163
+ def devices(self) -> Optional[Sequence['outputs.Device']]:
3164
+ """
3165
+ Devices lists some or all of the devices in this pool.
3166
+
3167
+ Must not have more than 128 entries.
3168
+ """
3169
+ return pulumi.get(self, "devices")
3170
+
3171
+ @property
3172
+ @pulumi.getter(name="nodeName")
3173
+ def node_name(self) -> Optional[str]:
3174
+ """
3175
+ NodeName identifies the node which provides the resources in this pool. A field selector can be used to list only ResourceSlice objects belonging to a certain node.
3176
+
3177
+ This field can be used to limit access from nodes to ResourceSlices with the same node name. It also indicates to autoscalers that adding new nodes of the same type as some old node might also make new resources available.
3178
+
3179
+ Exactly one of NodeName, NodeSelector and AllNodes must be set. This field is immutable.
3180
+ """
3181
+ return pulumi.get(self, "node_name")
3182
+
3183
+ @property
3184
+ @pulumi.getter(name="nodeSelector")
3185
+ def node_selector(self) -> Optional['_core.v1.outputs.NodeSelector']:
3186
+ """
3187
+ NodeSelector defines which nodes have access to the resources in the pool, when that pool is not limited to a single node.
3188
+
3189
+ Must use exactly one term.
3190
+
3191
+ Exactly one of NodeName, NodeSelector and AllNodes must be set.
3192
+ """
3193
+ return pulumi.get(self, "node_selector")
3194
+
3195
+
3196
+ @pulumi.output_type
3197
+ class ResourceSliceSpecPatch(dict):
3198
+ """
3199
+ ResourceSliceSpec contains the information published by the driver in one ResourceSlice.
3200
+ """
3201
+ @staticmethod
3202
+ def __key_warning(key: str):
3203
+ suggest = None
3204
+ if key == "allNodes":
3205
+ suggest = "all_nodes"
3206
+ elif key == "nodeName":
3207
+ suggest = "node_name"
3208
+ elif key == "nodeSelector":
3209
+ suggest = "node_selector"
3210
+
3211
+ if suggest:
3212
+ pulumi.log.warn(f"Key '{key}' not found in ResourceSliceSpecPatch. Access the value via the '{suggest}' property getter instead.")
3213
+
3214
+ def __getitem__(self, key: str) -> Any:
3215
+ ResourceSliceSpecPatch.__key_warning(key)
3216
+ return super().__getitem__(key)
3217
+
3218
+ def get(self, key: str, default = None) -> Any:
3219
+ ResourceSliceSpecPatch.__key_warning(key)
3220
+ return super().get(key, default)
3221
+
3222
+ def __init__(__self__, *,
3223
+ all_nodes: Optional[bool] = None,
3224
+ devices: Optional[Sequence['outputs.DevicePatch']] = None,
3225
+ driver: Optional[str] = None,
3226
+ node_name: Optional[str] = None,
3227
+ node_selector: Optional['_core.v1.outputs.NodeSelectorPatch'] = None,
3228
+ pool: Optional['outputs.ResourcePoolPatch'] = None):
3229
+ """
3230
+ ResourceSliceSpec contains the information published by the driver in one ResourceSlice.
3231
+ :param bool all_nodes: AllNodes indicates that all nodes have access to the resources in the pool.
3232
+
3233
+ Exactly one of NodeName, NodeSelector and AllNodes must be set.
3234
+ :param Sequence['DevicePatchArgs'] devices: Devices lists some or all of the devices in this pool.
3235
+
3236
+ Must not have more than 128 entries.
3237
+ :param str driver: Driver identifies the DRA driver providing the capacity information. A field selector can be used to list only ResourceSlice objects with a certain driver name.
3238
+
3239
+ Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. This field is immutable.
3240
+ :param str node_name: NodeName identifies the node which provides the resources in this pool. A field selector can be used to list only ResourceSlice objects belonging to a certain node.
3241
+
3242
+ This field can be used to limit access from nodes to ResourceSlices with the same node name. It also indicates to autoscalers that adding new nodes of the same type as some old node might also make new resources available.
3243
+
3244
+ Exactly one of NodeName, NodeSelector and AllNodes must be set. This field is immutable.
3245
+ :param '_core.v1.NodeSelectorPatchArgs' node_selector: NodeSelector defines which nodes have access to the resources in the pool, when that pool is not limited to a single node.
3246
+
3247
+ Must use exactly one term.
3248
+
3249
+ Exactly one of NodeName, NodeSelector and AllNodes must be set.
3250
+ :param 'ResourcePoolPatchArgs' pool: Pool describes the pool that this ResourceSlice belongs to.
3251
+ """
3252
+ if all_nodes is not None:
3253
+ pulumi.set(__self__, "all_nodes", all_nodes)
3254
+ if devices is not None:
3255
+ pulumi.set(__self__, "devices", devices)
3256
+ if driver is not None:
3257
+ pulumi.set(__self__, "driver", driver)
3258
+ if node_name is not None:
3259
+ pulumi.set(__self__, "node_name", node_name)
3260
+ if node_selector is not None:
3261
+ pulumi.set(__self__, "node_selector", node_selector)
3262
+ if pool is not None:
3263
+ pulumi.set(__self__, "pool", pool)
3264
+
3265
+ @property
3266
+ @pulumi.getter(name="allNodes")
3267
+ def all_nodes(self) -> Optional[bool]:
3268
+ """
3269
+ AllNodes indicates that all nodes have access to the resources in the pool.
3270
+
3271
+ Exactly one of NodeName, NodeSelector and AllNodes must be set.
3272
+ """
3273
+ return pulumi.get(self, "all_nodes")
3274
+
3275
+ @property
3276
+ @pulumi.getter
3277
+ def devices(self) -> Optional[Sequence['outputs.DevicePatch']]:
3278
+ """
3279
+ Devices lists some or all of the devices in this pool.
3280
+
3281
+ Must not have more than 128 entries.
3282
+ """
3283
+ return pulumi.get(self, "devices")
3284
+
3285
+ @property
3286
+ @pulumi.getter
3287
+ def driver(self) -> Optional[str]:
3288
+ """
3289
+ Driver identifies the DRA driver providing the capacity information. A field selector can be used to list only ResourceSlice objects with a certain driver name.
3290
+
3291
+ Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. This field is immutable.
3292
+ """
3293
+ return pulumi.get(self, "driver")
3294
+
3295
+ @property
3296
+ @pulumi.getter(name="nodeName")
3297
+ def node_name(self) -> Optional[str]:
3298
+ """
3299
+ NodeName identifies the node which provides the resources in this pool. A field selector can be used to list only ResourceSlice objects belonging to a certain node.
3300
+
3301
+ This field can be used to limit access from nodes to ResourceSlices with the same node name. It also indicates to autoscalers that adding new nodes of the same type as some old node might also make new resources available.
3302
+
3303
+ Exactly one of NodeName, NodeSelector and AllNodes must be set. This field is immutable.
3304
+ """
3305
+ return pulumi.get(self, "node_name")
3306
+
3307
+ @property
3308
+ @pulumi.getter(name="nodeSelector")
3309
+ def node_selector(self) -> Optional['_core.v1.outputs.NodeSelectorPatch']:
3310
+ """
3311
+ NodeSelector defines which nodes have access to the resources in the pool, when that pool is not limited to a single node.
3312
+
3313
+ Must use exactly one term.
3314
+
3315
+ Exactly one of NodeName, NodeSelector and AllNodes must be set.
3316
+ """
3317
+ return pulumi.get(self, "node_selector")
3318
+
3319
+ @property
3320
+ @pulumi.getter
3321
+ def pool(self) -> Optional['outputs.ResourcePoolPatch']:
3322
+ """
3323
+ Pool describes the pool that this ResourceSlice belongs to.
3324
+ """
3325
+ return pulumi.get(self, "pool")
3326
+
3327
+