Exemple #1
0
 def test_retrieve_logs_404(self, mock_get):
     mock_get.return_value.status_code = 404
     action_logs_resource = ActionsStepsLogsResource()
     with pytest.raises(ApiError) as e:
         action_logs_resource.retrieve_logs(None)
     assert ('Airflow endpoint returned error status code'
             in e.value.description)
     assert falcon.HTTP_404 == e.value.status
Exemple #2
0
 def test_retrieve_logs_error(self, mock_get):
     mock_get.side_effect = requests.exceptions.ConnectionError
     action_logs_resource = ActionsStepsLogsResource()
     with pytest.raises(ApiError) as e:
         action_logs_resource.retrieve_logs(None)
     assert ("Exception happened during Airflow API request"
             in e.value.description)
     assert falcon.HTTP_500 == e.value.status
    def test_retrieve_logs(self, mock_get):
        """Tests log retrieval"""
        action_logs_resource = ActionsStepsLogsResource()

        # Define variables
        log_endpoint = (
            'http://airflow-worker-0.ucp.svc.cluster.local:8793/'
            'log/deploy_site/action_xcom/2018-04-05T16:29:11/2.log')

        mock_resp = self._mock_response(text=XCOM_RUN_LOGS)
        mock_get.return_value = mock_resp

        result = action_logs_resource.retrieve_logs(log_endpoint)

        assert result == XCOM_RUN_LOGS
Exemple #4
0
def start_api():
    middlewares = [
        AuthMiddleware(),
        ContextMiddleware(),
        LoggingMiddleware(),
        CommonParametersMiddleware()
    ]
    control_api = falcon.API(
        request_type=ShipyardRequest, middleware=middlewares)

    control_api.add_route('/versions', VersionsResource())

    # v1.0 of Shipyard API
    v1_0_routes = [
        # API for managing region data
        ('/health', HealthResource()),
        ('/actions', ActionsResource()),
        ('/actions/{action_id}', ActionsIdResource()),
        ('/actions/{action_id}/control/{control_verb}',
         ActionsControlResource()),
        ('/actions/{action_id}/steps/{step_id}',
         ActionsStepsResource()),
        ('/actions/{action_id}/steps/{step_id}/logs',
         ActionsStepsLogsResource()),
        ('/actions/{action_id}/validations/{validation_id}',
         ActionsValidationsResource()),
        ('/configdocs', ConfigDocsStatusResource()),
        ('/configdocs/{collection_id}', ConfigDocsResource()),
        ('/commitconfigdocs', CommitConfigDocsResource()),
        ('/notedetails/{note_id}', NoteDetailsResource()),
        ('/renderedconfigdocs', RenderedConfigDocsResource()),
        ('/workflows', WorkflowResource()),
        ('/workflows/{workflow_id}', WorkflowIdResource()),
        ('/site_statuses', StatusResource()),
    ]

    # Set up the 1.0 routes
    route_v1_0_prefix = '/api/v1.0'
    for path, res in v1_0_routes:
        route = '{}{}'.format(route_v1_0_prefix, path)
        LOG.info(
            'Adding route: %s Handled by %s',
            route,
            res.__class__.__name__
        )
        control_api.add_route(route, res)

    # Error handlers (FILO handling)
    control_api.add_error_handler(Exception, default_exception_handler)
    control_api.add_error_handler(AppError, AppError.handle)

    # built-in error serializer
    control_api.set_error_serializer(default_error_serializer)

    return control_api
    def test_generate_log_endpoint(self, mock_actions_helper):
        """Tests log endpoint generation"""
        action_logs_resource = ActionsStepsLogsResource()

        mock_actions_helper.get_formatted_dag_execution_date.return_value = (
            EXECUTION_DATE_STR)
        action_logs_resource.actions_helper = mock_actions_helper

        # Define variables
        action_id = ACTIONS_DB['name']
        step = TASK_INSTANCE_DB[0]
        step_id = TASK_INSTANCE_DB[0]['task_id']
        try_number = '2'
        required_endpoint = (
            'http://airflow-worker-0.ucp.svc.cluster.local:8793/'
            'log/deploy_site/action_xcom/2018-04-05T16:29:11/2.log')

        log_endpoint = action_logs_resource.generate_log_endpoint(
            step, action_id, step_id, try_number)

        assert log_endpoint == required_endpoint

        mock_actions_helper.get_formatted_dag_execution_date.\
            assert_called_once_with(step)