--- # test code for the etcd3 module # (c) 2017, Jean-Philippe Evrard # This file is part of Ansible # # Ansible is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Ansible is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Ansible. If not, see . # ============================================================ - name: python 2 set_fact: python_suffix: "" when: ansible_python_version is version('3', '<') - name: python 3 set_fact: python_suffix: "-py3" when: ansible_python_version is version('3', '>=') - include_vars: '{{ item }}' with_first_found: - files: - '{{ ansible_distribution }}-{{ ansible_distribution_major_version }}{{ python_suffix }}.yml' - '{{ ansible_distribution }}-{{ ansible_distribution_version }}{{ python_suffix }}.yml' - '{{ ansible_os_family }}{{ python_suffix }}.yml' - 'default{{ python_suffix }}.yml' paths: '../vars' # Install requirements for etcd3 module - name: Install etcd3 packages package: name: "{{ etcd3_deps_packages }}" state: present - name: Install etcd3 module pip: name: etcd3 state: present # Check if re-installing etcd3 is required - name: Check if etcd3ctl exists for re-use. shell: "ETCDCTL_API=3 {{ etcd3_path }}/etcdctl --endpoints=localhost:2379 get foo" args: executable: /bin/bash changed_when: false failed_when: false register: _testetcd3ctl # Installing etcd3 - name: If can't reuse, prepare download folder file: path: "{{ etcd3_download_location }}" state: directory register: _etcddownloadexists when: - _testetcd3ctl.rc != 0 - name: Delete download folder if already exists (to start clean) file: path: "{{ etcd3_download_location }}" state: absent when: - _testetcd3ctl.rc != 0 - _etcddownloadexists is not changed - name: Recreate download folder if purged file: path: "{{ etcd3_download_location }}" state: directory when: - _testetcd3ctl.rc != 0 - _etcddownloadexists is not changed - name: Download etcd3 unarchive: src: "{{ etcd3_download_url }}" dest: "{{ etcd3_download_location }}" remote_src: yes when: - _testetcd3ctl.rc != 0 # Running etcd3 and kill afterwards if it wasn't running before. - name: Run etcd3 shell: "{{ etcd3_path }}/etcd &" register: _etcd3run changed_when: true when: - _testetcd3ctl.rc != 0 # Integration tests - name: Check mode, show need change etcd3: key: "foo" value: "bar" state: "present" register: _etcd3_prst_chktst check_mode: true - name: Change to new value etcd3: key: "foo" value: "bar" state: "present" register: _etcd3_prst_chgtst - name: Idempotency test, show unchanged. etcd3: key: "foo" value: "bar" state: "present" register: _etcd3_prst_idmptnttst - name: Idempotency test in check mode, show unchanged etcd3: key: "foo" value: "bar" state: "present" register: _etcd3_prst_idmptntchktst check_mode: true - name: Check mode, show need removal of key etcd3: key: "foo" value: "baz" state: "absent" register: _etcd3_absnt_chktst check_mode: true - name: Remove foo key etcd3: key: "foo" value: "baz" state: "absent" register: _etcd3_absnt_chgtst - name: Idempotency test in check mode, show unchanged etcd3: key: "foo" value: "baz" state: "absent" register: _etcd3_absnt_idmptnttst check_mode: true - name: Idempotency test, show unchanged etcd3: key: "foo" value: "baz" state: "absent" register: _etcd3_absnt_idmptntchktst - name: Checking the status are expected assert: that: - _etcd3_prst_chktst is changed - _etcd3_prst_chgtst is changed - _etcd3_prst_idmptnttst is not changed - _etcd3_prst_idmptntchktst is not changed - _etcd3_absnt_chktst is changed - _etcd3_absnt_chgtst is changed - _etcd3_absnt_idmptnttst is not changed - _etcd3_absnt_idmptntchktst is not changed - name: kill etcd3 command: "pkill etcd" when: - _testetcd3ctl.rc != 0