add files for son-monitor test
diff --git a/misc/prometheus_jenkins.yml b/misc/prometheus_jenkins.yml
new file mode 100755
index 0000000..b7770d1
--- /dev/null
+++ b/misc/prometheus_jenkins.yml
@@ -0,0 +1,26 @@
+global:
+  scrape_interval:     15s # By default, scrape targets every 15 seconds.
+  evaluation_interval: 5s
+
+
+# A scrape configuration containing endpoints to scrape:
+
+scrape_configs:
+
+# cAdvsior started in son-emu
+  - job_name: 'cAdvisor'
+
+    scrape_interval: 1s
+
+    target_groups:
+      - targets: ['172.17.0.1:8090']
+
+# Pushgateway started in SP
+  - job_name: 'PushGateway'
+
+    scrape_interval: 1s
+
+    target_groups:
+      - targets: ['172.17.0.1:9091']
+
+
diff --git a/setup_cli_only.py b/setup_cli_only.py
new file mode 100755
index 0000000..119cf8c
--- /dev/null
+++ b/setup_cli_only.py
@@ -0,0 +1,25 @@
+from setuptools import setup, find_packages
+
+setup(name='emuvim',
+      version='0.0.1',
+      license='Apache 2.0',
+      description='emuvim is a VIM for the SONATA platform',
+      url='http://github.com/sonata-emu',
+      author_email='sonata-dev@sonata-nfv.eu',
+      package_dir={'': 'src'},
+      # packages=find_packages('emuvim', exclude=['*.test', '*.test.*', 'test.*', 'test']),
+      packages=find_packages('src'),
+      install_requires=[
+          'zerorpc',
+          'tabulate',
+          'argparse',
+      ],
+      zip_safe=False,
+      entry_points={
+          'console_scripts': [
+              'son-emu-cli=emuvim.cli.son_emu_cli:main',
+          ],
+      },
+      setup_requires=['pytest-runner'],
+      tests_require=['pytest'],
+)
\ No newline at end of file
diff --git a/src/emuvim/cli/compute.py b/src/emuvim/cli/compute.py
index dcb499d..d01dfed 100755
--- a/src/emuvim/cli/compute.py
+++ b/src/emuvim/cli/compute.py
@@ -30,7 +30,6 @@
         nw_list = list()
         if args.get("network") is not None:
             nw_list = self._parse_network(args.get("network"))
-
         r = self.c.compute_action_start(
             args.get("datacenter"),
             args.get("name"),
diff --git a/src/emuvim/cli/monitor.py b/src/emuvim/cli/monitor.py
index 34853a6..79ff25b 100755
--- a/src/emuvim/cli/monitor.py
+++ b/src/emuvim/cli/monitor.py
@@ -5,20 +5,24 @@
 

 import argparse

 import pprint

-from tabulate import tabulate

 import zerorpc

-import time

-

+import prometheus

 

 pp = pprint.PrettyPrinter(indent=4)

 

 class ZeroRpcClient(object):

 

     def __init__(self):

+        # network zerorpc

         self.c = zerorpc.Client()

         # TODO connect to DCNetwork API

         #self.c.connect("tcp://127.0.0.1:4242")  # TODO hard coded for now. we'll change this later

         self.c.connect("tcp://127.0.0.1:5151")

+

+        # compute zerorpc

+        self.compute_api = zerorpc.Client(heartbeat=None, timeout=120)  # heartbeat=None, timeout=120

+        self.compute_api.connect("tcp://127.0.0.1:4242")  # TODO hard coded for now. we'll change this later

+

         self.cmds = {}

 

     def execute_command(self, args):

@@ -66,7 +70,7 @@
             args.get("cookie"))

         pp.pprint(r)

 

-    def prometheus(self, args):

+    def prometheus_zrpc(self, args):

         vnf_name = self._parse_vnf_name(args.get("vnf_name"))

         vnf_interface = self._parse_vnf_interface(args.get("vnf_name"))

         r = self.c.prometheus(

@@ -76,6 +80,18 @@
             args.get("query"))

         pp.pprint(r)

 

+    def prometheus(self, args):

+        vnf_name = self._parse_vnf_name(args.get("vnf_name"))

