xref: /OK3568_Linux_fs/yocto/poky/bitbake/lib/prserv/client.py (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#
2*4882a593Smuzhiyun# Copyright BitBake Contributors
3*4882a593Smuzhiyun#
4*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only
5*4882a593Smuzhiyun#
6*4882a593Smuzhiyun
7*4882a593Smuzhiyunimport logging
8*4882a593Smuzhiyunimport bb.asyncrpc
9*4882a593Smuzhiyun
10*4882a593Smuzhiyunlogger = logging.getLogger("BitBake.PRserv")
11*4882a593Smuzhiyun
12*4882a593Smuzhiyunclass PRAsyncClient(bb.asyncrpc.AsyncClient):
13*4882a593Smuzhiyun    def __init__(self):
14*4882a593Smuzhiyun        super().__init__('PRSERVICE', '1.0', logger)
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun    async def getPR(self, version, pkgarch, checksum):
17*4882a593Smuzhiyun        response = await self.send_message(
18*4882a593Smuzhiyun            {'get-pr': {'version': version, 'pkgarch': pkgarch, 'checksum': checksum}}
19*4882a593Smuzhiyun        )
20*4882a593Smuzhiyun        if response:
21*4882a593Smuzhiyun            return response['value']
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun    async def importone(self, version, pkgarch, checksum, value):
24*4882a593Smuzhiyun        response = await self.send_message(
25*4882a593Smuzhiyun            {'import-one': {'version': version, 'pkgarch': pkgarch, 'checksum': checksum, 'value': value}}
26*4882a593Smuzhiyun        )
27*4882a593Smuzhiyun        if response:
28*4882a593Smuzhiyun            return response['value']
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun    async def export(self, version, pkgarch, checksum, colinfo):
31*4882a593Smuzhiyun        response = await self.send_message(
32*4882a593Smuzhiyun            {'export': {'version': version, 'pkgarch': pkgarch, 'checksum': checksum, 'colinfo': colinfo}}
33*4882a593Smuzhiyun        )
34*4882a593Smuzhiyun        if response:
35*4882a593Smuzhiyun            return (response['metainfo'], response['datainfo'])
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun    async def is_readonly(self):
38*4882a593Smuzhiyun        response = await self.send_message(
39*4882a593Smuzhiyun            {'is-readonly': {}}
40*4882a593Smuzhiyun        )
41*4882a593Smuzhiyun        if response:
42*4882a593Smuzhiyun            return response['readonly']
43*4882a593Smuzhiyun
44*4882a593Smuzhiyunclass PRClient(bb.asyncrpc.Client):
45*4882a593Smuzhiyun    def __init__(self):
46*4882a593Smuzhiyun        super().__init__()
47*4882a593Smuzhiyun        self._add_methods('getPR', 'importone', 'export', 'is_readonly')
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun    def _get_async_client(self):
50*4882a593Smuzhiyun        return PRAsyncClient()
51