cisco.dnac.accesspoint_location_workflow_manager module – Resource module for managing Access Point planned positions and real positions in Cisco Catalyst Center

Note

This module is part of the cisco.dnac collection (version 6.43.0).

You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

To install it, use: ansible-galaxy collection install cisco.dnac. You need further requirements to be able to use this module, see Requirements for details.

To use it in a playbook, specify: cisco.dnac.accesspoint_location_workflow_manager.

New in cisco.dnac 6.40.0

Synopsis

  • This module facilitates the creation, update, assignment and deletion of planned and real Access Point positions in Cisco Catalyst Center. - Supports creating, assigning and deleting planned and real Access Point positions. - Enables assignment of the access point to the planned positions.

Requirements

The below requirements are needed on the host that executes this module.

  • dnacentersdk >= 2.8.6

  • python >= 3.9

Parameters

Parameter

Comments

config

list / elements=dictionary / required

A list containing the details required for creating, updating or removing the Access Point planned and real positions.

access_points

list / elements=dictionary / required

List of access points to be configured at the specified position.

accesspoint_model

string

Model of the access point. Model is required when creating planned access point position.

accesspoint_name

string / required

Name of the access point to be assigned to the position.

action

string

The action to be performed on the access point. Determines how the access point will be managed within the specified position. This field is only required when assigning or deleting real access point to/from an existing planned position. It is not required when creating, updating, or deleting a planned access point position itself.

Choices:

  • "C(assign_planned_ap)"

  • "C(manage_real_ap)"

mac_address

string

The MAC address used to identify the real access point. This field is required when mapping a planned access point to an actual access point.

position

dictionary

The X,Y and Z coordinates representing the access point’s position on the floor plan.

x_position

integer / required

The X coordinate of the access point’s position. allows from 0 to 100

y_position

integer / required

The Y coordinate of the access point’s position. allows from 0 to 88

z_position

float / required

The Z coordinate of the access point’s position. allows from 3.0 to 10.0

radios

list / elements=dictionary

List of radio details for the access point.

antenna

dictionary / required

Antenna configuration details of the access point.

antenna_name

string / required

Model name of the antenna.

azimuth

integer / required

The azimuth angle of the antenna, ranging from 1 to 360.

elevation

integer / required

The elevation angle of the antenna, ranging from -90 to 90.

bands

list / elements=string / required

Radio band supported by the access point.

Choices:

  • "C(2.4)"

  • "C(5)"

  • "C(6)"

channel

integer / required

The channel number for the radio interface. in case of dual bands, channel should be the maximum band channel. - For 2.4GHz: valid values are 1, 6 and 11. - For 5GHz: valid values are 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 149, 153, 157, 161, 165, 169, 173. - For 6GHz: valid values are 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93, 97, 101, 105, 109, 113, 117, 121, 125, 129, 133, 137, 141, 145, 149, 153, 157, 161, 165, 169, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209, 213, 217, 221, 225, 229, 233.

tx_power

integer / required

The transmit power level of the access point.

floor_site_hierarchy

string / required

Complete floor site hierarchy for the access point position.

config_verify

boolean

Set to `True` to enable configuration verification on Cisco Catalyst Center after applying the playbook configuration. This ensures that the system validates the configuration state after the changes are applied.

Choices:

  • false ← (default)

  • true

dnac_api_task_timeout

integer

Defines the timeout in seconds for API calls to retrieve task details. If the task details are not received within this period, the process will end, and a timeout notification will be logged.

Default: 1200

dnac_debug

boolean

Indicates whether debugging is enabled in the Cisco Catalyst Center SDK.

Choices:

  • false ← (default)

  • true

dnac_host

string / required

The hostname of the Cisco Catalyst Center.

dnac_log

boolean

Flag to enable/disable playbook execution logging.

When true and dnac_log_file_path is provided, - Create the log file at the execution location with the specified name.

When true and dnac_log_file_path is not provided, - Create the log file at the execution location with the name ‘dnac.log’.

When false, - Logging is disabled.

If the log file doesn’t exist, - It is created in append or write mode based on the “dnac_log_append” flag.

