summaryrefslogtreecommitdiffstats
path: root/windriver/titanium_cloud/vesagent
diff options
context:
space:
mode:
authorBin Yang <bin.yang@windriver.com>2018-05-15 09:26:26 +0000
committerBin Yang <bin.yang@windriver.com>2018-05-15 09:26:26 +0000
commit9eda64aed5d2127f53f8edad764019ea98e85458 (patch)
treecd13aaa0938ac480dc2aaa3edd8b8299dc935d6d /windriver/titanium_cloud/vesagent
parentbb00bacfc825cd22fed699cf5399257028ebfd5c (diff)
Publish the event to VES
Change-Id: I5ab561cd67a7d340d6e7828fd26b339742c10e36 Issue-ID: MULTICLOUD-230 Signed-off-by: Bin Yang <bin.yang@windriver.com>
Diffstat (limited to 'windriver/titanium_cloud/vesagent')
-rw-r--r--windriver/titanium_cloud/vesagent/event_domain/fault_vm.py22
-rw-r--r--windriver/titanium_cloud/vesagent/vespublish.py43
2 files changed, 64 insertions, 1 deletions
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