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