Beispiel #1
0
 def test_run_all_the_args(self, mock_validate, mock_run):
     parser = argparse.ArgumentParser()
     lordoftheflies_ansible.add_args(parser)
     vault.add_args(parser)
     args = [
         "--lordoftheflies-config-path", "/path/to/config",
         "-ke", "ev_name1=ev_value1",
         "-ki", "/path/to/inventory",
         "-kl", "host1:host2",
         "-kt", "tag1,tag2",
     ]
     parsed_args = parser.parse_args(args)
     lordoftheflies_ansible.run(parsed_args, "command", "overcloud")
     expected_cmd = [
         ".", "/path/to/cwd/venvs/lordoftheflies-ansible/bin/activate", "&&",
         "lordoftheflies-ansible", "command",
         "--inventory", "/path/to/inventory",
         "--configdir", "/path/to/config",
         "--passwords", "/path/to/config/passwords.yml",
         "-e", "ev_name1=ev_value1",
         "--limit", "host1:host2",
         "--tags", "tag1,tag2",
     ]
     expected_cmd = " ".join(expected_cmd)
     mock_run.assert_called_once_with(expected_cmd, shell=True, quiet=False,
                                      env={})
Beispiel #2
0
 def test_run_func_args(self, mock_validate, mock_run):
     parser = argparse.ArgumentParser()
     lordoftheflies_ansible.add_args(parser)
     vault.add_args(parser)
     args = [
         "--lordoftheflies-extra-vars", "ev_name1=ev_value1",
         "--lordoftheflies-tags", "tag1,tag2",
     ]
     parsed_args = parser.parse_args(args)
     kwargs = {
         "extra_vars": {"ev_name2": "ev_value2"},
         "tags": "tag3,tag4",
         "verbose_level": 1,
         "extra_args": ["--arg1", "--arg2"],
     }
     lordoftheflies_ansible.run(parsed_args, "command", "overcloud", **kwargs)
     expected_cmd = [
         ".", "/path/to/cwd/venvs/lordoftheflies-ansible/bin/activate", "&&",
         "lordoftheflies-ansible", "command",
         "-v",
         "--inventory", "/etc/lordoftheflies/inventory/overcloud",
         "-e", "ev_name1=ev_value1",
         "-e", "ev_name2='ev_value2'",
         "--tags", "tag1,tag2,tag3,tag4",
         "--arg1", "--arg2",
     ]
     expected_cmd = " ".join(expected_cmd)
     mock_run.assert_called_once_with(expected_cmd, shell=True, quiet=False,
                                      env={})
Beispiel #3
0
 def test_update_environment_no_vault(self):
     parser = argparse.ArgumentParser()
     vault.add_args(parser)
     parsed_args = parser.parse_args([])
     env = {}
     vault.update_environment(parsed_args, env)
     self.assertEqual({}, env)
 def test_run_playbooks_failure(self, mock_validate, mock_vars, mock_run):
     parser = argparse.ArgumentParser()
     ansible.add_args(parser)
     vault.add_args(parser)
     parsed_args = parser.parse_args([])
     mock_run.side_effect = subprocess.CalledProcessError(1, "dummy")
     self.assertRaises(SystemExit, ansible.run_playbooks, parsed_args,
                       ["command"])
Beispiel #5
0
 def test_update_environment_prompt(self, mock_ask):
     mock_ask.return_value = "test-pass"
     parser = argparse.ArgumentParser()
     vault.add_args(parser)
     parsed_args = parser.parse_args(["--ask-vault-pass"])
     env = {}
     vault.update_environment(parsed_args, env)
     self.assertEqual({"JAVA_ROLE_VAULT_PASSWORD": "******"}, env)
     mock_ask.assert_called_once_with()
Beispiel #6
0
 def test_run_failure(self, mock_validate, mock_run):
     parser = argparse.ArgumentParser()
     lordoftheflies_ansible.add_args(parser)
     vault.add_args(parser)
     parsed_args = parser.parse_args([])
     mock_run.side_effect = subprocess.CalledProcessError(1, "dummy")
     self.assertRaises(SystemExit,
                       lordoftheflies_ansible.run, parsed_args, "command",
                       "overcloud")
