summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYun Huang <yun.huang@windriver.com>2018-07-04 17:04:34 +0800
committerYun Huang <yun.huang@windriver.com>2018-07-04 17:04:34 +0800
commite1e4c3fe4702145954ff76741e14ac872d207337 (patch)
treee1a0dc7e18858fbf9f03e362a7e03619ee7188e6
parent373b73b440210f2e8c4359e271f24188a248c194 (diff)
Add logic to backlog for VM fault event for ocata
place the MultiCloud proxy endpoint into backlog so later the worker will query VM status via MultiCloud Change-Id: Id9cfba9c411b6aecf23f0dfd221c68d5a806f076 Issue-ID: MULTICLOUD-230 Signed-off-by: Yun Huang <yun.huang@windriver.com>
-rw-r--r--ocata/ocata/vesagent/event_domain/__init__.py16
-rw-r--r--ocata/ocata/vesagent/event_domain/fault_vm.py74
-rw-r--r--ocata/ocata/vesagent/vesagent_ctrl.py13
3 files changed, 103 insertions, 0 deletions
diff --git a/ocata/ocata/vesagent/event_domain/__init__.py b/ocata/ocata/vesagent/event_domain/__init__.py
new file mode 100644
index 00000000..e4fe7a00
--- /dev/null
+++ b/ocata/ocata/vesagent/event_domain/__init__.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# 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.
+
diff --git a/ocata/ocata/vesagent/event_domain/fault_vm.py b/ocata/ocata/vesagent/event_domain/fault_vm.py
new file mode 100644
index 00000000..b0baac55
--- /dev/null
+++ b/ocata/ocata/vesagent/event_domain/fault_vm.py
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# 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.
+
+import logging
+import json
+import uuid
+
+
+logger = logging.getLogger(__name__)
+
+### build backlog with domain:"fault", type:"vm"
+
+def buildBacklog_fault_vm(vimid, backlog_input):
+
+ logger.info("vimid: %s" % vimid)
+ logger.debug("with input: %s" % backlog_input)
+
+ try:
+
+ #must resolve the tenant id and server id while building the backlog
+ tenant_id = backlog_input.get("tenantid", None)
+ server_id = backlog_input.get("sourceid", None)
+
+ # should resolve the name to id later
+ if tenant_id is None:
+ tenant_name = backlog_input["tenant"]
+ server_name = backlog_input["source"]
+
+ if tenant_name is None or server_name is None:
+ logger.warn("tenant and source should be provided as backlog config")
+ return None
+
+ # get token
+ #TBD resolve tenant_name to tenant_id
+
+ if server_id is None:
+ #TBD resolve server_name to server_id
+ pass
+
+ #m.c. proxied OpenStack API
+ api_url_fmt = "/{f_vim_id}/compute/v2.1/{f_tenant_id}/servers/{f_server_id}"
+ api_url = api_url_fmt.format(
+ f_vim_id=vimid, f_tenant_id=tenant_id, f_server_id=server_id)
+
+ backlog = {
+ "backlog_uuid":str(uuid.uuid3(uuid.NAMESPACE_URL,
+ str("%s-%s-%s"%(vimid, tenant_id,server_id)))),
+ "tenant_id": tenant_id,
+ "server_id": server_id,
+ "api_method": "GET",
+ "api_link": api_url,
+ }
+ backlog.update(backlog_input)
+ except Exception as e:
+ logger.error("exception:%s" % str(e))
+ return None
+
+ logger.info("return")
+ logger.debug("with backlog: %s" % backlog)
+ return backlog
+
diff --git a/ocata/ocata/vesagent/vesagent_ctrl.py b/ocata/ocata/vesagent/vesagent_ctrl.py
index 0a915b2d..421959e8 100644
--- a/ocata/ocata/vesagent/vesagent_ctrl.py
+++ b/ocata/ocata/vesagent/vesagent_ctrl.py
@@ -22,6 +22,7 @@ from rest_framework.views import APIView
from django.conf import settings
from common.msapi import extsys
+from ocata.vesagent.event_domain.fault_vm import buildBacklog_fault_vm
from django.core.cache import cache
@@ -267,4 +268,16 @@ class VesAgentCtrl(APIView):
self._logger.info("build backlog for: %s" % vimid)
self._logger.debug("with input: %s" % backlog_input)
+ try:
+ if backlog_input["domain"] == "fault" and backlog_input["type"] == "vm":
+ return buildBacklog_fault_vm(vimid, backlog_input)
+ else:
+ self._logger.warn("return with failure: unsupported backlog domain:%s, type:%s"
+ % (backlog_input["domain"], backlog_input["type"] == "vm"))
+ return None
+ except Exception as e:
+ self._logger.error("exception:%s" % str(e))
+ return None
+
+ self._logger.info("return without backlog")
return None