
To let other OpenStack projects move forward with new versions of kafka-python we're forking kafka-python and embedding it in monasca-common. This allows us to migrate to the new async interfaces provided by more recent kafka clients over time and not block other projects. Requiring pykafka to allow us to have ~4x more throughput once we write to their async interfaces. Change-Id: Ifb6ab67ce1335a5ec4ed7dd8b0027dc9d46a6dda Depends-On: I26f9c588f2818059ab6ba24f9fad8e213798a39c
Team and repository tags
Overview
monasca-common
is a collection of sub-projects containing reusable application and platform code for building monitoring related services.
Build Instructions
Download and do mvn install.
$ cd java
$ mvn clean install
There is a pom.xml in the base directory but that should only be used for the StackForge build. The issue is that currently StackForge's bare-precise system only has Maven 2 on it and at least one of the modules of monasca-common requires Maven 3.
In order to get around this problem, the pom.xml in the base directory uses the exec-maven-plugin to run the script run_maven.sh. This script checks if the version of mvn is Maven 3 and if it is not, it downloads Maven 3 and then uses it to run the build in the java directory.
In addition, the run_maven.sh script copies the jar files that get built from java/*/target directories to the target directory in the base project directory. This is because the StackForge "monasca-common-localrepo-upload" job uploads any jar files from that directory to http://tarballs.openstack.org/ci/monasca-common. Copying the jar files to that directory made it so there didn't have to be changes made to the "monasca-common-localrepo-upload" job. The build for monasca-thresh downloads the jars it depends on from that location on tarballs.openstack.org.
A change has been submitted to StackForge to switch to bare-trusty for this build in the hopes that those systems will have maven 3, but it is not known how long that change will take to be accepted.
Application Specific Sub-Projects
- monasca-common-model - Common domain and event models for monitoring services.
Platform Sub-Projects
- monasca-common-dropwizard - Utilities for building and testing dropwizard services.
- monasca-common-kafka - Various utilities for working with Kafka.
- monasca-common-persistence - Persistence related infrastructure and utilities.
- monasca-common-service - Simple service abstractions and utilities.
- monasca-common-streaming - Streaming related utilities.
- monasca-common-testing - A set of testing related dependencies.
- monasca-common-util - Various utilities such as for serialization, dependency injection, date and time, invocation retries, concurrency, etc.
- monasca-common-hibernate - Hibernate based model of Monasca SQL schema
python monasca-common
To install the python monasca-common modules, git clone the source and run the following command::
$ sudo python setup.py install
To run the python monasca-common tests use::
$ nosetests monasca_common/tests