Example #1
0
def run_build_manager():
    if not features.BUILD_SUPPORT:
        logger.debug("Building is disabled. Please enable the feature flag")
        while True:
            time.sleep(1000)
        return

    if app.config.get("REGISTRY_STATE", "normal") == "readonly":
        logger.debug("Building is disabled while in read-only mode.")
        while True:
            time.sleep(1000)
        return

    build_manager_config = app.config.get("BUILD_MANAGER")
    if build_manager_config is None:
        return

    # If the build system is externally managed, then we just sleep this process.
    if build_manager_config[0] == EXTERNALLY_MANAGED:
        logger.debug("Builds are externally managed.")
        while True:
            time.sleep(1000)
        return

    logger.debug('Asking to start build manager with lifecycle "%s"',
                 build_manager_config[0])
    manager_klass = BUILD_MANAGERS.get(build_manager_config[0])
    if manager_klass is None:
        return

    manager_hostname = os.environ.get(
        "BUILDMAN_HOSTNAME",
        app.config.get("BUILDMAN_HOSTNAME", app.config["SERVER_HOSTNAME"]))
    controller_port = int(
        os.environ.get(
            "BUILDMAN_CONTROLLER_PORT",
            app.config.get("BUILDMAN_CONTROLLER_PORT",
                           DEFAULT_CONTROLLER_PORT),
        ))

    logger.debug(
        "Will pass buildman hostname %s to builders for websocket connection",
        manager_hostname)

    logger.debug('Starting build manager with lifecycle "%s"',
                 build_manager_config[0])

    server = BuilderServer(
        app.config["SERVER_HOSTNAME"],
        manager_hostname,
        dockerfile_build_queue,
        build_logs,
        user_files,
        manager_klass,
        build_manager_config[1],
        instance_keys,
    )
    server.run("0.0.0.0", controller_port)
Example #2
0
def run_build_manager():
  if not features.BUILD_SUPPORT:
    logger.debug('Building is disabled. Please enable the feature flag')
    while True:
      time.sleep(1000)
    return

  if app.config.get('REGISTRY_STATE', 'normal') == 'readonly':
    logger.debug('Building is disabled while in read-only mode.')
    while True:
      time.sleep(1000)
    return

  build_manager_config = app.config.get('BUILD_MANAGER')
  if build_manager_config is None:
    return

  # If the build system is externally managed, then we just sleep this process.
  if build_manager_config[0] == EXTERNALLY_MANAGED:
    logger.debug('Builds are externally managed.')
    while True:
      time.sleep(1000)
    return

  logger.debug('Asking to start build manager with lifecycle "%s"', build_manager_config[0])
  manager_klass = BUILD_MANAGERS.get(build_manager_config[0])
  if manager_klass is None:
    return

  manager_hostname = os.environ.get('BUILDMAN_HOSTNAME',
                                    app.config.get('BUILDMAN_HOSTNAME',
                                                   app.config['SERVER_HOSTNAME']))
  websocket_port = int(os.environ.get('BUILDMAN_WEBSOCKET_PORT',
                                      app.config.get('BUILDMAN_WEBSOCKET_PORT',
                                                     DEFAULT_WEBSOCKET_PORT)))
  controller_port = int(os.environ.get('BUILDMAN_CONTROLLER_PORT',
                                       app.config.get('BUILDMAN_CONTROLLER_PORT',
                                                      DEFAULT_CONTROLLER_PORT)))

  logger.debug('Will pass buildman hostname %s to builders for websocket connection',
               manager_hostname)

  logger.debug('Starting build manager with lifecycle "%s"', build_manager_config[0])
  ssl_context = None
  if os.environ.get('SSL_CONFIG'):
    logger.debug('Loading SSL cert and key')
    ssl_context = SSLContext()
    ssl_context.load_cert_chain(os.path.join(os.environ.get('SSL_CONFIG'), 'ssl.cert'),
                                os.path.join(os.environ.get('SSL_CONFIG'), 'ssl.key'))

  server = BuilderServer(app.config['SERVER_HOSTNAME'], dockerfile_build_queue, build_logs,
                         user_files, manager_klass, build_manager_config[1], manager_hostname)
  server.run('0.0.0.0', websocket_port, controller_port, ssl=ssl_context)