1
0
mirror of https://github.com/quay/quay.git synced 2025-04-18 10:44:06 +03:00
quay/buildman/server.py
Kenny Lee Sin Cheong 5f63b3a7bb
chore: drop deprecated tables and remove unused code (PROJQUAY-522) (#2089)
* chore: drop deprecated tables and remove unused code

* isort imports

* migration: check for table existence before drop
2023-08-25 12:17:24 -04:00

88 lines
2.5 KiB
Python

import json
import logging
from concurrent import futures
from datetime import timedelta
from threading import Event
import grpc
from flask import Flask
from app import app
from buildman.buildman_pb import buildman_pb2, buildman_pb2_grpc
from buildman.buildmanagerservicer import BuildManagerServicer
from buildman.jobutil.buildjob import BuildJob, BuildJobLoadException
from data import database, model
logger = logging.getLogger(__name__)
# Internal app grpc port
DEFAULT_GRPC_SERVER_PORT = 50051
# Port exposed by Nginx
SECURE_GRPC_SERVER_PORT = 55443
DEFAULT_GRPC_SERVER_WORKER_COUNT = 10
class BuilderServer(object):
"""
Server which handles starting the gRPC gateway, along with initializing the build manager
and starting its reconciliation loop.
"""
def __init__(
self,
registry_hostname,
manager_hostname,
queue,
build_logs,
user_files,
lifecycle_manager_klass,
lifecycle_manager_config,
instance_keys,
):
self._registry_hostname = registry_hostname
self._manager_hostname = manager_hostname
self._queue = queue
self._build_logs = build_logs
self._user_files = user_files
self._instance_keys = instance_keys
self._lifecycle_manager = lifecycle_manager_klass(
self._registry_hostname,
self._manager_hostname,
self._queue,
self._build_logs,
self._user_files,
self._instance_keys,
)
self._lifecycle_manager_config = lifecycle_manager_config
self._shutdown_event = Event()
def run(self, host, controller_port):
logger.debug("Initializing the lifecycle manager")
self._lifecycle_manager.initialize(self._lifecycle_manager_config)
logger.debug("Initializing the gRPC server")
server = grpc.server(
futures.ThreadPoolExecutor(max_workers=DEFAULT_GRPC_SERVER_WORKER_COUNT)
)
buildman_pb2_grpc.add_BuildManagerServicer_to_server(
BuildManagerServicer(self._lifecycle_manager), server
)
server.add_insecure_port("[::]:" + str(DEFAULT_GRPC_SERVER_PORT))
logger.debug("Starting the gRPC server...")
server.start()
logger.debug("Starting the build manager...")
try:
self._lifecycle_manager._work_checker()
except KeyboardInterrupt:
pass
except Exception as e:
logger.error("Build manager work checker exception: %s", e)
raise
server.stop(grace=5)