111 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """ entrypoint module for operator """
 | |
| 
 | |
| import os
 | |
| import sys
 | |
| 
 | |
| from fastapi import FastAPI
 | |
| 
 | |
| from .crawlmanager import CrawlManager
 | |
| from .db import init_db
 | |
| from .emailsender import EmailSender
 | |
| from .operator import init_operator_api
 | |
| from .utils import register_exit_handler
 | |
| 
 | |
| from .invites import InviteOps
 | |
| from .users import init_user_manager
 | |
| from .orgs import OrgOps
 | |
| from .colls import CollectionOps
 | |
| from .crawlconfigs import CrawlConfigOps
 | |
| from .crawls import CrawlOps
 | |
| from .profiles import ProfileOps
 | |
| from .storages import init_storages_api
 | |
| from .webhooks import EventWebhookOps
 | |
| from .background_jobs import BackgroundJobOps
 | |
| 
 | |
| app_root = FastAPI()
 | |
| 
 | |
| 
 | |
| # ============================================================================
 | |
| # pylint: disable=too-many-function-args, duplicate-code
 | |
| def main():
 | |
|     """main init"""
 | |
|     email = EmailSender()
 | |
|     crawl_manager = None
 | |
| 
 | |
|     dbclient, mdb = init_db()
 | |
| 
 | |
|     invite_ops = InviteOps(mdb, email)
 | |
| 
 | |
|     user_manager = init_user_manager(mdb, email, invite_ops)
 | |
| 
 | |
|     org_ops = OrgOps(mdb, invite_ops)
 | |
| 
 | |
|     event_webhook_ops = EventWebhookOps(mdb, org_ops)
 | |
| 
 | |
|     # pylint: disable=import-outside-toplevel
 | |
|     if not os.environ.get("KUBERNETES_SERVICE_HOST"):
 | |
|         print(
 | |
|             "Sorry, the Browsertrix Cloud Backend must be run inside a Kubernetes environment.\
 | |
|              Kubernetes not detected (KUBERNETES_SERVICE_HOST is not set), Exiting"
 | |
|         )
 | |
|         sys.exit(1)
 | |
| 
 | |
|     crawl_manager = CrawlManager()
 | |
| 
 | |
|     storage_ops = init_storages_api(org_ops, crawl_manager)
 | |
| 
 | |
|     background_job_ops = BackgroundJobOps(
 | |
|         mdb, email, user_manager, org_ops, crawl_manager, storage_ops
 | |
|     )
 | |
| 
 | |
|     profile_ops = ProfileOps(
 | |
|         mdb, org_ops, crawl_manager, storage_ops, background_job_ops
 | |
|     )
 | |
| 
 | |
|     crawl_config_ops = CrawlConfigOps(
 | |
|         dbclient,
 | |
|         mdb,
 | |
|         user_manager,
 | |
|         org_ops,
 | |
|         crawl_manager,
 | |
|         profile_ops,
 | |
|     )
 | |
| 
 | |
|     user_manager.set_ops(org_ops, crawl_config_ops, None)
 | |
| 
 | |
|     coll_ops = CollectionOps(mdb, crawl_manager, org_ops, event_webhook_ops)
 | |
| 
 | |
|     crawl_ops = CrawlOps(
 | |
|         mdb,
 | |
|         user_manager,
 | |
|         org_ops,
 | |
|         crawl_manager,
 | |
|         crawl_config_ops,
 | |
|         coll_ops,
 | |
|         storage_ops,
 | |
|         event_webhook_ops,
 | |
|         background_job_ops,
 | |
|     )
 | |
| 
 | |
|     background_job_ops.set_ops(crawl_ops, profile_ops)
 | |
| 
 | |
|     return init_operator_api(
 | |
|         app_root,
 | |
|         crawl_config_ops,
 | |
|         crawl_ops,
 | |
|         org_ops,
 | |
|         coll_ops,
 | |
|         storage_ops,
 | |
|         event_webhook_ops,
 | |
|         background_job_ops,
 | |
|     )
 | |
| 
 | |
| 
 | |
| # ============================================================================
 | |
| @app_root.on_event("startup")
 | |
| async def startup():
 | |
|     """init on startup"""
 | |
|     register_exit_handler()
 | |
|     oper = main()
 | |
|     await oper.async_init()
 |