def test_variant_version_latest_assumed(self, load_facts_mock, prerequisites_mock, run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS, 0)
        prerequisites_mock.return_value = 0
        run_playbook_mock.return_value = 0

        config_file = self.write_config(
            os.path.join(self.work_dir, 'ooinstall.conf'),
            SAMPLE_CONFIG % 'openshift-enterprise')

        self.cli_args.extend(["-c", config_file, "install"])
        result = self.runner.invoke(cli.cli, self.cli_args)
        self.assert_result(result, 0)

        written_config = read_yaml(config_file)

        self.assertEquals('openshift-enterprise', written_config['variant'])
        # We didn't specify a version so the latest should have been assumed,
        # and written to disk:
        self.assertEquals('3.3', written_config['variant_version'])

        # Make sure the correct value was passed to ansible:
        inventory = configparser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, 'hosts'))
        self.assertEquals('openshift-enterprise',
                          inventory.get('OSEv3:vars', 'deployment_type'))
Пример #2
0
    def test_ha_dedicated_node(self, load_facts_mock, run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS_QUICKHA, 0)
        run_playbook_mock.return_value = 0

        cli_input = build_input(
            hosts=[('10.0.0.1', True, False), ('10.0.0.2', True, False),
                   ('10.0.0.3', True, False), ('10.0.0.4', False, False)],
            ssh_user='******',
            variant_num=1,
            confirm_facts='y',
            master_lb=('10.0.0.5', False),
            storage='10.1.0.1',
        )
        self.cli_args.append("install")
        result = self.runner.invoke(cli.cli, self.cli_args, input=cli_input)
        self.assert_result(result, 0)

        self._verify_load_facts(load_facts_mock)
        self._verify_run_playbook(run_playbook_mock, 6, 6)

        written_config = read_yaml(self.config_file)
        self._verify_config_hosts(written_config, 6)

        inventory = ConfigParser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, '.ansible/hosts'))
        self.assertEquals(
            'False', inventory.get('nodes', '10.0.0.1  openshift_schedulable'))
        self.assertEquals(
            'False', inventory.get('nodes', '10.0.0.2  openshift_schedulable'))
        self.assertEquals(
            'False', inventory.get('nodes', '10.0.0.3  openshift_schedulable'))
        self.assertEquals(None, inventory.get('nodes', '10.0.0.4'))

        self.assertTrue(inventory.has_section('etcd'))
        self.assertEquals(3, len(inventory.items('etcd')))
    def test_ha_no_dedicated_nodes(self, load_facts_mock, run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS_QUICKHA, 0)
        run_playbook_mock.return_value = 0

        cli_input = build_input(hosts=[
            ('10.0.0.1', True, False),
            ('10.0.0.2', True, False),
            ('10.0.0.3', True, False)],
                                      ssh_user='******',
                                      variant_num=1,
                                      confirm_facts='y',
                                      master_lb=('10.0.0.5', False),
                                      storage='10.1.0.1',)
        self.cli_args.append("install")
        result = self.runner.invoke(cli.cli, self.cli_args,
            input=cli_input)
        self.assert_result(result, 0)

        self._verify_load_facts(load_facts_mock)
        self._verify_run_playbook(run_playbook_mock, 5, 5)

        written_config = read_yaml(self.config_file)
        self._verify_config_hosts(written_config, 5)

        inventory = ConfigParser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, 'hosts'))
        self.assert_inventory_host_var(inventory, 'nodes', '10.0.0.1',
                                       'openshift_schedulable=True')
        self.assert_inventory_host_var(inventory, 'nodes', '10.0.0.2',
                                       'openshift_schedulable=True')
        self.assert_inventory_host_var(inventory, 'nodes', '10.0.0.3',
                                       'openshift_schedulable=True')
    def test_full_run(self, load_facts_mock, run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS, 0)
        run_playbook_mock.return_value = 0

        cli_input = build_input(
            hosts=[("10.0.0.1", True, False), ("10.0.0.2", False, False), ("10.0.0.3", False, False)],
            ssh_user="******",
            variant_num=1,
            confirm_facts="y",
            storage="10.1.0.1",
        )
        self.cli_args.append("install")
        result = self.runner.invoke(cli.cli, self.cli_args, input=cli_input)
        self.assert_result(result, 0)

        self._verify_load_facts(load_facts_mock)
        self._verify_run_playbook(run_playbook_mock, 4, 4)

        written_config = read_yaml(self.config_file)
        self._verify_config_hosts(written_config, 4)

        inventory = ConfigParser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, "hosts"))
        self.assert_inventory_host_var(inventory, "nodes", "10.0.0.1", "openshift_schedulable=False")
        self.assert_inventory_host_var_unset(inventory, "nodes", "10.0.0.2", "openshift_schedulable")
        self.assert_inventory_host_var_unset(inventory, "nodes", "10.0.0.3", "openshift_schedulable")
