diff --git a/perxis/extensions/bootstrap.py b/perxis/extensions/bootstrap.py index a883b88f2d3f2327a814a8db4a3709335764ce6c..bc465cf0294aac865b05e26933b8e835c01cee61 100644 --- a/perxis/extensions/bootstrap.py +++ b/perxis/extensions/bootstrap.py @@ -26,33 +26,38 @@ async def _main( 'x-perxis-access', 'system' ) - @aiocron.crontab('* * * * *', start=False) - async def register_extension(): + async def _register_extension(): await ext_manager_stub.RegisterExtensions(manager_service_pb2.RegisterExtensionsRequest( extensions=[ext_descriptor] )) logger.info(f"Расширение {ext_descriptor.extension} зарегистрировано РІ perxis") + @aiocron.crontab('* * * * *', start=False) + async def register_extension(): + await _register_extension() + async with grpc.aio.insecure_channel(ext_manager_host, interceptors=[interceptor]) as extensions_manager_channel: ext_manager_stub = manager_service_pb2_grpc.ExtensionManagerServiceStub(extensions_manager_channel) - #registered_extensions: manager_service_pb2.ListExtensionsResponse = await ext_manager_stub.ListExtensions( - # manager_service_pb2.ListExtensionsRequest() - #) - - # todo enable after fix - https://tracker.yandex.ru/PRXS-1507 - # for ext in registered_extensions.extensions: - # if ext.extension == ext_descriptor.extension: - # if ext.version != ext_descriptor.version: - # ext_manager_stub.UnregisterExtensions( - # manager_pb2.UnregisterExtensionsRequest( - # extensions=[ext_descriptor] - # ) - # ) - # - # logger.info( - # f"Рзменилась версия расширения {ext_descriptor.extension} ({ext.version} -> {ext_descriptor.version})" - # ) + registered_extensions: manager_service_pb2.ListRegisteredExtensionsResponse = await ext_manager_stub.ListRegisteredExtensions( + manager_service_pb2.ListRegisteredExtensionsRequest() + ) + + for ext in registered_extensions.extensions: + if ext.extension == ext_descriptor.extension: + if ext.version != ext_descriptor.version: + await ext_manager_stub.UnregisterExtensions( + manager_service_pb2.UnregisterExtensionsRequest( + extensions=[ext_descriptor] + ) + ) + + await _register_extension() + + logger.info( + f"Рзменилась версия расширения {ext_descriptor.extension} ({ext.version} " + f"-> {ext_descriptor.version})" + ) register_extension.start()