pulumi-kubernetes 4.23.0a1746131759__py3-none-any.whl → 4.23.0a1746138483__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.
- pulumi_kubernetes/__init__.py +36 -2
- pulumi_kubernetes/admissionregistration/v1alpha1/_inputs.py +30 -30
- pulumi_kubernetes/admissionregistration/v1alpha1/outputs.py +20 -20
- pulumi_kubernetes/apps/v1/ReplicaSetList.py +4 -4
- pulumi_kubernetes/apps/v1/_inputs.py +109 -56
- pulumi_kubernetes/apps/v1/outputs.py +129 -56
- pulumi_kubernetes/autoscaling/v2/_inputs.py +92 -12
- pulumi_kubernetes/autoscaling/v2/outputs.py +66 -10
- pulumi_kubernetes/batch/v1/_inputs.py +12 -42
- pulumi_kubernetes/batch/v1/outputs.py +8 -32
- pulumi_kubernetes/certificates/v1alpha1/ClusterTrustBundle.py +2 -0
- pulumi_kubernetes/certificates/v1alpha1/ClusterTrustBundlePatch.py +2 -0
- pulumi_kubernetes/certificates/v1beta1/ClusterTrustBundle.py +229 -0
- pulumi_kubernetes/certificates/v1beta1/ClusterTrustBundleList.py +219 -0
- pulumi_kubernetes/certificates/v1beta1/ClusterTrustBundlePatch.py +240 -0
- pulumi_kubernetes/certificates/v1beta1/__init__.py +3 -0
- pulumi_kubernetes/certificates/v1beta1/_inputs.py +292 -0
- pulumi_kubernetes/certificates/v1beta1/outputs.py +241 -0
- pulumi_kubernetes/coordination/v1alpha1/LeaseCandidate.py +1 -1
- pulumi_kubernetes/coordination/v1alpha1/LeaseCandidatePatch.py +1 -1
- pulumi_kubernetes/coordination/v1alpha2/LeaseCandidate.py +1 -1
- pulumi_kubernetes/coordination/v1alpha2/LeaseCandidatePatch.py +1 -1
- pulumi_kubernetes/coordination/v1alpha2/_inputs.py +6 -6
- pulumi_kubernetes/coordination/v1alpha2/outputs.py +4 -4
- pulumi_kubernetes/coordination/v1beta1/LeaseCandidate.py +220 -0
- pulumi_kubernetes/coordination/v1beta1/LeaseCandidateList.py +219 -0
- pulumi_kubernetes/coordination/v1beta1/LeaseCandidatePatch.py +232 -0
- pulumi_kubernetes/coordination/v1beta1/__init__.py +3 -0
- pulumi_kubernetes/coordination/v1beta1/_inputs.py +371 -0
- pulumi_kubernetes/coordination/v1beta1/outputs.py +292 -0
- pulumi_kubernetes/core/v1/Endpoints.py +8 -0
- pulumi_kubernetes/core/v1/EndpointsList.py +2 -2
- pulumi_kubernetes/core/v1/EndpointsPatch.py +8 -0
- pulumi_kubernetes/core/v1/_inputs.py +240 -66
- pulumi_kubernetes/core/v1/outputs.py +251 -51
- pulumi_kubernetes/discovery/v1/EndpointSlice.py +10 -10
- pulumi_kubernetes/discovery/v1/EndpointSlicePatch.py +10 -10
- pulumi_kubernetes/discovery/v1/_inputs.py +159 -44
- pulumi_kubernetes/discovery/v1/outputs.py +107 -32
- pulumi_kubernetes/networking/v1/IPAddress.py +220 -0
- pulumi_kubernetes/networking/v1/IPAddressList.py +219 -0
- pulumi_kubernetes/networking/v1/IPAddressPatch.py +232 -0
- pulumi_kubernetes/networking/v1/ServiceCIDR.py +230 -0
- pulumi_kubernetes/networking/v1/ServiceCIDRList.py +219 -0
- pulumi_kubernetes/networking/v1/ServiceCIDRPatch.py +242 -0
- pulumi_kubernetes/networking/v1/__init__.py +6 -0
- pulumi_kubernetes/networking/v1/_inputs.py +599 -0
- pulumi_kubernetes/networking/v1/outputs.py +461 -0
- pulumi_kubernetes/networking/v1alpha1/IPAddress.py +1 -1
- pulumi_kubernetes/networking/v1alpha1/IPAddressPatch.py +1 -1
- pulumi_kubernetes/networking/v1alpha1/ServiceCIDR.py +1 -1
- pulumi_kubernetes/networking/v1alpha1/ServiceCIDRPatch.py +1 -1
- pulumi_kubernetes/networking/v1beta1/IPAddress.py +1 -1
- pulumi_kubernetes/networking/v1beta1/IPAddressPatch.py +1 -1
- pulumi_kubernetes/networking/v1beta1/ServiceCIDR.py +1 -1
- pulumi_kubernetes/networking/v1beta1/ServiceCIDRPatch.py +1 -1
- pulumi_kubernetes/policy/v1/_inputs.py +0 -12
- pulumi_kubernetes/policy/v1/outputs.py +0 -8
- pulumi_kubernetes/pulumi-plugin.json +1 -1
- pulumi_kubernetes/resource/__init__.py +3 -0
- pulumi_kubernetes/resource/v1alpha1/ResourceClaim.py +1 -1
- pulumi_kubernetes/resource/v1alpha1/ResourceClaimPatch.py +1 -1
- pulumi_kubernetes/resource/v1alpha1/ResourceClaimTemplate.py +1 -1
- pulumi_kubernetes/resource/v1alpha1/ResourceClaimTemplatePatch.py +1 -1
- pulumi_kubernetes/resource/v1alpha2/ResourceClaim.py +1 -1
- pulumi_kubernetes/resource/v1alpha2/ResourceClaimPatch.py +1 -1
- pulumi_kubernetes/resource/v1alpha2/ResourceClaimTemplate.py +1 -1
- pulumi_kubernetes/resource/v1alpha2/ResourceClaimTemplatePatch.py +1 -1
- pulumi_kubernetes/resource/v1alpha2/ResourceSlice.py +1 -1
- pulumi_kubernetes/resource/v1alpha2/ResourceSlicePatch.py +1 -1
- pulumi_kubernetes/resource/v1alpha3/DeviceClass.py +1 -1
- pulumi_kubernetes/resource/v1alpha3/DeviceClassPatch.py +1 -1
- pulumi_kubernetes/resource/v1alpha3/DeviceTaintRule.py +227 -0
- pulumi_kubernetes/resource/v1alpha3/DeviceTaintRuleList.py +219 -0
- pulumi_kubernetes/resource/v1alpha3/DeviceTaintRulePatch.py +238 -0
- pulumi_kubernetes/resource/v1alpha3/ResourceClaim.py +1 -1
- pulumi_kubernetes/resource/v1alpha3/ResourceClaimPatch.py +1 -1
- pulumi_kubernetes/resource/v1alpha3/ResourceClaimTemplate.py +1 -1
- pulumi_kubernetes/resource/v1alpha3/ResourceClaimTemplatePatch.py +1 -1
- pulumi_kubernetes/resource/v1alpha3/ResourceSlice.py +1 -1
- pulumi_kubernetes/resource/v1alpha3/ResourceSlicePatch.py +1 -1
- pulumi_kubernetes/resource/v1alpha3/__init__.py +3 -0
- pulumi_kubernetes/resource/v1alpha3/_inputs.py +2559 -213
- pulumi_kubernetes/resource/v1alpha3/outputs.py +2037 -256
- pulumi_kubernetes/resource/v1beta1/DeviceClass.py +1 -1
- pulumi_kubernetes/resource/v1beta1/DeviceClassPatch.py +1 -1
- pulumi_kubernetes/resource/v1beta1/ResourceClaim.py +1 -1
- pulumi_kubernetes/resource/v1beta1/ResourceClaimPatch.py +1 -1
- pulumi_kubernetes/resource/v1beta1/ResourceClaimTemplate.py +1 -1
- pulumi_kubernetes/resource/v1beta1/ResourceClaimTemplatePatch.py +1 -1
- pulumi_kubernetes/resource/v1beta1/ResourceSlice.py +1 -1
- pulumi_kubernetes/resource/v1beta1/ResourceSlicePatch.py +1 -1
- pulumi_kubernetes/resource/v1beta1/_inputs.py +2044 -176
- pulumi_kubernetes/resource/v1beta1/outputs.py +1536 -134
- pulumi_kubernetes/resource/v1beta2/DeviceClass.py +241 -0
- pulumi_kubernetes/resource/v1beta2/DeviceClassList.py +219 -0
- pulumi_kubernetes/resource/v1beta2/DeviceClassPatch.py +252 -0
- pulumi_kubernetes/resource/v1beta2/ResourceClaim.py +236 -0
- pulumi_kubernetes/resource/v1beta2/ResourceClaimList.py +220 -0
- pulumi_kubernetes/resource/v1beta2/ResourceClaimPatch.py +247 -0
- pulumi_kubernetes/resource/v1beta2/ResourceClaimTemplate.py +233 -0
- pulumi_kubernetes/resource/v1beta2/ResourceClaimTemplateList.py +219 -0
- pulumi_kubernetes/resource/v1beta2/ResourceClaimTemplatePatch.py +244 -0
- pulumi_kubernetes/resource/v1beta2/ResourceSlice.py +250 -0
- pulumi_kubernetes/resource/v1beta2/ResourceSliceList.py +220 -0
- pulumi_kubernetes/resource/v1beta2/ResourceSlicePatch.py +261 -0
- pulumi_kubernetes/resource/v1beta2/__init__.py +22 -0
- pulumi_kubernetes/resource/v1beta2/_inputs.py +5681 -0
- pulumi_kubernetes/resource/v1beta2/outputs.py +4726 -0
- pulumi_kubernetes/storage/v1/_inputs.py +90 -0
- pulumi_kubernetes/storage/v1/outputs.py +110 -0
- pulumi_kubernetes/yaml/yaml.py +108 -0
- {pulumi_kubernetes-4.23.0a1746131759.dist-info → pulumi_kubernetes-4.23.0a1746138483.dist-info}/METADATA +1 -1
- {pulumi_kubernetes-4.23.0a1746131759.dist-info → pulumi_kubernetes-4.23.0a1746138483.dist-info}/RECORD +116 -86
- {pulumi_kubernetes-4.23.0a1746131759.dist-info → pulumi_kubernetes-4.23.0a1746138483.dist-info}/WHEEL +0 -0
- {pulumi_kubernetes-4.23.0a1746131759.dist-info → pulumi_kubernetes-4.23.0a1746138483.dist-info}/top_level.txt +0 -0
|
@@ -27,6 +27,9 @@ __all__ = [
|
|
|
27
27
|
'BasicDevicePatch',
|
|
28
28
|
'CELDeviceSelector',
|
|
29
29
|
'CELDeviceSelectorPatch',
|
|
30
|
+
'Counter',
|
|
31
|
+
'CounterSet',
|
|
32
|
+
'CounterSetPatch',
|
|
30
33
|
'Device',
|
|
31
34
|
'DeviceAllocationConfiguration',
|
|
32
35
|
'DeviceAllocationConfigurationPatch',
|
|
@@ -44,6 +47,8 @@ __all__ = [
|
|
|
44
47
|
'DeviceClassSpecPatch',
|
|
45
48
|
'DeviceConstraint',
|
|
46
49
|
'DeviceConstraintPatch',
|
|
50
|
+
'DeviceCounterConsumption',
|
|
51
|
+
'DeviceCounterConsumptionPatch',
|
|
47
52
|
'DevicePatch',
|
|
48
53
|
'DeviceRequest',
|
|
49
54
|
'DeviceRequestAllocationResult',
|
|
@@ -51,6 +56,17 @@ __all__ = [
|
|
|
51
56
|
'DeviceRequestPatch',
|
|
52
57
|
'DeviceSelector',
|
|
53
58
|
'DeviceSelectorPatch',
|
|
59
|
+
'DeviceSubRequest',
|
|
60
|
+
'DeviceSubRequestPatch',
|
|
61
|
+
'DeviceTaint',
|
|
62
|
+
'DeviceTaintPatch',
|
|
63
|
+
'DeviceTaintRule',
|
|
64
|
+
'DeviceTaintRuleSpec',
|
|
65
|
+
'DeviceTaintRuleSpecPatch',
|
|
66
|
+
'DeviceTaintSelector',
|
|
67
|
+
'DeviceTaintSelectorPatch',
|
|
68
|
+
'DeviceToleration',
|
|
69
|
+
'DeviceTolerationPatch',
|
|
54
70
|
'NetworkDeviceData',
|
|
55
71
|
'NetworkDeviceDataPatch',
|
|
56
72
|
'OpaqueDeviceConfiguration',
|
|
@@ -118,6 +134,8 @@ class AllocatedDeviceStatus(dict):
|
|
|
118
134
|
|
|
119
135
|
Must not be longer than 253 characters and may contain one or more DNS sub-domains separated by slashes.
|
|
120
136
|
:param Sequence['_meta.v1.ConditionArgs'] conditions: Conditions contains the latest observation of the device's state. If the device has been configured according to the class and claim config references, the `Ready` condition should be True.
|
|
137
|
+
|
|
138
|
+
Must not contain more than 8 entries.
|
|
121
139
|
:param Any data: Data contains arbitrary driver-specific data.
|
|
122
140
|
|
|
123
141
|
The length of the raw data must be smaller or equal to 10 Ki.
|
|
@@ -166,6 +184,8 @@ class AllocatedDeviceStatus(dict):
|
|
|
166
184
|
def conditions(self) -> Optional[Sequence['_meta.v1.outputs.Condition']]:
|
|
167
185
|
"""
|
|
168
186
|
Conditions contains the latest observation of the device's state. If the device has been configured according to the class and claim config references, the `Ready` condition should be True.
|
|
187
|
+
|
|
188
|
+
Must not contain more than 8 entries.
|
|
169
189
|
"""
|
|
170
190
|
return pulumi.get(self, "conditions")
|
|
171
191
|
|
|
@@ -220,6 +240,8 @@ class AllocatedDeviceStatusPatch(dict):
|
|
|
220
240
|
"""
|
|
221
241
|
AllocatedDeviceStatus contains the status of an allocated device, if the driver chooses to report it. This may include driver-specific information.
|
|
222
242
|
:param Sequence['_meta.v1.ConditionPatchArgs'] conditions: Conditions contains the latest observation of the device's state. If the device has been configured according to the class and claim config references, the `Ready` condition should be True.
|
|
243
|
+
|
|
244
|
+
Must not contain more than 8 entries.
|
|
223
245
|
:param Any data: Data contains arbitrary driver-specific data.
|
|
224
246
|
|
|
225
247
|
The length of the raw data must be smaller or equal to 10 Ki.
|
|
@@ -250,6 +272,8 @@ class AllocatedDeviceStatusPatch(dict):
|
|
|
250
272
|
def conditions(self) -> Optional[Sequence['_meta.v1.outputs.ConditionPatch']]:
|
|
251
273
|
"""
|
|
252
274
|
Conditions contains the latest observation of the device's state. If the device has been configured according to the class and claim config references, the `Ready` condition should be True.
|
|
275
|
+
|
|
276
|
+
Must not contain more than 8 entries.
|
|
253
277
|
"""
|
|
254
278
|
return pulumi.get(self, "conditions")
|
|
255
279
|
|
|
@@ -449,22 +473,89 @@ class BasicDevice(dict):
|
|
|
449
473
|
"""
|
|
450
474
|
BasicDevice defines one device instance.
|
|
451
475
|
"""
|
|
476
|
+
@staticmethod
|
|
477
|
+
def __key_warning(key: str):
|
|
478
|
+
suggest = None
|
|
479
|
+
if key == "allNodes":
|
|
480
|
+
suggest = "all_nodes"
|
|
481
|
+
elif key == "consumesCounters":
|
|
482
|
+
suggest = "consumes_counters"
|
|
483
|
+
elif key == "nodeName":
|
|
484
|
+
suggest = "node_name"
|
|
485
|
+
elif key == "nodeSelector":
|
|
486
|
+
suggest = "node_selector"
|
|
487
|
+
|
|
488
|
+
if suggest:
|
|
489
|
+
pulumi.log.warn(f"Key '{key}' not found in BasicDevice. Access the value via the '{suggest}' property getter instead.")
|
|
490
|
+
|
|
491
|
+
def __getitem__(self, key: str) -> Any:
|
|
492
|
+
BasicDevice.__key_warning(key)
|
|
493
|
+
return super().__getitem__(key)
|
|
494
|
+
|
|
495
|
+
def get(self, key: str, default = None) -> Any:
|
|
496
|
+
BasicDevice.__key_warning(key)
|
|
497
|
+
return super().get(key, default)
|
|
498
|
+
|
|
452
499
|
def __init__(__self__, *,
|
|
500
|
+
all_nodes: Optional[builtins.bool] = None,
|
|
453
501
|
attributes: Optional[Mapping[str, 'outputs.DeviceAttribute']] = None,
|
|
454
|
-
capacity: Optional[Mapping[str, builtins.str]] = None
|
|
502
|
+
capacity: Optional[Mapping[str, builtins.str]] = None,
|
|
503
|
+
consumes_counters: Optional[Sequence['outputs.DeviceCounterConsumption']] = None,
|
|
504
|
+
node_name: Optional[builtins.str] = None,
|
|
505
|
+
node_selector: Optional['_core.v1.outputs.NodeSelector'] = None,
|
|
506
|
+
taints: Optional[Sequence['outputs.DeviceTaint']] = None):
|
|
455
507
|
"""
|
|
456
508
|
BasicDevice defines one device instance.
|
|
509
|
+
:param builtins.bool all_nodes: AllNodes indicates that all nodes have access to the device.
|
|
510
|
+
|
|
511
|
+
Must only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.
|
|
457
512
|
: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.
|
|
458
513
|
|
|
459
514
|
The maximum number of attributes and capacities combined is 32.
|
|
460
515
|
:param Mapping[str, builtins.str] capacity: Capacity defines the set of capacities for this device. The name of each capacity must be unique in that set.
|
|
461
516
|
|
|
462
517
|
The maximum number of attributes and capacities combined is 32.
|
|
518
|
+
:param Sequence['DeviceCounterConsumptionArgs'] consumes_counters: ConsumesCounters defines a list of references to sharedCounters and the set of counters that the device will consume from those counter sets.
|
|
519
|
+
|
|
520
|
+
There can only be a single entry per counterSet.
|
|
521
|
+
|
|
522
|
+
The total number of device counter consumption entries must be <= 32. In addition, the total number in the entire ResourceSlice must be <= 1024 (for example, 64 devices with 16 counters each).
|
|
523
|
+
:param builtins.str node_name: NodeName identifies the node where the device is available.
|
|
524
|
+
|
|
525
|
+
Must only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.
|
|
526
|
+
:param '_core.v1.NodeSelectorArgs' node_selector: NodeSelector defines the nodes where the device is available.
|
|
527
|
+
|
|
528
|
+
Must only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.
|
|
529
|
+
:param Sequence['DeviceTaintArgs'] taints: If specified, these are the driver-defined taints.
|
|
530
|
+
|
|
531
|
+
The maximum number of taints is 4.
|
|
532
|
+
|
|
533
|
+
This is an alpha field and requires enabling the DRADeviceTaints feature gate.
|
|
463
534
|
"""
|
|
535
|
+
if all_nodes is not None:
|
|
536
|
+
pulumi.set(__self__, "all_nodes", all_nodes)
|
|
464
537
|
if attributes is not None:
|
|
465
538
|
pulumi.set(__self__, "attributes", attributes)
|
|
466
539
|
if capacity is not None:
|
|
467
540
|
pulumi.set(__self__, "capacity", capacity)
|
|
541
|
+
if consumes_counters is not None:
|
|
542
|
+
pulumi.set(__self__, "consumes_counters", consumes_counters)
|
|
543
|
+
if node_name is not None:
|
|
544
|
+
pulumi.set(__self__, "node_name", node_name)
|
|
545
|
+
if node_selector is not None:
|
|
546
|
+
pulumi.set(__self__, "node_selector", node_selector)
|
|
547
|
+
if taints is not None:
|
|
548
|
+
pulumi.set(__self__, "taints", taints)
|
|
549
|
+
|
|
550
|
+
@property
|
|
551
|
+
@pulumi.getter(name="allNodes")
|
|
552
|
+
def all_nodes(self) -> Optional[builtins.bool]:
|
|
553
|
+
"""
|
|
554
|
+
AllNodes indicates that all nodes have access to the device.
|
|
555
|
+
|
|
556
|
+
Must only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.
|
|
557
|
+
"""
|
|
558
|
+
return pulumi.get(self, "all_nodes")
|
|
468
559
|
|
|
469
560
|
@property
|
|
470
561
|
@pulumi.getter
|
|
@@ -486,28 +577,139 @@ class BasicDevice(dict):
|
|
|
486
577
|
"""
|
|
487
578
|
return pulumi.get(self, "capacity")
|
|
488
579
|
|
|
580
|
+
@property
|
|
581
|
+
@pulumi.getter(name="consumesCounters")
|
|
582
|
+
def consumes_counters(self) -> Optional[Sequence['outputs.DeviceCounterConsumption']]:
|
|
583
|
+
"""
|
|
584
|
+
ConsumesCounters defines a list of references to sharedCounters and the set of counters that the device will consume from those counter sets.
|
|
585
|
+
|
|
586
|
+
There can only be a single entry per counterSet.
|
|
587
|
+
|
|
588
|
+
The total number of device counter consumption entries must be <= 32. In addition, the total number in the entire ResourceSlice must be <= 1024 (for example, 64 devices with 16 counters each).
|
|
589
|
+
"""
|
|
590
|
+
return pulumi.get(self, "consumes_counters")
|
|
591
|
+
|
|
592
|
+
@property
|
|
593
|
+
@pulumi.getter(name="nodeName")
|
|
594
|
+
def node_name(self) -> Optional[builtins.str]:
|
|
595
|
+
"""
|
|
596
|
+
NodeName identifies the node where the device is available.
|
|
597
|
+
|
|
598
|
+
Must only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.
|
|
599
|
+
"""
|
|
600
|
+
return pulumi.get(self, "node_name")
|
|
601
|
+
|
|
602
|
+
@property
|
|
603
|
+
@pulumi.getter(name="nodeSelector")
|
|
604
|
+
def node_selector(self) -> Optional['_core.v1.outputs.NodeSelector']:
|
|
605
|
+
"""
|
|
606
|
+
NodeSelector defines the nodes where the device is available.
|
|
607
|
+
|
|
608
|
+
Must only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.
|
|
609
|
+
"""
|
|
610
|
+
return pulumi.get(self, "node_selector")
|
|
611
|
+
|
|
612
|
+
@property
|
|
613
|
+
@pulumi.getter
|
|
614
|
+
def taints(self) -> Optional[Sequence['outputs.DeviceTaint']]:
|
|
615
|
+
"""
|
|
616
|
+
If specified, these are the driver-defined taints.
|
|
617
|
+
|
|
618
|
+
The maximum number of taints is 4.
|
|
619
|
+
|
|
620
|
+
This is an alpha field and requires enabling the DRADeviceTaints feature gate.
|
|
621
|
+
"""
|
|
622
|
+
return pulumi.get(self, "taints")
|
|
623
|
+
|
|
489
624
|
|
|
490
625
|
@pulumi.output_type
|
|
491
626
|
class BasicDevicePatch(dict):
|
|
492
627
|
"""
|
|
493
628
|
BasicDevice defines one device instance.
|
|
494
629
|
"""
|
|
630
|
+
@staticmethod
|
|
631
|
+
def __key_warning(key: str):
|
|
632
|
+
suggest = None
|
|
633
|
+
if key == "allNodes":
|
|
634
|
+
suggest = "all_nodes"
|
|
635
|
+
elif key == "consumesCounters":
|
|
636
|
+
suggest = "consumes_counters"
|
|
637
|
+
elif key == "nodeName":
|
|
638
|
+
suggest = "node_name"
|
|
639
|
+
elif key == "nodeSelector":
|
|
640
|
+
suggest = "node_selector"
|
|
641
|
+
|
|
642
|
+
if suggest:
|
|
643
|
+
pulumi.log.warn(f"Key '{key}' not found in BasicDevicePatch. Access the value via the '{suggest}' property getter instead.")
|
|
644
|
+
|
|
645
|
+
def __getitem__(self, key: str) -> Any:
|
|
646
|
+
BasicDevicePatch.__key_warning(key)
|
|
647
|
+
return super().__getitem__(key)
|
|
648
|
+
|
|
649
|
+
def get(self, key: str, default = None) -> Any:
|
|
650
|
+
BasicDevicePatch.__key_warning(key)
|
|
651
|
+
return super().get(key, default)
|
|
652
|
+
|
|
495
653
|
def __init__(__self__, *,
|
|
654
|
+
all_nodes: Optional[builtins.bool] = None,
|
|
496
655
|
attributes: Optional[Mapping[str, 'outputs.DeviceAttribute']] = None,
|
|
497
|
-
capacity: Optional[Mapping[str, builtins.str]] = None
|
|
656
|
+
capacity: Optional[Mapping[str, builtins.str]] = None,
|
|
657
|
+
consumes_counters: Optional[Sequence['outputs.DeviceCounterConsumptionPatch']] = None,
|
|
658
|
+
node_name: Optional[builtins.str] = None,
|
|
659
|
+
node_selector: Optional['_core.v1.outputs.NodeSelectorPatch'] = None,
|
|
660
|
+
taints: Optional[Sequence['outputs.DeviceTaintPatch']] = None):
|
|
498
661
|
"""
|
|
499
662
|
BasicDevice defines one device instance.
|
|
663
|
+
:param builtins.bool all_nodes: AllNodes indicates that all nodes have access to the device.
|
|
664
|
+
|
|
665
|
+
Must only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.
|
|
500
666
|
: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.
|
|
501
667
|
|
|
502
668
|
The maximum number of attributes and capacities combined is 32.
|
|
503
669
|
:param Mapping[str, builtins.str] capacity: Capacity defines the set of capacities for this device. The name of each capacity must be unique in that set.
|
|
504
670
|
|
|
505
671
|
The maximum number of attributes and capacities combined is 32.
|
|
672
|
+
:param Sequence['DeviceCounterConsumptionPatchArgs'] consumes_counters: ConsumesCounters defines a list of references to sharedCounters and the set of counters that the device will consume from those counter sets.
|
|
673
|
+
|
|
674
|
+
There can only be a single entry per counterSet.
|
|
675
|
+
|
|
676
|
+
The total number of device counter consumption entries must be <= 32. In addition, the total number in the entire ResourceSlice must be <= 1024 (for example, 64 devices with 16 counters each).
|
|
677
|
+
:param builtins.str node_name: NodeName identifies the node where the device is available.
|
|
678
|
+
|
|
679
|
+
Must only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.
|
|
680
|
+
:param '_core.v1.NodeSelectorPatchArgs' node_selector: NodeSelector defines the nodes where the device is available.
|
|
681
|
+
|
|
682
|
+
Must only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.
|
|
683
|
+
:param Sequence['DeviceTaintPatchArgs'] taints: If specified, these are the driver-defined taints.
|
|
684
|
+
|
|
685
|
+
The maximum number of taints is 4.
|
|
686
|
+
|
|
687
|
+
This is an alpha field and requires enabling the DRADeviceTaints feature gate.
|
|
506
688
|
"""
|
|
689
|
+
if all_nodes is not None:
|
|
690
|
+
pulumi.set(__self__, "all_nodes", all_nodes)
|
|
507
691
|
if attributes is not None:
|
|
508
692
|
pulumi.set(__self__, "attributes", attributes)
|
|
509
693
|
if capacity is not None:
|
|
510
694
|
pulumi.set(__self__, "capacity", capacity)
|
|
695
|
+
if consumes_counters is not None:
|
|
696
|
+
pulumi.set(__self__, "consumes_counters", consumes_counters)
|
|
697
|
+
if node_name is not None:
|
|
698
|
+
pulumi.set(__self__, "node_name", node_name)
|
|
699
|
+
if node_selector is not None:
|
|
700
|
+
pulumi.set(__self__, "node_selector", node_selector)
|
|
701
|
+
if taints is not None:
|
|
702
|
+
pulumi.set(__self__, "taints", taints)
|
|
703
|
+
|
|
704
|
+
@property
|
|
705
|
+
@pulumi.getter(name="allNodes")
|
|
706
|
+
def all_nodes(self) -> Optional[builtins.bool]:
|
|
707
|
+
"""
|
|
708
|
+
AllNodes indicates that all nodes have access to the device.
|
|
709
|
+
|
|
710
|
+
Must only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.
|
|
711
|
+
"""
|
|
712
|
+
return pulumi.get(self, "all_nodes")
|
|
511
713
|
|
|
512
714
|
@property
|
|
513
715
|
@pulumi.getter
|
|
@@ -529,6 +731,50 @@ class BasicDevicePatch(dict):
|
|
|
529
731
|
"""
|
|
530
732
|
return pulumi.get(self, "capacity")
|
|
531
733
|
|
|
734
|
+
@property
|
|
735
|
+
@pulumi.getter(name="consumesCounters")
|
|
736
|
+
def consumes_counters(self) -> Optional[Sequence['outputs.DeviceCounterConsumptionPatch']]:
|
|
737
|
+
"""
|
|
738
|
+
ConsumesCounters defines a list of references to sharedCounters and the set of counters that the device will consume from those counter sets.
|
|
739
|
+
|
|
740
|
+
There can only be a single entry per counterSet.
|
|
741
|
+
|
|
742
|
+
The total number of device counter consumption entries must be <= 32. In addition, the total number in the entire ResourceSlice must be <= 1024 (for example, 64 devices with 16 counters each).
|
|
743
|
+
"""
|
|
744
|
+
return pulumi.get(self, "consumes_counters")
|
|
745
|
+
|
|
746
|
+
@property
|
|
747
|
+
@pulumi.getter(name="nodeName")
|
|
748
|
+
def node_name(self) -> Optional[builtins.str]:
|
|
749
|
+
"""
|
|
750
|
+
NodeName identifies the node where the device is available.
|
|
751
|
+
|
|
752
|
+
Must only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.
|
|
753
|
+
"""
|
|
754
|
+
return pulumi.get(self, "node_name")
|
|
755
|
+
|
|
756
|
+
@property
|
|
757
|
+
@pulumi.getter(name="nodeSelector")
|
|
758
|
+
def node_selector(self) -> Optional['_core.v1.outputs.NodeSelectorPatch']:
|
|
759
|
+
"""
|
|
760
|
+
NodeSelector defines the nodes where the device is available.
|
|
761
|
+
|
|
762
|
+
Must only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.
|
|
763
|
+
"""
|
|
764
|
+
return pulumi.get(self, "node_selector")
|
|
765
|
+
|
|
766
|
+
@property
|
|
767
|
+
@pulumi.getter
|
|
768
|
+
def taints(self) -> Optional[Sequence['outputs.DeviceTaintPatch']]:
|
|
769
|
+
"""
|
|
770
|
+
If specified, these are the driver-defined taints.
|
|
771
|
+
|
|
772
|
+
The maximum number of taints is 4.
|
|
773
|
+
|
|
774
|
+
This is an alpha field and requires enabling the DRADeviceTaints feature gate.
|
|
775
|
+
"""
|
|
776
|
+
return pulumi.get(self, "taints")
|
|
777
|
+
|
|
532
778
|
|
|
533
779
|
@pulumi.output_type
|
|
534
780
|
class CELDeviceSelector(dict):
|
|
@@ -687,6 +933,120 @@ class CELDeviceSelectorPatch(dict):
|
|
|
687
933
|
return pulumi.get(self, "expression")
|
|
688
934
|
|
|
689
935
|
|
|
936
|
+
@pulumi.output_type
|
|
937
|
+
class Counter(dict):
|
|
938
|
+
"""
|
|
939
|
+
Counter describes a quantity associated with a device.
|
|
940
|
+
"""
|
|
941
|
+
def __init__(__self__, *,
|
|
942
|
+
value: builtins.str):
|
|
943
|
+
"""
|
|
944
|
+
Counter describes a quantity associated with a device.
|
|
945
|
+
:param builtins.str value: Value defines how much of a certain device counter is available.
|
|
946
|
+
"""
|
|
947
|
+
pulumi.set(__self__, "value", value)
|
|
948
|
+
|
|
949
|
+
@property
|
|
950
|
+
@pulumi.getter
|
|
951
|
+
def value(self) -> builtins.str:
|
|
952
|
+
"""
|
|
953
|
+
Value defines how much of a certain device counter is available.
|
|
954
|
+
"""
|
|
955
|
+
return pulumi.get(self, "value")
|
|
956
|
+
|
|
957
|
+
|
|
958
|
+
@pulumi.output_type
|
|
959
|
+
class CounterSet(dict):
|
|
960
|
+
"""
|
|
961
|
+
CounterSet defines a named set of counters that are available to be used by devices defined in the ResourceSlice.
|
|
962
|
+
|
|
963
|
+
The counters are not allocatable by themselves, but can be referenced by devices. When a device is allocated, the portion of counters it uses will no longer be available for use by other devices.
|
|
964
|
+
"""
|
|
965
|
+
def __init__(__self__, *,
|
|
966
|
+
counters: Mapping[str, 'outputs.Counter'],
|
|
967
|
+
name: builtins.str):
|
|
968
|
+
"""
|
|
969
|
+
CounterSet defines a named set of counters that are available to be used by devices defined in the ResourceSlice.
|
|
970
|
+
|
|
971
|
+
The counters are not allocatable by themselves, but can be referenced by devices. When a device is allocated, the portion of counters it uses will no longer be available for use by other devices.
|
|
972
|
+
:param Mapping[str, 'CounterArgs'] counters: Counters defines the counters that will be consumed by the device. The name of each counter must be unique in that set and must be a DNS label.
|
|
973
|
+
|
|
974
|
+
To ensure this uniqueness, capacities defined by the vendor must be listed without the driver name as domain prefix in their name. All others must be listed with their domain prefix.
|
|
975
|
+
|
|
976
|
+
The maximum number of counters is 32.
|
|
977
|
+
:param builtins.str name: CounterSet is the name of the set from which the counters defined will be consumed.
|
|
978
|
+
"""
|
|
979
|
+
pulumi.set(__self__, "counters", counters)
|
|
980
|
+
pulumi.set(__self__, "name", name)
|
|
981
|
+
|
|
982
|
+
@property
|
|
983
|
+
@pulumi.getter
|
|
984
|
+
def counters(self) -> Mapping[str, 'outputs.Counter']:
|
|
985
|
+
"""
|
|
986
|
+
Counters defines the counters that will be consumed by the device. The name of each counter must be unique in that set and must be a DNS label.
|
|
987
|
+
|
|
988
|
+
To ensure this uniqueness, capacities defined by the vendor must be listed without the driver name as domain prefix in their name. All others must be listed with their domain prefix.
|
|
989
|
+
|
|
990
|
+
The maximum number of counters is 32.
|
|
991
|
+
"""
|
|
992
|
+
return pulumi.get(self, "counters")
|
|
993
|
+
|
|
994
|
+
@property
|
|
995
|
+
@pulumi.getter
|
|
996
|
+
def name(self) -> builtins.str:
|
|
997
|
+
"""
|
|
998
|
+
CounterSet is the name of the set from which the counters defined will be consumed.
|
|
999
|
+
"""
|
|
1000
|
+
return pulumi.get(self, "name")
|
|
1001
|
+
|
|
1002
|
+
|
|
1003
|
+
@pulumi.output_type
|
|
1004
|
+
class CounterSetPatch(dict):
|
|
1005
|
+
"""
|
|
1006
|
+
CounterSet defines a named set of counters that are available to be used by devices defined in the ResourceSlice.
|
|
1007
|
+
|
|
1008
|
+
The counters are not allocatable by themselves, but can be referenced by devices. When a device is allocated, the portion of counters it uses will no longer be available for use by other devices.
|
|
1009
|
+
"""
|
|
1010
|
+
def __init__(__self__, *,
|
|
1011
|
+
counters: Optional[Mapping[str, 'outputs.Counter']] = None,
|
|
1012
|
+
name: Optional[builtins.str] = None):
|
|
1013
|
+
"""
|
|
1014
|
+
CounterSet defines a named set of counters that are available to be used by devices defined in the ResourceSlice.
|
|
1015
|
+
|
|
1016
|
+
The counters are not allocatable by themselves, but can be referenced by devices. When a device is allocated, the portion of counters it uses will no longer be available for use by other devices.
|
|
1017
|
+
:param Mapping[str, 'CounterArgs'] counters: Counters defines the counters that will be consumed by the device. The name of each counter must be unique in that set and must be a DNS label.
|
|
1018
|
+
|
|
1019
|
+
To ensure this uniqueness, capacities defined by the vendor must be listed without the driver name as domain prefix in their name. All others must be listed with their domain prefix.
|
|
1020
|
+
|
|
1021
|
+
The maximum number of counters is 32.
|
|
1022
|
+
:param builtins.str name: CounterSet is the name of the set from which the counters defined will be consumed.
|
|
1023
|
+
"""
|
|
1024
|
+
if counters is not None:
|
|
1025
|
+
pulumi.set(__self__, "counters", counters)
|
|
1026
|
+
if name is not None:
|
|
1027
|
+
pulumi.set(__self__, "name", name)
|
|
1028
|
+
|
|
1029
|
+
@property
|
|
1030
|
+
@pulumi.getter
|
|
1031
|
+
def counters(self) -> Optional[Mapping[str, 'outputs.Counter']]:
|
|
1032
|
+
"""
|
|
1033
|
+
Counters defines the counters that will be consumed by the device. The name of each counter must be unique in that set and must be a DNS label.
|
|
1034
|
+
|
|
1035
|
+
To ensure this uniqueness, capacities defined by the vendor must be listed without the driver name as domain prefix in their name. All others must be listed with their domain prefix.
|
|
1036
|
+
|
|
1037
|
+
The maximum number of counters is 32.
|
|
1038
|
+
"""
|
|
1039
|
+
return pulumi.get(self, "counters")
|
|
1040
|
+
|
|
1041
|
+
@property
|
|
1042
|
+
@pulumi.getter
|
|
1043
|
+
def name(self) -> Optional[builtins.str]:
|
|
1044
|
+
"""
|
|
1045
|
+
CounterSet is the name of the set from which the counters defined will be consumed.
|
|
1046
|
+
"""
|
|
1047
|
+
return pulumi.get(self, "name")
|
|
1048
|
+
|
|
1049
|
+
|
|
690
1050
|
@pulumi.output_type
|
|
691
1051
|
class Device(dict):
|
|
692
1052
|
"""
|
|
@@ -735,6 +1095,8 @@ class DeviceAllocationConfiguration(dict):
|
|
|
735
1095
|
:param builtins.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.
|
|
736
1096
|
:param 'OpaqueDeviceConfigurationArgs' opaque: Opaque provides driver-specific configuration parameters.
|
|
737
1097
|
:param Sequence[builtins.str] requests: Requests lists the names of requests where the configuration applies. If empty, its applies to all requests.
|
|
1098
|
+
|
|
1099
|
+
References to subrequests must include the name of the main request and may include the subrequest using the format <main request>[/<subrequest>]. If just the main request is given, the configuration applies to all subrequests.
|
|
738
1100
|
"""
|
|
739
1101
|
pulumi.set(__self__, "source", source)
|
|
740
1102
|
if opaque is not None:
|
|
@@ -763,6 +1125,8 @@ class DeviceAllocationConfiguration(dict):
|
|
|
763
1125
|
def requests(self) -> Optional[Sequence[builtins.str]]:
|
|
764
1126
|
"""
|
|
765
1127
|
Requests lists the names of requests where the configuration applies. If empty, its applies to all requests.
|
|
1128
|
+
|
|
1129
|
+
References to subrequests must include the name of the main request and may include the subrequest using the format <main request>[/<subrequest>]. If just the main request is given, the configuration applies to all subrequests.
|
|
766
1130
|
"""
|
|
767
1131
|
return pulumi.get(self, "requests")
|
|
768
1132
|
|
|
@@ -780,6 +1144,8 @@ class DeviceAllocationConfigurationPatch(dict):
|
|
|
780
1144
|
DeviceAllocationConfiguration gets embedded in an AllocationResult.
|
|
781
1145
|
:param 'OpaqueDeviceConfigurationPatchArgs' opaque: Opaque provides driver-specific configuration parameters.
|
|
782
1146
|
:param Sequence[builtins.str] requests: Requests lists the names of requests where the configuration applies. If empty, its applies to all requests.
|
|
1147
|
+
|
|
1148
|
+
References to subrequests must include the name of the main request and may include the subrequest using the format <main request>[/<subrequest>]. If just the main request is given, the configuration applies to all subrequests.
|
|
783
1149
|
:param builtins.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.
|
|
784
1150
|
"""
|
|
785
1151
|
if opaque is not None:
|
|
@@ -802,6 +1168,8 @@ class DeviceAllocationConfigurationPatch(dict):
|
|
|
802
1168
|
def requests(self) -> Optional[Sequence[builtins.str]]:
|
|
803
1169
|
"""
|
|
804
1170
|
Requests lists the names of requests where the configuration applies. If empty, its applies to all requests.
|
|
1171
|
+
|
|
1172
|
+
References to subrequests must include the name of the main request and may include the subrequest using the format <main request>[/<subrequest>]. If just the main request is given, the configuration applies to all subrequests.
|
|
805
1173
|
"""
|
|
806
1174
|
return pulumi.get(self, "requests")
|
|
807
1175
|
|
|
@@ -1010,6 +1378,8 @@ class DeviceClaimConfiguration(dict):
|
|
|
1010
1378
|
DeviceClaimConfiguration is used for configuration parameters in DeviceClaim.
|
|
1011
1379
|
:param 'OpaqueDeviceConfigurationArgs' opaque: Opaque provides driver-specific configuration parameters.
|
|
1012
1380
|
:param Sequence[builtins.str] requests: Requests lists the names of requests where the configuration applies. If empty, it applies to all requests.
|
|
1381
|
+
|
|
1382
|
+
References to subrequests must include the name of the main request and may include the subrequest using the format <main request>[/<subrequest>]. If just the main request is given, the configuration applies to all subrequests.
|
|
1013
1383
|
"""
|
|
1014
1384
|
if opaque is not None:
|
|
1015
1385
|
pulumi.set(__self__, "opaque", opaque)
|
|
@@ -1029,6 +1399,8 @@ class DeviceClaimConfiguration(dict):
|
|
|
1029
1399
|
def requests(self) -> Optional[Sequence[builtins.str]]:
|
|
1030
1400
|
"""
|
|
1031
1401
|
Requests lists the names of requests where the configuration applies. If empty, it applies to all requests.
|
|
1402
|
+
|
|
1403
|
+
References to subrequests must include the name of the main request and may include the subrequest using the format <main request>[/<subrequest>]. If just the main request is given, the configuration applies to all subrequests.
|
|
1032
1404
|
"""
|
|
1033
1405
|
return pulumi.get(self, "requests")
|
|
1034
1406
|
|
|
@@ -1045,6 +1417,8 @@ class DeviceClaimConfigurationPatch(dict):
|
|
|
1045
1417
|
DeviceClaimConfiguration is used for configuration parameters in DeviceClaim.
|
|
1046
1418
|
:param 'OpaqueDeviceConfigurationPatchArgs' opaque: Opaque provides driver-specific configuration parameters.
|
|
1047
1419
|
:param Sequence[builtins.str] requests: Requests lists the names of requests where the configuration applies. If empty, it applies to all requests.
|
|
1420
|
+
|
|
1421
|
+
References to subrequests must include the name of the main request and may include the subrequest using the format <main request>[/<subrequest>]. If just the main request is given, the configuration applies to all subrequests.
|
|
1048
1422
|
"""
|
|
1049
1423
|
if opaque is not None:
|
|
1050
1424
|
pulumi.set(__self__, "opaque", opaque)
|
|
@@ -1064,6 +1438,8 @@ class DeviceClaimConfigurationPatch(dict):
|
|
|
1064
1438
|
def requests(self) -> Optional[Sequence[builtins.str]]:
|
|
1065
1439
|
"""
|
|
1066
1440
|
Requests lists the names of requests where the configuration applies. If empty, it applies to all requests.
|
|
1441
|
+
|
|
1442
|
+
References to subrequests must include the name of the main request and may include the subrequest using the format <main request>[/<subrequest>]. If just the main request is given, the configuration applies to all subrequests.
|
|
1067
1443
|
"""
|
|
1068
1444
|
return pulumi.get(self, "requests")
|
|
1069
1445
|
|
|
@@ -1433,6 +1809,8 @@ class DeviceConstraint(dict):
|
|
|
1433
1809
|
|
|
1434
1810
|
Must include the domain qualifier.
|
|
1435
1811
|
:param Sequence[builtins.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.
|
|
1812
|
+
|
|
1813
|
+
References to subrequests must include the name of the main request and may include the subrequest using the format <main request>[/<subrequest>]. If just the main request is given, the constraint applies to all subrequests.
|
|
1436
1814
|
"""
|
|
1437
1815
|
if match_attribute is not None:
|
|
1438
1816
|
pulumi.set(__self__, "match_attribute", match_attribute)
|
|
@@ -1456,6 +1834,8 @@ class DeviceConstraint(dict):
|
|
|
1456
1834
|
def requests(self) -> Optional[Sequence[builtins.str]]:
|
|
1457
1835
|
"""
|
|
1458
1836
|
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.
|
|
1837
|
+
|
|
1838
|
+
References to subrequests must include the name of the main request and may include the subrequest using the format <main request>[/<subrequest>]. If just the main request is given, the constraint applies to all subrequests.
|
|
1459
1839
|
"""
|
|
1460
1840
|
return pulumi.get(self, "requests")
|
|
1461
1841
|
|
|
@@ -1493,6 +1873,8 @@ class DeviceConstraintPatch(dict):
|
|
|
1493
1873
|
|
|
1494
1874
|
Must include the domain qualifier.
|
|
1495
1875
|
:param Sequence[builtins.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.
|
|
1876
|
+
|
|
1877
|
+
References to subrequests must include the name of the main request and may include the subrequest using the format <main request>[/<subrequest>]. If just the main request is given, the constraint applies to all subrequests.
|
|
1496
1878
|
"""
|
|
1497
1879
|
if match_attribute is not None:
|
|
1498
1880
|
pulumi.set(__self__, "match_attribute", match_attribute)
|
|
@@ -1516,41 +1898,153 @@ class DeviceConstraintPatch(dict):
|
|
|
1516
1898
|
def requests(self) -> Optional[Sequence[builtins.str]]:
|
|
1517
1899
|
"""
|
|
1518
1900
|
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.
|
|
1901
|
+
|
|
1902
|
+
References to subrequests must include the name of the main request and may include the subrequest using the format <main request>[/<subrequest>]. If just the main request is given, the constraint applies to all subrequests.
|
|
1519
1903
|
"""
|
|
1520
1904
|
return pulumi.get(self, "requests")
|
|
1521
1905
|
|
|
1522
1906
|
|
|
1523
1907
|
@pulumi.output_type
|
|
1524
|
-
class
|
|
1908
|
+
class DeviceCounterConsumption(dict):
|
|
1525
1909
|
"""
|
|
1526
|
-
|
|
1910
|
+
DeviceCounterConsumption defines a set of counters that a device will consume from a CounterSet.
|
|
1527
1911
|
"""
|
|
1912
|
+
@staticmethod
|
|
1913
|
+
def __key_warning(key: str):
|
|
1914
|
+
suggest = None
|
|
1915
|
+
if key == "counterSet":
|
|
1916
|
+
suggest = "counter_set"
|
|
1917
|
+
|
|
1918
|
+
if suggest:
|
|
1919
|
+
pulumi.log.warn(f"Key '{key}' not found in DeviceCounterConsumption. Access the value via the '{suggest}' property getter instead.")
|
|
1920
|
+
|
|
1921
|
+
def __getitem__(self, key: str) -> Any:
|
|
1922
|
+
DeviceCounterConsumption.__key_warning(key)
|
|
1923
|
+
return super().__getitem__(key)
|
|
1924
|
+
|
|
1925
|
+
def get(self, key: str, default = None) -> Any:
|
|
1926
|
+
DeviceCounterConsumption.__key_warning(key)
|
|
1927
|
+
return super().get(key, default)
|
|
1928
|
+
|
|
1528
1929
|
def __init__(__self__, *,
|
|
1529
|
-
|
|
1530
|
-
|
|
1930
|
+
counter_set: builtins.str,
|
|
1931
|
+
counters: Mapping[str, 'outputs.Counter']):
|
|
1531
1932
|
"""
|
|
1532
|
-
|
|
1533
|
-
:param
|
|
1534
|
-
:param
|
|
1933
|
+
DeviceCounterConsumption defines a set of counters that a device will consume from a CounterSet.
|
|
1934
|
+
:param builtins.str counter_set: CounterSet defines the set from which the counters defined will be consumed.
|
|
1935
|
+
:param Mapping[str, 'CounterArgs'] counters: Counters defines the Counter that will be consumed by the device.
|
|
1936
|
+
|
|
1937
|
+
The maximum number counters in a device is 32. In addition, the maximum number of all counters in all devices is 1024 (for example, 64 devices with 16 counters each).
|
|
1535
1938
|
"""
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
if name is not None:
|
|
1539
|
-
pulumi.set(__self__, "name", name)
|
|
1939
|
+
pulumi.set(__self__, "counter_set", counter_set)
|
|
1940
|
+
pulumi.set(__self__, "counters", counters)
|
|
1540
1941
|
|
|
1541
1942
|
@property
|
|
1542
|
-
@pulumi.getter
|
|
1543
|
-
def
|
|
1943
|
+
@pulumi.getter(name="counterSet")
|
|
1944
|
+
def counter_set(self) -> builtins.str:
|
|
1544
1945
|
"""
|
|
1545
|
-
|
|
1946
|
+
CounterSet defines the set from which the counters defined will be consumed.
|
|
1546
1947
|
"""
|
|
1547
|
-
return pulumi.get(self, "
|
|
1948
|
+
return pulumi.get(self, "counter_set")
|
|
1548
1949
|
|
|
1549
1950
|
@property
|
|
1550
1951
|
@pulumi.getter
|
|
1551
|
-
def
|
|
1952
|
+
def counters(self) -> Mapping[str, 'outputs.Counter']:
|
|
1552
1953
|
"""
|
|
1553
|
-
|
|
1954
|
+
Counters defines the Counter that will be consumed by the device.
|
|
1955
|
+
|
|
1956
|
+
The maximum number counters in a device is 32. In addition, the maximum number of all counters in all devices is 1024 (for example, 64 devices with 16 counters each).
|
|
1957
|
+
"""
|
|
1958
|
+
return pulumi.get(self, "counters")
|
|
1959
|
+
|
|
1960
|
+
|
|
1961
|
+
@pulumi.output_type
|
|
1962
|
+
class DeviceCounterConsumptionPatch(dict):
|
|
1963
|
+
"""
|
|
1964
|
+
DeviceCounterConsumption defines a set of counters that a device will consume from a CounterSet.
|
|
1965
|
+
"""
|
|
1966
|
+
@staticmethod
|
|
1967
|
+
def __key_warning(key: str):
|
|
1968
|
+
suggest = None
|
|
1969
|
+
if key == "counterSet":
|
|
1970
|
+
suggest = "counter_set"
|
|
1971
|
+
|
|
1972
|
+
if suggest:
|
|
1973
|
+
pulumi.log.warn(f"Key '{key}' not found in DeviceCounterConsumptionPatch. Access the value via the '{suggest}' property getter instead.")
|
|
1974
|
+
|
|
1975
|
+
def __getitem__(self, key: str) -> Any:
|
|
1976
|
+
DeviceCounterConsumptionPatch.__key_warning(key)
|
|
1977
|
+
return super().__getitem__(key)
|
|
1978
|
+
|
|
1979
|
+
def get(self, key: str, default = None) -> Any:
|
|
1980
|
+
DeviceCounterConsumptionPatch.__key_warning(key)
|
|
1981
|
+
return super().get(key, default)
|
|
1982
|
+
|
|
1983
|
+
def __init__(__self__, *,
|
|
1984
|
+
counter_set: Optional[builtins.str] = None,
|
|
1985
|
+
counters: Optional[Mapping[str, 'outputs.Counter']] = None):
|
|
1986
|
+
"""
|
|
1987
|
+
DeviceCounterConsumption defines a set of counters that a device will consume from a CounterSet.
|
|
1988
|
+
:param builtins.str counter_set: CounterSet defines the set from which the counters defined will be consumed.
|
|
1989
|
+
:param Mapping[str, 'CounterArgs'] counters: Counters defines the Counter that will be consumed by the device.
|
|
1990
|
+
|
|
1991
|
+
The maximum number counters in a device is 32. In addition, the maximum number of all counters in all devices is 1024 (for example, 64 devices with 16 counters each).
|
|
1992
|
+
"""
|
|
1993
|
+
if counter_set is not None:
|
|
1994
|
+
pulumi.set(__self__, "counter_set", counter_set)
|
|
1995
|
+
if counters is not None:
|
|
1996
|
+
pulumi.set(__self__, "counters", counters)
|
|
1997
|
+
|
|
1998
|
+
@property
|
|
1999
|
+
@pulumi.getter(name="counterSet")
|
|
2000
|
+
def counter_set(self) -> Optional[builtins.str]:
|
|
2001
|
+
"""
|
|
2002
|
+
CounterSet defines the set from which the counters defined will be consumed.
|
|
2003
|
+
"""
|
|
2004
|
+
return pulumi.get(self, "counter_set")
|
|
2005
|
+
|
|
2006
|
+
@property
|
|
2007
|
+
@pulumi.getter
|
|
2008
|
+
def counters(self) -> Optional[Mapping[str, 'outputs.Counter']]:
|
|
2009
|
+
"""
|
|
2010
|
+
Counters defines the Counter that will be consumed by the device.
|
|
2011
|
+
|
|
2012
|
+
The maximum number counters in a device is 32. In addition, the maximum number of all counters in all devices is 1024 (for example, 64 devices with 16 counters each).
|
|
2013
|
+
"""
|
|
2014
|
+
return pulumi.get(self, "counters")
|
|
2015
|
+
|
|
2016
|
+
|
|
2017
|
+
@pulumi.output_type
|
|
2018
|
+
class DevicePatch(dict):
|
|
2019
|
+
"""
|
|
2020
|
+
Device represents one individual hardware instance that can be selected based on its attributes. Besides the name, exactly one field must be set.
|
|
2021
|
+
"""
|
|
2022
|
+
def __init__(__self__, *,
|
|
2023
|
+
basic: Optional['outputs.BasicDevicePatch'] = None,
|
|
2024
|
+
name: Optional[builtins.str] = None):
|
|
2025
|
+
"""
|
|
2026
|
+
Device represents one individual hardware instance that can be selected based on its attributes. Besides the name, exactly one field must be set.
|
|
2027
|
+
:param 'BasicDevicePatchArgs' basic: Basic defines one device instance.
|
|
2028
|
+
:param builtins.str name: Name is unique identifier among all devices managed by the driver in the pool. It must be a DNS label.
|
|
2029
|
+
"""
|
|
2030
|
+
if basic is not None:
|
|
2031
|
+
pulumi.set(__self__, "basic", basic)
|
|
2032
|
+
if name is not None:
|
|
2033
|
+
pulumi.set(__self__, "name", name)
|
|
2034
|
+
|
|
2035
|
+
@property
|
|
2036
|
+
@pulumi.getter
|
|
2037
|
+
def basic(self) -> Optional['outputs.BasicDevicePatch']:
|
|
2038
|
+
"""
|
|
2039
|
+
Basic defines one device instance.
|
|
2040
|
+
"""
|
|
2041
|
+
return pulumi.get(self, "basic")
|
|
2042
|
+
|
|
2043
|
+
@property
|
|
2044
|
+
@pulumi.getter
|
|
2045
|
+
def name(self) -> Optional[builtins.str]:
|
|
2046
|
+
"""
|
|
2047
|
+
Name is unique identifier among all devices managed by the driver in the pool. It must be a DNS label.
|
|
1554
2048
|
"""
|
|
1555
2049
|
return pulumi.get(self, "name")
|
|
1556
2050
|
|
|
@@ -1559,18 +2053,18 @@ class DevicePatch(dict):
|
|
|
1559
2053
|
class DeviceRequest(dict):
|
|
1560
2054
|
"""
|
|
1561
2055
|
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.
|
|
1562
|
-
|
|
1563
|
-
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.
|
|
1564
2056
|
"""
|
|
1565
2057
|
@staticmethod
|
|
1566
2058
|
def __key_warning(key: str):
|
|
1567
2059
|
suggest = None
|
|
1568
|
-
if key == "
|
|
1569
|
-
suggest = "device_class_name"
|
|
1570
|
-
elif key == "adminAccess":
|
|
2060
|
+
if key == "adminAccess":
|
|
1571
2061
|
suggest = "admin_access"
|
|
1572
2062
|
elif key == "allocationMode":
|
|
1573
2063
|
suggest = "allocation_mode"
|
|
2064
|
+
elif key == "deviceClassName":
|
|
2065
|
+
suggest = "device_class_name"
|
|
2066
|
+
elif key == "firstAvailable":
|
|
2067
|
+
suggest = "first_available"
|
|
1574
2068
|
|
|
1575
2069
|
if suggest:
|
|
1576
2070
|
pulumi.log.warn(f"Key '{key}' not found in DeviceRequest. Access the value via the '{suggest}' property getter instead.")
|
|
@@ -1584,26 +2078,23 @@ class DeviceRequest(dict):
|
|
|
1584
2078
|
return super().get(key, default)
|
|
1585
2079
|
|
|
1586
2080
|
def __init__(__self__, *,
|
|
1587
|
-
device_class_name: builtins.str,
|
|
1588
2081
|
name: builtins.str,
|
|
1589
2082
|
admin_access: Optional[builtins.bool] = None,
|
|
1590
2083
|
allocation_mode: Optional[builtins.str] = None,
|
|
1591
2084
|
count: Optional[builtins.int] = None,
|
|
1592
|
-
|
|
2085
|
+
device_class_name: Optional[builtins.str] = None,
|
|
2086
|
+
first_available: Optional[Sequence['outputs.DeviceSubRequest']] = None,
|
|
2087
|
+
selectors: Optional[Sequence['outputs.DeviceSelector']] = None,
|
|
2088
|
+
tolerations: Optional[Sequence['outputs.DeviceToleration']] = None):
|
|
1593
2089
|
"""
|
|
1594
2090
|
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.
|
|
1595
|
-
|
|
1596
|
-
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.
|
|
1597
|
-
:param builtins.str device_class_name: DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request.
|
|
1598
|
-
|
|
1599
|
-
A class is required. Which classes are available depends on the cluster.
|
|
1600
|
-
|
|
1601
|
-
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.
|
|
1602
2091
|
:param builtins.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.
|
|
1603
2092
|
|
|
1604
2093
|
Must be a DNS label.
|
|
1605
2094
|
:param builtins.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.
|
|
1606
2095
|
|
|
2096
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
2097
|
+
|
|
1607
2098
|
This is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.
|
|
1608
2099
|
:param builtins.str allocation_mode: AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:
|
|
1609
2100
|
|
|
@@ -1612,16 +2103,43 @@ class DeviceRequest(dict):
|
|
|
1612
2103
|
count field.
|
|
1613
2104
|
|
|
1614
2105
|
- All: This request is for all of the matching devices in a pool.
|
|
2106
|
+
At least one device must exist on the node for the allocation to succeed.
|
|
1615
2107
|
Allocation will fail if some devices are already allocated,
|
|
1616
2108
|
unless adminAccess is requested.
|
|
1617
2109
|
|
|
1618
|
-
If
|
|
2110
|
+
If AllocationMode 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.
|
|
2111
|
+
|
|
2112
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
1619
2113
|
|
|
1620
2114
|
More modes may get added in the future. Clients must refuse to handle requests with unknown modes.
|
|
1621
2115
|
:param builtins.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.
|
|
2116
|
+
|
|
2117
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
2118
|
+
:param builtins.str device_class_name: DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request.
|
|
2119
|
+
|
|
2120
|
+
A class is required if no subrequests are specified in the firstAvailable list and no class can be set if subrequests are specified in the firstAvailable list. Which classes are available depends on the cluster.
|
|
2121
|
+
|
|
2122
|
+
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.
|
|
2123
|
+
:param Sequence['DeviceSubRequestArgs'] first_available: FirstAvailable contains subrequests, of which exactly one will be satisfied by the scheduler to satisfy this request. It tries to satisfy them in the order in which they are listed here. So if there are two entries in the list, the scheduler will only check the second one if it determines that the first one cannot be used.
|
|
2124
|
+
|
|
2125
|
+
This field may only be set in the entries of DeviceClaim.Requests.
|
|
2126
|
+
|
|
2127
|
+
DRA does not yet implement scoring, so the scheduler will select the first set of devices that satisfies all the requests in the claim. And if the requirements can be satisfied on more than one node, other scheduling features will determine which node is chosen. This means that the set of devices allocated to a claim might not be the optimal set available to the cluster. Scoring will be implemented later.
|
|
1622
2128
|
: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.
|
|
2129
|
+
|
|
2130
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
2131
|
+
:param Sequence['DeviceTolerationArgs'] tolerations: If specified, the request's tolerations.
|
|
2132
|
+
|
|
2133
|
+
Tolerations for NoSchedule are required to allocate a device which has a taint with that effect. The same applies to NoExecute.
|
|
2134
|
+
|
|
2135
|
+
In addition, should any of the allocated devices get tainted with NoExecute after allocation and that effect is not tolerated, then all pods consuming the ResourceClaim get deleted to evict them. The scheduler will not let new pods reserve the claim while it has these tainted devices. Once all pods are evicted, the claim will get deallocated.
|
|
2136
|
+
|
|
2137
|
+
The maximum number of tolerations is 16.
|
|
2138
|
+
|
|
2139
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
2140
|
+
|
|
2141
|
+
This is an alpha field and requires enabling the DRADeviceTaints feature gate.
|
|
1623
2142
|
"""
|
|
1624
|
-
pulumi.set(__self__, "device_class_name", device_class_name)
|
|
1625
2143
|
pulumi.set(__self__, "name", name)
|
|
1626
2144
|
if admin_access is not None:
|
|
1627
2145
|
pulumi.set(__self__, "admin_access", admin_access)
|
|
@@ -1629,20 +2147,14 @@ class DeviceRequest(dict):
|
|
|
1629
2147
|
pulumi.set(__self__, "allocation_mode", allocation_mode)
|
|
1630
2148
|
if count is not None:
|
|
1631
2149
|
pulumi.set(__self__, "count", count)
|
|
2150
|
+
if device_class_name is not None:
|
|
2151
|
+
pulumi.set(__self__, "device_class_name", device_class_name)
|
|
2152
|
+
if first_available is not None:
|
|
2153
|
+
pulumi.set(__self__, "first_available", first_available)
|
|
1632
2154
|
if selectors is not None:
|
|
1633
2155
|
pulumi.set(__self__, "selectors", selectors)
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
@pulumi.getter(name="deviceClassName")
|
|
1637
|
-
def device_class_name(self) -> builtins.str:
|
|
1638
|
-
"""
|
|
1639
|
-
DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request.
|
|
1640
|
-
|
|
1641
|
-
A class is required. Which classes are available depends on the cluster.
|
|
1642
|
-
|
|
1643
|
-
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.
|
|
1644
|
-
"""
|
|
1645
|
-
return pulumi.get(self, "device_class_name")
|
|
2156
|
+
if tolerations is not None:
|
|
2157
|
+
pulumi.set(__self__, "tolerations", tolerations)
|
|
1646
2158
|
|
|
1647
2159
|
@property
|
|
1648
2160
|
@pulumi.getter
|
|
@@ -1660,6 +2172,8 @@ class DeviceRequest(dict):
|
|
|
1660
2172
|
"""
|
|
1661
2173
|
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.
|
|
1662
2174
|
|
|
2175
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
2176
|
+
|
|
1663
2177
|
This is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.
|
|
1664
2178
|
"""
|
|
1665
2179
|
return pulumi.get(self, "admin_access")
|
|
@@ -1675,10 +2189,13 @@ class DeviceRequest(dict):
|
|
|
1675
2189
|
count field.
|
|
1676
2190
|
|
|
1677
2191
|
- All: This request is for all of the matching devices in a pool.
|
|
2192
|
+
At least one device must exist on the node for the allocation to succeed.
|
|
1678
2193
|
Allocation will fail if some devices are already allocated,
|
|
1679
2194
|
unless adminAccess is requested.
|
|
1680
2195
|
|
|
1681
|
-
If
|
|
2196
|
+
If AllocationMode 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.
|
|
2197
|
+
|
|
2198
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
1682
2199
|
|
|
1683
2200
|
More modes may get added in the future. Clients must refuse to handle requests with unknown modes.
|
|
1684
2201
|
"""
|
|
@@ -1689,17 +2206,63 @@ class DeviceRequest(dict):
|
|
|
1689
2206
|
def count(self) -> Optional[builtins.int]:
|
|
1690
2207
|
"""
|
|
1691
2208
|
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.
|
|
2209
|
+
|
|
2210
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
1692
2211
|
"""
|
|
1693
2212
|
return pulumi.get(self, "count")
|
|
1694
2213
|
|
|
2214
|
+
@property
|
|
2215
|
+
@pulumi.getter(name="deviceClassName")
|
|
2216
|
+
def device_class_name(self) -> Optional[builtins.str]:
|
|
2217
|
+
"""
|
|
2218
|
+
DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request.
|
|
2219
|
+
|
|
2220
|
+
A class is required if no subrequests are specified in the firstAvailable list and no class can be set if subrequests are specified in the firstAvailable list. Which classes are available depends on the cluster.
|
|
2221
|
+
|
|
2222
|
+
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.
|
|
2223
|
+
"""
|
|
2224
|
+
return pulumi.get(self, "device_class_name")
|
|
2225
|
+
|
|
2226
|
+
@property
|
|
2227
|
+
@pulumi.getter(name="firstAvailable")
|
|
2228
|
+
def first_available(self) -> Optional[Sequence['outputs.DeviceSubRequest']]:
|
|
2229
|
+
"""
|
|
2230
|
+
FirstAvailable contains subrequests, of which exactly one will be satisfied by the scheduler to satisfy this request. It tries to satisfy them in the order in which they are listed here. So if there are two entries in the list, the scheduler will only check the second one if it determines that the first one cannot be used.
|
|
2231
|
+
|
|
2232
|
+
This field may only be set in the entries of DeviceClaim.Requests.
|
|
2233
|
+
|
|
2234
|
+
DRA does not yet implement scoring, so the scheduler will select the first set of devices that satisfies all the requests in the claim. And if the requirements can be satisfied on more than one node, other scheduling features will determine which node is chosen. This means that the set of devices allocated to a claim might not be the optimal set available to the cluster. Scoring will be implemented later.
|
|
2235
|
+
"""
|
|
2236
|
+
return pulumi.get(self, "first_available")
|
|
2237
|
+
|
|
1695
2238
|
@property
|
|
1696
2239
|
@pulumi.getter
|
|
1697
2240
|
def selectors(self) -> Optional[Sequence['outputs.DeviceSelector']]:
|
|
1698
2241
|
"""
|
|
1699
2242
|
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.
|
|
2243
|
+
|
|
2244
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
1700
2245
|
"""
|
|
1701
2246
|
return pulumi.get(self, "selectors")
|
|
1702
2247
|
|
|
2248
|
+
@property
|
|
2249
|
+
@pulumi.getter
|
|
2250
|
+
def tolerations(self) -> Optional[Sequence['outputs.DeviceToleration']]:
|
|
2251
|
+
"""
|
|
2252
|
+
If specified, the request's tolerations.
|
|
2253
|
+
|
|
2254
|
+
Tolerations for NoSchedule are required to allocate a device which has a taint with that effect. The same applies to NoExecute.
|
|
2255
|
+
|
|
2256
|
+
In addition, should any of the allocated devices get tainted with NoExecute after allocation and that effect is not tolerated, then all pods consuming the ResourceClaim get deleted to evict them. The scheduler will not let new pods reserve the claim while it has these tainted devices. Once all pods are evicted, the claim will get deallocated.
|
|
2257
|
+
|
|
2258
|
+
The maximum number of tolerations is 16.
|
|
2259
|
+
|
|
2260
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
2261
|
+
|
|
2262
|
+
This is an alpha field and requires enabling the DRADeviceTaints feature gate.
|
|
2263
|
+
"""
|
|
2264
|
+
return pulumi.get(self, "tolerations")
|
|
2265
|
+
|
|
1703
2266
|
|
|
1704
2267
|
@pulumi.output_type
|
|
1705
2268
|
class DeviceRequestAllocationResult(dict):
|
|
@@ -1728,7 +2291,8 @@ class DeviceRequestAllocationResult(dict):
|
|
|
1728
2291
|
driver: builtins.str,
|
|
1729
2292
|
pool: builtins.str,
|
|
1730
2293
|
request: builtins.str,
|
|
1731
|
-
admin_access: Optional[builtins.bool] = None
|
|
2294
|
+
admin_access: Optional[builtins.bool] = None,
|
|
2295
|
+
tolerations: Optional[Sequence['outputs.DeviceToleration']] = None):
|
|
1732
2296
|
"""
|
|
1733
2297
|
DeviceRequestAllocationResult contains the allocation result for one request.
|
|
1734
2298
|
:param builtins.str device: Device references one device instance via its name in the driver's resource pool. It must be a DNS label.
|
|
@@ -1738,10 +2302,17 @@ class DeviceRequestAllocationResult(dict):
|
|
|
1738
2302
|
:param builtins.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>`).
|
|
1739
2303
|
|
|
1740
2304
|
Must not be longer than 253 characters and may contain one or more DNS sub-domains separated by slashes.
|
|
1741
|
-
:param builtins.str request: Request is the name of the request in the claim which caused this device to be allocated.
|
|
2305
|
+
:param builtins.str request: Request is the name of the request in the claim which caused this device to be allocated. If it references a subrequest in the firstAvailable list on a DeviceRequest, this field must include both the name of the main request and the subrequest using the format <main request>/<subrequest>.
|
|
2306
|
+
|
|
2307
|
+
Multiple devices may have been allocated per request.
|
|
1742
2308
|
:param builtins.bool admin_access: AdminAccess indicates that this device was allocated for administrative access. See the corresponding request field for a definition of mode.
|
|
1743
2309
|
|
|
1744
2310
|
This is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.
|
|
2311
|
+
:param Sequence['DeviceTolerationArgs'] tolerations: A copy of all tolerations specified in the request at the time when the device got allocated.
|
|
2312
|
+
|
|
2313
|
+
The maximum number of tolerations is 16.
|
|
2314
|
+
|
|
2315
|
+
This is an alpha field and requires enabling the DRADeviceTaints feature gate.
|
|
1745
2316
|
"""
|
|
1746
2317
|
pulumi.set(__self__, "device", device)
|
|
1747
2318
|
pulumi.set(__self__, "driver", driver)
|
|
@@ -1749,6 +2320,8 @@ class DeviceRequestAllocationResult(dict):
|
|
|
1749
2320
|
pulumi.set(__self__, "request", request)
|
|
1750
2321
|
if admin_access is not None:
|
|
1751
2322
|
pulumi.set(__self__, "admin_access", admin_access)
|
|
2323
|
+
if tolerations is not None:
|
|
2324
|
+
pulumi.set(__self__, "tolerations", tolerations)
|
|
1752
2325
|
|
|
1753
2326
|
@property
|
|
1754
2327
|
@pulumi.getter
|
|
@@ -1770,111 +2343,1249 @@ class DeviceRequestAllocationResult(dict):
|
|
|
1770
2343
|
|
|
1771
2344
|
@property
|
|
1772
2345
|
@pulumi.getter
|
|
1773
|
-
def pool(self) -> builtins.str:
|
|
2346
|
+
def pool(self) -> builtins.str:
|
|
2347
|
+
"""
|
|
2348
|
+
This name together with the driver name and the device name field identify which device was allocated (`<driver name>/<pool name>/<device name>`).
|
|
2349
|
+
|
|
2350
|
+
Must not be longer than 253 characters and may contain one or more DNS sub-domains separated by slashes.
|
|
2351
|
+
"""
|
|
2352
|
+
return pulumi.get(self, "pool")
|
|
2353
|
+
|
|
2354
|
+
@property
|
|
2355
|
+
@pulumi.getter
|
|
2356
|
+
def request(self) -> builtins.str:
|
|
2357
|
+
"""
|
|
2358
|
+
Request is the name of the request in the claim which caused this device to be allocated. If it references a subrequest in the firstAvailable list on a DeviceRequest, this field must include both the name of the main request and the subrequest using the format <main request>/<subrequest>.
|
|
2359
|
+
|
|
2360
|
+
Multiple devices may have been allocated per request.
|
|
2361
|
+
"""
|
|
2362
|
+
return pulumi.get(self, "request")
|
|
2363
|
+
|
|
2364
|
+
@property
|
|
2365
|
+
@pulumi.getter(name="adminAccess")
|
|
2366
|
+
def admin_access(self) -> Optional[builtins.bool]:
|
|
2367
|
+
"""
|
|
2368
|
+
AdminAccess indicates that this device was allocated for administrative access. See the corresponding request field for a definition of mode.
|
|
2369
|
+
|
|
2370
|
+
This is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.
|
|
2371
|
+
"""
|
|
2372
|
+
return pulumi.get(self, "admin_access")
|
|
2373
|
+
|
|
2374
|
+
@property
|
|
2375
|
+
@pulumi.getter
|
|
2376
|
+
def tolerations(self) -> Optional[Sequence['outputs.DeviceToleration']]:
|
|
2377
|
+
"""
|
|
2378
|
+
A copy of all tolerations specified in the request at the time when the device got allocated.
|
|
2379
|
+
|
|
2380
|
+
The maximum number of tolerations is 16.
|
|
2381
|
+
|
|
2382
|
+
This is an alpha field and requires enabling the DRADeviceTaints feature gate.
|
|
2383
|
+
"""
|
|
2384
|
+
return pulumi.get(self, "tolerations")
|
|
2385
|
+
|
|
2386
|
+
|
|
2387
|
+
@pulumi.output_type
|
|
2388
|
+
class DeviceRequestAllocationResultPatch(dict):
|
|
2389
|
+
"""
|
|
2390
|
+
DeviceRequestAllocationResult contains the allocation result for one request.
|
|
2391
|
+
"""
|
|
2392
|
+
@staticmethod
|
|
2393
|
+
def __key_warning(key: str):
|
|
2394
|
+
suggest = None
|
|
2395
|
+
if key == "adminAccess":
|
|
2396
|
+
suggest = "admin_access"
|
|
2397
|
+
|
|
2398
|
+
if suggest:
|
|
2399
|
+
pulumi.log.warn(f"Key '{key}' not found in DeviceRequestAllocationResultPatch. Access the value via the '{suggest}' property getter instead.")
|
|
2400
|
+
|
|
2401
|
+
def __getitem__(self, key: str) -> Any:
|
|
2402
|
+
DeviceRequestAllocationResultPatch.__key_warning(key)
|
|
2403
|
+
return super().__getitem__(key)
|
|
2404
|
+
|
|
2405
|
+
def get(self, key: str, default = None) -> Any:
|
|
2406
|
+
DeviceRequestAllocationResultPatch.__key_warning(key)
|
|
2407
|
+
return super().get(key, default)
|
|
2408
|
+
|
|
2409
|
+
def __init__(__self__, *,
|
|
2410
|
+
admin_access: Optional[builtins.bool] = None,
|
|
2411
|
+
device: Optional[builtins.str] = None,
|
|
2412
|
+
driver: Optional[builtins.str] = None,
|
|
2413
|
+
pool: Optional[builtins.str] = None,
|
|
2414
|
+
request: Optional[builtins.str] = None,
|
|
2415
|
+
tolerations: Optional[Sequence['outputs.DeviceTolerationPatch']] = None):
|
|
2416
|
+
"""
|
|
2417
|
+
DeviceRequestAllocationResult contains the allocation result for one request.
|
|
2418
|
+
:param builtins.bool admin_access: AdminAccess indicates that this device was allocated for administrative access. See the corresponding request field for a definition of mode.
|
|
2419
|
+
|
|
2420
|
+
This is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.
|
|
2421
|
+
:param builtins.str device: Device references one device instance via its name in the driver's resource pool. It must be a DNS label.
|
|
2422
|
+
:param builtins.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.
|
|
2423
|
+
|
|
2424
|
+
Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.
|
|
2425
|
+
:param builtins.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>`).
|
|
2426
|
+
|
|
2427
|
+
Must not be longer than 253 characters and may contain one or more DNS sub-domains separated by slashes.
|
|
2428
|
+
:param builtins.str request: Request is the name of the request in the claim which caused this device to be allocated. If it references a subrequest in the firstAvailable list on a DeviceRequest, this field must include both the name of the main request and the subrequest using the format <main request>/<subrequest>.
|
|
2429
|
+
|
|
2430
|
+
Multiple devices may have been allocated per request.
|
|
2431
|
+
:param Sequence['DeviceTolerationPatchArgs'] tolerations: A copy of all tolerations specified in the request at the time when the device got allocated.
|
|
2432
|
+
|
|
2433
|
+
The maximum number of tolerations is 16.
|
|
2434
|
+
|
|
2435
|
+
This is an alpha field and requires enabling the DRADeviceTaints feature gate.
|
|
2436
|
+
"""
|
|
2437
|
+
if admin_access is not None:
|
|
2438
|
+
pulumi.set(__self__, "admin_access", admin_access)
|
|
2439
|
+
if device is not None:
|
|
2440
|
+
pulumi.set(__self__, "device", device)
|
|
2441
|
+
if driver is not None:
|
|
2442
|
+
pulumi.set(__self__, "driver", driver)
|
|
2443
|
+
if pool is not None:
|
|
2444
|
+
pulumi.set(__self__, "pool", pool)
|
|
2445
|
+
if request is not None:
|
|
2446
|
+
pulumi.set(__self__, "request", request)
|
|
2447
|
+
if tolerations is not None:
|
|
2448
|
+
pulumi.set(__self__, "tolerations", tolerations)
|
|
2449
|
+
|
|
2450
|
+
@property
|
|
2451
|
+
@pulumi.getter(name="adminAccess")
|
|
2452
|
+
def admin_access(self) -> Optional[builtins.bool]:
|
|
2453
|
+
"""
|
|
2454
|
+
AdminAccess indicates that this device was allocated for administrative access. See the corresponding request field for a definition of mode.
|
|
2455
|
+
|
|
2456
|
+
This is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.
|
|
2457
|
+
"""
|
|
2458
|
+
return pulumi.get(self, "admin_access")
|
|
2459
|
+
|
|
2460
|
+
@property
|
|
2461
|
+
@pulumi.getter
|
|
2462
|
+
def device(self) -> Optional[builtins.str]:
|
|
2463
|
+
"""
|
|
2464
|
+
Device references one device instance via its name in the driver's resource pool. It must be a DNS label.
|
|
2465
|
+
"""
|
|
2466
|
+
return pulumi.get(self, "device")
|
|
2467
|
+
|
|
2468
|
+
@property
|
|
2469
|
+
@pulumi.getter
|
|
2470
|
+
def driver(self) -> Optional[builtins.str]:
|
|
2471
|
+
"""
|
|
2472
|
+
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.
|
|
2473
|
+
|
|
2474
|
+
Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.
|
|
2475
|
+
"""
|
|
2476
|
+
return pulumi.get(self, "driver")
|
|
2477
|
+
|
|
2478
|
+
@property
|
|
2479
|
+
@pulumi.getter
|
|
2480
|
+
def pool(self) -> Optional[builtins.str]:
|
|
2481
|
+
"""
|
|
2482
|
+
This name together with the driver name and the device name field identify which device was allocated (`<driver name>/<pool name>/<device name>`).
|
|
2483
|
+
|
|
2484
|
+
Must not be longer than 253 characters and may contain one or more DNS sub-domains separated by slashes.
|
|
2485
|
+
"""
|
|
2486
|
+
return pulumi.get(self, "pool")
|
|
2487
|
+
|
|
2488
|
+
@property
|
|
2489
|
+
@pulumi.getter
|
|
2490
|
+
def request(self) -> Optional[builtins.str]:
|
|
2491
|
+
"""
|
|
2492
|
+
Request is the name of the request in the claim which caused this device to be allocated. If it references a subrequest in the firstAvailable list on a DeviceRequest, this field must include both the name of the main request and the subrequest using the format <main request>/<subrequest>.
|
|
2493
|
+
|
|
2494
|
+
Multiple devices may have been allocated per request.
|
|
2495
|
+
"""
|
|
2496
|
+
return pulumi.get(self, "request")
|
|
2497
|
+
|
|
2498
|
+
@property
|
|
2499
|
+
@pulumi.getter
|
|
2500
|
+
def tolerations(self) -> Optional[Sequence['outputs.DeviceTolerationPatch']]:
|
|
2501
|
+
"""
|
|
2502
|
+
A copy of all tolerations specified in the request at the time when the device got allocated.
|
|
2503
|
+
|
|
2504
|
+
The maximum number of tolerations is 16.
|
|
2505
|
+
|
|
2506
|
+
This is an alpha field and requires enabling the DRADeviceTaints feature gate.
|
|
2507
|
+
"""
|
|
2508
|
+
return pulumi.get(self, "tolerations")
|
|
2509
|
+
|
|
2510
|
+
|
|
2511
|
+
@pulumi.output_type
|
|
2512
|
+
class DeviceRequestPatch(dict):
|
|
2513
|
+
"""
|
|
2514
|
+
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.
|
|
2515
|
+
"""
|
|
2516
|
+
@staticmethod
|
|
2517
|
+
def __key_warning(key: str):
|
|
2518
|
+
suggest = None
|
|
2519
|
+
if key == "adminAccess":
|
|
2520
|
+
suggest = "admin_access"
|
|
2521
|
+
elif key == "allocationMode":
|
|
2522
|
+
suggest = "allocation_mode"
|
|
2523
|
+
elif key == "deviceClassName":
|
|
2524
|
+
suggest = "device_class_name"
|
|
2525
|
+
elif key == "firstAvailable":
|
|
2526
|
+
suggest = "first_available"
|
|
2527
|
+
|
|
2528
|
+
if suggest:
|
|
2529
|
+
pulumi.log.warn(f"Key '{key}' not found in DeviceRequestPatch. Access the value via the '{suggest}' property getter instead.")
|
|
2530
|
+
|
|
2531
|
+
def __getitem__(self, key: str) -> Any:
|
|
2532
|
+
DeviceRequestPatch.__key_warning(key)
|
|
2533
|
+
return super().__getitem__(key)
|
|
2534
|
+
|
|
2535
|
+
def get(self, key: str, default = None) -> Any:
|
|
2536
|
+
DeviceRequestPatch.__key_warning(key)
|
|
2537
|
+
return super().get(key, default)
|
|
2538
|
+
|
|
2539
|
+
def __init__(__self__, *,
|
|
2540
|
+
admin_access: Optional[builtins.bool] = None,
|
|
2541
|
+
allocation_mode: Optional[builtins.str] = None,
|
|
2542
|
+
count: Optional[builtins.int] = None,
|
|
2543
|
+
device_class_name: Optional[builtins.str] = None,
|
|
2544
|
+
first_available: Optional[Sequence['outputs.DeviceSubRequestPatch']] = None,
|
|
2545
|
+
name: Optional[builtins.str] = None,
|
|
2546
|
+
selectors: Optional[Sequence['outputs.DeviceSelectorPatch']] = None,
|
|
2547
|
+
tolerations: Optional[Sequence['outputs.DeviceTolerationPatch']] = None):
|
|
2548
|
+
"""
|
|
2549
|
+
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.
|
|
2550
|
+
:param builtins.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.
|
|
2551
|
+
|
|
2552
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
2553
|
+
|
|
2554
|
+
This is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.
|
|
2555
|
+
:param builtins.str allocation_mode: AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:
|
|
2556
|
+
|
|
2557
|
+
- ExactCount: This request is for a specific number of devices.
|
|
2558
|
+
This is the default. The exact number is provided in the
|
|
2559
|
+
count field.
|
|
2560
|
+
|
|
2561
|
+
- All: This request is for all of the matching devices in a pool.
|
|
2562
|
+
At least one device must exist on the node for the allocation to succeed.
|
|
2563
|
+
Allocation will fail if some devices are already allocated,
|
|
2564
|
+
unless adminAccess is requested.
|
|
2565
|
+
|
|
2566
|
+
If AllocationMode 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.
|
|
2567
|
+
|
|
2568
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
2569
|
+
|
|
2570
|
+
More modes may get added in the future. Clients must refuse to handle requests with unknown modes.
|
|
2571
|
+
:param builtins.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.
|
|
2572
|
+
|
|
2573
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
2574
|
+
:param builtins.str device_class_name: DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request.
|
|
2575
|
+
|
|
2576
|
+
A class is required if no subrequests are specified in the firstAvailable list and no class can be set if subrequests are specified in the firstAvailable list. Which classes are available depends on the cluster.
|
|
2577
|
+
|
|
2578
|
+
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.
|
|
2579
|
+
:param Sequence['DeviceSubRequestPatchArgs'] first_available: FirstAvailable contains subrequests, of which exactly one will be satisfied by the scheduler to satisfy this request. It tries to satisfy them in the order in which they are listed here. So if there are two entries in the list, the scheduler will only check the second one if it determines that the first one cannot be used.
|
|
2580
|
+
|
|
2581
|
+
This field may only be set in the entries of DeviceClaim.Requests.
|
|
2582
|
+
|
|
2583
|
+
DRA does not yet implement scoring, so the scheduler will select the first set of devices that satisfies all the requests in the claim. And if the requirements can be satisfied on more than one node, other scheduling features will determine which node is chosen. This means that the set of devices allocated to a claim might not be the optimal set available to the cluster. Scoring will be implemented later.
|
|
2584
|
+
:param builtins.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.
|
|
2585
|
+
|
|
2586
|
+
Must be a DNS label.
|
|
2587
|
+
: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.
|
|
2588
|
+
|
|
2589
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
2590
|
+
:param Sequence['DeviceTolerationPatchArgs'] tolerations: If specified, the request's tolerations.
|
|
2591
|
+
|
|
2592
|
+
Tolerations for NoSchedule are required to allocate a device which has a taint with that effect. The same applies to NoExecute.
|
|
2593
|
+
|
|
2594
|
+
In addition, should any of the allocated devices get tainted with NoExecute after allocation and that effect is not tolerated, then all pods consuming the ResourceClaim get deleted to evict them. The scheduler will not let new pods reserve the claim while it has these tainted devices. Once all pods are evicted, the claim will get deallocated.
|
|
2595
|
+
|
|
2596
|
+
The maximum number of tolerations is 16.
|
|
2597
|
+
|
|
2598
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
2599
|
+
|
|
2600
|
+
This is an alpha field and requires enabling the DRADeviceTaints feature gate.
|
|
2601
|
+
"""
|
|
2602
|
+
if admin_access is not None:
|
|
2603
|
+
pulumi.set(__self__, "admin_access", admin_access)
|
|
2604
|
+
if allocation_mode is not None:
|
|
2605
|
+
pulumi.set(__self__, "allocation_mode", allocation_mode)
|
|
2606
|
+
if count is not None:
|
|
2607
|
+
pulumi.set(__self__, "count", count)
|
|
2608
|
+
if device_class_name is not None:
|
|
2609
|
+
pulumi.set(__self__, "device_class_name", device_class_name)
|
|
2610
|
+
if first_available is not None:
|
|
2611
|
+
pulumi.set(__self__, "first_available", first_available)
|
|
2612
|
+
if name is not None:
|
|
2613
|
+
pulumi.set(__self__, "name", name)
|
|
2614
|
+
if selectors is not None:
|
|
2615
|
+
pulumi.set(__self__, "selectors", selectors)
|
|
2616
|
+
if tolerations is not None:
|
|
2617
|
+
pulumi.set(__self__, "tolerations", tolerations)
|
|
2618
|
+
|
|
2619
|
+
@property
|
|
2620
|
+
@pulumi.getter(name="adminAccess")
|
|
2621
|
+
def admin_access(self) -> Optional[builtins.bool]:
|
|
2622
|
+
"""
|
|
2623
|
+
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.
|
|
2624
|
+
|
|
2625
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
2626
|
+
|
|
2627
|
+
This is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.
|
|
2628
|
+
"""
|
|
2629
|
+
return pulumi.get(self, "admin_access")
|
|
2630
|
+
|
|
2631
|
+
@property
|
|
2632
|
+
@pulumi.getter(name="allocationMode")
|
|
2633
|
+
def allocation_mode(self) -> Optional[builtins.str]:
|
|
2634
|
+
"""
|
|
2635
|
+
AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:
|
|
2636
|
+
|
|
2637
|
+
- ExactCount: This request is for a specific number of devices.
|
|
2638
|
+
This is the default. The exact number is provided in the
|
|
2639
|
+
count field.
|
|
2640
|
+
|
|
2641
|
+
- All: This request is for all of the matching devices in a pool.
|
|
2642
|
+
At least one device must exist on the node for the allocation to succeed.
|
|
2643
|
+
Allocation will fail if some devices are already allocated,
|
|
2644
|
+
unless adminAccess is requested.
|
|
2645
|
+
|
|
2646
|
+
If AllocationMode 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.
|
|
2647
|
+
|
|
2648
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
2649
|
+
|
|
2650
|
+
More modes may get added in the future. Clients must refuse to handle requests with unknown modes.
|
|
2651
|
+
"""
|
|
2652
|
+
return pulumi.get(self, "allocation_mode")
|
|
2653
|
+
|
|
2654
|
+
@property
|
|
2655
|
+
@pulumi.getter
|
|
2656
|
+
def count(self) -> Optional[builtins.int]:
|
|
2657
|
+
"""
|
|
2658
|
+
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.
|
|
2659
|
+
|
|
2660
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
2661
|
+
"""
|
|
2662
|
+
return pulumi.get(self, "count")
|
|
2663
|
+
|
|
2664
|
+
@property
|
|
2665
|
+
@pulumi.getter(name="deviceClassName")
|
|
2666
|
+
def device_class_name(self) -> Optional[builtins.str]:
|
|
2667
|
+
"""
|
|
2668
|
+
DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request.
|
|
2669
|
+
|
|
2670
|
+
A class is required if no subrequests are specified in the firstAvailable list and no class can be set if subrequests are specified in the firstAvailable list. Which classes are available depends on the cluster.
|
|
2671
|
+
|
|
2672
|
+
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.
|
|
2673
|
+
"""
|
|
2674
|
+
return pulumi.get(self, "device_class_name")
|
|
2675
|
+
|
|
2676
|
+
@property
|
|
2677
|
+
@pulumi.getter(name="firstAvailable")
|
|
2678
|
+
def first_available(self) -> Optional[Sequence['outputs.DeviceSubRequestPatch']]:
|
|
2679
|
+
"""
|
|
2680
|
+
FirstAvailable contains subrequests, of which exactly one will be satisfied by the scheduler to satisfy this request. It tries to satisfy them in the order in which they are listed here. So if there are two entries in the list, the scheduler will only check the second one if it determines that the first one cannot be used.
|
|
2681
|
+
|
|
2682
|
+
This field may only be set in the entries of DeviceClaim.Requests.
|
|
2683
|
+
|
|
2684
|
+
DRA does not yet implement scoring, so the scheduler will select the first set of devices that satisfies all the requests in the claim. And if the requirements can be satisfied on more than one node, other scheduling features will determine which node is chosen. This means that the set of devices allocated to a claim might not be the optimal set available to the cluster. Scoring will be implemented later.
|
|
2685
|
+
"""
|
|
2686
|
+
return pulumi.get(self, "first_available")
|
|
2687
|
+
|
|
2688
|
+
@property
|
|
2689
|
+
@pulumi.getter
|
|
2690
|
+
def name(self) -> Optional[builtins.str]:
|
|
2691
|
+
"""
|
|
2692
|
+
Name can be used to reference this request in a pod.spec.containers[].resources.claims entry and in a constraint of the claim.
|
|
2693
|
+
|
|
2694
|
+
Must be a DNS label.
|
|
2695
|
+
"""
|
|
2696
|
+
return pulumi.get(self, "name")
|
|
2697
|
+
|
|
2698
|
+
@property
|
|
2699
|
+
@pulumi.getter
|
|
2700
|
+
def selectors(self) -> Optional[Sequence['outputs.DeviceSelectorPatch']]:
|
|
2701
|
+
"""
|
|
2702
|
+
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.
|
|
2703
|
+
|
|
2704
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
2705
|
+
"""
|
|
2706
|
+
return pulumi.get(self, "selectors")
|
|
2707
|
+
|
|
2708
|
+
@property
|
|
2709
|
+
@pulumi.getter
|
|
2710
|
+
def tolerations(self) -> Optional[Sequence['outputs.DeviceTolerationPatch']]:
|
|
2711
|
+
"""
|
|
2712
|
+
If specified, the request's tolerations.
|
|
2713
|
+
|
|
2714
|
+
Tolerations for NoSchedule are required to allocate a device which has a taint with that effect. The same applies to NoExecute.
|
|
2715
|
+
|
|
2716
|
+
In addition, should any of the allocated devices get tainted with NoExecute after allocation and that effect is not tolerated, then all pods consuming the ResourceClaim get deleted to evict them. The scheduler will not let new pods reserve the claim while it has these tainted devices. Once all pods are evicted, the claim will get deallocated.
|
|
2717
|
+
|
|
2718
|
+
The maximum number of tolerations is 16.
|
|
2719
|
+
|
|
2720
|
+
This field can only be set when deviceClassName is set and no subrequests are specified in the firstAvailable list.
|
|
2721
|
+
|
|
2722
|
+
This is an alpha field and requires enabling the DRADeviceTaints feature gate.
|
|
2723
|
+
"""
|
|
2724
|
+
return pulumi.get(self, "tolerations")
|
|
2725
|
+
|
|
2726
|
+
|
|
2727
|
+
@pulumi.output_type
|
|
2728
|
+
class DeviceSelector(dict):
|
|
2729
|
+
"""
|
|
2730
|
+
DeviceSelector must have exactly one field set.
|
|
2731
|
+
"""
|
|
2732
|
+
def __init__(__self__, *,
|
|
2733
|
+
cel: Optional['outputs.CELDeviceSelector'] = None):
|
|
2734
|
+
"""
|
|
2735
|
+
DeviceSelector must have exactly one field set.
|
|
2736
|
+
:param 'CELDeviceSelectorArgs' cel: CEL contains a CEL expression for selecting a device.
|
|
2737
|
+
"""
|
|
2738
|
+
if cel is not None:
|
|
2739
|
+
pulumi.set(__self__, "cel", cel)
|
|
2740
|
+
|
|
2741
|
+
@property
|
|
2742
|
+
@pulumi.getter
|
|
2743
|
+
def cel(self) -> Optional['outputs.CELDeviceSelector']:
|
|
2744
|
+
"""
|
|
2745
|
+
CEL contains a CEL expression for selecting a device.
|
|
2746
|
+
"""
|
|
2747
|
+
return pulumi.get(self, "cel")
|
|
2748
|
+
|
|
2749
|
+
|
|
2750
|
+
@pulumi.output_type
|
|
2751
|
+
class DeviceSelectorPatch(dict):
|
|
2752
|
+
"""
|
|
2753
|
+
DeviceSelector must have exactly one field set.
|
|
2754
|
+
"""
|
|
2755
|
+
def __init__(__self__, *,
|
|
2756
|
+
cel: Optional['outputs.CELDeviceSelectorPatch'] = None):
|
|
2757
|
+
"""
|
|
2758
|
+
DeviceSelector must have exactly one field set.
|
|
2759
|
+
:param 'CELDeviceSelectorPatchArgs' cel: CEL contains a CEL expression for selecting a device.
|
|
2760
|
+
"""
|
|
2761
|
+
if cel is not None:
|
|
2762
|
+
pulumi.set(__self__, "cel", cel)
|
|
2763
|
+
|
|
2764
|
+
@property
|
|
2765
|
+
@pulumi.getter
|
|
2766
|
+
def cel(self) -> Optional['outputs.CELDeviceSelectorPatch']:
|
|
2767
|
+
"""
|
|
2768
|
+
CEL contains a CEL expression for selecting a device.
|
|
2769
|
+
"""
|
|
2770
|
+
return pulumi.get(self, "cel")
|
|
2771
|
+
|
|
2772
|
+
|
|
2773
|
+
@pulumi.output_type
|
|
2774
|
+
class DeviceSubRequest(dict):
|
|
2775
|
+
"""
|
|
2776
|
+
DeviceSubRequest describes a request for device provided in the claim.spec.devices.requests[].firstAvailable array. Each is typically a request for a single resource like a device, but can also ask for several identical devices.
|
|
2777
|
+
|
|
2778
|
+
DeviceSubRequest is similar to Request, but doesn't expose the AdminAccess or FirstAvailable fields, as those can only be set on the top-level request. AdminAccess is not supported for requests with a prioritized list, and recursive FirstAvailable fields are not supported.
|
|
2779
|
+
"""
|
|
2780
|
+
@staticmethod
|
|
2781
|
+
def __key_warning(key: str):
|
|
2782
|
+
suggest = None
|
|
2783
|
+
if key == "deviceClassName":
|
|
2784
|
+
suggest = "device_class_name"
|
|
2785
|
+
elif key == "allocationMode":
|
|
2786
|
+
suggest = "allocation_mode"
|
|
2787
|
+
|
|
2788
|
+
if suggest:
|
|
2789
|
+
pulumi.log.warn(f"Key '{key}' not found in DeviceSubRequest. Access the value via the '{suggest}' property getter instead.")
|
|
2790
|
+
|
|
2791
|
+
def __getitem__(self, key: str) -> Any:
|
|
2792
|
+
DeviceSubRequest.__key_warning(key)
|
|
2793
|
+
return super().__getitem__(key)
|
|
2794
|
+
|
|
2795
|
+
def get(self, key: str, default = None) -> Any:
|
|
2796
|
+
DeviceSubRequest.__key_warning(key)
|
|
2797
|
+
return super().get(key, default)
|
|
2798
|
+
|
|
2799
|
+
def __init__(__self__, *,
|
|
2800
|
+
device_class_name: builtins.str,
|
|
2801
|
+
name: builtins.str,
|
|
2802
|
+
allocation_mode: Optional[builtins.str] = None,
|
|
2803
|
+
count: Optional[builtins.int] = None,
|
|
2804
|
+
selectors: Optional[Sequence['outputs.DeviceSelector']] = None,
|
|
2805
|
+
tolerations: Optional[Sequence['outputs.DeviceToleration']] = None):
|
|
2806
|
+
"""
|
|
2807
|
+
DeviceSubRequest describes a request for device provided in the claim.spec.devices.requests[].firstAvailable array. Each is typically a request for a single resource like a device, but can also ask for several identical devices.
|
|
2808
|
+
|
|
2809
|
+
DeviceSubRequest is similar to Request, but doesn't expose the AdminAccess or FirstAvailable fields, as those can only be set on the top-level request. AdminAccess is not supported for requests with a prioritized list, and recursive FirstAvailable fields are not supported.
|
|
2810
|
+
:param builtins.str device_class_name: DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this subrequest.
|
|
2811
|
+
|
|
2812
|
+
A class is required. Which classes are available depends on the cluster.
|
|
2813
|
+
|
|
2814
|
+
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.
|
|
2815
|
+
:param builtins.str name: Name can be used to reference this subrequest in the list of constraints or the list of configurations for the claim. References must use the format <main request>/<subrequest>.
|
|
2816
|
+
|
|
2817
|
+
Must be a DNS label.
|
|
2818
|
+
:param builtins.str allocation_mode: AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:
|
|
2819
|
+
|
|
2820
|
+
- ExactCount: This request is for a specific number of devices.
|
|
2821
|
+
This is the default. The exact number is provided in the
|
|
2822
|
+
count field.
|
|
2823
|
+
|
|
2824
|
+
- All: This request is for all of the matching devices in a pool.
|
|
2825
|
+
Allocation will fail if some devices are already allocated,
|
|
2826
|
+
unless adminAccess is requested.
|
|
2827
|
+
|
|
2828
|
+
If AllocationMode 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.
|
|
2829
|
+
|
|
2830
|
+
More modes may get added in the future. Clients must refuse to handle requests with unknown modes.
|
|
2831
|
+
:param builtins.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.
|
|
2832
|
+
: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.
|
|
2833
|
+
:param Sequence['DeviceTolerationArgs'] tolerations: If specified, the request's tolerations.
|
|
2834
|
+
|
|
2835
|
+
Tolerations for NoSchedule are required to allocate a device which has a taint with that effect. The same applies to NoExecute.
|
|
2836
|
+
|
|
2837
|
+
In addition, should any of the allocated devices get tainted with NoExecute after allocation and that effect is not tolerated, then all pods consuming the ResourceClaim get deleted to evict them. The scheduler will not let new pods reserve the claim while it has these tainted devices. Once all pods are evicted, the claim will get deallocated.
|
|
2838
|
+
|
|
2839
|
+
The maximum number of tolerations is 16.
|
|
2840
|
+
|
|
2841
|
+
This is an alpha field and requires enabling the DRADeviceTaints feature gate.
|
|
2842
|
+
"""
|
|
2843
|
+
pulumi.set(__self__, "device_class_name", device_class_name)
|
|
2844
|
+
pulumi.set(__self__, "name", name)
|
|
2845
|
+
if allocation_mode is not None:
|
|
2846
|
+
pulumi.set(__self__, "allocation_mode", allocation_mode)
|
|
2847
|
+
if count is not None:
|
|
2848
|
+
pulumi.set(__self__, "count", count)
|
|
2849
|
+
if selectors is not None:
|
|
2850
|
+
pulumi.set(__self__, "selectors", selectors)
|
|
2851
|
+
if tolerations is not None:
|
|
2852
|
+
pulumi.set(__self__, "tolerations", tolerations)
|
|
2853
|
+
|
|
2854
|
+
@property
|
|
2855
|
+
@pulumi.getter(name="deviceClassName")
|
|
2856
|
+
def device_class_name(self) -> builtins.str:
|
|
2857
|
+
"""
|
|
2858
|
+
DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this subrequest.
|
|
2859
|
+
|
|
2860
|
+
A class is required. Which classes are available depends on the cluster.
|
|
2861
|
+
|
|
2862
|
+
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.
|
|
2863
|
+
"""
|
|
2864
|
+
return pulumi.get(self, "device_class_name")
|
|
2865
|
+
|
|
2866
|
+
@property
|
|
2867
|
+
@pulumi.getter
|
|
2868
|
+
def name(self) -> builtins.str:
|
|
2869
|
+
"""
|
|
2870
|
+
Name can be used to reference this subrequest in the list of constraints or the list of configurations for the claim. References must use the format <main request>/<subrequest>.
|
|
2871
|
+
|
|
2872
|
+
Must be a DNS label.
|
|
2873
|
+
"""
|
|
2874
|
+
return pulumi.get(self, "name")
|
|
2875
|
+
|
|
2876
|
+
@property
|
|
2877
|
+
@pulumi.getter(name="allocationMode")
|
|
2878
|
+
def allocation_mode(self) -> Optional[builtins.str]:
|
|
2879
|
+
"""
|
|
2880
|
+
AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:
|
|
2881
|
+
|
|
2882
|
+
- ExactCount: This request is for a specific number of devices.
|
|
2883
|
+
This is the default. The exact number is provided in the
|
|
2884
|
+
count field.
|
|
2885
|
+
|
|
2886
|
+
- All: This request is for all of the matching devices in a pool.
|
|
2887
|
+
Allocation will fail if some devices are already allocated,
|
|
2888
|
+
unless adminAccess is requested.
|
|
2889
|
+
|
|
2890
|
+
If AllocationMode 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.
|
|
2891
|
+
|
|
2892
|
+
More modes may get added in the future. Clients must refuse to handle requests with unknown modes.
|
|
2893
|
+
"""
|
|
2894
|
+
return pulumi.get(self, "allocation_mode")
|
|
2895
|
+
|
|
2896
|
+
@property
|
|
2897
|
+
@pulumi.getter
|
|
2898
|
+
def count(self) -> Optional[builtins.int]:
|
|
2899
|
+
"""
|
|
2900
|
+
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.
|
|
2901
|
+
"""
|
|
2902
|
+
return pulumi.get(self, "count")
|
|
2903
|
+
|
|
2904
|
+
@property
|
|
2905
|
+
@pulumi.getter
|
|
2906
|
+
def selectors(self) -> Optional[Sequence['outputs.DeviceSelector']]:
|
|
2907
|
+
"""
|
|
2908
|
+
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.
|
|
2909
|
+
"""
|
|
2910
|
+
return pulumi.get(self, "selectors")
|
|
2911
|
+
|
|
2912
|
+
@property
|
|
2913
|
+
@pulumi.getter
|
|
2914
|
+
def tolerations(self) -> Optional[Sequence['outputs.DeviceToleration']]:
|
|
2915
|
+
"""
|
|
2916
|
+
If specified, the request's tolerations.
|
|
2917
|
+
|
|
2918
|
+
Tolerations for NoSchedule are required to allocate a device which has a taint with that effect. The same applies to NoExecute.
|
|
2919
|
+
|
|
2920
|
+
In addition, should any of the allocated devices get tainted with NoExecute after allocation and that effect is not tolerated, then all pods consuming the ResourceClaim get deleted to evict them. The scheduler will not let new pods reserve the claim while it has these tainted devices. Once all pods are evicted, the claim will get deallocated.
|
|
2921
|
+
|
|
2922
|
+
The maximum number of tolerations is 16.
|
|
2923
|
+
|
|
2924
|
+
This is an alpha field and requires enabling the DRADeviceTaints feature gate.
|
|
2925
|
+
"""
|
|
2926
|
+
return pulumi.get(self, "tolerations")
|
|
2927
|
+
|
|
2928
|
+
|
|
2929
|
+
@pulumi.output_type
|
|
2930
|
+
class DeviceSubRequestPatch(dict):
|
|
2931
|
+
"""
|
|
2932
|
+
DeviceSubRequest describes a request for device provided in the claim.spec.devices.requests[].firstAvailable array. Each is typically a request for a single resource like a device, but can also ask for several identical devices.
|
|
2933
|
+
|
|
2934
|
+
DeviceSubRequest is similar to Request, but doesn't expose the AdminAccess or FirstAvailable fields, as those can only be set on the top-level request. AdminAccess is not supported for requests with a prioritized list, and recursive FirstAvailable fields are not supported.
|
|
2935
|
+
"""
|
|
2936
|
+
@staticmethod
|
|
2937
|
+
def __key_warning(key: str):
|
|
2938
|
+
suggest = None
|
|
2939
|
+
if key == "allocationMode":
|
|
2940
|
+
suggest = "allocation_mode"
|
|
2941
|
+
elif key == "deviceClassName":
|
|
2942
|
+
suggest = "device_class_name"
|
|
2943
|
+
|
|
2944
|
+
if suggest:
|
|
2945
|
+
pulumi.log.warn(f"Key '{key}' not found in DeviceSubRequestPatch. Access the value via the '{suggest}' property getter instead.")
|
|
2946
|
+
|
|
2947
|
+
def __getitem__(self, key: str) -> Any:
|
|
2948
|
+
DeviceSubRequestPatch.__key_warning(key)
|
|
2949
|
+
return super().__getitem__(key)
|
|
2950
|
+
|
|
2951
|
+
def get(self, key: str, default = None) -> Any:
|
|
2952
|
+
DeviceSubRequestPatch.__key_warning(key)
|
|
2953
|
+
return super().get(key, default)
|
|
2954
|
+
|
|
2955
|
+
def __init__(__self__, *,
|
|
2956
|
+
allocation_mode: Optional[builtins.str] = None,
|
|
2957
|
+
count: Optional[builtins.int] = None,
|
|
2958
|
+
device_class_name: Optional[builtins.str] = None,
|
|
2959
|
+
name: Optional[builtins.str] = None,
|
|
2960
|
+
selectors: Optional[Sequence['outputs.DeviceSelectorPatch']] = None,
|
|
2961
|
+
tolerations: Optional[Sequence['outputs.DeviceTolerationPatch']] = None):
|
|
2962
|
+
"""
|
|
2963
|
+
DeviceSubRequest describes a request for device provided in the claim.spec.devices.requests[].firstAvailable array. Each is typically a request for a single resource like a device, but can also ask for several identical devices.
|
|
2964
|
+
|
|
2965
|
+
DeviceSubRequest is similar to Request, but doesn't expose the AdminAccess or FirstAvailable fields, as those can only be set on the top-level request. AdminAccess is not supported for requests with a prioritized list, and recursive FirstAvailable fields are not supported.
|
|
2966
|
+
:param builtins.str allocation_mode: AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:
|
|
2967
|
+
|
|
2968
|
+
- ExactCount: This request is for a specific number of devices.
|
|
2969
|
+
This is the default. The exact number is provided in the
|
|
2970
|
+
count field.
|
|
2971
|
+
|
|
2972
|
+
- All: This request is for all of the matching devices in a pool.
|
|
2973
|
+
Allocation will fail if some devices are already allocated,
|
|
2974
|
+
unless adminAccess is requested.
|
|
2975
|
+
|
|
2976
|
+
If AllocationMode 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.
|
|
2977
|
+
|
|
2978
|
+
More modes may get added in the future. Clients must refuse to handle requests with unknown modes.
|
|
2979
|
+
:param builtins.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.
|
|
2980
|
+
:param builtins.str device_class_name: DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this subrequest.
|
|
2981
|
+
|
|
2982
|
+
A class is required. Which classes are available depends on the cluster.
|
|
2983
|
+
|
|
2984
|
+
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.
|
|
2985
|
+
:param builtins.str name: Name can be used to reference this subrequest in the list of constraints or the list of configurations for the claim. References must use the format <main request>/<subrequest>.
|
|
2986
|
+
|
|
2987
|
+
Must be a DNS label.
|
|
2988
|
+
: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.
|
|
2989
|
+
:param Sequence['DeviceTolerationPatchArgs'] tolerations: If specified, the request's tolerations.
|
|
2990
|
+
|
|
2991
|
+
Tolerations for NoSchedule are required to allocate a device which has a taint with that effect. The same applies to NoExecute.
|
|
2992
|
+
|
|
2993
|
+
In addition, should any of the allocated devices get tainted with NoExecute after allocation and that effect is not tolerated, then all pods consuming the ResourceClaim get deleted to evict them. The scheduler will not let new pods reserve the claim while it has these tainted devices. Once all pods are evicted, the claim will get deallocated.
|
|
2994
|
+
|
|
2995
|
+
The maximum number of tolerations is 16.
|
|
2996
|
+
|
|
2997
|
+
This is an alpha field and requires enabling the DRADeviceTaints feature gate.
|
|
2998
|
+
"""
|
|
2999
|
+
if allocation_mode is not None:
|
|
3000
|
+
pulumi.set(__self__, "allocation_mode", allocation_mode)
|
|
3001
|
+
if count is not None:
|
|
3002
|
+
pulumi.set(__self__, "count", count)
|
|
3003
|
+
if device_class_name is not None:
|
|
3004
|
+
pulumi.set(__self__, "device_class_name", device_class_name)
|
|
3005
|
+
if name is not None:
|
|
3006
|
+
pulumi.set(__self__, "name", name)
|
|
3007
|
+
if selectors is not None:
|
|
3008
|
+
pulumi.set(__self__, "selectors", selectors)
|
|
3009
|
+
if tolerations is not None:
|
|
3010
|
+
pulumi.set(__self__, "tolerations", tolerations)
|
|
3011
|
+
|
|
3012
|
+
@property
|
|
3013
|
+
@pulumi.getter(name="allocationMode")
|
|
3014
|
+
def allocation_mode(self) -> Optional[builtins.str]:
|
|
3015
|
+
"""
|
|
3016
|
+
AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:
|
|
3017
|
+
|
|
3018
|
+
- ExactCount: This request is for a specific number of devices.
|
|
3019
|
+
This is the default. The exact number is provided in the
|
|
3020
|
+
count field.
|
|
3021
|
+
|
|
3022
|
+
- All: This request is for all of the matching devices in a pool.
|
|
3023
|
+
Allocation will fail if some devices are already allocated,
|
|
3024
|
+
unless adminAccess is requested.
|
|
3025
|
+
|
|
3026
|
+
If AllocationMode 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.
|
|
3027
|
+
|
|
3028
|
+
More modes may get added in the future. Clients must refuse to handle requests with unknown modes.
|
|
3029
|
+
"""
|
|
3030
|
+
return pulumi.get(self, "allocation_mode")
|
|
3031
|
+
|
|
3032
|
+
@property
|
|
3033
|
+
@pulumi.getter
|
|
3034
|
+
def count(self) -> Optional[builtins.int]:
|
|
3035
|
+
"""
|
|
3036
|
+
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.
|
|
3037
|
+
"""
|
|
3038
|
+
return pulumi.get(self, "count")
|
|
3039
|
+
|
|
3040
|
+
@property
|
|
3041
|
+
@pulumi.getter(name="deviceClassName")
|
|
3042
|
+
def device_class_name(self) -> Optional[builtins.str]:
|
|
3043
|
+
"""
|
|
3044
|
+
DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this subrequest.
|
|
3045
|
+
|
|
3046
|
+
A class is required. Which classes are available depends on the cluster.
|
|
3047
|
+
|
|
3048
|
+
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.
|
|
3049
|
+
"""
|
|
3050
|
+
return pulumi.get(self, "device_class_name")
|
|
3051
|
+
|
|
3052
|
+
@property
|
|
3053
|
+
@pulumi.getter
|
|
3054
|
+
def name(self) -> Optional[builtins.str]:
|
|
3055
|
+
"""
|
|
3056
|
+
Name can be used to reference this subrequest in the list of constraints or the list of configurations for the claim. References must use the format <main request>/<subrequest>.
|
|
3057
|
+
|
|
3058
|
+
Must be a DNS label.
|
|
3059
|
+
"""
|
|
3060
|
+
return pulumi.get(self, "name")
|
|
3061
|
+
|
|
3062
|
+
@property
|
|
3063
|
+
@pulumi.getter
|
|
3064
|
+
def selectors(self) -> Optional[Sequence['outputs.DeviceSelectorPatch']]:
|
|
3065
|
+
"""
|
|
3066
|
+
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.
|
|
3067
|
+
"""
|
|
3068
|
+
return pulumi.get(self, "selectors")
|
|
3069
|
+
|
|
3070
|
+
@property
|
|
3071
|
+
@pulumi.getter
|
|
3072
|
+
def tolerations(self) -> Optional[Sequence['outputs.DeviceTolerationPatch']]:
|
|
3073
|
+
"""
|
|
3074
|
+
If specified, the request's tolerations.
|
|
3075
|
+
|
|
3076
|
+
Tolerations for NoSchedule are required to allocate a device which has a taint with that effect. The same applies to NoExecute.
|
|
3077
|
+
|
|
3078
|
+
In addition, should any of the allocated devices get tainted with NoExecute after allocation and that effect is not tolerated, then all pods consuming the ResourceClaim get deleted to evict them. The scheduler will not let new pods reserve the claim while it has these tainted devices. Once all pods are evicted, the claim will get deallocated.
|
|
3079
|
+
|
|
3080
|
+
The maximum number of tolerations is 16.
|
|
3081
|
+
|
|
3082
|
+
This is an alpha field and requires enabling the DRADeviceTaints feature gate.
|
|
3083
|
+
"""
|
|
3084
|
+
return pulumi.get(self, "tolerations")
|
|
3085
|
+
|
|
3086
|
+
|
|
3087
|
+
@pulumi.output_type
|
|
3088
|
+
class DeviceTaint(dict):
|
|
3089
|
+
"""
|
|
3090
|
+
The device this taint is attached to has the "effect" on any claim which does not tolerate the taint and, through the claim, to pods using the claim.
|
|
3091
|
+
"""
|
|
3092
|
+
@staticmethod
|
|
3093
|
+
def __key_warning(key: str):
|
|
3094
|
+
suggest = None
|
|
3095
|
+
if key == "timeAdded":
|
|
3096
|
+
suggest = "time_added"
|
|
3097
|
+
|
|
3098
|
+
if suggest:
|
|
3099
|
+
pulumi.log.warn(f"Key '{key}' not found in DeviceTaint. Access the value via the '{suggest}' property getter instead.")
|
|
3100
|
+
|
|
3101
|
+
def __getitem__(self, key: str) -> Any:
|
|
3102
|
+
DeviceTaint.__key_warning(key)
|
|
3103
|
+
return super().__getitem__(key)
|
|
3104
|
+
|
|
3105
|
+
def get(self, key: str, default = None) -> Any:
|
|
3106
|
+
DeviceTaint.__key_warning(key)
|
|
3107
|
+
return super().get(key, default)
|
|
3108
|
+
|
|
3109
|
+
def __init__(__self__, *,
|
|
3110
|
+
effect: builtins.str,
|
|
3111
|
+
key: builtins.str,
|
|
3112
|
+
time_added: Optional[builtins.str] = None,
|
|
3113
|
+
value: Optional[builtins.str] = None):
|
|
3114
|
+
"""
|
|
3115
|
+
The device this taint is attached to has the "effect" on any claim which does not tolerate the taint and, through the claim, to pods using the claim.
|
|
3116
|
+
:param builtins.str effect: The effect of the taint on claims that do not tolerate the taint and through such claims on the pods using them. Valid effects are NoSchedule and NoExecute. PreferNoSchedule as used for nodes is not valid here.
|
|
3117
|
+
:param builtins.str key: The taint key to be applied to a device. Must be a label name.
|
|
3118
|
+
:param builtins.str time_added: TimeAdded represents the time at which the taint was added. Added automatically during create or update if not set.
|
|
3119
|
+
:param builtins.str value: The taint value corresponding to the taint key. Must be a label value.
|
|
3120
|
+
"""
|
|
3121
|
+
pulumi.set(__self__, "effect", effect)
|
|
3122
|
+
pulumi.set(__self__, "key", key)
|
|
3123
|
+
if time_added is not None:
|
|
3124
|
+
pulumi.set(__self__, "time_added", time_added)
|
|
3125
|
+
if value is not None:
|
|
3126
|
+
pulumi.set(__self__, "value", value)
|
|
3127
|
+
|
|
3128
|
+
@property
|
|
3129
|
+
@pulumi.getter
|
|
3130
|
+
def effect(self) -> builtins.str:
|
|
3131
|
+
"""
|
|
3132
|
+
The effect of the taint on claims that do not tolerate the taint and through such claims on the pods using them. Valid effects are NoSchedule and NoExecute. PreferNoSchedule as used for nodes is not valid here.
|
|
3133
|
+
"""
|
|
3134
|
+
return pulumi.get(self, "effect")
|
|
3135
|
+
|
|
3136
|
+
@property
|
|
3137
|
+
@pulumi.getter
|
|
3138
|
+
def key(self) -> builtins.str:
|
|
3139
|
+
"""
|
|
3140
|
+
The taint key to be applied to a device. Must be a label name.
|
|
3141
|
+
"""
|
|
3142
|
+
return pulumi.get(self, "key")
|
|
3143
|
+
|
|
3144
|
+
@property
|
|
3145
|
+
@pulumi.getter(name="timeAdded")
|
|
3146
|
+
def time_added(self) -> Optional[builtins.str]:
|
|
3147
|
+
"""
|
|
3148
|
+
TimeAdded represents the time at which the taint was added. Added automatically during create or update if not set.
|
|
3149
|
+
"""
|
|
3150
|
+
return pulumi.get(self, "time_added")
|
|
3151
|
+
|
|
3152
|
+
@property
|
|
3153
|
+
@pulumi.getter
|
|
3154
|
+
def value(self) -> Optional[builtins.str]:
|
|
3155
|
+
"""
|
|
3156
|
+
The taint value corresponding to the taint key. Must be a label value.
|
|
3157
|
+
"""
|
|
3158
|
+
return pulumi.get(self, "value")
|
|
3159
|
+
|
|
3160
|
+
|
|
3161
|
+
@pulumi.output_type
|
|
3162
|
+
class DeviceTaintPatch(dict):
|
|
3163
|
+
"""
|
|
3164
|
+
The device this taint is attached to has the "effect" on any claim which does not tolerate the taint and, through the claim, to pods using the claim.
|
|
3165
|
+
"""
|
|
3166
|
+
@staticmethod
|
|
3167
|
+
def __key_warning(key: str):
|
|
3168
|
+
suggest = None
|
|
3169
|
+
if key == "timeAdded":
|
|
3170
|
+
suggest = "time_added"
|
|
3171
|
+
|
|
3172
|
+
if suggest:
|
|
3173
|
+
pulumi.log.warn(f"Key '{key}' not found in DeviceTaintPatch. Access the value via the '{suggest}' property getter instead.")
|
|
3174
|
+
|
|
3175
|
+
def __getitem__(self, key: str) -> Any:
|
|
3176
|
+
DeviceTaintPatch.__key_warning(key)
|
|
3177
|
+
return super().__getitem__(key)
|
|
3178
|
+
|
|
3179
|
+
def get(self, key: str, default = None) -> Any:
|
|
3180
|
+
DeviceTaintPatch.__key_warning(key)
|
|
3181
|
+
return super().get(key, default)
|
|
3182
|
+
|
|
3183
|
+
def __init__(__self__, *,
|
|
3184
|
+
effect: Optional[builtins.str] = None,
|
|
3185
|
+
key: Optional[builtins.str] = None,
|
|
3186
|
+
time_added: Optional[builtins.str] = None,
|
|
3187
|
+
value: Optional[builtins.str] = None):
|
|
3188
|
+
"""
|
|
3189
|
+
The device this taint is attached to has the "effect" on any claim which does not tolerate the taint and, through the claim, to pods using the claim.
|
|
3190
|
+
:param builtins.str effect: The effect of the taint on claims that do not tolerate the taint and through such claims on the pods using them. Valid effects are NoSchedule and NoExecute. PreferNoSchedule as used for nodes is not valid here.
|
|
3191
|
+
:param builtins.str key: The taint key to be applied to a device. Must be a label name.
|
|
3192
|
+
:param builtins.str time_added: TimeAdded represents the time at which the taint was added. Added automatically during create or update if not set.
|
|
3193
|
+
:param builtins.str value: The taint value corresponding to the taint key. Must be a label value.
|
|
3194
|
+
"""
|
|
3195
|
+
if effect is not None:
|
|
3196
|
+
pulumi.set(__self__, "effect", effect)
|
|
3197
|
+
if key is not None:
|
|
3198
|
+
pulumi.set(__self__, "key", key)
|
|
3199
|
+
if time_added is not None:
|
|
3200
|
+
pulumi.set(__self__, "time_added", time_added)
|
|
3201
|
+
if value is not None:
|
|
3202
|
+
pulumi.set(__self__, "value", value)
|
|
3203
|
+
|
|
3204
|
+
@property
|
|
3205
|
+
@pulumi.getter
|
|
3206
|
+
def effect(self) -> Optional[builtins.str]:
|
|
3207
|
+
"""
|
|
3208
|
+
The effect of the taint on claims that do not tolerate the taint and through such claims on the pods using them. Valid effects are NoSchedule and NoExecute. PreferNoSchedule as used for nodes is not valid here.
|
|
3209
|
+
"""
|
|
3210
|
+
return pulumi.get(self, "effect")
|
|
3211
|
+
|
|
3212
|
+
@property
|
|
3213
|
+
@pulumi.getter
|
|
3214
|
+
def key(self) -> Optional[builtins.str]:
|
|
3215
|
+
"""
|
|
3216
|
+
The taint key to be applied to a device. Must be a label name.
|
|
3217
|
+
"""
|
|
3218
|
+
return pulumi.get(self, "key")
|
|
3219
|
+
|
|
3220
|
+
@property
|
|
3221
|
+
@pulumi.getter(name="timeAdded")
|
|
3222
|
+
def time_added(self) -> Optional[builtins.str]:
|
|
3223
|
+
"""
|
|
3224
|
+
TimeAdded represents the time at which the taint was added. Added automatically during create or update if not set.
|
|
3225
|
+
"""
|
|
3226
|
+
return pulumi.get(self, "time_added")
|
|
3227
|
+
|
|
3228
|
+
@property
|
|
3229
|
+
@pulumi.getter
|
|
3230
|
+
def value(self) -> Optional[builtins.str]:
|
|
3231
|
+
"""
|
|
3232
|
+
The taint value corresponding to the taint key. Must be a label value.
|
|
3233
|
+
"""
|
|
3234
|
+
return pulumi.get(self, "value")
|
|
3235
|
+
|
|
3236
|
+
|
|
3237
|
+
@pulumi.output_type
|
|
3238
|
+
class DeviceTaintRule(dict):
|
|
3239
|
+
"""
|
|
3240
|
+
DeviceTaintRule adds one taint to all devices which match the selector. This has the same effect as if the taint was specified directly in the ResourceSlice by the DRA driver.
|
|
3241
|
+
"""
|
|
3242
|
+
@staticmethod
|
|
3243
|
+
def __key_warning(key: str):
|
|
3244
|
+
suggest = None
|
|
3245
|
+
if key == "apiVersion":
|
|
3246
|
+
suggest = "api_version"
|
|
3247
|
+
|
|
3248
|
+
if suggest:
|
|
3249
|
+
pulumi.log.warn(f"Key '{key}' not found in DeviceTaintRule. Access the value via the '{suggest}' property getter instead.")
|
|
3250
|
+
|
|
3251
|
+
def __getitem__(self, key: str) -> Any:
|
|
3252
|
+
DeviceTaintRule.__key_warning(key)
|
|
3253
|
+
return super().__getitem__(key)
|
|
3254
|
+
|
|
3255
|
+
def get(self, key: str, default = None) -> Any:
|
|
3256
|
+
DeviceTaintRule.__key_warning(key)
|
|
3257
|
+
return super().get(key, default)
|
|
3258
|
+
|
|
3259
|
+
def __init__(__self__, *,
|
|
3260
|
+
spec: 'outputs.DeviceTaintRuleSpec',
|
|
3261
|
+
api_version: Optional[builtins.str] = None,
|
|
3262
|
+
kind: Optional[builtins.str] = None,
|
|
3263
|
+
metadata: Optional['_meta.v1.outputs.ObjectMeta'] = None):
|
|
3264
|
+
"""
|
|
3265
|
+
DeviceTaintRule adds one taint to all devices which match the selector. This has the same effect as if the taint was specified directly in the ResourceSlice by the DRA driver.
|
|
3266
|
+
:param 'DeviceTaintRuleSpecArgs' spec: Spec specifies the selector and one taint.
|
|
3267
|
+
|
|
3268
|
+
Changing the spec automatically increments the metadata.generation number.
|
|
3269
|
+
:param builtins.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
|
|
3270
|
+
:param builtins.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
|
|
3271
|
+
:param '_meta.v1.ObjectMetaArgs' metadata: Standard object metadata
|
|
3272
|
+
"""
|
|
3273
|
+
pulumi.set(__self__, "spec", spec)
|
|
3274
|
+
if api_version is not None:
|
|
3275
|
+
pulumi.set(__self__, "api_version", 'resource.k8s.io/v1alpha3')
|
|
3276
|
+
if kind is not None:
|
|
3277
|
+
pulumi.set(__self__, "kind", 'DeviceTaintRule')
|
|
3278
|
+
if metadata is not None:
|
|
3279
|
+
pulumi.set(__self__, "metadata", metadata)
|
|
3280
|
+
|
|
3281
|
+
@property
|
|
3282
|
+
@pulumi.getter
|
|
3283
|
+
def spec(self) -> 'outputs.DeviceTaintRuleSpec':
|
|
3284
|
+
"""
|
|
3285
|
+
Spec specifies the selector and one taint.
|
|
3286
|
+
|
|
3287
|
+
Changing the spec automatically increments the metadata.generation number.
|
|
3288
|
+
"""
|
|
3289
|
+
return pulumi.get(self, "spec")
|
|
3290
|
+
|
|
3291
|
+
@property
|
|
3292
|
+
@pulumi.getter(name="apiVersion")
|
|
3293
|
+
def api_version(self) -> Optional[builtins.str]:
|
|
3294
|
+
"""
|
|
3295
|
+
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
|
|
3296
|
+
"""
|
|
3297
|
+
return pulumi.get(self, "api_version")
|
|
3298
|
+
|
|
3299
|
+
@property
|
|
3300
|
+
@pulumi.getter
|
|
3301
|
+
def kind(self) -> Optional[builtins.str]:
|
|
3302
|
+
"""
|
|
3303
|
+
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
|
|
3304
|
+
"""
|
|
3305
|
+
return pulumi.get(self, "kind")
|
|
3306
|
+
|
|
3307
|
+
@property
|
|
3308
|
+
@pulumi.getter
|
|
3309
|
+
def metadata(self) -> Optional['_meta.v1.outputs.ObjectMeta']:
|
|
3310
|
+
"""
|
|
3311
|
+
Standard object metadata
|
|
3312
|
+
"""
|
|
3313
|
+
return pulumi.get(self, "metadata")
|
|
3314
|
+
|
|
3315
|
+
|
|
3316
|
+
@pulumi.output_type
|
|
3317
|
+
class DeviceTaintRuleSpec(dict):
|
|
3318
|
+
"""
|
|
3319
|
+
DeviceTaintRuleSpec specifies the selector and one taint.
|
|
3320
|
+
"""
|
|
3321
|
+
@staticmethod
|
|
3322
|
+
def __key_warning(key: str):
|
|
3323
|
+
suggest = None
|
|
3324
|
+
if key == "deviceSelector":
|
|
3325
|
+
suggest = "device_selector"
|
|
3326
|
+
|
|
3327
|
+
if suggest:
|
|
3328
|
+
pulumi.log.warn(f"Key '{key}' not found in DeviceTaintRuleSpec. Access the value via the '{suggest}' property getter instead.")
|
|
3329
|
+
|
|
3330
|
+
def __getitem__(self, key: str) -> Any:
|
|
3331
|
+
DeviceTaintRuleSpec.__key_warning(key)
|
|
3332
|
+
return super().__getitem__(key)
|
|
3333
|
+
|
|
3334
|
+
def get(self, key: str, default = None) -> Any:
|
|
3335
|
+
DeviceTaintRuleSpec.__key_warning(key)
|
|
3336
|
+
return super().get(key, default)
|
|
3337
|
+
|
|
3338
|
+
def __init__(__self__, *,
|
|
3339
|
+
taint: 'outputs.DeviceTaint',
|
|
3340
|
+
device_selector: Optional['outputs.DeviceTaintSelector'] = None):
|
|
3341
|
+
"""
|
|
3342
|
+
DeviceTaintRuleSpec specifies the selector and one taint.
|
|
3343
|
+
:param 'DeviceTaintArgs' taint: The taint that gets applied to matching devices.
|
|
3344
|
+
:param 'DeviceTaintSelectorArgs' device_selector: DeviceSelector defines which device(s) the taint is applied to. All selector criteria must be satified for a device to match. The empty selector matches all devices. Without a selector, no devices are matches.
|
|
3345
|
+
"""
|
|
3346
|
+
pulumi.set(__self__, "taint", taint)
|
|
3347
|
+
if device_selector is not None:
|
|
3348
|
+
pulumi.set(__self__, "device_selector", device_selector)
|
|
3349
|
+
|
|
3350
|
+
@property
|
|
3351
|
+
@pulumi.getter
|
|
3352
|
+
def taint(self) -> 'outputs.DeviceTaint':
|
|
3353
|
+
"""
|
|
3354
|
+
The taint that gets applied to matching devices.
|
|
3355
|
+
"""
|
|
3356
|
+
return pulumi.get(self, "taint")
|
|
3357
|
+
|
|
3358
|
+
@property
|
|
3359
|
+
@pulumi.getter(name="deviceSelector")
|
|
3360
|
+
def device_selector(self) -> Optional['outputs.DeviceTaintSelector']:
|
|
3361
|
+
"""
|
|
3362
|
+
DeviceSelector defines which device(s) the taint is applied to. All selector criteria must be satified for a device to match. The empty selector matches all devices. Without a selector, no devices are matches.
|
|
3363
|
+
"""
|
|
3364
|
+
return pulumi.get(self, "device_selector")
|
|
3365
|
+
|
|
3366
|
+
|
|
3367
|
+
@pulumi.output_type
|
|
3368
|
+
class DeviceTaintRuleSpecPatch(dict):
|
|
3369
|
+
"""
|
|
3370
|
+
DeviceTaintRuleSpec specifies the selector and one taint.
|
|
3371
|
+
"""
|
|
3372
|
+
@staticmethod
|
|
3373
|
+
def __key_warning(key: str):
|
|
3374
|
+
suggest = None
|
|
3375
|
+
if key == "deviceSelector":
|
|
3376
|
+
suggest = "device_selector"
|
|
3377
|
+
|
|
3378
|
+
if suggest:
|
|
3379
|
+
pulumi.log.warn(f"Key '{key}' not found in DeviceTaintRuleSpecPatch. Access the value via the '{suggest}' property getter instead.")
|
|
3380
|
+
|
|
3381
|
+
def __getitem__(self, key: str) -> Any:
|
|
3382
|
+
DeviceTaintRuleSpecPatch.__key_warning(key)
|
|
3383
|
+
return super().__getitem__(key)
|
|
3384
|
+
|
|
3385
|
+
def get(self, key: str, default = None) -> Any:
|
|
3386
|
+
DeviceTaintRuleSpecPatch.__key_warning(key)
|
|
3387
|
+
return super().get(key, default)
|
|
3388
|
+
|
|
3389
|
+
def __init__(__self__, *,
|
|
3390
|
+
device_selector: Optional['outputs.DeviceTaintSelectorPatch'] = None,
|
|
3391
|
+
taint: Optional['outputs.DeviceTaintPatch'] = None):
|
|
3392
|
+
"""
|
|
3393
|
+
DeviceTaintRuleSpec specifies the selector and one taint.
|
|
3394
|
+
:param 'DeviceTaintSelectorPatchArgs' device_selector: DeviceSelector defines which device(s) the taint is applied to. All selector criteria must be satified for a device to match. The empty selector matches all devices. Without a selector, no devices are matches.
|
|
3395
|
+
:param 'DeviceTaintPatchArgs' taint: The taint that gets applied to matching devices.
|
|
3396
|
+
"""
|
|
3397
|
+
if device_selector is not None:
|
|
3398
|
+
pulumi.set(__self__, "device_selector", device_selector)
|
|
3399
|
+
if taint is not None:
|
|
3400
|
+
pulumi.set(__self__, "taint", taint)
|
|
3401
|
+
|
|
3402
|
+
@property
|
|
3403
|
+
@pulumi.getter(name="deviceSelector")
|
|
3404
|
+
def device_selector(self) -> Optional['outputs.DeviceTaintSelectorPatch']:
|
|
3405
|
+
"""
|
|
3406
|
+
DeviceSelector defines which device(s) the taint is applied to. All selector criteria must be satified for a device to match. The empty selector matches all devices. Without a selector, no devices are matches.
|
|
3407
|
+
"""
|
|
3408
|
+
return pulumi.get(self, "device_selector")
|
|
3409
|
+
|
|
3410
|
+
@property
|
|
3411
|
+
@pulumi.getter
|
|
3412
|
+
def taint(self) -> Optional['outputs.DeviceTaintPatch']:
|
|
3413
|
+
"""
|
|
3414
|
+
The taint that gets applied to matching devices.
|
|
3415
|
+
"""
|
|
3416
|
+
return pulumi.get(self, "taint")
|
|
3417
|
+
|
|
3418
|
+
|
|
3419
|
+
@pulumi.output_type
|
|
3420
|
+
class DeviceTaintSelector(dict):
|
|
3421
|
+
"""
|
|
3422
|
+
DeviceTaintSelector defines which device(s) a DeviceTaintRule applies to. The empty selector matches all devices. Without a selector, no devices are matched.
|
|
3423
|
+
"""
|
|
3424
|
+
@staticmethod
|
|
3425
|
+
def __key_warning(key: str):
|
|
3426
|
+
suggest = None
|
|
3427
|
+
if key == "deviceClassName":
|
|
3428
|
+
suggest = "device_class_name"
|
|
3429
|
+
|
|
3430
|
+
if suggest:
|
|
3431
|
+
pulumi.log.warn(f"Key '{key}' not found in DeviceTaintSelector. Access the value via the '{suggest}' property getter instead.")
|
|
3432
|
+
|
|
3433
|
+
def __getitem__(self, key: str) -> Any:
|
|
3434
|
+
DeviceTaintSelector.__key_warning(key)
|
|
3435
|
+
return super().__getitem__(key)
|
|
3436
|
+
|
|
3437
|
+
def get(self, key: str, default = None) -> Any:
|
|
3438
|
+
DeviceTaintSelector.__key_warning(key)
|
|
3439
|
+
return super().get(key, default)
|
|
3440
|
+
|
|
3441
|
+
def __init__(__self__, *,
|
|
3442
|
+
device: Optional[builtins.str] = None,
|
|
3443
|
+
device_class_name: Optional[builtins.str] = None,
|
|
3444
|
+
driver: Optional[builtins.str] = None,
|
|
3445
|
+
pool: Optional[builtins.str] = None,
|
|
3446
|
+
selectors: Optional[Sequence['outputs.DeviceSelector']] = None):
|
|
3447
|
+
"""
|
|
3448
|
+
DeviceTaintSelector defines which device(s) a DeviceTaintRule applies to. The empty selector matches all devices. Without a selector, no devices are matched.
|
|
3449
|
+
:param builtins.str device: If device is set, only devices with that name are selected. This field corresponds to slice.spec.devices[].name.
|
|
3450
|
+
|
|
3451
|
+
Setting also driver and pool may be required to avoid ambiguity, but is not required.
|
|
3452
|
+
:param builtins.str device_class_name: If DeviceClassName is set, the selectors defined there must be satisfied by a device to be selected. This field corresponds to class.metadata.name.
|
|
3453
|
+
:param builtins.str driver: If driver is set, only devices from that driver are selected. This fields corresponds to slice.spec.driver.
|
|
3454
|
+
:param builtins.str pool: If pool is set, only devices in that pool are selected.
|
|
3455
|
+
|
|
3456
|
+
Also setting the driver name may be useful to avoid ambiguity when different drivers use the same pool name, but this is not required because selecting pools from different drivers may also be useful, for example when drivers with node-local devices use the node name as their pool name.
|
|
3457
|
+
:param Sequence['DeviceSelectorArgs'] selectors: Selectors contains the same selection criteria as a ResourceClaim. Currently, CEL expressions are supported. All of these selectors must be satisfied.
|
|
3458
|
+
"""
|
|
3459
|
+
if device is not None:
|
|
3460
|
+
pulumi.set(__self__, "device", device)
|
|
3461
|
+
if device_class_name is not None:
|
|
3462
|
+
pulumi.set(__self__, "device_class_name", device_class_name)
|
|
3463
|
+
if driver is not None:
|
|
3464
|
+
pulumi.set(__self__, "driver", driver)
|
|
3465
|
+
if pool is not None:
|
|
3466
|
+
pulumi.set(__self__, "pool", pool)
|
|
3467
|
+
if selectors is not None:
|
|
3468
|
+
pulumi.set(__self__, "selectors", selectors)
|
|
3469
|
+
|
|
3470
|
+
@property
|
|
3471
|
+
@pulumi.getter
|
|
3472
|
+
def device(self) -> Optional[builtins.str]:
|
|
3473
|
+
"""
|
|
3474
|
+
If device is set, only devices with that name are selected. This field corresponds to slice.spec.devices[].name.
|
|
3475
|
+
|
|
3476
|
+
Setting also driver and pool may be required to avoid ambiguity, but is not required.
|
|
3477
|
+
"""
|
|
3478
|
+
return pulumi.get(self, "device")
|
|
3479
|
+
|
|
3480
|
+
@property
|
|
3481
|
+
@pulumi.getter(name="deviceClassName")
|
|
3482
|
+
def device_class_name(self) -> Optional[builtins.str]:
|
|
3483
|
+
"""
|
|
3484
|
+
If DeviceClassName is set, the selectors defined there must be satisfied by a device to be selected. This field corresponds to class.metadata.name.
|
|
3485
|
+
"""
|
|
3486
|
+
return pulumi.get(self, "device_class_name")
|
|
3487
|
+
|
|
3488
|
+
@property
|
|
3489
|
+
@pulumi.getter
|
|
3490
|
+
def driver(self) -> Optional[builtins.str]:
|
|
3491
|
+
"""
|
|
3492
|
+
If driver is set, only devices from that driver are selected. This fields corresponds to slice.spec.driver.
|
|
3493
|
+
"""
|
|
3494
|
+
return pulumi.get(self, "driver")
|
|
3495
|
+
|
|
3496
|
+
@property
|
|
3497
|
+
@pulumi.getter
|
|
3498
|
+
def pool(self) -> Optional[builtins.str]:
|
|
1774
3499
|
"""
|
|
1775
|
-
|
|
3500
|
+
If pool is set, only devices in that pool are selected.
|
|
1776
3501
|
|
|
1777
|
-
|
|
3502
|
+
Also setting the driver name may be useful to avoid ambiguity when different drivers use the same pool name, but this is not required because selecting pools from different drivers may also be useful, for example when drivers with node-local devices use the node name as their pool name.
|
|
1778
3503
|
"""
|
|
1779
3504
|
return pulumi.get(self, "pool")
|
|
1780
3505
|
|
|
1781
3506
|
@property
|
|
1782
3507
|
@pulumi.getter
|
|
1783
|
-
def
|
|
1784
|
-
"""
|
|
1785
|
-
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.
|
|
1786
|
-
"""
|
|
1787
|
-
return pulumi.get(self, "request")
|
|
1788
|
-
|
|
1789
|
-
@property
|
|
1790
|
-
@pulumi.getter(name="adminAccess")
|
|
1791
|
-
def admin_access(self) -> Optional[builtins.bool]:
|
|
3508
|
+
def selectors(self) -> Optional[Sequence['outputs.DeviceSelector']]:
|
|
1792
3509
|
"""
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
This is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.
|
|
3510
|
+
Selectors contains the same selection criteria as a ResourceClaim. Currently, CEL expressions are supported. All of these selectors must be satisfied.
|
|
1796
3511
|
"""
|
|
1797
|
-
return pulumi.get(self, "
|
|
3512
|
+
return pulumi.get(self, "selectors")
|
|
1798
3513
|
|
|
1799
3514
|
|
|
1800
3515
|
@pulumi.output_type
|
|
1801
|
-
class
|
|
3516
|
+
class DeviceTaintSelectorPatch(dict):
|
|
1802
3517
|
"""
|
|
1803
|
-
|
|
3518
|
+
DeviceTaintSelector defines which device(s) a DeviceTaintRule applies to. The empty selector matches all devices. Without a selector, no devices are matched.
|
|
1804
3519
|
"""
|
|
1805
3520
|
@staticmethod
|
|
1806
3521
|
def __key_warning(key: str):
|
|
1807
3522
|
suggest = None
|
|
1808
|
-
if key == "
|
|
1809
|
-
suggest = "
|
|
3523
|
+
if key == "deviceClassName":
|
|
3524
|
+
suggest = "device_class_name"
|
|
1810
3525
|
|
|
1811
3526
|
if suggest:
|
|
1812
|
-
pulumi.log.warn(f"Key '{key}' not found in
|
|
3527
|
+
pulumi.log.warn(f"Key '{key}' not found in DeviceTaintSelectorPatch. Access the value via the '{suggest}' property getter instead.")
|
|
1813
3528
|
|
|
1814
3529
|
def __getitem__(self, key: str) -> Any:
|
|
1815
|
-
|
|
3530
|
+
DeviceTaintSelectorPatch.__key_warning(key)
|
|
1816
3531
|
return super().__getitem__(key)
|
|
1817
3532
|
|
|
1818
3533
|
def get(self, key: str, default = None) -> Any:
|
|
1819
|
-
|
|
3534
|
+
DeviceTaintSelectorPatch.__key_warning(key)
|
|
1820
3535
|
return super().get(key, default)
|
|
1821
3536
|
|
|
1822
3537
|
def __init__(__self__, *,
|
|
1823
|
-
admin_access: Optional[builtins.bool] = None,
|
|
1824
3538
|
device: Optional[builtins.str] = None,
|
|
3539
|
+
device_class_name: Optional[builtins.str] = None,
|
|
1825
3540
|
driver: Optional[builtins.str] = None,
|
|
1826
3541
|
pool: Optional[builtins.str] = None,
|
|
1827
|
-
|
|
3542
|
+
selectors: Optional[Sequence['outputs.DeviceSelectorPatch']] = None):
|
|
1828
3543
|
"""
|
|
1829
|
-
|
|
1830
|
-
:param builtins.
|
|
1831
|
-
|
|
1832
|
-
This is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.
|
|
1833
|
-
:param builtins.str device: Device references one device instance via its name in the driver's resource pool. It must be a DNS label.
|
|
1834
|
-
:param builtins.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.
|
|
3544
|
+
DeviceTaintSelector defines which device(s) a DeviceTaintRule applies to. The empty selector matches all devices. Without a selector, no devices are matched.
|
|
3545
|
+
:param builtins.str device: If device is set, only devices with that name are selected. This field corresponds to slice.spec.devices[].name.
|
|
1835
3546
|
|
|
1836
|
-
|
|
1837
|
-
:param builtins.str
|
|
3547
|
+
Setting also driver and pool may be required to avoid ambiguity, but is not required.
|
|
3548
|
+
:param builtins.str device_class_name: If DeviceClassName is set, the selectors defined there must be satisfied by a device to be selected. This field corresponds to class.metadata.name.
|
|
3549
|
+
:param builtins.str driver: If driver is set, only devices from that driver are selected. This fields corresponds to slice.spec.driver.
|
|
3550
|
+
:param builtins.str pool: If pool is set, only devices in that pool are selected.
|
|
1838
3551
|
|
|
1839
|
-
|
|
1840
|
-
:param
|
|
3552
|
+
Also setting the driver name may be useful to avoid ambiguity when different drivers use the same pool name, but this is not required because selecting pools from different drivers may also be useful, for example when drivers with node-local devices use the node name as their pool name.
|
|
3553
|
+
:param Sequence['DeviceSelectorPatchArgs'] selectors: Selectors contains the same selection criteria as a ResourceClaim. Currently, CEL expressions are supported. All of these selectors must be satisfied.
|
|
1841
3554
|
"""
|
|
1842
|
-
if admin_access is not None:
|
|
1843
|
-
pulumi.set(__self__, "admin_access", admin_access)
|
|
1844
3555
|
if device is not None:
|
|
1845
3556
|
pulumi.set(__self__, "device", device)
|
|
3557
|
+
if device_class_name is not None:
|
|
3558
|
+
pulumi.set(__self__, "device_class_name", device_class_name)
|
|
1846
3559
|
if driver is not None:
|
|
1847
3560
|
pulumi.set(__self__, "driver", driver)
|
|
1848
3561
|
if pool is not None:
|
|
1849
3562
|
pulumi.set(__self__, "pool", pool)
|
|
1850
|
-
if
|
|
1851
|
-
pulumi.set(__self__, "
|
|
3563
|
+
if selectors is not None:
|
|
3564
|
+
pulumi.set(__self__, "selectors", selectors)
|
|
1852
3565
|
|
|
1853
3566
|
@property
|
|
1854
|
-
@pulumi.getter
|
|
1855
|
-
def
|
|
3567
|
+
@pulumi.getter
|
|
3568
|
+
def device(self) -> Optional[builtins.str]:
|
|
1856
3569
|
"""
|
|
1857
|
-
|
|
3570
|
+
If device is set, only devices with that name are selected. This field corresponds to slice.spec.devices[].name.
|
|
1858
3571
|
|
|
1859
|
-
|
|
3572
|
+
Setting also driver and pool may be required to avoid ambiguity, but is not required.
|
|
1860
3573
|
"""
|
|
1861
|
-
return pulumi.get(self, "
|
|
3574
|
+
return pulumi.get(self, "device")
|
|
1862
3575
|
|
|
1863
3576
|
@property
|
|
1864
|
-
@pulumi.getter
|
|
1865
|
-
def
|
|
3577
|
+
@pulumi.getter(name="deviceClassName")
|
|
3578
|
+
def device_class_name(self) -> Optional[builtins.str]:
|
|
1866
3579
|
"""
|
|
1867
|
-
|
|
3580
|
+
If DeviceClassName is set, the selectors defined there must be satisfied by a device to be selected. This field corresponds to class.metadata.name.
|
|
1868
3581
|
"""
|
|
1869
|
-
return pulumi.get(self, "
|
|
3582
|
+
return pulumi.get(self, "device_class_name")
|
|
1870
3583
|
|
|
1871
3584
|
@property
|
|
1872
3585
|
@pulumi.getter
|
|
1873
3586
|
def driver(self) -> Optional[builtins.str]:
|
|
1874
3587
|
"""
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.
|
|
3588
|
+
If driver is set, only devices from that driver are selected. This fields corresponds to slice.spec.driver.
|
|
1878
3589
|
"""
|
|
1879
3590
|
return pulumi.get(self, "driver")
|
|
1880
3591
|
|
|
@@ -1882,213 +3593,195 @@ class DeviceRequestAllocationResultPatch(dict):
|
|
|
1882
3593
|
@pulumi.getter
|
|
1883
3594
|
def pool(self) -> Optional[builtins.str]:
|
|
1884
3595
|
"""
|
|
1885
|
-
|
|
3596
|
+
If pool is set, only devices in that pool are selected.
|
|
1886
3597
|
|
|
1887
|
-
|
|
3598
|
+
Also setting the driver name may be useful to avoid ambiguity when different drivers use the same pool name, but this is not required because selecting pools from different drivers may also be useful, for example when drivers with node-local devices use the node name as their pool name.
|
|
1888
3599
|
"""
|
|
1889
3600
|
return pulumi.get(self, "pool")
|
|
1890
3601
|
|
|
1891
3602
|
@property
|
|
1892
3603
|
@pulumi.getter
|
|
1893
|
-
def
|
|
3604
|
+
def selectors(self) -> Optional[Sequence['outputs.DeviceSelectorPatch']]:
|
|
1894
3605
|
"""
|
|
1895
|
-
|
|
3606
|
+
Selectors contains the same selection criteria as a ResourceClaim. Currently, CEL expressions are supported. All of these selectors must be satisfied.
|
|
1896
3607
|
"""
|
|
1897
|
-
return pulumi.get(self, "
|
|
3608
|
+
return pulumi.get(self, "selectors")
|
|
1898
3609
|
|
|
1899
3610
|
|
|
1900
3611
|
@pulumi.output_type
|
|
1901
|
-
class
|
|
3612
|
+
class DeviceToleration(dict):
|
|
1902
3613
|
"""
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
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.
|
|
3614
|
+
The ResourceClaim this DeviceToleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
|
|
1906
3615
|
"""
|
|
1907
3616
|
@staticmethod
|
|
1908
3617
|
def __key_warning(key: str):
|
|
1909
3618
|
suggest = None
|
|
1910
|
-
if key == "
|
|
1911
|
-
suggest = "
|
|
1912
|
-
elif key == "allocationMode":
|
|
1913
|
-
suggest = "allocation_mode"
|
|
1914
|
-
elif key == "deviceClassName":
|
|
1915
|
-
suggest = "device_class_name"
|
|
3619
|
+
if key == "tolerationSeconds":
|
|
3620
|
+
suggest = "toleration_seconds"
|
|
1916
3621
|
|
|
1917
3622
|
if suggest:
|
|
1918
|
-
pulumi.log.warn(f"Key '{key}' not found in
|
|
3623
|
+
pulumi.log.warn(f"Key '{key}' not found in DeviceToleration. Access the value via the '{suggest}' property getter instead.")
|
|
1919
3624
|
|
|
1920
3625
|
def __getitem__(self, key: str) -> Any:
|
|
1921
|
-
|
|
3626
|
+
DeviceToleration.__key_warning(key)
|
|
1922
3627
|
return super().__getitem__(key)
|
|
1923
3628
|
|
|
1924
3629
|
def get(self, key: str, default = None) -> Any:
|
|
1925
|
-
|
|
3630
|
+
DeviceToleration.__key_warning(key)
|
|
1926
3631
|
return super().get(key, default)
|
|
1927
3632
|
|
|
1928
3633
|
def __init__(__self__, *,
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
:param builtins.
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
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.
|
|
1953
|
-
|
|
1954
|
-
More modes may get added in the future. Clients must refuse to handle requests with unknown modes.
|
|
1955
|
-
:param builtins.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.
|
|
1956
|
-
:param builtins.str device_class_name: DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request.
|
|
1957
|
-
|
|
1958
|
-
A class is required. Which classes are available depends on the cluster.
|
|
1959
|
-
|
|
1960
|
-
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.
|
|
1961
|
-
:param builtins.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.
|
|
1962
|
-
|
|
1963
|
-
Must be a DNS label.
|
|
1964
|
-
: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.
|
|
1965
|
-
"""
|
|
1966
|
-
if admin_access is not None:
|
|
1967
|
-
pulumi.set(__self__, "admin_access", admin_access)
|
|
1968
|
-
if allocation_mode is not None:
|
|
1969
|
-
pulumi.set(__self__, "allocation_mode", allocation_mode)
|
|
1970
|
-
if count is not None:
|
|
1971
|
-
pulumi.set(__self__, "count", count)
|
|
1972
|
-
if device_class_name is not None:
|
|
1973
|
-
pulumi.set(__self__, "device_class_name", device_class_name)
|
|
1974
|
-
if name is not None:
|
|
1975
|
-
pulumi.set(__self__, "name", name)
|
|
1976
|
-
if selectors is not None:
|
|
1977
|
-
pulumi.set(__self__, "selectors", selectors)
|
|
1978
|
-
|
|
1979
|
-
@property
|
|
1980
|
-
@pulumi.getter(name="adminAccess")
|
|
1981
|
-
def admin_access(self) -> Optional[builtins.bool]:
|
|
1982
|
-
"""
|
|
1983
|
-
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.
|
|
1984
|
-
|
|
1985
|
-
This is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.
|
|
1986
|
-
"""
|
|
1987
|
-
return pulumi.get(self, "admin_access")
|
|
3634
|
+
effect: Optional[builtins.str] = None,
|
|
3635
|
+
key: Optional[builtins.str] = None,
|
|
3636
|
+
operator: Optional[builtins.str] = None,
|
|
3637
|
+
toleration_seconds: Optional[builtins.int] = None,
|
|
3638
|
+
value: Optional[builtins.str] = None):
|
|
3639
|
+
"""
|
|
3640
|
+
The ResourceClaim this DeviceToleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
|
|
3641
|
+
:param builtins.str effect: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule and NoExecute.
|
|
3642
|
+
:param builtins.str key: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. Must be a label name.
|
|
3643
|
+
:param builtins.str operator: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a ResourceClaim can tolerate all taints of a particular category.
|
|
3644
|
+
:param builtins.int toleration_seconds: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. If larger than zero, the time when the pod needs to be evicted is calculated as <time when taint was adedd> + <toleration seconds>.
|
|
3645
|
+
:param builtins.str value: Value is the taint value the toleration matches to. If the operator is Exists, the value must be empty, otherwise just a regular string. Must be a label value.
|
|
3646
|
+
"""
|
|
3647
|
+
if effect is not None:
|
|
3648
|
+
pulumi.set(__self__, "effect", effect)
|
|
3649
|
+
if key is not None:
|
|
3650
|
+
pulumi.set(__self__, "key", key)
|
|
3651
|
+
if operator is not None:
|
|
3652
|
+
pulumi.set(__self__, "operator", operator)
|
|
3653
|
+
if toleration_seconds is not None:
|
|
3654
|
+
pulumi.set(__self__, "toleration_seconds", toleration_seconds)
|
|
3655
|
+
if value is not None:
|
|
3656
|
+
pulumi.set(__self__, "value", value)
|
|
1988
3657
|
|
|
1989
3658
|
@property
|
|
1990
|
-
@pulumi.getter
|
|
1991
|
-
def
|
|
3659
|
+
@pulumi.getter
|
|
3660
|
+
def effect(self) -> Optional[builtins.str]:
|
|
1992
3661
|
"""
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
- ExactCount: This request is for a specific number of devices.
|
|
1996
|
-
This is the default. The exact number is provided in the
|
|
1997
|
-
count field.
|
|
1998
|
-
|
|
1999
|
-
- All: This request is for all of the matching devices in a pool.
|
|
2000
|
-
Allocation will fail if some devices are already allocated,
|
|
2001
|
-
unless adminAccess is requested.
|
|
2002
|
-
|
|
2003
|
-
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.
|
|
2004
|
-
|
|
2005
|
-
More modes may get added in the future. Clients must refuse to handle requests with unknown modes.
|
|
3662
|
+
Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule and NoExecute.
|
|
2006
3663
|
"""
|
|
2007
|
-
return pulumi.get(self, "
|
|
3664
|
+
return pulumi.get(self, "effect")
|
|
2008
3665
|
|
|
2009
3666
|
@property
|
|
2010
3667
|
@pulumi.getter
|
|
2011
|
-
def
|
|
3668
|
+
def key(self) -> Optional[builtins.str]:
|
|
2012
3669
|
"""
|
|
2013
|
-
|
|
3670
|
+
Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. Must be a label name.
|
|
2014
3671
|
"""
|
|
2015
|
-
return pulumi.get(self, "
|
|
3672
|
+
return pulumi.get(self, "key")
|
|
2016
3673
|
|
|
2017
3674
|
@property
|
|
2018
|
-
@pulumi.getter
|
|
2019
|
-
def
|
|
3675
|
+
@pulumi.getter
|
|
3676
|
+
def operator(self) -> Optional[builtins.str]:
|
|
2020
3677
|
"""
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
A class is required. Which classes are available depends on the cluster.
|
|
2024
|
-
|
|
2025
|
-
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.
|
|
3678
|
+
Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a ResourceClaim can tolerate all taints of a particular category.
|
|
2026
3679
|
"""
|
|
2027
|
-
return pulumi.get(self, "
|
|
3680
|
+
return pulumi.get(self, "operator")
|
|
2028
3681
|
|
|
2029
3682
|
@property
|
|
2030
|
-
@pulumi.getter
|
|
2031
|
-
def
|
|
3683
|
+
@pulumi.getter(name="tolerationSeconds")
|
|
3684
|
+
def toleration_seconds(self) -> Optional[builtins.int]:
|
|
2032
3685
|
"""
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
Must be a DNS label.
|
|
3686
|
+
TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. If larger than zero, the time when the pod needs to be evicted is calculated as <time when taint was adedd> + <toleration seconds>.
|
|
2036
3687
|
"""
|
|
2037
|
-
return pulumi.get(self, "
|
|
3688
|
+
return pulumi.get(self, "toleration_seconds")
|
|
2038
3689
|
|
|
2039
3690
|
@property
|
|
2040
3691
|
@pulumi.getter
|
|
2041
|
-
def
|
|
3692
|
+
def value(self) -> Optional[builtins.str]:
|
|
2042
3693
|
"""
|
|
2043
|
-
|
|
3694
|
+
Value is the taint value the toleration matches to. If the operator is Exists, the value must be empty, otherwise just a regular string. Must be a label value.
|
|
2044
3695
|
"""
|
|
2045
|
-
return pulumi.get(self, "
|
|
3696
|
+
return pulumi.get(self, "value")
|
|
2046
3697
|
|
|
2047
3698
|
|
|
2048
3699
|
@pulumi.output_type
|
|
2049
|
-
class
|
|
3700
|
+
class DeviceTolerationPatch(dict):
|
|
2050
3701
|
"""
|
|
2051
|
-
|
|
3702
|
+
The ResourceClaim this DeviceToleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
|
|
2052
3703
|
"""
|
|
3704
|
+
@staticmethod
|
|
3705
|
+
def __key_warning(key: str):
|
|
3706
|
+
suggest = None
|
|
3707
|
+
if key == "tolerationSeconds":
|
|
3708
|
+
suggest = "toleration_seconds"
|
|
3709
|
+
|
|
3710
|
+
if suggest:
|
|
3711
|
+
pulumi.log.warn(f"Key '{key}' not found in DeviceTolerationPatch. Access the value via the '{suggest}' property getter instead.")
|
|
3712
|
+
|
|
3713
|
+
def __getitem__(self, key: str) -> Any:
|
|
3714
|
+
DeviceTolerationPatch.__key_warning(key)
|
|
3715
|
+
return super().__getitem__(key)
|
|
3716
|
+
|
|
3717
|
+
def get(self, key: str, default = None) -> Any:
|
|
3718
|
+
DeviceTolerationPatch.__key_warning(key)
|
|
3719
|
+
return super().get(key, default)
|
|
3720
|
+
|
|
2053
3721
|
def __init__(__self__, *,
|
|
2054
|
-
|
|
3722
|
+
effect: Optional[builtins.str] = None,
|
|
3723
|
+
key: Optional[builtins.str] = None,
|
|
3724
|
+
operator: Optional[builtins.str] = None,
|
|
3725
|
+
toleration_seconds: Optional[builtins.int] = None,
|
|
3726
|
+
value: Optional[builtins.str] = None):
|
|
3727
|
+
"""
|
|
3728
|
+
The ResourceClaim this DeviceToleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
|
|
3729
|
+
:param builtins.str effect: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule and NoExecute.
|
|
3730
|
+
:param builtins.str key: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. Must be a label name.
|
|
3731
|
+
:param builtins.str operator: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a ResourceClaim can tolerate all taints of a particular category.
|
|
3732
|
+
:param builtins.int toleration_seconds: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. If larger than zero, the time when the pod needs to be evicted is calculated as <time when taint was adedd> + <toleration seconds>.
|
|
3733
|
+
:param builtins.str value: Value is the taint value the toleration matches to. If the operator is Exists, the value must be empty, otherwise just a regular string. Must be a label value.
|
|
3734
|
+
"""
|
|
3735
|
+
if effect is not None:
|
|
3736
|
+
pulumi.set(__self__, "effect", effect)
|
|
3737
|
+
if key is not None:
|
|
3738
|
+
pulumi.set(__self__, "key", key)
|
|
3739
|
+
if operator is not None:
|
|
3740
|
+
pulumi.set(__self__, "operator", operator)
|
|
3741
|
+
if toleration_seconds is not None:
|
|
3742
|
+
pulumi.set(__self__, "toleration_seconds", toleration_seconds)
|
|
3743
|
+
if value is not None:
|
|
3744
|
+
pulumi.set(__self__, "value", value)
|
|
3745
|
+
|
|
3746
|
+
@property
|
|
3747
|
+
@pulumi.getter
|
|
3748
|
+
def effect(self) -> Optional[builtins.str]:
|
|
2055
3749
|
"""
|
|
2056
|
-
|
|
2057
|
-
:param 'CELDeviceSelectorArgs' cel: CEL contains a CEL expression for selecting a device.
|
|
3750
|
+
Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule and NoExecute.
|
|
2058
3751
|
"""
|
|
2059
|
-
|
|
2060
|
-
pulumi.set(__self__, "cel", cel)
|
|
3752
|
+
return pulumi.get(self, "effect")
|
|
2061
3753
|
|
|
2062
3754
|
@property
|
|
2063
3755
|
@pulumi.getter
|
|
2064
|
-
def
|
|
3756
|
+
def key(self) -> Optional[builtins.str]:
|
|
2065
3757
|
"""
|
|
2066
|
-
|
|
3758
|
+
Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. Must be a label name.
|
|
2067
3759
|
"""
|
|
2068
|
-
return pulumi.get(self, "
|
|
3760
|
+
return pulumi.get(self, "key")
|
|
2069
3761
|
|
|
3762
|
+
@property
|
|
3763
|
+
@pulumi.getter
|
|
3764
|
+
def operator(self) -> Optional[builtins.str]:
|
|
3765
|
+
"""
|
|
3766
|
+
Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a ResourceClaim can tolerate all taints of a particular category.
|
|
3767
|
+
"""
|
|
3768
|
+
return pulumi.get(self, "operator")
|
|
2070
3769
|
|
|
2071
|
-
@
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
DeviceSelector must have exactly one field set.
|
|
2075
|
-
"""
|
|
2076
|
-
def __init__(__self__, *,
|
|
2077
|
-
cel: Optional['outputs.CELDeviceSelectorPatch'] = None):
|
|
3770
|
+
@property
|
|
3771
|
+
@pulumi.getter(name="tolerationSeconds")
|
|
3772
|
+
def toleration_seconds(self) -> Optional[builtins.int]:
|
|
2078
3773
|
"""
|
|
2079
|
-
|
|
2080
|
-
:param 'CELDeviceSelectorPatchArgs' cel: CEL contains a CEL expression for selecting a device.
|
|
3774
|
+
TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. If larger than zero, the time when the pod needs to be evicted is calculated as <time when taint was adedd> + <toleration seconds>.
|
|
2081
3775
|
"""
|
|
2082
|
-
|
|
2083
|
-
pulumi.set(__self__, "cel", cel)
|
|
3776
|
+
return pulumi.get(self, "toleration_seconds")
|
|
2084
3777
|
|
|
2085
3778
|
@property
|
|
2086
3779
|
@pulumi.getter
|
|
2087
|
-
def
|
|
3780
|
+
def value(self) -> Optional[builtins.str]:
|
|
2088
3781
|
"""
|
|
2089
|
-
|
|
3782
|
+
Value is the taint value the toleration matches to. If the operator is Exists, the value must be empty, otherwise just a regular string. Must be a label value.
|
|
2090
3783
|
"""
|
|
2091
|
-
return pulumi.get(self, "
|
|
3784
|
+
return pulumi.get(self, "value")
|
|
2092
3785
|
|
|
2093
3786
|
|
|
2094
3787
|
@pulumi.output_type
|
|
@@ -2128,6 +3821,8 @@ class NetworkDeviceData(dict):
|
|
|
2128
3821
|
|
|
2129
3822
|
Must not be longer than 256 characters.
|
|
2130
3823
|
:param Sequence[builtins.str] ips: IPs lists the network addresses assigned to the device's network interface. This can include both IPv4 and IPv6 addresses. The IPs are in the CIDR notation, which includes both the address and the associated subnet mask. e.g.: "192.0.2.5/24" for IPv4 and "2001:db8::5/64" for IPv6.
|
|
3824
|
+
|
|
3825
|
+
Must not contain more than 16 entries.
|
|
2131
3826
|
"""
|
|
2132
3827
|
if hardware_address is not None:
|
|
2133
3828
|
pulumi.set(__self__, "hardware_address", hardware_address)
|
|
@@ -2161,6 +3856,8 @@ class NetworkDeviceData(dict):
|
|
|
2161
3856
|
def ips(self) -> Optional[Sequence[builtins.str]]:
|
|
2162
3857
|
"""
|
|
2163
3858
|
IPs lists the network addresses assigned to the device's network interface. This can include both IPv4 and IPv6 addresses. The IPs are in the CIDR notation, which includes both the address and the associated subnet mask. e.g.: "192.0.2.5/24" for IPv4 and "2001:db8::5/64" for IPv6.
|
|
3859
|
+
|
|
3860
|
+
Must not contain more than 16 entries.
|
|
2164
3861
|
"""
|
|
2165
3862
|
return pulumi.get(self, "ips")
|
|
2166
3863
|
|
|
@@ -2202,6 +3899,8 @@ class NetworkDeviceDataPatch(dict):
|
|
|
2202
3899
|
|
|
2203
3900
|
Must not be longer than 256 characters.
|
|
2204
3901
|
:param Sequence[builtins.str] ips: IPs lists the network addresses assigned to the device's network interface. This can include both IPv4 and IPv6 addresses. The IPs are in the CIDR notation, which includes both the address and the associated subnet mask. e.g.: "192.0.2.5/24" for IPv4 and "2001:db8::5/64" for IPv6.
|
|
3902
|
+
|
|
3903
|
+
Must not contain more than 16 entries.
|
|
2205
3904
|
"""
|
|
2206
3905
|
if hardware_address is not None:
|
|
2207
3906
|
pulumi.set(__self__, "hardware_address", hardware_address)
|
|
@@ -2235,6 +3934,8 @@ class NetworkDeviceDataPatch(dict):
|
|
|
2235
3934
|
def ips(self) -> Optional[Sequence[builtins.str]]:
|
|
2236
3935
|
"""
|
|
2237
3936
|
IPs lists the network addresses assigned to the device's network interface. This can include both IPv4 and IPv6 addresses. The IPs are in the CIDR notation, which includes both the address and the associated subnet mask. e.g.: "192.0.2.5/24" for IPv4 and "2001:db8::5/64" for IPv6.
|
|
3937
|
+
|
|
3938
|
+
Must not contain more than 16 entries.
|
|
2238
3939
|
"""
|
|
2239
3940
|
return pulumi.get(self, "ips")
|
|
2240
3941
|
|
|
@@ -3099,7 +4800,7 @@ class ResourceClaimStatus(dict):
|
|
|
3099
4800
|
|
|
3100
4801
|
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.
|
|
3101
4802
|
|
|
3102
|
-
There can be at most
|
|
4803
|
+
There can be at most 256 such reservations. This may get increased in the future, but not reduced.
|
|
3103
4804
|
"""
|
|
3104
4805
|
if allocation is not None:
|
|
3105
4806
|
pulumi.set(__self__, "allocation", allocation)
|
|
@@ -3148,7 +4849,7 @@ class ResourceClaimStatus(dict):
|
|
|
3148
4849
|
|
|
3149
4850
|
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.
|
|
3150
4851
|
|
|
3151
|
-
There can be at most
|
|
4852
|
+
There can be at most 256 such reservations. This may get increased in the future, but not reduced.
|
|
3152
4853
|
"""
|
|
3153
4854
|
return pulumi.get(self, "reserved_for")
|
|
3154
4855
|
|
|
@@ -3197,7 +4898,7 @@ class ResourceClaimStatusPatch(dict):
|
|
|
3197
4898
|
|
|
3198
4899
|
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.
|
|
3199
4900
|
|
|
3200
|
-
There can be at most
|
|
4901
|
+
There can be at most 256 such reservations. This may get increased in the future, but not reduced.
|
|
3201
4902
|
"""
|
|
3202
4903
|
if allocation is not None:
|
|
3203
4904
|
pulumi.set(__self__, "allocation", allocation)
|
|
@@ -3246,7 +4947,7 @@ class ResourceClaimStatusPatch(dict):
|
|
|
3246
4947
|
|
|
3247
4948
|
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.
|
|
3248
4949
|
|
|
3249
|
-
There can be at most
|
|
4950
|
+
There can be at most 256 such reservations. This may get increased in the future, but not reduced.
|
|
3250
4951
|
"""
|
|
3251
4952
|
return pulumi.get(self, "reserved_for")
|
|
3252
4953
|
|
|
@@ -3665,6 +5366,10 @@ class ResourceSliceSpec(dict):
|
|
|
3665
5366
|
suggest = "node_name"
|
|
3666
5367
|
elif key == "nodeSelector":
|
|
3667
5368
|
suggest = "node_selector"
|
|
5369
|
+
elif key == "perDeviceNodeSelection":
|
|
5370
|
+
suggest = "per_device_node_selection"
|
|
5371
|
+
elif key == "sharedCounters":
|
|
5372
|
+
suggest = "shared_counters"
|
|
3668
5373
|
|
|
3669
5374
|
if suggest:
|
|
3670
5375
|
pulumi.log.warn(f"Key '{key}' not found in ResourceSliceSpec. Access the value via the '{suggest}' property getter instead.")
|
|
@@ -3683,7 +5388,9 @@ class ResourceSliceSpec(dict):
|
|
|
3683
5388
|
all_nodes: Optional[builtins.bool] = None,
|
|
3684
5389
|
devices: Optional[Sequence['outputs.Device']] = None,
|
|
3685
5390
|
node_name: Optional[builtins.str] = None,
|
|
3686
|
-
node_selector: Optional['_core.v1.outputs.NodeSelector'] = None
|
|
5391
|
+
node_selector: Optional['_core.v1.outputs.NodeSelector'] = None,
|
|
5392
|
+
per_device_node_selection: Optional[builtins.bool] = None,
|
|
5393
|
+
shared_counters: Optional[Sequence['outputs.CounterSet']] = None):
|
|
3687
5394
|
"""
|
|
3688
5395
|
ResourceSliceSpec contains the information published by the driver in one ResourceSlice.
|
|
3689
5396
|
:param builtins.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.
|
|
@@ -3692,7 +5399,7 @@ class ResourceSliceSpec(dict):
|
|
|
3692
5399
|
:param 'ResourcePoolArgs' pool: Pool describes the pool that this ResourceSlice belongs to.
|
|
3693
5400
|
:param builtins.bool all_nodes: AllNodes indicates that all nodes have access to the resources in the pool.
|
|
3694
5401
|
|
|
3695
|
-
Exactly one of NodeName, NodeSelector and
|
|
5402
|
+
Exactly one of NodeName, NodeSelector, AllNodes, and PerDeviceNodeSelection must be set.
|
|
3696
5403
|
:param Sequence['DeviceArgs'] devices: Devices lists some or all of the devices in this pool.
|
|
3697
5404
|
|
|
3698
5405
|
Must not have more than 128 entries.
|
|
@@ -3700,12 +5407,20 @@ class ResourceSliceSpec(dict):
|
|
|
3700
5407
|
|
|
3701
5408
|
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.
|
|
3702
5409
|
|
|
3703
|
-
Exactly one of NodeName, NodeSelector and
|
|
5410
|
+
Exactly one of NodeName, NodeSelector, AllNodes, and PerDeviceNodeSelection must be set. This field is immutable.
|
|
3704
5411
|
: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.
|
|
3705
5412
|
|
|
3706
5413
|
Must use exactly one term.
|
|
3707
5414
|
|
|
3708
|
-
Exactly one of NodeName, NodeSelector and
|
|
5415
|
+
Exactly one of NodeName, NodeSelector, AllNodes, and PerDeviceNodeSelection must be set.
|
|
5416
|
+
:param builtins.bool per_device_node_selection: PerDeviceNodeSelection defines whether the access from nodes to resources in the pool is set on the ResourceSlice level or on each device. If it is set to true, every device defined the ResourceSlice must specify this individually.
|
|
5417
|
+
|
|
5418
|
+
Exactly one of NodeName, NodeSelector, AllNodes, and PerDeviceNodeSelection must be set.
|
|
5419
|
+
:param Sequence['CounterSetArgs'] shared_counters: SharedCounters defines a list of counter sets, each of which has a name and a list of counters available.
|
|
5420
|
+
|
|
5421
|
+
The names of the SharedCounters must be unique in the ResourceSlice.
|
|
5422
|
+
|
|
5423
|
+
The maximum number of SharedCounters is 32.
|
|
3709
5424
|
"""
|
|
3710
5425
|
pulumi.set(__self__, "driver", driver)
|
|
3711
5426
|
pulumi.set(__self__, "pool", pool)
|
|
@@ -3717,6 +5432,10 @@ class ResourceSliceSpec(dict):
|
|
|
3717
5432
|
pulumi.set(__self__, "node_name", node_name)
|
|
3718
5433
|
if node_selector is not None:
|
|
3719
5434
|
pulumi.set(__self__, "node_selector", node_selector)
|
|
5435
|
+
if per_device_node_selection is not None:
|
|
5436
|
+
pulumi.set(__self__, "per_device_node_selection", per_device_node_selection)
|
|
5437
|
+
if shared_counters is not None:
|
|
5438
|
+
pulumi.set(__self__, "shared_counters", shared_counters)
|
|
3720
5439
|
|
|
3721
5440
|
@property
|
|
3722
5441
|
@pulumi.getter
|
|
@@ -3742,7 +5461,7 @@ class ResourceSliceSpec(dict):
|
|
|
3742
5461
|
"""
|
|
3743
5462
|
AllNodes indicates that all nodes have access to the resources in the pool.
|
|
3744
5463
|
|
|
3745
|
-
Exactly one of NodeName, NodeSelector and
|
|
5464
|
+
Exactly one of NodeName, NodeSelector, AllNodes, and PerDeviceNodeSelection must be set.
|
|
3746
5465
|
"""
|
|
3747
5466
|
return pulumi.get(self, "all_nodes")
|
|
3748
5467
|
|
|
@@ -3764,7 +5483,7 @@ class ResourceSliceSpec(dict):
|
|
|
3764
5483
|
|
|
3765
5484
|
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.
|
|
3766
5485
|
|
|
3767
|
-
Exactly one of NodeName, NodeSelector and
|
|
5486
|
+
Exactly one of NodeName, NodeSelector, AllNodes, and PerDeviceNodeSelection must be set. This field is immutable.
|
|
3768
5487
|
"""
|
|
3769
5488
|
return pulumi.get(self, "node_name")
|
|
3770
5489
|
|
|
@@ -3776,10 +5495,32 @@ class ResourceSliceSpec(dict):
|
|
|
3776
5495
|
|
|
3777
5496
|
Must use exactly one term.
|
|
3778
5497
|
|
|
3779
|
-
Exactly one of NodeName, NodeSelector and
|
|
5498
|
+
Exactly one of NodeName, NodeSelector, AllNodes, and PerDeviceNodeSelection must be set.
|
|
3780
5499
|
"""
|
|
3781
5500
|
return pulumi.get(self, "node_selector")
|
|
3782
5501
|
|
|
5502
|
+
@property
|
|
5503
|
+
@pulumi.getter(name="perDeviceNodeSelection")
|
|
5504
|
+
def per_device_node_selection(self) -> Optional[builtins.bool]:
|
|
5505
|
+
"""
|
|
5506
|
+
PerDeviceNodeSelection defines whether the access from nodes to resources in the pool is set on the ResourceSlice level or on each device. If it is set to true, every device defined the ResourceSlice must specify this individually.
|
|
5507
|
+
|
|
5508
|
+
Exactly one of NodeName, NodeSelector, AllNodes, and PerDeviceNodeSelection must be set.
|
|
5509
|
+
"""
|
|
5510
|
+
return pulumi.get(self, "per_device_node_selection")
|
|
5511
|
+
|
|
5512
|
+
@property
|
|
5513
|
+
@pulumi.getter(name="sharedCounters")
|
|
5514
|
+
def shared_counters(self) -> Optional[Sequence['outputs.CounterSet']]:
|
|
5515
|
+
"""
|
|
5516
|
+
SharedCounters defines a list of counter sets, each of which has a name and a list of counters available.
|
|
5517
|
+
|
|
5518
|
+
The names of the SharedCounters must be unique in the ResourceSlice.
|
|
5519
|
+
|
|
5520
|
+
The maximum number of SharedCounters is 32.
|
|
5521
|
+
"""
|
|
5522
|
+
return pulumi.get(self, "shared_counters")
|
|
5523
|
+
|
|
3783
5524
|
|
|
3784
5525
|
@pulumi.output_type
|
|
3785
5526
|
class ResourceSliceSpecPatch(dict):
|
|
@@ -3795,6 +5536,10 @@ class ResourceSliceSpecPatch(dict):
|
|
|
3795
5536
|
suggest = "node_name"
|
|
3796
5537
|
elif key == "nodeSelector":
|
|
3797
5538
|
suggest = "node_selector"
|
|
5539
|
+
elif key == "perDeviceNodeSelection":
|
|
5540
|
+
suggest = "per_device_node_selection"
|
|
5541
|
+
elif key == "sharedCounters":
|
|
5542
|
+
suggest = "shared_counters"
|
|
3798
5543
|
|
|
3799
5544
|
if suggest:
|
|
3800
5545
|
pulumi.log.warn(f"Key '{key}' not found in ResourceSliceSpecPatch. Access the value via the '{suggest}' property getter instead.")
|
|
@@ -3813,12 +5558,14 @@ class ResourceSliceSpecPatch(dict):
|
|
|
3813
5558
|
driver: Optional[builtins.str] = None,
|
|
3814
5559
|
node_name: Optional[builtins.str] = None,
|
|
3815
5560
|
node_selector: Optional['_core.v1.outputs.NodeSelectorPatch'] = None,
|
|
3816
|
-
|
|
5561
|
+
per_device_node_selection: Optional[builtins.bool] = None,
|
|
5562
|
+
pool: Optional['outputs.ResourcePoolPatch'] = None,
|
|
5563
|
+
shared_counters: Optional[Sequence['outputs.CounterSetPatch']] = None):
|
|
3817
5564
|
"""
|
|
3818
5565
|
ResourceSliceSpec contains the information published by the driver in one ResourceSlice.
|
|
3819
5566
|
:param builtins.bool all_nodes: AllNodes indicates that all nodes have access to the resources in the pool.
|
|
3820
5567
|
|
|
3821
|
-
Exactly one of NodeName, NodeSelector and
|
|
5568
|
+
Exactly one of NodeName, NodeSelector, AllNodes, and PerDeviceNodeSelection must be set.
|
|
3822
5569
|
:param Sequence['DevicePatchArgs'] devices: Devices lists some or all of the devices in this pool.
|
|
3823
5570
|
|
|
3824
5571
|
Must not have more than 128 entries.
|
|
@@ -3829,13 +5576,21 @@ class ResourceSliceSpecPatch(dict):
|
|
|
3829
5576
|
|
|
3830
5577
|
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.
|
|
3831
5578
|
|
|
3832
|
-
Exactly one of NodeName, NodeSelector and
|
|
5579
|
+
Exactly one of NodeName, NodeSelector, AllNodes, and PerDeviceNodeSelection must be set. This field is immutable.
|
|
3833
5580
|
: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.
|
|
3834
5581
|
|
|
3835
5582
|
Must use exactly one term.
|
|
3836
5583
|
|
|
3837
|
-
Exactly one of NodeName, NodeSelector and
|
|
5584
|
+
Exactly one of NodeName, NodeSelector, AllNodes, and PerDeviceNodeSelection must be set.
|
|
5585
|
+
:param builtins.bool per_device_node_selection: PerDeviceNodeSelection defines whether the access from nodes to resources in the pool is set on the ResourceSlice level or on each device. If it is set to true, every device defined the ResourceSlice must specify this individually.
|
|
5586
|
+
|
|
5587
|
+
Exactly one of NodeName, NodeSelector, AllNodes, and PerDeviceNodeSelection must be set.
|
|
3838
5588
|
:param 'ResourcePoolPatchArgs' pool: Pool describes the pool that this ResourceSlice belongs to.
|
|
5589
|
+
:param Sequence['CounterSetPatchArgs'] shared_counters: SharedCounters defines a list of counter sets, each of which has a name and a list of counters available.
|
|
5590
|
+
|
|
5591
|
+
The names of the SharedCounters must be unique in the ResourceSlice.
|
|
5592
|
+
|
|
5593
|
+
The maximum number of SharedCounters is 32.
|
|
3839
5594
|
"""
|
|
3840
5595
|
if all_nodes is not None:
|
|
3841
5596
|
pulumi.set(__self__, "all_nodes", all_nodes)
|
|
@@ -3847,8 +5602,12 @@ class ResourceSliceSpecPatch(dict):
|
|
|
3847
5602
|
pulumi.set(__self__, "node_name", node_name)
|
|
3848
5603
|
if node_selector is not None:
|
|
3849
5604
|
pulumi.set(__self__, "node_selector", node_selector)
|
|
5605
|
+
if per_device_node_selection is not None:
|
|
5606
|
+
pulumi.set(__self__, "per_device_node_selection", per_device_node_selection)
|
|
3850
5607
|
if pool is not None:
|
|
3851
5608
|
pulumi.set(__self__, "pool", pool)
|
|
5609
|
+
if shared_counters is not None:
|
|
5610
|
+
pulumi.set(__self__, "shared_counters", shared_counters)
|
|
3852
5611
|
|
|
3853
5612
|
@property
|
|
3854
5613
|
@pulumi.getter(name="allNodes")
|
|
@@ -3856,7 +5615,7 @@ class ResourceSliceSpecPatch(dict):
|
|
|
3856
5615
|
"""
|
|
3857
5616
|
AllNodes indicates that all nodes have access to the resources in the pool.
|
|
3858
5617
|
|
|
3859
|
-
Exactly one of NodeName, NodeSelector and
|
|
5618
|
+
Exactly one of NodeName, NodeSelector, AllNodes, and PerDeviceNodeSelection must be set.
|
|
3860
5619
|
"""
|
|
3861
5620
|
return pulumi.get(self, "all_nodes")
|
|
3862
5621
|
|
|
@@ -3888,7 +5647,7 @@ class ResourceSliceSpecPatch(dict):
|
|
|
3888
5647
|
|
|
3889
5648
|
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.
|
|
3890
5649
|
|
|
3891
|
-
Exactly one of NodeName, NodeSelector and
|
|
5650
|
+
Exactly one of NodeName, NodeSelector, AllNodes, and PerDeviceNodeSelection must be set. This field is immutable.
|
|
3892
5651
|
"""
|
|
3893
5652
|
return pulumi.get(self, "node_name")
|
|
3894
5653
|
|
|
@@ -3900,10 +5659,20 @@ class ResourceSliceSpecPatch(dict):
|
|
|
3900
5659
|
|
|
3901
5660
|
Must use exactly one term.
|
|
3902
5661
|
|
|
3903
|
-
Exactly one of NodeName, NodeSelector and
|
|
5662
|
+
Exactly one of NodeName, NodeSelector, AllNodes, and PerDeviceNodeSelection must be set.
|
|
3904
5663
|
"""
|
|
3905
5664
|
return pulumi.get(self, "node_selector")
|
|
3906
5665
|
|
|
5666
|
+
@property
|
|
5667
|
+
@pulumi.getter(name="perDeviceNodeSelection")
|
|
5668
|
+
def per_device_node_selection(self) -> Optional[builtins.bool]:
|
|
5669
|
+
"""
|
|
5670
|
+
PerDeviceNodeSelection defines whether the access from nodes to resources in the pool is set on the ResourceSlice level or on each device. If it is set to true, every device defined the ResourceSlice must specify this individually.
|
|
5671
|
+
|
|
5672
|
+
Exactly one of NodeName, NodeSelector, AllNodes, and PerDeviceNodeSelection must be set.
|
|
5673
|
+
"""
|
|
5674
|
+
return pulumi.get(self, "per_device_node_selection")
|
|
5675
|
+
|
|
3907
5676
|
@property
|
|
3908
5677
|
@pulumi.getter
|
|
3909
5678
|
def pool(self) -> Optional['outputs.ResourcePoolPatch']:
|
|
@@ -3912,4 +5681,16 @@ class ResourceSliceSpecPatch(dict):
|
|
|
3912
5681
|
"""
|
|
3913
5682
|
return pulumi.get(self, "pool")
|
|
3914
5683
|
|
|
5684
|
+
@property
|
|
5685
|
+
@pulumi.getter(name="sharedCounters")
|
|
5686
|
+
def shared_counters(self) -> Optional[Sequence['outputs.CounterSetPatch']]:
|
|
5687
|
+
"""
|
|
5688
|
+
SharedCounters defines a list of counter sets, each of which has a name and a list of counters available.
|
|
5689
|
+
|
|
5690
|
+
The names of the SharedCounters must be unique in the ResourceSlice.
|
|
5691
|
+
|
|
5692
|
+
The maximum number of SharedCounters is 32.
|
|
5693
|
+
"""
|
|
5694
|
+
return pulumi.get(self, "shared_counters")
|
|
5695
|
+
|
|
3915
5696
|
|