homelab/ansible/ansible-old/playbooks/network/omada_api_smoke_test.yml

74 lines
2.5 KiB
YAML

---
- name: Omada Open API smoke test
hosts: localhost
connection: local
gather_facts: false
vars_files:
- "../../group_vars/all.yml"
- "../../group_vars/vault/all.yml"
vars:
omada_validate_certs: false
tasks:
- name: Verify required Omada variables are present
ansible.builtin.assert:
that:
- omada_base_url is defined
- omada_id is defined
- omada_client_id is defined
- omada_client_secret is defined
- omada_base_url | length > 0
- omada_id | length > 0
- omada_client_id | length > 0
- omada_client_secret | length > 0
fail_msg: "Missing Omada variables. Check group_vars/all.yml and group_vars/vault/all.yml."
- name: Request Omada access token (client credentials)
ansible.builtin.uri:
url: "{{ omada_base_url }}/openapi/authorize/token?grant_type=client_credentials"
method: POST
validate_certs: "{{ omada_validate_certs }}"
headers:
Content-Type: application/json
body_format: json
body:
omadacId: "{{ omada_id }}"
client_id: "{{ omada_client_id }}"
client_secret: "{{ omada_client_secret }}"
return_content: true
status_code: 200
register: omada_token_response
no_log: true
failed_when:
- omada_token_response.json is not defined
- omada_token_response.json.errorCode | default(-1) != 0
- name: Save access token from auth response
ansible.builtin.set_fact:
omada_access_token: "{{ omada_token_response.json.result.accessToken }}"
no_log: true
- name: Query Omada sites
ansible.builtin.uri:
url: "{{ omada_base_url }}/openapi/v1/{{ omada_id }}/sites?page=1&pageSize=20"
method: GET
validate_certs: "{{ omada_validate_certs }}"
headers:
Content-Type: application/json
Authorization: "AccessToken={{ omada_access_token }}"
return_content: true
status_code: 200
register: omada_sites_response
no_log: true
failed_when:
- omada_sites_response.json is not defined
- omada_sites_response.json.errorCode | default(-1) != 0
- name: Report site inventory summary
ansible.builtin.debug:
msg:
- "Omada API auth OK"
- "Sites discovered: {{ omada_sites_response.json.result.totalRows | default(0) }}"
- "First site name: {{ (omada_sites_response.json.result.data | default([]) | first).name | default('n/a') }}"