# code: language=ansible - name: Clean Synapse hosts: localhost connection: local become: false gather_facts: false tasks: - name: Get room list ansible.builtin.uri: url: "https://{{ synapse_host_address }}/_synapse/admin/v1/rooms?limit=1000" headers: Authorization: "Bearer {{ synapse_admin_token }}" register: room_list - name: Set empty_rooms fact ansible.builtin.set_fact: empty_rooms: "{{ room_list.json.rooms | selectattr('joined_local_members', '==', 0) | list }}" - name: Debug empty room count ansible.builtin.debug: msg: "Total empty rooms to delete: {{ empty_rooms | length }}" - name: Delete empty rooms when: empty_rooms | length > 0 ansible.builtin.uri: url: "https://{{ synapse_host_address }}/_synapse/admin/v2/rooms/{{ room.room_id }}" method: DELETE headers: Authorization: "Bearer {{ synapse_admin_token }}" body_format: json body: {} loop: "{{ empty_rooms }}" loop_control: loop_var: room label: "{{ room.room_id }}" register: purge_ids - name: Write purge_ids to file ansible.builtin.copy: dest: "{{ playbook_dir }}/purge_ids_{{ now(utc=false, fmt='%Y-%m-%d_%H-%M-%S') }}.json" content: "{{ purge_ids.results | map(attribute='json.delete_id') | list | to_nice_json }}" mode: "0664"