74 lines
2.5 KiB
YAML
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') }}" |