--- # ============================================================================= # MetaVox Load Test - Cleanup Playbook # ============================================================================= # Verwijdert alle teamfolders, metadata-velden, metadata-records en bestanden # die door de load test zijn aangemaakt. # # Gebruik: ansible-playbook -i inventory/hosts.yml cleanup.yml # ============================================================================= - name: MetaVox Load Test - Opruimen hosts: nextcloud_server gather_facts: false vars: nc_api_base: "{{ nextcloud_url }}/ocs/v2.php" nc_index_base: "{{ nextcloud_url }}/index.php" nc_auth_header: "Basic {{ (nextcloud_admin_user + ':' + nextcloud_admin_password) | b64encode }}" common_headers: OCS-APIRequest: "true" Accept: "application/json" Authorization: "{{ nc_auth_header }}" tasks: # ========================================================================= # Stap 1: Verwijder metadata records uit database # ========================================================================= - name: "Cleanup: Verwijder file metadata records" ansible.builtin.command: cmd: mysql -u root {{ nextcloud_db_name }} -e "TRUNCATE TABLE oc_metavox_file_gf_meta;" ignore_errors: true - name: "Cleanup: Verwijder groupfolder metadata records" ansible.builtin.command: cmd: mysql -u root {{ nextcloud_db_name }} -e "TRUNCATE TABLE oc_metavox_gf_metadata;" ignore_errors: true - name: "Cleanup: Verwijder field assignments" ansible.builtin.command: cmd: mysql -u root {{ nextcloud_db_name }} -e "DELETE FROM oc_metavox_gf_assigns WHERE groupfolder_id IN (SELECT folder_id FROM oc_group_folders WHERE mount_point LIKE '{{ teamfolder_prefix }}-%');" ignore_errors: true # ========================================================================= # Stap 2: Verwijder teamfolders via API # ========================================================================= - name: "Cleanup: Haal lijst van bestaande teamfolders op" ansible.builtin.uri: url: "{{ nc_index_base }}/apps/groupfolders/folders" method: GET headers: "{{ common_headers }}" return_content: true timeout: "{{ http_timeout }}" register: existing_folders - name: "Cleanup: Filter load-test teamfolders" ansible.builtin.set_fact: loadtest_folder_ids: >- {{ existing_folders.json.ocs.data | dict2items | selectattr('value.mount_point', 'match', teamfolder_prefix ~ '-.*') | map(attribute='key') | list }} when: existing_folders.json.ocs.data is defined - name: "Cleanup: Verwijder {{ loadtest_folder_ids | default([]) | length }} teamfolders" ansible.builtin.uri: url: "{{ nc_index_base }}/apps/groupfolders/folders/{{ item }}" method: DELETE headers: "{{ common_headers }}" status_code: [200, 404] timeout: "{{ http_timeout }}" loop: "{{ loadtest_folder_ids | default([]) }}" loop_control: label: "Folder ID {{ item }}" pause: 0.2 # ========================================================================= # Stap 3: Verwijder metadata velddefinities # ========================================================================= - name: "Cleanup: Verwijder metadata-velden via script" ansible.builtin.template: src: templates/cleanup_metadata.py.j2 dest: /tmp/metavox_cleanup_metadata.py mode: '0755' - name: "Cleanup: Draai metadata cleanup" ansible.builtin.command: cmd: python3 /tmp/metavox_cleanup_metadata.py register: cleanup_result changed_when: "'deleted' in cleanup_result.stdout" # ========================================================================= # Stap 4: Verwijder groep en tijdelijke bestanden # ========================================================================= - name: "Cleanup: Verwijder loadtest groep" ansible.builtin.uri: url: "{{ nc_api_base }}/cloud/groups/{{ loadtest_group }}" method: DELETE headers: "{{ common_headers }}" status_code: [200, 404] timeout: "{{ http_timeout }}" when: create_group | default(true) - name: "Cleanup: Verwijder tijdelijke scripts" ansible.builtin.file: path: "{{ item }}" state: absent loop: - /tmp/metavox_setup_metadata_fields.py - /tmp/metavox_fast_create_files.sh - /tmp/metavox_fast_db_register.py - /tmp/metavox_create_folder_structure.py - /tmp/metavox_fast_metadata_insert.py - /tmp/metavox_cleanup_metadata.py - /tmp/filecache_batch.sql - /tmp/dir_insert.sql - /tmp/gf_metadata_insert.sql - /tmp/file_meta_batch.sql - name: "Cleanup: Voltooid" ansible.builtin.debug: msg: | Cleanup voltooid! - {{ loadtest_folder_ids | default([]) | length }} teamfolders verwijderd - Metadata records opgeruimd (TRUNCATE) - Metadata-velden opgeruimd - Groep '{{ loadtest_group }}' verwijderd