Merge "Call heal interface changed to function"
This commit is contained in:
commit
cc302d3107
@ -16,8 +16,11 @@
|
|||||||
import threading
|
import threading
|
||||||
|
|
||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
|
from oslo_utils import encodeutils
|
||||||
|
|
||||||
|
from tacker import context as tacker_context
|
||||||
from tacker.sol_refactored.common import config as cfg
|
from tacker.sol_refactored.common import config as cfg
|
||||||
from tacker.sol_refactored.common import http_client
|
from tacker.sol_refactored.common import vnflcm_utils
|
||||||
from tacker.sol_refactored.conductor import conductor_rpc_v2 as rpc
|
from tacker.sol_refactored.conductor import conductor_rpc_v2 as rpc
|
||||||
from tacker.sol_refactored import objects
|
from tacker.sol_refactored import objects
|
||||||
|
|
||||||
@ -86,16 +89,6 @@ class ServerNotificationDriverMain(ServerNotificationDriver):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.timer_map = {}
|
self.timer_map = {}
|
||||||
self.expiration_time = CONF.server_notification.timer_interval
|
self.expiration_time = CONF.server_notification.timer_interval
|
||||||
auth_handle = http_client.KeystonePasswordAuthHandle(
|
|
||||||
auth_url=CONF.keystone_authtoken.auth_url,
|
|
||||||
username=CONF.keystone_authtoken.username,
|
|
||||||
password=CONF.keystone_authtoken.password,
|
|
||||||
project_name=CONF.keystone_authtoken.project_name,
|
|
||||||
user_domain_name=CONF.keystone_authtoken.user_domain_name,
|
|
||||||
project_domain_name=CONF.keystone_authtoken.project_domain_name)
|
|
||||||
self.client = http_client.HttpClient(auth_handle)
|
|
||||||
sn_auth_handle = http_client.NoAuthHandle()
|
|
||||||
self.sn_client = http_client.HttpClient(sn_auth_handle)
|
|
||||||
self.rpc = rpc.VnfLcmRpcApiV2()
|
self.rpc = rpc.VnfLcmRpcApiV2()
|
||||||
|
|
||||||
def notify(self, vnf_instance_id, vnfc_instance_ids):
|
def notify(self, vnf_instance_id, vnfc_instance_ids):
|
||||||
@ -111,16 +104,16 @@ class ServerNotificationDriverMain(ServerNotificationDriver):
|
|||||||
|
|
||||||
def request_heal(self, vnf_instance_id, vnfc_instance_ids):
|
def request_heal(self, vnf_instance_id, vnfc_instance_ids):
|
||||||
heal_req = objects.HealVnfRequest(vnfcInstanceId=vnfc_instance_ids)
|
heal_req = objects.HealVnfRequest(vnfcInstanceId=vnfc_instance_ids)
|
||||||
|
body = heal_req.to_dict()
|
||||||
LOG.info("server_notification auto healing is processed: %s.",
|
LOG.info("server_notification auto healing is processed: %s.",
|
||||||
vnf_instance_id)
|
vnf_instance_id)
|
||||||
ep = CONF.v2_vnfm.endpoint
|
context = tacker_context.get_admin_context()
|
||||||
url = f'{ep}/vnflcm/v2/vnf_instances/{vnf_instance_id}/heal'
|
try:
|
||||||
resp, body = self.client.do_request(
|
vnflcm_utils.heal(context, vnf_instance_id, body)
|
||||||
url, "POST", body=heal_req.to_dict(), version="2.0.0")
|
except Exception as exp:
|
||||||
if resp.status_code != 202:
|
|
||||||
LOG.error(str(body))
|
LOG.error(str(body))
|
||||||
LOG.error("server_notification auto healing is failed: %d.",
|
LOG.error("server_notification auto healing is failed: %s.",
|
||||||
resp.status_code)
|
encodeutils.exception_to_unicode(exp))
|
||||||
|
|
||||||
def timer_expired(self, vnf_instance_id, vnfc_instance_ids):
|
def timer_expired(self, vnf_instance_id, vnfc_instance_ids):
|
||||||
self.remove_timer(vnf_instance_id)
|
self.remove_timer(vnf_instance_id)
|
||||||
|
@ -16,8 +16,11 @@
|
|||||||
import time
|
import time
|
||||||
import webob
|
import webob
|
||||||
|
|
||||||
|
from oslo_log import log as logging
|
||||||
|
|
||||||
from tacker import context
|
from tacker import context
|
||||||
from tacker.sol_refactored.common import http_client
|
from tacker.sol_refactored.common import http_client
|
||||||
|
from tacker.sol_refactored.common import vnflcm_utils
|
||||||
from tacker.sol_refactored.conductor import conductor_v2
|
from tacker.sol_refactored.conductor import conductor_v2
|
||||||
from tacker.sol_refactored.conductor import server_notification_driver as snd
|
from tacker.sol_refactored.conductor import server_notification_driver as snd
|
||||||
from tacker.sol_refactored import objects
|
from tacker.sol_refactored import objects
|
||||||
@ -69,19 +72,25 @@ class TestServerNotification(db_base.SqlTestCase):
|
|||||||
self.conductor.server_notification_remove_timer(
|
self.conductor.server_notification_remove_timer(
|
||||||
self.context, 'invalid_id')
|
self.context, 'invalid_id')
|
||||||
|
|
||||||
@mock.patch.object(http_client.HttpClient, 'do_request')
|
@mock.patch.object(vnflcm_utils, 'heal')
|
||||||
def test_conductor_timer_expired(self, mock_do_request):
|
def test_conductor_timer_expired(self, mock_heal):
|
||||||
self.config_fixture.config(
|
self.config_fixture.config(
|
||||||
group='server_notification', server_notification=True)
|
group='server_notification', server_notification=True)
|
||||||
snd.ServerNotificationDriver._instance = None
|
snd.ServerNotificationDriver._instance = None
|
||||||
self.conductor.sn_driver = snd.ServerNotificationDriver.instance()
|
self.conductor.sn_driver = snd.ServerNotificationDriver.instance()
|
||||||
resp = webob.Response()
|
|
||||||
resp.status_code = 202
|
|
||||||
mock_do_request.return_value = resp, {}
|
|
||||||
self.conductor.sn_driver.timer_expired('test_id', ['id'])
|
self.conductor.sn_driver.timer_expired('test_id', ['id'])
|
||||||
resp.status_code = 503
|
|
||||||
mock_do_request.return_value = resp, {}
|
def test_conductor_timer_expired_error(self):
|
||||||
|
self.config_fixture.config(
|
||||||
|
group='server_notification', server_notification=True)
|
||||||
|
snd.ServerNotificationDriver._instance = None
|
||||||
|
self.conductor.sn_driver = snd.ServerNotificationDriver.instance()
|
||||||
|
|
||||||
|
log_name = "tacker.sol_refactored.conductor.server_notification_driver"
|
||||||
|
with self.assertLogs(logger=log_name, level=logging.ERROR) as cm:
|
||||||
self.conductor.sn_driver.timer_expired('test_id', ['id'])
|
self.conductor.sn_driver.timer_expired('test_id', ['id'])
|
||||||
|
msg = f'ERROR:{log_name}:server_notification auto healing is failed:'
|
||||||
|
self.assertIn(msg, cm.output[1])
|
||||||
|
|
||||||
def expired(self, id, queue):
|
def expired(self, id, queue):
|
||||||
queue.sort()
|
queue.sort()
|
||||||
|
Loading…
Reference in New Issue
Block a user