+        vnf_interface = self._parse_vnf_interface(args.get("vnf_name"))

+        dc_label = args.get("datacenter")

+        query = args.get("query")

+        vnf_status = self.compute_api.compute_status(dc_label, vnf_name)

+        uuid = vnf_status['id']

+        query = query.replace('<uuid>', uuid)

+

+        r = prometheus.query_Prometheus(query)

+        pp.pprint(r)

+

 

     def _parse_vnf_name(self, vnf_name_str):

         vnf_name = vnf_name_str.split(':')[0]

@@ -93,7 +109,7 @@
 parser.add_argument(

     "command",

     choices=['setup_metric', 'stop_metric', 'setup_flow', 'stop_flow','prometheus'],

-    help="setup/stop a metric/flow to be monitored or Prometheus query")

+    help="setup/stop a metric/flow to be monitored or query Prometheus")

 parser.add_argument(

     "--vnf_name", "-vnf", dest="vnf_name",

     help="vnf name:interface to be monitored")

diff --git a/src/emuvim/cli/prometheus.py b/src/emuvim/cli/prometheus.py
new file mode 100755
index 0000000..8d87d89
--- /dev/null
+++ b/src/emuvim/cli/prometheus.py
@@ -0,0 +1,28 @@
+"""
+Prometheus API helper functions
+(c) 2016 by Steven Van Rossem <steven.vanrossem@intec.ugent.be>
+"""
+
+import urllib2
+import ast
+
+prometheus_ip = '0.0.0.0'
+prometheus_port = '9090'
+prometheus_REST_api = 'http://{0}:{1}'.format(prometheus_ip, prometheus_port)
+
+
+def query_Prometheus(query):
+    url = prometheus_REST_api + '/' + 'api/v1/query?query=' + query
+    # logging.info('query:{0}'.format(url))
+    req = urllib2.Request(url)
+    ret = urllib2.urlopen(req).read()
+    ret = ast.literal_eval(ret)
+    if ret['status'] == 'success':
+        # logging.info('return:{0}'.format(ret))
+        try:
+            ret = ret['data']['result'][0]['value']
+        except:
+            ret = None
+    else:
+        ret = None
+    return ret
\ No newline at end of file
diff --git a/src/emuvim/dcemulator/monitoring.py b/src/emuvim/dcemulator/monitoring.py
index e663cae..8db10da 100755
--- a/src/emuvim/dcemulator/monitoring.py
+++ b/src/emuvim/dcemulator/monitoring.py
@@ -75,8 +75,8 @@
         self.monitor_flow_thread.start()

 

         # helper tools

-        self.pushgateway_process = self.start_PushGateway()

-        self.prometheus_process = self.start_Prometheus()

+        #self.pushgateway_process = self.start_PushGateway()

+        #self.prometheus_process = self.start_Prometheus()

         self.cadvisor_process = self.start_cadvisor()

 

     # first set some parameters, before measurement can start

@@ -496,6 +496,7 @@
         self.monitor_thread.join()

         self.monitor_flow_thread.join()

 

+        '''

         if self.prometheus_process is not None:

             logging.info('stopping prometheus container')

             self.prometheus_process.terminate()

@@ -507,6 +508,7 @@
             self.pushgateway_process.terminate()

             self.pushgateway_process.kill()

             self._stop_container('pushgateway')

+        '''

 

         if self.cadvisor_process is not None:

             logging.info('stopping cadvisor container')

diff --git a/src/emuvim/test/integrationtests/test_sdk_monitor.sh b/src/emuvim/test/integrationtests/test_sdk_monitor.sh
new file mode 100755
index 0000000..26f939f
--- /dev/null
+++ b/src/emuvim/test/integrationtests/test_sdk_monitor.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+# test if a vnf can be monitored and deployed
+
+cpu_load=$(son-emu-cli monitor prometheus -d datacenter1 -vnf vnf1 -q 'sum(rate(container_cpu_usage_seconds_total{id="/docker/<uuid>"}[10s]))')
+
+# test if prometheus query worked
+regex="[0-9.]+, [0-9.']+"
+if [[ $cpu_load =~ $regex ]] ; then
+	echo "OK"
+	exit 0
+else
+	echo $cpu_load
+	echo "not OK"
+	exit 1
+fi