Beispiel #7
0
 def test_update_environment_file(self, mock_read):
     mock_read.return_value = "test-pass"
     parser = argparse.ArgumentParser()
     vault.add_args(parser)
     args = ["--vault-password-file", "/path/to/file"]
     parsed_args = parser.parse_args(args)
     env = {}
     vault.update_environment(parsed_args, env)
     self.assertEqual({"JAVA_ROLE_VAULT_PASSWORD": "******"}, env)
     mock_read.assert_called_once_with("/path/to/file")
 def test_run_playbooks_all_the_long_args(self, mock_validate, mock_vars,
                                          mock_run):
     mock_vars.return_value = [
         "/path/to/config/vars-file1.yml", "/path/to/config/vars-file2.yaml"
     ]
     parser = argparse.ArgumentParser()
     ansible.add_args(parser)
     vault.add_args(parser)
     args = [
         "--ask-vault-pass",
         "--become",
         "--check",
         "--config-path",
         "/path/to/config",
         "--extra-vars",
         "ev_name1=ev_value1",
         "--inventory",
         "/path/to/inventory",
         "--limit",
         "group1:host1",
         "--skip-tags",
         "tag3,tag4",
         "--tags",
         "tag1,tag2",
         "--list-tasks",
     ]
     parsed_args = parser.parse_args(args)
     ansible.run_playbooks(parsed_args, ["playbook1.yml", "playbook2.yml"])
     expected_cmd = [
         "ansible-playbook",
         "--list-tasks",
         "--ask-vault-pass",
         "--inventory",
         "/path/to/inventory",
         "-e",
         "@/path/to/config/vars-file1.yml",
         "-e",
         "@/path/to/config/vars-file2.yaml",
         "-e",
         "ev_name1=ev_value1",
         "--become",
         "--check",
         "--limit",
         "group1:host1",
         "--skip-tags",
         "tag3,tag4",
         "--tags",
         "tag1,tag2",
         "playbook1.yml",
         "playbook2.yml",
     ]
     mock_run.assert_called_once_with(expected_cmd, quiet=False)
     mock_vars.assert_called_once_with("/path/to/config")
 def test_run_playbooks_vault_ask_and_file(self, mock_validate, mock_vars,
                                           mock_run):
     mock_vars.return_value = []
     parser = argparse.ArgumentParser()
     ansible.add_args(parser)
     vault.add_args(parser)
     args = [
         "--ask-vault-pass",
         "--vault-password-file",
         "/path/to/vault/pw",
     ]
     self.assertRaises(SystemExit, parser.parse_args, args)
 def test_run(self, mock_validate, mock_run):
     parser = argparse.ArgumentParser()
     lordoftheflies_ansible.add_args(parser)
     vault.add_args(parser)
     parsed_args = parser.parse_args([])
     lordoftheflies_ansible.run(parsed_args, "command", "overcloud")
     expected_cmd = [
         ".", "/path/to/cwd/venvs/lordoftheflies-ansible/bin/activate", "&&",
         "lordoftheflies-ansible", "command",
         "--inventory", "/etc/lordoftheflies/inventory/overcloud",
     ]
     expected_cmd = " ".join(expected_cmd)
     mock_run.assert_called_once_with(expected_cmd, shell=True, quiet=False)
 def test_run_playbooks_func_args(self, mock_validate, mock_vars, mock_run):
     mock_vars.return_value = [
         "/etc/java_role/vars-file1.yml", "/etc/java_role/vars-file2.yaml"
     ]
     parser = argparse.ArgumentParser()
     ansible.add_args(parser)
     vault.add_args(parser)
     args = [
         "--extra-vars",
         "ev_name1=ev_value1",
         "--limit",
         "group1:host1",
         "--tags",
         "tag1,tag2",
     ]
     parsed_args = parser.parse_args(args)
     kwargs = {
         "extra_vars": {
             "ev_name2": "ev_value2"
         },
         "limit": "group2:host2",
         "tags": "tag3,tag4",
         "verbose_level": 0,
         "check": True,
     }
     ansible.run_playbooks(parsed_args, ["playbook1.yml", "playbook2.yml"],
                           **kwargs)
     expected_cmd = [
         "ansible-playbook",
         "--inventory",
         "/etc/java_role/inventory",
         "-e",
         "@/etc/java_role/vars-file1.yml",
         "-e",
         "@/etc/java_role/vars-file2.yaml",
         "-e",
         "ev_name1=ev_value1",
         "-e",
         "ev_name2=ev_value2",
         "--check",
         "--limit",
         "group1:host1:&group2:host2",
         "--tags",
         "tag1,tag2,tag3,tag4",
         "playbook1.yml",
         "playbook2.yml",
     ]
     mock_run.assert_called_once_with(expected_cmd, quiet=False)
     mock_vars.assert_called_once_with("/etc/java_role")
 def test_run_vault_password_helper(self, mock_vars, mock_run):
     mock_vars.return_value = []
     parser = argparse.ArgumentParser()
     mock_run.return_value = "/path/to/java_role-vault-password-helper"
     lordoftheflies_ansible.add_args(parser)
     vault.add_args(parser)
     mock_run.assert_called_once_with(
         ["which", "java_role-vault-password-helper"], check_output=True)
     mock_run.reset_mock()
     parsed_args = parser.parse_args([])
     lordoftheflies_ansible.run(parsed_args, "command", "overcloud")
     expected_cmd = [
         ".", "/path/to/cwd/venvs/lordoftheflies-ansible/bin/activate", "&&",
         "lordoftheflies-ansible", "command",
         "--key", "/path/to/java_role-vault-password-helper",
         "--inventory", "/etc/lordoftheflies/inventory/overcloud",
     ]
     expected_cmd = " ".join(expected_cmd)
     mock_run.assert_called_once_with(expected_cmd, shell=True, quiet=False)
