blob: 8471ee30469371f2f611fa6edd650b39b272d198 [file] [log] [blame]
Andrew Geisslerd159c7f2021-09-02 21:05:58 -05001#
Patrick Williams92b42cb2022-09-03 06:53:57 -05002# Copyright BitBake Contributors
3#
Andrew Geisslerd159c7f2021-09-02 21:05:58 -05004# SPDX-License-Identifier: GPL-2.0-only
5#
6
7import logging
8import bb.asyncrpc
9
10logger = logging.getLogger("BitBake.PRserv")
11
12class PRAsyncClient(bb.asyncrpc.AsyncClient):
13 def __init__(self):
Patrick Williams44b3caf2024-04-12 16:51:14 -050014 super().__init__("PRSERVICE", "1.0", logger)
Andrew Geisslerd159c7f2021-09-02 21:05:58 -050015
16 async def getPR(self, version, pkgarch, checksum):
Patrick Williamsac13d5f2023-11-24 18:59:46 -060017 response = await self.invoke(
Patrick Williams44b3caf2024-04-12 16:51:14 -050018 {"get-pr": {"version": version, "pkgarch": pkgarch, "checksum": checksum}}
Andrew Geisslerd159c7f2021-09-02 21:05:58 -050019 )
20 if response:
Patrick Williams44b3caf2024-04-12 16:51:14 -050021 return response["value"]
22
23 async def test_pr(self, version, pkgarch, checksum):
24 response = await self.invoke(
25 {"test-pr": {"version": version, "pkgarch": pkgarch, "checksum": checksum}}
26 )
27 if response:
28 return response["value"]
29
30 async def test_package(self, version, pkgarch):
31 response = await self.invoke(
32 {"test-package": {"version": version, "pkgarch": pkgarch}}
33 )
34 if response:
35 return response["value"]
36
37 async def max_package_pr(self, version, pkgarch):
38 response = await self.invoke(
39 {"max-package-pr": {"version": version, "pkgarch": pkgarch}}
40 )
41 if response:
42 return response["value"]
Andrew Geisslerd159c7f2021-09-02 21:05:58 -050043
44 async def importone(self, version, pkgarch, checksum, value):
Patrick Williamsac13d5f2023-11-24 18:59:46 -060045 response = await self.invoke(
Patrick Williams44b3caf2024-04-12 16:51:14 -050046 {"import-one": {"version": version, "pkgarch": pkgarch, "checksum": checksum, "value": value}}
Andrew Geisslerd159c7f2021-09-02 21:05:58 -050047 )
48 if response:
Patrick Williams44b3caf2024-04-12 16:51:14 -050049 return response["value"]
Andrew Geisslerd159c7f2021-09-02 21:05:58 -050050
51 async def export(self, version, pkgarch, checksum, colinfo):
Patrick Williamsac13d5f2023-11-24 18:59:46 -060052 response = await self.invoke(
Patrick Williams44b3caf2024-04-12 16:51:14 -050053 {"export": {"version": version, "pkgarch": pkgarch, "checksum": checksum, "colinfo": colinfo}}
Andrew Geisslerd159c7f2021-09-02 21:05:58 -050054 )
55 if response:
Patrick Williams44b3caf2024-04-12 16:51:14 -050056 return (response["metainfo"], response["datainfo"])
Andrew Geisslerd159c7f2021-09-02 21:05:58 -050057
58 async def is_readonly(self):
Patrick Williamsac13d5f2023-11-24 18:59:46 -060059 response = await self.invoke(
Patrick Williams44b3caf2024-04-12 16:51:14 -050060 {"is-readonly": {}}
Andrew Geisslerd159c7f2021-09-02 21:05:58 -050061 )
62 if response:
Patrick Williams44b3caf2024-04-12 16:51:14 -050063 return response["readonly"]
Andrew Geisslerd159c7f2021-09-02 21:05:58 -050064
65class PRClient(bb.asyncrpc.Client):
66 def __init__(self):
67 super().__init__()
Patrick Williams44b3caf2024-04-12 16:51:14 -050068 self._add_methods("getPR", "test_pr", "test_package", "importone", "export", "is_readonly")
Andrew Geisslerd159c7f2021-09-02 21:05:58 -050069
70 def _get_async_client(self):
71 return PRAsyncClient()