Skip to content

Commit 5bfbe27

Browse files
committed
feat(api): support new worker update labels api
1 parent a74aaa3 commit 5bfbe27

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

src/pynetmito/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
UpdateTaskLabelsReq,
5151
ChangeTaskReq,
5252
ReplaceWorkerTagsReq,
53+
ReplaceWorkerLabelsReq,
5354
UpdateGroupWorkerRoleReq,
5455
RemoveGroupWorkerRoleReq,
5556
UpdateUserGroupRoleReq,
@@ -110,6 +111,7 @@
110111
"UpdateTaskLabelsReq",
111112
"ChangeTaskReq",
112113
"ReplaceWorkerTagsReq",
114+
"ReplaceWorkerLabelsReq",
113115
"UpdateGroupWorkerRoleReq",
114116
"RemoveGroupWorkerRoleReq",
115117
"UpdateUserGroupRoleReq",

src/pynetmito/client.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
UpdateTaskLabelsReq,
4040
ChangeTaskReq,
4141
ReplaceWorkerTagsReq,
42+
ReplaceWorkerLabelsReq,
4243
UpdateGroupWorkerRoleReq,
4344
RemoveGroupWorkerRoleReq,
4445
UpdateUserGroupRoleReq,
@@ -663,6 +664,18 @@ def replace_worker_tags(self, uuid: UUID4, req: ReplaceWorkerTagsReq):
663664
f"Failed to replace worker tags for {str(uuid)}, status code: {resp.status_code}, error: {resp.text}"
664665
)
665666

667+
def replace_worker_labels(self, uuid: UUID4, req: ReplaceWorkerLabelsReq):
668+
url = self._get_url(f"workers/{str(uuid)}/labels")
669+
headers = {"Authorization": f"Bearer {self.credential}"}
670+
resp = self.http_client.put(url, headers=headers, json=req.to_dict())
671+
if resp.status_code == 200:
672+
return
673+
else:
674+
self.logger.error(resp.text)
675+
raise Exception(
676+
f"Failed to replace worker labels for {str(uuid)}, status code: {resp.status_code}, error: {resp.text}"
677+
)
678+
666679
def update_group_worker_roles(self, uuid: UUID4, req: UpdateGroupWorkerRoleReq):
667680
url = self._get_url(f"workers/{str(uuid)}/groups")
668681
headers = {"Authorization": f"Bearer {self.credential}"}

src/pynetmito/schemas.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -852,6 +852,19 @@ def deserialize_tags(cls, tags: list[str]):
852852
return set(tags)
853853

854854

855+
class ReplaceWorkerLabelsReq(BaseAPIModel):
856+
labels: Set[str]
857+
858+
@field_serializer("labels")
859+
def serialize_labels(self, labels: Set[str]):
860+
return list(labels)
861+
862+
@field_validator("labels", mode="before")
863+
@classmethod
864+
def deserialize_labels(cls, labels: list[str]):
865+
return set(labels)
866+
867+
855868
class UpdateGroupWorkerRoleReq(BaseAPIModel):
856869
relations: Dict[str, GroupWorkerRole]
857870

0 commit comments

Comments
 (0)