Пример #5
0
    def test_variant_version_latest_assumed(self, load_facts_mock,
                                            run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS, 0)
        run_playbook_mock.return_value = 0

        config_file = self.write_config(
            os.path.join(self.work_dir, 'ooinstall.conf'),
            SAMPLE_CONFIG % 'openshift-enterprise')

        self.cli_args.extend(["-c", config_file, "install"])
        result = self.runner.invoke(cli.cli, self.cli_args)
        self.assert_result(result, 0)

        written_config = read_yaml(config_file)

        self.assertEquals('openshift-enterprise', written_config['variant'])
        # We didn't specify a version so the latest should have been assumed,
        # and written to disk:
        self.assertEquals('3.2', written_config['variant_version'])

        # Make sure the correct value was passed to ansible:
        inventory = ConfigParser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, 'hosts'))
        self.assertEquals('openshift-enterprise',
                          inventory.get('OSEv3:vars', 'deployment_type'))
    def test_ha_no_dedicated_nodes(self, load_facts_mock, run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS_QUICKHA, 0)
        run_playbook_mock.return_value = 0

        cli_input = build_input(
            hosts=[("10.0.0.1", True, False), ("10.0.0.2", True, False), ("10.0.0.3", True, False)],
            ssh_user="******",
            variant_num=1,
            confirm_facts="y",
            master_lb=("10.0.0.5", False),
        )
        self.cli_args.append("install")
        result = self.runner.invoke(cli.cli, self.cli_args, input=cli_input)
        self.assert_result(result, 0)

        self._verify_load_facts(load_facts_mock)
        self._verify_run_playbook(run_playbook_mock, 4, 4)

        written_config = read_yaml(self.config_file)
        self._verify_config_hosts(written_config, 4)

        inventory = ConfigParser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, ".ansible/hosts"))
        self.assertEquals("True", inventory.get("nodes", "10.0.0.1  openshift_schedulable"))
        self.assertEquals("True", inventory.get("nodes", "10.0.0.2  openshift_schedulable"))
        self.assertEquals("True", inventory.get("nodes", "10.0.0.3  openshift_schedulable"))
