pulumi-kubernetes 4.23.0a1746129859__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.

Files changed (116) hide show
  1. pulumi_kubernetes/__init__.py +36 -2
  2. pulumi_kubernetes/admissionregistration/v1alpha1/_inputs.py +30 -30
  3. pulumi_kubernetes/admissionregistration/v1alpha1/outputs.py +20 -20
  4. pulumi_kubernetes/apps/v1/ReplicaSetList.py +4 -4
  5. pulumi_kubernetes/apps/v1/_inputs.py +109 -56
  6. pulumi_kubernetes/apps/v1/outputs.py +129 -56
  7. pulumi_kubernetes/autoscaling/v2/_inputs.py +92 -12
  8. pulumi_kubernetes/autoscaling/v2/outputs.py +66 -10
  9. pulumi_kubernetes/batch/v1/_inputs.py +12 -42
  10. pulumi_kubernetes/batch/v1/outputs.py +8 -32
  11. pulumi_kubernetes/certificates/v1alpha1/ClusterTrustBundle.py +2 -0
  12. pulumi_kubernetes/certificates/v1alpha1/ClusterTrustBundlePatch.py +2 -0
  13. pulumi_kubernetes/certificates/v1beta1/ClusterTrustBundle.py +229 -0
  14. pulumi_kubernetes/certificates/v1beta1/ClusterTrustBundleList.py +219 -0
  15. pulumi_kubernetes/certificates/v1beta1/ClusterTrustBundlePatch.py +240 -0
  16. pulumi_kubernetes/certificates/v1beta1/__init__.py +3 -0
  17. pulumi_kubernetes/certificates/v1beta1/_inputs.py +292 -0
  18. pulumi_kubernetes/certificates/v1beta1/outputs.py +241 -0
  19. pulumi_kubernetes/coordination/v1alpha1/LeaseCandidate.py +1 -1
  20. pulumi_kubernetes/coordination/v1alpha1/LeaseCandidatePatch.py +1 -1
  21. pulumi_kubernetes/coordination/v1alpha2/LeaseCandidate.py +1 -1
  22. pulumi_kubernetes/coordination/v1alpha2/LeaseCandidatePatch.py +1 -1
  23. pulumi_kubernetes/coordination/v1alpha2/_inputs.py +6 -6
  24. pulumi_kubernetes/coordination/v1alpha2/outputs.py +4 -4
  25. pulumi_kubernetes/coordination/v1beta1/LeaseCandidate.py +220 -0
  26. pulumi_kubernetes/coordination/v1beta1/LeaseCandidateList.py +219 -0
  27. pulumi_kubernetes/coordination/v1beta1/LeaseCandidatePatch.py +232 -0
  28. pulumi_kubernetes/coordination/v1beta1/__init__.py +3 -0
  29. pulumi_kubernetes/coordination/v1beta1/_inputs.py +371 -0
  30. pulumi_kubernetes/coordination/v1beta1/outputs.py +292 -0
  31. pulumi_kubernetes/core/v1/Endpoints.py +8 -0
  32. pulumi_kubernetes/core/v1/EndpointsList.py +2 -2
  33. pulumi_kubernetes/core/v1/EndpointsPatch.py +8 -0
  34. pulumi_kubernetes/core/v1/_inputs.py +240 -66
  35. pulumi_kubernetes/core/v1/outputs.py +251 -51
  36. pulumi_kubernetes/discovery/v1/EndpointSlice.py +10 -10
  37. pulumi_kubernetes/discovery/v1/EndpointSlicePatch.py +10 -10
  38. pulumi_kubernetes/discovery/v1/_inputs.py +159 -44
  39. pulumi_kubernetes/discovery/v1/outputs.py +107 -32
  40. pulumi_kubernetes/networking/v1/IPAddress.py +220 -0
  41. pulumi_kubernetes/networking/v1/IPAddressList.py +219 -0
  42. pulumi_kubernetes/networking/v1/IPAddressPatch.py +232 -0
  43. pulumi_kubernetes/networking/v1/ServiceCIDR.py +230 -0
  44. pulumi_kubernetes/networking/v1/ServiceCIDRList.py +219 -0
  45. pulumi_kubernetes/networking/v1/ServiceCIDRPatch.py +242 -0
  46. pulumi_kubernetes/networking/v1/__init__.py +6 -0
  47. pulumi_kubernetes/networking/v1/_inputs.py +599 -0
  48. pulumi_kubernetes/networking/v1/outputs.py +461 -0
  49. pulumi_kubernetes/networking/v1alpha1/IPAddress.py +1 -1
  50. pulumi_kubernetes/networking/v1alpha1/IPAddressPatch.py +1 -1
  51. pulumi_kubernetes/networking/v1alpha1/ServiceCIDR.py +1 -1
  52. pulumi_kubernetes/networking/v1alpha1/ServiceCIDRPatch.py +1 -1
  53. pulumi_kubernetes/networking/v1beta1/IPAddress.py +1 -1
  54. pulumi_kubernetes/networking/v1beta1/IPAddressPatch.py +1 -1
  55. pulumi_kubernetes/networking/v1beta1/ServiceCIDR.py +1 -1
  56. pulumi_kubernetes/networking/v1beta1/ServiceCIDRPatch.py +1 -1
  57. pulumi_kubernetes/policy/v1/_inputs.py +0 -12
  58. pulumi_kubernetes/policy/v1/outputs.py +0 -8
  59. pulumi_kubernetes/pulumi-plugin.json +1 -1
  60. pulumi_kubernetes/resource/__init__.py +3 -0
  61. pulumi_kubernetes/resource/v1alpha1/ResourceClaim.py +1 -1
  62. pulumi_kubernetes/resource/v1alpha1/ResourceClaimPatch.py +1 -1
  63. pulumi_kubernetes/resource/v1alpha1/ResourceClaimTemplate.py +1 -1
  64. pulumi_kubernetes/resource/v1alpha1/ResourceClaimTemplatePatch.py +1 -1
  65. pulumi_kubernetes/resource/v1alpha2/ResourceClaim.py +1 -1
  66. pulumi_kubernetes/resource/v1alpha2/ResourceClaimPatch.py +1 -1
  67. pulumi_kubernetes/resource/v1alpha2/ResourceClaimTemplate.py +1 -1
  68. pulumi_kubernetes/resource/v1alpha2/ResourceClaimTemplatePatch.py +1 -1
  69. pulumi_kubernetes/resource/v1alpha2/ResourceSlice.py +1 -1
  70. pulumi_kubernetes/resource/v1alpha2/ResourceSlicePatch.py +1 -1
  71. pulumi_kubernetes/resource/v1alpha3/DeviceClass.py +1 -1
  72. pulumi_kubernetes/resource/v1alpha3/DeviceClassPatch.py +1 -1
  73. pulumi_kubernetes/resource/v1alpha3/DeviceTaintRule.py +227 -0
  74. pulumi_kubernetes/resource/v1alpha3/DeviceTaintRuleList.py +219 -0
  75. pulumi_kubernetes/resource/v1alpha3/DeviceTaintRulePatch.py +238 -0
  76. pulumi_kubernetes/resource/v1alpha3/ResourceClaim.py +1 -1
  77. pulumi_kubernetes/resource/v1alpha3/ResourceClaimPatch.py +1 -1
  78. pulumi_kubernetes/resource/v1alpha3/ResourceClaimTemplate.py +1 -1
  79. pulumi_kubernetes/resource/v1alpha3/ResourceClaimTemplatePatch.py +1 -1
  80. pulumi_kubernetes/resource/v1alpha3/ResourceSlice.py +1 -1
  81. pulumi_kubernetes/resource/v1alpha3/ResourceSlicePatch.py +1 -1
  82. pulumi_kubernetes/resource/v1alpha3/__init__.py +3 -0
  83. pulumi_kubernetes/resource/v1alpha3/_inputs.py +2559 -213
  84. pulumi_kubernetes/resource/v1alpha3/outputs.py +2037 -256
  85. pulumi_kubernetes/resource/v1beta1/DeviceClass.py +1 -1
  86. pulumi_kubernetes/resource/v1beta1/DeviceClassPatch.py +1 -1
  87. pulumi_kubernetes/resource/v1beta1/ResourceClaim.py +1 -1
  88. pulumi_kubernetes/resource/v1beta1/ResourceClaimPatch.py +1 -1
  89. pulumi_kubernetes/resource/v1beta1/ResourceClaimTemplate.py +1 -1
  90. pulumi_kubernetes/resource/v1beta1/ResourceClaimTemplatePatch.py +1 -1
  91. pulumi_kubernetes/resource/v1beta1/ResourceSlice.py +1 -1
  92. pulumi_kubernetes/resource/v1beta1/ResourceSlicePatch.py +1 -1
  93. pulumi_kubernetes/resource/v1beta1/_inputs.py +2044 -176
  94. pulumi_kubernetes/resource/v1beta1/outputs.py +1536 -134
  95. pulumi_kubernetes/resource/v1beta2/DeviceClass.py +241 -0
  96. pulumi_kubernetes/resource/v1beta2/DeviceClassList.py +219 -0
  97. pulumi_kubernetes/resource/v1beta2/DeviceClassPatch.py +252 -0
  98. pulumi_kubernetes/resource/v1beta2/ResourceClaim.py +236 -0
  99. pulumi_kubernetes/resource/v1beta2/ResourceClaimList.py +220 -0
  100. pulumi_kubernetes/resource/v1beta2/ResourceClaimPatch.py +247 -0
  101. pulumi_kubernetes/resource/v1beta2/ResourceClaimTemplate.py +233 -0
  102. pulumi_kubernetes/resource/v1beta2/ResourceClaimTemplateList.py +219 -0
  103. pulumi_kubernetes/resource/v1beta2/ResourceClaimTemplatePatch.py +244 -0
  104. pulumi_kubernetes/resource/v1beta2/ResourceSlice.py +250 -0
  105. pulumi_kubernetes/resource/v1beta2/ResourceSliceList.py +220 -0
  106. pulumi_kubernetes/resource/v1beta2/ResourceSlicePatch.py +261 -0
  107. pulumi_kubernetes/resource/v1beta2/__init__.py +22 -0
  108. pulumi_kubernetes/resource/v1beta2/_inputs.py +5681 -0
  109. pulumi_kubernetes/resource/v1beta2/outputs.py +4726 -0
  110. pulumi_kubernetes/storage/v1/_inputs.py +90 -0
  111. pulumi_kubernetes/storage/v1/outputs.py +110 -0
  112. pulumi_kubernetes/yaml/yaml.py +108 -0
  113. {pulumi_kubernetes-4.23.0a1746129859.dist-info → pulumi_kubernetes-4.23.0a1746138483.dist-info}/METADATA +1 -1
  114. {pulumi_kubernetes-4.23.0a1746129859.dist-info → pulumi_kubernetes-4.23.0a1746138483.dist-info}/RECORD +116 -86
  115. {pulumi_kubernetes-4.23.0a1746129859.dist-info → pulumi_kubernetes-4.23.0a1746138483.dist-info}/WHEEL +0 -0
  116. {pulumi_kubernetes-4.23.0a1746129859.dist-info → pulumi_kubernetes-4.23.0a1746138483.dist-info}/top_level.txt +0 -0