Beispiel #13
0
 def test_run_vault_password_file(self, mock_update, mock_validate,
                                  mock_run):
     parser = argparse.ArgumentParser()
     lordoftheflies_ansible.add_args(parser)
     vault.add_args(parser)
     args = [
         "--vault-password-file", "/path/to/vault/pw",
     ]
     parsed_args = parser.parse_args(args)
     lordoftheflies_ansible.run(parsed_args, "command", "overcloud")
     expected_cmd = [
         ".", "/path/to/cwd/venvs/lordoftheflies-ansible/bin/activate", "&&",
         "lordoftheflies-ansible", "command",
         "--key", "/path/to/vault/pw",
         "--inventory", "/etc/lordoftheflies/inventory/overcloud",
     ]
     expected_cmd = " ".join(expected_cmd)
     mock_run.assert_called_once_with(expected_cmd, shell=True, quiet=False,
                                      env={})
     mock_update.assert_called_once_with(mock.ANY, {})
 def test_run_playbooks_vault_password_file(self, mock_validate, mock_vars,
                                            mock_run):
     mock_vars.return_value = []
     parser = argparse.ArgumentParser()
     ansible.add_args(parser)
     vault.add_args(parser)
     args = [
         "--vault-password-file",
         "/path/to/vault/pw",
     ]
     parsed_args = parser.parse_args(args)
     ansible.run_playbooks(parsed_args, ["playbook1.yml"])
     expected_cmd = [
         "ansible-playbook",
         "--vault-password-file",
         "/path/to/vault/pw",
         "--inventory",
         "/etc/java_role/inventory",
         "playbook1.yml",
     ]
     mock_run.assert_called_once_with(expected_cmd, quiet=False)
 def test_run_playbooks_vault_password_helper(self, mock_validate,
                                              mock_vars, mock_run):
     mock_vars.return_value = []
     parser = argparse.ArgumentParser()
     mock_run.return_value = "/path/to/java_role-vault-password-helper"
     ansible.add_args(parser)
     vault.add_args(parser)
     mock_run.assert_called_once_with(
         ["which", "java_role-vault-password-helper"], check_output=True)
     mock_run.reset_mock()
     parsed_args = parser.parse_args([])
     ansible.run_playbooks(parsed_args, ["playbook1.yml"])
     expected_cmd = [
         "ansible-playbook",
         "--vault-password-file",
         "/path/to/java_role-vault-password-helper",
         "--inventory",
         "/etc/java_role/inventory",
         "playbook1.yml",
     ]
     mock_run.assert_called_once_with(expected_cmd, quiet=False)
 def test_run_playbooks(self, mock_validate, mock_vars, mock_run):
     mock_vars.return_value = [
         "/etc/java_role/vars-file1.yml", "/etc/java_role/vars-file2.yaml"
     ]
     parser = argparse.ArgumentParser()
     ansible.add_args(parser)
     vault.add_args(parser)
     parsed_args = parser.parse_args([])
     ansible.run_playbooks(parsed_args, ["playbook1.yml", "playbook2.yml"])
     expected_cmd = [
         "ansible-playbook",
         "--inventory",
         "/etc/java_role/inventory",
         "-e",
         "@/etc/java_role/vars-file1.yml",
         "-e",
         "@/etc/java_role/vars-file2.yaml",
         "playbook1.yml",
         "playbook2.yml",
     ]
     mock_run.assert_called_once_with(expected_cmd, quiet=False)
     mock_vars.assert_called_once_with("/etc/java_role")