If the log file exists, - It is overwritten or appended based on the “dnac_log_append” flag.

Choices:

  • false ← (default)

  • true

dnac_log_append

boolean

Determines the mode of the file. Set to True for ‘append’ mode. Set to False for ‘write’ mode.

Choices:

  • false

  • true ← (default)

dnac_log_file_path

string

Governs logging. Logs are recorded if dnac_log is True.

If path is not specified, - When ‘dnac_log_append’ is True, ‘dnac.log’ is generated in the current Ansible directory; logs are appended. - When ‘dnac_log_append’ is False, ‘dnac.log’ is generated; logs are overwritten.

If path is specified, - When ‘dnac_log_append’ is True, the file opens in append mode. - When ‘dnac_log_append’ is False, the file opens in write (w) mode. - In shared file scenarios, without append mode, content is overwritten after each module execution. - For a shared log file, set append to False for the 1st module (to overwrite); for subsequent modules, set append to True.

Default: "dnac.log"

dnac_log_level

string

Sets the threshold for log level. Messages with a level equal to or higher than this will be logged. Levels are listed in order of severity [CRITICAL, ERROR, WARNING, INFO, DEBUG].

CRITICAL indicates serious errors halting the program. Displays only CRITICAL messages.

ERROR indicates problems preventing a function. Displays ERROR and CRITICAL messages.

WARNING indicates potential future issues. Displays WARNING, ERROR, CRITICAL messages.

INFO tracks normal operation. Displays INFO, WARNING, ERROR, CRITICAL messages.

DEBUG provides detailed diagnostic info. Displays all log messages.

Default: "WARNING"

dnac_password

string

The password for authentication at the Cisco Catalyst Center.

dnac_port

string

Specifies the port number associated with the Cisco Catalyst Center.

Default: "443"

dnac_task_poll_interval

integer

Specifies the interval in seconds between successive calls to the API to retrieve task details.

Default: 2

dnac_username

aliases: user

string

The username for authentication at the Cisco Catalyst Center.

Default: "admin"

dnac_verify

boolean

Flag to enable or disable SSL certificate verification.

Choices:

  • false

  • true ← (default)

dnac_version

string

Specifies the version of the Cisco Catalyst Center that the SDK should use.

Default: "2.2.3.3"

state

string

Specifies the desired state for the configuration. If set to `merged`, the module will create or update the configuration by adding new settings or modifying existing ones. If set to `deleted`, the module will remove the specified settings.

Choices:

  • "merged" ← (default)

  • "deleted"

validate_response_schema

boolean

Flag for Cisco Catalyst Center SDK to enable the validation of request bodies against a JSON schema.

Choices:

  • false

  • true ← (default)

Notes

Note

  • Minimum Catalyst Center version 3.1.3.0 required for accesspoint location workflow features.

  • This module utilizes the following SDK methods site_design.SiteDesign.get_planned_access_points_positions site_design.SiteDesign.add_planned_access_points_positions site_design.SiteDesign.edit_planned_access_points_positions site_design.SiteDesign.delete_planned_access_points_position site_design.SiteDesign.assign_planned_access_points_to_operations_ones site_design.SiteDesign.edit_the_access_points_positions site_design.SiteDesign.get_access_points_positions site_design.SiteDesign.get_sites

  • The following API paths are used GET /dna/intent/api/v2/floors/${floorId}/plannedAccessPointPositions GET /dna/intent/api/v1/sites GET /dna/intent/api/v2/floors/${floorId}/accessPointPositions POST /dna/intent/api/v2/floors/${floorId}/plannedAccessPointPositions/${id} POST /dna/intent/api/v2/floors/${floorId}/plannedAccessPointPositions/bulk POST /dna/intent/api/v2/floors/${floorId}/accessPointPositions/bulkChange POST /dna/intent/api/v2/floors/${floorId}/plannedAccessPointPositions/bulkChange POST /dna/intent/api/v2/floors/${floorId}/plannedAccessPointPositions/assignAccessPointPositions

  • Does not support check_mode

  • The plugin runs on the control node and does not use any ansible connection plugins instead embedded connection manager from Cisco Catalyst Center SDK

  • The parameters starting with dnac_ are used by the Cisco Catalyst Center Python SDK to establish the connection

