Pass kayobe CLI's verbose option through to ansible

This commit is contained in:
Mark Goddard 2017-04-03 13:12:40 +01:00
parent 65ed0da197
commit 60858d761b
5 changed files with 117 additions and 59 deletions

View File

@ -89,9 +89,11 @@ def _get_vars_files(config_path):
def build_args(parsed_args, playbooks, def build_args(parsed_args, playbooks,
extra_vars=None, limit=None, tags=None): extra_vars=None, limit=None, tags=None, verbose_level=None):
"""Build arguments required for running Ansible playbooks.""" """Build arguments required for running Ansible playbooks."""
cmd = ["ansible-playbook"] cmd = ["ansible-playbook"]
if verbose_level:
cmd += ["-" + "v" * verbose_level]
inventory = _get_inventory_path(parsed_args) inventory = _get_inventory_path(parsed_args)
cmd += ["--inventory", inventory] cmd += ["--inventory", inventory]
vars_files = _get_vars_files(parsed_args.config_path) vars_files = _get_vars_files(parsed_args.config_path)
@ -118,11 +120,13 @@ def build_args(parsed_args, playbooks,
def run_playbooks(parsed_args, playbooks, def run_playbooks(parsed_args, playbooks,
extra_vars=None, limit=None, tags=None, quiet=False): extra_vars=None, limit=None, tags=None, quiet=False,
verbose_level=None):
"""Run a Kayobe Ansible playbook.""" """Run a Kayobe Ansible playbook."""
_validate_args(parsed_args, playbooks) _validate_args(parsed_args, playbooks)
cmd = build_args(parsed_args, playbooks, cmd = build_args(parsed_args, playbooks,
extra_vars=extra_vars, limit=limit, tags=tags) extra_vars=extra_vars, limit=limit, tags=tags,
verbose_level=verbose_level)
try: try:
utils.run_command(cmd, quiet=quiet) utils.run_command(cmd, quiet=quiet)
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
@ -137,7 +141,7 @@ def run_playbook(parsed_args, playbook, *args, **kwargs):
def config_dump(parsed_args, host=None, hosts=None, var_name=None, def config_dump(parsed_args, host=None, hosts=None, var_name=None,
facts=None, extra_vars=None): facts=None, extra_vars=None, verbose_level=None):
dump_dir = tempfile.mkdtemp() dump_dir = tempfile.mkdtemp()
try: try:
if not extra_vars: if not extra_vars:
@ -150,7 +154,8 @@ def config_dump(parsed_args, host=None, hosts=None, var_name=None,
if facts is not None: if facts is not None:
extra_vars["dump_facts"] = facts extra_vars["dump_facts"] = facts
run_playbook(parsed_args, "ansible/dump-config.yml", run_playbook(parsed_args, "ansible/dump-config.yml",
extra_vars=extra_vars, quiet=True) extra_vars=extra_vars, quiet=True,
verbose_level=verbose_level)
hostvars = {} hostvars = {}
for path in os.listdir(dump_dir): for path in os.listdir(dump_dir):
LOG.debug("Found dump file %s", path) LOG.debug("Found dump file %s", path)

View File

@ -26,6 +26,29 @@ class KayobeAnsibleMixin(object):
def add_kayobe_ansible_args(self, group): def add_kayobe_ansible_args(self, group):
ansible.add_args(group) ansible.add_args(group)
def _get_verbosity_args(self):
"""Add quietness and verbosity level arguments."""
# Cliff's default verbosity level is 1, 0 means quiet.
verbosity_args = {}
if self.app.options.verbose_level:
ansible_verbose_level = self.app.options.verbose_level - 1
verbosity_args["verbose_level"] = ansible_verbose_level
else:
verbosity_args["quiet"] = True
return verbosity_args
def run_kayobe_playbooks(self, *args, **kwargs):
kwargs.update(self._get_verbosity_args())
ansible.run_playbooks(*args, **kwargs)
def run_kayobe_playbook(self, *args, **kwargs):
kwargs.update(self._get_verbosity_args())
ansible.run_playbook(*args, **kwargs)
def run_kayobe_config_dump(self, *args, **kwargs):
kwargs.update(self._get_verbosity_args())
ansible.config_dump(*args, **kwargs)
class KollaAnsibleMixin(object): class KollaAnsibleMixin(object):
"""Mixin class for commands running Kolla Ansible.""" """Mixin class for commands running Kolla Ansible."""
@ -39,6 +62,29 @@ class KollaAnsibleMixin(object):
def add_kolla_ansible_args(self, group): def add_kolla_ansible_args(self, group):
kolla_ansible.add_args(group) kolla_ansible.add_args(group)
def _get_verbosity_args(self):
"""Add quietness and verbosity level arguments."""
# Cliff's default verbosity level is 1, 0 means quiet.
verbosity_args = {}
if self.app.options.verbose_level:
ansible_verbose_level = self.app.options.verbose_level - 1
verbosity_args["verbose_level"] = ansible_verbose_level
else:
verbosity_args["quiet"] = True
return verbosity_args
def run_kolla_ansible(self, *args, **kwargs):
kwargs.update(self._get_verbosity_args())
kolla_ansible.run(*args, **kwargs)
def run_kolla_ansible_overcloud(self, *args, **kwargs):
kwargs.update(self._get_verbosity_args())
kolla_ansible.run_overcloud(*args, **kwargs)
def run_kolla_ansible_seed(self, *args, **kwargs):
kwargs.update(self._get_verbosity_args())
kolla_ansible.run_seed(*args, **kwargs)
class ControlHostBootstrap(KayobeAnsibleMixin, Command): class ControlHostBootstrap(KayobeAnsibleMixin, Command):
"""Bootstrap the Kayobe control environment.""" """Bootstrap the Kayobe control environment."""
@ -60,7 +106,7 @@ class ControlHostBootstrap(KayobeAnsibleMixin, Command):
utils.yum_install(["ansible"]) utils.yum_install(["ansible"])
utils.galaxy_install("ansible/requirements.yml", "ansible/roles") utils.galaxy_install("ansible/requirements.yml", "ansible/roles")
playbooks = _build_playbook_list("bootstrap", "kolla") playbooks = _build_playbook_list("bootstrap", "kolla")
ansible.run_playbooks(parsed_args, playbooks) self.run_kayobe_playbooks(parsed_args, playbooks)
class ConfigurationDump(KayobeAnsibleMixin, Command): class ConfigurationDump(KayobeAnsibleMixin, Command):
@ -82,11 +128,9 @@ class ConfigurationDump(KayobeAnsibleMixin, Command):
def take_action(self, parsed_args): def take_action(self, parsed_args):
self.app.LOG.debug("Dumping Ansible configuration") self.app.LOG.debug("Dumping Ansible configuration")
hostvars = ansible.config_dump(parsed_args, hostvars = self.run_kayobe_config_dump(
host=parsed_args.host, parsed_args, host=parsed_args.host, hosts=parsed_args.hosts,
hosts=parsed_args.hosts, facts=parsed_args.dump_facts, var_name=parsed_args.var_name)
facts=parsed_args.dump_facts,
var_name=parsed_args.var_name)
try: try:
json.dump(hostvars, sys.stdout, sort_keys=True, indent=4) json.dump(hostvars, sys.stdout, sort_keys=True, indent=4)
except TypeError as e: except TypeError as e:
@ -105,7 +149,7 @@ class PlaybookRun(KayobeAnsibleMixin, Command):
def take_action(self, parsed_args): def take_action(self, parsed_args):
self.app.LOG.debug("Running Kayobe playbook(s)") self.app.LOG.debug("Running Kayobe playbook(s)")
ansible.run_playbooks(parsed_args, parsed_args.playbook) self.run_kayobe_playbooks(parsed_args, parsed_args.playbook)
class KollaAnsibleRun(KollaAnsibleMixin, Command): class KollaAnsibleRun(KollaAnsibleMixin, Command):
@ -123,8 +167,8 @@ class KollaAnsibleRun(KollaAnsibleMixin, Command):
def take_action(self, parsed_args): def take_action(self, parsed_args):
self.app.LOG.debug("Running Kolla Ansible command") self.app.LOG.debug("Running Kolla Ansible command")
kolla_ansible.run(parsed_args, parsed_args.command, self.run_kolla_ansible(parsed_args, parsed_args.command,
parsed_args.kolla_inventory_filename) parsed_args.kolla_inventory_filename)
class PhysicalNetworkConfigure(KayobeAnsibleMixin, Command): class PhysicalNetworkConfigure(KayobeAnsibleMixin, Command):
@ -145,8 +189,9 @@ class PhysicalNetworkConfigure(KayobeAnsibleMixin, Command):
extra_vars = {} extra_vars = {}
if parsed_args.enable_discovery: if parsed_args.enable_discovery:
extra_vars["physical_network_enable_discovery"] = True extra_vars["physical_network_enable_discovery"] = True
ansible.run_playbook(parsed_args, "ansible/physical-network.yml", self.run_kayobe_playbook(parsed_args, "ansible/physical-network.yml",
limit=parsed_args.group, extra_vars=extra_vars) limit=parsed_args.group,
extra_vars=extra_vars)
class SeedVMProvision(KollaAnsibleMixin, KayobeAnsibleMixin, Command): class SeedVMProvision(KollaAnsibleMixin, KayobeAnsibleMixin, Command):
@ -154,12 +199,12 @@ class SeedVMProvision(KollaAnsibleMixin, KayobeAnsibleMixin, Command):
def take_action(self, parsed_args): def take_action(self, parsed_args):
self.app.LOG.debug("Provisioning seed VM") self.app.LOG.debug("Provisioning seed VM")
ansible.run_playbook(parsed_args, "ansible/ip-allocation.yml", self.run_kayobe_playbook(parsed_args, "ansible/ip-allocation.yml",
limit="seed") limit="seed")
ansible.run_playbook(parsed_args, "ansible/seed-vm.yml") self.run_kayobe_playbook(parsed_args, "ansible/seed-vm.yml")
# Now populate the Kolla Ansible inventory. # Now populate the Kolla Ansible inventory.
ansible.run_playbook(parsed_args, "ansible/kolla-ansible.yml", self.run_kayobe_playbook(parsed_args, "ansible/kolla-ansible.yml",
tags="config") tags="config")
class SeedHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, Command): class SeedHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, Command):
@ -176,8 +221,8 @@ class SeedHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, Command):
def take_action(self, parsed_args): def take_action(self, parsed_args):
self.app.LOG.debug("Configuring seed host OS") self.app.LOG.debug("Configuring seed host OS")
ansible_user = ansible.config_dump(parsed_args, host="seed", ansible_user = self.run_kayobe_config_dump(
var_name="kayobe_ansible_user") parsed_args, host="seed", var_name="kayobe_ansible_user")
playbooks = _build_playbook_list( playbooks = _build_playbook_list(
"ip-allocation", "ssh-known-host", "kayobe-ansible-user") "ip-allocation", "ssh-known-host", "kayobe-ansible-user")
if parsed_args.wipe_disks: if parsed_args.wipe_disks:
@ -185,11 +230,11 @@ class SeedHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, Command):
playbooks += _build_playbook_list( playbooks += _build_playbook_list(
"dev-tools", "disable-selinux", "network", "ip-routing", "snat", "dev-tools", "disable-selinux", "network", "ip-routing", "snat",
"ntp", "lvm") "ntp", "lvm")
ansible.run_playbooks(parsed_args, playbooks, limit="seed") self.run_kayobe_playbooks(parsed_args, playbooks, limit="seed")
kolla_ansible.run_seed(parsed_args, "bootstrap-servers", self.run_kolla_ansible_seed(parsed_args, "bootstrap-servers",
extra_vars={"ansible_user": ansible_user}) extra_vars={"ansible_user": ansible_user})
playbooks = _build_playbook_list("kolla-host", "docker") playbooks = _build_playbook_list("kolla-host", "docker")
ansible.run_playbooks(parsed_args, playbooks, limit="seed") self.run_kayobe_playbooks(parsed_args, playbooks, limit="seed")
class SeedServiceDeploy(KollaAnsibleMixin, KayobeAnsibleMixin, Command): class SeedServiceDeploy(KollaAnsibleMixin, KayobeAnsibleMixin, Command):
@ -197,11 +242,11 @@ class SeedServiceDeploy(KollaAnsibleMixin, KayobeAnsibleMixin, Command):
def take_action(self, parsed_args): def take_action(self, parsed_args):
self.app.LOG.debug("Deploying seed services") self.app.LOG.debug("Deploying seed services")
ansible.run_playbook(parsed_args, "ansible/kolla-bifrost.yml") self.run_kayobe_playbook(parsed_args, "ansible/kolla-bifrost.yml")
kolla_ansible.run_seed(parsed_args, "deploy-bifrost") self.run_kolla_ansible_seed(parsed_args, "deploy-bifrost")
playbooks = _build_playbook_list( playbooks = _build_playbook_list(
"seed-introspection-rules", "dell-switch-bmp") "seed-introspection-rules", "dell-switch-bmp")
ansible.run_playbooks(parsed_args, playbooks) self.run_kayobe_playbooks(parsed_args, playbooks)
class SeedContainerImageBuild(KayobeAnsibleMixin, Command): class SeedContainerImageBuild(KayobeAnsibleMixin, Command):
@ -227,8 +272,8 @@ class SeedContainerImageBuild(KayobeAnsibleMixin, Command):
if parsed_args.regex: if parsed_args.regex:
regexes = " ".join(parsed_args.regex) regexes = " ".join(parsed_args.regex)
extra_vars["container_image_regexes"] = regexes extra_vars["container_image_regexes"] = regexes
ansible.run_playbooks(parsed_args, playbooks, limit="seed", self.run_kayobe_playbooks(parsed_args, playbooks, limit="seed",
extra_vars=extra_vars) extra_vars=extra_vars)
class OvercloudInventoryDiscover(KayobeAnsibleMixin, Command): class OvercloudInventoryDiscover(KayobeAnsibleMixin, Command):
@ -239,12 +284,13 @@ class OvercloudInventoryDiscover(KayobeAnsibleMixin, Command):
# Run the inventory discovery playbook separately, else the discovered # Run the inventory discovery playbook separately, else the discovered
# hosts will not be present in the following playbooks in which they # hosts will not be present in the following playbooks in which they
# are used to populate other inventories. # are used to populate other inventories.
ansible.run_playbook(parsed_args, self.run_kayobe_playbook(parsed_args,
"ansible/overcloud-inventory-discover.yml") "ansible/overcloud-inventory-discover.yml")
# Now populate the Kolla Ansible and Bifrost inventories. # Now populate the Kolla Ansible and Bifrost inventories.
ansible.run_playbook(parsed_args, "ansible/kolla-bifrost-hostvars.yml") self.run_kayobe_playbook(parsed_args,
ansible.run_playbook(parsed_args, "ansible/kolla-ansible.yml", "ansible/kolla-bifrost-hostvars.yml")
tags="config") self.run_kayobe_playbook(parsed_args, "ansible/kolla-ansible.yml",
tags="config")
class OvercloudProvision(KayobeAnsibleMixin, Command): class OvercloudProvision(KayobeAnsibleMixin, Command):
@ -264,8 +310,8 @@ class OvercloudProvision(KayobeAnsibleMixin, Command):
def _deploy_servers(self, parsed_args): def _deploy_servers(self, parsed_args):
self.app.LOG.debug("Deploying overcloud servers via Bifrost") self.app.LOG.debug("Deploying overcloud servers via Bifrost")
ansible.run_playbook(parsed_args, self.run_kayobe_playbook(parsed_args,
"ansible/overcloud-provision.yml") "ansible/overcloud-provision.yml")
class OvercloudDeprovision(KayobeAnsibleMixin, Command): class OvercloudDeprovision(KayobeAnsibleMixin, Command):
@ -273,8 +319,8 @@ class OvercloudDeprovision(KayobeAnsibleMixin, Command):
def take_action(self, parsed_args): def take_action(self, parsed_args):
self.app.LOG.debug("Deprovisioning overcloud") self.app.LOG.debug("Deprovisioning overcloud")
ansible.run_playbook(parsed_args, self.run_kayobe_playbook(parsed_args,
"ansible/overcloud-deprovision.yml") "ansible/overcloud-deprovision.yml")
class OvercloudHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, Command): class OvercloudHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, Command):
@ -291,19 +337,20 @@ class OvercloudHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, Command):
def take_action(self, parsed_args): def take_action(self, parsed_args):
self.app.LOG.debug("Configuring overcloud host OS") self.app.LOG.debug("Configuring overcloud host OS")
ansible_user = ansible.config_dump(parsed_args, host="controllers[0]", ansible_user = self.run_kayobe_config_dump(
var_name="kayobe_ansible_user") parsed_args, host="controllers[0]", var_name="kayobe_ansible_user")
playbooks = _build_playbook_list( playbooks = _build_playbook_list(
"ip-allocation", "ssh-known-host", "kayobe-ansible-user") "ip-allocation", "ssh-known-host", "kayobe-ansible-user")
if parsed_args.wipe_disks: if parsed_args.wipe_disks:
playbooks += _build_playbook_list("wipe-disks") playbooks += _build_playbook_list("wipe-disks")
playbooks += _build_playbook_list( playbooks += _build_playbook_list(
"dev-tools", "disable-selinux", "network", "ntp", "lvm") "dev-tools", "disable-selinux", "network", "ntp", "lvm")
ansible.run_playbooks(parsed_args, playbooks, limit="controllers") self.run_kayobe_playbooks(parsed_args, playbooks, limit="controllers")
kolla_ansible.run_overcloud(parsed_args, "bootstrap-servers", extra_vars = {"ansible_user": ansible_user}
extra_vars={"ansible_user": ansible_user}) self.run_kolla_ansible_overcloud(parsed_args, "bootstrap-servers",
extra_vars=extra_vars)
playbooks = _build_playbook_list("kolla-host", "docker") playbooks = _build_playbook_list("kolla-host", "docker")
ansible.run_playbooks(parsed_args, playbooks, limit="controllers") self.run_kayobe_playbooks(parsed_args, playbooks, limit="controllers")
class OvercloudServiceDeploy(KollaAnsibleMixin, KayobeAnsibleMixin, Command): class OvercloudServiceDeploy(KollaAnsibleMixin, KayobeAnsibleMixin, Command):
@ -312,13 +359,13 @@ class OvercloudServiceDeploy(KollaAnsibleMixin, KayobeAnsibleMixin, Command):
def take_action(self, parsed_args): def take_action(self, parsed_args):
self.app.LOG.debug("Deploying overcloud services") self.app.LOG.debug("Deploying overcloud services")
playbooks = _build_playbook_list("kolla-openstack", "swift-setup") playbooks = _build_playbook_list("kolla-openstack", "swift-setup")
ansible.run_playbooks(parsed_args, playbooks) self.run_kayobe_playbooks(parsed_args, playbooks)
for command in ["prechecks", "deploy"]: for command in ["prechecks", "deploy"]:
kolla_ansible.run_overcloud(parsed_args, command) self.run_kolla_ansible_overcloud(parsed_args, command)
# FIXME: Fudge to work around incorrect configuration path. # FIXME: Fudge to work around incorrect configuration path.
extra_vars = {"node_config_directory": parsed_args.kolla_config_path} extra_vars = {"node_config_directory": parsed_args.kolla_config_path}
kolla_ansible.run_overcloud(parsed_args, "post-deploy", self.run_kolla_ansible_overcloud(parsed_args, "post-deploy",
extra_vars=extra_vars) extra_vars=extra_vars)
class OvercloudContainerImagePull(KollaAnsibleMixin, Command): class OvercloudContainerImagePull(KollaAnsibleMixin, Command):
@ -326,7 +373,7 @@ class OvercloudContainerImagePull(KollaAnsibleMixin, Command):
def take_action(self, parsed_args): def take_action(self, parsed_args):
self.app.LOG.debug("Pulling overcloud container images") self.app.LOG.debug("Pulling overcloud container images")
kolla_ansible.run_overcloud(parsed_args, "pull") self.run_kolla_ansible_overcloud(parsed_args, "pull")
class OvercloudContainerImageBuild(KayobeAnsibleMixin, Command): class OvercloudContainerImageBuild(KayobeAnsibleMixin, Command):
@ -352,8 +399,8 @@ class OvercloudContainerImageBuild(KayobeAnsibleMixin, Command):
if parsed_args.regex: if parsed_args.regex:
regexes = " ".join(parsed_args.regex) regexes = " ".join(parsed_args.regex)
extra_vars["container_image_regexes"] = regexes extra_vars["container_image_regexes"] = regexes
ansible.run_playbooks(parsed_args, playbooks, limit="controllers", self.run_kayobe_playbooks(parsed_args, playbooks, limit="controllers",
extra_vars=extra_vars) extra_vars=extra_vars)
class OvercloudPostConfigure(KayobeAnsibleMixin, Command): class OvercloudPostConfigure(KayobeAnsibleMixin, Command):
@ -365,4 +412,4 @@ class OvercloudPostConfigure(KayobeAnsibleMixin, Command):
"ipa-images", "overcloud-introspection-rules", "ipa-images", "overcloud-introspection-rules",
"overcloud-introspection-rules-dell-lldp-workaround", "overcloud-introspection-rules-dell-lldp-workaround",
"provision-net") "provision-net")
ansible.run_playbooks(parsed_args, playbooks) self.run_kayobe_playbooks(parsed_args, playbooks)

