reset nova-compute process name

In masakari-engine, it enable/disable nova-compute service
by the process name. So process-monitor need to reset
the nova process name to "nova-compute" when trigger
process notification.

Change-Id: Ia6f22bd1d183093bb0345f323a80268fb62df388
Close-Bug: #1858757
This commit is contained in:
suzhengwei 2020-02-18 17:30:43 +08:00
parent 92c934a8e3
commit f317a24a25
4 changed files with 24 additions and 10 deletions

View File

@ -10,6 +10,7 @@ cliff==2.11.0
cmd2==0.8.1 cmd2==0.8.1
coverage==4.0 coverage==4.0
cryptography==2.1.4 cryptography==2.1.4
ddt==1.0.1
debtcollector==1.19.0 debtcollector==1.19.0
decorator==4.2.1 decorator==4.2.1
deprecation==2.0 deprecation==2.0

View File

@ -131,7 +131,7 @@ class HandleProcess(object):
'generated_time': current_time, 'generated_time': current_time,
'payload': { 'payload': {
'event': ec.EventConstants.EVENT_STOPPED, 'event': ec.EventConstants.EVENT_STOPPED,
'process_name': process_name 'process_name': process_name.split('/')[-1]
} }
} }
} }

View File

@ -16,6 +16,7 @@ import socket
import testtools import testtools
from unittest import mock from unittest import mock
import ddt
import eventlet import eventlet
from oslo_utils import timeutils from oslo_utils import timeutils
@ -28,10 +29,12 @@ from masakarimonitors import utils
CONF = masakarimonitors.conf.CONF CONF = masakarimonitors.conf.CONF
eventlet.monkey_patch(os=False) eventlet.monkey_patch(os=False)
NOVA_COMPUTE = 'nova-compute'
MOCK_PROCESS_LIST = [ MOCK_PROCESS_LIST = [
{ {
'id': 1, 'id': 1,
'process_name': 'mock_process_name_A', 'process_name': '/usr/local/bin/nova-compute',
'start_command': 'mock_start_command', 'start_command': 'mock_start_command',
'pre_start_command': 'mock_pre_start_command', 'pre_start_command': 'mock_pre_start_command',
'post_start_command': 'mock_post_start_command', 'post_start_command': 'mock_post_start_command',
@ -45,7 +48,7 @@ MOCK_PROCESS_LIST = [
MOCK_DOWN_PROCESS_LIST = [ MOCK_DOWN_PROCESS_LIST = [
{ {
'id': 1, 'id': 1,
'process_name': 'mock_process_name_A', 'process_name': '/usr/local/bin/nova-compute',
'start_command': 'mock_start_command', 'start_command': 'mock_start_command',
'pre_start_command': 'mock_pre_start_command', 'pre_start_command': 'mock_pre_start_command',
'post_start_command': 'mock_post_start_command', 'post_start_command': 'mock_post_start_command',
@ -56,11 +59,13 @@ MOCK_DOWN_PROCESS_LIST = [
}, },
] ]
PS_RESULT = "\n" \ PS_RESULT = \
"\n" \
"UID PID PPID C STIME TTY TIME CMD\n" \ "UID PID PPID C STIME TTY TIME CMD\n" \
"root 11187 1 0 18:52 ? 00:00:00 mock_process_name_A\n" "root 11187 1 0 18:52 ? 00:00:00 /usr/local/bin/nova-compute\n"
@ddt.ddt
class TestHandleProcess(testtools.TestCase): class TestHandleProcess(testtools.TestCase):
def setUp(self): def setUp(self):
@ -73,6 +78,14 @@ class TestHandleProcess(testtools.TestCase):
self.assertEqual(process_list, obj.process_list) self.assertEqual(process_list, obj.process_list)
@ddt.data("/usr/local/bin/nova-compute", "nova-compute")
def test_make_event(self, process_name):
obj = handle_process.HandleProcess()
event = obj._make_event(process_name)
self.assertEqual(
NOVA_COMPUTE,
event['notification']['payload']['process_name'])
@mock.patch.object(utils, 'execute') @mock.patch.object(utils, 'execute')
def test_start_processes(self, def test_start_processes(self,
mock_execute): mock_execute):
@ -227,7 +240,7 @@ class TestHandleProcess(testtools.TestCase):
'generated_time': current_time, 'generated_time': current_time,
'payload': { 'payload': {
'event': ec.EventConstants.EVENT_STOPPED, 'event': ec.EventConstants.EVENT_STOPPED,
'process_name': down_process_list[0].get('process_name') 'process_name': NOVA_COMPUTE
} }
} }
} }
@ -289,7 +302,7 @@ class TestHandleProcess(testtools.TestCase):
'generated_time': current_time, 'generated_time': current_time,
'payload': { 'payload': {
'event': ec.EventConstants.EVENT_STOPPED, 'event': ec.EventConstants.EVENT_STOPPED,
'process_name': down_process_list[0].get('process_name') 'process_name': NOVA_COMPUTE
} }
} }
} }
@ -356,7 +369,7 @@ class TestHandleProcess(testtools.TestCase):
'generated_time': current_time, 'generated_time': current_time,
'payload': { 'payload': {
'event': ec.EventConstants.EVENT_STOPPED, 'event': ec.EventConstants.EVENT_STOPPED,
'process_name': down_process_list[0].get('process_name') 'process_name': NOVA_COMPUTE
} }
} }
} }

View File

@ -13,6 +13,6 @@ os-testr>=1.0.0 # Apache-2.0
testrepository>=0.0.18 # Apache-2.0/BSD testrepository>=0.0.18 # Apache-2.0/BSD
testscenarios>=0.4 # Apache-2.0/BSD testscenarios>=0.4 # Apache-2.0/BSD
testtools>=2.2.0 # MIT testtools>=2.2.0 # MIT
ddt>=1.0.1 # MIT
# releasenotes # releasenotes
reno>=2.5.0 # Apache-2.0 reno>=2.5.0 # Apache-2.0