Add test for ovs collector module and modify collector
This change includes: * New test class to test ovs/collector module. Added one test in the meantime to test get_env function. * loading configuration moved to a function, since it affects testing. * Added paramiko to test-requirements since it used by ovs/common * Minor improvement to get_env function. Change-Id: I606f1af74a7148057673df1e95c1c80e82777ec3
This commit is contained in:
parent
f75e67c73d
commit
927da6205e
@ -1,3 +1,14 @@
|
||||
# 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 django.utils.translation import ugettext_lazy as _
|
||||
|
||||
import horizon
|
||||
|
@ -18,20 +18,20 @@ import re
|
||||
|
||||
import openstack_dashboard.don.ovs.common as common
|
||||
|
||||
don_config = ConfigParser.ConfigParser()
|
||||
try:
|
||||
don_config.read('/etc/don/don.conf')
|
||||
except Exception as e:
|
||||
print(e.value)
|
||||
deployment_type = don_config.get('DEFAULT', 'deployment_type')
|
||||
|
||||
|
||||
def get_env(filename):
|
||||
"""Returns environment dictionary created from the environment file.
|
||||
|
||||
:param filename: the name of the environment file.
|
||||
"""
|
||||
# Try read enviornment file
|
||||
try:
|
||||
lines = open(os.getcwd() + os.sep + filename, 'r').read().splitlines()
|
||||
with open(os.getcwd() + os.sep + filename, 'r') as f:
|
||||
lines = f.read().splitlines()
|
||||
except IOError as e:
|
||||
print("%s :%s" % (e.args[1], filename))
|
||||
raise
|
||||
raise(e)
|
||||
|
||||
# Create env dictionary based on lines that starts with 'export ...'
|
||||
env = {}
|
||||
for line in lines:
|
||||
if line.startswith('export'):
|
||||
@ -42,8 +42,6 @@ def get_env(filename):
|
||||
env.update({key: val})
|
||||
return env
|
||||
|
||||
myenv = os.environ.copy()
|
||||
myenv.update(get_env('admin-openrc.sh'))
|
||||
|
||||
# Contains all info gathered by parsing the output of commands
|
||||
info = {
|
||||
@ -497,7 +495,6 @@ def neutron_router_list_parser(parse_this):
|
||||
'parser': ip_namespace_qrouter_parser,
|
||||
}
|
||||
add_new_command(commands, cmd_key, cmd)
|
||||
pass
|
||||
|
||||
|
||||
def ip_namespace_qrouter_parser(parse_this):
|
||||
@ -640,7 +637,6 @@ def neutron_net_list_parser(parse_this):
|
||||
'parser': ip_namespace_qdhcp_parser,
|
||||
}
|
||||
add_new_command(commands, cmd_key, cmd)
|
||||
pass
|
||||
|
||||
|
||||
'''
|
||||
@ -875,9 +871,9 @@ def all_commands_executed(commands):
|
||||
return True
|
||||
|
||||
|
||||
def get_vm_info_from_compute(cmd):
|
||||
def get_vm_info_from_compute(cmd, my_env):
|
||||
output = common.execute_cmd(['nova', 'hypervisor-list'],
|
||||
sudo=False, shell=False, env=myenv).split('\n')
|
||||
sudo=False, shell=False, env=my_env).split('\n')
|
||||
compute_list = get_hypervisor(output)
|
||||
vm_info = []
|
||||
compute_creds = common.get_vm_credentials()
|
||||
@ -915,7 +911,22 @@ def get_hypervisor(parse_this):
|
||||
return hypervisor
|
||||
|
||||
|
||||
def load_config():
|
||||
"""Loads configuration."""
|
||||
don_config = ConfigParser.ConfigParser()
|
||||
try:
|
||||
don_config.read('/etc/don/don.conf')
|
||||
except Exception as e:
|
||||
raise(e.value)
|
||||
return don_config.get('DEFAULT', 'deployment_type')
|
||||
|
||||
|
||||
def main():
|
||||
deployment_type = load_config()
|
||||
|
||||
my_env = os.environ.copy()
|
||||
my_env.update(get_env('admin-openrc.sh'))
|
||||
|
||||
check_args()
|
||||
|
||||
iteration = 0
|
||||
@ -938,7 +949,7 @@ def main():
|
||||
shell = commands[cmd].get('shell', False)
|
||||
env = None
|
||||
if commands[cmd].get('env', False):
|
||||
env = myenv
|
||||
env = my_env
|
||||
sudo = commands[cmd].get('sudo', False)
|
||||
if deployment_type == 'multinode':
|
||||
# handling for network node
|
||||
@ -948,7 +959,7 @@ def main():
|
||||
if cmd == 'cat_instance':
|
||||
commands[cmd][
|
||||
'output'] = get_vm_info_from_compute(
|
||||
commands[cmd]['cmd'])
|
||||
commands[cmd]['cmd'], my_env)
|
||||
print(commands[cmd]['output'])
|
||||
else:
|
||||
commands[cmd]['output'] = common.execute_cmd(
|
||||
@ -966,5 +977,6 @@ def main():
|
||||
'Writing collected info into ' + common.settings['info_file'])
|
||||
common.dump_json(info, common.settings['info_file'])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
@ -205,7 +205,6 @@ def collect(request):
|
||||
status = 1
|
||||
macro['collect_status'] = \
|
||||
"Collecton successful. Click visualize to display"
|
||||
# res = collector.main()
|
||||
os.chdir(BASE_DIR)
|
||||
if status:
|
||||
messages.success(request, macro['collect_status'])
|
||||
|
@ -19,5 +19,4 @@ from oslotest import base
|
||||
|
||||
|
||||
class TestCase(base.BaseTestCase):
|
||||
|
||||
"""Test case base class for all unit tests."""
|
||||
|
38
openstack_dashboard/tests/test_collector.py
Normal file
38
openstack_dashboard/tests/test_collector.py
Normal file
@ -0,0 +1,38 @@
|
||||
# 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 os
|
||||
import tempfile
|
||||
|
||||
import openstack_dashboard.don.ovs.collector as collector
|
||||
from openstack_dashboard.tests import base
|
||||
|
||||
|
||||
class TestOvsCollector(base.TestCase):
|
||||
"""Tests openvswitch collector module."""
|
||||
def setUp(self):
|
||||
super(TestOvsCollector, self).setUp()
|
||||
|
||||
# Create a temporary file
|
||||
self.tmp_fd, self.tmp_fp = tempfile.mkstemp(dir=os.getcwd())
|
||||
|
||||
def tearDown(self):
|
||||
super(TestOvsCollector, self).tearDown()
|
||||
|
||||
# Remove the file
|
||||
os.remove(self.tmp_fp)
|
||||
|
||||
def test_get_env(self):
|
||||
lines = ["export x=2", "export y=3", "z=4"]
|
||||
with open(self.tmp_fp, 'w') as f:
|
||||
f.write("\n".join(lines))
|
||||
env = collector.get_env(os.path.basename(self.tmp_fp))
|
||||
self.assertEqual(env, dict(x='2', y='3'))
|
@ -10,6 +10,7 @@ python-subunit>=0.0.18
|
||||
sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2
|
||||
oslosphinx>=2.5.0 # Apache-2.0
|
||||
oslotest>=1.10.0 # Apache-2.0
|
||||
paramiko
|
||||
testrepository>=0.0.18
|
||||
testscenarios>=0.4
|
||||
testtools>=1.4.0
|
||||
|
Loading…
x
Reference in New Issue
Block a user