Пример #7
0
    def test_add_nodes(self, load_facts_mock, run_playbook_mock):

        # Modify the mock facts to return a version indicating OpenShift
        # is already installed on our master, and the first node.
        mock_facts = copy.deepcopy(MOCK_FACTS)
        mock_facts['10.0.0.1']['common']['version'] = "3.0.0"
        mock_facts['10.0.0.2']['common']['version'] = "3.0.0"

        load_facts_mock.return_value = (mock_facts, 0)
        run_playbook_mock.return_value = 0

        cli_input = build_input(
            hosts=[
                ('10.0.0.1', True, False),
                ('10.0.0.2', False, False),
            ],
            add_nodes=[('10.0.0.3', False, False)],
            ssh_user='******',
            variant_num=1,
            confirm_facts='y',
            storage='10.0.0.1',
        )
        self.cli_args.append("install")
        result = self.runner.invoke(cli.cli, self.cli_args, input=cli_input)
        self.assert_result(result, 0)

        self._verify_load_facts(load_facts_mock)
        self._verify_run_playbook(run_playbook_mock, 3, 2)

        written_config = read_yaml(self.config_file)
        self._verify_config_hosts(written_config, 3)
    def test_full_run(self, load_facts_mock, run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS, 0)
        run_playbook_mock.return_value = 0

        cli_input = build_input(hosts=[
            ('10.0.0.1', True, False),
            ('10.0.0.2', False, False),
            ('10.0.0.3', False, False)],
                                      ssh_user='******',
                                      variant_num=1,
                                      confirm_facts='y')
        self.cli_args.append("install")
        result = self.runner.invoke(cli.cli, self.cli_args,
            input=cli_input)
        self.assert_result(result, 0)

        self._verify_load_facts(load_facts_mock)
        self._verify_run_playbook(run_playbook_mock, 3, 3)

        written_config = read_yaml(self.config_file)
        self._verify_config_hosts(written_config, 3)

        inventory = ConfigParser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, '.ansible/hosts'))
        self.assertEquals('False',
            inventory.get('nodes', '10.0.0.1  openshift_schedulable'))
        self.assertEquals(None,
            inventory.get('nodes', '10.0.0.2'))
        self.assertEquals(None,
            inventory.get('nodes', '10.0.0.3'))
    def test_gen_inventory(self, load_facts_mock, run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS, 0)
        run_playbook_mock.return_value = 0

        cli_input = build_input(hosts=[
            ('10.0.0.1', True, False),
            ('10.0.0.2', False, False),
            ('10.0.0.3', False, False)],
                                ssh_user='******',
                                variant_num=1,
                                confirm_facts='y',
                                storage='10.1.0.1',)
        self.cli_args.append("install")
        self.cli_args.append("--gen-inventory")
        result = self.runner.invoke(cli.cli, self.cli_args,
            input=cli_input)
        self.assert_result(result, 0)

        self._verify_load_facts(load_facts_mock)

        # Make sure run playbook wasn't called:
        self.assertEquals(0, len(run_playbook_mock.mock_calls))

        written_config = read_yaml(self.config_file)
        self._verify_config_hosts(written_config, 4)

        inventory = ConfigParser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, 'hosts'))
        self.assert_inventory_host_var(inventory, 'nodes', '10.0.0.1',
                                 'openshift_schedulable=False')
        self.assert_inventory_host_var_unset(inventory, 'nodes', '10.0.0.2',
                                 'openshift_schedulable=True')
        self.assert_inventory_host_var_unset(inventory, 'nodes', '10.0.0.3',
                                 'openshift_schedulable=True')
    def test_add_nodes(self, load_facts_mock, run_playbook_mock):

        # Modify the mock facts to return a version indicating OpenShift
        # is already installed on our master, and the first node.
        mock_facts = copy.deepcopy(MOCK_FACTS)
        mock_facts['10.0.0.1']['common']['version'] = "3.0.0"
        mock_facts['10.0.0.2']['common']['version'] = "3.0.0"

        load_facts_mock.return_value = (mock_facts, 0)
        run_playbook_mock.return_value = 0

        cli_input = build_input(hosts=[
            ('10.0.0.1', True, False),
            ('10.0.0.2', False, False),
            ],
                                      add_nodes=[('10.0.0.3', False, False)],
                                      ssh_user='******',
                                      variant_num=1,
                                      confirm_facts='y')
        self.cli_args.append("install")
        result = self.runner.invoke(cli.cli,
                                    self.cli_args,
                                    input=cli_input)
        self.assert_result(result, 0)

        self._verify_load_facts(load_facts_mock)
        self._verify_run_playbook(run_playbook_mock, 3, 2)

        written_config = read_yaml(self.config_file)
        self._verify_config_hosts(written_config, 3)
    def test_all_in_one(self, load_facts_mock, prerequisites_mock, run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS, 0)
        prerequisites_mock.return_value = 0
        run_playbook_mock.return_value = 0

        cli_input = build_input(
            hosts=[
                ('10.0.0.1', True, False)],
            ssh_user='******',
            variant_num=1,
            confirm_facts='y',
            storage='10.0.0.1')
        self.cli_args.append("install")
        result = self.runner.invoke(
            cli.cli, self.cli_args, input=cli_input)
        self.assert_result(result, 0)

        self._verify_load_facts(load_facts_mock)
        self._verify_run_playbook(run_playbook_mock, 1, 1)

        written_config = read_yaml(self.config_file)
        self._verify_config_hosts(written_config, 1)

        inventory = configparser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, 'hosts'))
        self.assert_inventory_host_var(inventory, 'nodes', '10.0.0.1',
                                       'openshift_schedulable=True')
