--- - 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') }}"