Skip to content

Commit 359d738

Browse files
More progress
1 parent f27ab2c commit 359d738

4 files changed

Lines changed: 84 additions & 3 deletions

File tree

linode_api4/linode_client.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,13 @@ def volume_create(self, label, region=None, linode=None, size=20, **kwargs):
455455
)
456456

457457
# helper functions
458-
def _get_and_filter(self, obj_type, *filters, endpoint=None):
458+
def _get_and_filter(
459+
self,
460+
obj_type,
461+
*filters,
462+
endpoint=None,
463+
parent_id=None,
464+
):
459465
parsed_filters = None
460466
if filters:
461467
if len(filters) > 1:
@@ -467,8 +473,13 @@ def _get_and_filter(self, obj_type, *filters, endpoint=None):
467473

468474
# Use sepcified endpoint
469475
if endpoint:
470-
return self._get_objects(endpoint, obj_type, filters=parsed_filters)
476+
return self._get_objects(
477+
endpoint, obj_type, parent_id=parent_id, filters=parsed_filters
478+
)
471479
else:
472480
return self._get_objects(
473-
obj_type.api_list(), obj_type, filters=parsed_filters
481+
obj_type.api_list(),
482+
obj_type,
483+
parent_id=parent_id,
484+
filters=parsed_filters,
474485
)

linode_api4/objects/lke.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,9 @@ class LKENodePool(DerivedBase):
195195
"labels": Property(mutable=True),
196196
"taints": Property(mutable=True),
197197
# Enterprise-specific properties
198+
# Ideally we would use slug_relationship=TieredKubeVersion here, but
199+
# it isn't possible without an extra request because the tier is not
200+
# directly exposed in the node pool response.
198201
"k8s_version": Property(mutable=True),
199202
"update_strategy": Property(mutable=True),
200203
}

linode_api4/paths/lke.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,6 @@ def versions(self, *filters):
3636
return self.client._get_and_filter(
3737
TieredKubeVersion,
3838
endpoint=f"{self.endpoint}/versions",
39+
parent_id=self.id,
3940
*filters,
4041
)

test/integration/models/lke/test_lke.py

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
LKEClusterControlPlaneACLAddressesOptions,
1515
LKEClusterControlPlaneACLOptions,
1616
LKEClusterControlPlaneOptions,
17+
TieredKubeVersion,
1718
)
1819
from linode_api4.common import RegionPrice
1920
from linode_api4.errors import ApiError
@@ -136,6 +137,35 @@ def lke_cluster_with_apl(test_linode_client):
136137
cluster.delete()
137138

138139

140+
@pytest.fixture(scope="session")
141+
def lke_cluster_enterprise(test_linode_client):
142+
version = test_linode_client.lke.tier("enterprise").versions()[0]
143+
144+
region = get_region(
145+
test_linode_client, {"Kubernetes Enterprise", "Disk Encryption"}
146+
)
147+
148+
node_pools = test_linode_client.lke.node_pool(
149+
"g6-dedicated-2",
150+
3,
151+
k8s_version=version.id,
152+
update_strategy="rolling_update",
153+
)
154+
label = get_test_label() + "_cluster"
155+
156+
cluster = test_linode_client.lke.cluster_create(
157+
region,
158+
label,
159+
node_pools,
160+
version.id,
161+
tier="enterprise",
162+
)
163+
164+
yield cluster
165+
166+
cluster.delete()
167+
168+
139169
def get_cluster_status(cluster: LKECluster, status: str):
140170
return cluster._raw_json["status"] == status
141171

@@ -398,6 +428,42 @@ def test_lke_cluster_with_apl(lke_cluster_with_apl):
398428
)
399429

400430

431+
def test_lke_cluster_enterprise(lke_cluster_enterprise):
432+
lke_cluster_enterprise.invalidate()
433+
assert lke_cluster_enterprise.tier == "enterprise"
434+
435+
pool = lke_cluster_enterprise.pools[0]
436+
assert str(pool.k8s_version) == lke_cluster_enterprise.k8s_version.id
437+
assert pool.update_strategy == "rolling_update"
438+
439+
pool.update_strategy = "on_delete"
440+
pool.k8s_version = ""
441+
442+
443+
def test_lke_tiered_versions(test_linode_client):
444+
def __assert_version(tier: str, version: TieredKubeVersion):
445+
assert version.tier == tier
446+
assert len(version.id) > 0
447+
448+
standard_versions = test_linode_client.lke.tier("standard").versions()
449+
assert len(standard_versions) > 0
450+
451+
standard_version = standard_versions[0]
452+
__assert_version("standard", standard_version)
453+
454+
standard_version.invalidate()
455+
__assert_version("standard", standard_version)
456+
457+
enterprise_versions = test_linode_client.lke.tier("enterprise").versions()
458+
assert len(enterprise_versions) > 0
459+
460+
enterprise_version = enterprise_versions[0]
461+
__assert_version("enterprise", enterprise_version)
462+
463+
enterprise_version.invalidate()
464+
__assert_version("enterprise", enterprise_version)
465+
466+
401467
def test_lke_types(test_linode_client):
402468
types = test_linode_client.lke.types()
403469

0 commit comments

Comments
 (0)