blob: 539f09199ba4cdba581aff1becee91b3482ff0de [file] [log] [blame]
rdudyala996d70b2016-10-13 17:40:55 +00001#!/usr/bin/python
2from flask import request, Request, jsonify
3from flask import Flask
4from flask import make_response
5import logging
6import logging.handlers
7import logging.config
8import subprocess
9import ConfigParser
10import generate_pipeline
11app = Flask(__name__)
12
13
14@app.route('/monitoring/agent/openstack/start',methods=['POST'])
15def openstack_start():
16 try:
17 # To do validation of user inputs for all the functions
18 target = request.json['target']
19 logging.debug("target:%s",target)
20 if not generate_pipeline.onos_service_info:
21 logging.debug (" ONOS Service is not enalble,Only openstack need to be enabled ")
22 generate_pipeline.generate_pipeline_yaml_for_openstack(target,True)
23 else:
24 logging.debug(" ONOS Service is also enabled ,please generate yaml file for both onos and openstack")
25 generate_pipeline.generate_pipeline_yaml_for_openstack_onos(target,True)
26 restart_ceilometer_services()
27 return "Openstack start service called \n"
28 except Exception as e:
29 return e.__str__()
30
31@app.route('/monitoring/agent/onos/start',methods=['POST'])
32def onos_start():
33 try:
34 target = request.json['target']
35 logging.debug("target:%s",target)
Srikanth Vavilapallif2919002016-12-19 18:32:20 +000036 resources = request.json['resources']
rdudyala996d70b2016-10-13 17:40:55 +000037 logging.debug("resources:%s",resources)
38 if not generate_pipeline.openstack_service_info:
39 logging.debug("Openstak Service is not enabled,Only ONOS need to be enabled")
40 generate_pipeline.generate_pipeline_yaml_for_onos(target,resources,True)
41 else:
42 logging.debug(" Openstack Service is also enabled ,please generate yaml file for both onos and openstack")
43 generate_pipeline.generate_pipeline_yaml_for_onos_openstack(target,resources,True)
44
45 restart_ceilometer_services()
46 return "ONOS start service called \n"
47 except Exception as e:
48 return e.__str__()
49
50@app.route('/monitoring/agent/vsg/start',methods=['POST'])
51def vsg_start():
52 try:
53 target = request.json['target']
54 logging.debug("target:%s",target)
55 return "vsg start service called \n"
56 except Exception as e:
57 return e.__str__()
58
59
60@app.route('/monitoring/agent/openstack/stop',methods=['POST'])
61def openstack_stop():
62 try:
63 target = request.json['target']
64 logging.debug("target:%s",target)
65 if not generate_pipeline.onos_service_info:
66 generate_pipeline.generate_pipeline_yaml_for_openstack(target,False)
67 else:
68 generate_pipeline.generate_pipeline_yaml_for_onos(generate_pipeline.onos_service_info[0].target,generate_pipeline.onos_service_info[0].resources,True)
69 logging.debug("Delete Openstack object")
70 for obj in generate_pipeline.openstack_service_info:
71 generate_pipeline.openstack_service_info.remove(obj)
72
73 restart_ceilometer_services()
74 return "Openstack stop service called \n"
75
76 except Exception as e:
77 return e.__str__()
78
79@app.route('/monitoring/agent/onos/stop',methods=['POST'])
80def onos_stop():
81 try:
82 target = request.json['target']
83 logging.debug("target:%s",target)
84 metadata = request.json['meta_data']
85 logging.debug("metadata:%s",metadata)
86 resources = metadata['resources']
87 logging.debug("resources:%s",resources)
88
89 if not generate_pipeline.openstack_service_info:
90 generate_pipeline.generate_pipeline_yaml_for_onos(target,resources,False)
91 else:
92 generate_pipeline.generate_pipeline_yaml_for_openstack(generate_pipeline.openstack_service_info[0].target,True)
93
94 logging.debug("Delete ONOS Object")
95 for obj in generate_pipeline.onos_service_info:
96 generate_pipeline.onos_service_info.remove(obj)
97
98 restart_ceilometer_services()
99 return "ONOS stop service called \n"
100 except Exception as e:
101 return e.__str__()
102
103@app.route('/monitoring/agent/vsg/stop',methods=['POST'])
104def vsg_stop():
105 try:
106 target = request.json['target']
107 logging.debug("target:%s",target)
108 return "vsg stop service called \n"
109 except Exception as e:
110 return e.__str__()
111
112
113def restart_ceilometer_services():
114 try :
115 config = ConfigParser.ConfigParser()
116 config.read('monitoring_agent.conf')
117 services = config.get('SERVICE','Ceilometer_service')
118 service = services.split(",")
119 subprocess.call("sudo cp pipeline.yaml /etc/ceilometer/pipeline.yaml",shell=True)
120 except Exception as e:
121 logging.error("* Error in confing file:%s",e.__str__())
122 return False
123 else :
124 for service_name in service:
125 command = ['service',service_name, 'restart'];
126 logging.debug("Executing: %s command",command)
127 #shell=FALSE for sudo to work.
128 try :
129 subprocess.call(command, shell=False)
130 except Exception as e:
131 logging.error("* %s command execution failed with error %s",command,e.__str__())
132 return False
133 return True
134
135if __name__ == "__main__":
136 logging.config.fileConfig('monitoring_agent.conf', disable_existing_loggers=False)
137 app.run(host="0.0.0.0",port=5004,debug=False)