cdktf-cdktf-provider-upcloud 15.8.0__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.
Files changed (66) hide show
  1. cdktf_cdktf_provider_upcloud/__init__.py +247 -0
  2. cdktf_cdktf_provider_upcloud/_jsii/__init__.py +45 -0
  3. cdktf_cdktf_provider_upcloud/_jsii/provider-upcloud@15.8.0.jsii.tgz +0 -0
  4. cdktf_cdktf_provider_upcloud/data_upcloud_hosts/__init__.py +894 -0
  5. cdktf_cdktf_provider_upcloud/data_upcloud_ip_addresses/__init__.py +633 -0
  6. cdktf_cdktf_provider_upcloud/data_upcloud_kubernetes_cluster/__init__.py +384 -0
  7. cdktf_cdktf_provider_upcloud/data_upcloud_load_balancer_dns_challenge_domain/__init__.py +319 -0
  8. cdktf_cdktf_provider_upcloud/data_upcloud_managed_database_mysql_sessions/__init__.py +853 -0
  9. cdktf_cdktf_provider_upcloud/data_upcloud_managed_database_opensearch_indices/__init__.py +717 -0
  10. cdktf_cdktf_provider_upcloud/data_upcloud_managed_database_postgresql_sessions/__init__.py +1084 -0
  11. cdktf_cdktf_provider_upcloud/data_upcloud_managed_database_valkey_sessions/__init__.py +898 -0
  12. cdktf_cdktf_provider_upcloud/data_upcloud_managed_object_storage_policies/__init__.py +647 -0
  13. cdktf_cdktf_provider_upcloud/data_upcloud_managed_object_storage_regions/__init__.py +600 -0
  14. cdktf_cdktf_provider_upcloud/data_upcloud_networks/__init__.py +1093 -0
  15. cdktf_cdktf_provider_upcloud/data_upcloud_storage/__init__.py +725 -0
  16. cdktf_cdktf_provider_upcloud/data_upcloud_tags/__init__.py +558 -0
  17. cdktf_cdktf_provider_upcloud/data_upcloud_zone/__init__.py +421 -0
  18. cdktf_cdktf_provider_upcloud/data_upcloud_zones/__init__.py +364 -0
  19. cdktf_cdktf_provider_upcloud/file_storage/__init__.py +1683 -0
  20. cdktf_cdktf_provider_upcloud/firewall_rules/__init__.py +1233 -0
  21. cdktf_cdktf_provider_upcloud/floating_ip_address/__init__.py +552 -0
  22. cdktf_cdktf_provider_upcloud/gateway/__init__.py +1167 -0
  23. cdktf_cdktf_provider_upcloud/gateway_connection/__init__.py +1299 -0
  24. cdktf_cdktf_provider_upcloud/gateway_connection_tunnel/__init__.py +1357 -0
  25. cdktf_cdktf_provider_upcloud/kubernetes_cluster/__init__.py +801 -0
  26. cdktf_cdktf_provider_upcloud/kubernetes_node_group/__init__.py +2674 -0
  27. cdktf_cdktf_provider_upcloud/loadbalancer/__init__.py +2113 -0
  28. cdktf_cdktf_provider_upcloud/loadbalancer_backend/__init__.py +1426 -0
  29. cdktf_cdktf_provider_upcloud/loadbalancer_backend_tls_config/__init__.py +442 -0
  30. cdktf_cdktf_provider_upcloud/loadbalancer_dynamic_backend_member/__init__.py +633 -0
  31. cdktf_cdktf_provider_upcloud/loadbalancer_dynamic_certificate_bundle/__init__.py +459 -0
  32. cdktf_cdktf_provider_upcloud/loadbalancer_frontend/__init__.py +1290 -0
  33. cdktf_cdktf_provider_upcloud/loadbalancer_frontend_rule/__init__.py +11486 -0
  34. cdktf_cdktf_provider_upcloud/loadbalancer_frontend_tls_config/__init__.py +442 -0
  35. cdktf_cdktf_provider_upcloud/loadbalancer_manual_certificate_bundle/__init__.py +504 -0
  36. cdktf_cdktf_provider_upcloud/loadbalancer_resolver/__init__.py +659 -0
  37. cdktf_cdktf_provider_upcloud/loadbalancer_static_backend_member/__init__.py +633 -0
  38. cdktf_cdktf_provider_upcloud/managed_database_logical_database/__init__.py +536 -0
  39. cdktf_cdktf_provider_upcloud/managed_database_mysql/__init__.py +4644 -0
  40. cdktf_cdktf_provider_upcloud/managed_database_opensearch/__init__.py +13812 -0
  41. cdktf_cdktf_provider_upcloud/managed_database_postgresql/__init__.py +7734 -0
  42. cdktf_cdktf_provider_upcloud/managed_database_user/__init__.py +1541 -0
  43. cdktf_cdktf_provider_upcloud/managed_database_valkey/__init__.py +3355 -0
  44. cdktf_cdktf_provider_upcloud/managed_object_storage/__init__.py +1198 -0
  45. cdktf_cdktf_provider_upcloud/managed_object_storage_bucket/__init__.py +409 -0
  46. cdktf_cdktf_provider_upcloud/managed_object_storage_custom_domain/__init__.py +446 -0
  47. cdktf_cdktf_provider_upcloud/managed_object_storage_policy/__init__.py +521 -0
  48. cdktf_cdktf_provider_upcloud/managed_object_storage_user/__init__.py +454 -0
  49. cdktf_cdktf_provider_upcloud/managed_object_storage_user_access_key/__init__.py +505 -0
  50. cdktf_cdktf_provider_upcloud/managed_object_storage_user_policy/__init__.py +485 -0
  51. cdktf_cdktf_provider_upcloud/network/__init__.py +1554 -0
  52. cdktf_cdktf_provider_upcloud/network_peering/__init__.py +1084 -0
  53. cdktf_cdktf_provider_upcloud/provider/__init__.py +544 -0
  54. cdktf_cdktf_provider_upcloud/py.typed +1 -0
  55. cdktf_cdktf_provider_upcloud/router/__init__.py +1030 -0
  56. cdktf_cdktf_provider_upcloud/server/__init__.py +4542 -0
  57. cdktf_cdktf_provider_upcloud/server_group/__init__.py +571 -0
  58. cdktf_cdktf_provider_upcloud/storage/__init__.py +1850 -0
  59. cdktf_cdktf_provider_upcloud/storage_backup/__init__.py +483 -0
  60. cdktf_cdktf_provider_upcloud/storage_template/__init__.py +478 -0
  61. cdktf_cdktf_provider_upcloud/tag/__init__.py +493 -0
  62. cdktf_cdktf_provider_upcloud-15.8.0.dist-info/LICENSE +355 -0
  63. cdktf_cdktf_provider_upcloud-15.8.0.dist-info/METADATA +120 -0
  64. cdktf_cdktf_provider_upcloud-15.8.0.dist-info/RECORD +66 -0
  65. cdktf_cdktf_provider_upcloud-15.8.0.dist-info/WHEEL +5 -0
  66. cdktf_cdktf_provider_upcloud-15.8.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,801 @@
