def test_start_stop_specified_ipmi_console(self):
        self.node_name = "test"
        self.node_workspace = os.path.join(config.infrasim_home, self.node_name)
        node_config_path = "test.yml"
        node_info = FakeConfig().get_node_info()
        with open(node_config_path, "w") as fp:
            yaml.dump(node_info, fp, default_flow_style=False)
        os.system("infrasim config add {} {}".format(
            self.node_name, node_config_path))
        os.system("infrasim node start {}".format(self.node_name))
        os.system("ipmi-console start {}".format(self.node_name))
        time.sleep(20)
        ipmi_start_cmd = 'ps ax | grep ipmi-console'
        returncode, output = run_command(
            ipmi_start_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        os.system("ipmi-console stop {}".format(self.node_name))

        time.sleep(1)
        ipmi_stop_cmd = 'ps ax | grep ipmi-console'
        returncode1, output1 = run_command(
            ipmi_stop_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        self.assertEqual(returncode, 0)
        self.assertEqual(returncode, 0)
        assert 'ipmi-console start {}'.format(self.node_name) in output
        self.assertEqual(returncode1, 0)
        assert 'ipmi-console start {}'.format(self.node_name) not in output1
        node_map = NodeMap()
        node_map.delete(self.node_name)
예제 #2
0
 def test_start_stop_specified_ipmi_console(self):
     self.node_name = "test"
     self.node_workspace = os.path.join(config.infrasim_home,
                                        self.node_name)
     node_config_path = "test.yml"
     node_info = FakeConfig().get_node_info()
     with open(node_config_path, "w") as fp:
         yaml.dump(node_info, fp, default_flow_style=False)
     os.system("infrasim config add {} {}".format(self.node_name,
                                                  node_config_path))
     os.system("infrasim node start {}".format(self.node_name))
     os.system("ipmi-console start {}".format(self.node_name))
     time.sleep(20)
     ipmi_start_cmd = 'ps ax | grep ipmi-console'
     returncode, output = run_command(ipmi_start_cmd,
                                      stdout=subprocess.PIPE,
                                      stderr=subprocess.PIPE)
     os.system("ipmi-console stop {}".format(self.node_name))
     ipmi_stop_cmd = 'ps ax | grep ipmi-console'
     returncode1, output1 = run_command(ipmi_stop_cmd,
                                        stdout=subprocess.PIPE,
                                        stderr=subprocess.PIPE)
     self.assertEqual(returncode, 0)
     self.assertEqual(returncode, 0)
     assert 'ipmi-console start {}'.format(self.node_name) in output
     self.assertEqual(returncode1, 0)
     assert 'ipmi-console start {}'.format(self.node_name) not in output1
     node_map = NodeMap()
     node_map.delete(self.node_name)
예제 #3
0
class test_node_config_manager(unittest.TestCase):

    test_name = "test"
    test_config = os.path.join(config.infrasim_node_config_map, "test.yml")
    fake_name = "fake"
    fake_config = "fake.yml"
    tmp_config = "/tmp/abc.yml"
    init_config = config.infrasim_default_config

    nm = NodeMap()

    @classmethod
    def setUpClass(cls):
        try:
            os.remove(cls.test_config)
            os.remove(cls.fake_config)
        except Exception:
            pass

    def tearDown(self):
        try:
            os.remove(self.test_config)
            os.remove(self.fake_config)
        except Exception:
            pass

    def test_add_config(self):
        self.nm.add(self.test_name, self.init_config)
        with open(self.test_config, 'r') as fp:
            node_info = YAMLLoader(fp).get_data()
        assert node_info["name"] == "test"

    def test_add_duplicated_name(self):
        self.nm.add(self.test_name, self.init_config)
        try:
            self.nm.add(self.test_name, self.init_config)
        except InfraSimError, e:
            assert "configuration already in InfraSIM mapping" in e.value
        else:
예제 #4
0
import argparse
import os
from functools import wraps
import inspect
import infrasim.model as model
from infrasim.init import infrasim_init
from infrasim.version import version
import infrasim.helper as helper
from infrasim.config_manager import NodeMap
from infrasim.workspace import Workspace
from texttable import Texttable
from global_status import InfrasimMonitor
from infrasim import WorkspaceExisting, CommandRunFailed, CommandNotFound, InfraSimError
from .log import LoggerType, infrasim_log

nm = NodeMap()
logger_cmd = infrasim_log.get_logger(LoggerType.cmd.value)


def args(*args, **kwargs):
    def _decorator(func):
        func.__dict__.setdefault('args', []).insert(0, (args, kwargs))
        return func

    return _decorator


def node_workspace_exists(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        frame = inspect.currentframe()