def test_boot(self):

        path = os.path.abspath(__file__)
        dir_path = os.path.dirname(path)
        lm = LogManager('./test-logs')
        ptm = PhysicalTopologyManager(root_dir=dir_path + '/../..', log_manager=lm)

        ptm.configure(dir_path + '/test-config.json')

        for h in ptm.host_by_start_order:
            h.create()
        for h in ptm.host_by_start_order:
            h.boot()
        for h in ptm.host_by_start_order:
            h.net_up()
        for h in ptm.host_by_start_order:
            h.net_finalize()

        self.assertTrue(LinuxCLI().grep_cmd('ip netns', 'zoo1'))
        self.assertTrue(LinuxCLI().grep_cmd('ip netns', 'test-host1'))
        root_host = ptm.hosts_by_name['root']
        test_host1 = ptm.hosts_by_name['test-host1']

        self.assertTrue(root_host.cli.grep_cmd('ip l', 'th1eth1'))
        self.assertTrue(test_host1.cli.grep_cmd('ip l', 'eth1'))

        for h in reversed(ptm.host_by_start_order):
            h.net_down()
        for h in reversed(ptm.host_by_start_order):
            h.shutdown()
        for h in reversed(ptm.host_by_start_order):
            h.remove()

        self.assertFalse(LinuxCLI().grep_cmd('ip netns', 'zoo1'))
        self.assertFalse(LinuxCLI().grep_cmd('ip netns', 'test-host1'))
    def test_configure(self):
        path = os.path.abspath(__file__)
        dir_path = os.path.dirname(path)
        lm = LogManager('./test-logs')
        ptm = PhysicalTopologyManager(root_dir=dir_path + '/../..', log_manager=lm)

        ptm.configure(dir_path + '/test-config.json')

        self.assertTrue('zoo1' in ptm.hosts_by_name)
        #self.assertTrue('cass1' in ptm.hosts_by_name)
        self.assertTrue('edge1' in ptm.hosts_by_name)

        self.assertEqual(ptm.host_by_start_order[0].name, 'root')
        self.assertEqual(ptm.host_by_start_order[1].name, 'external1')
        self.assertEqual(ptm.host_by_start_order[2].name, 'test-host1')
        self.assertEqual(ptm.host_by_start_order[3].name, 'test-host2')
        self.assertEqual(ptm.host_by_start_order[4].name, 'edge1')
        self.assertEqual(ptm.host_by_start_order[5].name, 'zoo1')
        #self.assertEqual(ptm.host_by_start_order[6].name, 'cass1')
        #self.assertEqual(ptm.host_by_start_order[7].name, 'cmp1')
        self.assertEqual(ptm.host_by_start_order[6].name, 'cmp1')

        zk_host = ptm.hosts_by_name['zoo1']

        self.assertTrue('eth0' in zk_host.interfaces)

        root_host = ptm.hosts_by_name['root']

        self.assertTrue('zoo1eth0' in root_host.interfaces)
    def test_print_config(self):

        path = os.path.abspath(__file__)
        dir_path = os.path.dirname(path)
        lm = LogManager('./test-logs')
        ptm = PhysicalTopologyManager(root_dir=dir_path + '/../..', log_manager=lm)

        ptm.configure(dir_path + '/test-config.json')

        ptm.print_config()
    def test_startup(self):

        path = os.path.abspath(__file__)
        dir_path = os.path.dirname(path)
        lm = LogManager('./test-logs')
        ptm = PhysicalTopologyManager(root_dir=dir_path + '/../..', log_manager=lm)

        ptm.configure(dir_path + '/test-config.json')
        ptm.startup()

        self.assertTrue(LinuxCLI().grep_cmd('ip netns', 'zoo1'))
        self.assertTrue(LinuxCLI().grep_cmd('ip netns', 'test-host1'))
        root_host = ptm.hosts_by_name['root']
        test_host1 = ptm.hosts_by_name['test-host1']

        self.assertTrue(root_host.cli.grep_cmd('ip l', 'th1eth1'))
        self.assertTrue(test_host1.cli.grep_cmd('ip l', 'eth1'))

        ptm.shutdown()

        self.assertFalse(LinuxCLI().grep_cmd('ip netns', 'zoo1'))
        self.assertFalse(LinuxCLI().grep_cmd('ip netns', 'test-host1'))
Exemplo n.º 5
0
            command = 'print'
        else:
            usage(ArgMismatchException('Invalid argument' + arg))

    if command == '':
        usage(ArgMismatchException('Must specify at least one command option'))

    root_dir = LinuxCLI().cmd('pwd').strip()

    log_manager = LogManager(root_dir=log_dir)
    if command == 'startup':
        log_manager.rollover_logs_fresh(file_filter='ptm*.log')

    ptm = PhysicalTopologyManager(root_dir=root_dir, log_manager=log_manager)
    ptm.configure_logging(debug=debug)
    ptm.configure(ptm_config_file)

    if command == 'startup':
        ptm.startup()
    elif command == 'shutdown':
        ptm.shutdown()
    elif command == 'print':
        ptm.print_config()
    else:
        usage(ArgMismatchException('Command option not recognized: ' + command))
   
except ExitCleanException:
    exit(1)
except ArgMismatchException as a:
    print 'Argument mismatch: ' + str(a)
    traceback.print_tb(sys.exc_traceback)