1
+ r'''
2
+ # `upcloud_kubernetes_cluster`
3
+
4
+ Refer to the Terraform Registry for docs: [`upcloud_kubernetes_cluster`](https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster).
5
+ '''
6
+ from pkgutil import extend_path
7
+ __path__ = extend_path(__path__, __name__)
8
+
9
+ import abc
10
+ import builtins
11
+ import datetime
12
+ import enum
13
+ import typing
14
+
15
+ import jsii
16
+ import publication
17
+ import typing_extensions
18
+
19
+ import typeguard
20
+ from importlib.metadata import version as _metadata_package_version
21
+ TYPEGUARD_MAJOR_VERSION = int(_metadata_package_version('typeguard').split('.')[0])
22
+
23
+ def check_type(argname: str, value: object, expected_type: typing.Any) -> typing.Any:
24
+ if TYPEGUARD_MAJOR_VERSION <= 2:
25
+ return typeguard.check_type(argname=argname, value=value, expected_type=expected_type) # type:ignore
26
+ else:
27
+ if isinstance(value, jsii._reference_map.InterfaceDynamicProxy): # pyright: ignore [reportAttributeAccessIssue]
28
+ pass
29
+ else:
30
+ if TYPEGUARD_MAJOR_VERSION == 3:
31
+ typeguard.config.collection_check_strategy = typeguard.CollectionCheckStrategy.ALL_ITEMS # type:ignore
32
+ typeguard.check_type(value=value, expected_type=expected_type) # type:ignore
33
+ else:
34
+ typeguard.check_type(value=value, expected_type=expected_type, collection_check_strategy=typeguard.CollectionCheckStrategy.ALL_ITEMS) # type:ignore
35
+
36
+ from .._jsii import *
37
+
38
+ import cdktf as _cdktf_9a9027ec
39
+ import constructs as _constructs_77d1e7e8
40
+
41
+
42
+ class KubernetesCluster(
43
+ _cdktf_9a9027ec.TerraformResource,
44
+ metaclass=jsii.JSIIMeta,
45
+ jsii_type="@cdktf/provider-upcloud.kubernetesCluster.KubernetesCluster",
46
+ ):
47
+ '''Represents a {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster upcloud_kubernetes_cluster}.'''
48
+
49
+ def __init__(
50
+ self,
51
+ scope: _constructs_77d1e7e8.Construct,
52
+ id: builtins.str,
53
+ *,
54
+ control_plane_ip_filter: typing.Sequence[builtins.str],
55
+ name: builtins.str,
56
+ network: builtins.str,
57
+ zone: builtins.str,
58
+ labels: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
59
+ plan: typing.Optional[builtins.str] = None,
60
+ private_node_groups: typing.Optional[typing.Union[builtins.bool, _cdktf_9a9027ec.IResolvable]] = None,
61
+ storage_encryption: typing.Optional[builtins.str] = None,
62
+ upgrade_strategy_type: typing.Optional[builtins.str] = None,
63
+ version: typing.Optional[builtins.str] = None,
64
+ connection: typing.Optional[typing.Union[typing.Union[_cdktf_9a9027ec.SSHProvisionerConnection, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktf_9a9027ec.WinrmProvisionerConnection, typing.Dict[builtins.str, typing.Any]]]] = None,
65
+ count: typing.Optional[typing.Union[jsii.Number, _cdktf_9a9027ec.TerraformCount]] = None,
66
+ depends_on: typing.Optional[typing.Sequence[_cdktf_9a9027ec.ITerraformDependable]] = None,
67
+ for_each: typing.Optional[_cdktf_9a9027ec.ITerraformIterator] = None,
68
+ lifecycle: typing.Optional[typing.Union[_cdktf_9a9027ec.TerraformResourceLifecycle, typing.Dict[builtins.str, typing.Any]]] = None,
69
+ provider: typing.Optional[_cdktf_9a9027ec.TerraformProvider] = None,
70
+ provisioners: typing.Optional[typing.Sequence[typing.Union[typing.Union[_cdktf_9a9027ec.FileProvisioner, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktf_9a9027ec.LocalExecProvisioner, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktf_9a9027ec.RemoteExecProvisioner, typing.Dict[builtins.str, typing.Any]]]]] = None,
71
+ ) -> None:
72
+ '''Create a new {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster upcloud_kubernetes_cluster} Resource.
73
+
74
+ :param scope: The scope in which to define this construct.
75
+ :param id: The scoped construct ID. Must be unique amongst siblings in the same scope
76
+ :param control_plane_ip_filter: IP addresses or IP ranges in CIDR format which are allowed to access the cluster control plane. To allow access from any source, use ``["0.0.0.0/0"]``. To deny access from all sources, use ``[]``. Values set here do not restrict access to node groups or exposed Kubernetes services. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#control_plane_ip_filter KubernetesCluster#control_plane_ip_filter}
77
+ :param name: Cluster name. Needs to be unique within the account. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#name KubernetesCluster#name}
78
+ :param network: Network ID for the cluster to run in. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#network KubernetesCluster#network}
79
+ :param zone: Zone in which the Kubernetes cluster will be hosted, e.g. ``de-fra1``. You can list available zones with ``upctl zone list``. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#zone KubernetesCluster#zone}
80
+ :param labels: User defined key-value pairs to classify the cluster. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#labels KubernetesCluster#labels}
81
+ :param plan: The pricing plan used for the cluster. You can list available plans with ``upctl kubernetes plans``. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#plan KubernetesCluster#plan}
82
+ :param private_node_groups: Enable private node groups. Private node groups requires a network that is routed through NAT gateway. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#private_node_groups KubernetesCluster#private_node_groups}
83
+ :param storage_encryption: Set default storage encryption strategy for all nodes in the cluster. Valid values are ``data-at-rest`` and ``none``. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#storage_encryption KubernetesCluster#storage_encryption}
84
+ :param upgrade_strategy_type: The upgrade strategy to use when changing the cluster ``version``. If not set, ``manual`` strategy will be used by default. When using ``manual`` strategy, you must replace the existing node-groups to update them. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#upgrade_strategy_type KubernetesCluster#upgrade_strategy_type}
85
+ :param version: Kubernetes version ID, e.g. ``1.31``. You can list available version IDs with ``upctl kubernetes versions``. Note that when changing the cluster version, ``upgrade_strategy`` will be taken into account. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#version KubernetesCluster#version}
86
+ :param connection:
87
+ :param count:
88
+ :param depends_on:
89
+ :param for_each:
90
+ :param lifecycle:
91
+ :param provider:
92
+ :param provisioners:
93
+ '''
94
+ if __debug__:
95
+ type_hints = typing.get_type_hints(_typecheckingstub__8a9b711fc0d4f95af1581b8c47ef51571908b57197927d077ddbf475a99293e0)
96
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
97
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
98
+ config = KubernetesClusterConfig(
99
+ control_plane_ip_filter=control_plane_ip_filter,
100
+ name=name,
101
+ network=network,
102
+ zone=zone,
103
+ labels=labels,
104
+ plan=plan,
105
+ private_node_groups=private_node_groups,
106
+ storage_encryption=storage_encryption,
107
+ upgrade_strategy_type=upgrade_strategy_type,
108
+ version=version,
109
+ connection=connection,
110
+ count=count,
111
+ depends_on=depends_on,
112
+ for_each=for_each,
113
+ lifecycle=lifecycle,
114
+ provider=provider,
115
+ provisioners=provisioners,
116
+ )
117
+
118
+ jsii.create(self.__class__, self, [scope, id, config])
119
+
120
+ @jsii.member(jsii_name="generateConfigForImport")
121
+ @builtins.classmethod
122
+ def generate_config_for_import(
123
+ cls,
124
+ scope: _constructs_77d1e7e8.Construct,
125
+ import_to_id: builtins.str,
126
+ import_from_id: builtins.str,
127
+ provider: typing.Optional[_cdktf_9a9027ec.TerraformProvider] = None,
128
+ ) -> _cdktf_9a9027ec.ImportableResource:
129
+ '''Generates CDKTF code for importing a KubernetesCluster resource upon running "cdktf plan ".
130
+
131
+ :param scope: The scope in which to define this construct.
132
+ :param import_to_id: The construct id used in the generated config for the KubernetesCluster to import.
133
+ :param import_from_id: The id of the existing KubernetesCluster that should be imported. Refer to the {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#import import section} in the documentation of this resource for the id to use
134
+ :param provider: ? Optional instance of the provider where the KubernetesCluster to import is found.
135
+ '''
136
+ if __debug__:
137
+ type_hints = typing.get_type_hints(_typecheckingstub__3920d985ca4d5b1c9f6d89b891ca033b258ae3e0ccad607090396c654e47ecae)
138
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
139
+ check_type(argname="argument import_to_id", value=import_to_id, expected_type=type_hints["import_to_id"])
140
+ check_type(argname="argument import_from_id", value=import_from_id, expected_type=type_hints["import_from_id"])
141
+ check_type(argname="argument provider", value=provider, expected_type=type_hints["provider"])
142
+ return typing.cast(_cdktf_9a9027ec.ImportableResource, jsii.sinvoke(cls, "generateConfigForImport", [scope, import_to_id, import_from_id, provider]))
143
+
144
+ @jsii.member(jsii_name="resetLabels")
145
+ def reset_labels(self) -> None:
146
+ return typing.cast(None, jsii.invoke(self, "resetLabels", []))
147
+
148
+ @jsii.member(jsii_name="resetPlan")
149
+ def reset_plan(self) -> None:
150
+ return typing.cast(None, jsii.invoke(self, "resetPlan", []))
151
+
152
+ @jsii.member(jsii_name="resetPrivateNodeGroups")
153
+ def reset_private_node_groups(self) -> None:
154
+ return typing.cast(None, jsii.invoke(self, "resetPrivateNodeGroups", []))
155
+
156
+ @jsii.member(jsii_name="resetStorageEncryption")
157
+ def reset_storage_encryption(self) -> None:
158
+ return typing.cast(None, jsii.invoke(self, "resetStorageEncryption", []))
159
+
160
+ @jsii.member(jsii_name="resetUpgradeStrategyType")
161
+ def reset_upgrade_strategy_type(self) -> None:
162
+ return typing.cast(None, jsii.invoke(self, "resetUpgradeStrategyType", []))
163
+
164
+ @jsii.member(jsii_name="resetVersion")
165
+ def reset_version(self) -> None:
166
+ return typing.cast(None, jsii.invoke(self, "resetVersion", []))
167
+
168
+ @jsii.member(jsii_name="synthesizeAttributes")
169
+ def _synthesize_attributes(self) -> typing.Mapping[builtins.str, typing.Any]:
170
+ return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.invoke(self, "synthesizeAttributes", []))
171
+
172
+ @jsii.member(jsii_name="synthesizeHclAttributes")
173
+ def _synthesize_hcl_attributes(self) -> typing.Mapping[builtins.str, typing.Any]:
174
+ return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.invoke(self, "synthesizeHclAttributes", []))
175
+
176
+ @jsii.python.classproperty
177
+ @jsii.member(jsii_name="tfResourceType")
178
+ def TF_RESOURCE_TYPE(cls) -> builtins.str:
179
+ return typing.cast(builtins.str, jsii.sget(cls, "tfResourceType"))
180
+
181
+ @builtins.property
182
+ @jsii.member(jsii_name="id")
183
+ def id(self) -> builtins.str:
184
+ return typing.cast(builtins.str, jsii.get(self, "id"))
185
+
186
+ @builtins.property
187
+ @jsii.member(jsii_name="networkCidr")
188
+ def network_cidr(self) -> builtins.str:
189
+ return typing.cast(builtins.str, jsii.get(self, "networkCidr"))
190
+
191
+ @builtins.property
192
+ @jsii.member(jsii_name="nodeGroups")
193
+ def node_groups(self) -> typing.List[builtins.str]:
194
+ return typing.cast(typing.List[builtins.str], jsii.get(self, "nodeGroups"))
195
+
196
+ @builtins.property
197
+ @jsii.member(jsii_name="state")
198
+ def state(self) -> builtins.str:
199
+ return typing.cast(builtins.str, jsii.get(self, "state"))
200
+
201
+ @builtins.property
202
+ @jsii.member(jsii_name="controlPlaneIpFilterInput")
203
+ def control_plane_ip_filter_input(
204
+ self,
205
+ ) -> typing.Optional[typing.List[builtins.str]]:
206
+ return typing.cast(typing.Optional[typing.List[builtins.str]], jsii.get(self, "controlPlaneIpFilterInput"))
207
+
208
+ @builtins.property
209
+ @jsii.member(jsii_name="labelsInput")
210
+ def labels_input(
211
+ self,
212
+ ) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
213
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], jsii.get(self, "labelsInput"))
214
+
215
+ @builtins.property
216
+ @jsii.member(jsii_name="nameInput")
217
+ def name_input(self) -> typing.Optional[builtins.str]:
218
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "nameInput"))
219
+
220
+ @builtins.property
221
+ @jsii.member(jsii_name="networkInput")
222
+ def network_input(self) -> typing.Optional[builtins.str]:
223
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "networkInput"))
224
+
225
+ @builtins.property
226
+ @jsii.member(jsii_name="planInput")
227
+ def plan_input(self) -> typing.Optional[builtins.str]:
228
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "planInput"))
229
+
230
+ @builtins.property
231
+ @jsii.member(jsii_name="privateNodeGroupsInput")
232
+ def private_node_groups_input(
233
+ self,
234
+ ) -> typing.Optional[typing.Union[builtins.bool, _cdktf_9a9027ec.IResolvable]]:
235
+ return typing.cast(typing.Optional[typing.Union[builtins.bool, _cdktf_9a9027ec.IResolvable]], jsii.get(self, "privateNodeGroupsInput"))
236
+
237
+ @builtins.property
238
+ @jsii.member(jsii_name="storageEncryptionInput")
239
+ def storage_encryption_input(self) -> typing.Optional[builtins.str]:
240
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "storageEncryptionInput"))
241
+
242
+ @builtins.property
243
+ @jsii.member(jsii_name="upgradeStrategyTypeInput")
244
+ def upgrade_strategy_type_input(self) -> typing.Optional[builtins.str]:
245
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "upgradeStrategyTypeInput"))
246
+
247
+ @builtins.property
248
+ @jsii.member(jsii_name="versionInput")
249
+ def version_input(self) -> typing.Optional[builtins.str]:
250
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "versionInput"))
251
+
252
+ @builtins.property
253
+ @jsii.member(jsii_name="zoneInput")
254
+ def zone_input(self) -> typing.Optional[builtins.str]:
255
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "zoneInput"))
256
+
257
+ @builtins.property
258
+ @jsii.member(jsii_name="controlPlaneIpFilter")
259
+ def control_plane_ip_filter(self) -> typing.List[builtins.str]:
260
+ return typing.cast(typing.List[builtins.str], jsii.get(self, "controlPlaneIpFilter"))
261
+
262
+ @control_plane_ip_filter.setter
263
+ def control_plane_ip_filter(self, value: typing.List[builtins.str]) -> None:
264
+ if __debug__:
265
+ type_hints = typing.get_type_hints(_typecheckingstub__93a87bbc915dd5fa01b944063ae4f03861f927743d8bd0e811ded1b50a775513)
266
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
267
+ jsii.set(self, "controlPlaneIpFilter", value) # pyright: ignore[reportArgumentType]
268
+
269
+ @builtins.property
270
+ @jsii.member(jsii_name="labels")
271
+ def labels(self) -> typing.Mapping[builtins.str, builtins.str]:
272
+ return typing.cast(typing.Mapping[builtins.str, builtins.str], jsii.get(self, "labels"))
273
+
274
+ @labels.setter
275
+ def labels(self, value: typing.Mapping[builtins.str, builtins.str]) -> None:
276
+ if __debug__:
277
+ type_hints = typing.get_type_hints(_typecheckingstub__7b9fb1189cc7bea21771f655e6f7d40e2b84a7ccedb6b706bd861ad34f2a71e8)
278
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
279
+ jsii.set(self, "labels", value) # pyright: ignore[reportArgumentType]
280
+
281
+ @builtins.property
282
+ @jsii.member(jsii_name="name")
283
+ def name(self) -> builtins.str:
284
+ return typing.cast(builtins.str, jsii.get(self, "name"))
285
+
286
+ @name.setter
287
+ def name(self, value: builtins.str) -> None:
288
+ if __debug__:
289
+ type_hints = typing.get_type_hints(_typecheckingstub__c69847aa2809c05a6052b083ccd5ca5d9c7dc69ef91c872bb1912acd0884cf14)
290
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
291
+ jsii.set(self, "name", value) # pyright: ignore[reportArgumentType]
292
+
293
+ @builtins.property
294
+ @jsii.member(jsii_name="network")
295
+ def network(self) -> builtins.str:
296
+ return typing.cast(builtins.str, jsii.get(self, "network"))
297
+
298
+ @network.setter
299
+ def network(self, value: builtins.str) -> None:
300
+ if __debug__:
301
+ type_hints = typing.get_type_hints(_typecheckingstub__b6a7b0ed76a96de39c59699be8d67bc580fdf1c14ae64b9711ac30f3d69ae37c)
302
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
303
+ jsii.set(self, "network", value) # pyright: ignore[reportArgumentType]
304
+
305
+ @builtins.property
306
+ @jsii.member(jsii_name="plan")
307
+ def plan(self) -> builtins.str:
308
+ return typing.cast(builtins.str, jsii.get(self, "plan"))
309
+
310
+ @plan.setter
311
+ def plan(self, value: builtins.str) -> None:
312
+ if __debug__:
313
+ type_hints = typing.get_type_hints(_typecheckingstub__04fa3a378e45d0014b1d148124a7ea27e53d6fce1e52acbce0b79a572d803d02)
314
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
315
+ jsii.set(self, "plan", value) # pyright: ignore[reportArgumentType]
316
+
317
+ @builtins.property
318
+ @jsii.member(jsii_name="privateNodeGroups")
319
+ def private_node_groups(
320
+ self,
321
+ ) -> typing.Union[builtins.bool, _cdktf_9a9027ec.IResolvable]:
322
+ return typing.cast(typing.Union[builtins.bool, _cdktf_9a9027ec.IResolvable], jsii.get(self, "privateNodeGroups"))
323
+
324
+ @private_node_groups.setter
325
+ def private_node_groups(
326
+ self,
327
+ value: typing.Union[builtins.bool, _cdktf_9a9027ec.IResolvable],
328
+ ) -> None:
329
+ if __debug__:
330
+ type_hints = typing.get_type_hints(_typecheckingstub__f49f70d8405be1fa26fe8c061357eb2ec81b867b995db8ff053c4f9a5fdca1b9)
331
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
332
+ jsii.set(self, "privateNodeGroups", value) # pyright: ignore[reportArgumentType]
333
+
334
+ @builtins.property
335
+ @jsii.member(jsii_name="storageEncryption")
336
+ def storage_encryption(self) -> builtins.str:
337
+ return typing.cast(builtins.str, jsii.get(self, "storageEncryption"))
338
+
339
+ @storage_encryption.setter
340
+ def storage_encryption(self, value: builtins.str) -> None:
341
+ if __debug__:
342
+ type_hints = typing.get_type_hints(_typecheckingstub__cedce06cdd644121d16e8723f1b12d6b73c8a3982cac05b297172fec86ac6b6c)
343
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
344
+ jsii.set(self, "storageEncryption", value) # pyright: ignore[reportArgumentType]
345
+
346
+ @builtins.property
347
+ @jsii.member(jsii_name="upgradeStrategyType")
348
+ def upgrade_strategy_type(self) -> builtins.str:
349
+ return typing.cast(builtins.str, jsii.get(self, "upgradeStrategyType"))
350
+
351
+ @upgrade_strategy_type.setter
352
+ def upgrade_strategy_type(self, value: builtins.str) -> None:
353
+ if __debug__:
354
+ type_hints = typing.get_type_hints(_typecheckingstub__39381f85985080b338f976b7fa444c5a767a6551ec022d808ec631b10e994809)
355
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
356
+ jsii.set(self, "upgradeStrategyType", value) # pyright: ignore[reportArgumentType]
357
+
358
+ @builtins.property
359
+ @jsii.member(jsii_name="version")
360
+ def version(self) -> builtins.str:
361
+ return typing.cast(builtins.str, jsii.get(self, "version"))
362
+
363
+ @version.setter
364
+ def version(self, value: builtins.str) -> None:
365
+ if __debug__:
366
+ type_hints = typing.get_type_hints(_typecheckingstub__776ba3ef3b832d50876fe4a1d205b0bbe70e283570bc607f5f3709b3061f153f)
367
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
368
+ jsii.set(self, "version", value) # pyright: ignore[reportArgumentType]
369
+
370
+ @builtins.property
371
+ @jsii.member(jsii_name="zone")
372
+ def zone(self) -> builtins.str:
373
+ return typing.cast(builtins.str, jsii.get(self, "zone"))
374
+
375
+ @zone.setter
376
+ def zone(self, value: builtins.str) -> None:
377
+ if __debug__:
378
+ type_hints = typing.get_type_hints(_typecheckingstub__70f488b5c223cfa038f56985e1d22e4c38a93cbe80f0a3a2fb36e7395578336e)
379
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
380
+ jsii.set(self, "zone", value) # pyright: ignore[reportArgumentType]
381
+
382
+
383
+ @jsii.data_type(
384
+ jsii_type="@cdktf/provider-upcloud.kubernetesCluster.KubernetesClusterConfig",
385
+ jsii_struct_bases=[_cdktf_9a9027ec.TerraformMetaArguments],
386
+ name_mapping={
387
+ "connection": "connection",
388
+ "count": "count",
389
+ "depends_on": "dependsOn",
390
+ "for_each": "forEach",
391
+ "lifecycle": "lifecycle",
392
+ "provider": "provider",
393
+ "provisioners": "provisioners",
394
+ "control_plane_ip_filter": "controlPlaneIpFilter",
395
+ "name": "name",
396
+ "network": "network",
397
+ "zone": "zone",
398
+ "labels": "labels",
399
+ "plan": "plan",
400
+ "private_node_groups": "privateNodeGroups",
401
+ "storage_encryption": "storageEncryption",
402
+ "upgrade_strategy_type": "upgradeStrategyType",
403
+ "version": "version",
404
+ },
405
+ )
406
+ class KubernetesClusterConfig(_cdktf_9a9027ec.TerraformMetaArguments):
407
+ def __init__(
408
+ self,
409
+ *,
410
+ connection: typing.Optional[typing.Union[typing.Union[_cdktf_9a9027ec.SSHProvisionerConnection, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktf_9a9027ec.WinrmProvisionerConnection, typing.Dict[builtins.str, typing.Any]]]] = None,
411
+ count: typing.Optional[typing.Union[jsii.Number, _cdktf_9a9027ec.TerraformCount]] = None,
412
+ depends_on: typing.Optional[typing.Sequence[_cdktf_9a9027ec.ITerraformDependable]] = None,
413
+ for_each: typing.Optional[_cdktf_9a9027ec.ITerraformIterator] = None,
414
+ lifecycle: typing.Optional[typing.Union[_cdktf_9a9027ec.TerraformResourceLifecycle, typing.Dict[builtins.str, typing.Any]]] = None,
415
+ provider: typing.Optional[_cdktf_9a9027ec.TerraformProvider] = None,
416
+ provisioners: typing.Optional[typing.Sequence[typing.Union[typing.Union[_cdktf_9a9027ec.FileProvisioner, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktf_9a9027ec.LocalExecProvisioner, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktf_9a9027ec.RemoteExecProvisioner, typing.Dict[builtins.str, typing.Any]]]]] = None,
417
+ control_plane_ip_filter: typing.Sequence[builtins.str],
418
+ name: builtins.str,
419
+ network: builtins.str,
420
+ zone: builtins.str,
421
+ labels: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
422
+ plan: typing.Optional[builtins.str] = None,
423
+ private_node_groups: typing.Optional[typing.Union[builtins.bool, _cdktf_9a9027ec.IResolvable]] = None,
424
+ storage_encryption: typing.Optional[builtins.str] = None,
425
+ upgrade_strategy_type: typing.Optional[builtins.str] = None,
426
+ version: typing.Optional[builtins.str] = None,
427
+ ) -> None:
428
+ '''
429
+ :param connection:
430
+ :param count:
431
+ :param depends_on:
432
+ :param for_each:
433
+ :param lifecycle:
434
+ :param provider:
435
+ :param provisioners:
436
+ :param control_plane_ip_filter: IP addresses or IP ranges in CIDR format which are allowed to access the cluster control plane. To allow access from any source, use ``["0.0.0.0/0"]``. To deny access from all sources, use ``[]``. Values set here do not restrict access to node groups or exposed Kubernetes services. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#control_plane_ip_filter KubernetesCluster#control_plane_ip_filter}
437
+ :param name: Cluster name. Needs to be unique within the account. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#name KubernetesCluster#name}
438
+ :param network: Network ID for the cluster to run in. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#network KubernetesCluster#network}
439
+ :param zone: Zone in which the Kubernetes cluster will be hosted, e.g. ``de-fra1``. You can list available zones with ``upctl zone list``. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#zone KubernetesCluster#zone}
440
+ :param labels: User defined key-value pairs to classify the cluster. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#labels KubernetesCluster#labels}
441
+ :param plan: The pricing plan used for the cluster. You can list available plans with ``upctl kubernetes plans``. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#plan KubernetesCluster#plan}
442
+ :param private_node_groups: Enable private node groups. Private node groups requires a network that is routed through NAT gateway. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#private_node_groups KubernetesCluster#private_node_groups}
443
+ :param storage_encryption: Set default storage encryption strategy for all nodes in the cluster. Valid values are ``data-at-rest`` and ``none``. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#storage_encryption KubernetesCluster#storage_encryption}
444
+ :param upgrade_strategy_type: The upgrade strategy to use when changing the cluster ``version``. If not set, ``manual`` strategy will be used by default. When using ``manual`` strategy, you must replace the existing node-groups to update them. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#upgrade_strategy_type KubernetesCluster#upgrade_strategy_type}
445
+ :param version: Kubernetes version ID, e.g. ``1.31``. You can list available version IDs with ``upctl kubernetes versions``. Note that when changing the cluster version, ``upgrade_strategy`` will be taken into account. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#version KubernetesCluster#version}
446
+ '''
447
+ if isinstance(lifecycle, dict):
448
+ lifecycle = _cdktf_9a9027ec.TerraformResourceLifecycle(**lifecycle)
449
+ if __debug__:
450
+ type_hints = typing.get_type_hints(_typecheckingstub__e268687db9e34ae4b03f85f7b2bdf19564690fdaacf69cdb2c9bd3f765aefe0f)
451
+ check_type(argname="argument connection", value=connection, expected_type=type_hints["connection"])
452
+ check_type(argname="argument count", value=count, expected_type=type_hints["count"])
453
+ check_type(argname="argument depends_on", value=depends_on, expected_type=type_hints["depends_on"])
454
+ check_type(argname="argument for_each", value=for_each, expected_type=type_hints["for_each"])
455
+ check_type(argname="argument lifecycle", value=lifecycle, expected_type=type_hints["lifecycle"])
456
+ check_type(argname="argument provider", value=provider, expected_type=type_hints["provider"])
457
+ check_type(argname="argument provisioners", value=provisioners, expected_type=type_hints["provisioners"])
458
+ check_type(argname="argument control_plane_ip_filter", value=control_plane_ip_filter, expected_type=type_hints["control_plane_ip_filter"])
459
+ check_type(argname="argument name", value=name, expected_type=type_hints["name"])
460
+ check_type(argname="argument network", value=network, expected_type=type_hints["network"])
461
+ check_type(argname="argument zone", value=zone, expected_type=type_hints["zone"])
462
+ check_type(argname="argument labels", value=labels, expected_type=type_hints["labels"])
463
+ check_type(argname="argument plan", value=plan, expected_type=type_hints["plan"])
464
+ check_type(argname="argument private_node_groups", value=private_node_groups, expected_type=type_hints["private_node_groups"])
465
+ check_type(argname="argument storage_encryption", value=storage_encryption, expected_type=type_hints["storage_encryption"])
466
+ check_type(argname="argument upgrade_strategy_type", value=upgrade_strategy_type, expected_type=type_hints["upgrade_strategy_type"])
467
+ check_type(argname="argument version", value=version, expected_type=type_hints["version"])
468
+ self._values: typing.Dict[builtins.str, typing.Any] = {
469
+ "control_plane_ip_filter": control_plane_ip_filter,
470
+ "name": name,
471
+ "network": network,
472
+ "zone": zone,
473
+ }
474
+ if connection is not None:
475
+ self._values["connection"] = connection
476
+ if count is not None:
477
+ self._values["count"] = count
478
+ if depends_on is not None:
479
+ self._values["depends_on"] = depends_on
480
+ if for_each is not None:
481
+ self._values["for_each"] = for_each
482
+ if lifecycle is not None:
483
+ self._values["lifecycle"] = lifecycle
484
+ if provider is not None:
485
+ self._values["provider"] = provider
486
+ if provisioners is not None:
487
+ self._values["provisioners"] = provisioners
488
+ if labels is not None:
489
+ self._values["labels"] = labels
490
+ if plan is not None:
491
+ self._values["plan"] = plan
492
+ if private_node_groups is not None:
493
+ self._values["private_node_groups"] = private_node_groups
494
+ if storage_encryption is not None:
495
+ self._values["storage_encryption"] = storage_encryption
496
+ if upgrade_strategy_type is not None:
497
+ self._values["upgrade_strategy_type"] = upgrade_strategy_type
498
+ if version is not None:
499
+ self._values["version"] = version
500
+
501
+ @builtins.property
502
+ def connection(
503
+ self,
504
+ ) -> typing.Optional[typing.Union[_cdktf_9a9027ec.SSHProvisionerConnection, _cdktf_9a9027ec.WinrmProvisionerConnection]]:
505
+ '''
506
+ :stability: experimental
507
+ '''
508
+ result = self._values.get("connection")
509
+ return typing.cast(typing.Optional[typing.Union[_cdktf_9a9027ec.SSHProvisionerConnection, _cdktf_9a9027ec.WinrmProvisionerConnection]], result)
510
+
511
+ @builtins.property
512
+ def count(
513
+ self,
514
+ ) -> typing.Optional[typing.Union[jsii.Number, _cdktf_9a9027ec.TerraformCount]]:
515
+ '''
516
+ :stability: experimental
517
+ '''
518
+ result = self._values.get("count")
519
+ return typing.cast(typing.Optional[typing.Union[jsii.Number, _cdktf_9a9027ec.TerraformCount]], result)
520
+
521
+ @builtins.property
522
+ def depends_on(
523
+ self,
524
+ ) -> typing.Optional[typing.List[_cdktf_9a9027ec.ITerraformDependable]]:
525
+ '''
526
+ :stability: experimental
527
+ '''
528
+ result = self._values.get("depends_on")
529
+ return typing.cast(typing.Optional[typing.List[_cdktf_9a9027ec.ITerraformDependable]], result)
530
+
531
+ @builtins.property
532
+ def for_each(self) -> typing.Optional[_cdktf_9a9027ec.ITerraformIterator]:
533
+ '''
534
+ :stability: experimental
535
+ '''
536
+ result = self._values.get("for_each")
537
+ return typing.cast(typing.Optional[_cdktf_9a9027ec.ITerraformIterator], result)
538
+
539
+ @builtins.property
540
+ def lifecycle(self) -> typing.Optional[_cdktf_9a9027ec.TerraformResourceLifecycle]:
541
+ '''
542
+ :stability: experimental
543
+ '''
544
+ result = self._values.get("lifecycle")
545
+ return typing.cast(typing.Optional[_cdktf_9a9027ec.TerraformResourceLifecycle], result)
546
+
547
+ @builtins.property
548
+ def provider(self) -> typing.Optional[_cdktf_9a9027ec.TerraformProvider]:
549
+ '''
550
+ :stability: experimental
551
+ '''
552
+ result = self._values.get("provider")
553
+ return typing.cast(typing.Optional[_cdktf_9a9027ec.TerraformProvider], result)
554
+
555
+ @builtins.property
556
+ def provisioners(
557
+ self,
558
+ ) -> typing.Optional[typing.List[typing.Union[_cdktf_9a9027ec.FileProvisioner, _cdktf_9a9027ec.LocalExecProvisioner, _cdktf_9a9027ec.RemoteExecProvisioner]]]:
559
+ '''
560
+ :stability: experimental
561
+ '''
562
+ result = self._values.get("provisioners")
563
+ return typing.cast(typing.Optional[typing.List[typing.Union[_cdktf_9a9027ec.FileProvisioner, _cdktf_9a9027ec.LocalExecProvisioner, _cdktf_9a9027ec.RemoteExecProvisioner]]], result)
564
+
565
+ @builtins.property
566
+ def control_plane_ip_filter(self) -> typing.List[builtins.str]:
567
+ '''IP addresses or IP ranges in CIDR format which are allowed to access the cluster control plane.
568
+
569
+ To allow access from any source, use ``["0.0.0.0/0"]``. To deny access from all sources, use ``[]``. Values set here do not restrict access to node groups or exposed Kubernetes services.
570
+
571
+ Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#control_plane_ip_filter KubernetesCluster#control_plane_ip_filter}
572
+ '''
573
+ result = self._values.get("control_plane_ip_filter")
574
+ assert result is not None, "Required property 'control_plane_ip_filter' is missing"
575
+ return typing.cast(typing.List[builtins.str], result)
576
+
577
+ @builtins.property
578
+ def name(self) -> builtins.str:
579
+ '''Cluster name. Needs to be unique within the account.
580
+
581
+ Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#name KubernetesCluster#name}
582
+ '''
583
+ result = self._values.get("name")
584
+ assert result is not None, "Required property 'name' is missing"
585
+ return typing.cast(builtins.str, result)
586
+
587
+ @builtins.property
588
+ def network(self) -> builtins.str:
589
+ '''Network ID for the cluster to run in.
590
+
591
+ Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#network KubernetesCluster#network}
592
+ '''
593
+ result = self._values.get("network")
594
+ assert result is not None, "Required property 'network' is missing"
595
+ return typing.cast(builtins.str, result)
596
+
597
+ @builtins.property
598
+ def zone(self) -> builtins.str:
599
+ '''Zone in which the Kubernetes cluster will be hosted, e.g. ``de-fra1``. You can list available zones with ``upctl zone list``.
600
+
601
+ Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#zone KubernetesCluster#zone}
602
+ '''
603
+ result = self._values.get("zone")
604
+ assert result is not None, "Required property 'zone' is missing"
605
+ return typing.cast(builtins.str, result)
606
+
607
+ @builtins.property
608
+ def labels(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
609
+ '''User defined key-value pairs to classify the cluster.
610
+
611
+ Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#labels KubernetesCluster#labels}
612
+ '''
613
+ result = self._values.get("labels")
614
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
615
+
616
+ @builtins.property
617
+ def plan(self) -> typing.Optional[builtins.str]:
618
+ '''The pricing plan used for the cluster. You can list available plans with ``upctl kubernetes plans``.
619
+
620
+ Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#plan KubernetesCluster#plan}
621
+ '''
622
+ result = self._values.get("plan")
623
+ return typing.cast(typing.Optional[builtins.str], result)
624
+
625
+ @builtins.property
626
+ def private_node_groups(
627
+ self,
628
+ ) -> typing.Optional[typing.Union[builtins.bool, _cdktf_9a9027ec.IResolvable]]:
629
+ '''Enable private node groups. Private node groups requires a network that is routed through NAT gateway.
630
+
631
+ Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#private_node_groups KubernetesCluster#private_node_groups}
632
+ '''
633
+ result = self._values.get("private_node_groups")
634
+ return typing.cast(typing.Optional[typing.Union[builtins.bool, _cdktf_9a9027ec.IResolvable]], result)
635
+
636
+ @builtins.property
637
+ def storage_encryption(self) -> typing.Optional[builtins.str]:
638
+ '''Set default storage encryption strategy for all nodes in the cluster. Valid values are ``data-at-rest`` and ``none``.
639
+
640
+ Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#storage_encryption KubernetesCluster#storage_encryption}
641
+ '''
642
+ result = self._values.get("storage_encryption")
643
+ return typing.cast(typing.Optional[builtins.str], result)
644
+
645
+ @builtins.property
646
+ def upgrade_strategy_type(self) -> typing.Optional[builtins.str]:
647
+ '''The upgrade strategy to use when changing the cluster ``version``.
648
+
649
+ If not set, ``manual`` strategy will be used by default. When using ``manual`` strategy, you must replace the existing node-groups to update them.
650
+
651
+ Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#upgrade_strategy_type KubernetesCluster#upgrade_strategy_type}
652
+ '''
653
+ result = self._values.get("upgrade_strategy_type")
654
+ return typing.cast(typing.Optional[builtins.str], result)
655
+
656
+ @builtins.property
657
+ def version(self) -> typing.Optional[builtins.str]:
658
+ '''Kubernetes version ID, e.g. ``1.31``. You can list available version IDs with ``upctl kubernetes versions``.
659
+
660
+ Note that when changing the cluster version, ``upgrade_strategy`` will be taken into account.
661
+
662
+ Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.31.0/docs/resources/kubernetes_cluster#version KubernetesCluster#version}
663
+ '''
664
+ result = self._values.get("version")
665
+ return typing.cast(typing.Optional[builtins.str], result)
666
+
667
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
668
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
669
+
670
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
671
+ return not (rhs == self)
672
+
673
+ def __repr__(self) -> str:
674
+ return "KubernetesClusterConfig(%s)" % ", ".join(
675
+ k + "=" + repr(v) for k, v in self._values.items()
676
+ )
677
+
678
+
679
+ __all__ = [
680
+ "KubernetesCluster",
681
+ "KubernetesClusterConfig",
682
+ ]
683
+
684
+ publication.publish()
685
+
686
+ def _typecheckingstub__8a9b711fc0d4f95af1581b8c47ef51571908b57197927d077ddbf475a99293e0(
687
+ scope: _constructs_77d1e7e8.Construct,
688
+ id: builtins.str,
689
+ *,
690
+ control_plane_ip_filter: typing.Sequence[builtins.str],
691
+ name: builtins.str,
692
+ network: builtins.str,
693
+ zone: builtins.str,
694
+ labels: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
695
+ plan: typing.Optional[builtins.str] = None,
696
+ private_node_groups: typing.Optional[typing.Union[builtins.bool, _cdktf_9a9027ec.IResolvable]] = None,
697
+ storage_encryption: typing.Optional[builtins.str] = None,
698
+ upgrade_strategy_type: typing.Optional[builtins.str] = None,
699
+ version: typing.Optional[builtins.str] = None,
700
+ connection: typing.Optional[typing.Union[typing.Union[_cdktf_9a9027ec.SSHProvisionerConnection, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktf_9a9027ec.WinrmProvisionerConnection, typing.Dict[builtins.str, typing.Any]]]] = None,
701
+ count: typing.Optional[typing.Union[jsii.Number, _cdktf_9a9027ec.TerraformCount]] = None,
702
+ depends_on: typing.Optional[typing.Sequence[_cdktf_9a9027ec.ITerraformDependable]] = None,
703
+ for_each: typing.Optional[_cdktf_9a9027ec.ITerraformIterator] = None,
704
+ lifecycle: typing.Optional[typing.Union[_cdktf_9a9027ec.TerraformResourceLifecycle, typing.Dict[builtins.str, typing.Any]]] = None,
705
+ provider: typing.Optional[_cdktf_9a9027ec.TerraformProvider] = None,
706
+ provisioners: typing.Optional[typing.Sequence[typing.Union[typing.Union[_cdktf_9a9027ec.FileProvisioner, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktf_9a9027ec.LocalExecProvisioner, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktf_9a9027ec.RemoteExecProvisioner, typing.Dict[builtins.str, typing.Any]]]]] = None,
707
+ ) -> None:
708
+ """Type checking stubs"""
709
+ pass
710
+
711
+ def _typecheckingstub__3920d985ca4d5b1c9f6d89b891ca033b258ae3e0ccad607090396c654e47ecae(
712
+ scope: _constructs_77d1e7e8.Construct,
713
+ import_to_id: builtins.str,
714
+ import_from_id: builtins.str,
715
+ provider: typing.Optional[_cdktf_9a9027ec.TerraformProvider] = None,
716
+ ) -> None:
717
+ """Type checking stubs"""
718
+ pass
719
+
720
+ def _typecheckingstub__93a87bbc915dd5fa01b944063ae4f03861f927743d8bd0e811ded1b50a775513(
721
+ value: typing.List[builtins.str],
722
+ ) -> None:
723
+ """Type checking stubs"""
724
+ pass
725
+
726
+ def _typecheckingstub__7b9fb1189cc7bea21771f655e6f7d40e2b84a7ccedb6b706bd861ad34f2a71e8(
727
+ value: typing.Mapping[builtins.str, builtins.str],
728
+ ) -> None:
729
+ """Type checking stubs"""
730
+ pass
731
+
732
+ def _typecheckingstub__c69847aa2809c05a6052b083ccd5ca5d9c7dc69ef91c872bb1912acd0884cf14(
733
+ value: builtins.str,
734
+ ) -> None:
735
+ """Type checking stubs"""
736
+ pass
737
+
738
+ def _typecheckingstub__b6a7b0ed76a96de39c59699be8d67bc580fdf1c14ae64b9711ac30f3d69ae37c(
739
+ value: builtins.str,
740
+ ) -> None:
741
+ """Type checking stubs"""
742
+ pass
743
+
744
+ def _typecheckingstub__04fa3a378e45d0014b1d148124a7ea27e53d6fce1e52acbce0b79a572d803d02(
745
+ value: builtins.str,
746
+ ) -> None:
747
+ """Type checking stubs"""
748
+ pass
749
+
750
+ def _typecheckingstub__f49f70d8405be1fa26fe8c061357eb2ec81b867b995db8ff053c4f9a5fdca1b9(
751
+ value: typing.Union[builtins.bool, _cdktf_9a9027ec.IResolvable],
752
+ ) -> None:
753
+ """Type checking stubs"""
754
+ pass
755
+
756
+ def _typecheckingstub__cedce06cdd644121d16e8723f1b12d6b73c8a3982cac05b297172fec86ac6b6c(
757
+ value: builtins.str,
758
+ ) -> None:
759
+ """Type checking stubs"""
760
+ pass
761
+
762
+ def _typecheckingstub__39381f85985080b338f976b7fa444c5a767a6551ec022d808ec631b10e994809(
763
+ value: builtins.str,
764
+ ) -> None:
765
+ """Type checking stubs"""
766
+ pass
767
+
768
+ def _typecheckingstub__776ba3ef3b832d50876fe4a1d205b0bbe70e283570bc607f5f3709b3061f153f(
769
+ value: builtins.str,
770
+ ) -> None:
771
+ """Type checking stubs"""
772
+ pass
773
+
774
+ def _typecheckingstub__70f488b5c223cfa038f56985e1d22e4c38a93cbe80f0a3a2fb36e7395578336e(
775
+ value: builtins.str,
776
+ ) -> None:
777
+ """Type checking stubs"""
778
+ pass
779
+
780
+ def _typecheckingstub__e268687db9e34ae4b03f85f7b2bdf19564690fdaacf69cdb2c9bd3f765aefe0f(
781
+ *,
782
+ connection: typing.Optional[typing.Union[typing.Union[_cdktf_9a9027ec.SSHProvisionerConnection, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktf_9a9027ec.WinrmProvisionerConnection, typing.Dict[builtins.str, typing.Any]]]] = None,
783
+ count: typing.Optional[typing.Union[jsii.Number, _cdktf_9a9027ec.TerraformCount]] = None,
784
+ depends_on: typing.Optional[typing.Sequence[_cdktf_9a9027ec.ITerraformDependable]] = None,
785
+ for_each: typing.Optional[_cdktf_9a9027ec.ITerraformIterator] = None,
786
+ lifecycle: typing.Optional[typing.Union[_cdktf_9a9027ec.TerraformResourceLifecycle, typing.Dict[builtins.str, typing.Any]]] = None,
787
+ provider: typing.Optional[_cdktf_9a9027ec.TerraformProvider] = None,
788
+ provisioners: typing.Optional[typing.Sequence[typing.Union[typing.Union[_cdktf_9a9027ec.FileProvisioner, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktf_9a9027ec.LocalExecProvisioner, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktf_9a9027ec.RemoteExecProvisioner, typing.Dict[builtins.str, typing.Any]]]]] = None,
789
+ control_plane_ip_filter: typing.Sequence[builtins.str],
790
+ name: builtins.str,
791
+ network: builtins.str,
792
+ zone: builtins.str,
793
+ labels: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
794
+ plan: typing.Optional[builtins.str] = None,
795
+ private_node_groups: typing.Optional[typing.Union[builtins.bool, _cdktf_9a9027ec.IResolvable]] = None,
796
+ storage_encryption: typing.Optional[builtins.str] = None,
797
+ upgrade_strategy_type: typing.Optional[builtins.str] = None,
798
+ version: typing.Optional[builtins.str] = None,
799
+ ) -> None:
800
+ """Type checking stubs"""
801
+ pass