X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm-mon%2Fplugins%2FOpenStack%2Fresponse.py;fp=osm-mon%2Fplugins%2FOpenStack%2Fresponse.py;h=691374a4689a1ce08e04453a6f8b7a8f754f9038;hb=71ce7eca516321aff84332df56702e718968735b;hp=0000000000000000000000000000000000000000;hpb=7d5e61f406eab8d151125001a09f742dbadc3d70;p=osm%2FMON.git diff --git a/osm-mon/plugins/OpenStack/response.py b/osm-mon/plugins/OpenStack/response.py new file mode 100644 index 0000000..691374a --- /dev/null +++ b/osm-mon/plugins/OpenStack/response.py @@ -0,0 +1,170 @@ +# 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: helena.mcgough@intel.com or adrian.hoban@intel.com +## +"""Generate valid responses to send back to the SO.""" + +import json +import logging +log = logging.getLogger(__name__) + +__author__ = "Helena McGough" + +schema_version = "1.0" + + +class OpenStack_Response(object): + """Generates responses for SO from OpenStaack plugins.""" + + def __init__(self): + """Initialize OpenStack Response instance.""" + + def generate_response(self, key, **kwargs): + """Make call to appropriate response function.""" + if key == "list_alarm_response": + message = self.alarm_list_response(**kwargs) + elif key == "create_alarm_response": + message = self.create_alarm_response(**kwargs) + elif key == "delete_alarm_response": + message = self.delete_alarm_response(**kwargs) + elif key == "update_alarm_response": + message = self.update_alarm_response(**kwargs) + elif key == "create_metric_response": + message = self.metric_create_response(**kwargs) + elif key == "read_metric_data_response": + message = self.read_metric_data_response(**kwargs) + elif key == "delete_metric_response": + message = self.delete_metric_response(**kwargs) + elif key == "update_metric_response": + message = self.update_metric_response(**kwargs) + elif key == "list_metric_response": + message = self.list_metric_response(**kwargs) + elif key == "notify_alarm": + message = self.notify_alarm(**kwargs) + else: + log.warn("Failed to generate a valid response message.") + message = None + + return message + + def alarm_list_response(self, **kwargs): + """Generate the response for an alarm list request.""" + alarm_list_resp = {"schema_version": schema_version, + "schema_type": "list_alarm_response", + "correlation_id": kwargs['cor_id'], + "list_alarm_resp": kwargs['alarm_list']} + return json.dumps(alarm_list_resp) + + def create_alarm_response(self, **kwargs): + """Generate a response for a create alarm request.""" + create_alarm_resp = {"schema_version": schema_version, + "schema_type": "create_alarm_response", + "alarm_create_response": { + "correlation_id": kwargs['cor_id'], + "alarm_uuid": kwargs['alarm_id'], + "status": kwargs['status']}} + return json.dumps(create_alarm_resp) + + def delete_alarm_response(self, **kwargs): + """Generate a response for a delete alarm request.""" + delete_alarm_resp = {"schema_version": schema_version, + "schema_type": "alarm_deletion_response", + "alarm_deletion_response": { + "correlation_id": kwargs['cor_id'], + "alarm_uuid": kwargs['alarm_id'], + "status": kwargs['status']}} + return json.dumps(delete_alarm_resp) + + def update_alarm_response(self, **kwargs): + """Generate a response for an update alarm request.""" + update_alarm_resp = {"schema_version": schema_version, + "schema_type": "update_alarm_response", + "alarm_update_response": { + "correlation_id": kwargs['cor_id'], + "alarm_uuid": kwargs['alarm_id'], + "status": kwargs['status']}} + return json.dumps(update_alarm_resp) + + def metric_create_response(self, **kwargs): + """Generate a response for a create metric request.""" + create_metric_resp = {"schema_version": schema_version, + "schema_type": "create_metric_response", + "correlation_id": kwargs['cor_id'], + "metric_create_response": { + "metric_uuid": kwargs['metric_id'], + "resource_uuid": kwargs['r_id'], + "status": kwargs['status']}} + return json.dumps(create_metric_resp) + + def read_metric_data_response(self, **kwargs): + """Generate a response for a read metric data request.""" + read_metric_data_resp = {"schema_version": schema_version, + "schema_type": "read_metric_data_response", + "metric_name": kwargs['m_name'], + "metric_uuid": kwargs['m_id'], + "resource_uuid": kwargs['r_id'], + "correlation_id": kwargs['cor_id'], + "metrics_data": { + "time_series": kwargs['times'], + "metrics_series": kwargs['metrics']}} + return json.dumps(read_metric_data_resp) + + def delete_metric_response(self, **kwargs): + """Generate a response for a delete metric request.""" + delete_metric_resp = {"schema_version": schema_version, + "schema_type": "delete_metric_response", + "metric_name": kwargs['m_name'], + "metric_uuid": kwargs['m_id'], + "resource_uuid": kwargs['r_id'], + "correlation_id": kwargs['cor_id'], + "status": kwargs['status']} + return json.dumps(delete_metric_resp) + + def update_metric_response(self, **kwargs): + """Generate a repsonse for an update metric request.""" + update_metric_resp = {"schema_version": schema_version, + "schema_type": "update_metric_response", + "correlation_id": kwargs['cor_id'], + "metric_update_response": { + "metric_uuid": kwargs['m_id'], + "status": kwargs['status'], + "resource_uuid": kwargs['r_id']}} + return json.dumps(update_metric_resp) + + def list_metric_response(self, **kwargs): + """Generate a response for a list metric request.""" + list_metric_resp = {"schema_version": schema_version, + "schema_type": "list_metric_response", + "correlation_id": kwargs['cor_id'], + "metrics_list": kwargs['m_list']} + return json.dumps(list_metric_resp) + + def notify_alarm(self, **kwargs): + """Generate a response to send alarm notifications.""" + notify_alarm_resp = {"schema_version": schema_version, + "schema_type": "notify_alarm", + "notify_details": { + "alarm_uuid": kwargs['a_id'], + "resource_uuid": kwargs['r_id'], + "vim_type": kwargs['vim_type'], + "severity": kwargs['sev'], + "status": kwargs['state'], + "start_date": kwargs['date']}} + return json.dumps(notify_alarm_resp)