diff --git a/WORKSPACE b/WORKSPACE index c55efd9..67bdd0e 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -229,6 +229,17 @@ container_repositories() load("@io_bazel_rules_docker//repositories:deps.bzl", container_deps = "deps") +# ToDo: temorary fix as registry was broken at 24.04.2021 +load("@bazel_gazelle//:deps.bzl", "go_repository") + +go_repository( + name = "com_github_google_go_containerregistry", + importpath = "github.com/google/go-containerregistry", + strip_prefix = "google-go-containerregistry-8a28419", + type = "tar.gz", + urls = ["https://api.github.com/repos/google/go-containerregistry/tarball/8a2841911ffee4f6892ca0083e89752fb46c48dd"], # v0.1.4 +) + container_deps() load("@io_bazel_rules_docker//repositories:py_repositories.bzl", "py_deps") diff --git a/nexus/bot/application.py b/nexus/bot/application.py index 736cbb8..856b4e0 100644 --- a/nexus/bot/application.py +++ b/nexus/bot/application.py @@ -21,15 +21,18 @@ class TelegramApplication(AioRootThing): ) self.hub_client = HubGrpcClient(base_url=self.config['hub']['url']) - self.idm_client = IdmApiGrpcClient(base_url=self.config['idm']['url']) + self.starts.append(self.hub_client) + self.idm_client = None + if self.config['idm']['enabled']: + self.idm_client = IdmApiGrpcClient(base_url=self.config['idm']['url']) + self.starts.append(self.idm_client) self.meta_api_client = MetaApiGrpcClient(base_url=self.config['meta_api']['url']) + self.starts.append(self.meta_api_client) self.promotioner = Promotioner(promotions=self.config['promotions']) self.user_manager = UserManager() self._handlers = [] - self.starts.extend([self.hub_client, self.idm_client, self.meta_api_client]) - def set_handlers(self, telegram_client): for handler in self.config['telegram']['handlers']: import_object(handler)(self).register_for(telegram_client) diff --git a/nexus/bot/configs/base.yaml b/nexus/bot/configs/base.yaml index 8a34daa..3632868 100644 --- a/nexus/bot/configs/base.yaml +++ b/nexus/bot/configs/base.yaml @@ -44,6 +44,7 @@ application: hub: url: idm: + enabled: false url: log_path: '/var/log/nexus-bot' meta_api: diff --git a/nexus/bot/handlers/base.py b/nexus/bot/handlers/base.py index 779dd1b..d74a4ad 100644 --- a/nexus/bot/handlers/base.py +++ b/nexus/bot/handlers/base.py @@ -185,6 +185,15 @@ class BaseHandler(ABC): request_context.error_log(e) async def _put_chat(self, event: events.ChatAction, request_id: str): + event_chat = await event.get_chat() + username = get_username(event, event_chat) + language = get_language(event, event_chat) + if not self.application.idm_client: + return ChatPb( + chat_id=event.chat_id, + username=username, + language=language, + ) try: chat = await self.application.idm_client.get_chat( chat_id=event.chat_id, @@ -196,9 +205,6 @@ class BaseHandler(ABC): raise if self.application.config['application']['is_read_only_mode']: raise ReadOnlyModeError() - event_chat = await event.get_chat() - username = get_username(event, event_chat) - language = get_language(event, event_chat) if language not in {'en', 'ru'}: language = 'en' chat = await self.application.idm_client.create_chat( diff --git a/nexus/hub/configs/base.yaml b/nexus/hub/configs/base.yaml index 09ea66e..a5dc527 100644 --- a/nexus/hub/configs/base.yaml +++ b/nexus/hub/configs/base.yaml @@ -3,7 +3,7 @@ application: debug: true # Enable special Postgres `sharience` table to retrieve user-sent files - is_sharience_enabled: true + is_sharience_enabled: false # URL to the picture shown while maintenance maintenance_picture_url: # Used in logging @@ -12,6 +12,7 @@ application: should_store_hashes: true database: database: nexus + enabled: false host: password: username: diff --git a/nexus/hub/main.py b/nexus/hub/main.py index 3ee24bf..604c0e4 100644 --- a/nexus/hub/main.py +++ b/nexus/hub/main.py @@ -15,15 +15,20 @@ class GrpcServer(AioGrpcServer): def __init__(self, config: Configurator): self.log_config(config) super().__init__(address=config['grpc']['address'], port=config['grpc']['port']) - self.pool_holder = AioPostgresPoolHolder( - dsn=f'dbname={config["database"]["database"]} ' - f'user={config["database"]["username"]} ' - f'password={config["database"]["password"]} ' - f'host={config["database"]["host"]}', - timeout=30, - pool_recycle=60, - maxsize=4, - ) + + self.pool_holder = None + if config['database']['enabled']: + self.pool_holder = AioPostgresPoolHolder( + dsn=f'dbname={config["database"]["database"]} ' + f'user={config["database"]["username"]} ' + f'password={config["database"]["password"]} ' + f'host={config["database"]["host"]}', + timeout=30, + pool_recycle=60, + maxsize=4, + ) + self.waits.append(self.pool_holder) + self.telegram_client = BaseTelegramClient( app_id=config['telegram']['app_id'], app_hash=config['telegram']['app_hash'], @@ -32,6 +37,7 @@ class GrpcServer(AioGrpcServer): mtproxy=config['telegram'].get('mtproxy'), ) self.starts.append(self.telegram_client) + self.delivery_service = DeliveryService( server=self.server, service_name=config['application']['service_name'], @@ -46,6 +52,7 @@ class GrpcServer(AioGrpcServer): telegram_client=self.telegram_client, ) self.starts.append(self.delivery_service) + if config['grobid']['enabled']: self.submitter_service = SubmitterService( server=self.server, @@ -57,7 +64,6 @@ class GrpcServer(AioGrpcServer): telegram_client=self.telegram_client, ) self.starts.append(self.submitter_service) - self.waits.append(self.pool_holder) def main(): diff --git a/nexus/hub/services/delivery.py b/nexus/hub/services/delivery.py index 228ca0c..b778f33 100644 --- a/nexus/hub/services/delivery.py +++ b/nexus/hub/services/delivery.py @@ -324,6 +324,8 @@ class DeliveryService(DeliveryServicer, BaseHubService): should_use_telegram_file_id: bool, telegram_client: BaseTelegramClient, ): + if is_sharience_enabled and not pool_holder: + raise ValueError('Sharience can be used only with enabled database') super().__init__( service_name=service_name, bot_external_name=bot_external_name, diff --git a/rules/python/requirements.txt b/rules/python/requirements.txt index a537a09..d20e682 100644 --- a/rules/python/requirements.txt +++ b/rules/python/requirements.txt @@ -4,7 +4,7 @@ aiobaseclient==0.2.4 aiochclient==2.0.0 aiocrossref==0.2.1 aiogrobid==0.1.2 -aiogrpcclient==0.1.1 +aiogrpcclient==0.1.2 aiodns==2.0.0 aioftp==0.18.1 aiohttp[speedups]==3.7.4.post0