@@ -28,6 +28,8 @@ __all__ = [
28
28
  'EndpointPort',
29
29
  'EndpointPortPatch',
30
30
  'EndpointSlice',
31
+ 'ForNode',
32
+ 'ForNodePatch',
31
33
  'ForZone',
32
34
  'ForZonePatch',
33
35
  ]
@@ -69,7 +71,7 @@ class Endpoint(dict):
69
71
  zone: Optional[builtins.str] = None):
70
72
  """
71
73
  Endpoint represents a single logical "backend" implementing a service.
72
- :param Sequence[builtins.str] addresses: addresses of this endpoint. The contents of this field are interpreted according to the corresponding EndpointSlice addressType field. Consumers must handle different types of addresses in the context of their own capabilities. This must contain at least one address but no more than 100. These are all assumed to be fungible and clients may choose to only use the first element. Refer to: https://issue.k8s.io/106267
74
+ :param Sequence[builtins.str] addresses: addresses of this endpoint. For EndpointSlices of addressType "IPv4" or "IPv6", the values are IP addresses in canonical form. The syntax and semantics of other addressType values are not defined. This must contain at least one address but no more than 100. EndpointSlices generated by the EndpointSlice controller will always have exactly 1 address. No semantics are defined for additional addresses beyond the first, and kube-proxy does not look at them.
73
75
  :param 'EndpointConditionsArgs' conditions: conditions contains information about the current status of the endpoint.
74
76
  :param Mapping[str, builtins.str] deprecated_topology: deprecatedTopology contains topology information part of the v1beta1 API. This field is deprecated, and will be removed when the v1beta1 API is removed (no sooner than kubernetes v1.24). While this field can hold values, it is not writable through the v1 API, and any attempts to write to it will be silently ignored. Topology information can be found in the zone and nodeName fields instead.
75
77
  :param 'EndpointHintsArgs' hints: hints contains information associated with how an endpoint should be consumed.
@@ -98,7 +100,7 @@ class Endpoint(dict):
98
100
  @pulumi.getter
99
101
  def addresses(self) -> Sequence[builtins.str]:
100
102
  """