Пример #12
0
    def test_gen_inventory(self, load_facts_mock, run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS, 0)
        run_playbook_mock.return_value = 0

        cli_input = build_input(
            hosts=[('10.0.0.1', True, False), ('10.0.0.2', False, False),
                   ('10.0.0.3', False, False)],
            ssh_user='******',
            variant_num=1,
            confirm_facts='y',
            storage='10.1.0.1',
        )
        self.cli_args.append("install")
        self.cli_args.append("--gen-inventory")
        result = self.runner.invoke(cli.cli, self.cli_args, input=cli_input)
        self.assert_result(result, 0)

        self._verify_load_facts(load_facts_mock)

        # Make sure run playbook wasn't called:
        self.assertEquals(0, len(run_playbook_mock.mock_calls))

        written_config = read_yaml(self.config_file)
        self._verify_config_hosts(written_config, 4)

        inventory = ConfigParser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, 'hosts'))
        self.assert_inventory_host_var(inventory, 'nodes', '10.0.0.1',
                                       'openshift_schedulable=False')
        self.assert_inventory_host_var_unset(inventory, 'nodes', '10.0.0.2',
                                             'openshift_schedulable=True')
        self.assert_inventory_host_var_unset(inventory, 'nodes', '10.0.0.3',
                                             'openshift_schedulable=True')
Пример #13
0
    def test_full_run(self, load_facts_mock, run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS, 0)
        run_playbook_mock.return_value = 0

        cli_input = build_input(hosts=[('10.0.0.1', True, False),
                                       ('10.0.0.2', False, False),
                                       ('10.0.0.3', False, False)],
                                ssh_user='******',
                                variant_num=1,
                                confirm_facts='y')
        self.cli_args.append("install")
        result = self.runner.invoke(cli.cli, self.cli_args, input=cli_input)
        self.assert_result(result, 0)

        self._verify_load_facts(load_facts_mock)
        self._verify_run_playbook(run_playbook_mock, 3, 3)

        written_config = read_yaml(self.config_file)
        self._verify_config_hosts(written_config, 3)

        inventory = ConfigParser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, '.ansible/hosts'))
        self.assertEquals(
            'False', inventory.get('nodes', '10.0.0.1  openshift_schedulable'))
        self.assertEquals(None, inventory.get('nodes', '10.0.0.2'))
        self.assertEquals(None, inventory.get('nodes', '10.0.0.3'))
Пример #14
0
    def test_all_in_one(self, load_facts_mock, prerequisites_mock,
                        run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS, 0)
        prerequisites_mock.return_value = 0
        run_playbook_mock.return_value = 0

        cli_input = build_input(hosts=[('10.0.0.1', True, False)],
                                ssh_user='******',
                                variant_num=1,
                                confirm_facts='y',
                                storage='10.0.0.1')
        self.cli_args.append("install")
        result = self.runner.invoke(cli.cli, self.cli_args, input=cli_input)
        self.assert_result(result, 0)

        self._verify_load_facts(load_facts_mock)
        self._verify_run_playbook(run_playbook_mock, 1, 1)

        written_config = read_yaml(self.config_file)
        self._verify_config_hosts(written_config, 1)

        inventory = configparser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, 'hosts'))
        self.assert_inventory_host_var(inventory, 'nodes', '10.0.0.1',
                                       'openshift_schedulable=True')
    def test_variant_version_preserved(self, load_facts_mock,
        run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS, 0)
        run_playbook_mock.return_value = 0

        config = SAMPLE_CONFIG % 'openshift-enterprise'
        config = '%s\n%s' % (config, 'variant_version: 3.3')
        config_file = self.write_config(os.path.join(self.work_dir,
            'ooinstall.conf'), config)

        self.cli_args.extend(["-c", config_file, "install"])
        result = self.runner.invoke(cli.cli, self.cli_args)
        self.assert_result(result, 0)

        written_config = read_yaml(config_file)

        self.assertEquals('openshift-enterprise', written_config['variant'])
        # Make sure our older version was preserved:
        # and written to disk:
        self.assertEquals('3.3', written_config['variant_version'])

        inventory = ConfigParser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, 'hosts'))
        self.assertEquals('openshift-enterprise',
            inventory.get('OSEv3:vars', 'deployment_type'))
