Monasca Log REST API
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
OpenDev Sysadmins 21736bb927 OpenDev Migration Patch 1 month ago
api-guide/source Update the documentation link for doc migration 1 year ago
api-ref/source Configuration documentation 1 year ago
config-generator Use monasca-log-api.conf for doc, devstack and docker 3 months ago
contrib Remove bundled intree tempest plugin 1 year ago
devstack Replace openstack.org git:// URLs with https:// 1 month ago
doc Use monasca-log-api.conf for doc, devstack and docker 3 months ago
docker Use global job for building docker image 3 months ago
documentation Fix cross-tenant logs submission 1 year ago
etc/monasca Fix default policy rules registration 9 months ago
monasca_log_api Replace log-api.conf with monasca-log-api.conf 3 months ago
playbooks Push Docker image to Docker Hub 1 month ago
releasenotes Update master for stable/stein 1 month ago
tools Avoid tox_install.sh for constraints support 1 year ago
.coveragerc Migrate testing to ostestr and adding docs 2 years ago
.gitignore Add .vagrant to gitignore 8 months ago
.gitreview OpenDev Migration Patch 1 month ago
.stestr.conf Add .stestr.conf . 1 year ago
.zuul.yaml OpenDev Migration Patch 1 month ago
CONTRIBUTING.rst Provide references to new docs 1 year ago
HACKING.rst Update the documentation link for doc migration 1 year ago
LICENSE Add log api functionality 3 years ago
README.deprecated.md Provide references to new docs 1 year ago
README.rst Update links in README 9 months ago
lower-constraints.txt Merge "Remove testrepository and .testr.conf" 9 months ago
requirements.txt Updated from global requirements 1 year ago
setup.cfg Dropping the py35 testing 1 month ago
setup.py Updated from global requirements 2 years ago
test-requirements.txt Switch to using stestr 11 months ago
tox.ini Dropping the py35 testing 1 month ago

README.deprecated.md

Team and repository tags

Team and repository tags

Overview

monasca-log-api is a RESTful API server that is designed with a layered architecture layered architecture.

The full API Specification can be found in documentation/monasca-log-api-spec.md

Monasca-log-api Python

Installation

To install the python api implementation, git clone the source and run the following command:

    sudo python setup.py install

Configuration

If it installs successfully, you will need to make changes to the following two files to reflect your system settings, especially where kafka server is located::

    /etc/monasca/log-api-config.conf
    /etc/monasca/log-api-config.ini
    /etc/monasca/log-api-logging.conf

Once the configurations are modified to match your environment, you can start up the server using either Gunicorn or Apache.

Start the Server -- for Gunicorn

The server can be run in the foreground, or as daemons:

Running the server in foreground mode with Gunicorn:

    gunicorn -k eventlet --worker-connections=2000 --backlog=1000
             --paste /etc/monasca/log-api-config.ini

Running the server as daemons with Gunicorn:

    gunicorn -k eventlet --worker-connections=2000 --backlog=1000
             --paste /etc/monasca/log-api-config.ini -D

Start the Server -- for Apache

To start the server using Apache: create a modwsgi file, create a modwsgi config file, and enable the wsgi module in Apache.

The modwsgi conf file may look something like this, and the site will need to be enabled:

    Listen myhost:8082
    Listen 127.0.0.1:8082

    <VirtualHost *:8082>
        WSGIDaemonProcess log-api processes=4 threads=4 socket-timeout=120 user=log group=log python-path=/usr/local/lib/python2.7/site-packages
        WSGIProcessGroup log-api
        WSGIApplicationGroup log-api
        WSGIScriptAlias / /var/www/log/log-api.wsgi

        ErrorLog /var/log/log-api/wsgi.log
        LogLevel info
        CustomLog /var/log/log-api/wsgi-access.log combined

        <Directory /usr/local/lib/python2.7/site-packages/monasca_log_api>
          Options Indexes FollowSymLinks MultiViews
          Require all granted
          AllowOverride None
          Order allow,deny
          allow from all
          LimitRequestBody 102400
        </Directory>

        SetEnv no-gzip 1

    </VirtualHost>

The wsgi file may look something like this:

    from monasca_log_api.server import get_wsgi_app

    application = get_wsgi_app(config_base_path='/etc/monasca')

Testing

Commandline run

To check the server from the commandline:

    python server.py

PEP8 guidelines

To check if the code follows python coding style, run the following command from the root directory of this project:

    tox -e pep8

Unit Tests

To run all the unit test cases, run the following command from the root directory of this project:

    tox -e py27
    tox -e py35

Coverage

To generate coverage results, run the following command from the root directory of this project:

    tox -e cover

Building

To build an installable package, run the following command from the root directory of this project:

  python setup.py sdist

Documentation

To generate documentation, run the following command from the root directory of this project:

    tox -e docs

That will create documentation under build folder relative to root of the project.

Architectural layers

Requests flow through the following architectural layers from top to bottom:

  • Resource
    • Serves as the entrypoint into the service.
    • Responsible for handling web service requests, and performing structural request validation.
  • Application
    • Responsible for providing application level implementations for specific use cases.
  • Domain
    • Contains the technology agnostic core domain model and domain service definitions.
    • Responsible for upholding invariants and defining state transitions.
  • Infrastructure
    • Contains technology specific implementations of domain services.

Documentation

License

# Copyright 2015 kornicameister@gmail.com
# Copyright 2015-2017 FUJITSU LIMITED
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.