101
- addresses of this endpoint. The contents of this field are interpreted according to the corresponding EndpointSlice addressType field. Consumers must handle different types of addresses in the context of their own capabilities. This must contain at least one address but no more than 100. These are all assumed to be fungible and clients may choose to only use the first element. Refer to: https://issue.k8s.io/106267
103
+ addresses of this endpoint. For EndpointSlices of addressType "IPv4" or "IPv6", the values are IP addresses in canonical form. The syntax and semantics of other addressType values are not defined. This must contain at least one address but no more than 100. EndpointSlices generated by the EndpointSlice controller will always have exactly 1 address. No semantics are defined for additional addresses beyond the first, and kube-proxy does not look at them.
102
104
  """
103
105
  return pulumi.get(self, "addresses")
104
106
 
@@ -170,9 +172,9 @@ class EndpointConditions(dict):
170
172
  terminating: Optional[builtins.bool] = None):
171
173
  """
172
174
  EndpointConditions represents the current condition of an endpoint.
173
- :param builtins.bool ready: ready indicates that this endpoint is prepared to receive traffic, according to whatever system is managing the endpoint. A nil value indicates an unknown state. In most cases consumers should interpret this unknown state as ready. For compatibility reasons, ready should never be "true" for terminating endpoints, except when the normal readiness behavior is being explicitly overridden, for example when the associated Service has set the publishNotReadyAddresses flag.
174
- :param builtins.bool serving: serving is identical to ready except that it is set regardless of the terminating state of endpoints. This condition should be set to true for a ready endpoint that is terminating. If nil, consumers should defer to the ready condition.
175
- :param builtins.bool terminating: terminating indicates that this endpoint is terminating. A nil value indicates an unknown state. Consumers should interpret this unknown state to mean that the endpoint is not terminating.
175
+ :param builtins.bool ready: ready indicates that this endpoint is ready to receive traffic, according to whatever system is managing the endpoint. A nil value should be interpreted as "true". In general, an endpoint should be marked ready if it is serving and not terminating, though this can be overridden in some cases, such as when the associated Service has set the publishNotReadyAddresses flag.
176
+ :param builtins.bool serving: serving indicates that this endpoint is able to receive traffic, according to whatever system is managing the endpoint. For endpoints backed by pods, the EndpointSlice controller will mark the endpoint as serving if the pod's Ready condition is True. A nil value should be interpreted as "true".
177
+ :param builtins.bool terminating: terminating indicates that this endpoint is terminating. A nil value should be interpreted as "false".
176
178
  """
177
179
  if ready is not None:
178
180
  pulumi.set(__self__, "ready", ready)
@@ -185,7 +187,7 @@ class EndpointConditions(dict):
185
187
  @pulumi.getter
186
188
  def ready(self) -> Optional[builtins.bool]:
187
189
  """
188
- ready indicates that this endpoint is prepared to receive traffic, according to whatever system is managing the endpoint. A nil value indicates an unknown state. In most cases consumers should interpret this unknown state as ready. For compatibility reasons, ready should never be "true" for terminating endpoints, except when the normal readiness behavior is being explicitly overridden, for example when the associated Service has set the publishNotReadyAddresses flag.
190
+ ready indicates that this endpoint is ready to receive traffic, according to whatever system is managing the endpoint. A nil value should be interpreted as "true". In general, an endpoint should be marked ready if it is serving and not terminating, though this can be overridden in some cases, such as when the associated Service has set the publishNotReadyAddresses flag.
189
191
  """
190
192
  return pulumi.get(self, "ready")
191
193
 
@@ -193,7 +195,7 @@ class EndpointConditions(dict):
193
195
  @pulumi.getter
194
196
  def serving(self) -> Optional[builtins.bool]:
195
197
  """
196
- serving is identical to ready except that it is set regardless of the terminating state of endpoints. This condition should be set to true for a ready endpoint that is terminating. If nil, consumers should defer to the ready condition.
198
+ serving indicates that this endpoint is able to receive traffic, according to whatever system is managing the endpoint. For endpoints backed by pods, the EndpointSlice controller will mark the endpoint as serving if the pod's Ready condition is True. A nil value should be interpreted as "true".
197
199
  """
198
200
  return pulumi.get(self, "serving")
199
201
 
@@ -201,7 +203,7 @@ class EndpointConditions(dict):
201
203
  @pulumi.getter
202
204
  def terminating(self) -> Optional[builtins.bool]:
203
205
  """
204
- terminating indicates that this endpoint is terminating. A nil value indicates an unknown state. Consumers should interpret this unknown state to mean that the endpoint is not terminating.
206
+ terminating indicates that this endpoint is terminating. A nil value should be interpreted as "false".
205
207
  """
206
208
  return pulumi.get(self, "terminating")
207
209
 
@@ -217,9 +219,9 @@ class EndpointConditionsPatch(dict):
217
219
  terminating: Optional[builtins.bool] = None):
218
220
  """
219
221
  EndpointConditions represents the current condition of an endpoint.
