From e1e4c3fe4702145954ff76741e14ac872d207337 Mon Sep 17 00:00:00 2001 From: Yun Huang Date: Wed, 4 Jul 2018 17:04:34 +0800 Subject: 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 --- ocata/ocata/vesagent/event_domain/__init__.py | 16 ++++++ ocata/ocata/vesagent/event_domain/fault_vm.py | 74 +++++++++++++++++++++++++++ ocata/ocata/vesagent/vesagent_ctrl.py | 13 +++++ 3 files changed, 103 insertions(+) create mode 100644 ocata/ocata/vesagent/event_domain/__init__.py create mode 100644 ocata/ocata/vesagent/event_domain/fault_vm.py 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 -- cgit 1.2.3-korg