monasca-log-api/README.deprecated.md

194 lines
5.3 KiB
Markdown

Team and repository tags
========================
[![Team and repository tags](https://governance.openstack.org/badges/monasca-log-api.svg)](https://governance.openstack.org/reference/tags/index.html)
<!-- Change things from this point on -->
# Overview
`monasca-log-api` is a RESTful API server that is designed with a layered architecture [layered architecture](http://en.wikipedia.org/wiki/Multilayered_architecture).
The full API Specification can be found in [documentation/monasca-log-api-spec.md](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:
```sh
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::
```sh
/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:
```sh
gunicorn -k eventlet --worker-connections=2000 --backlog=1000
--paste /etc/monasca/log-api-config.ini
```
Running the server as daemons with Gunicorn:
```sh
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:
```sh
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:
```sh
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:
```sh
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:
```sh
tox -e pep8
```
### Unit Tests
To run all the unit test cases, run the following command from the root
directory of this project:
```sh
tox -e py27
tox -e py35
```
### Coverage
To generate coverage results, run the following command from the root
directory of this project:
```sh
tox -e cover
```
### Building
To build an installable package, run the following command from the root
directory of this project:
```sh
python setup.py sdist
```
### Documentation
To generate documentation, run the following command from the root
directory of this project:
```sh
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
* API Specification: [/documentation/monasca-log-api-spec.md](/documentation/monasca-log-api-spec.md).
* Kafka communication: [/documentation/monasca-log-api-kafka.md](/documentation/monasca-log-api-kafka.md).
* API Monitoring: [/documentation/monasca-log-api-metrics.md](/documentation/monasca-log-api-metrics.md).
# 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.