220
- :param builtins.bool ready: ready indicates that this endpoint is prepared to receive traffic, according to whatever system is managing the endpoint. A nil value indicates an unknown state. In most cases consumers should interpret this unknown state as ready. For compatibility reasons, ready should never be "true" for terminating endpoints, except when the normal readiness behavior is being explicitly overridden, for example when the associated Service has set the publishNotReadyAddresses flag.
221
- :param builtins.bool serving: serving is identical to ready except that it is set regardless of the terminating state of endpoints. This condition should be set to true for a ready endpoint that is terminating. If nil, consumers should defer to the ready condition.
222
- :param builtins.bool terminating: terminating indicates that this endpoint is terminating. A nil value indicates an unknown state. Consumers should interpret this unknown state to mean that the endpoint is not terminating.
222
+ :param builtins.bool ready: ready indicates that this endpoint is ready to receive traffic, according to whatever system is managing the endpoint. A nil value should be interpreted as "true". In general, an endpoint should be marked ready if it is serving and not terminating, though this can be overridden in some cases, such as when the associated Service has set the publishNotReadyAddresses flag.
223
+ :param builtins.bool serving: serving indicates that this endpoint is able to receive traffic, according to whatever system is managing the endpoint. For endpoints backed by pods, the EndpointSlice controller will mark the endpoint as serving if the pod's Ready condition is True. A nil value should be interpreted as "true".
224
+ :param builtins.bool terminating: terminating indicates that this endpoint is terminating. A nil value should be interpreted as "false".
223
225
  """
224
226
  if ready is not None:
225
227
  pulumi.set(__self__, "ready", ready)
@@ -232,7 +234,7 @@ class EndpointConditionsPatch(dict):
232
234
  @pulumi.getter
233
235
  def ready(self) -> Optional[builtins.bool]:
234
236
  """
235
- ready indicates that this endpoint is prepared to receive traffic, according to whatever system is managing the endpoint. A nil value indicates an unknown state. In most cases consumers should interpret this unknown state as ready. For compatibility reasons, ready should never be "true" for terminating endpoints, except when the normal readiness behavior is being explicitly overridden, for example when the associated Service has set the publishNotReadyAddresses flag.
237
+ ready indicates that this endpoint is ready to receive traffic, according to whatever system is managing the endpoint. A nil value should be interpreted as "true". In general, an endpoint should be marked ready if it is serving and not terminating, though this can be overridden in some cases, such as when the associated Service has set the publishNotReadyAddresses flag.
236
238
  """
237
239
  return pulumi.get(self, "ready")
238
240
 
@@ -240,7 +242,7 @@ class EndpointConditionsPatch(dict):
240
242
  @pulumi.getter
241
243
  def serving(self) -> Optional[builtins.bool]:
242
244
  """
243
- serving is identical to ready except that it is set regardless of the terminating state of endpoints. This condition should be set to true for a ready endpoint that is terminating. If nil, consumers should defer to the ready condition.
245
+ serving indicates that this endpoint is able to receive traffic, according to whatever system is managing the endpoint. For endpoints backed by pods, the EndpointSlice controller will mark the endpoint as serving if the pod's Ready condition is True. A nil value should be interpreted as "true".
244
246
  """
245
247
  return pulumi.get(self, "serving")
246
248
 
@@ -248,7 +250,7 @@ class EndpointConditionsPatch(dict):
248
250
  @pulumi.getter
249
251
  def terminating(self) -> Optional[builtins.bool]:
250
252
  """
251
- terminating indicates that this endpoint is terminating. A nil value indicates an unknown state. Consumers should interpret this unknown state to mean that the endpoint is not terminating.
253
+ terminating indicates that this endpoint is terminating. A nil value should be interpreted as "false".
252
254
  """
253
255
  return pulumi.get(self, "terminating")
254
256
 
@@ -261,7 +263,9 @@ class EndpointHints(dict):
261
263
  @staticmethod
262
264
  def __key_warning(key: str):
263
265
  suggest = None
264
- if key == "forZones":
266
+ if key == "forNodes":
267
+ suggest = "for_nodes"
268
+ elif key == "forZones":
265
269
  suggest = "for_zones"
266
270
 
267
271
  if suggest:
@@ -276,19 +280,31 @@ class EndpointHints(dict):
276
280
  return super().get(key, default)
277
281
 
278
282
  def __init__(__self__, *,
283
+ for_nodes: Optional[Sequence['outputs.ForNode']] = None,
279
284
  for_zones: Optional[Sequence['outputs.ForZone']] = None):
280
285
  """
281
286
  EndpointHints provides hints describing how an endpoint should be consumed.
282
- :param Sequence['ForZoneArgs'] for_zones: forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing.
287
+ :param Sequence['ForNodeArgs'] for_nodes: forNodes indicates the node(s) this endpoint should be consumed by when using topology aware routing. May contain a maximum of 8 entries. This is an Alpha feature and is only used when the PreferSameTrafficDistribution feature gate is enabled.
288
+ :param Sequence['ForZoneArgs'] for_zones: forZones indicates the zone(s) this endpoint should be consumed by when using topology aware routing. May contain a maximum of 8 entries.
283
289
  """
290
+ if for_nodes is not None:
291
+ pulumi.set(__self__, "for_nodes", for_nodes)
284
292
  if for_zones is not None:
285
293
  pulumi.set(__self__, "for_zones", for_zones)
286
294
 
295
+ @property
296
+ @pulumi.getter(name="forNodes")
297
+ def for_nodes(self) -> Optional[Sequence['outputs.ForNode']]:
298
+ """
299
+ forNodes indicates the node(s) this endpoint should be consumed by when using topology aware routing. May contain a maximum of 8 entries. This is an Alpha feature and is only used when the PreferSameTrafficDistribution feature gate is enabled.
300
+ """
301
+ return pulumi.get(self, "for_nodes")
302
+
287
303
  @property
288
304
  @pulumi.getter(name="forZones")
289
305
  def for_zones(self) -> Optional[Sequence['outputs.ForZone']]:
290
306
  """
291
- forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing.
307
+ forZones indicates the zone(s) this endpoint should be consumed by when using topology aware routing. May contain a maximum of 8 entries.
292
308
  """
293
309
  return pulumi.get(self, "for_zones")
294
310
 
@@ -301,7 +317,9 @@ class EndpointHintsPatch(dict):
301
317
  @staticmethod
302
318
  def __key_warning(key: str):
303
319
  suggest = None
304
- if key == "forZones":
320
+ if key == "forNodes":
321
+ suggest = "for_nodes"
322
+ elif key == "forZones":
305
323
  suggest = "for_zones"
306
324
 
307
325
  if suggest:
@@ -316,19 +334,31 @@ class EndpointHintsPatch(dict):
316
334
  return super().get(key, default)
317
335
 
318
336
  def __init__(__self__, *,
337
+ for_nodes: Optional[Sequence['outputs.ForNodePatch']] = None,
319
338
  for_zones: Optional[Sequence['outputs.ForZonePatch']] = None):
320
339
  """
