예제 #1
0
 def falcontest(self, drydock_state, yaml_ingester, yaml_orchestrator,
                mock_get_build_data):
     """Create a test harness for the the Falcon API framework."""
     return testing.TestClient(
         start_api(state_manager=drydock_state,
                   ingester=yaml_ingester,
                   orchestrator=yaml_orchestrator))
예제 #2
0
    def falcontest(self, drydock_state, deckhand_ingester,
                   deckhand_orchestrator, mock_get_build_data):
        """Create a test harness for the Falcon API framework."""
        policy.policy_engine = policy.DrydockPolicy()
        policy.policy_engine.register_policy()

        return testing.TestClient(
            start_api(state_manager=drydock_state,
                      ingester=deckhand_ingester,
                      orchestrator=deckhand_orchestrator))
예제 #3
0
def start_drydock():
    objects.register_all()

    # Setup root logger
    logger = logging.getLogger('drydock')

    logger.setLevel(config.DrydockConfig.global_config.get('log_level'))
    ch = logging.StreamHandler()
    formatter = logging.Formatter(
        '%(asctime)s - %(levelname)s - %(filename)s:%(funcName)s - %(message)s'
    )
    ch.setFormatter(formatter)
    logger.addHandler(ch)

    # Specalized format for API logging
    logger = logging.getLogger('drydock.control')
    logger.propagate = False
    formatter = logging.Formatter(
        '%(asctime)s - %(levelname)s - %(user)s - %(req_id)s - %(external_ctx)s - %(message)s'
    )

    ch = logging.StreamHandler()
    ch.setFormatter(formatter)
    logger.addHandler(ch)

    state = statemgmt.DesignState()

    orchestrator = orch.Orchestrator(
        config.DrydockConfig.orchestrator_config.get('drivers', {}),
        state_manager=state)
    input_ingester = ingester.Ingester()
    input_ingester.enable_plugins(
        config.DrydockConfig.ingester_config.get('plugins', []))

    return api.start_api(state_manager=state,
                         ingester=input_ingester,
                         orchestrator=orchestrator)
예제 #4
0
 def falcontest(self, drydock_state, test_ingester, test_orchestrator):
     """Create a test harness for the the Falcon API framework."""
     return testing.TestClient(
         start_api(state_manager=drydock_state,
                   ingester=test_ingester,
                   orchestrator=test_orchestrator))
예제 #5
0
파일: drydock.py 프로젝트: cb371j/drydock
def start_drydock():
    objects.register_all()

    # Setup configuration parsing
    cli_options = [
        cfg.BoolOpt('debug',
                    short='d',
                    default=False,
                    help='Enable debug logging'),
    ]

    cfg.CONF.register_cli_opts(cli_options)
    config.config_mgr.register_options()
    cfg.CONF(sys.argv[1:])

    if cfg.CONF.debug:
        cfg.CONF.set_override(name='log_level',
                              override='DEBUG',
                              group='logging')

    # Setup root logger
    logger = logging.getLogger(cfg.CONF.logging.global_logger_name)

    logger.setLevel(cfg.CONF.logging.log_level)
    ch = logging.StreamHandler()
    formatter = logging.Formatter(
        '%(asctime)s - %(levelname)s - %(filename)s:%(funcName)s - %(message)s'
    )
    ch.setFormatter(formatter)
    logger.addHandler(ch)

    # Specalized format for API logging
    logger = logging.getLogger(cfg.CONF.logging.control_logger_name)
    logger.propagate = False
    formatter = logging.Formatter(
        '%(asctime)s - %(levelname)s - %(user)s - %(req_id)s - %(external_ctx)s - %(message)s'
    )

    ch = logging.StreamHandler()
    ch.setFormatter(formatter)
    logger.addHandler(ch)

    state = statemgmt.DesignState()

    orchestrator = orch.Orchestrator(cfg.CONF.plugins, state_manager=state)
    input_ingester = ingester.Ingester()
    input_ingester.enable_plugins(cfg.CONF.plugins.ingester)

    # Check if we have an API key in the environment
    # Hack around until we move MaaS configs to the YAML schema
    if 'MAAS_API_KEY' in os.environ:
        cfg.CONF.set_override(name='maas_api_key',
                              override=os.environ['MAAS_API_KEY'],
                              group='maasdriver')

    # Setup the RBAC policy enforcer
    policy.policy_engine = policy.DrydockPolicy()
    policy.policy_engine.register_policy()

    # Ensure that the policy_engine is initialized before starting the API
    wsgi_callable = api.start_api(state_manager=state,
                                  ingester=input_ingester,
                                  orchestrator=orchestrator)

    # Now that loggers are configured, log the effective config
    cfg.CONF.log_opt_values(
        logging.getLogger(cfg.CONF.logging.global_logger_name), logging.DEBUG)

    return wsgi_callable