fix(dblab): use api endpoints for api operations

This commit is contained in:
Michele Cereda
2025-02-10 22:27:20 +01:00
parent 1987014b52
commit 537f11216a
2 changed files with 18 additions and 10 deletions

View File

@@ -1252,7 +1252,7 @@
hosts: localhost
connection: local
vars:
dblab_port: 2345
dblab_api_port: 2346 # some operations (reset) are not available on the non-api endpoints
max_snapshot_age_in_days: 15
vars_prompt:
- name: dblab_host
@@ -1266,7 +1266,7 @@
{{
dict([
[ 'host', dblab_host ],
[ 'port', dblab_port ],
[ 'port', dblab_api_port ],
[ 'token', dblab_token ],
[ 'max_snapshot_age_in_days', max_snapshot_age_in_days ],
])
@@ -1276,7 +1276,7 @@
- name: Gather snapshots' status
check_mode: false
ansible.builtin.uri:
url: https://{{ dblab_host }}:{{ dblab_port }}/snapshots
url: https://{{ dblab_host }}:{{ dblab_api_port }}/api/snapshots
headers:
'verification-token': "{{ dblab_token }}"
register: snapshots_status
@@ -1294,13 +1294,13 @@
fail_msg: snapshot {{ item.id }} for pool {{ item.pool }} is too old
loop: "{{ snapshots_status.json }}"
tasks:
- name: Reset protected clones on {{ dblab_host }}
tags: reset_protected_clones
- name: Reset clones on {{ dblab_host }}
tags: reset_clones
block:
- name: Gather clones on {{ dblab_host }}
check_mode: false
ansible.builtin.uri:
url: http://{{ dblab_host }}:{{ dblab_port }}/status
url: http://{{ dblab_host }}:{{ dblab_api_port }}/api/status
headers:
'verification-token': "{{ dblab_token }}"
register: instance_status
@@ -1310,15 +1310,16 @@
var: instance_status.json
- name: Reset protected clones
vars:
protected_clones: "{{ instance_status.json.cloning.clones | selectattr('protected', 'equalto', true) }}"
clones: "{{ instance_status.json.cloning.clones | selectattr('protected', 'equalto', true) }}"
ansible.builtin.uri:
url: http://{{ dblab_host }}:{{ dblab_port }}/clone/{{ item.id }}/reset
url: http://{{ dblab_host }}:{{ dblab_api_port }}/api/clone/{{ item.id }}/reset
method: POST
headers:
'verification-token': "{{ dblab_token }}"
body_format: json
body:
latest: true
loop: "{{ protected_clones }}"
loop: "{{ clones }}"
register: reset_requests
- name: Gitea-specific operations

View File

@@ -46,6 +46,10 @@ curl 'https://dblab.example.org:2345/status' -H "Verification-Token: $(gopass sh
curl 'https://dblab.example.org:1234/api/status' -H "Verification-Token: $(gopass show -o 'dblab')"
dblab instance status
# Show data refresh status
curl 'https://dblab.example.org:2345/instance/retrieval' -H "Verification-Token: $(gopass show -o 'dblab')"
curl 'https://dblab.example.org:1234/api/instance/retrieval' -H "Verification-Token: $(gopass show -o 'dblab')"
# List snapshots
curl 'https://dblab.example.org:2345/snapshots' -H "Verification-Token: $(gopass show -o 'dblab')"
curl 'https://dblab.example.org:1234/api/snapshots' -H "Verification-Token: $(gopass show -o 'dblab')"
@@ -65,14 +69,17 @@ curl -X 'POST' 'https://dblab.example.org:1234/api/clone' -H "Verification-Token
}'
# List clones
curl 'https://dblab.example.org:2345/status' -H "Verification-Token: $(gopass show -o 'dblab')" | jq '.' -
curl 'https://dblab.example.org:1234/api/status' -H "Verification-Token: $(gopass show -o 'dblab')"
dblab clone list
# Get clones' information
curl 'https://dblab.example.org:1234/clone/some-clone' -H "Verification-Token: $(gopass show -o 'dblab')"
curl 'https://dblab.example.org:1234/api/clone/some-clone' -H "Verification-Token: $(gopass show -o 'dblab')"
dblab clone status 'some-clone'
# Reset clones
# Only available via the '/api' endpoints, no direct ones
curl -X 'POST' 'https://dblab.example.org:1234/api/clone/some-clone/reset' \
-H "Verification-Token: $(gopass show -o 'dblab')" \
-H 'accept: application/json' -H 'content-type: application/json' \
@@ -82,7 +89,7 @@ dblab clone reset --async='true' --latest='true' 'some-clone'
curl --url 'https://dblab.example.org:2345/status' --header 'verification-token: somePassword' \
| jq -r '.cloning.clones[]|select(.protected = "true")|.id' \
| xargs -I '%%' \
curl --request 'POST' --url 'https://dblab.example.org:2345/clone/%%/reset' \
curl --request 'POST' --url 'https://dblab.example.org:1234/api/clone/%%/reset' \
--header 'verification-token: somePassword' \
--header 'content-type: application/json' \
--data '{ "latest": true }'