Initial commit: MetaVox loadtest playbook
Ansible playbook voor het opzetten van een MetaVox loadtest omgeving: - 50 teamfolders met 10.000 bestanden elk (500K totaal) - 100 metadata velddefinities (10 teamfolder + 90 file-level) - 3-niveau mappenstructuur (10 hoofdmappen x 3 submappen) - ~43M metadata records via directe MySQL inserts - Geoptimaliseerde database indexes (7 redundante indexes gedropt) Gebruikt directe filesystem writes en MySQL inserts i.p.v. WebDAV/API voor maximale performance. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
127
cleanup.yml
Normal file
127
cleanup.yml
Normal file
@@ -0,0 +1,127 @@
|
||||
---
|
||||
# =============================================================================
|
||||
# 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
|
||||
Reference in New Issue
Block a user