From 1e3d6ce4b8e9e6b0962f8c9ea939ef23e6a45b49 Mon Sep 17 00:00:00 2001 From: prithiv Date: Tue, 10 Oct 2017 13:12:55 +0100 Subject: [PATCH] MON Packaging Changes Signed-off-by: prithiv --- Jenkinsfile | 32 ++++++++++++ Makefile | 72 ++++++++++++-------------- devops_stages/stage-archive.sh | 33 ++++++++++++ docker/Dockerfile | 42 +++++++++++++++ requirements.txt | 1 + core/kafka.service => scripts/kafka.sh | 6 +++ setup.py | 3 +- 7 files changed, 149 insertions(+), 40 deletions(-) create mode 100644 Jenkinsfile create mode 100644 devops_stages/stage-archive.sh create mode 100644 docker/Dockerfile rename core/kafka.service => scripts/kafka.sh (89%) diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..f2e0417 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,32 @@ +properties([ + parameters([ + string(defaultValue: env.BRANCH_NAME, description: '', name: 'GERRIT_BRANCH'), + string(defaultValue: 'osm/MON', description: '', name: 'GERRIT_PROJECT'), + string(defaultValue: env.GERRIT_REFSPEC, description: '', name: 'GERRIT_REFSPEC'), + string(defaultValue: env.GERRIT_PATCHSET_REVISION, description: '', name: 'GERRIT_PATCHSET_REVISION'), + string(defaultValue: 'https://osm.etsi.org/gerrit', description: '', name: 'PROJECT_URL_PREFIX'), + booleanParam(defaultValue: false, description: '', name: 'TEST_INSTALL'), + string(defaultValue: 'artifactory-osm', description: '', name: 'ARTIFACTORY_SERVER'), + ]) +]) + +def devops_checkout() { + dir('devops') { + git url: "${PROJECT_URL_PREFIX}/osm/devops", branch: params.GERRIT_BRANCH + } +} + +node { + checkout scm + devops_checkout() + + ci_helper = load "devops/jenkins/ci-pipelines/ci_stage_2.groovy" + ci_helper.ci_pipeline( 'MON', + params.PROJECT_URL_PREFIX, + params.GERRIT_PROJECT, + params.GERRIT_BRANCH, + params.GERRIT_REFSPEC, + params.GERRIT_PATCHSET_REVISION, + params.TEST_INSTALL, + params.ARTIFACTORY_SERVER) +} diff --git a/Makefile b/Makefile index af9afa7..491a83d 100644 --- a/Makefile +++ b/Makefile @@ -26,63 +26,57 @@ SHELL := /bin/bash all: package install clean_deb: - rm -rf .build + rm -rf .build clean: - rm -rf build + rm -rf build prepare: - pip install --upgrade setuptools - mkdir -p build/ - VER1=$(shell git describe | sed -e 's/^v//' |cut -d- -f1); \ - VER2=$(shell git describe | cut -d- -f2); \ - VER3=$(shell git describe | cut -d- -f3); \ - cp MANIFEST.in build/ - cp requirements.txt build/ - cp README.rst build/ - cp stdeb.cfg build/ - cp kafkad build/ - cp -r core build/ - cp -r plugins build/ - cp -r devops_stages build/ - cp -r test build/ - cp setup.py build/ + pip install --upgrade setuptools + mkdir -p build/ + cp MANIFEST.in build/ + cp requirements.txt build/ + cp README.rst build/ + cp stdeb.cfg build/ + cp kafkad build/ + cp -r core build/ + cp -r plugins build/ + cp -r devops_stages build/ + cp -r test build/ + cp -r scripts build/ + cp setup.py build/ build: clean openstack_plugins prepare - python -m py_compile build/plugins/OpenStack/*.py + python -m py_compile build/plugins/OpenStack/*.py build: clean vrops_plugins prepare - python -m py_compile build/plugins/vRealiseOps/*.py + python -m py_compile build/plugins/vRealiseOps/*.py build: clean cloudwatch_plugins prepare - python -m py_compile build/plugins/CloudWatch/*.py + python -m py_compile build/plugins/CloudWatch/*.py build: clean core prepare - python -m py_compile build/core/message_bus/*.py + python -m py_compile build/core/message_bus/*.py pip: prepare - cd build ./setup.py sdist - cd build ./plugin_setup.py sdist + cd build ./setup.py sdist + cd build ./plugin_setup.py sdist package: clean clean_deb prepare - apt-get --yes install python-software-properties \ - python-pip \ - python-stdeb \ - libmysqlclient-dev \ - libxml2 \ - python-dev - cd build && python setup.py --command-packages=stdeb.command sdist_dsc --with-python2=True - cd build/deb_dist/* && dpkg-buildpackage -rfakeroot -uc -us - mkdir -p .build - cp build/deb_dist/python-*.deb .build/ - pip install -r build/requirements.txt + cd build && python setup.py --command-packages=stdeb.command sdist_dsc --with-python2=True + cd build/deb_dist/* && dpkg-buildpackage -rfakeroot -uc -us + mkdir -p .build + cp build/deb_dist/python-*.deb .build/ install: - DEBIAN_FRONTEND=noninteractive apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install --yes python-pip && \ - pip install --upgrade pip + DEBIAN_FRONTEND=noninteractive apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install --yes python-pip && \ + pip install --upgrade pip #dpkg -i build/deb_dist/*.deb develop: prepare - pip install -r requirements.txt - cd build && ./setup.py develop + pip install -r requirements.txt + cd build && ./setup.py develop + +build-docker-from-source: + docker build -t osm:MON -f docker/Dockerfile \ No newline at end of file diff --git a/devops_stages/stage-archive.sh b/devops_stages/stage-archive.sh new file mode 100644 index 0000000..8f6e11d --- /dev/null +++ b/devops_stages/stage-archive.sh @@ -0,0 +1,33 @@ +# Copyright 2017 Intel Research and Development Ireland Limited +# ************************************************************* + +# This file is part of OSM Monitoring module +# All Rights Reserved to Intel Corporation + +# 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. + +# For those usages not covered by the Apache License, Version 2.0 please +# contact: prithiv.mohan@intel.com or adrian.hoban@intel.com + +#__author__ = "Prithiv Mohan" +#__date__ = "25/Sep/2017" + + +#!/bin/sh +rm -rf pool +rm -rf dists +mkdir -p pool/MON +mv .build/*.deb pool/MON/ +mkdir -p dists/unstable/MON/binary-amd64/ +apt-ftparchive packages pool/MON > dists/unstable/MON/binary-amd64/Packages +gzip -9fk dists/unstable/MON/binary-amd64/Packages diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..e6adb49 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,42 @@ +# Copyright 2017 Intel Research and Development Ireland Limited +# ************************************************************* + +# This file is part of OSM Monitoring module +# All Rights Reserved to Intel Corporation + +# 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. + +# For those usages not covered by the Apache License, Version 2.0 please +# contact: prithiv.mohan@intel.com or adrian.hoban@intel.com + +#__author__ = "Prithiv Mohan" +#__date__ = "25/Sep/2017" + +FROM ubuntu:16.04 +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get --yes install git tox make python-all python-pip debhelper && \ + DEBIAN_FRONTEND=noninteractive apt-get --yes install wget python-dev python-software-properties python-stdeb&& \ + DEBIAN_FRONTEND=noninteractive pip install -U pip && \ + DEBIAN_FRONTENT=noninteractive pip install -U requests logutils jsonschema lxml && \ + DEBIAN_FRONTEND=noninteractive pip install -U setuptools setuptools-version-command stdeb jsmin && \ + DEBIAN_FRONTEND=noninteractive pip install -U six pyvcloud bottle cherrypy pyopenssl && \ + DEBIAN_FRONTEND=noninteractive apt-get --yes install default-jre libmysqlclient-dev && \ + DEBIAN_FRONTEND=noninteractive apt-get --yes install libmysqlclient-dev libxml2 && \ + DEBIAN_FRONTEND=noninteractive pip install -U MySQL-python \ + python-openstackclient \ + python-keystoneclient \ + aodhclient \ + gnocchiclient \ + boto==2.48 \ + python-cloudwatchlogs-logging \ + py-cloudwatch diff --git a/requirements.txt b/requirements.txt index 35f7137..d701122 100644 --- a/requirements.txt +++ b/requirements.txt @@ -19,6 +19,7 @@ # For those usages not covered by the Apache License, Version 2.0 please # contact: prithiv.mohan@intel.com or adrian.hoban@intel.com +stdeb MySQL-python lxml requests diff --git a/core/kafka.service b/scripts/kafka.sh similarity index 89% rename from core/kafka.service rename to scripts/kafka.sh index f517811..fcdde67 100644 --- a/core/kafka.service +++ b/scripts/kafka.sh @@ -19,6 +19,8 @@ # For those usages not covered by the Apache License, Version 2.0 please # contact: prithiv.mohan@intel.com or adrian.hoban@intel.com +mkdir -p /etc/systemd/system/ +cat > /etc/systemd/system/kafka.service << EOF [Unit] Description=Apache Kafka server (broker) Documentation=http://kafka.apache.org/documentation.html @@ -37,3 +39,7 @@ SyslogIdentifier=kafka [Install] WantedBy=multi-user.target +EOF +systemctl daemon-reload +systemctl enable kafka.service +systemctl start kafka.service diff --git a/setup.py b/setup.py index 01f6dea..f0e8f43 100644 --- a/setup.py +++ b/setup.py @@ -38,6 +38,7 @@ _license = 'Apache 2.0' _copyright = 'Intel Research and Development Ireland' _url = 'https://osm.etsi.org/gitweb/?p=osm/MON.git;a=tree' _requirements = [ + "stdeb", "MySQL-python", "requests", "logutils", @@ -76,7 +77,7 @@ setup(name="mon_core", package_data = {_name: ['core/message_bus/*.py', 'core/models/*.json', 'plugins/OpenStack/Aodh/*.py', 'plugins/OpenStack/Gnocchi/*.py', 'plugins/vRealiseOps/*', 'plugins/CloudWatch/*']}, - data_files = [('/etc/systemd/system/', ['core/kafka.service']), + data_files = [('/etc/systemd/system/', ['scripts/kafka.sh']), ], scripts=['plugins/vRealiseOps/vROPs_Webservice/vrops_webservice', 'kafkad'], -- 2.25.1