View File

@ -75,11 +75,13 @@ def _validate_args(parsed_args, inventory_filename):
def build_args(parsed_args, command, inventory_filename, extra_vars=None, def build_args(parsed_args, command, inventory_filename, extra_vars=None,
tags=None): tags=None, verbose_level=None):
"""Build arguments required for running Kolla Ansible.""" """Build arguments required for running Kolla Ansible."""
venv_activate = os.path.join(parsed_args.kolla_venv, "bin", "activate") venv_activate = os.path.join(parsed_args.kolla_venv, "bin", "activate")
cmd = ["source", venv_activate, "&&"] cmd = ["source", venv_activate, "&&"]
cmd += ["kolla-ansible", command] cmd += ["kolla-ansible", command]
if verbose_level:
cmd += ["-" + "v" * verbose_level]
inventory = _get_inventory_path(parsed_args, inventory_filename) inventory = _get_inventory_path(parsed_args, inventory_filename)
cmd += ["--inventory", inventory] cmd += ["--inventory", inventory]
if parsed_args.kolla_config_path != DEFAULT_CONFIG_PATH: if parsed_args.kolla_config_path != DEFAULT_CONFIG_PATH:
@ -99,12 +101,13 @@ def build_args(parsed_args, command, inventory_filename, extra_vars=None,
def run(parsed_args, command, inventory_filename, extra_vars=None, def run(parsed_args, command, inventory_filename, extra_vars=None,
tags=None, quiet=False): tags=None, quiet=False, verbose_level=None):
"""Run a Kolla Ansible command.""" """Run a Kolla Ansible command."""
_validate_args(parsed_args, inventory_filename) _validate_args(parsed_args, inventory_filename)
cmd = build_args(parsed_args, command, cmd = build_args(parsed_args, command,
inventory_filename=inventory_filename, inventory_filename=inventory_filename,
extra_vars=extra_vars, tags=tags) extra_vars=extra_vars, tags=tags,
verbose_level=verbose_level)
try: try:
utils.run_command(" ".join(cmd), quiet=quiet, shell=True) utils.run_command(" ".join(cmd), quiet=quiet, shell=True)
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:

View File

@ -124,6 +124,7 @@ class TestCase(unittest.TestCase):
"extra_vars": {"ev_name2": "ev_value2"}, "extra_vars": {"ev_name2": "ev_value2"},
"limit": "group2:host2", "limit": "group2:host2",
"tags": "tag3,tag4", "tags": "tag3,tag4",
"verbose_level": 0,
} }
ansible.run_playbooks(parsed_args, ["playbook1.yml", "playbook2.yml"], ansible.run_playbooks(parsed_args, ["playbook1.yml", "playbook2.yml"],
**kwargs) **kwargs)
@ -179,7 +180,7 @@ class TestCase(unittest.TestCase):
extra_vars={ extra_vars={
"dump_path": dump_dir, "dump_path": dump_dir,
}, },
quiet=True) quiet=True, verbose_level=None)
mock_rmtree.assert_called_once_with(dump_dir) mock_rmtree.assert_called_once_with(dump_dir)
mock_listdir.assert_called_once_with(dump_dir) mock_listdir.assert_called_once_with(dump_dir)
mock_read.assert_has_calls([ mock_read.assert_has_calls([

View File

@ -88,11 +88,13 @@ class TestCase(unittest.TestCase):
kwargs = { kwargs = {
"extra_vars": {"ev_name2": "ev_value2"}, "extra_vars": {"ev_name2": "ev_value2"},
"tags": "tag3,tag4", "tags": "tag3,tag4",
"verbose_level": 1
} }
kolla_ansible.run(parsed_args, "command", "overcloud", **kwargs) kolla_ansible.run(parsed_args, "command", "overcloud", **kwargs)
expected_cmd = [ expected_cmd = [
"source", "ansible/kolla-venv/bin/activate", "&&", "source", "ansible/kolla-venv/bin/activate", "&&",
"kolla-ansible", "command", "kolla-ansible", "command",
"-v",
"--inventory", "/etc/kolla/inventory/overcloud", "--inventory", "/etc/kolla/inventory/overcloud",
"-e", "ev_name1=ev_value1", "-e", "ev_name1=ev_value1",
"-e", "ev_name2=ev_value2", "-e", "ev_name2=ev_value2",