From 9eda64aed5d2127f53f8edad764019ea98e85458 Mon Sep 17 00:00:00 2001 From: Bin Yang Date: Tue, 15 May 2018 09:26:26 +0000 Subject: Publish the event to VES Change-Id: I5ab561cd67a7d340d6e7828fd26b339742c10e36 Issue-ID: MULTICLOUD-230 Signed-off-by: Bin Yang --- .../vesagent/event_domain/fault_vm.py | 22 ++++++++++- windriver/titanium_cloud/vesagent/vespublish.py | 43 ++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 windriver/titanium_cloud/vesagent/vespublish.py (limited to 'windriver') diff --git a/windriver/titanium_cloud/vesagent/event_domain/fault_vm.py b/windriver/titanium_cloud/vesagent/event_domain/fault_vm.py index d5c40fe5..72d99b73 100644 --- a/windriver/titanium_cloud/vesagent/event_domain/fault_vm.py +++ b/windriver/titanium_cloud/vesagent/event_domain/fault_vm.py @@ -17,8 +17,10 @@ import logging import json import uuid +import time from django.conf import settings +from titanium_cloud.vesagent.vespublish import publishAnyEventToVES from common.utils.restcall import _call_req logger = logging.getLogger(__name__) @@ -111,6 +113,8 @@ def buildBacklog_fault_vm(vimid, backlog_input): ### process backlog with domain:"fault", type:"vm" + + def processBacklog_fault_vm(vesAgentConfig, vesAgentState, oneBacklog): logger.debug("vesAgentConfig:%s, vesAgentState:%s, oneBacklog: %s" % (vesAgentConfig, vesAgentState, oneBacklog)) @@ -150,8 +154,20 @@ def processBacklog_fault_vm(vesAgentConfig, vesAgentState, oneBacklog): logger.debug("collected data: %s" % server_resp) # encode data + backlog_uuid = oneBacklog.get("backlog_uuid", None) + backlogState = vesAgentState.get("%s" % (backlog_uuid), None) + last_event = backlogState.get("last_event", None) + logger.debug("last event: %s" % last_event) - # publish event to VES + this_event = data2event_fault_vm(oneBacklog, last_event, server_resp) + + if this_event is not None: + logger.debug("this event: %s" % this_event) + # report data to VES + ves_subscription = vesAgentConfig.get("subscription", None) + publishAnyEventToVES(ves_subscription, this_event) + # store the latest data into cache, never expire + backlogState["last_event"] = this_event except Exception as e: logger.error("exception:%s" % str(e)) @@ -160,3 +176,7 @@ def processBacklog_fault_vm(vesAgentConfig, vesAgentState, oneBacklog): logger.info("return") return +def data2event_fault_vm(oneBacklog, last_event, vm_data): + this_event = {} + + return this_event diff --git a/windriver/titanium_cloud/vesagent/vespublish.py b/windriver/titanium_cloud/vesagent/vespublish.py new file mode 100644 index 00000000..df77e30b --- /dev/null +++ b/windriver/titanium_cloud/vesagent/vespublish.py @@ -0,0 +1,43 @@ +# Copyright (c) 2017-2018 Wind River Systems, Inc. +# +# 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. + +from __future__ import absolute_import, unicode_literals + +import time +import logging +import json +import urllib2 + +logger = logging.getLogger(__name__) + +def publishAnyEventToVES(ves_subscription, event): + logger.info("Start to send single event to VES collector.") + endpoint = ves_subscription.get("endpoint", None) + username = ves_subscription.get("username", None) + password = ves_subscription.get("password", None) + + if endpoint: + try: + logger.info("publish event to VES: %s", ) + headers = {'Content-Type': 'application/json'} + request = urllib2.Request(url=endpoint, headers=headers, data=json.dumps(event)) + time.sleep(1) + response = urllib2.urlopen(request) + logger.info("VES response is: %s", response.read()) + except urllib2.URLError, e: + logger.critical("Failed to publish to %s: %s", endpoint, e.reason) + except Exception as e: + logger.error("exception:%s" % str(e)) + else: + logger.info("Missing VES info.") \ No newline at end of file -- cgit 1.2.3-korg