45 lines
1.4 KiB
YAML
45 lines
1.4 KiB
YAML
|
# 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"
|