See Also

See also

Cisco Catalyst Center API Documentation

Complete API reference for device management.

Examples

---
- hosts: dnac_servers
  vars_files:
    - credentials.yml
  gather_facts: false
  connection: local
  tasks:
    - name: Create planned access point positions for the access points
      cisco.dnac.accesspoint_location_workflow_manager:
        dnac_host: "{{ dnac_host }}"
        dnac_username: "{{ dnac_username }}"
        dnac_password: "{{ dnac_password }}"
        dnac_verify: "{{ dnac_verify }}"
        dnac_port: "{{ dnac_port }}"
        dnac_version: "{{ dnac_version }}"
        dnac_debug: "{{ dnac_debug }}"
        dnac_log: true
        dnac_log_level: DEBUG
        config_verify: true
        dnac_api_task_timeout: 1000
        dnac_task_poll_interval: 1
        state: merged
        config:  # Minimum 1; Maximum 100 config hierarchy
          - floor_site_hierarchy: "Global/USA/SAN JOSE/SJ_BLD23/FLOOR1"
            access_points:
              - accesspoint_name: AP687D.B402.1614-AP-location_Test6
                accesspoint_model: AP9120E
                position:
                  x_position: 30  # x-axis: from 0 to 100
                  y_position: 30  # y-axis: from 0 to 88
                  z_position: 8  # height: from 3.0 to 10
                radios:  # Minimum Items: 1; Maximum Items: 4
                  - bands: ["2.4"]  # can be 2.4, 5 and 6
                    channel: 11
                    tx_power: 5  # Decibel milliwatts (dBm)
                    antenna:
                      antenna_name: AIR-ANT2524DB-R-2.4GHz
                      azimuth: 30  # support upto 360
                      elevation: 30  # support -90 upto 90
                  - bands: ["5"]  # can be 2.4, 5 and 6
                    channel: 44
                    tx_power: 6  # Decibel milliwatts (dBm)
                    antenna:
                      antenna_name: AIR-ANT2524DB-R-5GHz
                      azimuth: 30  # support upto 360
                      elevation: 30  # support -90 upto 90
                  - bands: ["2.4", "5"]  # can be 2.4, 5 and 6
                    channel: 48
                    tx_power: 6  # Decibel milliwatts (dBm)
                    antenna:
                      antenna_name: AIR-ANT2524DB-R
                      azimuth: 30  # support upto 360
                      elevation: 30  # support -90 upto 90

    # Assign planned access point position and assign the real access points
    - name: Assign planned access point position and assign the real access points
      cisco.dnac.accesspoint_location_workflow_manager:
        dnac_host: "{{ dnac_host }}"
        dnac_username: "{{ dnac_username }}"
        dnac_password: "{{ dnac_password }}"
        dnac_verify: "{{ dnac_verify }}"
        dnac_port: "{{ dnac_port }}"
        dnac_version: "{{ dnac_version }}"
        dnac_debug: "{{ dnac_debug }}"
        dnac_log: true
        dnac_log_level: DEBUG
        config_verify: true
        dnac_api_task_timeout: 1000
        dnac_task_poll_interval: 1
        state: merged
        config:  # Minimum 1; Maximum 100 config hierarchy
          - floor_site_hierarchy: "Global/USA/SAN JOSE/SJ_BLD23/FLOOR1"
            access_points:
              - accesspoint_name: AP687D.B402.1614-AP-location_Test6
                action: assign_planned_ap  # Optional assign_planned_ap, manage_real_ap
                mac_address: a4:88:73:d4:dd:80  # Required while assigning planned access point

    # Update planned access point position to the access points
    - name: Update planned access point position to the access points
      cisco.dnac.accesspoint_location_workflow_manager:
        dnac_host: "{{ dnac_host }}"
        dnac_username: "{{ dnac_username }}"
        dnac_password: "{{ dnac_password }}"
        dnac_verify: "{{ dnac_verify }}"
        dnac_port: "{{ dnac_port }}"
        dnac_version: "{{ dnac_version }}"
        dnac_debug: "{{ dnac_debug }}"
        dnac_log: true
        dnac_log_level: DEBUG
        config_verify: true
        dnac_api_task_timeout: 1000
        dnac_task_poll_interval: 1
        state: merged
        config:  # Minimum 1; Maximum 100 config hierarchy
          - floor_site_hierarchy: "Global/USA/California/SAN JOSE/BLD24/Floor3"
            access_points:
              - accesspoint_name: IAC-TB4-SJ-AP1
                accesspoint_model: AP9120E
                position:
                  x_position: 30  # x-axis: from 0 to 100
                  y_position: 30  # y-axis: from 0 to 88
                  z_position: 8  # height: from 3.0 to 10
                radios:  # Minimum Items: 1; Maximum Items: 4
                  - bands: ["2.4"]  # can be 2.4, 5 and 6
                    channel: 11
                    tx_power: 5  # Decibel milliwatts (dBm)
                    antenna:
                      antenna_name: AIR-ANT2524DB-R-2.4GHz
                      azimuth: 20  # support upto 360
                      elevation: 20  # support -90 upto 90
                  - bands: ["5"]  # can be 2.4, 5 and 6
                    channel: 44
                    tx_power: 6  # Decibel milliwatts (dBm)
                    antenna:
                      antenna_name: AIR-ANT2524DB-R-5GHz
                      azimuth: 30  # support upto 360
                      elevation: 30  # support -90 upto 90
                  - bands: ["2.4", "5"]  # can be 2.4, 5 and 6
                    channel: 48
                    tx_power: 6  # Decibel milliwatts (dBm)
                    antenna:
                      antenna_name: AIR-ANT2524DB-R
                      azimuth: 30  # support upto 360
                      elevation: 30  # support -90 upto 90

    # Delete Planned Access Point from maps
    - name: Delete Planned Access Point from maps
      cisco.dnac.accesspoint_location_workflow_manager:
        dnac_host: "{{ dnac_host }}"
        dnac_username: "{{ dnac_username }}"
        dnac_password: "{{ dnac_password }}"
        dnac_verify: "{{ dnac_verify }}"
        dnac_port: "{{ dnac_port }}"
        dnac_version: "{{ dnac_version }}"
        dnac_debug: "{{ dnac_debug }}"
        dnac_log: true
        dnac_log_level: DEBUG
        config_verify: true
        dnac_api_task_timeout: 1000
        dnac_task_poll_interval: 1
        state: deleted
        config:  # Minimum 1; Maximum 100 config hierarchy
          - floor_site_hierarchy: "Global/USA/SAN JOSE/SJ_BLD23/FLOOR1"
            access_points:
              - accesspoint_name: AP687D.B402.1614-AP-location_Test6

    # Create the real AP position with real access point.
    - name: Create the real AP position with real access point
      cisco.dnac.accesspoint_location_workflow_manager:
        dnac_host: "{{ dnac_host }}"
        dnac_username: "{{ dnac_username }}"
        dnac_password: "{{ dnac_password }}"
        dnac_verify: "{{ dnac_verify }}"
        dnac_port: "{{ dnac_port }}"
        dnac_version: "{{ dnac_version }}"
        dnac_debug: "{{ dnac_debug }}"
        dnac_log: true
        dnac_log_level: DEBUG
        config_verify: true
        dnac_api_task_timeout: 1000
        dnac_task_poll_interval: 1
        state: merged
        config:  # Minimum 1; Maximum 100 config hierarchy
          - floor_site_hierarchy: "Global/USA/SAN JOSE/SJ_BLD23/FLOOR1"
            access_points:
              - accesspoint_name: AP687D.B402.1614-AP-location_Test6
                mac_address: a4:88:73:d4:dd:80  # Required for real access point creation
                accesspoint_model: AP9120E
                position:
                  x_position: 20  # x-axis: from 0 to 100
                  y_position: 30  # y-axis: from 0 to 88
                  z_position: 8  # height: from 3.0 to 10
                radios:  # Minimum Items: 1; Maximum Items: 4
                  - bands: ["2.4"]  # can be 2.4, 5 and 6
                    channel: 11
                    tx_power: 5  # Decibel milliwatts (dBm)
                    antenna:
                      antenna_name: AIR-ANT2524DB-R-2.4GHz
                      azimuth: 20  # support upto 360
                      elevation: 30  # support -90 upto 90
                  - bands: ["5"]  # can be 2.4, 5 and 6
                    channel: 44
                    tx_power: 6  # Decibel milliwatts (dBm)
                    antenna:
                      antenna_name: AIR-ANT2524DB-R-5GHz
                      azimuth: 20  # support upto 360
                      elevation: 30  # support -90 upto 90
                  - bands: ["2.4", "5"]  # can be 2.4, 5 and 6
                    channel: 48
                    tx_power: 6  # Decibel milliwatts (dBm)
                    antenna:
                      antenna_name: AIR-ANT2524DB-R
                      azimuth: 30  # support upto 360
                      elevation: 30  # support -90 upto 90

    # Update the real AP position with real access point.
    - name: Update the real AP position with real access point.
      cisco.dnac.accesspoint_location_workflow_manager:
        dnac_host: "{{ dnac_host }}"
        dnac_username: "{{ dnac_username }}"
        dnac_password: "{{ dnac_password }}"
        dnac_verify: "{{ dnac_verify }}"
        dnac_port: "{{ dnac_port }}"
        dnac_version: "{{ dnac_version }}"
        dnac_debug: "{{ dnac_debug }}"
        dnac_log: true
        dnac_log_level: DEBUG
        config_verify: true
        dnac_api_task_timeout: 1000
        dnac_task_poll_interval: 1
        state: merged
        config:  # Minimum 1; Maximum 100 config hierarchy
          - floor_site_hierarchy: "Global/USA/SAN JOSE/SJ_BLD23/FLOOR1"
            access_points:
              - accesspoint_name: AP687D.B402.1614-AP-location_Test6
                mac_address: a4:88:73:d4:dd:80  # Required for real access point creation
                accesspoint_model: AP9120E
                position:
                  x_position: 20  # x-axis: from 0 to 100
                  y_position: 30  # y-axis: from 0 to 88
                  z_position: 8  # height: from 3.0 to 10
                radios:  # Minimum Items: 1; Maximum Items: 4
                  - bands: ["2.4"]  # can be 2.4, 5 and 6
                    antenna:
                      antenna_name: AIR-ANT2524DB-R-2.4GHz
                      azimuth: 20  # support upto 360
                      elevation: 30  # support -90 upto 90
                  - bands: ["5"]  # can be 2.4, 5 and 6
                    antenna:
                      antenna_name: AIR-ANT2524DB-R-5GHz
                      azimuth: 20  # support upto 360
                      elevation: 30  # support -90 upto 90

    # Delete assigned access point from the real floor position
    - name: Delete assigned access point from the real floor position
      cisco.dnac.accesspoint_location_workflow_manager:
        dnac_host: "{{ dnac_host }}"
        dnac_username: "{{ dnac_username }}"
        dnac_password: "{{ dnac_password }}"
        dnac_verify: "{{ dnac_verify }}"
        dnac_port: "{{ dnac_port }}"
        dnac_version: "{{ dnac_version }}"
        dnac_debug: "{{ dnac_debug }}"
        dnac_log: true
        dnac_log_level: DEBUG
        config_verify: true
        dnac_api_task_timeout: 1000
        dnac_task_poll_interval: 1
        state: deleted
        config:  # Minimum 1; Maximum 100 config hierarchy
          - floor_site_hierarchy: "Global/USA/California/SAN JOSE/BLD24/Floor3"
            access_points:
              - accesspoint_name: IAC-TB4-SJ-AP1
                action: manage_real_ap  # Delete the access point from the real position

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key