Beispiel #17
0
 def test_run_all_the_long_args(self, mock_ask, mock_validate, mock_run):
     parser = argparse.ArgumentParser()
     lordoftheflies_ansible.add_args(parser)
     vault.add_args(parser)
     mock_ask.return_value = "test-pass"
     args = [
         "--ask-vault-pass",
         "--lordoftheflies-config-path", "/path/to/config",
         "--lordoftheflies-extra-vars", "ev_name1=ev_value1",
         "--lordoftheflies-inventory", "/path/to/inventory",
         "--lordoftheflies-limit", "host1:host2",
         "--lordoftheflies-skip-tags", "tag3,tag4",
         "--lordoftheflies-tags", "tag1,tag2",
     ]
     parsed_args = parser.parse_args(args)
     mock_run.return_value = "/path/to/java_role-vault-password-helper"
     lordoftheflies_ansible.run(parsed_args, "command", "overcloud")
     expected_cmd = [
         ".", "/path/to/cwd/venvs/lordoftheflies-ansible/bin/activate", "&&",
         "lordoftheflies-ansible", "command",
         "--key", "/path/to/java_role-vault-password-helper",
         "--inventory", "/path/to/inventory",
         "--configdir", "/path/to/config",
         "--passwords", "/path/to/config/passwords.yml",
         "-e", "ev_name1=ev_value1",
         "--limit", "host1:host2",
         "--skip-tags", "tag3,tag4",
         "--tags", "tag1,tag2",
     ]
     expected_cmd = " ".join(expected_cmd)
     expected_env = {"JAVA_ROLE_VAULT_PASSWORD": "******"}
     expected_calls = [
         mock.call(["which", "java_role-vault-password-helper"],
                   check_output=True),
         mock.call(expected_cmd, shell=True, quiet=False, env=expected_env)
     ]
     self.assertEqual(expected_calls, mock_run.mock_calls)
Beispiel #18
0
 def test_validate_args_env(self):
     parser = argparse.ArgumentParser()
     vault.add_args(parser)
     parsed_args = parser.parse_args([])
     vault.validate_args(parsed_args)
Beispiel #19
0
 def test_validate_args_vault_password_file(self):
     parser = argparse.ArgumentParser()
     vault.add_args(parser)
     parsed_args = parser.parse_args(
         ["--vault-password-file", "/path/to/file"])
     self.assertRaises(SystemExit, vault.validate_args, parsed_args)
Beispiel #20
0
 def test_validate_args_ask_vault_pass(self):
     parser = argparse.ArgumentParser()
     vault.add_args(parser)
     parsed_args = parser.parse_args(["--ask-vault-pass"])
     self.assertRaises(SystemExit, vault.validate_args, parsed_args)