321
340
  EndpointHints provides hints describing how an endpoint should be consumed.
322
- :param Sequence['ForZonePatchArgs'] for_zones: forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing.
341
+ :param Sequence['ForNodePatchArgs'] for_nodes: forNodes indicates the node(s) this endpoint should be consumed by when using topology aware routing. May contain a maximum of 8 entries. This is an Alpha feature and is only used when the PreferSameTrafficDistribution feature gate is enabled.
342
+ :param Sequence['ForZonePatchArgs'] for_zones: forZones indicates the zone(s) this endpoint should be consumed by when using topology aware routing. May contain a maximum of 8 entries.
323
343
  """
344
+ if for_nodes is not None:
345
+ pulumi.set(__self__, "for_nodes", for_nodes)
324
346
  if for_zones is not None:
325
347
  pulumi.set(__self__, "for_zones", for_zones)
326
348
 
349
+ @property
350
+ @pulumi.getter(name="forNodes")
351
+ def for_nodes(self) -> Optional[Sequence['outputs.ForNodePatch']]:
352
+ """
353
+ forNodes indicates the node(s) this endpoint should be consumed by when using topology aware routing. May contain a maximum of 8 entries. This is an Alpha feature and is only used when the PreferSameTrafficDistribution feature gate is enabled.
354
+ """
355
+ return pulumi.get(self, "for_nodes")
356
+
327
357
  @property
328
358
  @pulumi.getter(name="forZones")
329
359
  def for_zones(self) -> Optional[Sequence['outputs.ForZonePatch']]:
330
360
  """
331
- forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing.
361
+ forZones indicates the zone(s) this endpoint should be consumed by when using topology aware routing. May contain a maximum of 8 entries.
332
362
  """
333
363
  return pulumi.get(self, "for_zones")
334
364
 
@@ -370,7 +400,7 @@ class EndpointPatch(dict):
370
400
  zone: Optional[builtins.str] = None):
371
401
  """
372
402
  Endpoint represents a single logical "backend" implementing a service.
373
- :param Sequence[builtins.str] addresses: addresses of this endpoint. The contents of this field are interpreted according to the corresponding EndpointSlice addressType field. Consumers must handle different types of addresses in the context of their own capabilities. This must contain at least one address but no more than 100. These are all assumed to be fungible and clients may choose to only use the first element. Refer to: https://issue.k8s.io/106267
403
+ :param Sequence[builtins.str] addresses: addresses of this endpoint. For EndpointSlices of addressType "IPv4" or "IPv6", the values are IP addresses in canonical form. The syntax and semantics of other addressType values are not defined. This must contain at least one address but no more than 100. EndpointSlices generated by the EndpointSlice controller will always have exactly 1 address. No semantics are defined for additional addresses beyond the first, and kube-proxy does not look at them.
374
404
  :param 'EndpointConditionsPatchArgs' conditions: conditions contains information about the current status of the endpoint.
375
405
  :param Mapping[str, builtins.str] deprecated_topology: deprecatedTopology contains topology information part of the v1beta1 API. This field is deprecated, and will be removed when the v1beta1 API is removed (no sooner than kubernetes v1.24). While this field can hold values, it is not writable through the v1 API, and any attempts to write to it will be silently ignored. Topology information can be found in the zone and nodeName fields instead.
376
406
  :param 'EndpointHintsPatchArgs' hints: hints contains information associated with how an endpoint should be consumed.
@@ -400,7 +430,7 @@ class EndpointPatch(dict):
400
430
  @pulumi.getter
401
431
  def addresses(self) -> Optional[Sequence[builtins.str]]:
402
432
  """
403
- addresses of this endpoint. The contents of this field are interpreted according to the corresponding EndpointSlice addressType field. Consumers must handle different types of addresses in the context of their own capabilities. This must contain at least one address but no more than 100. These are all assumed to be fungible and clients may choose to only use the first element. Refer to: https://issue.k8s.io/106267
433
+ addresses of this endpoint. For EndpointSlices of addressType "IPv4" or "IPv6", the values are IP addresses in canonical form. The syntax and semantics of other addressType values are not defined. This must contain at least one address but no more than 100. EndpointSlices generated by the EndpointSlice controller will always have exactly 1 address. No semantics are defined for additional addresses beyond the first, and kube-proxy does not look at them.
404
434
  """
405
435
  return pulumi.get(self, "addresses")
406
436
 
@@ -501,7 +531,7 @@ class EndpointPort(dict):
501
531
 
502
532
  * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol.
503
533
  :param builtins.str name: name represents the name of this port. All ports in an EndpointSlice must have a unique name. If the EndpointSlice is derived from a Kubernetes service, this corresponds to the Service.ports[].name. Name must either be an empty string or pass DNS_LABEL validation: * must be no more than 63 characters long. * must consist of lower case alphanumeric characters or '-'. * must start and end with an alphanumeric character. Default is empty string.
504
- :param builtins.int port: port represents the port number of the endpoint. If this is not specified, ports are not restricted and must be interpreted in the context of the specific consumer.
534
+ :param builtins.int port: port represents the port number of the endpoint. If the EndpointSlice is derived from a Kubernetes service, this must be set to the service's target port. EndpointSlices used for other purposes may have a nil port.
505
535
  :param builtins.str protocol: protocol represents the IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP.
506
536
  """
507
537
  if app_protocol is not None:
@@ -542,7 +572,7 @@ class EndpointPort(dict):
542
572
  @pulumi.getter
543
573
  def port(self) -> Optional[builtins.int]:
544
574
  """
