From ca5e5cfebc1ad1a7e54ba48c6caccb3b308f273c Mon Sep 17 00:00:00 2001 From: Rene Moser Date: Fri, 15 Nov 2013 13:38:32 +0100 Subject: [PATCH 1/5] host: fix changed is not available on fail --- library/system/host | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/library/system/host b/library/system/host index 0ca1de56222..c968360eb62 100644 --- a/library/system/host +++ b/library/system/host @@ -167,13 +167,13 @@ def main(): result['state'] = host.state result['changed'] = False - err = host.validate_has_hostname_on_present() - if err: - module.fail_json(msg=err) + result['msg'] = host.validate_has_hostname_on_present() + if result['msg']: + module.fail_json(**result) - err = host.validate_has_ip_or_hostname_on_absent() - if err: - module.fail_json(msg=err) + result['msg'] = host.validate_has_ip_or_hostname_on_absent() + if result['msg']: + module.fail_json(**result) host.proceed_hosts_entries() if host.state == 'present': From a61f46f4f036b0b41f7b20dd55db62893914a18a Mon Sep 17 00:00:00 2001 From: Rene Moser Date: Fri, 15 Nov 2013 13:40:51 +0100 Subject: [PATCH 2/5] host: skip lines beginning with new line --- library/system/host | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/system/host b/library/system/host index c968360eb62..f0daaac861d 100644 --- a/library/system/host +++ b/library/system/host @@ -100,7 +100,7 @@ class Host(object): f.close() for lineno, line in enumerate(self._hostsfile_lines): - if line.startswith("#"): + if line.startswith("#") or line.startswith("\n"): continue ip = line.split()[0:1] From 6da2d55007b38b6deb270fec86736a384ba5a8a2 Mon Sep 17 00:00:00 2001 From: Rene Moser Date: Fri, 15 Nov 2013 13:51:18 +0100 Subject: [PATCH 3/5] host: removed unused self_has_aliases --- library/system/host | 3 --- 1 file changed, 3 deletions(-) diff --git a/library/system/host b/library/system/host index f0daaac861d..db37d1da786 100644 --- a/library/system/host +++ b/library/system/host @@ -75,7 +75,6 @@ class Host(object): self._ip_matches = False self._hostname_matches = False self._aliases_matches = False - self._has_aliases = False self._found_on_line = -1 def validate_has_hostname_on_present(self): @@ -117,8 +116,6 @@ class Host(object): # only look at aliases if we found hostname or ip if self._hostname_matches or self._ip_matches: - if aliases: - self._has_aliases = True if self.aliases and self.aliases == aliases: self._aliases_matches = True break From 0c70e898cc1f3864f8ba3b8a2f91ae19f06e3ab4 Mon Sep 17 00:00:00 2001 From: Rene Moser Date: Fri, 15 Nov 2013 14:00:04 +0100 Subject: [PATCH 4/5] host: fix bug, alias was not removed --- library/system/host | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/library/system/host b/library/system/host index db37d1da786..3720ccc1017 100644 --- a/library/system/host +++ b/library/system/host @@ -116,14 +116,12 @@ class Host(object): # only look at aliases if we found hostname or ip if self._hostname_matches or self._ip_matches: - if self.aliases and self.aliases == aliases: + if self.aliases == aliases: self._aliases_matches = True break def full_entry_exists(self): - if self.aliases and not self._aliases_matches: - return False - return self._ip_matches and self._hostname_matches + return self._ip_matches and self._hostname_matches and self._aliases_matches def entry_exists(self): return self._ip_matches or self._hostname_matches @@ -154,7 +152,7 @@ def main(): state=dict(default='present', choices=['present', 'absent'], type='str'), ip=dict(default=None, type='str'), hostname=dict(default=None, type='str'), - aliases=dict(default=None, type='str'), + aliases=dict(default='', type='str'), ), supports_check_mode=True ) From b5580389f6a54614a4752c49e21872c28d44b48e Mon Sep 17 00:00:00 2001 From: Rene Moser Date: Fri, 15 Nov 2013 18:35:45 +0100 Subject: [PATCH 5/5] host: added test playbook --- test/playbook-module-host.yml | 98 +++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 test/playbook-module-host.yml diff --git a/test/playbook-module-host.yml b/test/playbook-module-host.yml new file mode 100644 index 00000000000..e41c6e820ed --- /dev/null +++ b/test/playbook-module-host.yml @@ -0,0 +1,98 @@ +--- +# run with option -i localhost +# need root permissions + +- name: host module testing + hosts: localhost + connection: local + gather_facts: no + sudo: yes + + pre_tasks: + - name: backup /etc/hosts + command: cp /etc/hosts /etc/hosts.origin + + post_tasks: + - name: restore /etc/hosts + command: cp /etc/hosts.origin /etc/hosts + + tasks: + - name: test add a record + host: hostname=foobar ip=192.168.123.1 + register: result + failed_when: not result.changed + + - name: test error handling only hostname given on present + host: hostname=foobar + register: result + failed_when: result.changed + + - name: test error handling only ip given on present + host: ip=192.168.123.1 + register: result + failed_when: result.changed + + - name: test record exists + host: hostname=foobar ip=192.168.123.1 + register: result + failed_when: result.changed + + - name: test remove record using hostname + host: hostname=foobar state=absent + register: result + failed_when: not result.changed + + - name: test remove not existing record using hostname + host: hostname=foobar state=absent + register: result + failed_when: result.changed + + - name: test add a record again + host: hostname=foobar ip=192.168.123.1 + register: result + failed_when: not result.changed + + - name: test remove record using ip + host: ip=192.168.123.1 state=absent + register: result + failed_when: not result.changed + + - name: test remove not existing record using ip + host: ip=192.168.123.1 state=absent + register: result + failed_when: result.changed + + - name: test add a record with alias + host: hostname=foobar ip=192.168.123.1 aliases=foobar.com,foobar.net + register: result + failed_when: not result.changed + + - name: test add an existing record with alias + host: hostname=foobar ip=192.168.123.1 aliases=foobar.com,foobar.net + register: result + failed_when: result.changed + + - name: test add an existing record with changed alias + host: hostname=foobar ip=192.168.123.1 aliases=foobar.net,foobar.com + register: result + failed_when: not result.changed + + - name: test remove aliases from existing record + host: hostname=foobar ip=192.168.123.1 + register: result + failed_when: not result.changed + + - name: test add aliases for existing record + host: hostname=foobar ip=192.168.123.1 aliases=foobar.net,foobar.com + register: result + failed_when: not result.changed + + - name: test change ip on existing record + host: hostname=foobar ip=192.168.123.2 + register: result + failed_when: not result.changed + + - name: test change hostname on existing record + host: hostname=barfoo ip=192.168.123.2 + register: result + failed_when: not result.changed