Description

response_assign_planned_position

dictionary

A dictionary or list containing the response returned by the Cisco Catalyst Center Python SDK when a access point planned position is successfully assigned. The response confirms the successful assignment of the planned position and provides details about the status, including its access point name and status.

Returned: always

Sample: "{\n    \"msg\": \"Planned Access Point position assigned successfully for '[['AP687D.B402.1614-AP-location_Test6']]'.\n            Following real Access Point(s) assigned to planned position(s): '['AP687D.B402.1614-AP-location_Test6']'.\",\n    \"response\": [\n        [\n            \"AP687D.B402.1614-AP-location_Test6\"\n        ]\n    ],\n    \"status\": \"success\"\n}\n"

response_create

dictionary

A dictionary or list containing the response returned by the Cisco Catalyst Center Python SDK when a access point planned position is successfully created. The response confirms the successful creation of the planned position and provides details about the status, including its access point name and status.

Returned: always

Sample: {"msg": "Planned/Real Access Point position created successfully for 'Global/USA/SAN JOSE/SJ_BLD23/FLOOR1'.", "response": [["AP687D.B402.1614-AP-location_Test6"]], "status": "success"}

response_create_assign_idempotent

dictionary

A dictionary or list containing the response returned by the Cisco Catalyst Center Python SDK when a access point planned position is successfully created and assigned. The response confirms the successful creation of the planned position and provides details about the status, including its access point name and status.