545
- port represents the port number of the endpoint. If this is not specified, ports are not restricted and must be interpreted in the context of the specific consumer.
575
+ port represents the port number of the endpoint. If the EndpointSlice is derived from a Kubernetes service, this must be set to the service's target port. EndpointSlices used for other purposes may have a nil port.
546
576
  """
547
577
  return pulumi.get(self, "port")
548
578
 
@@ -595,7 +625,7 @@ class EndpointPortPatch(dict):
595
625
 
596
626
  * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol.
597
627
  :param builtins.str name: name represents the name of this port. All ports in an EndpointSlice must have a unique name. If the EndpointSlice is derived from a Kubernetes service, this corresponds to the Service.ports[].name. Name must either be an empty string or pass DNS_LABEL validation: * must be no more than 63 characters long. * must consist of lower case alphanumeric characters or '-'. * must start and end with an alphanumeric character. Default is empty string.
598
- :param builtins.int port: port represents the port number of the endpoint. If this is not specified, ports are not restricted and must be interpreted in the context of the specific consumer.
628
+ :param builtins.int port: port represents the port number of the endpoint. If the EndpointSlice is derived from a Kubernetes service, this must be set to the service's target port. EndpointSlices used for other purposes may have a nil port.
599
629
  :param builtins.str protocol: protocol represents the IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP.
600
630
  """
601
631
  if app_protocol is not None:
@@ -636,7 +666,7 @@ class EndpointPortPatch(dict):
636
666
  @pulumi.getter
637
667
  def port(self) -> Optional[builtins.int]:
638
668
  """
639
- port represents the port number of the endpoint. If this is not specified, ports are not restricted and must be interpreted in the context of the specific consumer.
669
+ port represents the port number of the endpoint. If the EndpointSlice is derived from a Kubernetes service, this must be set to the service's target port. EndpointSlices used for other purposes may have a nil port.
640
670
  """
641
671
  return pulumi.get(self, "port")
642
672
 
@@ -652,7 +682,7 @@ class EndpointPortPatch(dict):
652
682
  @pulumi.output_type
653
683
  class EndpointSlice(dict):
654
684
  """
655
- EndpointSlice represents a subset of the endpoints that implement a service. For a given service there may be multiple EndpointSlice objects, selected by labels, which must be joined to produce the full set of endpoints.
685
+ EndpointSlice represents a set of service endpoints. Most EndpointSlices are created by the EndpointSlice controller to represent the Pods selected by Service objects. For a given service there may be multiple EndpointSlice objects which must be joined to produce the full set of endpoints; you can find all of the slices for a given service by listing EndpointSlices in the service's namespace whose `kubernetes.io/service-name` label contains the service's name.
656
686
  """
657
687
  @staticmethod
658
688
  def __key_warning(key: str):
@@ -681,13 +711,13 @@ class EndpointSlice(dict):
681
711
  metadata: Optional['_meta.v1.outputs.ObjectMeta'] = None,
682
712
  ports: Optional[Sequence['outputs.EndpointPort']] = None):
683
713
  """
684
- EndpointSlice represents a subset of the endpoints that implement a service. For a given service there may be multiple EndpointSlice objects, selected by labels, which must be joined to produce the full set of endpoints.
685
- :param builtins.str address_type: addressType specifies the type of address carried by this EndpointSlice. All addresses in this slice must be the same type. This field is immutable after creation. The following address types are currently supported: * IPv4: Represents an IPv4 Address. * IPv6: Represents an IPv6 Address. * FQDN: Represents a Fully Qualified Domain Name.
714
+ EndpointSlice represents a set of service endpoints. Most EndpointSlices are created by the EndpointSlice controller to represent the Pods selected by Service objects. For a given service there may be multiple EndpointSlice objects which must be joined to produce the full set of endpoints; you can find all of the slices for a given service by listing EndpointSlices in the service's namespace whose `kubernetes.io/service-name` label contains the service's name.
715
+ :param builtins.str address_type: addressType specifies the type of address carried by this EndpointSlice. All addresses in this slice must be the same type. This field is immutable after creation. The following address types are currently supported: * IPv4: Represents an IPv4 Address. * IPv6: Represents an IPv6 Address. * FQDN: Represents a Fully Qualified Domain Name. (Deprecated) The EndpointSlice controller only generates, and kube-proxy only processes, slices of addressType "IPv4" and "IPv6". No semantics are defined for the "FQDN" type.
686
716
  :param Sequence['EndpointArgs'] endpoints: endpoints is a list of unique endpoints in this slice. Each slice may include a maximum of 1000 endpoints.
687
717
  :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
688
718
  :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
689
719
  :param '_meta.v1.ObjectMetaArgs' metadata: Standard object's metadata.
690
- :param Sequence['EndpointPortArgs'] ports: ports specifies the list of network ports exposed by each endpoint in this slice. Each port must have a unique name. When ports is empty, it indicates that there are no defined ports. When a port is defined with a nil port value, it indicates "all ports". Each slice may include a maximum of 100 ports.
720
+ :param Sequence['EndpointPortArgs'] ports: ports specifies the list of network ports exposed by each endpoint in this slice. Each port must have a unique name. Each slice may include a maximum of 100 ports. Services always have at least 1 port, so EndpointSlices generated by the EndpointSlice controller will likewise always have at least 1 port. EndpointSlices used for other purposes may have an empty ports list.
691
721
  """
692
722
  pulumi.set(__self__, "address_type", address_type)
693
723
  pulumi.set(__self__, "endpoints", endpoints)
@@ -704,7 +734,7 @@ class EndpointSlice(dict):
704
734
  @pulumi.getter(name="addressType")
705
735
  def address_type(self) -> builtins.str:
706
736
  """
707
- addressType specifies the type of address carried by this EndpointSlice. All addresses in this slice must be the same type. This field is immutable after creation. The following address types are currently supported: * IPv4: Represents an IPv4 Address. * IPv6: Represents an IPv6 Address. * FQDN: Represents a Fully Qualified Domain Name.
737
+ addressType specifies the type of address carried by this EndpointSlice. All addresses in this slice must be the same type. This field is immutable after creation. The following address types are currently supported: * IPv4: Represents an IPv4 Address. * IPv6: Represents an IPv6 Address. * FQDN: Represents a Fully Qualified Domain Name. (Deprecated) The EndpointSlice controller only generates, and kube-proxy only processes, slices of addressType "IPv4" and "IPv6". No semantics are defined for the "FQDN" type.
708
738
  """
709
739
  return pulumi.get(self, "address_type")
710
740
 