Пример #16
0
    def test_ha_no_dedicated_nodes(self, load_facts_mock, run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS_QUICKHA, 0)
        run_playbook_mock.return_value = 0

        cli_input = build_input(
            hosts=[('10.0.0.1', True, False), ('10.0.0.2', True, False),
                   ('10.0.0.3', True, False)],
            ssh_user='******',
            variant_num=1,
            confirm_facts='y',
            master_lb=('10.0.0.5', False),
            storage='10.1.0.1',
        )
        self.cli_args.append("install")
        result = self.runner.invoke(cli.cli, self.cli_args, input=cli_input)
        self.assert_result(result, 0)

        self._verify_load_facts(load_facts_mock)
        self._verify_run_playbook(run_playbook_mock, 5, 5)

        written_config = read_yaml(self.config_file)
        self._verify_config_hosts(written_config, 5)

        inventory = ConfigParser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, 'hosts'))
        self.assert_inventory_host_var(inventory, 'nodes', '10.0.0.1',
                                       'openshift_schedulable=True')
        self.assert_inventory_host_var(inventory, 'nodes', '10.0.0.2',
                                       'openshift_schedulable=True')
        self.assert_inventory_host_var(inventory, 'nodes', '10.0.0.3',
                                       'openshift_schedulable=True')
Пример #17
0
    def test_variant_version_preserved(self, load_facts_mock,
                                       run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS, 0)
        run_playbook_mock.return_value = 0

        config = SAMPLE_CONFIG % 'openshift-enterprise'
        config = '%s\n%s' % (config, 'variant_version: 3.2')
        config_file = self.write_config(
            os.path.join(self.work_dir, 'ooinstall.conf'), config)

        self.cli_args.extend(["-c", config_file, "install"])
        result = self.runner.invoke(cli.cli, self.cli_args)
        self.assert_result(result, 0)

        written_config = read_yaml(config_file)

        self.assertEquals('openshift-enterprise', written_config['variant'])
        # Make sure our older version was preserved:
        # and written to disk:
        self.assertEquals('3.2', written_config['variant_version'])

        inventory = ConfigParser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, 'hosts'))
        self.assertEquals('openshift-enterprise',
                          inventory.get('OSEv3:vars', 'deployment_type'))
    def test_fresh_install_with_config(self, load_facts_mock, run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS, 0)
        run_playbook_mock.return_value = 0

        config_file = self.write_config(
            os.path.join(self.work_dir, "ooinstall.conf"), SAMPLE_CONFIG % "openshift-enterprise"
        )
        cli_input = build_input(confirm_facts="y")
        self.cli_args.extend(["-c", config_file])
        self.cli_args.append("install")
        result = self.runner.invoke(cli.cli, self.cli_args, input=cli_input)
        self.assert_result(result, 0)

        self._verify_load_facts(load_facts_mock)
        self._verify_run_playbook(run_playbook_mock, 3, 3)

        written_config = read_yaml(config_file)
        self._verify_config_hosts(written_config, 3)