Returned: always

Sample: "{\n    \"msg\": \"No Changes required, planned Access Point position(s) already exist.\n            Following real Access Point(s) assigned to planned position(s): '['IAC-TB4-SJ-AP1']'.\n            Following Access Point position(s): 'None' already exist.\",\n    \"response\": [],\n    \"status\": \"success\"\n}\n"

response_create_idempotent

dictionary

A dictionary or list containing the response returned by the Cisco Catalyst Center Python SDK. This response is provided when attempting to create planned access point positions in an idempotent manner. If the positions are already created, the response indicates that no changes were required.

Returned: always

Sample: {"msg": "No Changes required, Planned/Real Access Point position(s) already exist.", "response": [], "status": "success"}

response_delete_planned_position

dictionary

A dictionary or list containing the response returned by the Cisco Catalyst Center Python SDK when a planned access point position is successfully deleted. The response confirms the deletion and provides details about the position and access point(s) affected.

Returned: always

Sample: {"msg": "Planned/Real Access Point position(s) deleted and verified successfully for '['AP687D.B402.1614-AP-location_Test6']'.", "response": ["AP687D.B402.1614-AP-location_Test6"], "status": "success"}

response_unassign_idempotent

dictionary

A dictionary or list containing the response returned by the Cisco Catalyst Center Python SDK when a planned access point position is successfully unassigned. The response confirms the unassignment and provides details about the position and the access point(s) affected.