@@ -744,11 +774,56 @@ class EndpointSlice(dict):
744
774
  @pulumi.getter
745
775
  def ports(self) -> Optional[Sequence['outputs.EndpointPort']]:
746
776
  """
747
- ports specifies the list of network ports exposed by each endpoint in this slice. Each port must have a unique name. When ports is empty, it indicates that there are no defined ports. When a port is defined with a nil port value, it indicates "all ports". Each slice may include a maximum of 100 ports.
777
+ ports specifies the list of network ports exposed by each endpoint in this slice. Each port must have a unique name. Each slice may include a maximum of 100 ports. Services always have at least 1 port, so EndpointSlices generated by the EndpointSlice controller will likewise always have at least 1 port. EndpointSlices used for other purposes may have an empty ports list.
748
778
  """
749
779
  return pulumi.get(self, "ports")
750
780
 
751
781
 
782
+ @pulumi.output_type
783
+ class ForNode(dict):
784
+ """
785
+ ForNode provides information about which nodes should consume this endpoint.
786
+ """
787
+ def __init__(__self__, *,
788
+ name: builtins.str):
789
+ """
790
+ ForNode provides information about which nodes should consume this endpoint.
791
+ :param builtins.str name: name represents the name of the node.
792
+ """
793
+ pulumi.set(__self__, "name", name)
794
+
795
+ @property
796
+ @pulumi.getter
797
+ def name(self) -> builtins.str:
798
+ """
799
+ name represents the name of the node.
800
+ """
801
+ return pulumi.get(self, "name")
802
+
803
+
804
+ @pulumi.output_type
805
+ class ForNodePatch(dict):
806
+ """
807
+ ForNode provides information about which nodes should consume this endpoint.
808
+ """
809
+ def __init__(__self__, *,
810
+ name: Optional[builtins.str] = None):
811
+ """
812
+ ForNode provides information about which nodes should consume this endpoint.
813
+ :param builtins.str name: name represents the name of the node.
814
+ """
815
+ if name is not None:
816
+ pulumi.set(__self__, "name", name)
817
+
818
+ @property
819
+ @pulumi.getter
820
+ def name(self) -> Optional[builtins.str]:
821
+ """
822
+ name represents the name of the node.
823
+ """
824
+ return pulumi.get(self, "name")
825
+
826
+
752
827
  @pulumi.output_type
753
828
  class ForZone(dict):
