Add support for deploying Monasca Thresh

Monasca Thresh is a Java topology for Storm which generates
alerts from metrics. It depends on Java code in the
monasca-common library. In this change we support building
the Monasca Thresh Storm topology from source. To enable us
to submit the topology to Storm we inherit from the Storm
container (rather than the Monasca base image) so that we can
use the Storm client.

Change-Id: I389af89086cdab6d243c4a4fa65fd157535a5045
Partially-Implements: blueprint monasca-containers
This commit is contained in:
Doug Szumski 2018-06-14 12:20:44 +01:00
parent 3dd801c145
commit 49dc670eb4
4 changed files with 85 additions and 0 deletions

View File

@ -0,0 +1,68 @@
FROM {{ namespace }}/{{ image_prefix }}storm:{{ tag }}
LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
USER root
{% block monasca_thresh_header %}{% endblock %}
{% import "macros.j2" as macros with context %}
{% if install_type == 'binary' %}
RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \
&& /bin/false
{% elif install_type == 'source' %}
{% if base_distro in ['centos', 'oraclelinux', 'rhel'] %}
{% set monasca_thresh_packages = [
'maven',
] %}
ENV JAVA_HOME /usr/lib/jvm/jre-1.8.0-openjdk/
{% elif base_distro in ['debian', 'ubuntu'] %}
{% set monasca_thresh_packages = [
'openjdk-8-jdk-headless',
'maven',
] %}
{% if base_arch == 'x86_64' %}
ARG java_arch=amd64
{% elif base_arch == 'aarch64' %}
ARG java_arch=arm64
{% else %}
ARG java_arch={{ base_arch }}
{% endif %}
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-${java_arch}/
{% endif %}
{{ macros.install_packages(monasca_thresh_packages | customizable("packages")) }}
ADD monasca-thresh-archive /monasca-thresh-source
ADD additions/monasca-common* /monasca-common-source
{% block monasca_thresh_source_install %}
{% set build_opts = ['-DskipTests'] %}
# FIXME(dszumski): Remove this when the following bug is fixed:
# https://bugs.launchpad.net/ubuntu/+source/ca-certificates-java/+bug/1770553
{% if base_distro == 'ubuntu' %}
{% set build_opts = build_opts + ['-Djavax.net.ssl.trustStorePassword=changeit'] %}
{% endif %}
RUN cd /monasca-common-source/java \
&& mvn clean install {{ build_opts|join(' ') }} \
&& cd /monasca-thresh-source/monasca-thresh-*/thresh \
&& mvn clean package {{ build_opts|join(' ') }}
{% endblock %}
{% endif %}
{% block monasca_thresh_footer %}{% endblock %}
{% block footer %}{% endblock %}
USER monasca

View File

@ -526,6 +526,15 @@ SOURCES = {
'type': 'url',
'location': ('$tarballs_base/monasca-statsd/'
'monasca-statsd-master.tar.gz')},
# FIXME(dszumski): Use openstack tar when infra is fixed
'monasca-thresh': {
'type': 'url',
'location': ('https://github.com/openstack/monasca-thresh/archive/'
'master.tar.gz')},
'monasca-thresh-additions-monasca-common': {
'type': 'url',
'location': ('$tarballs_base/monasca-common/'
'monasca-common-master.tar.gz')},
'murano-base': {
'type': 'url',
'location': ('$tarballs_base/murano/'

View File

@ -86,6 +86,7 @@ SKIPPED_IMAGES = {
"karbor-base",
"kuryr-base",
"monasca-base",
"monasca-thresh",
"neutron-bgp-dragent",
"nova-mksproxy",
"ovsdpdk",
@ -118,6 +119,7 @@ SKIPPED_IMAGES = {
"kuryr-base",
"mistral-event-engine",
"monasca-base",
"monasca-thresh",
"nova-mksproxy",
"novajoin-base",
"octavia-base",
@ -157,6 +159,7 @@ SKIPPED_IMAGES = {
"kuryr-base",
"mistral-event-engine",
"monasca-base",
"monasca-thresh",
"nova-mksproxy",
"novajoin-base",
"octavia-base",
@ -183,6 +186,7 @@ SKIPPED_IMAGES = {
"karbor-base",
"kuryr-base",
"monasca-base",
"monasca-thresh",
"nova-mksproxy",
"neutron-bgp-dragent",
"ovsdpdk",

View File

@ -0,0 +1,4 @@
---
features:
- |
Add Monasca Thresh, an Apache Storm topology for alerting in Monasca.