Skip to content

Commit 8c97bd4

Browse files
APIPath to group
1 parent 24ee3c7 commit 8c97bd4

File tree

10 files changed

+59
-68
lines changed

10 files changed

+59
-68
lines changed

linode_api4/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
# isort: skip_file
22
from linode_api4.objects import *
3-
from linode_api4.paths import *
43
from linode_api4.errors import ApiError, UnexpectedResponseError
54
from linode_api4.linode_client import LinodeClient
65
from linode_api4.login_client import LinodeLoginClient, OAuthScopes

linode_api4/groups/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from .image import *
99
from .linode import *
1010
from .lke import *
11+
from .lke_tier import *
1112
from .longview import *
1213
from .networking import *
1314
from .nodebalancer import *

linode_api4/groups/lke.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from linode_api4.errors import UnexpectedResponseError
44
from linode_api4.groups import Group
5+
from linode_api4.groups.lke_tier import LKETierGroup
56
from linode_api4.objects import (
67
KubeVersion,
78
LKECluster,
@@ -11,7 +12,6 @@
1112
drop_null_keys,
1213
)
1314
from linode_api4.objects.base import _flatten_request_body_recursive
14-
from linode_api4.paths import LKETier
1515

1616

1717
class LKEGroup(Group):
@@ -191,7 +191,7 @@ def types(self, *filters):
191191
LKEType, *filters, endpoint="/lke/types"
192192
)
193193

194-
def tier(self, id: str) -> LKETier:
194+
def tier(self, id: str) -> LKETierGroup:
195195
"""
196196
Returns an object representing the LKE tier API path.
197197
@@ -202,4 +202,4 @@ def tier(self, id: str) -> LKETier:
202202
:rtype: LKETier
203203
"""
204204

205-
return LKETier(self.client, id)
205+
return LKETierGroup(self.client, id)

linode_api4/groups/lke_tier.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
from linode_api4.groups import Group
2+
from linode_api4.objects import TieredKubeVersion
3+
4+
5+
class LKETierGroup(Group):
6+
"""
7+
Encapsulates methods related to a specific LKE tier. This
8+
should not be instantiated on its own, but should instead be used through
9+
an instance of :any:`LinodeClient`::
10+
11+
client = LinodeClient(token)
12+
instances = client.lke.tier("standard") # use the LKETierGroup
13+
14+
This group contains all features beneath the `/lke/tiers/{tier}` group in the API v4.
15+
"""
16+
17+
def __init__(self, client: "LinodeClient", tier: str):
18+
super().__init__(client)
19+
self.tier = tier
20+
21+
def versions(self, *filters):
22+
"""
23+
Returns a paginated list of versions for this tier matching the given filters.
24+
25+
API Documentation: Not Yet Available
26+
27+
:param filters: Any number of filters to apply to this query.
28+
See :doc:`Filtering Collections</linode_api4/objects/filtering>`
29+
for more details on filtering.
30+
31+
:returns: A paginated list of kube versions that match the query.
32+
:rtype: PaginatedList of TieredKubeVersion
33+
"""
34+
35+
return self.client._get_and_filter(
36+
TieredKubeVersion,
37+
endpoint=f"/lke/tiers/{self.tier}/versions",
38+
parent_id=self.tier,
39+
*filters,
40+
)

linode_api4/paths/__init__.py

Lines changed: 0 additions & 3 deletions
This file was deleted.

linode_api4/paths/api_path.py

Lines changed: 0 additions & 15 deletions
This file was deleted.

linode_api4/paths/lke.py

Lines changed: 0 additions & 41 deletions
This file was deleted.

test/integration/models/lke/test_lke.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,10 @@ def lke_cluster_with_apl(test_linode_client):
139139

140140
@pytest.fixture(scope="session")
141141
def lke_cluster_enterprise(test_linode_client):
142-
version = test_linode_client.lke.tier("enterprise").versions()[0]
142+
# We use the oldest version here so we can test upgrades
143+
version = sorted(
144+
v.id for v in test_linode_client.lke.tier("enterprise").versions()
145+
)[0]
143146

144147
region = get_region(
145148
test_linode_client, {"Kubernetes Enterprise", "Disk Encryption"}
@@ -428,18 +431,25 @@ def test_lke_cluster_with_apl(lke_cluster_with_apl):
428431
)
429432

430433

431-
def test_lke_cluster_enterprise(lke_cluster_enterprise):
434+
def test_lke_cluster_enterprise(test_linode_client, lke_cluster_enterprise):
432435
lke_cluster_enterprise.invalidate()
433436
assert lke_cluster_enterprise.tier == "enterprise"
434437

435438
pool = lke_cluster_enterprise.pools[0]
436439
assert str(pool.k8s_version) == lke_cluster_enterprise.k8s_version.id
437440
assert pool.update_strategy == "rolling_update"
438441

442+
target_version = sorted(
443+
v.id for v in test_linode_client.lke.tier("enterprise").versions()
444+
)[0]
439445
pool.update_strategy = "on_recycle"
440-
# Should we test updating the pool k8s_version field here?
446+
pool.k8s_version = target_version
447+
441448
pool.save()
442449

450+
pool.invalidate()
451+
452+
assert pool.k8s_version == target_version
443453
assert pool.update_strategy == "on_recycle"
444454

445455

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from test.unit.base import ClientBaseCase
22

33

4-
class LKETierPathTest(ClientBaseCase):
4+
class LKETierGroupTest(ClientBaseCase):
55
"""
6-
Tests methods of the LKETierPath
6+
Tests methods under the LKETierGroup class.
77
"""
88

99
def test_list_versions(self):

test/unit/paths/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)