From 4b84887ed2322db6b04924bdee7b44d3dcf7c32d Mon Sep 17 00:00:00 2001 From: Tim Rozet Date: Tue, 30 Aug 2016 13:06:33 -0400 Subject: Adds ability to power off nodes in clean Now if an inventory file is provided to clean, those nodes will be powered off. JIRA: APEX-250 Change-Id: I2d78285717726c3d1c9d7d88c38e706d4617e337 Signed-off-by: Tim Rozet --- tests/config/inventory.yaml | 56 +++++++++++++++++++++++++++++++++++++++++ tests/test_apex_clean.py | 41 ++++++++++++++++++++++++++++++ tests/test_apex_common_utils.py | 17 ++++++++----- 3 files changed, 108 insertions(+), 6 deletions(-) create mode 100644 tests/config/inventory.yaml create mode 100644 tests/test_apex_clean.py (limited to 'tests') diff --git a/tests/config/inventory.yaml b/tests/config/inventory.yaml new file mode 100644 index 00000000..607df29e --- /dev/null +++ b/tests/config/inventory.yaml @@ -0,0 +1,56 @@ +nodes: + node1: + mac_address: "00:25:B5:cc:00:1e" + ipmi_ip: 72.30.8.69 + ipmi_user: admin + ipmi_pass: octopus + pm_type: "pxe_ipmitool" + cpus: 2 + memory: 8192 + disk: 40 + arch: "x86_64" + capabilities: "profile:control" + node2: + mac_address: "00:25:B5:cc:00:5d" + ipmi_ip: 72.30.8.78 + ipmi_user: admin + ipmi_pass: octopus + pm_type: "pxe_ipmitool" + cpus: 2 + memory: 8192 + disk: 40 + arch: "x86_64" + capabilities: "profile:control" + node3: + mac_address: "00:25:B5:cc:00:1d" + ipmi_ip: 72.30.8.67 + ipmi_user: admin + ipmi_pass: octopus + pm_type: "pxe_ipmitool" + cpus: 2 + memory: 8192 + disk: 40 + arch: "x86_64" + capabilities: "profile:control" + node4: + mac_address: "00:25:B5:cc:00:3c" + ipmi_ip: 72.30.8.76 + ipmi_user: admin + ipmi_pass: octopus + pm_type: "pxe_ipmitool" + cpus: 2 + memory: 8192 + disk: 40 + arch: "x86_64" + capabilities: "profile:compute" + node5: + mac_address: "00:25:B5:cc:00:5b" + ipmi_ip: 72.30.8.71 + ipmi_user: admin + ipmi_pass: octopus + pm_type: "pxe_ipmitool" + cpus: 2 + memory: 8192 + disk: 40 + arch: "x86_64" + capabilities: "profile:compute" diff --git a/tests/test_apex_clean.py b/tests/test_apex_clean.py new file mode 100644 index 00000000..2a436a7c --- /dev/null +++ b/tests/test_apex_clean.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2016 Tim Rozet (Red Hat) +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +import mock +import pyipmi +import pyipmi.chassis + +from apex import clean_nodes +from mock import patch +from nose import tools + + +class TestClean(object): + @classmethod + def setup_class(klass): + """This method is run once for each class before any tests are run""" + + @classmethod + def teardown_class(klass): + """This method is run once for each class _after_ all tests are run""" + + def setUp(self): + """This method is run once before _each_ test method is executed""" + + def teardown(self): + """This method is run once after _each_ test method is executed""" + + def test_clean(self): + with mock.patch.object(pyipmi.Session, 'establish') as mock_method: + with patch.object(pyipmi.chassis.Chassis, + 'chassis_control_power_down') as mock_method2: + clean_nodes('config/inventory.yaml') + + tools.assert_equal(mock_method.call_count, 5) + tools.assert_equal(mock_method2.call_count, 5) diff --git a/tests/test_apex_common_utils.py b/tests/test_apex_common_utils.py index 7c988e3d..94598657 100644 --- a/tests/test_apex_common_utils.py +++ b/tests/test_apex_common_utils.py @@ -7,9 +7,9 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -from apex.common.utils import str2bool +import nose.tools -from nose.tools import assert_equal +from apex.common import utils class TestCommonUtils(object): @@ -28,7 +28,12 @@ class TestCommonUtils(object): """This method is run once after _each_ test method is executed""" def test_str2bool(self): - assert_equal(str2bool(True), True) - assert_equal(str2bool(False), False) - assert_equal(str2bool("True"), True) - assert_equal(str2bool("YES"), True) + nose.tools.assert_equal(utils.str2bool(True), True) + nose.tools.assert_equal(utils.str2bool(False), False) + nose.tools.assert_equal(utils.str2bool("True"), True) + nose.tools.assert_equal(utils.str2bool("YES"), True) + + def test_parse_yaml(self): + nose.tools.assert_is_instance( + utils.parse_yaml('../config/network/network_settings.yaml'), + dict) -- cgit 1.2.3-korg