From 1c679c5a9a13151d8069ad386499fde688ad834b Mon Sep 17 00:00:00 2001 From: Rafael Guterres Jeffman Date: Wed, 8 Sep 2021 17:06:37 -0300 Subject: [PATCH] templates: Allow execution of plugins in an IPA client host. Modify templates to create the basic tests for `ipaapi_context: client`. --- utils/new_module | 1 + utils/templates/test_module+member.yml.in | 14 ++++++- utils/templates/test_module.yml.in | 9 ++++- .../test_module_client_context.yml.in | 39 +++++++++++++++++++ 4 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 utils/templates/test_module_client_context.yml.in diff --git a/utils/new_module b/utils/new_module index b6eecb27..882a9677 100755 --- a/utils/new_module +++ b/utils/new_module @@ -183,3 +183,4 @@ mkdir -p $dest src=test_module.yml.in [ $member == 1 ] && src=test_module+member.yml.in template $src $dest/test_$name.yml +template test_module_client_context.yml.in $dest/test_${name}_client_context.yml diff --git a/utils/templates/test_module+member.yml.in b/utils/templates/test_module+member.yml.in index f7c5b3d5..01012078 100644 --- a/utils/templates/test_module+member.yml.in +++ b/utils/templates/test_module+member.yml.in @@ -1,7 +1,10 @@ --- - name: Test $name - hosts: ipaserver + hosts: "{{ ipa_test_host | default('ipaserver') }}" + # Change "become" or "gather_facts" to "yes", + # if you test playbook requires any. become: no + gather_facts: no tasks: @@ -20,6 +23,7 @@ - name: Ensure $name NAME is present ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME # Add needed parameters here register: result @@ -28,6 +32,7 @@ - name: Ensure $name NAME is present again ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME # Add needed parameters here register: result @@ -36,6 +41,7 @@ - name: Ensure $name NAME member PARAMETER2 VALUE is present ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME PARAMETER2: VALUE action: member @@ -45,6 +51,7 @@ - name: Ensure $name NAME member PARAMETER2 VALUE is present again ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME PARAMETER2: VALUE action: member @@ -54,6 +61,7 @@ - name: Ensure $name NAME member PARAMETER2 VALUE is absent ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME PARAMETER2: VALUE action: member @@ -64,6 +72,7 @@ - name: Ensure $name NAME member PARAMETER2 VALUE is absent again ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME PARAMETER2: VALUE action: member @@ -76,6 +85,7 @@ - name: Ensure $name NAME is absent ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME state: absent register: result @@ -84,6 +94,7 @@ - name: Ensure $name NAME is absent again ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME state: absent register: result @@ -94,5 +105,6 @@ - name: Ensure $name NAME is absent ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME state: absent diff --git a/utils/templates/test_module.yml.in b/utils/templates/test_module.yml.in index 0286813b..2ad53cc2 100644 --- a/utils/templates/test_module.yml.in +++ b/utils/templates/test_module.yml.in @@ -1,7 +1,10 @@ --- - name: Test $name - hosts: ipaserver + hosts: "{{ ipa_test_host | default('ipaserver') }}" + # Change "become" or "gather_facts" to "yes", + # if you test playbook requires any. become: no + gather_facts: no tasks: @@ -10,6 +13,7 @@ - name: Ensure $name NAME is absent ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME state: absent @@ -28,6 +32,7 @@ - name: Ensure $name NAME is present again ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME # Add needed parameters here register: result @@ -38,6 +43,7 @@ - name: Ensure $name NAME is absent ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME state: absent register: result @@ -46,6 +52,7 @@ - name: Ensure $name NAME is absent again ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME state: absent register: result diff --git a/utils/templates/test_module_client_context.yml.in b/utils/templates/test_module_client_context.yml.in new file mode 100644 index 00000000..ee8c6789 --- /dev/null +++ b/utils/templates/test_module_client_context.yml.in @@ -0,0 +1,39 @@ +--- +- name: Test ${name} + hosts: ipaclients, ipaserver + # Change "become" or "gather_facts" to "yes", + # if you test playbook requires any. + become: no + gather_facts: no + + tasks: + - name: Include FreeIPA facts. + include_tasks: ../env_freeipa_facts.yml + + # Test will only be executed if host is not a server. + - name: Execute with server context in the client. + ipa${name}: + ipaadmin_password: SomeADMINpassword + ipaapi_context: server + name: ThisShouldNotWork + register: result + failed_when: not (result.failed and result.msg is regex("No module named '*ipaserver'*")) + when: ipa_host_is_client + +# Import basic module tests, and execute with ipa_context set to 'client'. +# If ipaclients is set, it will be executed using the client, if not, +# ipaserver will be used. +# +# With this setup, tests can be executed against an IPA client, against +# an IPA server using "client" context, and ensure that tests are executed +# in upstream CI. + +- name: Test ${name} using client context, in client host. + import_playbook: test_${name}.yml + when: groups['ipaclients'] + vars: + ipa_test_host: ipaclients + +- name: Test ${name} using client context, in server host. + import_playbook: test_${name}.yml + when: groups['ipaclients'] is not defined or not groups['ipaclients']