Use required_if in kolla_docker.py

Replace the original code with required_if when Ansible 2.0 lands

Change-Id: Ib2e19794bbe804470a880253d5870254041358c8
This commit is contained in:
zhuzeyu 2017-01-22 17:52:10 +08:00
parent 0663cce822
commit 42e7b747e4
2 changed files with 30 additions and 23 deletions

View File

@ -712,13 +712,24 @@ def generate_module():
volumes=dict(required=False, type='list'), volumes=dict(required=False, type='list'),
volumes_from=dict(required=False, type='list') volumes_from=dict(required=False, type='list')
) )
required_together = [ required_if = [
['tls_cert', 'tls_key'] ['action', 'pull_image', ['image']],
['action', 'start_container', ['image', 'name']],
['action', 'compare_container', ['name']],
['action', 'compare_image', ['name']],
['action', 'create_volume', ['name']],
['action', 'get_container_env', ['name']],
['action', 'get_container_state', ['name']],
['action', 'recreate_or_restart_container', ['name']],
['action', 'remove_container', ['name']],
['action', 'remove_volume', ['name']],
['action', 'restart_container', ['name']],
['action', 'stop_container', ['name']]
] ]
module = AnsibleModule( module = AnsibleModule(
argument_spec=argument_spec, argument_spec=argument_spec,
required_together=required_together, required_if=required_if,
bypass_checks=True bypass_checks=False
) )
new_args = module.params.pop('common_options', dict()) new_args = module.params.pop('common_options', dict())
@ -740,21 +751,6 @@ def generate_module():
def main(): def main():
module = generate_module() module = generate_module()
# TODO(SamYaple): Replace with required_if when Ansible 2.0 lands
if (module.params.get('action') in ['pull_image', 'start_container']
and not module.params.get('image')):
module.fail_json(
msg="missing required arguments: image",
failed=True
)
# TODO(SamYaple): Replace with required_if when Ansible 2.0 lands
if (module.params.get('action') != 'pull_image'
and not module.params.get('name')):
module.fail_json(
msg="missing required arguments: name",
failed=True
)
try: try:
dw = DockerWorker(module) dw = DockerWorker(module)
# TODO(inc0): We keep it bool to have ansible deal with consistent # TODO(inc0): We keep it bool to have ansible deal with consistent

View File

@ -80,16 +80,27 @@ class ModuleArgsTest(base.BaseTestCase):
volumes=dict(required=False, type='list'), volumes=dict(required=False, type='list'),
volumes_from=dict(required=False, type='list') volumes_from=dict(required=False, type='list')
) )
required_together = [ required_if = [
['tls_cert', 'tls_key'] ['action', 'pull_image', ['image']],
['action', 'start_container', ['image', 'name']],
['action', 'compare_container', ['name']],
['action', 'compare_image', ['name']],
['action', 'create_volume', ['name']],
['action', 'get_container_env', ['name']],
['action', 'get_container_state', ['name']],
['action', 'recreate_or_restart_container', ['name']],
['action', 'remove_container', ['name']],
['action', 'remove_volume', ['name']],
['action', 'restart_container', ['name']],
['action', 'stop_container', ['name']]
] ]
kd.AnsibleModule = mock.MagicMock() kd.AnsibleModule = mock.MagicMock()
kd.generate_module() kd.generate_module()
kd.AnsibleModule.assert_called_with( kd.AnsibleModule.assert_called_with(
argument_spec=argument_spec, argument_spec=argument_spec,
required_together=required_together, required_if=required_if,
bypass_checks=True bypass_checks=False
) )
FAKE_DATA = { FAKE_DATA = {