754
829
  """
@@ -0,0 +1,220 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by pulumigen. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import builtins
6
+ import copy
7
+ import warnings
8
+ import sys
9
+ import pulumi
10
+ import pulumi.runtime
11
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
12
+ if sys.version_info >= (3, 11):
13
+ from typing import NotRequired, TypedDict, TypeAlias
14
+ else:
15
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
16
+ from ... import _utilities
17
+ from . import outputs
18
+ from ... import meta as _meta
19
+ from ._inputs import *
20
+
21
+ __all__ = ['IPAddressInitArgs', 'IPAddress']
22
+
23
+ @pulumi.input_type
24
+ class IPAddressInitArgs:
25
+ def __init__(__self__, *,
26
+ api_version: Optional[pulumi.Input[builtins.str]] = None,
27
+ kind: Optional[pulumi.Input[builtins.str]] = None,
28
+ metadata: Optional[pulumi.Input['_meta.v1.ObjectMetaArgs']] = None,
29
+ spec: Optional[pulumi.Input['IPAddressSpecArgs']] = None):
30
+ """
31
+ The set of arguments for constructing a IPAddress resource.
32
+ :param pulumi.Input[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
33
+ :param pulumi.Input[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
34
+ :param pulumi.Input['_meta.v1.ObjectMetaArgs'] metadata: Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
35
+ :param pulumi.Input['IPAddressSpecArgs'] spec: spec is the desired state of the IPAddress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
36
+ """
37
+ if api_version is not None:
38
+ pulumi.set(__self__, "api_version", 'networking.k8s.io/v1')
39
+ if kind is not None:
40
+ pulumi.set(__self__, "kind", 'IPAddress')
41
+ if metadata is not None:
42
+ pulumi.set(__self__, "metadata", metadata)
43
+ if spec is not None:
44
+ pulumi.set(__self__, "spec", spec)
45
+
46
+ @property
47
+ @pulumi.getter(name="apiVersion")
48
+ def api_version(self) -> Optional[pulumi.Input[builtins.str]]:
49
+ """
50
+ 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
51
+ """
52
+ return pulumi.get(self, "api_version")
53
+
54
+ @api_version.setter
55
+ def api_version(self, value: Optional[pulumi.Input[builtins.str]]):
56
+ pulumi.set(self, "api_version", value)
57
+
58
+ @property
59
+ @pulumi.getter
60
+ def kind(self) -> Optional[pulumi.Input[builtins.str]]:
61
+ """
62
+ 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
63
+ """
64
+ return pulumi.get(self, "kind")
65
+
66
+ @kind.setter
67
+ def kind(self, value: Optional[pulumi.Input[builtins.str]]):
68
+ pulumi.set(self, "kind", value)
69
+
70
+ @property
71
+ @pulumi.getter
72
+ def metadata(self) -> Optional[pulumi.Input['_meta.v1.ObjectMetaArgs']]:
73
+ """
74
+ Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
75
+ """
76
+ return pulumi.get(self, "metadata")
77
+
78
+ @metadata.setter
79
+ def metadata(self, value: Optional[pulumi.Input['_meta.v1.ObjectMetaArgs']]):
80
+ pulumi.set(self, "metadata", value)
81
+
82
+ @property
83
+ @pulumi.getter
84
+ def spec(self) -> Optional[pulumi.Input['IPAddressSpecArgs']]:
85
+ """
86
+ spec is the desired state of the IPAddress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
87
+ """
88
+ return pulumi.get(self, "spec")
89
+
90
+ @spec.setter
91
+ def spec(self, value: Optional[pulumi.Input['IPAddressSpecArgs']]):
92
+ pulumi.set(self, "spec", value)
93
+
94
+
95
+ class IPAddress(pulumi.CustomResource):
96
+
97
+ pulumi_type = "kubernetes:networking.k8s.io/v1:IPAddress"
98
+
99
+ @overload
100
+ def __init__(__self__,
101
+ resource_name: str,
102
+ opts: Optional[pulumi.ResourceOptions] = None,
103
+ api_version: Optional[pulumi.Input[builtins.str]] = None,
104
+ kind: Optional[pulumi.Input[builtins.str]] = None,
105
+ metadata: Optional[pulumi.Input[Union['_meta.v1.ObjectMetaArgs', '_meta.v1.ObjectMetaArgsDict']]] = None,
106
+ spec: Optional[pulumi.Input[Union['IPAddressSpecArgs', 'IPAddressSpecArgsDict']]] = None,
107
+ __props__=None):
108
+ """
109
+ IPAddress represents a single IP of a single IP Family. The object is designed to be used by APIs that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses. An IP address can be represented in different formats, to guarantee the uniqueness of the IP, the name of the object is the IP address in canonical format, four decimal digits separated by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6. Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 Invalid: 10.01.2.3 or 2001:db8:0:0:0::1
110
+
111
+ :param str resource_name: The name of the resource.
112
+ :param pulumi.ResourceOptions opts: Options for the resource.
113
+ :param pulumi.Input[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
114
+ :param pulumi.Input[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
115
+ :param pulumi.Input[Union['_meta.v1.ObjectMetaArgs', '_meta.v1.ObjectMetaArgsDict']] metadata: Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
116
+ :param pulumi.Input[Union['IPAddressSpecArgs', 'IPAddressSpecArgsDict']] spec: spec is the desired state of the IPAddress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
117
+ """
118
+ ...
119
+ @overload
120
+ def __init__(__self__,
121
+ resource_name: str,
122
+ args: Optional[IPAddressInitArgs] = None,
123
+ opts: Optional[pulumi.ResourceOptions] = None):
124
+ """
125
+ IPAddress represents a single IP of a single IP Family. The object is designed to be used by APIs that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses. An IP address can be represented in different formats, to guarantee the uniqueness of the IP, the name of the object is the IP address in canonical format, four decimal digits separated by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6. Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 Invalid: 10.01.2.3 or 2001:db8:0:0:0::1
126
+
127
+ :param str resource_name: The name of the resource.
128
+ :param IPAddressInitArgs args: The arguments to use to populate this resource's properties.
129
+ :param pulumi.ResourceOptions opts: Options for the resource.
130
+ """
131
+ ...
132
+ def __init__(__self__, resource_name: str, *args, **kwargs):
133
+ resource_args, opts = _utilities.get_resource_args_opts(IPAddressInitArgs, pulumi.ResourceOptions, *args, **kwargs)
134
+ if resource_args is not None:
135
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
136
+ else:
137
+ __self__._internal_init(resource_name, *args, **kwargs)
138
+
139
+ def _internal_init(__self__,
140
+ resource_name: str,
141
+ opts: Optional[pulumi.ResourceOptions] = None,
142
+ api_version: Optional[pulumi.Input[builtins.str]] = None,
143
+ kind: Optional[pulumi.Input[builtins.str]] = None,
144
+ metadata: Optional[pulumi.Input[Union['_meta.v1.ObjectMetaArgs', '_meta.v1.ObjectMetaArgsDict']]] = None,
145
+ spec: Optional[pulumi.Input[Union['IPAddressSpecArgs', 'IPAddressSpecArgsDict']]] = None,
146
+ __props__=None):
147
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
148
+ if not isinstance(opts, pulumi.ResourceOptions):
149
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
150
+ if opts.id is None:
151
+ if __props__ is not None:
152
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
153
+ __props__ = IPAddressInitArgs.__new__(IPAddressInitArgs)
154
+
155
+ __props__.__dict__["api_version"] = 'networking.k8s.io/v1'
156
+ __props__.__dict__["kind"] = 'IPAddress'
157
+ __props__.__dict__["metadata"] = metadata
158
+ __props__.__dict__["spec"] = spec
159
+ alias_opts = pulumi.ResourceOptions(aliases=[pulumi.Alias(type_="kubernetes:networking.k8s.io/v1alpha1:IPAddress"), pulumi.Alias(type_="kubernetes:networking.k8s.io/v1beta1:IPAddress")])
160
+ opts = pulumi.ResourceOptions.merge(opts, alias_opts)
161
+ super(IPAddress, __self__).__init__(
162
+ 'kubernetes:networking.k8s.io/v1:IPAddress',
163
+ resource_name,
164
+ __props__,
165
+ opts)
166
+
167
+ @staticmethod
168
+ def get(resource_name: str,
169
+ id: pulumi.Input[str],
170
+ opts: Optional[pulumi.ResourceOptions] = None) -> 'IPAddress':
171
+ """
172
+ Get an existing IPAddress resource's state with the given name, id, and optional extra
173
+ properties used to qualify the lookup.
174
+
175
+ :param str resource_name: The unique name of the resulting resource.
176
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
177
+ :param pulumi.ResourceOptions opts: Options for the resource.
178
+ """
179
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
180
+
181
+ __props__ = IPAddressInitArgs.__new__(IPAddressInitArgs)
182
+
183
+ __props__.__dict__["api_version"] = None
184
+ __props__.__dict__["kind"] = None
185
+ __props__.__dict__["metadata"] = None
186
+ __props__.__dict__["spec"] = None
187
+ return IPAddress(resource_name, opts=opts, __props__=__props__)
188
+
189
+ @property
190
+ @pulumi.getter(name="apiVersion")
191
+ def api_version(self) -> pulumi.Output[builtins.str]:
192
+ """
193
+ 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
194
+ """
195
+ return pulumi.get(self, "api_version")
196
+
197
+ @property
198
+ @pulumi.getter
199
+ def kind(self) -> pulumi.Output[builtins.str]:
200
+ """
201
+ 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
202
+ """
203
+ return pulumi.get(self, "kind")
204
+
205
+ @property
206
+ @pulumi.getter
207
+ def metadata(self) -> pulumi.Output['_meta.v1.outputs.ObjectMeta']:
208
+ """
209
+ Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
210
+ """
211
+ return pulumi.get(self, "metadata")
212
+
213
+ @property
214
+ @pulumi.getter
215
+ def spec(self) -> pulumi.Output['outputs.IPAddressSpec']:
216
+ """
217
+ spec is the desired state of the IPAddress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
218
+ """
219
+ return pulumi.get(self, "spec")
220
+