Returned: always

Sample: "{\n    \"msg\": \"No Changes required, planned/real Access Point position(s) already deleted\n            and verified successfully for '['AP687D.B402.1614-AP-location_Test6']'.\",\n    \"response\": [],\n    \"status\": \"success\"\n}\n"

response_unassign_real_position

dictionary

A dictionary or list containing the response returned by the Cisco Catalyst Center Python SDK when a access point real position is successfully unassigned. The response confirms the successful unassignment of the real position and provides details about the status, including its access point name and status.

Returned: always

Sample: {"msg": "Real Access Point position(s) deleted and verified successfully for '['IAC-TB4-SJ-AP1']'.", "response": ["IAC-TB4-SJ-AP1"], "status": "success"}

response_update_position

dictionary

A dictionary or list containing the response returned by the Cisco Catalyst Center Python SDK when a planned access point position is successfully updated. The response confirms the update and provides details about the updated position.

Returned: always

Sample: {"msg": "Planned/Real Access Point position updated successfully for 'Global/USA/SAN JOSE/SJ_BLD23/FLOOR1'.", "response": [["AP687D.B402.1614-AP-location_Test6"]], "status": "success"}

response_update_real_position

dictionary

A dictionary or list containing the response returned by the Cisco Catalyst Center Python SDK when a real access point position is successfully updated. The response confirms the successful update of the real position and provides details about the status, including its access point name and status.

Returned: always

Sample: {"msg": "Planned/Real Access Point position updated successfully for 'Global/USA/SAN JOSE/SJ_BLD23/FLOOR1'.", "response": [["AP687D.B402.1614-AP-Test6"]], "status": "success"}

Authors

  • A Mohamed Rafeek (@mabdulk2)

  • Madhan Sankaranarayanan (@madhansansel)