@@ -290,6 +290,7 @@ def create(
290
290
persistent_storage_local = False ,
291
291
persistent_storage_nimble_csi = False ,
292
292
k8shosts_config = [],
293
+ addons = [],
293
294
):
294
295
"""Send an API request to create a K8s Cluster. The cluster creation
295
296
will be asynchronous - use the :py:meth:`wait_for_status` method to
@@ -310,6 +311,8 @@ def create(
310
311
pod_network_range: str
311
312
Network range to be used for kubernetes pods. Defaults to
312
313
`10.192.0.0/12`
314
+ addons: list
315
+ Addons - See :py:method:`get_available_addons`.
313
316
service_network_range: str
314
317
Network range to be used for kubernetes services that are
315
318
exposed with Cluster IP. Defaults to `10.96.0.0/12`
@@ -371,12 +374,14 @@ def create(
371
374
"'k8shosts_config' item '{}' is not of"
372
375
" type K8sClusterHostConfig"
373
376
).format (i )
377
+ assert isinstance (addons , list ), "'addons' must be a list"
374
378
375
379
data = {
376
380
"label" : {"name" : name },
377
381
"pod_network_range" : pod_network_range ,
378
382
"service_network_range" : service_network_range ,
379
383
"pod_dns_domain" : pod_dns_domain ,
384
+ "addons" : addons ,
380
385
"persistent_storage" : {
381
386
"local" : persistent_storage_local ,
382
387
"nimble_csi" : persistent_storage_nimble_csi ,
@@ -428,7 +433,7 @@ def k8s_supported_versions(self):
428
433
)
429
434
return response .json ()["supported_versions" ]
430
435
431
- def get_available_addons (self , id ):
436
+ def get_available_addons (self , id = None , k8s_version = None ):
432
437
"""Retrieve list of K8S Supported Versions.
433
438
434
439
Parameters
@@ -445,14 +450,20 @@ def get_available_addons(self, id):
445
450
------
446
451
APIException
447
452
"""
448
- current_cluster_k8s_version = self .get (id ).k8s_version
453
+ assert (
454
+ id is not None or k8s_version is not None
455
+ ), "Either 'id' or 'k8s_version' parameter must be provided"
456
+ assert (
457
+ id is None or k8s_version is None
458
+ ), "Either 'id' or 'k8s_version' parameter must be provided"
459
+
460
+ if id :
461
+ k8s_version = self .get (id ).k8s_version
449
462
450
463
response = self .client ._request (
451
464
url = "/api/v2/k8smanifest" ,
452
465
http_method = "get" ,
453
466
description = "k8s_cluster/get_available_addons" ,
454
467
)
455
- addons = response .json ()["version_info" ][current_cluster_k8s_version ][
456
- "addons"
457
- ]
468
+ addons = response .json ()["version_info" ][k8s_version ]["addons" ]
458
469
return addons
0 commit comments