Пример #19
0
    def test_fresh_install_with_config(self, load_facts_mock,
                                       run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS, 0)
        run_playbook_mock.return_value = 0

        config_file = self.write_config(
            os.path.join(self.work_dir, 'ooinstall.conf'),
            SAMPLE_CONFIG % 'openshift-enterprise')
        cli_input = build_input(confirm_facts='y')
        self.cli_args.extend(["-c", config_file])
        self.cli_args.append("install")
        result = self.runner.invoke(cli.cli, self.cli_args, input=cli_input)
        self.assert_result(result, 0)

        self._verify_load_facts(load_facts_mock)
        self._verify_run_playbook(run_playbook_mock, 3, 3)

        written_config = read_yaml(config_file)
        self._verify_config_hosts(written_config, 3)
    def test_variant_version_preserved(self, load_facts_mock, run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS, 0)
        run_playbook_mock.return_value = 0

        config = SAMPLE_CONFIG % "openshift-enterprise"
        config = "%s\n%s" % (config, "variant_version: 3.0")
        config_file = self.write_config(os.path.join(self.work_dir, "ooinstall.conf"), config)

        self.cli_args.extend(["-c", config_file, "install"])
        result = self.runner.invoke(cli.cli, self.cli_args)
        self.assert_result(result, 0)

        written_config = read_yaml(config_file)

        self.assertEquals("openshift-enterprise", written_config["variant"])
        # Make sure our older version was preserved:
        # and written to disk:
        self.assertEquals("3.0", written_config["variant_version"])

        inventory = ConfigParser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, "hosts"))
        self.assertEquals("enterprise", inventory.get("OSEv3:vars", "deployment_type"))
    def test_ha_dedicated_node(self, load_facts_mock, run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS_QUICKHA, 0)
        run_playbook_mock.return_value = 0

        cli_input = build_input(hosts=[
            ('10.0.0.1', True, False),
            ('10.0.0.2', True, False),
            ('10.0.0.3', True, False),
            ('10.0.0.4', False, False)],
                                      ssh_user='******',
                                      variant_num=1,
                                      confirm_facts='y',
                                      master_lb=('10.0.0.5', False),
                                      storage='10.1.0.1',)
        self.cli_args.append("install")
        result = self.runner.invoke(cli.cli, self.cli_args,
            input=cli_input)
        self.assert_result(result, 0)

        self._verify_load_facts(load_facts_mock)
        self._verify_run_playbook(run_playbook_mock, 6, 6)

        written_config = read_yaml(self.config_file)
        self._verify_config_hosts(written_config, 6)

        inventory = ConfigParser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, '.ansible/hosts'))
        self.assertEquals('False',
            inventory.get('nodes', '10.0.0.1  openshift_schedulable'))
        self.assertEquals('False',
            inventory.get('nodes', '10.0.0.2  openshift_schedulable'))
        self.assertEquals('False',
            inventory.get('nodes', '10.0.0.3  openshift_schedulable'))
        self.assertEquals(None,
            inventory.get('nodes', '10.0.0.4'))

        self.assertTrue(inventory.has_section('etcd'))
        self.assertEquals(3, len(inventory.items('etcd')))
    def test_variant_version_latest_assumed(self, load_facts_mock, run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS, 0)
        run_playbook_mock.return_value = 0

        config_file = self.write_config(
            os.path.join(self.work_dir, "ooinstall.conf"), SAMPLE_CONFIG % "openshift-enterprise"
        )

        self.cli_args.extend(["-c", config_file, "install"])
        result = self.runner.invoke(cli.cli, self.cli_args)
        self.assert_result(result, 0)

        written_config = read_yaml(config_file)

        self.assertEquals("openshift-enterprise", written_config["variant"])
        # We didn't specify a version so the latest should have been assumed,
        # and written to disk:
        self.assertEquals("3.2", written_config["variant_version"])

        # Make sure the correct value was passed to ansible:
        inventory = ConfigParser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, "hosts"))
        self.assertEquals("openshift-enterprise", inventory.get("OSEv3:vars", "deployment_type"))
    def test_ha_dedicated_node(self, load_facts_mock, run_playbook_mock):
        load_facts_mock.return_value = (MOCK_FACTS_QUICKHA, 0)
        run_playbook_mock.return_value = 0

        cli_input = build_input(
            hosts=[
                ("10.0.0.1", True, False),
                ("10.0.0.2", True, False),
                ("10.0.0.3", True, False),
                ("10.0.0.4", False, False),
            ],
            ssh_user="******",
            variant_num=1,
            confirm_facts="y",
            master_lb=("10.0.0.5", False),
            storage="10.1.0.1",
        )
        self.cli_args.append("install")
        result = self.runner.invoke(cli.cli, self.cli_args, input=cli_input)
        self.assert_result(result, 0)

        self._verify_load_facts(load_facts_mock)
        self._verify_run_playbook(run_playbook_mock, 6, 6)

        written_config = read_yaml(self.config_file)
        self._verify_config_hosts(written_config, 6)

        inventory = ConfigParser.ConfigParser(allow_no_value=True)
        inventory.read(os.path.join(self.work_dir, "hosts"))
        self.assert_inventory_host_var(inventory, "nodes", "10.0.0.1", "openshift_schedulable=False")
        self.assert_inventory_host_var(inventory, "nodes", "10.0.0.2", "openshift_schedulable=False")
        self.assert_inventory_host_var(inventory, "nodes", "10.0.0.3", "openshift_schedulable=False")
        self.assert_inventory_host_var_unset(inventory, "nodes", "10.0.0.4", "openshift_schedulable")

        self.assertTrue(inventory.has_section("etcd"))
        self.assertEquals(3, len(inventory.items("etcd")))