From b50fde8ade826886488cc1230517c745948af28f Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Wed, 20 Nov 2024 19:25:00 +0530 Subject: [PATCH 01/34] Fix the issue of verifying the deletion of template or project --- plugins/modules/template_workflow_manager.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/plugins/modules/template_workflow_manager.py b/plugins/modules/template_workflow_manager.py index 2f28205671..ec1b973753 100644 --- a/plugins/modules/template_workflow_manager.py +++ b/plugins/modules/template_workflow_manager.py @@ -3371,7 +3371,7 @@ def delete_project_or_template(self, config, is_delete_project=False): template_params = self.want.get("template_params") params_key = {"template_id": self.have_template.get("id")} deletion_value = "deletes_the_template" - name = "templateName: {0}".format(template_params.get('templateName')) + name = "templateName: {0}".format(template_params.get('name')) response = self.dnac_apply['exec']( family="configuration_templates", @@ -3474,8 +3474,7 @@ def get_diff_deleted(self, config): ).format(template_name) self.set_operation_result("failed", False, self.msg, "ERROR").check_return_status() - self.msg = "Successfully completed delete state execution" - self.status = "success" + self.log("Successfully completed delete state execution", "DEBUG") return self def verify_diff_merged(self, config): @@ -3570,15 +3569,11 @@ def verify_diff_deleted(self, config): "name", templateName) if template_info: - self.msg = "Configuration Template config is not applied to the Cisco Catalyst Center." - self.status = "failed" + self.log("Configuration Template config is not applied to the Cisco Catalyst Center.", "WARNING") return self - self.log("Successfully validated absence of template in the Catalyst Center.", "INFO") - self.result['response'][0].get("configurationTemplate").get("response").update({"Validation": "Success"}) + self.log("Successfully validated the absence of Template in the Cisco Catalyst Center.", "INFO") - self.msg = "Successfully validated the absence of Template in the Cisco Catalyst Center." - self.status = "success" return self def reset_values(self): From 3169f270173eed2fe15e0bbb9eed7d265f12d194 Mon Sep 17 00:00:00 2001 From: md-rafeek Date: Thu, 21 Nov 2024 01:13:43 +0530 Subject: [PATCH 02/34] PNP workflow manager UT covered 70% --- .../dnac/fixtures/pnp_workflow_manager.json | 8961 +++++++++++++++++ .../modules/dnac/test_pnp_workflow_manager.py | 289 + 2 files changed, 9250 insertions(+) create mode 100644 tests/unit/modules/dnac/fixtures/pnp_workflow_manager.json create mode 100644 tests/unit/modules/dnac/test_pnp_workflow_manager.py diff --git a/tests/unit/modules/dnac/fixtures/pnp_workflow_manager.json b/tests/unit/modules/dnac/fixtures/pnp_workflow_manager.json new file mode 100644 index 0000000000..79b373cd27 --- /dev/null +++ b/tests/unit/modules/dnac/fixtures/pnp_workflow_manager.json @@ -0,0 +1,8961 @@ +{ + "playbook_config_accesspoint":[ + { + "template_name": null, + "template_params": null, + "project_name": "Onboarding Configuration", + "site_name": "Global/USA/SAN JOSE/SJ_BLD20/FLOOR1", + "image_name": null, + "golden_image": null, + "device_info": [ + { + "serial_number": "KWC24160JLL", + "hostname": "Test-AP", + "state": "Unclaimed", + "pid": "C9130AXI-I", + "is_sudi_required": true + } + ], + "pnp_type": "AccessPoint", + "rf_profile": "HIGH", + "static_ip": null, + "subnet_mask": null, + "gateway": null, + "vlan_id": null, + "ip_interface_name": null, + "sensorProfile": null + } + ], + + "get_device_detail": [{ + "version": 0, + "deviceInfo": { + "serialNumber": "KWC24160JLL", + "name": "KWC24160JLL", + "dnacDeviceType": "NETWORK", + "pid": "C9130AXI-I", + "lastSyncTime": 0, + "addedOn": 1732092524685, + "lastUpdateOn": 1732092524685, + "firstContact": 0, + "lastContact": 0, + "lastContactDuration": 0, + "provisionedOn": 0, + "state": "Unclaimed", + "onbState": "Not Contacted", + "cmState": "Not Contacted", + "hostname": "Test-AP", + "source": "User", + "reloadRequested": false, + "aaaCredentials": { + "username": "", + "password": "" + }, + "populateInventory": false, + "poeSupported": false, + "capwapBackOff": false, + "redirectionState": "NONE", + "dayN": false, + "dayNClaimOperation": "NO_OP", + "tlsState": "NO_OP", + "reProvision": false, + "authOperation": "AUTHORIZATION_NOT_REQUIRED", + "apProvisionStatus": "DAY0", + "provisioningServerType": "DNAC", + "pnpaasSupportBundleState": "SUPPORT_BUNDLE_NONE", + "stack": false, + "sudiRequired": false, + "hseclicense": false, + "validActions": { + "editSUDI": true, + "editWfParams": true, + "delete": true, + "claim": true, + "unclaim": true, + "reset": false, + "authorize": false, + "resetMsg": "This device is not in Error state. Only devices in Error state may be reset.", + "authorizeMsg": "This device is not in PendingAuthorization state." + }, + "siteClaimType": "AccessPoint" + }, + "progress": { + "message": "Device has not yet contacted the server. Device is ready to be claimed.", + "inProgress": false, + "progressPercent": 0 + }, + "workflowParameters": {}, + "dayNCmdQueue": [], + "runSummaryList": [ + { + "timestamp": 1732092524686, + "details": "User Added Device", + "errorFlag": false + } + ], + "tenantId": "66ea0af5c60db15238522111", + "id": "673da26cf8a6d518470c7360" + }], + + "get_software_image_detail": { + "response": [ + { + "imageUuid": "9718fb5c-d56b-4643-b243-02b354d37244", + "name": "isr4400_rommon_1612_2r_SPA.pkg", + "family": "ISR4400", + "version": "16.12(2r)", + "displayVersion": "16.12(2r)", + "md5Checksum": "d2df9d11c547eb80dbab4f0cc8f30ec7", + "shaCheckSum": "02d1868408ee772030ee9800290495ef00dbe3ba4474db13edbe7b55c3771c6926d62d841bb541561ca74ca0216f15b0868c7ce838613516adb4a0739cba527b", + "createdTime": "2024-11-05 01:45:47.177", + "imageType": "ROMMON_SW", + "fileSize": "3994572 bytes", + "imageName": "isr4400_rommon_1612_2r_SPA.pkg", + "applicationType": "UNKNOWN", + "fileServiceId": "f23def12-808d-46f4-9615-68320e5b73a0", + "isTaggedGolden": false, + "imageSource": "CCO", + "extendedAttributes": { + "image_description": "ISR4400 series Rommon Image", + "metadata_trans_id": "1243986722845901", + "software_type_id": "282046486", + "image_size": "3994572", + "field_notice_url": "https://www.cisco.com/c/en/us/support/routers/4000-series-integrated-services-routers-isr/products-field-notices-list.html", + "field_notices": "Field Notices", + "release_doc_url": "https://www.cisco.com/c/en/us/td/docs/routers/access/4400/cpld/isr4400_hwfp.html", + "deviceMNEId": "344428", + "release_doc_name": "Release Notes for 16.12(2r)", + "encryption_software_indicator": "N", + "release_fcs_date": "31/Oct/2019", + "image_guid": "5ACC3ACCDACC5DE123C46D8E3F597547DD1B178B", + "mdf_id": "284389362", + "udi": "PID:%20ISR4451-X/K9%20VID:%20V08,%20SN:%20FJC2402A0TX" + }, + "vendor": "CISCO", + "imageIntegrityStatus": "VERIFIED", + "applicableDevicesForImage": [ + { + "mdfId": "284358776", + "productName": "Cisco 4431 Integrated Services Router", + "productId": [ + "ACS-4430FANASSY-RF", + "SM-X-PVDM-1000", + "NIM-VA-B-RF", + "SSD-M2SATA-480G", + "ISR4431-VSEC/K9", + "MEM-4400-8G=", + "NIM-4BRI-NT/TE-WS", + "SM-X-PVDM-1000=", + "PVDM4-128++=", + "C-NIM-1M=", + "PVDM4-32U256", + "NIM-2BRI-NT/TE-WS", + "PVDM4-32-RF", + "PWR-4430-DC=", + "L-SP-LA-E-100-K9=", + "SM-X-NIM-ADPTR-WS", + "SSD-SATA-400G", + "PWR-4430-AC-WS", + "NIM-VAB-M-WS", + "NIM-4FXS=", + "PWR-CC1-400WDC=", + "PVDM4-64-WS", + "ISR4431-V/K9-WS", + "SM-X-PVDM-500", + "E100S-MEM-UDIMM8G", + "ISR4431-PM20", + "NIM-LTEA-EA=", + "NIM-4FXS", + "PVDM4-32", + "L-SP-LA-U-25-K9=", + "L-SP-LA-W-25-K9=", + "L-SP-LA-E-25-K9=", + "E100SMEMUDIMM8G-RF", + "ISR4351-SEC/K9", + "MEM-FLSH-4G=", + "MEM-FLSH-8U16G", + "ISR4431-AX/K9-RF", + "ISR4431-VSEC/K9-WS", + "NIM-4FXS-WS", + "NIM-4FXO", + "C1AUUISR4400SK9", + "SSD-MSATA-200G", + "NIM-2GE-CU-SFP-RF", + "PWR-4430-DC-RF", + "C-NIM-2T-WS", + "SM-X-24FXS/4FXO=", + "PVDM4-128-RF", + "SM-X-PVDM-1000-RF", + "NIM-PVDM-64-RF", + "NIM-X-SSD", + "L-SP-LA-E-50-K9=", + "NIM-8MFT-T1/E1", + "NIM-1CE1T1-PRI-RF", + "PVDM4-256=", + "SSD-SATA-200G-RF", + "NIM-4FXO-RF", + "PWR-CC1-400WDC-RF", + "NIM-1MFT-T1/E1", + "L-SP-LA-W-2.5K-K9=", + "MEM-FLSH-4U16G-RF", + "PWR-CC1-250WAC-WS", + "PVDM4-32U256-RF", + "SM-X-8FXS/12FXO-RF", + "PVDM4-32=", + "ISR4431-AXV/K9-RF", + "NIM-PVDM-128", + "MEM-FLSH-4U8G-RF", + "MEM-4400-DP-2GU4G", + "NIM-LTEA-EA-RF", + "MEM-FLSH-4U16G", + "C1A2UISR4400SK9=", + "ACS-4430-RM-19=", + "ISR4431-DNA-WS", + "SSD-MSATA-400G", + "NIM-SSD", + "FL-44-PERF-K9=", + "SI-ISR4431-IWAN/K9", + "NIM-ES2-8-P-RF", + "NIM-VAB-M-RF", + "NIM-X-SSD=", + "ACS-4430-BEZEL=", + "NIM-2FXS/4FXO=", + "NIM-4E/M-RF", + "PVDM4-64", + "ISR4431-SEC/K9", + "L-SP-LA-W-50-K9=", + "L-SP-LA-U-50-K9=", + "PWR-4430-POE-AC-RF", + "ISR4431-VSEC/K9-RF", + "ISR4431-DNA-RF", + "NIM-PVDM-32-RF", + "SSD-MSATA-200G=", + "MEM-4400-8G", + "L-SP-LA-W-500-K9=", + "E100S-MEM-UDIMM8G=", + "NIM-4G-LTE-ST-RF", + "SM-X-PVDM-2000", + "NIM-1CE1T1-PRI=", + "ISR4431-AX/K9", + "NIM-2FXS-RF", + "PVDM4-256-WS", + "NIM-PVDM-64-WS", + "NIM-4BRI-NT/TE", + "ISR4431-AXV/K9-WS", + "PWR-4430-DC-WS", + "SM-X-72FXS-RF", + "NIM-2FXS/4FXO-WS", + "NIM-VAB-A-WS", + "ISR4431-DNA", + "C1AUAISR4400SK9=", + "NIM-4G-LTE-VZ", + "NIM-4G-LTE-GA", + "ISR4430U-MEM-SSD", + "NIM-SSD-X=", + "SM-X-NIM-ADPTR-RF", + "ISR4431-SEC/K9-WS", + "NIM-4G-LTE-NA-WS", + "SM-X-8FXS/12FXO-WS", + "NIM-2FXS=", + "PWR-CC1-760WAC", + "NIM-SSD-WS", + "NIM-2MFT-T1/E1", + "SM-X-PVDM-3000", + "NIM-8MFT-T1/E1++=", + "PWR-CC1-500WAC", + "NIM-VA-B", + "SSD-MSATA-50G", + "PVDM4-32++=", + "PWR-4430-POE-AC=", + "NIM-2GE-CU-SFP=", + "SM-X-72FXS", + "PWR-CC1-400WDC", + "C-NIM-1M-WS", + "ISR4431-V/K9", + "PWR-CC1-MOD-POE", + "NIM-1MFT-T1/E1-WS", + "MEM-4400-8G-RF", + "C1F1UISR4400SK9=", + "SSD-MSATA-100G=", + "L-SL-44-SEC-K9=", + "PVDM4-128=", + "NIM-4FXS-RF", + "PVDM4-128-WS", + "NIM-2MFT-T1/E1++=", + "SM-X-PVDM-2000=", + "PVDM4-64=", + "NIM-4G-LTE-ST=", + "NIM-4MFT-T1/E1=", + "NIMASYNC-BRA", + "NIM-4G-LTE-VZ=", + "NIM-LTEA-LA=", + "ACS-4430FANASSY-WS", + "NIM-1CE1T1-PRI", + "SSD-C8530-480G", + "L-SP-LA-W-5K-K9=", + "NIM-PVDM-32=", + "NIM-4MFT-T1/E1++=", + "SM-X-PVDM-3000-RF", + "NIM-2FXS/4FXO", + "L-SP-LA-W-1K-K9=", + "SM-X-72FXS-WS", + "NIM-4G-LTE-GA-RF", + "SM-X-NIM-ADPTR++=", + "PWR-CC1-400WDC-WS", + "L-SP-LA-U-1K-K9=", + "NIM-2FXS-WS", + "PVDM4-256", + "NIM-2BRI-NT/TE=", + "PWR-4430-DC/2", + "NIM-8MFT-T1/E1-RF", + "ISR4431/K9", + "C1AUPISR4400SK9", + "MEM-FLSH-32G-RF", + "NIM-LTEA-LA-WS", + "NIM-VAB-A-RF", + "ACS-4430-WM=", + "NIM-4G-LTE-NA-RF", + "PWR-4430-AC", + "NIM-2MFT-T1/E1-RF", + "NIM-4E/M=", + "NIM-1MFT-T1/E1-RF", + "L-SP-LA-U-500-K9=", + "NIM-2FXO-RF", + "SM-X-8FXS/12FXO=", + "L-SP-LA-E-1K-K9=", + "L-SP-LA-E-2.5K-K9=", + "NIM-PVDM-256-WS", + "MEM-FLSH-4GU16G", + "ACS-4430-FANASSY", + "NIM-4MFT-T1/E1-RF", + "NIM-4E/M-WS", + "L-SP-LA-W-100-K9=", + "PVDM4-64++=", + "NIM-2GE-CU-SFP", + "NIM-PVDM-64", + "SM-X-NIM-ADPTR=", + "NIMASYNC-BRA=", + "PWR-CC1-500WAC=", + "NIM-PVDM-256=", + "NIM-2FXS/4FXO-RF", + "NIM-ES2-8-P", + "NIM-2FXO=", + "PVDM4-256-RF", + "C-NIM-2T", + "PWR-CC1-400WAC-WS", + "ISR4431-AX/K9-WS", + "SM-X-16FXS/2FXO-WS", + "SSD-MSATA-200G-RF", + "SM-X-PVDM-500-RF", + "FL-44-HSEC-K9=", + "NIM-PVDM-32", + "SSD-SATA-200G", + "L-SP-LA-P-25-K9=", + "NIM-4BRI-NT/TE-RF", + "NIM-VAB-A=", + "C-NIM-1M", + "SM-X-24FXS/4FXO", + "ISR4431/K9-RF", + "NIM-LTEA-EA", + "SM-X-16FXS/2FXO=", + "PVDM4-64-RF", + "L-SP-LA-U-5K-K9=", + "NIM-4E/M", + "L-SP-LA-E-500-K9=", + "C-NIM-1M-RF", + "NIM-2FXS", + "ACS-4430-RM-23=", + "ISR4431/K9++", + "NIM-PVDM-64=", + "C1-CISCO4431/K9", + "NIM-ES2-8-P-WS", + "L-SP-LA-E-5K-K9=", + "NIM-2FXO", + "C1F2UISR4431SK9=", + "SM-X-PVDM-3000=", + "NIM-2BRI-NT/TE-RF", + "ISR4431-V/K9-RF", + "NIM-8MFT-T1/E1=", + "NIM-LTEA-LA", + "MEM-4400-2G=", + "NIM-PVDM-256-RF", + "SM-X-PVDM-500=", + "SM-X-24FXS/4FXO-WS", + "PVDM4-256++=", + "SSD-SATA-400G=", + "NIM-4G-LTE-GA=", + "C1A2UISR4400SK9", + "SM-X-16FXS/2FXO", + "NIM-1MFT-T1/E1=", + "MEM-FLSH-4GU8G", + "C1F1AISR4431SK9=", + "SM-X-16FXS/2FXO-RF", + "SSD-SATA-200G=", + "NIM-SSD-RF", + "NIM-PVDM-256", + "SSD-SATA-800G", + "SSD-MSATA-50G=", + "NIM-SSD=", + "PWR-CC1-500WAC-WS", + "PWR-4430-DC", + "NIM-4MFT-T1/E1", + "NIM-VAB-A", + "PWR-4430-POE-AC", + "NIM-PVDM-128=", + "NIM-2MFT-T1/E1=", + "C1F1AISR4431SK9", + "MEM-44-4G", + "NIM-4FXO=", + "NIM-VAB-M", + "FL-44-PERF-K9", + "NIM-ES2-8-P=", + "FL-44-HSEC-K9", + "L-SP-LA-U-100-K9=", + "L-SP-LA-U-2.5K-K9=", + "NIM-4FXO-WS", + "ISR4431-SEC/K9-RF", + "SSD-M2SATA-480G=", + "MEM-4400-2G-RF", + "SSD-MSATA-400G=", + "C-NIM-2T=", + "NIM-4MFT-T1/E1-WS", + "SSD-SATA-800G=", + "PVDM4-32-WS", + "NIM-PVDM-32-WS", + "NIM-SSD-X", + "C1F2UISR4431SK9", + "NIM-LTEA-EA-WS", + "C1AUUISR4400SK9=", + "C1F1UISR4400SK9", + "ISR4431/K9-WS", + "SM-X-NIM-ADPTR", + "NIM-4BRI-NT/TE=", + "NIM-2MFT-T1/E1-WS", + "ISR4431-AXV/K9", + "MEM-FLSH-4U8G-WS", + "NIM-2BRI-NT/TE", + "NIM-4G-LTE-GA-WS", + "ISR4351-SEC/K9-WS", + "SSD-MSATA-100G", + "MEM-FLSH-4U8G", + "PVDM4-128", + "SM-X-8FXS/12FXO", + "NIM-2GE-CU-SFP-WS", + "NIM-VAB-M=", + "NIM-1MFT-T1/E1++=", + "NIM-VA-B-WS", + "NIM-PVDM-128-WS", + "MEM-FLSH-32G=", + "SSD-M2SATA-480G-RF", + "SSD-SATA-400G-RF", + "NIM-VA-B=", + "NIM-2FXO-WS", + "NIM-1CE1T1-PRI-WS", + "PWR-4430-AC-RF", + "L-18-HSEC-K9", + "NIM-8MFT-T1/E1-WS", + "ACS-4430-FANASSY=", + "SM-X-72FXS=" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "284389362", + "productName": "Cisco 4451-X Integrated Services Router", + "productId": [ + "SM-X-PVDM-1000", + "NIM-VA-B-RF", + "SSD-M2SATA-480G", + "C-SM-40G8M2X", + "SM-F-BLANK", + "NIM-4BRI-NT/TE-WS", + "SM-X-PVDM-1000=", + "SISR4400NPEK9-175", + "PVDM4-128++=", + "C1-CISCO4451/K9", + "NIM-2BRI-NT/TE-WS", + "PVDM4-32-RF", + "ISR4451XVSEC/K9-WS", + "L-SP-LA-E-100-K9=", + "SM-X-NIM-ADPTR-WS", + "SSD-SATA-400G", + "NIM-VAB-M-WS", + "ISR4451-X/K9-RF", + "NIM-4FXS=", + "NIM-2B-S/T=", + "PVDM4-64-WS", + "SM-X-PVDM-500", + "E100S-MEM-UDIMM8G", + "ISR4451-X-AXV/K9", + "NIM-LTEA-EA=", + "NIM-4FXS", + "PVDM4-32", + "L-SP-LA-U-25-K9=", + "L-SP-LA-W-25-K9=", + "L-SP-LA-E-25-K9=", + "E100SMEMUDIMM8G-RF", + "MEM-FLSH-4G=", + "MEM-FLSH-8U16G", + "NIM-4FXS-WS", + "NIM-4FXO", + "SM-F-BLANK=", + "C1AUUISR4400SK9", + "SSD-MSATA-200G", + "ISR4451-X-V/K9-WS", + "NIM-2GE-CU-SFP-RF", + "PWR-4430-DC-RF", + "SISR4400UK9-175", + "SM-X-24FXS/4FXO=", + "SISR44V2UK9175", + "PVDM4-128-RF", + "SM-X-PVDM-1000-RF", + "ISR4451-X/K9++", + "NIM-PVDM-64-RF", + "C1F1AISR4451SK9", + "NIM-X-SSD", + "L-SP-LA-E-50-K9=", + "NIM-8MFT-T1/E1", + "NIM-1CE1T1-PRI-RF", + "PVDM4-256=", + "SSD-SATA-200G-RF", + "NIM-4FXO-RF", + "ISR4451-X-VSEC/K9", + "NIM-1MFT-T1/E1", + "L-SP-LA-W-2.5K-K9=", + "MEM-FLSH-4U16G-RF", + "PVDM4-32=", + "NIM-PVDM-128", + "MEM-FLSH-4U8G-RF", + "MEM-4400-DP-2GU4G", + "NIM-LTEA-EA-RF", + "MEM-FLSH-4U16G", + "C1A2UISR4400SK9=", + "ISR4451-X-SEC/K9", + "ACS-4430-RM-19=", + "SSD-MSATA-400G", + "NIM-SSD", + "FL-44-PERF-K9=", + "NIM-ES2-8-P-RF", + "NIM-VAB-M-RF", + "ISR4451-X/K9-WS", + "NIM-X-SSD=", + "ACS-4430-BEZEL=", + "NIM-2FXS/4FXO=", + "NIM-4E/M-RF", + "PVDM4-64", + "L-SP-LA-W-50-K9=", + "L-SP-LA-U-50-K9=", + "LL-EAR-4451=", + "NIM-PVDM-32-RF", + "SSD-MSATA-200G=", + "L-SP-LA-W-500-K9=", + "E100S-MEM-UDIMM8G=", + "NIM-4G-LTE-ST-RF", + "ISR4451-X-AX/K9", + "SM-X-64A=", + "SM-X-PVDM-2000", + "NIM-1CE1T1-PRI=", + "NIM-2FXS-RF", + "PVDM4-256-WS", + "NIM-PVDM-64-WS", + "C1F1AISR4451SK9=", + "ISR4451-X-AX/K9-RF", + "NIM-4BRI-NT/TE", + "PWR-4430-DC-WS", + "SM-X-72FXS-RF", + "NIM-2FXS/4FXO-WS", + "NIM-VAB-A-WS", + "C1AUAISR4400SK9=", + "NIM-4G-LTE-VZ", + "NIM-4G-LTE-GA", + "NIM-SSD-X=", + "SM-X-NIM-ADPTR-RF", + "MEM-4300-4GU16G", + "NIM-4G-LTE-NA-WS", + "SM-X-8FXS/12FXO-WS", + "NIM-2FXS=", + "NIM-SSD-WS", + "NIM-2MFT-T1/E1", + "SM-X-PVDM-3000", + "NIM-8MFT-T1/E1++=", + "NIM-VA-B", + "ISR4451-X-SECK9-WS", + "SSD-MSATA-50G", + "PVDM4-32++=", + "NIM-2GE-CU-SFP=", + "SM-X-72FXS", + "NIM-1MFT-T1/E1-WS", + "C1F1UISR4400SK9=", + "SSD-MSATA-100G=", + "L-SL-44-SEC-K9=", + "PVDM4-128=", + "NIM-4FXS-RF", + "PVDM4-128-WS", + "NIM-2MFT-T1/E1++=", + "ACS-4450-RM-19=", + "ISR4451-X-V/K9", + "SM-X-PVDM-2000=", + "PVDM4-64=", + "NIM-4G-LTE-ST=", + "NIM-4MFT-T1/E1=", + "NIMASYNC-BRA", + "ISR4451-UCSE-D/K9", + "NIM-4G-LTE-VZ=", + "NIM-2B-S/T", + "NIM-LTEA-LA=", + "NIM-1CE1T1-PRI", + "SSD-C8530-480G", + "L-SP-LA-W-5K-K9=", + "NIM-PVDM-32=", + "NIM-4MFT-T1/E1++=", + "SM-X-PVDM-3000-RF", + "ISR4451-UCSE-S/K9", + "NIM-2FXS/4FXO", + "L-SP-LA-W-1K-K9=", + "SM-X-72FXS-WS", + "NIM-4G-LTE-GA-RF", + "SM-X-NIM-ADPTR++=", + "ACS-4450-FANASSY=", + "L-SP-LA-U-1K-K9=", + "NIM-2FXS-WS", + "PVDM4-256", + "NIM-2BRI-NT/TE=", + "PWR-4430-DC/2", + "NIM-8MFT-T1/E1-RF", + "C1AUPISR4400SK9", + "NIM-LTEA-LA-WS", + "NIM-VAB-A-RF", + "ISR4451-DNA-RF", + "NIM-4G-LTE-NA-RF", + "C1F2UISR4451SK9", + "ISR4451XWAAS-200G", + "NIM-2MFT-T1/E1-RF", + "NIM-4E/M=", + "NIM-1MFT-T1/E1-RF", + "C1F2UISR4451SK9=", + "L-SP-LA-U-500-K9=", + "NIM-2FXO-RF", + "L-SP-LA-E-1K-K9=", + "L-SP-LA-E-2.5K-K9=", + "NIM-PVDM-256-WS", + "ISR4451-X-AXVK9-WS", + "MEM-FLSH-4GU16G", + "NIM-4MFT-T1/E1-RF", + "NIM-4E/M-WS", + "L-SP-LA-W-100-K9=", + "C-SM-16G4M2X", + "PVDM4-64++=", + "NIM-2GE-CU-SFP", + "NIM-PVDM-64", + "SM-X-NIM-ADPTR=", + "NIMASYNC-BRA=", + "NIM-PVDM-256=", + "NIM-2FXS/4FXO-RF", + "NIM-ES2-8-P", + "NIM-2FXO=", + "PVDM4-256-RF", + "SI-ISR4451-IWAN/K9", + "SM-X-16FXS/2FXO-WS", + "SSD-MSATA-200G-RF", + "SM-X-PVDM-500-RF", + "FL-44-HSEC-K9=", + "NIM-PVDM-32", + "SSD-SATA-200G", + "ACS-4450-FANASSY", + "SM-X-64A-RF", + "L-SP-LA-P-25-K9=", + "NIM-4BRI-NT/TE-RF", + "NIM-VAB-A=", + "NIM-4B-S/T=", + "SM-X-24FXS/4FXO", + "SMASYNC-BRA", + "NIM-LTEA-EA", + "ISR4451-XSEC/K9-RF", + "PVDM4-64-RF", + "L-SP-LA-U-5K-K9=", + "NIM-4E/M", + "L-SP-LA-E-500-K9=", + "NIM-2FXS", + "ISR4451XVSEC/K9-RF", + "ACS-4430-RM-23=", + "SISR44V2NPEK9175", + "NIM-PVDM-64=", + "ISR4451-PM20", + "ACS-4450FANASSY-RF", + "NIM-ES2-8-P-WS", + "ACS-4450-BEZEL=", + "L-SP-LA-E-5K-K9=", + "NIM-2FXO", + "SM-X-PVDM-3000=", + "NIM-2BRI-NT/TE-RF", + "ISR4451-DNA", + "SMASYNC-BRA=", + "NIM-8MFT-T1/E1=", + "NIM-LTEA-LA", + "MEM-4400-2G=", + "NIM-PVDM-256-RF", + "SM-X-PVDM-500=", + "SM-X-24FXS/4FXO-WS", + "C8300-2N2S-6T-RF", + "PVDM4-256++=", + "SSD-SATA-400G=", + "NIM-4G-LTE-GA=", + "C1A2UISR4400SK9", + "SM-X-16FXS/2FXO", + "NIM-1MFT-T1/E1=", + "MEM-FLSH-4GU8G", + "SSD-SATA-200G=", + "NIM-SSD-RF", + "NIM-PVDM-256", + "C1F1PISR4400SK9", + "ISR4451-X-V/K9-RF", + "SSD-SATA-800G", + "SSD-MSATA-50G=", + "NIM-SSD=", + "NIM-4B-S/T", + "MEM-4300-4GU16G=", + "NIM-4MFT-T1/E1", + "NIM-VAB-A", + "NIM-PVDM-128=", + "NIM-2MFT-T1/E1=", + "MEM-44-4G", + "NIM-4FXO=", + "NIM-VAB-M", + "FL-44-PERF-K9", + "NIM-ES2-8-P=", + "FL-44-HSEC-K9", + "L-SP-LA-U-100-K9=", + "L-SP-LA-U-2.5K-K9=", + "NIM-4FXO-WS", + "SSD-M2SATA-480G=", + "MEM-4400-2G-RF", + "SSD-MSATA-400G=", + "NIM-4MFT-T1/E1-WS", + "SSD-SATA-800G=", + "PVDM4-32-WS", + "NIM-PVDM-32-WS", + "NIM-SSD-X", + "NIM-LTEA-EA-WS", + "ACS-4450-RM-23=", + "C1AUUISR4400SK9=", + "C1F1UISR4400SK9", + "SM-X-NIM-ADPTR", + "ISR4451-X-AXVK9-RF", + "NIM-4BRI-NT/TE=", + "NIM-2MFT-T1/E1-WS", + "MEM-FLSH-4U8G-WS", + "NIM-2BRI-NT/TE", + "NIM-4G-LTE-GA-WS", + "SM-X-64A", + "SSD-MSATA-100G", + "MEM-FLSH-4U8G", + "PVDM4-128", + "SM-X-8FXS/12FXO", + "NIM-2GE-CU-SFP-WS", + "NIM-VAB-M=", + "NIM-1MFT-T1/E1++=", + "NIM-VA-B-WS", + "ISR4451-X/K9", + "NIM-PVDM-128-WS", + "SSD-M2SATA-480G-RF", + "SSD-SATA-400G-RF", + "NIM-VA-B=", + "NIM-2FXO-WS", + "NIM-1CE1T1-PRI-WS", + "ISR4451X-AX-AKC/K9", + "L-18-HSEC-K9", + "NIM-8MFT-T1/E1-WS", + "ISR4451-X-AX/K9-WS", + "SM-X-72FXS=" + ], + "sites": [], + "show": false, + "userDefined": false + } + ], + "ccolatest": true, + "importSourceType": "CCO", + "ccoreverseSync": true + }, + { + "imageUuid": "dec828c5-ca9a-4420-bba1-5807e6264115", + "name": "asr1000-rommon.173-1r.SPA.pkg", + "family": "asr1001x", + "version": "17.3(1r)", + "displayVersion": "17.3(1r)", + "md5Checksum": "99589534e8e6b32fe43584f03f4de40e", + "shaCheckSum": "78775c32c1abad15ec6d913cd4c2b22fe776b2dcb9177df6b7c2cf909b109ba8cf4a7a59e23c06ac782513ff6c0a8c8526638fc0a41c98273d93a89d4f097eb4", + "createdTime": "2024-11-05 01:45:47.177", + "imageType": "ROMMON_SW", + "fileSize": "41059376 bytes", + "imageName": "asr1000-rommon.173-1r.SPA.pkg", + "applicationType": "UNKNOWN", + "fileServiceId": "a302afb7-fca7-489c-812d-9e341394b3a3", + "isTaggedGolden": false, + "imageSource": "CCO", + "extendedAttributes": { + "deviceMNEId": "344434", + "encryption_software_indicator": "N", + "image_description": "ROMMON image for Cisco ASR1K platform series", + "metadata_trans_id": "122582950155809808", + "image_size": "41059376", + "release_fcs_date": "14/Sep/2020", + "software_type_id": "282046486", + "image_guid": "E79AAB8399A1C00BBC052AA559313855A7B0F787", + "field_notice_url": "https://www.cisco.com/c/en/us/support/routers/asr-1000-series-aggregation-services-routers/products-field-notices-list.html", + "mdf_id": "284932298", + "field_notices": "Field Notices", + "udi": "PID:%20ASR1001-X%20VID:%20V06,%20SN:%20FXS2502Q2HC" + }, + "vendor": "CISCO", + "imageIntegrityStatus": "VERIFIED", + "applicableDevicesForImage": [ + { + "mdfId": "282993510", + "productName": "Cisco ASR 1013 Router", + "productId": [ + "FLASR1-BB-8K", + "M-ASR1K-HDD-40GB", + "C1AUUASR14KRK9=", + "C1AUUASR1100RK9", + "M-ASR1001HX-16GB", + "SSD-M2SATA-480G", + "M-ASR1K-RP3-64GB=", + "L-FLASR1-BB-48K", + "C8500L-FAN-1R=", + "M-ASR1K-RP3-16GB", + "M-ASR1K-RP332GB-WS", + "FLA1-EPA-1X40GE=", + "C1AUAASR116KSK9=", + "ASR1000X-DC-950W", + "C1AUUASR1500RK9=", + "ASR1002HX-FAN-RF", + "C1F1AASR1K9", + "FLASR1-FWNAT-RED=", + "ASR1013-ACS", + "ASR1013-ESP-BAFFL=", + "FLASR1-IPB-AES=", + "C8500-FAN-1R=", + "L-SP-LA-E-100-K9=", + "FLASR1-IOSRED-RTU=", + "FLASR1-BB-RTU=", + "ASR1001X-ACS-RF", + "CAB-ACB10A-RA", + "C8500-FAN-1R", + "M-ASR1K-EUSB-2GB=", + "ASR1000X-DC950W-RF", + "FLASR1-CGV6-RTU", + "M-ASR1K-RP2-8GB", + "M-ASR1K-SSD-100GB=", + "ASR1000X-DC-950W=", + "M-ASR1KSSD100GB-WS", + "CAB-ACU", + "L-FLASR1-IPSECRTU=", + "L-SP-LA-W-25-K9=", + "L-SP-LA-U-25-K9=", + "L-SP-LA-E-25-K9=", + "FLASR1-BB-8K=", + "FLASR1-NSIGHT-RTU=", + "ASR1013/06PWRAC-RF", + "C1AUAASR11KRK9=", + "C1AUAASR1K9", + "M-ASR1001HX16GB-RF", + "L-FLASR1LI-RTU=", + "FLASR1-LI-RTU", + "M-ASR1K-EUSB-1GB=", + "L-FLA1-EPA-1X40GE=", + "SSD-M2SATA-240G", + "ASR1000X-AC-750W=", + "ASR1000X-AC-750W", + "FLASR1-BB-64K=", + "L-FLASR1FWNAT-RED=", + "ASR1000-6TGE", + "ASR1002HX-FAN", + "ASR1013", + "CAB-ACA", + "L-SP-LA-E-50-K9=", + "CAB-AC=", + "L-FLASR1-AES-AIS=", + "CAB-ACI", + "FLASR1-NAT64-2M", + "ASR1013-SB-WS", + "ASR1013/06-PWR-DC", + "FLASR1-CGV6-RTU=", + "FLASR1-AVC-UPG=", + "L-SP-LA-W-2.5K-K9=", + "C1AUUASR11KSK9=", + "ASR1000-6TGE-WS", + "ASR1002-PWR-AC", + "A1K-1RU-REAR=", + "C1AUUASR14KSK9=", + "C1-ASR1013/K9=", + "C1AUAASR116KRK9=", + "FLASR1-BB-64K", + "FLASR1-SBC-4K", + "FLASR1-FW-SGT-RTU", + "CAB-MPO24-2XMPO12", + "FLASR1-VPLS-RTU=", + "M-ASR1K-HDD-80GB", + "CAB-RTN-1013-AC", + "FLASR1-IPSEC-RTU", + "FLASR1-OTV-RTU=", + "ASR10002T+20X1GEWS", + "M-ASR1K-RP3-16GB=", + "ASR1013-FIPS-KIT=", + "L-SP-LA-W-50-K9=", + "L-SP-LA-U-50-K9=", + "FLASR1-FWNAT-RED", + "M-ASR1K-RP1-4GB", + "ASR1013/06PWRDC-RF", + "C1AUAASR11KSK9=", + "C1AUAASR116KRK9", + "FLASR1-FW-RTU=", + "FLASR1-FPI-RTU", + "ASR1000X-AC-1100W=", + "C1AUAASR1500RK9=", + "FLASR1-SBC-H248=", + "L-SP-LA-W-500-K9=", + "M-ASR1K-SSD-32GB", + "M-ASR1K-SSD-32GB=", + "CAB-ACI=", + "ASR1001-PWR-AC-WS", + "L-FLASR1-BB-32K=", + "FLASR1-BB-32K=", + "M-ASR1K-RP3-64GB", + "ASR1001-PWR-AC", + "M-ASR1K-SSD-400GB=", + "ASR1002HX-FAN-WS", + "ASR1000-2T+20X1GE", + "FLASR1-NTT-ADVSVC", + "FLASR1-SBC-RTU", + "ASR1013-RP-FILLR", + "C1AUAASR11KRK9", + "C1AUUASR1500SK9=", + "M-ASR1K-RP3-8GB", + "C8530L-FAN-8S8X4Y", + "C8530L-FAN-8S2X2Y", + "C1AUAASR1500RK9", + "ASR1000XAC1100W-RF", + "C8400-FAN-8455-G2", + "CAB-RTN-1013-AC=", + "ASR1000-6TGE-RF", + "FLASR1-CGN-2M", + "FLASR1-LI=", + "C8530L-FAN-8S2X2Y=", + "FLASR1-IPSEC=", + "C1AUUASR11KRK9=", + "M-ASR1K-SSD-200GB", + "L-FLASR1-BB-4K=", + "L-FLASR1FPI-RTU=", + "FLASR1-NSIGHT-RTU", + "C1AUAASR116KSK9", + "ASR1000-RP-BLANK", + "MEMUSB-8GB", + "L-FLASR1-FW-RTU=", + "ASR1001-ACS-RF", + "CAB-MPO24-2XMPO12=", + "FLASR1-SBC-4K=", + "FLASR1-BB-16K=", + "M-ASR1001HX-16GB=", + "FLASR1-SBC-500=", + "FLASR1-CGN-6M=", + "FLASR1-LI-RTU=", + "ASR1KX-AC-750W=", + "M-ASR1KSSD400GB-WS", + "CAB-AC", + "M-ASR1K-RP3-32GB=", + "MEMUSB-8GB-RF", + "MEMUSB-1024FT=", + "ASR1013-WS", + "C1AUAASR11KSK9", + "FLASR1-BB-32K", + "ASR1013=", + "ASR1013-RP-BAFFLE=", + "ASR1013-ESP-BAFFL", + "ASR1002HX-FAN=", + "ASR1002-PWR-AC-WS", + "C1AUAASR1500SK9", + "FLASR1-AVC-RTU=", + "L-SP-LA-W-5K-K9=", + "M-ASR1K-HDD-80GB=", + "SSD-C8530-480G", + "M-ASR1K-HDD80GB-RF", + "ASR1013-SB", + "M-ASR1K-EUSB1GB-WS", + "L-SP-LA-W-1K-K9=", + "L-FLASR1-BB-64K=", + "C1F1AASR1K9=", + "L-SP-LA-U-1K-K9=", + "ASR1001-PWR-AC-RF", + "M-ASR1K-RP316GB-WS", + "ASR1K13R2-40G-HAK9", + "ASR1K-AZURE-EXP-RT", + "FLASR1-FW-RTU", + "C1AUUASR1K9", + "ASR1000X-AC750W-RF", + "CAB-AC-WS", + "L-FLASR1-BB-64K", + "FLSA1-MACSEC40G", + "C1F1UASR1K9", + "FLASR1-IPB-AIS=", + "ASR1013-BB", + "M-ASR1K-RP1-4GB-RF", + "ASR1013-RF", + "FLASR1-SBC-16K", + "ASR1000-2T+20X1GE=", + "ASR10002T+20X1GERF", + "C1AUUASR116KRK9=", + "C1-ASR1013/K9", + "M-ASR1K-RP2-16GB=", + "C1AUUASR11KSK9", + "L-SP-LA-U-500-K9=", + "ASR1KX-DC-950WR-RF", + "FLASR1-BB-4K=", + "C1F1UASR1K9=", + "ASR1K-CLOUD-EDGE", + "L-SP-LA-E-2.5K-K9=", + "M-ASR1K-RP364GB-WS", + "FLASR1-NAT64-2M=", + "L-SP-LA-E-1K-K9=", + "CAB-ACU=", + "FLSA1-MACSEC100G", + "FLASR1-LI", + "ASR1013-RP-BAFFLE", + "C8400-FAN-8455-G2=", + "ASR1001HX-FAN=", + "M-ASR1K-RP2-8GB=", + "C1AUAASR14KRK9=", + "L-SP-LA-W-100-K9=", + "L-FLSASR1-SHELL", + "ASR1000X-FAN-RF", + "FLASR1-CGN-6M", + "ASR1001-PWR-AC=", + "ASR1013/06PWRAC-WS", + "FLASR1-SBC-RTU=", + "FLASR1-VPLS-RTU", + "ASR1013-ESP-FILLR", + "FLASR1-SBC-16K=", + "ASR1013/06-PWR-AC=", + "FLASR1-SBC-500", + "FLASR1-LISP-RTU=", + "ASR1002-PWR-AC-RF", + "C1AUUASR1K9=", + "FLASR1-NTT-ADVSVC=", + "ASR1000X-FAN=", + "FLASR1-OTV-RTU", + "FLASR1-H248-RTU", + "M-ASR1K-SSD-100GB", + "L-FLASR1-BB-RTU=", + "FLSA1-MACSEC40G=", + "C1AUAASR14KSK9=", + "C1AUAASR1K9=", + "ASR1001HX-FAN", + "FLASR1-IPSEC-RTU=", + "C1AUUASR11KRK9", + "L-SP-LA-P-25-K9=", + "PWR-CH2-950WDCR=", + "ASR1K-WAN-CORE", + "M-ASR1KSSD200GB-WS", + "MEMUSB-1024FT-RF", + "L-SP-LA-U-5K-K9=", + "L-SP-LA-E-500-K9=", + "ASR1013-CB", + "L-FLASR1IPB-AISK9=", + "FLASR1-BB-48K", + "FLASR1-BB-RTU", + "C1AUAASR1500SK9=", + "C1AUAASR1100RK9=", + "FLSA1-MACSEC100G=", + "L-SP-LA-E-5K-K9=", + "C1AUUASR116KSK9=", + "FLASR1-IPSEC", + "FLASR1-AVC-RTU", + "FLASR1-BB-48K=", + "M-ASR1K-RP1-4GB=", + "FLASR1-BB-4K", + "ASR1000X-FAN", + "FLASR1-H248-RTU=", + "C8300-FAN-2R-RF", + "ASR1013/06-PWR-DC=", + "L-FLASR1IPB-AESK9=", + "PWR-CH1-950WDCR-WS", + "FLASR1-IOSRED-RTU", + "FLASR1-FW-SGT-RTU=", + "FLASR1-CRYPTO-RTU", + "C1AUUASR1100RK9=", + "C1AUUASR14KRK9", + "C8400-FAN-8475-G2", + "ASR1000X-AC-1100W", + "ASR1013-ACS=", + "C1AUAASR14KSK9", + "C8530L-FAN-8S8X4Y=", + "PWR-CH2-950WDCR", + "ASR1KX-DC-950W-R=", + "M-ASR1K-RP3-8GB-WS", + "FLASR1-FW-GTP-RTU=", + "CAB-ACB10A-RA=", + "ASR1002-PWR-AC=", + "M-ASR1K-EUSB-1GB", + "M-ASR1K-SSD-400GB", + "A1K-2RU-REAR=", + "SSD-M2SATA-240G=", + "ASR1000X-HV-1100W=", + "FLASR1-FW-GTP-RTU", + "M-ASR1K-RP216GB-RF", + "MEMUSB-1024FT", + "C1AUUASR1500RK9", + "C1AUUASR116KRK9", + "L-SP-LA-U-100-K9=", + "L-SP-LA-U-2.5K-K9=", + "L-FLA1-MACSEC40G=", + "CAB-AC-RF", + "SSD-M2SATA-480G=", + "ASR1000-6TGE=", + "FLASR1-LISP-RTU", + "M-ASR1K-RP2-8GB-RF", + "MEMUSB-8GB=", + "L-FLASR1-BB-48K=", + "M-ASR1K-RP3-32GB", + "FLASR1-AES-AIS=", + "FLASR1-FPI-RTU=", + "C1AUUASR14KSK9", + "C1AUAASR1100RK9", + "M-ASR1K-RP3-8GB=", + "FLASR1-IPB-AISK9=", + "ASR1000X-FAN-WS", + "C1AUAASR14KRK9", + "L-FLA1-MACSEC100G=", + "CAB-ACA=", + "ASR1KX-HV-1100W-R", + "C8400-FAN-8475-G2=", + "FLASR1-CGN-2M=", + "M-ASR1K-EUSB-2GB", + "SL-ASR1-UC=", + "FLASR1-SBC-H248", + "M-ASR1K-RP2-16GB", + "FLASR1-BB-16K", + "M-ASR1K-EUSB1GB-RF", + "C8500L-FAN-1R", + "ASR1KX-HV-1100W-R=", + "FLASR1-IPB-AESK9=", + "C1AUUASR116KSK9", + "ASR1013/06PWRDC-WS", + "SSD-M2SATA-480G-RF", + "SL-ASR1-UC", + "M-ASR1K-SSD-200GB=", + "ASR1KX-AC-750W", + "CAB-ACB16A-RA", + "C1AUUASR1500SK9", + "ASR1013-SB-RF", + "CAB-ACU-RF", + "ASR1013/06-PWR-AC", + "L-FLASR1IOSREDRTU=", + "ASR1000X-HV-1100W", + "FLASR1-CRYPTO-RTU=", + "SPWIFIWO-BUN", + "ASR1KX-DC-950W-R" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "284146581", + "productName": "Cisco ASR 1002-X Router", + "productId": [ + "FLASR1-BB-8K", + "FLSA1-2X-5-36G", + "M-ASR1K-HDD-40GB", + "C1AUUASR1100RK9", + "M-ASR1001HX-16GB", + "M-ASR1K-RP3-64GB=", + "C8500L-FAN-1R=", + "FLA1-EPA-1X40GE=", + "ASR1000X-DC-950W", + "ASR1002-PWR-DC", + "FLASR1-FWNAT-RED=", + "FLASR1-IOSRED-RTU=", + "FLASR1-BB-RTU=", + "ASR1002X-10G-K9-RF", + "CAB-ACB10A-RA", + "ASR1002X10GHAK9-RF", + "ASR1000X-DC950W-RF", + "M-ASR1K-RP2-8GB", + "M-ASR1K-SSD-100GB=", + "CAB-ACU", + "C1-ASR1002-X/K9", + "L-SP-LA-W-25-K9=", + "FLASR1-BB-8K=", + "FLASR1-NSIGHT-RTU=", + "ASR1013/06PWRAC-RF", + "C1AUAASR11KRK9=", + "C1AUAASR1K9", + "M-ASR1002X-8GB", + "M-ASR1001HX16GB-RF", + "L-FLASR1LI-RTU=", + "FLASR1-LI-RTU", + "ASR1000X-AC-750W=", + "ASR1000X-AC-750W", + "ASR1002X-10G-HA-K9", + "L-FLSA1-2X-5-36G=", + "FLASR1-BB-64K=", + "ASR1002X-5G-HA-K9", + "ASR1002X-HD-BLANK=", + "CAB-ACA", + "CAB-AC=", + "ASR1002-PWR-DC-WS", + "L-FLASR1-AES-AIS=", + "CAB-ACI", + "FLASR1-NAT64-2M", + "M-ASR1002X-16GB=", + "ASR1013/06-PWR-DC", + "EPA-2X40GE", + "L-SP-LA-W-2.5K-K9=", + "ASR1002-PWR-AC", + "A1K-1RU-REAR=", + "ASR1002-PWR-BLANK=", + "FLSA1-2X-IPS4G=", + "ASR1002-RMK=", + "SL-ASR1X-PLR-K9=", + "ASR1002-10G/K9-RF", + "FLASR1-FW-SGT-RTU", + "MASR1002XHD320G-RF", + "MASR1002X-HD-320G", + "FLASR1-VPLS-RTU=", + "ASR1002X10GVPNK9WS", + "ASR1002X-20G-SECK9", + "M-ASR1K-RP3-16GB=", + "M-ASR1002X-8GB=", + "L-FLSA1-2X-5-10G=", + "L-SP-LA-W-50-K9=", + "C1AUAASR11KSK9=", + "ASR1000X-AC-1100W=", + "FLSA1-2X-10-36G", + "C1AUAASR1500RK9=", + "FLASR1-SBC-H248=", + "L-SP-LA-W-500-K9=", + "CAB-ACI=", + "ASR1001-PWR-AC-WS", + "L-FLASR1-BB-32K=", + "FLASR1-BB-32K=", + "M-ASR1K-RP3-64GB", + "ASR1002-10G/K9", + "M-ASR1K-SSD-400GB=", + "M-ASR1K-RP3-8GB", + "C8530L-FAN-8S8X4Y", + "ASR1002X-5G-SHAK9", + "EPA-2X40GE-WS", + "L-FLSA1-2X-10-20G=", + "C8400-FAN-8455-G2", + "FLASR1-CGN-2M", + "M-ASR1K-SSD-200GB", + "L-FLASR1-BB-4K=", + "FLSA1-2X-10-36G=", + "ASR1002X-10G-K9", + "ASR1000-RP-BLANK", + "ASR1002X-20G-VPNK9", + "L-FLASR1-FW-RTU=", + "ASR1001-ACS-RF", + "FLASR1-SBC-4K=", + "ASR1002-10G/K9-WS", + "ASR1002X-10G-SHAK9", + "M-ASR1002X-8GB-WS", + "SL-ASR1-RP-PLR-K9", + "M-ASR1001HX-16GB=", + "FLASR1-CGN-6M=", + "FLASR1-LI-RTU=", + "ASR1KX-AC-750W=", + "M-ASR1KSSD400GB-WS", + "CAB-AC", + "M-ASR1K-RP3-32GB=", + "MEMUSB-8GB-RF", + "M-ASR1002X-4GB-RF", + "FLSA1-2X-5-36G=", + "ASR1002X-5G-K9-RF", + "L-SP-LA-W-5K-K9=", + "ASR1002-PWR-DC-RF", + "M-ASR1K-EUSB1GB-WS", + "L-FLASR1-BB-64K=", + "L-SP-LA-U-1K-K9=", + "M-ASR1K-RP316GB-WS", + "ASR1K-AZURE-EXP-RT", + "FLASR1-FW-RTU", + "CAB-AC-WS", + "L-FLASR1-BB-64K", + "C1AUUASR1K9", + "C1F1UASR1K9", + "ASR1002-FIPS-KIT=", + "M-ASR1K-RP1-4GB-RF", + "ASR1002X-36G-VPNK9", + "ASR1002-X-DNA", + "ASR1000-2T+20X1GE=", + "C1AUUASR116KRK9=", + "ASR1KX-DC-950WR-RF", + "ASR1002X10GVPNK9RF", + "C1F1UASR1K9=", + "M-ASR1K-RP364GB-WS", + "L-SP-LA-E-1K-K9=", + "L-FLSA1-2X-5-20G=", + "FLASR1-LI", + "ASR1001HX-FAN=", + "M-ASR1K-RP2-8GB=", + "L-SP-LA-W-100-K9=", + "ASR1002X5GSHAK9-WS", + "FLASR1-VPLS-RTU", + "ASR1002X-10G-K9-WS", + "FLASR1-SBC-16K=", + "M-ASR1002X-8GB-RF", + "FLASR1-SBC-500", + "ASR1002X-36G-SECK9", + "C1AUUASR1K9=", + "SL-ASR1-RP-PLR-K9=", + "ASR1002-ACS=", + "L-FLASR1-BB-RTU=", + "C1AUAASR1K9=", + "FLASR1-IPSEC-RTU=", + "L-SP-LA-P-25-K9=", + "ASR1K-WAN-CORE", + "L-FLASR1IPB-AISK9=", + "FLASR1-BB-48K", + "FLASR1-BB-RTU", + "C1AUAASR1100RK9=", + "ASR1002X-AIS-AX", + "ASR1002X-5G-VPNK9", + "C1AUUASR116KSK9=", + "FLASR1-IPSEC", + "FLASR1-AVC-RTU", + "FLASR1-BB-48K=", + "M-ASR1K-RP1-4GB=", + "FLASR1-H248-RTU=", + "C8300-FAN-2R-RF", + "FLASR1-IOSRED-RTU", + "FLASR1-FW-SGT-RTU=", + "FLASR1-CRYPTO-RTU", + "ASR1002X-AIS-AX-WS", + "C1AUUASR14KRK9", + "FLSA1-2X-5-20G", + "C1AUAASR14KSK9", + "C8530L-FAN-8S8X4Y=", + "PWR-CH2-950WDCR", + "M-ASR1K-RP3-8GB-WS", + "FLASR1-FW-GTP-RTU=", + "CAB-ACB10A-RA=", + "M-ASR1K-EUSB-1GB", + "M-ASR1K-SSD-400GB", + "A1K-2RU-REAR=", + "C1AUUASR1500RK9", + "ASR1002X-ACS=", + "L-SP-LA-U-2.5K-K9=", + "CAB-AC-RF", + "ASR1000-6TGE=", + "FLASR1-FPI-RTU=", + "FLSA1-2X-5-10G", + "C1AUUASR14KSK9", + "ASR1002-PWR-BLANK", + "ASR1002X-CB", + "C1AUAASR14KRK9", + "ASR1002X-ACS", + "MASR1002X-HD-320G=", + "CAB-ACA=", + "ASR1002-ACS-RF", + "FLASR1-CGN-2M=", + "SL-ASR1X-PLR-K9", + "M-ASR1K-EUSB-2GB", + "ASR1002-5G-HA/K9", + "FLASR1-BB-16K", + "M-ASR1K-EUSB1GB-RF", + "ASR1002X-36G-NB-RF", + "FLASR1-IPB-AESK9=", + "ASR1002X-AX", + "M-ASR1K-SSD-200GB=", + "C1AUUASR1500SK9", + "L-FLASR1IOSREDRTU=", + "ASR1002X5GVPNK9-RF", + "C1AUUASR14KRK9=", + "SSD-M2SATA-480G", + "MASR1002X-HD-160G", + "ASR1002X-CB-RF", + "L-FLASR1-BB-48K", + "M-ASR1K-RP3-16GB", + "M-ASR1K-RP332GB-WS", + "M-ASR1002X-4GB=", + "C1AUAASR116KSK9=", + "C1AUUASR1500RK9=", + "ASR1002HX-FAN-RF", + "C1F1AASR1K9", + "FLASR1-IPB-AES=", + "C8500-FAN-1R=", + "L-SP-LA-E-100-K9=", + "ASR1001X-ACS-RF", + "M-ASR1002X-16GB-RF", + "C8500-FAN-1R", + "M-ASR1K-EUSB-2GB=", + "FLASR1-CGV6-RTU", + "ASR1002X-AIS-AX-RF", + "ASR1000X-DC-950W=", + "ASR1002X-SB-WS", + "M-ASR1KSSD100GB-WS", + "ASR1002X-36G-NB", + "L-FLASR1-IPSECRTU=", + "L-SP-LA-U-25-K9=", + "L-SP-LA-E-25-K9=", + "ASR1002X-20G-K9", + "C1-ASR1002-X/K9=", + "M-ASR1K-EUSB-1GB=", + "L-FLA1-EPA-1X40GE=", + "SSD-M2SATA-240G", + "L-FLASR1FWNAT-RED=", + "ASR1000-6TGE", + "ASR1002HX-FAN", + "ASR1002X-36G-NB-WS", + "L-SP-LA-E-50-K9=", + "ASR1002X-5G-SECK9", + "FLASR1-CGV6-RTU=", + "FLASR1-AVC-UPG=", + "ASR1002X-20G-SHAK9", + "C1AUUASR11KSK9=", + "ASR1000-6TGE-WS", + "C1AUUASR14KSK9=", + "C1AUAASR116KRK9=", + "FLASR1-BB-64K", + "ASR1002-24VPWR-DC=", + "FLASR1-SBC-4K", + "FLSA1-2X-IPS4G", + "ASR1002X-10G-SECK9", + "CAB-MPO24-2XMPO12", + "ASR1002X-HD-BLANK", + "M-ASR1002X-16GB", + "M-ASR1K-HDD-80GB", + "FLASR1-IPSEC-RTU", + "FLASR1-OTV-RTU=", + "ASR10002T+20X1GEWS", + "L-SP-LA-U-50-K9=", + "FLASR1-FWNAT-RED", + "M-ASR1K-RP1-4GB", + "ASR1013/06PWRDC-RF", + "C1AUAASR116KRK9", + "FLASR1-FW-RTU=", + "FLASR1-FPI-RTU", + "M-ASR1K-SSD-32GB", + "M-ASR1K-SSD-32GB=", + "ASR1001-PWR-AC", + "FLSA1-2X-20-36G", + "ASR1002-ACS", + "ASR1002HX-FAN-WS", + "ASR1000-2T+20X1GE", + "FLASR1-NTT-ADVSVC", + "FLASR1-SBC-RTU", + "C1AUAASR11KRK9", + "C1AUUASR1500SK9=", + "ASR1002X-5G-K9", + "ASR1002-5G/K9", + "C8530L-FAN-8S2X2Y", + "C1AUAASR1500RK9", + "ASR1000XAC1100W-RF", + "FLSA1-2X-20-36G=", + "ASR1000-6TGE-RF", + "ASR1002-PWR-DC=", + "FLASR1-LI=", + "C8530L-FAN-8S2X2Y=", + "FLASR1-IPSEC=", + "C1AUUASR11KRK9=", + "ASR1002X-36G-K9", + "L-FLASR1FPI-RTU=", + "ASR1002X5GSHAK9-RF", + "FLASR1-NSIGHT-RTU", + "C1AUAASR116KSK9", + "ASR1002-X=", + "MEMUSB-8GB", + "CAB-MPO24-2XMPO12=", + "FLASR1-BB-16K=", + "FLASR1-SBC-500=", + "MEMUSB-1024FT=", + "ASR1002-5GHA/K9-RF", + "C1AUAASR11KSK9", + "FLASR1-BB-32K", + "ASR1002HX-FAN=", + "L-FLSA1-2X-IPS4G", + "ASR1002-PWR-AC-WS", + "C1AUAASR1500SK9", + "FLASR1-AVC-RTU=", + "M-ASR1K-HDD-80GB=", + "SSD-C8530-480G", + "M-ASR1K-HDD80GB-RF", + "FLSA1-2X-10-20G", + "L-SP-LA-W-1K-K9=", + "C1F1AASR1K9=", + "ASR1001-PWR-AC-RF", + "ASR1000X-AC750W-RF", + "FLSA1-MACSEC40G", + "FLASR1-IPB-AIS=", + "ASR1002-FIPSKIT-RF", + "FLASR1-SBC-16K", + "L-FLSA1-2X-IPS4G=", + "ASR10002T+20X1GERF", + "M-ASR1K-RP2-16GB=", + "C1AUUASR11KSK9", + "L-FLSA1-2X-20-36G=", + "L-SP-LA-U-500-K9=", + "FLASR1-BB-4K=", + "ASR1002-24VPWR-DC", + "ASR1K-CLOUD-EDGE", + "L-SP-LA-E-2.5K-K9=", + "FLASR1-NAT64-2M=", + "CAB-ACU=", + "FLSA1-MACSEC100G", + "C8400-FAN-8455-G2=", + "ASR1002-X", + "M-ASR1002X-4GB", + "C1AUAASR14KRK9=", + "L-FLSASR1-SHELL", + "ASR1000X-FAN-RF", + "FLSA1-2X-5-10G=", + "FLASR1-CGN-6M", + "ASR1001-PWR-AC=", + "ASR1002X-5G-K9-WS", + "ASR100224VPWRDC-RF", + "FLASR1-SBC-RTU=", + "ASR1013/06-PWR-AC=", + "ASR1002X10GSECK-RF", + "FLASR1-LISP-RTU=", + "ASR1002-PWR-AC-RF", + "FLASR1-NTT-ADVSVC=", + "ASR1002X-36G-HA-K9", + "ASR1000X-FAN=", + "FLASR1-OTV-RTU", + "FLASR1-H248-RTU", + "M-ASR1K-SSD-100GB", + "FLSA1-MACSEC40G=", + "C1AUAASR14KSK9=", + "ASR1001HX-FAN", + "C1AUUASR11KRK9", + "PWR-CH2-950WDCR=", + "M-ASR1KSSD200GB-WS", + "ASR1002-X-RF", + "MEMUSB-1024FT-RF", + "ASR1002X-SB-RF", + "L-SP-LA-U-5K-K9=", + "L-SP-LA-E-500-K9=", + "ASR1002X5GVPNK9-WS", + "C1AUAASR1500SK9=", + "FLSA1-MACSEC100G=", + "L-SP-LA-E-5K-K9=", + "L-FLSA1-2X-10-36G=", + "ASR1002X-36G-K9-RF", + "FLASR1-BB-4K", + "MASR1002XHD320G-WS", + "ASR1000X-FAN", + "ASR1013/06-PWR-DC=", + "ASR1002X-10G-VPNK9", + "L-FLASR1IPB-AESK9=", + "PWR-CH1-950WDCR-WS", + "ASR1002X-20G-HA-K9", + "C1AUUASR1100RK9=", + "ASR1002-X-IWANPM", + "C8400-FAN-8475-G2", + "ASR1000X-AC-1100W", + "M-ASR1002X-16GB-WS", + "ASR1KX-DC-950W-R=", + "ASR1002-PWR-AC=", + "FLSA1-2X-5-20G=", + "SSD-M2SATA-240G=", + "ASR1000X-HV-1100W=", + "FLASR1-FW-GTP-RTU", + "M-ASR1K-RP216GB-RF", + "MEMUSB-1024FT", + "FLSA1-2X-10-20G=", + "C1AUUASR116KRK9", + "ASR1002X-ACS-WS", + "ASR1002X-AES-AX", + "MASR1002X-HD-160G=", + "L-SP-LA-U-100-K9=", + "L-FLA1-MACSEC40G=", + "SSD-M2SATA-480G=", + "FLASR1-LISP-RTU", + "ASR1002X-CB-WS", + "M-ASR1K-RP2-8GB-RF", + "MEMUSB-8GB=", + "ASR1002-5G/K9-RF", + "L-FLASR1-BB-48K=", + "ASR1002-X-WS", + "M-ASR1K-RP3-32GB", + "ASR1002X-SB", + "FLASR1-AES-AIS=", + "C1AUAASR1100RK9", + "M-ASR1K-RP3-8GB=", + "ASR1002X-36G-SHAK9", + "FLASR1-IPB-AISK9=", + "ASR1000X-FAN-WS", + "L-FLA1-MACSEC100G=", + "ASR1002X10GHAK9-WS", + "ASR1KX-HV-1100W-R", + "C8400-FAN-8475-G2=", + "SL-ASR1-UC=", + "FLASR1-SBC-H248", + "M-ASR1K-RP2-16GB", + "C8500L-FAN-1R", + "ASR1KX-HV-1100W-R=", + "C1AUUASR116KSK9", + "SSD-M2SATA-480G-RF", + "SL-ASR1-UC", + "ASR1KX-AC-750W", + "CAB-ACB16A-RA", + "CAB-ACU-RF", + "ASR1013/06-PWR-AC", + "ASR1000X-HV-1100W", + "FLASR1-CRYPTO-RTU=", + "ASR1KX-DC-950W-R" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286285163", + "productName": "Cisco ASR 1006-X Router", + "productId": [ + "FLASR1-BB-8K", + "C1AUUASR14KRK9=", + "C1AUUASR1100RK9", + "M-ASR1001HX-16GB", + "SSD-M2SATA-480G", + "M-ASR1K-RP3-64GB=", + "L-FLASR1-BB-48K", + "C8500L-FAN-1R=", + "M-ASR1K-RP3-16GB", + "M-ASR1K-RP332GB-WS", + "FLA1-EPA-1X40GE=", + "C1AUAASR116KSK9=", + "ASR1000X-DC-950W", + "C1AUUASR1500RK9=", + "ASR1002HX-FAN-RF", + "C1F1AASR1K9", + "FLASR1-FWNAT-RED=", + "FLASR1-IPB-AES=", + "C8500-FAN-1R=", + "L-SP-LA-E-100-K9=", + "FLASR1-IOSRED-RTU=", + "FLASR1-BB-RTU=", + "ASR1001X-ACS-RF", + "ASR1006X-CB", + "C8500-FAN-1R", + "ASR1000X-DC950W-RF", + "FLASR1-CGV6-RTU", + "M-ASR1K-SSD-100GB=", + "ASR1000X-DC-950W=", + "ASR1006-X", + "M-ASR1KSSD100GB-WS", + "CAB-ACU", + "L-FLASR1-IPSECRTU=", + "L-SP-LA-W-25-K9=", + "L-SP-LA-U-25-K9=", + "L-SP-LA-E-25-K9=", + "FLASR1-BB-8K=", + "FLASR1-NSIGHT-RTU=", + "C1AUAASR11KRK9=", + "C1AUAASR1K9", + "M-ASR1001HX16GB-RF", + "L-FLASR1LI-RTU=", + "FLASR1-LI-RTU", + "L-FLA1-EPA-1X40GE=", + "SSD-M2SATA-240G", + "FLASR1-BB-64K=", + "L-FLASR1FWNAT-RED=", + "ASR1000-6TGE", + "ASR1002HX-FAN", + "ASR1006-FIPSKIT-RF", + "CAB-ACA", + "L-SP-LA-E-50-K9=", + "CAB-AC=", + "L-FLASR1-AES-AIS=", + "CAB-ACI", + "FLASR1-NAT64-2M", + "FLASR1-CGV6-RTU=", + "FLASR1-AVC-UPG=", + "L-SP-LA-W-2.5K-K9=", + "C1AUUASR11KSK9=", + "ASR1000-6TGE-WS", + "A1K-1RU-REAR=", + "C1AUUASR14KSK9=", + "C1AUAASR116KRK9=", + "FLASR1-BB-64K", + "SL-ASR1X-PLR-K9=", + "UCS-CPU-E52637D=", + "FLASR1-SBC-4K", + "ASR1006-X-DNA", + "FLASR1-FW-SGT-RTU", + "CAB-MPO24-2XMPO12", + "FLASR1-VPLS-RTU=", + "ASR1006X-ACS", + "CAB-9K20A-NA=", + "FLASR1-IPSEC-RTU", + "FLASR1-OTV-RTU=", + "CAB-9K20A-NA", + "ASR10002T+20X1GEWS", + "M-ASR1K-RP3-16GB=", + "CAB-1900W-EU", + "L-SP-LA-W-50-K9=", + "L-SP-LA-U-50-K9=", + "FLASR1-FWNAT-RED", + "C1AUAASR11KSK9=", + "C1AUAASR116KRK9", + "FLASR1-FW-RTU=", + "FLASR1-FPI-RTU", + "C1AUAASR1500RK9=", + "FLASR1-SBC-H248=", + "L-SP-LA-W-500-K9=", + "M-ASR1K-SSD-32GB", + "M-ASR1K-SSD-32GB=", + "CAB-ACI=", + "L-FLASR1-BB-32K=", + "FLASR1-BB-32K=", + "M-ASR1K-RP3-64GB", + "M-ASR1K-SSD-400GB=", + "ASR1002HX-FAN-WS", + "ASR1000-2T+20X1GE", + "FLASR1-NTT-ADVSVC", + "FLASR1-SBC-RTU", + "C1AUAASR11KRK9", + "C1AUUASR1500SK9=", + "M-ASR1K-RP3-8GB", + "C8530L-FAN-8S8X4Y", + "CAB-1900W-US1", + "CAB-1900W-US2", + "C8530L-FAN-8S2X2Y", + "C1AUAASR1500RK9", + "C8400-FAN-8455-G2", + "ASR1000-6TGE-RF", + "CAB-1900W-UK-RF", + "FLASR1-CGN-2M", + "FLASR1-LI=", + "C8530L-FAN-8S2X2Y=", + "FLASR1-IPSEC=", + "C1AUUASR11KRK9=", + "M-ASR1K-SSD-200GB", + "L-FLASR1-BB-4K=", + "ASR1006X-ACS=", + "L-FLASR1FPI-RTU=", + "ASR1006-ACS-RF", + "FLASR1-NSIGHT-RTU", + "C1AUAASR116KSK9", + "MEMUSB-8GB", + "L-FLASR1-FW-RTU=", + "ASR1001-ACS-RF", + "CAB-MPO24-2XMPO12=", + "FLASR1-SBC-4K=", + "ASR1006-X-RF", + "SL-ASR1-RP-PLR-K9", + "FLASR1-BB-16K=", + "M-ASR1001HX-16GB=", + "FLASR1-SBC-500=", + "CAB-1900W-US1=", + "FLASR1-CGN-6M=", + "FLASR1-LI-RTU=", + "ASR1KX-AC-750W=", + "M-ASR1KSSD400GB-WS", + "CAB-AC", + "M-ASR1K-RP3-32GB=", + "MEMUSB-8GB-RF", + "MEMUSB-1024FT=", + "C1AUAASR11KSK9", + "FLASR1-BB-32K", + "ASR1002HX-FAN=", + "C1AUAASR1500SK9", + "FLASR1-AVC-RTU=", + "L-SP-LA-W-5K-K9=", + "SSD-C8530-480G", + "L-SP-LA-W-1K-K9=", + "CAB-1900W-US2=", + "L-FLASR1-BB-64K=", + "C1F1AASR1K9=", + "L-SP-LA-U-1K-K9=", + "M-ASR1K-RP316GB-WS", + "ASR1K-AZURE-EXP-RT", + "FLASR1-FW-RTU", + "C1AUUASR1K9", + "CAB-AC-WS", + "L-FLASR1-BB-64K", + "FLSA1-MACSEC40G", + "C1F1UASR1K9", + "FLASR1-IPB-AIS=", + "FLASR1-SBC-16K", + "ASR1000-2T+20X1GE=", + "ASR10002T+20X1GERF", + "C1AUUASR116KRK9=", + "C1AUUASR11KSK9", + "L-SP-LA-U-500-K9=", + "ASR1KX-DC-950WR-RF", + "FLASR1-BB-4K=", + "C1F1UASR1K9=", + "ASR1K-CLOUD-EDGE", + "L-SP-LA-E-2.5K-K9=", + "M-ASR1K-RP364GB-WS", + "FLASR1-NAT64-2M=", + "L-SP-LA-E-1K-K9=", + "CAB-ACU=", + "FLSA1-MACSEC100G", + "FLASR1-LI", + "C8400-FAN-8455-G2=", + "ASR1001HX-FAN=", + "C1AUAASR14KRK9=", + "L-SP-LA-W-100-K9=", + "L-FLSASR1-SHELL", + "CAB-1900W-INT", + "ASR1000X-FAN-RF", + "FLASR1-CGN-6M", + "ASR1006-X=", + "FLASR1-SBC-RTU=", + "FLASR1-VPLS-RTU", + "FLASR1-SBC-16K=", + "FLASR1-SBC-500", + "FLASR1-LISP-RTU=", + "C1AUUASR1K9=", + "FLASR1-NTT-ADVSVC=", + "SL-ASR1-RP-PLR-K9=", + "FLASR1-OTV-RTU", + "FLASR1-H248-RTU", + "M-ASR1K-SSD-100GB", + "L-FLASR1-BB-RTU=", + "FLSA1-MACSEC40G=", + "C1AUAASR14KSK9=", + "C1AUAASR1K9=", + "ASR1001HX-FAN", + "FLASR1-IPSEC-RTU=", + "C1AUUASR11KRK9", + "L-SP-LA-P-25-K9=", + "CAB-1900W-UK", + "PWR-CH2-950WDCR=", + "CAB-1900W-US2-RF", + "ASR1K-WAN-CORE", + "M-ASR1KSSD200GB-WS", + "MEMUSB-1024FT-RF", + "L-SP-LA-U-5K-K9=", + "L-SP-LA-E-500-K9=", + "CAB-1900W-EU=", + "L-FLASR1IPB-AISK9=", + "ASR1006-X-WS", + "FLASR1-BB-48K", + "FLASR1-BB-RTU", + "C1AUAASR1500SK9=", + "C1AUAASR1100RK9=", + "FLSA1-MACSEC100G=", + "L-SP-LA-E-5K-K9=", + "C1AUUASR116KSK9=", + "FLASR1-IPSEC", + "FLASR1-AVC-RTU", + "FLASR1-BB-48K=", + "FLASR1-BB-4K", + "FLASR1-H248-RTU=", + "C8300-FAN-2R-RF", + "L-FLASR1IPB-AESK9=", + "PWR-CH1-950WDCR-WS", + "FLASR1-IOSRED-RTU", + "FLASR1-FW-SGT-RTU=", + "FLASR1-CRYPTO-RTU", + "C1AUUASR1100RK9=", + "C1AUUASR14KRK9", + "ASR1006X-FIPS-KIT=", + "C8400-FAN-8475-G2", + "CAB-1900W-UK=", + "C1AUAASR14KSK9", + "C8530L-FAN-8S8X4Y=", + "PWR-CH2-950WDCR", + "ASR1KX-DC-950W-R=", + "M-ASR1K-RP3-8GB-WS", + "FLASR1-FW-GTP-RTU=", + "M-ASR1K-SSD-400GB", + "A1K-2RU-REAR=", + "SSD-M2SATA-240G=", + "ASR1000X-HV-1100W=", + "FLASR1-FW-GTP-RTU", + "MEMUSB-1024FT", + "C1AUUASR1500RK9", + "C1AUUASR116KRK9", + "C1-ASR1006X/K9=", + "L-SP-LA-U-100-K9=", + "L-SP-LA-U-2.5K-K9=", + "L-FLA1-MACSEC40G=", + "CAB-AC-RF", + "SSD-M2SATA-480G=", + "ASR1000-6TGE=", + "FLASR1-LISP-RTU", + "MEMUSB-8GB=", + "L-FLASR1-BB-48K=", + "M-ASR1K-RP3-32GB", + "FLASR1-AES-AIS=", + "FLASR1-FPI-RTU=", + "C1AUUASR14KSK9", + "C1AUAASR1100RK9", + "M-ASR1K-RP3-8GB=", + "FLASR1-IPB-AISK9=", + "C1AUAASR14KRK9", + "L-FLA1-MACSEC100G=", + "CAB-ACA=", + "C1-ASR1006X/K9", + "ASR1KX-HV-1100W-R", + "C8400-FAN-8475-G2=", + "FLASR1-CGN-2M=", + "SL-ASR1X-PLR-K9", + "CAB-1900W-INT=", + "SL-ASR1-UC=", + "FLASR1-SBC-H248", + "FLASR1-BB-16K", + "C8500L-FAN-1R", + "ASR1KX-HV-1100W-R=", + "FLASR1-IPB-AESK9=", + "C1AUUASR116KSK9", + "SSD-M2SATA-480G-RF", + "SL-ASR1-UC", + "M-ASR1K-SSD-200GB=", + "ASR1KX-AC-750W", + "C1AUUASR1500SK9", + "CAB-ACU-RF", + "L-FLASR1IOSREDRTU=", + "ASR1000X-HV-1100W", + "FLASR1-CRYPTO-RTU=", + "ASR1006-X-DNA-PF", + "ASR1KX-DC-950W-R" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286288594", + "productName": "Cisco ASR 1002-HX Router", + "productId": [ + "FLASR1-BB-8K", + "FLSA1-2X-5-36G", + "C1AUUASR14KRK9=", + "C1AUUASR1100RK9", + "M-ASR1001HX-16GB", + "SSD-M2SATA-480G", + "M-ASR1K-RP3-64GB=", + "L-FLASR1-BB-48K", + "C8500L-FAN-1R=", + "M-ASR1K-RP3-16GB", + "M-ASR1K-RP332GB-WS", + "FLA1-EPA-1X40GE=", + "C1AUAASR116KSK9=", + "MEM-C8530L-16GB-D=", + "ASR1000X-DC-950W", + "C1AUUASR1500RK9=", + "ASR1002HX-FAN-RF", + "C1F1AASR1K9", + "ASR1002-HX-DNA", + "FLASR1-FWNAT-RED=", + "FLASR1-IPB-AES=", + "C8500-FAN-1R=", + "L-SP-LA-E-100-K9=", + "FLASR1-IOSRED-RTU=", + "FLASR1-BB-RTU=", + "MEM-C8400-16GB", + "ASR1001X-ACS-RF", + "ASR1002-HX-RF", + "C8500-FAN-1R", + "ASR1000X-DC950W-RF", + "FLASR1-CGV6-RTU", + "M-ASR1K-SSD-100GB=", + "ASR1000X-DC-950W=", + "SL-ASR1-SEC-HX=", + "M-ASR1KSSD100GB-WS", + "MEM-C8500L-16GB", + "CAB-ACU", + "L-FLASR1-IPSECRTU=", + "L-SP-LA-W-25-K9=", + "L-SP-LA-U-25-K9=", + "L-SP-LA-E-25-K9=", + "FLASR1-BB-8K=", + "ASR1002-HX-DNA-RF", + "FLASR1-NSIGHT-RTU=", + "ASR1002-HX", + "C1AUAASR11KRK9=", + "ASR1002HX-ACS=", + "C1AUAASR1K9", + "M-ASR1001HX16GB-RF", + "ASR1002HX-6GE-2TE", + "L-FLASR1LI-RTU=", + "MEM-C8400-64GB", + "FLASR1-LI-RTU", + "L-FLA1-EPA-1X40GE=", + "SSD-M2SATA-240G", + "MEM-C8500L-64GB", + "MEM-C8500L-32GB=", + "MEM-C8500-32GB-RF", + "FLASR1-BB-64K=", + "L-FLASR1FWNAT-RED=", + "ASR1000-6TGE", + "ASR1002HX-FAN", + "MEM-C8530-32GB", + "CAB-ACA", + "L-SP-LA-E-50-K9=", + "CAB-AC=", + "L-FLASR1-AES-AIS=", + "CAB-ACI", + "FLASR1-NAT64-2M", + "MEM-C8530-64GB=", + "FLASR1-CGV6-RTU=", + "FLASR1-AVC-UPG=", + "MEM-C8400-16-32G", + "L-SP-LA-W-2.5K-K9=", + "C1AUUASR11KSK9=", + "ASR1000-6TGE-WS", + "A1K-1RU-REAR=", + "C1AUUASR14KSK9=", + "FLSA1-2X-IPS4G=", + "C1AUAASR116KRK9=", + "FLASR1-BB-64K", + "FLASR1-SBC-4K", + "FLSA1-2X-IPS4G", + "FLASR1-FW-SGT-RTU", + "CAB-MPO24-2XMPO12", + "MEM-C8500L-32GB-WS", + "FLASR1-VPLS-RTU=", + "MEM-C8530L-32GB=", + "FLASR1-IPSEC-RTU", + "FLASR1-OTV-RTU=", + "ASR10002T+20X1GEWS", + "M-ASR1K-RP3-16GB=", + "L-SP-LA-W-50-K9=", + "L-SP-LA-U-50-K9=", + "MEM-C8530L-64GB=", + "FLASR1-FWNAT-RED", + "C1AUAASR11KSK9=", + "C1AUAASR116KRK9", + "FLASR1-FW-RTU=", + "FLASR1-FPI-RTU", + "FLSA1-2X-10-36G", + "C1AUAASR1500RK9=", + "FLASR1-SBC-H248=", + "L-SP-LA-W-500-K9=", + "M-ASR1K-SSD-32GB", + "M-ASR1K-SSD-32GB=", + "CAB-ACI=", + "SL-ASR1-HX-PLR-K9=", + "L-FLASR1-BB-32K=", + "FLASR1-BB-32K=", + "MEM-C8500L-64GB=", + "M-ASR1K-RP3-64GB", + "FLSA1-2X-20-36G", + "SL-ASR1-SEC", + "M-ASR1K-SSD-400GB=", + "ASR1002HX-FAN-WS", + "MEM-C8500-16GB-RF", + "ASR1000-2T+20X1GE", + "FLASR1-NTT-ADVSVC", + "FLASR1-SBC-RTU", + "ASR1002HX-IPSECHW", + "C1AUAASR11KRK9", + "C1AUUASR1500SK9=", + "ASR1002-HX-WS", + "M-ASR1K-RP3-8GB", + "C8530L-FAN-8S8X4Y", + "C8530L-FAN-8S2X2Y", + "C1AUAASR1500RK9", + "FLSA1-2X-20-36G=", + "C8400-FAN-8455-G2", + "ASR1000-6TGE-RF", + "FLASR1-CGN-2M", + "FLASR1-LI=", + "C8530L-FAN-8S2X2Y=", + "FLASR1-IPSEC=", + "C1AUUASR11KRK9=", + "M-ASR1K-SSD-200GB", + "L-FLASR1-BB-4K=", + "ASR1002HX-ACS", + "MEM-C8530-32GB=", + "MEM-C8530L-16-32G", + "L-FLASR1FPI-RTU=", + "FLASR1-NSIGHT-RTU", + "FLSA1-2X-10-36G=", + "C1AUAASR116KSK9", + "SL-ASR1-APP=", + "MEMUSB-8GB", + "L-FLASR1-FW-RTU=", + "ASR1001-ACS-RF", + "CAB-MPO24-2XMPO12=", + "FLASR1-SBC-4K=", + "FLASR1-BB-16K=", + "M-ASR1001HX-16GB=", + "MEM-C8400-64GB=", + "FLASR1-SBC-500=", + "FLASR1-CGN-6M=", + "FLASR1-LI-RTU=", + "ASR1KX-AC-750W=", + "M-ASR1KSSD400GB-WS", + "CAB-AC", + "M-ASR1K-RP3-32GB=", + "MEM-C8530L-16-32G=", + "MEMUSB-8GB-RF", + "MEMUSB-1024FT=", + "SL-ASR1-SEC=", + "C1AUAASR11KSK9", + "FLASR1-BB-32K", + "FLSA1-2X-5-36G=", + "ASR1002HX-FAN=", + "C1AUAASR1500SK9", + "FLASR1-AVC-RTU=", + "L-SP-LA-W-5K-K9=", + "SSD-C8530-480G", + "MEM-C8400-16-32G=", + "FLSA1-2X-10-20G", + "L-SP-LA-W-1K-K9=", + "L-FLASR1-BB-64K=", + "M-ASR1002HX-16GB", + "C1F1AASR1K9=", + "L-SP-LA-U-1K-K9=", + "M-ASR1K-RP316GB-WS", + "ASR1K-AZURE-EXP-RT", + "FLASR1-FW-RTU", + "MEM-C8400-32GB=", + "MEM-C8530L-16GB=", + "C1AUUASR1K9", + "CAB-AC-WS", + "L-FLASR1-BB-64K", + "FLSA1-MACSEC40G", + "C1F1UASR1K9", + "FLASR1-IPB-AIS=", + "ASR1002-FIPSKIT-RF", + "FLASR1-SBC-16K", + "ASR1002HX-IPSECHW=", + "ASR1000-2T+20X1GE=", + "ASR10002T+20X1GERF", + "C1AUUASR116KRK9=", + "MEM-C8500L-16GB=", + "C1AUUASR11KSK9", + "MEM-C8500L-32GB-RF", + "C1-ASR1002-HX/K9", + "L-SP-LA-U-500-K9=", + "ASR1KX-DC-950WR-RF", + "FLASR1-BB-4K=", + "C1F1UASR1K9=", + "ASR1K-CLOUD-EDGE", + "L-SP-LA-E-2.5K-K9=", + "M-ASR1K-RP364GB-WS", + "FLASR1-NAT64-2M=", + "L-SP-LA-E-1K-K9=", + "CAB-ACU=", + "FLSA1-MACSEC100G", + "FLASR1-LI", + "C8400-FAN-8455-G2=", + "MEM-C8530L-64GB", + "ASR1001HX-FAN=", + "C1AUAASR14KRK9=", + "L-SP-LA-W-100-K9=", + "L-FLSASR1-SHELL", + "ASR1000X-FAN-RF", + "FLSA1-2X-5-10G=", + "FLASR1-CGN-6M", + "FLASR1-SBC-RTU=", + "M-ASR1002HX16GB-RF", + "FLASR1-VPLS-RTU", + "FLASR1-SBC-16K=", + "FLASR1-SBC-500", + "M-ASR1002HX-32GB", + "FLASR1-LISP-RTU=", + "C1AUUASR1K9=", + "FLASR1-NTT-ADVSVC=", + "FLASR1-OTV-RTU", + "FLASR1-H248-RTU", + "C1-ASR1002-HX/K9=", + "M-ASR1K-SSD-100GB", + "L-FLASR1-BB-RTU=", + "FLSA1-MACSEC40G=", + "C1AUAASR14KSK9=", + "C1AUAASR1K9=", + "ASR1001HX-FAN", + "FLASR1-IPSEC-RTU=", + "C1AUUASR11KRK9", + "L-SP-LA-P-25-K9=", + "PWR-CH2-950WDCR=", + "ASR1K-WAN-CORE", + "M-ASR1KSSD200GB-WS", + "MEMUSB-1024FT-RF", + "MEM-C8530L-16GB", + "L-SP-LA-U-5K-K9=", + "L-SP-LA-E-500-K9=", + "L-FLASR1IPB-AISK9=", + "FLASR1-BB-48K", + "SL-ASR1-APP", + "FLASR1-BB-RTU", + "C1AUAASR1500SK9=", + "C1AUAASR1100RK9=", + "FLSA1-MACSEC100G=", + "L-SP-LA-E-5K-K9=", + "C1-ASR1001-HX/K9", + "C1AUUASR116KSK9=", + "FLASR1-IPSEC", + "FLASR1-AVC-RTU", + "FLASR1-BB-48K=", + "FLASR1-BB-4K", + "FLASR1-H248-RTU=", + "C8300-FAN-2R-RF", + "L-FLASR1IPB-AESK9=", + "PWR-CH1-950WDCR-WS", + "FLASR1-IOSRED-RTU", + "FLASR1-FW-SGT-RTU=", + "FLASR1-CRYPTO-RTU", + "C1AUUASR1100RK9=", + "C1AUUASR14KRK9", + "FLSA1-2X-5-20G", + "C8400-FAN-8475-G2", + "C1AUAASR14KSK9", + "C8530L-FAN-8S8X4Y=", + "PWR-CH2-950WDCR", + "ASR1KX-DC-950W-R=", + "M-ASR1K-RP3-8GB-WS", + "FLASR1-FW-GTP-RTU=", + "FLSA1-2X-5-20G=", + "M-ASR1K-SSD-400GB", + "A1K-2RU-REAR=", + "SSD-M2SATA-240G=", + "ASR1000X-HV-1100W=", + "FLASR1-FW-GTP-RTU", + "M-ASR1002HX-16GB=", + "MEM-C8530L-32GB", + "MEMUSB-1024FT", + "C1AUUASR1500RK9", + "FLSA1-2X-10-20G=", + "M-ASR1002HX16GB-WS", + "C1AUUASR116KRK9", + "SL-ASR1-HX-PLR-K9", + "L-SP-LA-U-100-K9=", + "L-SP-LA-U-2.5K-K9=", + "L-FLA1-MACSEC40G=", + "CAB-AC-RF", + "SSD-M2SATA-480G=", + "ASR1000-6TGE=", + "FLASR1-LISP-RTU", + "MEM-C8530L-16GB-D", + "SL-ASR1-SEC-HX", + "MEMUSB-8GB=", + "L-FLASR1-BB-48K=", + "M-ASR1K-RP3-32GB", + "FLASR1-AES-AIS=", + "M-ASR1002HX-32GB=", + "FLASR1-FPI-RTU=", + "C1AUUASR14KSK9", + "FLSA1-2X-5-10G", + "C1AUAASR1100RK9", + "M-ASR1K-RP3-8GB=", + "FLASR1-IPB-AISK9=", + "C1AUAASR14KRK9", + "L-FLA1-MACSEC100G=", + "CAB-ACA=", + "MEM-C8400-32GB", + "ASR1KX-HV-1100W-R", + "C8400-FAN-8475-G2=", + "MEM-C8400-16GB=", + "FLASR1-CGN-2M=", + "SL-ASR1-UC=", + "FLASR1-SBC-H248", + "MEM-C8500L-32GB", + "FLASR1-BB-16K", + "C8500L-FAN-1R", + "ASR1KX-HV-1100W-R=", + "FLASR1-IPB-AESK9=", + "ASR1002HXIPSECHWRF", + "C1AUUASR116KSK9", + "SSD-M2SATA-480G-RF", + "MEM-C8530-64GB", + "SL-ASR1-UC", + "M-ASR1K-SSD-200GB=", + "ASR1002-HX=", + "ASR1KX-AC-750W", + "C1AUUASR1500SK9", + "CAB-ACU-RF", + "L-FLASR1IOSREDRTU=", + "ASR1000X-HV-1100W", + "FLASR1-CRYPTO-RTU=", + "ASR1KX-DC-950W-R" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "281782372", + "productName": "Cisco ASR 1004 Router", + "productId": [ + "FLASR1-BB-8K", + "ASR1K4R2-40G-VPNK9", + "M-ASR1K-HDD-40GB", + "C1AUUASR14KRK9=", + "C1AUUASR1100RK9", + "M-ASR1001HX-16GB", + "ASR1004-CB", + "SSD-M2SATA-480G", + "M-ASR1K-RP3-64GB=", + "L-FLASR1-BB-48K", + "C8500L-FAN-1R=", + "M-ASR1K-RP3-16GB", + "ASR1004-ACS-WS", + "M-ASR1K-RP332GB-WS", + "FLA1-EPA-1X40GE=", + "C1AUAASR116KSK9=", + "ASR1004-PWR-DC", + "ASR1000X-DC-950W", + "C1AUUASR1500RK9=", + "ASR1002HX-FAN-RF", + "C1F1AASR1K9", + "FLASR1-FWNAT-RED=", + "FLASR1-IPB-AES=", + "C8500-FAN-1R=", + "ASR1004-BBA", + "L-SP-LA-E-100-K9=", + "FLASR1-IOSRED-RTU=", + "FLASR1-BB-RTU=", + "ASR1001X-ACS-RF", + "CAB-ACB10A-RA", + "C8500-FAN-1R", + "ASR1004-20G-HA/K9", + "C1-ASR1004/K9=", + "M-ASR1K-EUSB-2GB=", + "ASR1000X-DC950W-RF", + "FLASR1-CGV6-RTU", + "M-ASR1K-RP2-8GB", + "M-ASR1K-SSD-100GB=", + "ASR1000X-DC-950W=", + "ASR1000-RP1-WS", + "M-ASR1KSSD100GB-WS", + "CAB-ACU", + "L-FLASR1-IPSECRTU=", + "L-SP-LA-W-25-K9=", + "L-SP-LA-U-25-K9=", + "L-SP-LA-E-25-K9=", + "ASR1004-SB", + "FLASR1-BB-8K=", + "ASR1004-RMK=", + "FLASR1-NSIGHT-RTU=", + "ASR1013/06PWRAC-RF", + "C1AUAASR11KRK9=", + "ASR1004-10G-SEC/K9", + "C1AUAASR1K9", + "M-ASR1001HX16GB-RF", + "L-FLASR1LI-RTU=", + "FLASR1-LI-RTU", + "M-ASR1K-EUSB-1GB=", + "L-FLA1-EPA-1X40GE=", + "SSD-M2SATA-240G", + "ASR1000X-AC-750W=", + "ASR1000X-AC-750W", + "ASR1004-PWR-DC=", + "ASR1000-SIP10-RF", + "FLASR1-BB-64K=", + "L-FLASR1FWNAT-RED=", + "ASR1000-6TGE", + "ASR1002HX-FAN", + "ASR1000-RP2-WS", + "ASR1004=", + "CAB-ACA", + "L-SP-LA-E-50-K9=", + "CAB-AC=", + "L-FLASR1-AES-AIS=", + "CAB-ACI", + "FLASR1-NAT64-2M", + "ASR1004-10G-FPI/K9", + "ASR1000-SIP10=", + "ASR1013/06-PWR-DC", + "FLASR1-CGV6-RTU=", + "FLASR1-AVC-UPG=", + "L-SP-LA-W-2.5K-K9=", + "C1AUUASR11KSK9=", + "ASR1000-6TGE-WS", + "ASR1002-PWR-AC", + "A1K-1RU-REAR=", + "ASR1004-20G-SHA/K9", + "C1AUUASR14KSK9=", + "C1AUAASR116KRK9=", + "FLASR1-BB-64K", + "ASR1004", + "ASR1004-FIPSKIT-RF", + "FLASR1-SBC-4K", + "FLASR1-FW-SGT-RTU", + "CAB-MPO24-2XMPO12", + "FLASR1-VPLS-RTU=", + "M-ASR1K-HDD-80GB", + "FLASR1-IPSEC-RTU", + "FLASR1-OTV-RTU=", + "ASR10002T+20X1GEWS", + "ASR1004-PWR-DC-WS", + "M-ASR1K-RP3-16GB=", + "ASR1K4R2-20G-VPNK9", + "ASR100420GVPNK9-RF", + "L-SP-LA-W-50-K9=", + "L-SP-LA-U-50-K9=", + "ASR1K4R2-20G-FPIK9", + "FLASR1-FWNAT-RED", + "M-ASR1K-RP1-4GB", + "ASR1013/06PWRDC-RF", + "C1AUAASR11KSK9=", + "C1AUAASR116KRK9", + "FLASR1-FW-RTU=", + "FLASR1-FPI-RTU", + "ASR1000X-AC-1100W=", + "ASR1004-20G-VPN/K9", + "C1AUAASR1500RK9=", + "FLASR1-SBC-H248=", + "L-SP-LA-W-500-K9=", + "M-ASR1K-SSD-32GB", + "M-ASR1K-SSD-32GB=", + "CAB-ACI=", + "ASR1001-PWR-AC-WS", + "L-FLASR1-BB-32K=", + "FLASR1-BB-32K=", + "M-ASR1K-RP3-64GB", + "ASR1001-PWR-AC", + "ASR1002-ACS", + "M-ASR1K-SSD-400GB=", + "ASR1002HX-FAN-WS", + "ASR1004-10G-SHA/K9", + "ASR1000-2T+20X1GE", + "FLASR1-NTT-ADVSVC", + "FLASR1-SBC-RTU", + "C1AUAASR11KRK9", + "C1AUUASR1500SK9=", + "ASR1000-SW-SPARECD", + "M-ASR1K-RP3-8GB", + "C8530L-FAN-8S8X4Y", + "ASR1K4R2-20G-HA/K9", + "C8530L-FAN-8S2X2Y", + "C1AUAASR1500RK9", + "ASR1000XAC1100W-RF", + "C8400-FAN-8455-G2", + "ASR1000-6TGE-RF", + "ASR1004-20G/K9", + "ASR1000-SPA", + "FLASR1-CGN-2M", + "FLASR1-LI=", + "C8530L-FAN-8S2X2Y=", + "FLASR1-IPSEC=", + "C1AUUASR11KRK9=", + "M-ASR1K-SSD-200GB", + "L-FLASR1-BB-4K=", + "L-FLASR1FPI-RTU=", + "ASR1004-RF", + "ASR1006-ACS-RF", + "FLASR1-NSIGHT-RTU", + "C1AUAASR116KSK9", + "ASR1000-RP-BLANK", + "MEMUSB-8GB", + "L-FLASR1-FW-RTU=", + "ASR1001-ACS-RF", + "CAB-MPO24-2XMPO12=", + "FLASR1-SBC-4K=", + "FLASR1-BB-16K=", + "M-ASR1001HX-16GB=", + "FLASR1-SBC-500=", + "FLASR1-CGN-6M=", + "FLASR1-LI-RTU=", + "ASR1KX-AC-750W=", + "M-ASR1KSSD400GB-WS", + "CAB-AC", + "M-ASR1K-RP3-32GB=", + "MEMUSB-8GB-RF", + "MEMUSB-1024FT=", + "C1AUAASR11KSK9", + "ASR1004-40G-NB-RF", + "FLASR1-BB-32K", + "ASR1004-PWR-AC", + "ASR1002HX-FAN=", + "ASR1K4R2-40G-SECK9", + "ASR1002-PWR-AC-WS", + "C1AUAASR1500SK9", + "FLASR1-AVC-RTU=", + "L-SP-LA-W-5K-K9=", + "M-ASR1K-HDD-80GB=", + "SSD-C8530-480G", + "ASR1K4R2-20G/K9", + "M-ASR1K-HDD80GB-RF", + "M-ASR1K-EUSB1GB-WS", + "L-SP-LA-W-1K-K9=", + "L-FLASR1-BB-64K=", + "C1F1AASR1K9=", + "ASR1004-40G-NB", + "L-SP-LA-U-1K-K9=", + "ASR1001-PWR-AC-RF", + "M-ASR1K-RP316GB-WS", + "ASR1K-AZURE-EXP-RT", + "FLASR1-FW-RTU", + "C1AUUASR1K9", + "ASR1000X-AC750W-RF", + "CAB-AC-WS", + "L-FLASR1-BB-64K", + "FLSA1-MACSEC40G", + "ASR1004-PWR-AC=", + "C1F1UASR1K9", + "FLASR1-IPB-AIS=", + "M-ASR1K-RP1-4GB-RF", + "FLASR1-SBC-16K", + "ASR1000-SIP10-WS", + "ASR1000-2T+20X1GE=", + "ASR10002T+20X1GERF", + "C1AUUASR116KRK9=", + "ASR1004-PWR-DC-RF", + "M-ASR1K-RP2-16GB=", + "C1AUUASR11KSK9", + "L-SP-LA-U-500-K9=", + "ASR1KX-DC-950WR-RF", + "ASR1000-SIP10", + "FLASR1-BB-4K=", + "C1F1UASR1K9=", + "ASR1K-CLOUD-EDGE", + "L-SP-LA-E-2.5K-K9=", + "M-ASR1K-RP364GB-WS", + "ASR1004-ACS=", + "FLASR1-NAT64-2M=", + "L-SP-LA-E-1K-K9=", + "CAB-ACU=", + "FLSA1-MACSEC100G", + "ASR1004-PWR-AC-WS", + "FLASR1-LI", + "C8400-FAN-8455-G2=", + "ASR1001HX-FAN=", + "ASR1004-20G-FPI/K9", + "M-ASR1K-RP2-8GB=", + "C1AUAASR14KRK9=", + "L-SP-LA-W-100-K9=", + "L-FLSASR1-SHELL", + "ASR1000X-FAN-RF", + "FLASR1-CGN-6M", + "ASR1001-PWR-AC=", + "ASR1001-IDC-4XT3", + "FLASR1-SBC-RTU=", + "FLASR1-VPLS-RTU", + "FLASR1-SBC-16K=", + "ASR1013/06-PWR-AC=", + "FLASR1-SBC-500", + "FLASR1-LISP-RTU=", + "ASR1002-PWR-AC-RF", + "C1AUUASR1K9=", + "FLASR1-NTT-ADVSVC=", + "ASR1004-ACS-RF", + "ASR1000X-FAN=", + "FLASR1-OTV-RTU", + "FLASR1-H248-RTU", + "ASR1004-10G/K9", + "ASR1004-20G-SEC/K9", + "M-ASR1K-SSD-100GB", + "L-FLASR1-BB-RTU=", + "FLSA1-MACSEC40G=", + "C1AUAASR14KSK9=", + "C1AUAASR1K9=", + "ASR1001HX-FAN", + "FLASR1-IPSEC-RTU=", + "ASR1006-ACS", + "C1AUUASR11KRK9", + "L-SP-LA-P-25-K9=", + "PWR-CH2-950WDCR=", + "ASR1K-WAN-CORE", + "M-ASR1KSSD200GB-WS", + "MEMUSB-1024FT-RF", + "L-SP-LA-U-5K-K9=", + "L-SP-LA-E-500-K9=", + "ASR1000-RP1-RF", + "L-FLASR1IPB-AISK9=", + "FLASR1-BB-48K", + "ASR1004-10G-VPN/K9", + "FLASR1-BB-RTU", + "ASR1K4R2-20G-SECK9", + "C1AUAASR1500SK9=", + "C1AUAASR1100RK9=", + "FLSA1-MACSEC100G=", + "L-SP-LA-E-5K-K9=", + "C1AUUASR116KSK9=", + "FLASR1-IPSEC", + "FLASR1-AVC-RTU", + "FLASR1-BB-48K=", + "M-ASR1K-RP1-4GB=", + "FLASR1-BB-4K", + "ASR1000X-FAN", + "FLASR1-H248-RTU=", + "C8300-FAN-2R-RF", + "ASR1013/06-PWR-DC=", + "ASR1004-WS", + "ASR1004-ACS", + "L-FLASR1IPB-AESK9=", + "PWR-CH1-950WDCR-WS", + "FLASR1-IOSRED-RTU", + "FLASR1-FW-SGT-RTU=", + "FLASR1-CRYPTO-RTU", + "C1AUUASR1100RK9=", + "C1AUUASR14KRK9", + "C8400-FAN-8475-G2", + "ASR1000X-AC-1100W", + "ASR1000-RP2-RF", + "C1AUAASR14KSK9", + "C8530L-FAN-8S8X4Y=", + "ASR1K4R2-20G-SHAK9", + "PWR-CH2-950WDCR", + "ASR1KX-DC-950W-R=", + "ASR1004-PWR-AC-RF", + "ASR1000-RP2=", + "M-ASR1K-RP3-8GB-WS", + "FLASR1-FW-GTP-RTU=", + "CAB-ACB10A-RA=", + "ASR1002-PWR-AC=", + "M-ASR1K-EUSB-1GB", + "M-ASR1K-SSD-400GB", + "A1K-2RU-REAR=", + "SSD-M2SATA-240G=", + "ASR1000X-HV-1100W=", + "FLASR1-FW-GTP-RTU", + "ASR1004-FIPS-KIT=", + "M-ASR1K-RP216GB-RF", + "MEMUSB-1024FT", + "C1AUUASR1500RK9", + "C1AUUASR116KRK9", + "L-SP-LA-U-100-K9=", + "L-SP-LA-U-2.5K-K9=", + "L-FLA1-MACSEC40G=", + "CAB-AC-RF", + "SSD-M2SATA-480G=", + "ASR1000-6TGE=", + "FLASR1-LISP-RTU", + "M-ASR1K-RP2-8GB-RF", + "MEMUSB-8GB=", + "L-FLASR1-BB-48K=", + "M-ASR1K-RP3-32GB", + "FLASR1-AES-AIS=", + "FLASR1-FPI-RTU=", + "C1AUUASR14KSK9", + "C1AUAASR1100RK9", + "M-ASR1K-RP3-8GB=", + "C1-ASR1004/K9", + "FLASR1-IPB-AISK9=", + "ASR1000X-FAN-WS", + "C1AUAASR14KRK9", + "L-FLA1-MACSEC100G=", + "CAB-ACA=", + "ASR1002-ACS-RF", + "ASR1KX-HV-1100W-R", + "C8400-FAN-8475-G2=", + "FLASR1-CGN-2M=", + "M-ASR1K-EUSB-2GB", + "SL-ASR1-UC=", + "FLASR1-SBC-H248", + "ASR1004-10G-HA/K9", + "M-ASR1K-RP2-16GB", + "FLASR1-BB-16K", + "M-ASR1K-EUSB1GB-RF", + "C8500L-FAN-1R", + "ASR1KX-HV-1100W-R=", + "FLASR1-IPB-AESK9=", + "ASR1K4R2-10GSHA/K9", + "C1AUUASR116KSK9", + "SSD-M2SATA-480G-RF", + "SL-ASR1-UC", + "M-ASR1K-SSD-200GB=", + "ASR1KX-AC-750W", + "CAB-ACB16A-RA", + "C1AUUASR1500SK9", + "ASR1000-RP1=", + "CAB-ACU-RF", + "ASR1013/06-PWR-AC", + "L-FLASR1IOSREDRTU=", + "ASR1000X-HV-1100W", + "FLASR1-CRYPTO-RTU=", + "SPWIFIWO-BUN", + "ASR1KX-DC-950W-R" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286288843", + "productName": "Cisco ASR 1001-HX Router", + "productId": [ + "L-SP-LA-W-1K-K9=", + "C1AUUASR14KRK9=", + "C1AUUASR1100RK9", + "M-ASR1001HX-16GB", + "SSD-M2SATA-480G", + "M-ASR1001HX-8GB", + "C1F1AASR1K9=", + "ASR1001-HX-DNA", + "C8500L-FAN-1R=", + "L-SP-LA-U-1K-K9=", + "M-ASR1K-RP3-16GB", + "M-ASR1K-RP316GB-WS", + "M-ASR1001HX-8GB-WS", + "L-FLSA1-HX-2X10GE=", + "FLA1-EPA-1X40GE=", + "ASR1K-AZURE-EXP-RT", + "C1AUAASR116KSK9=", + "ASR1000X-DC-950W", + "CAB-AC-WS", + "C1AUUASR1K9", + "C1AUUASR1500RK9=", + "FLSA1-MACSEC40G", + "ASR1002HX-FAN-RF", + "C1F1UASR1K9", + "C1F1AASR1K9", + "C8500-FAN-1R=", + "L-SP-LA-E-100-K9=", + "FLSA1-HX-2X1GE=", + "ASR1001X-ACS-RF", + "ASR1000-2T+20X1GE=", + "C1AUUASR116KRK9=", + "ASR10002T+20X1GERF", + "C8500-FAN-1R", + "C1AUUASR11KSK9", + "ASR1000X-DC950W-RF", + "M-ASR1K-SSD-100GB=", + "C1-ASR1002-HX/K9", + "ASR1000X-DC-950W=", + "ASR1KX-DC-950WR-RF", + "L-SP-LA-U-500-K9=", + "C1F1UASR1K9=", + "FLSA1-HX-2X1GE", + "FLSA1-HX-2X10GE", + "M-ASR1KSSD100GB-WS", + "L-SP-LA-E-1K-K9=", + "ASR1K-CLOUD-EDGE", + "L-SP-LA-E-2.5K-K9=", + "CAB-ACU", + "CAB-ACU=", + "FLSA1-MACSEC100G", + "L-SP-LA-W-25-K9=", + "ASR1002HXIPSECHWWS", + "L-SP-LA-U-25-K9=", + "C8400-FAN-8455-G2=", + "L-SP-LA-E-25-K9=", + "ASR1001HX-FAN=", + "C1AUAASR14KRK9=", + "C1AUAASR11KRK9=", + "L-SP-LA-W-100-K9=", + "L-FLSASR1-SHELL", + "C1AUAASR1K9", + "M-ASR1001HX16GB-RF", + "ASR1000X-FAN-RF", + "L-FLA1-EPA-1X40GE=", + "SSD-M2SATA-240G", + "ASR1000-6TGE", + "ASR1002HX-FAN", + "ASR1001HX-IPSECHW", + "C1AUUASR1K9=", + "CAB-ACA", + "L-SP-LA-E-50-K9=", + "CAB-AC=", + "M-ASR1K-SSD-100GB", + "ASR1001-HX-WS", + "CAB-ACI", + "FLSA1-MACSEC40G=", + "C1AUAASR1K9=", + "C1AUAASR14KSK9=", + "ASR1001HX-FAN", + "ASR1001-HX=", + "C1AUUASR11KRK9", + "L-SP-LA-P-25-K9=", + "ASR1001HX-ACS=", + "PWR-CH2-950WDCR=", + "C1AUUASR11KSK9=", + "L-SP-LA-W-2.5K-K9=", + "ASR1K-WAN-CORE", + "ASR1000-6TGE-WS", + "A1K-1RU-REAR=", + "M-ASR1K100116GB-RF", + "MEMUSB-1024FT-RF", + "C1AUUASR14KSK9=", + "L-FLSA1-HX-2X1GE=", + "C1AUAASR116KRK9=", + "L-SP-LA-U-5K-K9=", + "L-SP-LA-E-500-K9=", + "C1AUAASR1500SK9=", + "FLSA1-MACSEC100G=", + "C1AUAASR1100RK9=", + "L-SP-LA-E-5K-K9=", + "C1-ASR1001-HX/K9", + "C1AUUASR116KSK9=", + "C8300-FAN-2R-RF", + "ASR10002T+20X1GEWS", + "M-ASR1K-RP3-16GB=", + "PWR-CH1-950WDCR-WS", + "C1AUUASR1100RK9=", + "C1AUUASR14KRK9", + "C8400-FAN-8475-G2", + "L-SP-LA-U-50-K9=", + "L-SP-LA-W-50-K9=", + "C1AUAASR14KSK9", + "C8530L-FAN-8S8X4Y=", + "ASR1001-HX", + "PWR-CH2-950WDCR", + "C1AUAASR11KSK9=", + "ASR1KX-DC-950W-R=", + "C1AUAASR116KRK9", + "M-ASR1K-RP3-8GB-WS", + "C1AUAASR1500RK9=", + "L-SP-LA-W-500-K9=", + "M-ASR1K-SSD-32GB", + "M-ASR1K-SSD-32GB=", + "ASR1001-25GSECK9RF", + "A1K-2RU-REAR=", + "ASR1001HXIPSECHWWS", + "CAB-ACI=", + "ASR1000X-HV-1100W=", + "SSD-M2SATA-240G=", + "SL-ASR1-HX-PLR-K9=", + "MEMUSB-1024FT", + "C1AUUASR1500RK9", + "ASR1002HX-FAN-WS", + "ASR1000-2T+20X1GE", + "C1AUUASR116KRK9", + "SL-ASR1-HX-PLR-K9", + "C1AUAASR11KRK9", + "C1AUUASR1500SK9=", + "L-SP-LA-U-2.5K-K9=", + "L-SP-LA-U-100-K9=", + "C8530L-FAN-8S8X4Y", + "M-ASR1K-RP3-8GB", + "L-FLA1-MACSEC40G=", + "CAB-AC-RF", + "SSD-M2SATA-480G=", + "ASR1000-6TGE=", + "C1AUAASR1500RK9", + "C8530L-FAN-8S2X2Y", + "C8400-FAN-8455-G2", + "MEMUSB-8GB=", + "ASR1000-6TGE-RF", + "C8530L-FAN-8S2X2Y=", + "C1AUUASR11KRK9=", + "C1AUAASR1100RK9", + "C1AUUASR14KSK9", + "ASR1001HX-IPSECHW=", + "M-ASR1K-RP3-8GB=", + "C1AUAASR14KRK9", + "C1AUAASR116KSK9", + "ASR1001-X-WS", + "L-FLA1-MACSEC100G=", + "CAB-ACA=", + "ASR1001-ACS-RF", + "MEMUSB-8GB", + "ASR1KX-HV-1100W-R", + "C8400-FAN-8475-G2=", + "ASR1001HX-ACS", + "M-ASR1001HX-16GB=", + "SL-ASR1-UC=", + "ASR1KX-AC-750W=", + "C8500L-FAN-1R", + "ASR1KX-HV-1100W-R=", + "CAB-AC", + "C1AUUASR116KSK9", + "SSD-M2SATA-480G-RF", + "MEMUSB-8GB-RF", + "MEMUSB-1024FT=", + "SL-ASR1-UC", + "ASR1001-HX-RF", + "C1AUAASR11KSK9", + "C1AUUASR1500SK9", + "ASR1KX-AC-750W", + "ASR1002HX-FAN=", + "CAB-ACU-RF", + "FLSA1-HX-2X10GE=", + "M-ASR1001HX-8GB=", + "C1AUAASR1500SK9", + "ASR1001HXIPSECHWRF", + "SSD-C8530-480G", + "L-SP-LA-W-5K-K9=", + "ASR1000X-HV-1100W", + "ASR1KX-DC-950W-R" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286285153", + "productName": "Cisco ASR 1009-X Router", + "productId": [ + "FLASR1-BB-8K", + "C1AUUASR14KRK9=", + "C1AUUASR1100RK9", + "M-ASR1001HX-16GB", + "SSD-M2SATA-480G", + "M-ASR1K-RP3-64GB=", + "L-FLASR1-BB-48K", + "C8500L-FAN-1R=", + "M-ASR1K-RP3-16GB", + "M-ASR1K-RP332GB-WS", + "FLA1-EPA-1X40GE=", + "C1AUAASR116KSK9=", + "ASR1000X-DC-950W", + "C1AUUASR1500RK9=", + "ASR1002HX-FAN-RF", + "C1F1AASR1K9", + "FLASR1-FWNAT-RED=", + "FLASR1-IPB-AES=", + "C8500-FAN-1R=", + "L-SP-LA-E-100-K9=", + "FLASR1-IOSRED-RTU=", + "FLASR1-BB-RTU=", + "ASR1001X-ACS-RF", + "ASR1009-X-NTT", + "C8500-FAN-1R", + "ASR1000X-DC950W-RF", + "FLASR1-CGV6-RTU", + "M-ASR1K-SSD-100GB=", + "ASR1000X-DC-950W=", + "M-ASR1KSSD100GB-WS", + "CAB-ACU", + "L-FLASR1-IPSECRTU=", + "L-SP-LA-W-25-K9=", + "L-SP-LA-U-25-K9=", + "L-SP-LA-E-25-K9=", + "FLASR1-BB-8K=", + "FLASR1-NSIGHT-RTU=", + "C1AUAASR11KRK9=", + "C1AUAASR1K9", + "M-ASR1001HX16GB-RF", + "L-FLASR1LI-RTU=", + "FLASR1-LI-RTU", + "L-FLA1-EPA-1X40GE=", + "SSD-M2SATA-240G", + "FLASR1-BB-64K=", + "L-FLASR1FWNAT-RED=", + "ASR1000-6TGE", + "ASR1002HX-FAN", + "CAB-ACA", + "L-SP-LA-E-50-K9=", + "CAB-AC=", + "L-FLASR1-AES-AIS=", + "CAB-ACI", + "FLASR1-NAT64-2M", + "FLASR1-CGV6-RTU=", + "FLASR1-AVC-UPG=", + "L-SP-LA-W-2.5K-K9=", + "C1AUUASR11KSK9=", + "ASR1000-6TGE-WS", + "A1K-1RU-REAR=", + "C1AUUASR14KSK9=", + "C1AUAASR116KRK9=", + "FLASR1-BB-64K", + "SL-ASR1X-PLR-K9=", + "FLASR1-SBC-4K", + "FLASR1-FW-SGT-RTU", + "CAB-MPO24-2XMPO12", + "ASR1009-X-WS", + "FLASR1-VPLS-RTU=", + "FLASR1-IPSEC-RTU", + "FLASR1-OTV-RTU=", + "ASR10002T+20X1GEWS", + "M-ASR1K-RP3-16GB=", + "C1-ASR1009X/K9=", + "L-SP-LA-W-50-K9=", + "L-SP-LA-U-50-K9=", + "FLASR1-FWNAT-RED", + "C1AUAASR11KSK9=", + "C1AUAASR116KRK9", + "FLASR1-FW-RTU=", + "FLASR1-FPI-RTU", + "ASR1009X-FIPS-KIT=", + "C1AUAASR1500RK9=", + "FLASR1-SBC-H248=", + "L-SP-LA-W-500-K9=", + "M-ASR1K-SSD-32GB", + "M-ASR1K-SSD-32GB=", + "CAB-ACI=", + "L-FLASR1-BB-32K=", + "FLASR1-BB-32K=", + "M-ASR1K-RP3-64GB", + "M-ASR1K-SSD-400GB=", + "ASR1002HX-FAN-WS", + "ASR1000-2T+20X1GE", + "FLASR1-NTT-ADVSVC", + "FLASR1-SBC-RTU", + "C1-ASR1009X/K9", + "C1AUAASR11KRK9", + "C1AUUASR1500SK9=", + "M-ASR1K-RP3-8GB", + "C8530L-FAN-8S8X4Y", + "C8530L-FAN-8S2X2Y", + "C1AUAASR1500RK9", + "C8400-FAN-8455-G2", + "ASR1000-6TGE-RF", + "FLASR1-CGN-2M", + "FLASR1-LI=", + "C8530L-FAN-8S2X2Y=", + "FLASR1-IPSEC=", + "C1AUUASR11KRK9=", + "M-ASR1K-SSD-200GB", + "L-FLASR1-BB-4K=", + "L-FLASR1FPI-RTU=", + "FLASR1-NSIGHT-RTU", + "C1AUAASR116KSK9", + "MEMUSB-8GB", + "L-FLASR1-FW-RTU=", + "ASR1001-ACS-RF", + "CAB-MPO24-2XMPO12=", + "FLASR1-SBC-4K=", + "SL-ASR1-RP-PLR-K9", + "FLASR1-BB-16K=", + "M-ASR1001HX-16GB=", + "FLASR1-SBC-500=", + "FLASR1-CGN-6M=", + "FLASR1-LI-RTU=", + "ASR1KX-AC-750W=", + "M-ASR1KSSD400GB-WS", + "CAB-AC", + "M-ASR1K-RP3-32GB=", + "MEMUSB-8GB-RF", + "MEMUSB-1024FT=", + "C1AUAASR11KSK9", + "FLASR1-BB-32K", + "ASR1002HX-FAN=", + "ASR1009X-CB", + "C1AUAASR1500SK9", + "FLASR1-AVC-RTU=", + "L-SP-LA-W-5K-K9=", + "SSD-C8530-480G", + "L-SP-LA-W-1K-K9=", + "L-FLASR1-BB-64K=", + "C1F1AASR1K9=", + "L-SP-LA-U-1K-K9=", + "M-ASR1K-RP316GB-WS", + "ASR1K-AZURE-EXP-RT", + "FLASR1-FW-RTU", + "C1AUUASR1K9", + "CAB-AC-WS", + "L-FLASR1-BB-64K", + "FLSA1-MACSEC40G", + "C1F1UASR1K9", + "FLASR1-IPB-AIS=", + "FLASR1-SBC-16K", + "ASR1000-2T+20X1GE=", + "ASR10002T+20X1GERF", + "C1AUUASR116KRK9=", + "C1AUUASR11KSK9", + "L-SP-LA-U-500-K9=", + "ASR1KX-DC-950WR-RF", + "FLASR1-BB-4K=", + "C1F1UASR1K9=", + "ASR1K-CLOUD-EDGE", + "L-SP-LA-E-2.5K-K9=", + "M-ASR1K-RP364GB-WS", + "FLASR1-NAT64-2M=", + "L-SP-LA-E-1K-K9=", + "CAB-ACU=", + "FLSA1-MACSEC100G", + "FLASR1-LI", + "C8400-FAN-8455-G2=", + "ASR1001HX-FAN=", + "C1AUAASR14KRK9=", + "L-SP-LA-W-100-K9=", + "L-FLSASR1-SHELL", + "ASR1000X-FAN-RF", + "FLASR1-CGN-6M", + "FLASR1-SBC-RTU=", + "FLASR1-VPLS-RTU", + "FLASR1-SBC-16K=", + "ASR1009X-ACS=", + "FLASR1-SBC-500", + "FLASR1-LISP-RTU=", + "C1AUUASR1K9=", + "FLASR1-NTT-ADVSVC=", + "SL-ASR1-RP-PLR-K9=", + "FLASR1-OTV-RTU", + "FLASR1-H248-RTU", + "M-ASR1K-SSD-100GB", + "L-FLASR1-BB-RTU=", + "FLSA1-MACSEC40G=", + "C1AUAASR14KSK9=", + "C1AUAASR1K9=", + "ASR1001HX-FAN", + "FLASR1-IPSEC-RTU=", + "C1AUUASR11KRK9", + "L-SP-LA-P-25-K9=", + "PWR-CH2-950WDCR=", + "ASR1K-WAN-CORE", + "M-ASR1KSSD200GB-WS", + "MEMUSB-1024FT-RF", + "L-SP-LA-U-5K-K9=", + "L-SP-LA-E-500-K9=", + "L-FLASR1IPB-AISK9=", + "FLASR1-BB-48K", + "FLASR1-BB-RTU", + "C1AUAASR1500SK9=", + "C1AUAASR1100RK9=", + "FLSA1-MACSEC100G=", + "L-SP-LA-E-5K-K9=", + "C1AUUASR116KSK9=", + "FLASR1-IPSEC", + "FLASR1-AVC-RTU", + "FLASR1-BB-48K=", + "FLASR1-BB-4K", + "ASR1009-X-RF", + "FLASR1-H248-RTU=", + "C8300-FAN-2R-RF", + "ASR1009-X-DNA", + "L-FLASR1IPB-AESK9=", + "PWR-CH1-950WDCR-WS", + "FLASR1-IOSRED-RTU", + "FLASR1-FW-SGT-RTU=", + "FLASR1-CRYPTO-RTU", + "C1AUUASR1100RK9=", + "C1AUUASR14KRK9", + "C8400-FAN-8475-G2", + "C1AUAASR14KSK9", + "C8530L-FAN-8S8X4Y=", + "PWR-CH2-950WDCR", + "ASR1KX-DC-950W-R=", + "M-ASR1K-RP3-8GB-WS", + "FLASR1-FW-GTP-RTU=", + "M-ASR1K-SSD-400GB", + "A1K-2RU-REAR=", + "SSD-M2SATA-240G=", + "ASR1000X-HV-1100W=", + "ASR1009-X=", + "FLASR1-FW-GTP-RTU", + "MEMUSB-1024FT", + "C1AUUASR1500RK9", + "C1AUUASR116KRK9", + "L-SP-LA-U-100-K9=", + "L-SP-LA-U-2.5K-K9=", + "L-FLA1-MACSEC40G=", + "CAB-AC-RF", + "SSD-M2SATA-480G=", + "ASR1000-6TGE=", + "FLASR1-LISP-RTU", + "MEMUSB-8GB=", + "ASR1009X-ACS", + "L-FLASR1-BB-48K=", + "M-ASR1K-RP3-32GB", + "FLASR1-AES-AIS=", + "FLASR1-FPI-RTU=", + "C1AUUASR14KSK9", + "C1AUAASR1100RK9", + "M-ASR1K-RP3-8GB=", + "FLASR1-IPB-AISK9=", + "C1AUAASR14KRK9", + "L-FLA1-MACSEC100G=", + "CAB-ACA=", + "ASR1KX-HV-1100W-R", + "C8400-FAN-8475-G2=", + "FLASR1-CGN-2M=", + "SL-ASR1X-PLR-K9", + "SL-ASR1-UC=", + "FLASR1-SBC-H248", + "FLASR1-BB-16K", + "ASR1009-X", + "C8500L-FAN-1R", + "ASR1KX-HV-1100W-R=", + "FLASR1-IPB-AESK9=", + "C1AUUASR116KSK9", + "SSD-M2SATA-480G-RF", + "SL-ASR1-UC", + "M-ASR1K-SSD-200GB=", + "ASR1KX-AC-750W", + "C1AUUASR1500SK9", + "CAB-ACU-RF", + "ASR1009X-ACS-RF", + "L-FLASR1IOSREDRTU=", + "ASR1000X-HV-1100W", + "FLASR1-CRYPTO-RTU=", + "ASR1KX-DC-950W-R" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "281782373", + "productName": "Cisco ASR 1006 Router", + "productId": [ + "FLASR1-BB-8K", + "M-ASR1K-HDD-40GB", + "C1AUUASR1100RK9", + "M-ASR1001HX-16GB", + "M-ASR1K-RP3-64GB=", + "C8500L-FAN-1R=", + "ASR1004-ACS-WS", + "FLA1-EPA-1X40GE=", + "ASR1000X-DC-950W", + "ASR1006-10G-VPN/K9", + "ASR1006-10G-BB16", + "FLASR1-FWNAT-RED=", + "ASR1006-PWR-DC", + "EDGE-MULTI-CLOUD", + "FLASR1-IOSRED-RTU=", + "FLASR1-BB-RTU=", + "CAB-ACB10A-RA", + "ASR1K6R2-40G-SHAK9", + "ASR1000X-DC950W-RF", + "M-ASR1K-RP2-8GB", + "M-ASR1K-SSD-100GB=", + "CAB-ACU", + "L-SP-LA-W-25-K9=", + "ASR1K6R2-100-SECK9", + "EDGE-SECUREWAN-AGG", + "FLASR1-BB-8K=", + "FLASR1-NSIGHT-RTU=", + "ASR1013/06PWRAC-RF", + "C1AUAASR11KRK9=", + "C1AUAASR1K9", + "M-ASR1001HX16GB-RF", + "L-FLASR1LI-RTU=", + "FLASR1-LI-RTU", + "ASR1006-20G-SHA/K9", + "ASR1000X-AC-750W=", + "ASR1000X-AC-750W", + "FLASR1-BB-64K=", + "ASR1006-10G-BB32", + "ASR100610GVPN/K9WS", + "ASR1006-FIPSKIT-RF", + "CAB-ACA", + "CAB-AC=", + "L-FLASR1-AES-AIS=", + "ASR1006-SB-WS", + "ASR1K6R2-20-B32/K9", + "CAB-ACI", + "FLASR1-NAT64-2M", + "ASR1013/06-PWR-DC", + "L-SP-LA-W-2.5K-K9=", + "ASR1006-20G-HA/K9", + "ASR1002-PWR-AC", + "A1K-1RU-REAR=", + "ASR1006-PWR-AC", + "FLASR1-FW-SGT-RTU", + "FLASR1-VPLS-RTU=", + "ASR1006-10G-FPI/K9", + "ASR1K6R2-20G-VPNK9", + "M-ASR1K-RP3-16GB=", + "L-SP-LA-W-50-K9=", + "ASR1006-10G-B32/K9", + "C1AUAASR11KSK9=", + "ASR1000X-AC-1100W=", + "C1AUAASR1500RK9=", + "FLASR1-SBC-H248=", + "L-SP-LA-W-500-K9=", + "CAB-ACI=", + "ASR1001-PWR-AC-WS", + "L-FLASR1-BB-32K=", + "FLASR1-BB-32K=", + "M-ASR1K-RP3-64GB", + "M-ASR1K-SSD-400GB=", + "M-ASR1K-RP3-8GB", + "C8530L-FAN-8S8X4Y", + "C8400-FAN-8455-G2", + "CAB-RTN-1013-AC=", + "CAB-1900W-UK-RF", + "ASR1000-SPA", + "FLASR1-CGN-2M", + "ASR1006-PWR-AC-RF", + "M-ASR1K-SSD-200GB", + "EDGE-WAN-AGG", + "L-FLASR1-BB-4K=", + "ASR1006-20G-B32/K9", + "ASR1000-RP-BLANK", + "L-FLASR1-FW-RTU=", + "ASR1001-ACS-RF", + "FLASR1-SBC-4K=", + "M-ASR1001HX-16GB=", + "CAB-1900W-US1=", + "FLASR1-CGN-6M=", + "FLASR1-LI-RTU=", + "ASR1KX-AC-750W=", + "ASR1006-FIPS-KIT=", + "M-ASR1KSSD400GB-WS", + "CAB-AC", + "M-ASR1K-RP3-32GB=", + "MEMUSB-8GB-RF", + "ASR1006-ACS=", + "L-SP-LA-W-5K-K9=", + "ASR1006-20G-VPN/K9", + "M-ASR1K-EUSB1GB-WS", + "CAB-1900W-US2=", + "L-FLASR1-BB-64K=", + "L-SP-LA-U-1K-K9=", + "M-ASR1K-RP316GB-WS", + "ASR1K-AZURE-EXP-RT", + "FLASR1-FW-RTU", + "C1AUUASR1K9", + "CAB-AC-WS", + "L-FLASR1-BB-64K", + "C1F1UASR1K9", + "M-ASR1K-RP1-4GB-RF", + "ASR1000-SIP10-WS", + "ASR1000-2T+20X1GE=", + "C1AUUASR116KRK9=", + "EDGE-SDWAN-AGG", + "ASR1KX-DC-950WR-RF", + "C1F1UASR1K9=", + "M-ASR1K-RP364GB-WS", + "ASR1006-10G-HA/K9", + "L-SP-LA-E-1K-K9=", + "FLASR1-LI", + "ASR1001HX-FAN=", + "EDGE-INTERNET", + "M-ASR1K-RP2-8GB=", + "L-SP-LA-W-100-K9=", + "CAB-1900W-INT", + "FLASR1-VPLS-RTU", + "FLASR1-SBC-16K=", + "ASR1006-WS", + "FLASR1-SBC-500", + "C1AUUASR1K9=", + "ASR1K-OTHER", + "L-FLASR1-BB-RTU=", + "ASR1006-NTT2-PKG", + "C1AUAASR1K9=", + "ASR1006-10G-SEC/K9", + "FLASR1-IPSEC-RTU=", + "L-SP-LA-P-25-K9=", + "ASR1006-PWR-DC-RF", + "CAB-1900W-US2-RF", + "ASR1K-WAN-CORE", + "ASR1K6R2-20G-SECK9", + "ASR1000-RP1-RF", + "L-FLASR1IPB-AISK9=", + "FLASR1-BB-48K", + "FLASR1-BB-RTU", + "C1AUAASR1100RK9=", + "ASR1K-WAN-AGGR", + "C1AUUASR116KSK9=", + "FLASR1-IPSEC", + "FLASR1-AVC-RTU", + "FLASR1-BB-48K=", + "M-ASR1K-RP1-4GB=", + "FLASR1-H248-RTU=", + "C8300-FAN-2R-RF", + "FLASR1-IOSRED-RTU", + "FLASR1-FW-SGT-RTU=", + "FLASR1-CRYPTO-RTU", + "C1AUUASR14KRK9", + "ASR1006-RF", + "ASR1000-RP2-RF", + "ASR1006-20G-FPI/K9", + "CAB-1900W-UK=", + "C1AUAASR14KSK9", + "C8530L-FAN-8S8X4Y=", + "PWR-CH2-950WDCR", + "M-ASR1K-RP3-8GB-WS", + "FLASR1-FW-GTP-RTU=", + "CAB-ACB10A-RA=", + "M-ASR1K-EUSB-1GB", + "M-ASR1K-SSD-400GB", + "A1K-2RU-REAR=", + "C1AUUASR1500RK9", + "L-SP-LA-U-2.5K-K9=", + "CAB-AC-RF", + "ASR1000-6TGE=", + "ASR1K-INTERNET", + "ASR1006-PWR-DC-WS", + "ASR1K-RR", + "FLASR1-FPI-RTU=", + "C1AUUASR14KSK9", + "C1AUAASR14KRK9", + "CAB-ACA=", + "ASR1002-ACS-RF", + "ASR1006-RMK=", + "FLASR1-CGN-2M=", + "M-ASR1K-EUSB-2GB", + "CAB-1900W-INT=", + "ASR100610GVPN/K9RF", + "FLASR1-BB-16K", + "M-ASR1K-EUSB1GB-RF", + "FLASR1-IPB-AESK9=", + "ASR1013/06PWRDC-WS", + "M-ASR1K-SSD-200GB=", + "C1AUUASR1500SK9", + "ASR1006-SB", + "L-FLASR1IOSREDRTU=", + "C1AUUASR14KRK9=", + "SSD-M2SATA-480G", + "ASR1006-10G-B16/K9", + "L-FLASR1-BB-48K", + "M-ASR1K-RP3-16GB", + "M-ASR1K-RP332GB-WS", + "C1AUAASR116KSK9=", + "C1AUUASR1500RK9=", + "ASR1002HX-FAN-RF", + "C1F1AASR1K9", + "FLASR1-IPB-AES=", + "C8500-FAN-1R=", + "L-SP-LA-E-100-K9=", + "ASR1K6R2-40G-VPNK9", + "ASR1001X-ACS-RF", + "C8500-FAN-1R", + "M-ASR1K-EUSB-2GB=", + "EDGE-OTHER", + "FLASR1-CGV6-RTU", + "ASR1000X-DC-950W=", + "CUBESP-AP-HA1KA/K9", + "ASR1000-RP1-WS", + "M-ASR1KSSD100GB-WS", + "L-FLASR1-IPSECRTU=", + "L-SP-LA-U-25-K9=", + "L-SP-LA-E-25-K9=", + "ASR1006-20G-SEC/K9", + "M-ASR1K-EUSB-1GB=", + "L-FLA1-EPA-1X40GE=", + "SSD-M2SATA-240G", + "ASR1000-SIP10-RF", + "L-FLASR1FWNAT-RED=", + "ASR1000-6TGE", + "ASR1002HX-FAN", + "ASR1000-RP2-WS", + "ASR1006-NTT", + "L-SP-LA-E-50-K9=", + "CUBESP-AP-H500B/K9", + "CUBESP-AP-H250B/K9", + "ASR1000-SIP10=", + "FLASR1-CGV6-RTU=", + "FLASR1-AVC-UPG=", + "C1AUUASR11KSK9=", + "ASR1000-6TGE-WS", + "C1AUUASR14KSK9=", + "C1AUAASR116KRK9=", + "FLASR1-BB-64K", + "ASR1006", + "FLASR1-SBC-4K", + "CAB-MPO24-2XMPO12", + "M-ASR1K-HDD-80GB", + "ASR1K6R2-100-SHAK9", + "CAB-9K20A-NA=", + "CAB-RTN-1013-AC", + "FLASR1-IPSEC-RTU", + "FLASR1-OTV-RTU=", + "CAB-9K20A-NA", + "ASR10002T+20X1GEWS", + "CUBESP-AP-HA1KB/K9", + "CAB-1900W-EU", + "ASR1K6R2-20G-FPIK9", + "ASR1006-RP1ESP10", + "L-SP-LA-U-50-K9=", + "FLASR1-FWNAT-RED", + "M-ASR1K-RP1-4GB", + "ASR1013/06PWRDC-RF", + "C1AUAASR116KRK9", + "FLASR1-FW-RTU=", + "C1-ASR1006/K9", + "FLASR1-FPI-RTU", + "M-ASR1K-SSD-32GB", + "M-ASR1K-SSD-32GB=", + "ASR1001-PWR-AC", + "ASR1002-ACS", + "ASR1002HX-FAN-WS", + "ASR1000-2T+20X1GE", + "FLASR1-NTT-ADVSVC", + "FLASR1-SBC-RTU", + "CUBESP-AP-H250A/K9", + "ASR1K6R2-20G-HA/K9", + "C1AUAASR11KRK9", + "C1AUUASR1500SK9=", + "ASR1000-SW-SPARECD", + "CAB-1900W-US1", + "CAB-1900W-US2", + "C8530L-FAN-8S2X2Y", + "C1AUAASR1500RK9", + "ASR1000XAC1100W-RF", + "ASR1000-6TGE-RF", + "FLASR1-LI=", + "C8530L-FAN-8S2X2Y=", + "FLASR1-IPSEC=", + "C1AUUASR11KRK9=", + "ASR1K6R2-40G-SECK9", + "L-FLASR1FPI-RTU=", + "ASR1006-ACS-RF", + "FLASR1-NSIGHT-RTU", + "C1AUAASR116KSK9", + "MEMUSB-8GB", + "EDGE-BRANCH-CPE", + "CAB-MPO24-2XMPO12=", + "FLASR1-BB-16K=", + "FLASR1-SBC-500=", + "MEMUSB-1024FT=", + "EDGE-SERVICES", + "ASR1006-PWR-AC=", + "C1AUAASR11KSK9", + "FLASR1-BB-32K", + "ASR1002HX-FAN=", + "ASR1002-PWR-AC-WS", + "C1AUAASR1500SK9", + "FLASR1-AVC-RTU=", + "M-ASR1K-HDD-80GB=", + "SSD-C8530-480G", + "M-ASR1K-HDD80GB-RF", + "L-SP-LA-W-1K-K9=", + "ASR1K-DCI", + "C1-ASR1006/K9=", + "C1F1AASR1K9=", + "ASR1001-PWR-AC-RF", + "ASR1000X-AC750W-RF", + "FLSA1-MACSEC40G", + "FLASR1-IPB-AIS=", + "FLASR1-SBC-16K", + "ASR10002T+20X1GERF", + "M-ASR1K-RP2-16GB=", + "C1AUUASR11KSK9", + "L-SP-LA-U-500-K9=", + "ASR1000-SIP10", + "FLASR1-BB-4K=", + "ASR1K-CLOUD-EDGE", + "L-SP-LA-E-2.5K-K9=", + "FLASR1-NAT64-2M=", + "ASR1006-SB-RF", + "ASR1006-20G-B16/K9", + "CAB-ACU=", + "FLSA1-MACSEC100G", + "ASR1006-10G-SHA/K9", + "C8400-FAN-8455-G2=", + "C1AUAASR14KRK9=", + "L-FLSASR1-SHELL", + "ASR1000X-FAN-RF", + "FLASR1-CGN-6M", + "ASR1001-PWR-AC=", + "ASR1013/06PWRAC-WS", + "ASR1001-IDC-4XT3", + "ASR1K-MSP", + "FLASR1-SBC-RTU=", + "ASR1013/06-PWR-AC=", + "FLASR1-LISP-RTU=", + "ASR1002-PWR-AC-RF", + "FLASR1-NTT-ADVSVC=", + "ASR1004-ACS-RF", + "ASR1000X-FAN=", + "FLASR1-OTV-RTU", + "FLASR1-H248-RTU", + "ASR1006-10G-B24/K9", + "ASR1K-MSE", + "M-ASR1K-SSD-100GB", + "EDGE-NETWORK-INFRA", + "FLSA1-MACSEC40G=", + "C1AUAASR14KSK9=", + "ASR1001HX-FAN", + "ASR1006-ACS", + "C1AUUASR11KRK9", + "CAB-1900W-UK", + "PWR-CH2-950WDCR=", + "M-ASR1KSSD200GB-WS", + "MEMUSB-1024FT-RF", + "ASR1006-PWR-AC-WS", + "L-SP-LA-U-5K-K9=", + "L-SP-LA-E-500-K9=", + "CAB-1900W-EU=", + "C1AUAASR1500SK9=", + "FLSA1-MACSEC100G=", + "L-SP-LA-E-5K-K9=", + "FLASR1-BB-4K", + "ASR1000X-FAN", + "ASR1013/06-PWR-DC=", + "ASR1004-ACS", + "L-FLASR1IPB-AESK9=", + "PWR-CH1-950WDCR-WS", + "C1AUUASR1100RK9=", + "ASR1006=", + "C8400-FAN-8475-G2", + "ASR1000X-AC-1100W", + "ASR1KX-DC-950W-R=", + "ASR1000-RP2=", + "ASR1002-PWR-AC=", + "ASR1K6R2-20G-SHAK9", + "ASR1006-RP1ESP10-R", + "ASR1K6R2-100-VPNK9", + "ASR1000X-HV-1100W=", + "ASR1006-NTT2", + "SSD-M2SATA-240G=", + "FLASR1-FW-GTP-RTU", + "M-ASR1K-RP216GB-RF", + "MEMUSB-1024FT", + "C1AUUASR116KRK9", + "ASR1006-PWR-DC=", + "L-SP-LA-U-100-K9=", + "L-FLA1-MACSEC40G=", + "SSD-M2SATA-480G=", + "FLASR1-LISP-RTU", + "M-ASR1K-RP2-8GB-RF", + "MEMUSB-8GB=", + "L-FLASR1-BB-48K=", + "M-ASR1K-RP3-32GB", + "FLASR1-AES-AIS=", + "ASR1K-BB", + "ASR1K-SP-WIFI", + "ASR1006-CB", + "C1AUAASR1100RK9", + "M-ASR1K-RP3-8GB=", + "FLASR1-IPB-AISK9=", + "ASR1000X-FAN-WS", + "L-FLA1-MACSEC100G=", + "ASR1KX-HV-1100W-R", + "C8400-FAN-8475-G2=", + "ASR1006-BB", + "SL-ASR1-UC=", + "FLASR1-SBC-H248", + "M-ASR1K-RP2-16GB", + "C8500L-FAN-1R", + "EDGE-PE-SERVICES", + "ASR1KX-HV-1100W-R=", + "C1AUUASR116KSK9", + "SSD-M2SATA-480G-RF", + "SL-ASR1-UC", + "CUBESP-AP-H500A/K9", + "ASR1KX-AC-750W", + "EDGE-BNG-SPWIFI", + "CAB-ACB16A-RA", + "ASR1000-RP1=", + "CAB-ACU-RF", + "ASR1013/06-PWR-AC", + "ASR1K6R2-10GSHA/K9", + "ASR1000X-HV-1100W", + "FLASR1-CRYPTO-RTU=", + "SPWIFIWO-BUN", + "ASR1KX-DC-950W-R" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "284932298", + "productName": "Cisco ASR 1001-X Router", + "productId": [ + "FLASR1-BB-8K", + "ASR1001X-SSD-100G", + "SM-X-PVDM-1000", + "C1AUUASR1100RK9", + "M-ASR1001HX-16GB", + "NIM-8CE1T1-PRI", + "M-ASR1K-RP3-64GB=", + "ASR1001-X-PWR-DC", + "FLSASR1-IPSEC", + "C8500L-FAN-1R=", + "M-ASR1001X-8GB-RF", + "FLA1-EPA-1X40GE=", + "ASR1001X-ACS=", + "NIM-4BRI-NT/TE-WS", + "ASR1000X-DC-950W", + "ASR1KX-PWR-BLANK=", + "SM-X-PVDM-1000=", + "SLASR1-IPB-AIS", + "L-FLA1-BIN-1X10GE=", + "FLASR1-FWNAT-RED=", + "NIM-2BRI-NT/TE-WS", + "EPA-QSFP-1X100GE", + "ASR1001X-SSD-100G=", + "FLSASR1-SHELL", + "FLASR1-BB-RTU=", + "FLASR1-IOSRED-RTU=", + "ASR1001X-5G-VPN-WS", + "ASR1001X-20G-VPN", + "FLSA1-BIN-1X10GE", + "NIM-4FXS=", + "ASR1001-5G-AIS-AX", + "ASR1000X-DC950W-RF", + "ASR1001-XA=", + "M-ASR1K-SSD-100GB=", + "M-ASR1K-RP2-8GB", + "FLSASR1-BB-16K=", + "ASR1001-X-PWRDC-RF", + "FLSASR1-CS-2KP=", + "SM-X-PVDM-500", + "FLSASR1-FW-GTP=", + "CAB-ACU", + "NIM-LTEA-EA=", + "ASR1001-X-RF", + "L-SP-LA-W-25-K9=", + "FLASR1-BB-8K=", + "ASR1001X-AIS-AX-RF", + "FLASR1-NSIGHT-RTU=", + "ASR1013/06PWRAC-RF", + "C1AUAASR11KRK9=", + "C1AUAASR1K9", + "M-ASR1001HX16GB-RF", + "L-FLASR1LI-RTU=", + "L-SLASR1-AIS-AES=", + "FLASR1-LI-RTU", + "ASR1000X-AC-750W", + "NIM-BLANK", + "ASR1000X-AC-750W=", + "FLASR1-BB-64K=", + "FLSASR1-BB-4K=", + "CAB-ACA", + "NIM-X-SSD", + "CAB-AC=", + "L-FLASR1-AES-AIS=", + "ASR1001X-25GSEC-RF", + "L-SLASR1-AIS-AES", + "CAB-ACI", + "FLASR1-NAT64-2M", + "L-SLASR1-IPB-AES", + "ASR1013/06-PWR-DC", + "L-FLSASR1-BB=", + "NIM-4FXO-RF", + "NIM-1MFT-T1/E1", + "ASR1001-X-PWR-AC", + "FLSASR1-CS-16KP", + "L-SP-LA-W-2.5K-K9=", + "L-FLSASR1-IOSRED", + "A1K-1RU-REAR=", + "ASR1001-X-PWR-DC=", + "SL-ASR1X-PLR-K9=", + "NIM-LTEA-EA-RF", + "FLASR1-FW-SGT-RTU", + "FLASR1-VPLS-RTU=", + "NIM-SSD", + "M-ASR1K-RP3-16GB=", + "L-FLSASR1-FPI=", + "L-SP-LA-W-50-K9=", + "FLSA1-1X-2.5-20G=", + "ASR1001X-2.5GK9-RF", + "C1AUAASR11KSK9=", + "ASR1000X-AC-1100W=", + "C1AUAASR1500RK9=", + "FLASR1-SBC-H248=", + "L-SP-LA-W-500-K9=", + "ASR1001X-AIS-AX", + "CAB-ACI=", + "L-FLASR1-BB-32K=", + "FLASR1-BB-32K=", + "M-ASR1K-RP3-64GB", + "SLASR1-IPB=", + "M-ASR1K-SSD-400GB=", + "SLASR1-AIS-AES=", + "L-FLSASR1-IOSRED=", + "FLSA1-1X-10-20G=", + "ASR1001X-5G-VPN-RF", + "M-ASR1K-RP3-8GB", + "C8530L-FAN-8S8X4Y", + "FLSASR1-FWNAT-R", + "C8400-FAN-8455-G2", + "FLASR1-CGN-2M", + "M-ASR1K-SSD-200GB", + "L-FLASR1-BB-4K=", + "PWR-8500-CVR", + "NIM-SSD-WS", + "NIM-2MFT-T1/E1", + "NIM-8MFT-T1/E1++=", + "ASR1001X-5G-SEC", + "L-SLASR1-IPB-AIS", + "L-FLA1-1X-5-10G=", + "ASR1001X-2.5G-VPN", + "ASR1001-ACS-RF", + "L-FLASR1-FW-RTU=", + "FLSA1-1X-10-20G", + "FLASR1-SBC-4K=", + "L-SLASR1-AIS=", + "L-FLS-ASR1001-5G", + "SL-ASR1-RP-PLR-K9", + "M-ASR1001HX-16GB=", + "ASR1001X-SSD-200G", + "FLSASR1-CS-TPEX=", + "FLASR1-CGN-6M=", + "NIM-2MFT-T1/E1++=", + "FLASR1-LI-RTU=", + "ASR1KX-AC-750W=", + "M-ASR1KSSD400GB-WS", + "CAB-AC", + "M-ASR1K-RP3-32GB=", + "MEMUSB-8GB-RF", + "FLSASR1-CS-4KP=", + "FLSA1-1X-2.5-10G=", + "L-FLSASR1-BB", + "L-SP-LA-W-5K-K9=", + "M-ASR1K-1001-16GB", + "ASR1001X-5G-SEC-RF", + "NIM-4MFT-T1/E1++=", + "L-FLASR1-BB-64K=", + "FLSASR1-SHELL=", + "EPA-QSFP-1X100GE=", + "L-SP-LA-U-1K-K9=", + "M-ASR1K-RP316GB-WS", + "M-ASR1001X-16GB-RF", + "FLASR1-FW-RTU", + "ASR1K-AZURE-EXP-RT", + "CAB-AC-WS", + "L-FLASR1-BB-64K", + "C1AUUASR1K9", + "FLSA1-1X-2.5-5G", + "FLSASR1-LI", + "C1F1UASR1K9", + "FLSASR1-BB-32K", + "PWR-CH1-400WAC=", + "M-ASR1001X-8GB=", + "M-ASR1K-RP1-4GB-RF", + "ASR1001X-FIPS-KIT=", + "ASR1000-2T+20X1GE=", + "C1AUUASR116KRK9=", + "NIM-2MFT-T1/E1-RF", + "ASR1KX-DC-950WR-RF", + "L-FLSASR1-IPSEC", + "ASR1001X-10G-SEC", + "NIM-2FXO-RF", + "C1F1UASR1K9=", + "M-ASR1K-RP364GB-WS", + "L-SP-LA-E-1K-K9=", + "PWR-CH1-400WAC-WS", + "SLASR1-AIS", + "FLASR1-LI", + "ASR1001-FIPS-KIT=", + "ASR1001HX-FAN=", + "M-ASR1K-RP2-8GB=", + "NIM-4E/M-WS", + "L-SP-LA-W-100-K9=", + "FLSASR1-BB=", + "FLASR1-VPLS-RTU", + "FLASR1-SBC-16K=", + "FLSA1-1X-5-10G", + "FLASR1-SBC-500", + "C1AUUASR1K9=", + "SL-ASR1-RP-PLR-K9=", + "SLASR1-IPB-AES=", + "L-FLASR1-BB-RTU=", + "C1AUAASR1K9=", + "FLASR1-IPSEC-RTU=", + "L-SP-LA-P-25-K9=", + "NIM-4BRI-NT/TE-RF", + "ASR1K-WAN-CORE", + "ASR1001X-2.5G-K9", + "L-FLASR1IPB-AISK9=", + "FLASR1-BB-48K", + "ASR1001-X-IWANPM", + "FLASR1-BB-RTU", + "ASR1001X-20G-SEC", + "C1AUAASR1100RK9=", + "ASR1001-X-PWRDC-WS", + "C1AUUASR116KSK9=", + "ASR1001X-25GSEC-WS", + "FLASR1-IPSEC", + "FLSASR1-AVC=", + "FLASR1-AVC-RTU", + "FLASR1-BB-48K=", + "M-ASR1K-RP1-4GB=", + "NIM-8MFT-T1/E1=", + "PWR-CH2-750WACR", + "FLASR1-H248-RTU=", + "C8300-FAN-2R-RF", + "ASR1KX-AC-750W-R", + "SM-X-PVDM-500=", + "L-FLSASR1-FW", + "EPA-1X100GE-WS", + "FLSASR1-FPI=", + "FLASR1-CRYPTO-RTU", + "FLASR1-FW-SGT-RTU=", + "FLASR1-IOSRED-RTU", + "FLSASR1-CS-250P", + "C1AUUASR14KRK9", + "L-FLSASR1-BB-16K=", + "ASR1001X-10G-K9", + "NIM-SSD-RF", + "ASR1001X-SSD-200G=", + "C1AUAASR14KSK9", + "C8530L-FAN-8S8X4Y=", + "PWR-CH2-950WDCR", + "FLSA1-1X-2.5-20G", + "FLASR1-FW-GTP-RTU=", + "M-ASR1K-RP3-8GB-WS", + "SLASR1-IPB-AES", + "M-ASR1K-SSD-400GB", + "NIM-4MFT-T1/E1", + "A1K-2RU-REAR=", + "ASR1001-X-PWR-AC=", + "FLSASR1-CS-16KP=", + "ASR1001X-5G-VPN", + "C1AUUASR1500RK9", + "SLASR1-AES", + "NIM-4FXO=", + "L-SP-LA-U-2.5K-K9=", + "EPA-1X40GE", + "NIM-4FXO-WS", + "ASR1001X-2.5G-SEC", + "CAB-AC-RF", + "ASR1000-6TGE=", + "FLSASR1-FW-GTP", + "L-FLSASR1-FWNAT-R=", + "FLASR1-FPI-RTU=", + "C1AUUASR14KSK9", + "NIM-LTEA-EA-WS", + "L-FLSASR1-BB-16K", + "C1AUAASR14KRK9", + "ASR1KX-AC-750WR-RF", + "FLSA1-1X-2.5-10G", + "ASR1001-X-WS", + "L-SLASR1-AES=", + "NIM-2MFT-T1/E1-WS", + "CAB-ACA=", + "PWR-CH1-750WACR-WS", + "NIM-BLANK-RF", + "PWR-CH1-250WAC", + "SL-ASR1X-PLR-K9", + "FLASR1-CGN-2M=", + "PWR-CH1-250WAC=", + "FLSASR1-IOSRED", + "FLASR1-BB-16K", + "FLASR1-IPB-AESK9=", + "M-ASR1K-SSD-200GB=", + "ASR1001X-5G-K9", + "NIM-2FXO-WS", + "FLS-ASR1001-5G=", + "C1AUUASR1500SK9", + "L-FLASR1IOSREDRTU=", + "FLSA1-BIN-1X10GE=", + "L-FLSASR1-IPSEC=", + "C1AUUASR14KRK9=", + "SSD-M2SATA-480G", + "L-FLASR1-BB-48K", + "M-ASR1K-RP3-16GB", + "M-ASR1K-RP332GB-WS", + "C1AUAASR116KSK9=", + "FLSASR1-BB-16K", + "C1AUUASR1500RK9=", + "ASR1002HX-FAN-RF", + "C1F1AASR1K9", + "ASR1KX-PWR-BLANK", + "FLASR1-IPB-AES=", + "C8500-FAN-1R=", + "FLSASR1-BB-4K", + "L-SP-LA-E-100-K9=", + "FLSASR1-FPI", + "ASR1001X-ACS-RF", + "FLSASR1-FWNAT-R=", + "C8500-FAN-1R", + "FLASR1-CGV6-RTU", + "FLSASR1-NAT64-2M", + "L-FLSASR1-LI", + "ASR1001-ACS", + "ASR1000X-DC-950W=", + "M-ASR1KSSD100GB-WS", + "FLSASR1-CS-32KP", + "L-FLASR1-IPSECRTU=", + "NIM-4FXS", + "L-SP-LA-U-25-K9=", + "L-SP-LA-E-25-K9=", + "FLSASR1-CS-2KP", + "FLSASR1-CS-LAB=", + "ASR1001X-20G-K9-WS", + "NIM-4FXS-WS", + "SSD-M2SATA-240G", + "L-FLA1-1X-10-20G=", + "L-FLA1-EPA-1X40GE=", + "NIM-8CE1T1-PRI-RF", + "L-FLASR1FWNAT-RED=", + "ASR1000-6TGE", + "ASR1002HX-FAN", + "SM-X-PVDM-1000-RF", + "ASR1KX-AC-750W-R=", + "L-SP-LA-E-50-K9=", + "SLASR1-IPB-AIS=", + "NIM-8MFT-T1/E1", + "FLS-ASR1001-5G", + "ASR1001X-5G-K9-RF", + "FLASR1-CGV6-RTU=", + "FLASR1-AVC-UPG=", + "C1AUUASR11KSK9=", + "ASR1000-6TGE-WS", + "ASR1001-5G-AES-AX", + "M-ASR1K100116GB-RF", + "FLSASR1-NAT64-2M=", + "C1AUUASR14KSK9=", + "C1AUAASR116KRK9=", + "FLASR1-BB-64K", + "FLSASR1-CS-TPEX", + "ASR1001X-ACS", + "FLSA1-1X-5-10G=", + "UCS-CPU-E52637D=", + "FLASR1-SBC-4K", + "ASR1001X-SSD-400G=", + "FLSASR1-FW", + "FLSASR1-BB-32K=", + "CAB-MPO24-2XMPO12", + "M-ASR1K-HDD-80GB", + "FLASR1-IPSEC-RTU", + "FLSA1-1X-5-20G", + "ASR10002T+20X1GEWS", + "FLASR1-OTV-RTU=", + "NIM-X-SSD=", + "PWR-CH1-750WACR=", + "SLFL-ASR1=", + "NIM-4E/M-RF", + "L-SP-LA-U-50-K9=", + "FLASR1-FWNAT-RED", + "M-ASR1K-RP1-4GB", + "ASR1013/06PWRDC-RF", + "C1AUAASR116KRK9", + "FLASR1-FW-RTU=", + "L-FLSASR1-LI=", + "FLASR1-FPI-RTU", + "NIM-8CE1T1-PRI-WS", + "M-ASR1K-SSD-32GB", + "ASR1001-25GSECK9RF", + "M-ASR1K-SSD-32GB=", + "ASR1001-ACS=", + "ASR1001-X-DNA-RF", + "ASR1002HX-FAN-WS", + "ASR1000-2T+20X1GE", + "FLASR1-NTT-ADVSVC", + "FLASR1-SBC-RTU", + "PWR-750WACR-RED=", + "C1AUAASR11KRK9", + "C1AUUASR1500SK9=", + "ASR1001-X-DNA", + "ASR1001-X=", + "ASR1001-XA", + "ASR1000XAC1100W-RF", + "C1AUAASR1500RK9", + "C8530L-FAN-8S2X2Y", + "ASR1000-6TGE-RF", + "PWR-CH1-750WACR", + "ASR1001X-10G-VPN", + "ASR1001-X-PWRAC-RF", + "C8530L-FAN-8S2X2Y=", + "FLASR1-IPSEC=", + "FLASR1-LI=", + "C1AUUASR11KRK9=", + "ASR1001X-20GVPN-WS", + "FLSASR1-FW=", + "PWR-CH2-750WACR=", + "L-FLASR1FPI-RTU=", + "FLSA1-1X-5-20G=", + "FLASR1-NSIGHT-RTU", + "L-FLSASR1-BB-32K", + "C1AUAASR116KSK9", + "EPA-1X40GE=", + "MEMUSB-8GB", + "CAB-MPO24-2XMPO12=", + "FLSASR1-IOSRED=", + "NIM-1MFT-T1/E1-WS", + "FLSASR1-CS-LAB", + "FLASR1-BB-16K=", + "ASR1001X-20G-K9-RF", + "L-SLASR1-IPB-AIS=", + "NIM-4FXS-RF", + "FLASR1-SBC-500=", + "MEMUSB-1024FT=", + "NIM-4MFT-T1/E1=", + "FLASR1-BB-32K", + "C1AUAASR11KSK9", + "ASR1002HX-FAN=", + "NIM-LTEA-LA=", + "FLASR1-AVC-RTU=", + "C1AUAASR1500SK9", + "SSD-C8530-480G", + "M-ASR1K-HDD-80GB=", + "SLASR1-AES=", + "ASR1001X-AES-AX", + "SLASR1-IPB", + "M-ASR1K-HDD80GB-RF", + "L-SP-LA-W-1K-K9=", + "C1F1AASR1K9=", + "L-FLSASR1-FWNAT-R", + "FLSASR1-CS-32KP=", + "L-FLA1-1X-2.5-10G=", + "NIM-8MFT-T1/E1-RF", + "ASR1000X-AC750W-RF", + "FLSA1-MACSEC40G", + "FLASR1-IPB-AIS=", + "NIM-LTEA-LA-WS", + "C1-ASR1001-X/K9", + "FLASR1-SBC-16K", + "ASR10002T+20X1GERF", + "L-FLSASR1-FPI", + "M-ASR1K-RP2-16GB=", + "C1AUUASR11KSK9", + "ASR1001X-SSD-400G", + "NIM-1MFT-T1/E1-RF", + "L-SP-LA-U-500-K9=", + "FLASR1-BB-4K=", + "ASR1K-CLOUD-EDGE", + "L-SP-LA-E-2.5K-K9=", + "FLASR1-NAT64-2M=", + "CAB-ACU=", + "FLSA1-MACSEC100G", + "C8400-FAN-8455-G2=", + "NIM-4MFT-T1/E1-RF", + "C1AUAASR14KRK9=", + "L-FLSASR1-SHELL", + "ASR1000X-FAN-RF", + "EPA-1X100GE", + "FLASR1-CGN-6M", + "FLSASR1-IPSEC=", + "ASR1001X-25GVPN-WS", + "FLASR1-SBC-RTU=", + "L-FLA1-1X-2.5-5G=", + "L-FLSA1-1X-10-20G=", + "ASR1013/06-PWR-AC=", + "FLASR1-LISP-RTU=", + "M-ASR1001X-8GB", + "FLASR1-NTT-ADVSVC=", + "FLASR1-OTV-RTU", + "ASR1000X-FAN=", + "FLASR1-H248-RTU", + "M-ASR1001X-16GB", + "M-ASR1K-SSD-100GB", + "SM-X-PVDM-500-RF", + "FLSA1-MACSEC40G=", + "C1AUAASR14KSK9=", + "ASR1001HX-FAN", + "L-FLS-ASR1001-5G=", + "C1AUUASR11KRK9", + "PWR-CH2-950WDCR=", + "M-ASR1K-1001-16GB=", + "M-ASR1KSSD200GB-WS", + "L-FLA1-1X-5-20G=", + "MEMUSB-1024FT-RF", + "NIM-LTEA-EA", + "L-SP-LA-U-5K-K9=", + "L-SP-LA-E-500-K9=", + "PWR-8500-CVR=", + "ASR1001X-10G-K9-WS", + "C1AUAASR1500SK9=", + "FLSA1-MACSEC100G=", + "L-SP-LA-E-5K-K9=", + "NIM-2BRI-NT/TE-RF", + "L-FLSASR1-AVC=", + "FLASR1-BB-4K", + "ASR1000X-FAN", + "NIM-LTEA-LA", + "ASR1013/06-PWR-DC=", + "L-SLASR1-IPB=", + "L-FLASR1IPB-AESK9=", + "PWR-CH1-950WDCR-WS", + "NIM-1MFT-T1/E1=", + "C1AUUASR1100RK9=", + "C8400-FAN-8475-G2", + "ASR1006=", + "L-FLSASR1-BB-4K=", + "ASR1000X-AC-1100W", + "ASR1KX-DC-950W-R=", + "ASR1001X-25GVPN-RF", + "NIM-SSD=", + "L-FLA1-1X-2.5-20G=", + "ASR1001X-20GVPN-RF", + "M-ASR1001X-8GB-WS", + "SSD-M2SATA-240G=", + "ASR1000X-HV-1100W=", + "FLASR1-FW-GTP-RTU", + "FLSA1-1X-2.5-5G=", + "NIM-2MFT-T1/E1=", + "M-ASR1K-RP216GB-RF", + "MEMUSB-1024FT", + "ASR1001X-10G-K9-RF", + "ASR1001-X-PWRAC-WS", + "C1AUUASR116KRK9", + "FLSASR1-CS-4KP", + "L-SP-LA-U-100-K9=", + "L-FLA1-MACSEC40G=", + "NIM-8CE1T1-PRI=", + "SSD-M2SATA-480G=", + "FLSASR1-LI=", + "L-SLFL-ASR1=", + "FLASR1-LISP-RTU", + "M-ASR1K-RP2-8GB-RF", + "MEMUSB-8GB=", + "NIM-4MFT-T1/E1-WS", + "NIM-BLANK=", + "C1-ASR1001-X/K9=", + "L-FLASR1-BB-48K=", + "ASR1001-5G-AX", + "M-ASR1K-RP3-32GB", + "FLASR1-AES-AIS=", + "L-FLSASR1-BB-32K=", + "C1AUAASR1100RK9", + "M-ASR1001X-16GB=", + "M-ASR1K-RP3-8GB=", + "FLSASR1-BB", + "FLASR1-IPB-AISK9=", + "ASR1000X-FAN-WS", + "L-FLA1-MACSEC100G=", + "ASR1KX-HV-1100W-R", + "L-SLASR1-IPB-AES=", + "C8400-FAN-8475-G2=", + "SL-ASR1-UC=", + "FLASR1-SBC-H248", + "ASR1001X-5G-K9-WS", + "M-ASR1K-RP2-16GB", + "ASR1001X-20G-K9", + "C8500L-FAN-1R", + "NIM-1MFT-T1/E1++=", + "ASR1KX-HV-1100W-R=", + "C1AUUASR116KSK9", + "SSD-M2SATA-480G-RF", + "L-FLSASR1-FW=", + "SL-ASR1-UC", + "FLSASR1-AVC", + "ASR1001-X", + "ASR1KX-AC-750W", + "EPA-1X40GE-WS", + "CAB-ACU-RF", + "FLSASR1-CS-250P=", + "ASR1013/06-PWR-AC", + "NIM-8MFT-T1/E1-WS", + "PWR-750WACR-RED", + "FLASR1-CRYPTO-RTU=", + "ASR1000X-HV-1100W", + "ASR1001X-2.5GK9-WS", + "L-FLSASR1-BB-4K", + "ASR1KX-DC-950W-R" + ], + "sites": [], + "show": false, + "userDefined": false + } + ], + "ccolatest": true, + "importSourceType": "CCO", + "ccoreverseSync": true + }, + { + "imageUuid": "2ef2d390-cb16-4d65-8caf-a8bf98f143f3", + "name": "asr1001x-universalk9.17.09.06.SPA.bin", + "family": "asr1001x", + "version": "17.09.06.0.7681", + "displayVersion": "17.09.06", + "md5Checksum": "2db2113c747c991660e2d85d394e10a8", + "shaCheckSum": "c47dd9615384c2e081f822d1821657f4ddb151aef1ca35976df9ad2dc97961d206af524c6f435e2105e22651a8f5a1708b96b9be40aa9cca67e27a332adcc3fc", + "createdTime": "2024-11-05 01:45:47.177", + "imageType": "SYSTEM_SW", + "fileSize": "809056564 bytes", + "imageName": "asr1001x-universalk9.17.09.06.SPA.bin", + "applicationType": "", + "feature": "", + "fileServiceId": "ab3aaeb0-7518-4707-9bf4-13a1ce323408", + "isTaggedGolden": true, + "imageSource": "CCO", + "extendedAttributes": { + "Description": "Cisco IOS Software, IOS-XE Software", + "md5_checksum": "2db2113c747c991660e2d85d394e10a8", + "DEFAULT_BOOTROM": "UNKNOWN", + "COMPRESSION_CODE": "5003", + "DEFAULT_MINFLASHSIZE": "UNKNOWN", + "sha512_checksum": "c47dd9615384c2e081f822d1821657f4ddb151aef1ca35976df9ad2dc97961d206af524c6f435e2105e22651a8f5a1708b96b9be40aa9cca67e27a332adcc3fc", + "deviceMNEId": "344434", + "image_name": "asr1001x-universalk9.17.09.06.SPA.bin", + "BOOTROM": "UNKNOWN", + "MINFLASHSIZE": "UNKNOWN", + "image_guid": "3DE1600EEBD7FF5AC56B9F39C3A3A6C02B0A3919", + "MEDIA": "5", + "mdf_id": "284932298", + "min_flash": "8192", + "release_version": "Cupertino-17.9.6", + "image_description": "Cisco ASR1001-X IOS XE UNIVERSAL", + "metadata_trans_id": "530879813913650970", + "image_size": "809056564", + "software_type_id": "282046477", + "field_notice_url": "https://www.cisco.com/c/en/us/support/routers/asr-1000-series-aggregation-services-routers/products-field-notices-list.html", + "min_dram": "8192", + "field_notices": "Field Notices", + "GAIA_FEATURE": "UNKNOWN", + "release_doc_url": "https://www.cisco.com/c/en/us/td/docs/routers/asr1000/release/notes/xe-17-9/asr1000-rel-notes-xe-17-9.html", + "release_doc_name": "Release Notes for ASR1001-X", + "encryption_software_indicator": "Y", + "release_fcs_date": "16/Sep/2024", + "FULL_VERSION": "17.09.06.0.7681", + "udi": "PID:%20ASR1001-X%20VID:%20V06,%20SN:%20FXS2502Q2HC", + "DEFAULT_RAM": "UNKNOWN", + "RAM": "UNKNOWN" + }, + "vendor": "CISCO", + "imageIntegrityStatus": "VERIFIED", + "applicableDevicesForImage": [ + { + "mdfId": "284932298", + "productName": "Cisco ASR 1001-X Router", + "productId": [ + "FLASR1-BB-8K", + "SM-X-PVDM-1000", + "ASR1001X-SSD-100G", + "C1AUUASR1100RK9", + "NIM-8CE1T1-PRI", + "M-ASR1001HX-16GB", + "ASR1001-X-PWR-DC", + "M-ASR1K-RP3-64GB=", + "C8500L-FAN-1R=", + "FLSASR1-IPSEC", + "M-ASR1001X-8GB-RF", + "FLA1-EPA-1X40GE=", + "NIM-4BRI-NT/TE-WS", + "ASR1001X-ACS=", + "ASR1KX-PWR-BLANK=", + "ASR1000X-DC-950W", + "SM-X-PVDM-1000=", + "SLASR1-IPB-AIS", + "FLASR1-FWNAT-RED=", + "L-FLA1-BIN-1X10GE=", + "NIM-2BRI-NT/TE-WS", + "EPA-QSFP-1X100GE", + "ASR1001X-SSD-100G=", + "FLSASR1-SHELL", + "ASR1001X-5G-VPN-WS", + "FLASR1-IOSRED-RTU=", + "FLASR1-BB-RTU=", + "ASR1001X-20G-VPN", + "FLSA1-BIN-1X10GE", + "NIM-4FXS=", + "ASR1001-5G-AIS-AX", + "ASR1000X-DC950W-RF", + "M-ASR1K-RP2-8GB", + "M-ASR1K-SSD-100GB=", + "ASR1001-XA=", + "FLSASR1-BB-16K=", + "ASR1001-X-PWRDC-RF", + "FLSASR1-CS-2KP=", + "SM-X-PVDM-500", + "FLSASR1-FW-GTP=", + "CAB-ACU", + "NIM-LTEA-EA=", + "ASR1001-X-RF", + "L-SP-LA-W-25-K9=", + "FLASR1-BB-8K=", + "ASR1001X-AIS-AX-RF", + "FLASR1-NSIGHT-RTU=", + "C1AUAASR11KRK9=", + "ASR1013/06PWRAC-RF", + "C1AUAASR1K9", + "M-ASR1001HX16GB-RF", + "L-FLASR1LI-RTU=", + "L-SLASR1-AIS-AES=", + "FLASR1-LI-RTU", + "ASR1000X-AC-750W=", + "NIM-BLANK", + "ASR1000X-AC-750W", + "FLASR1-BB-64K=", + "FLSASR1-BB-4K=", + "CAB-ACA", + "NIM-X-SSD", + "CAB-AC=", + "L-FLASR1-AES-AIS=", + "ASR1001X-25GSEC-RF", + "CAB-ACI", + "L-SLASR1-AIS-AES", + "FLASR1-NAT64-2M", + "L-SLASR1-IPB-AES", + "ASR1013/06-PWR-DC", + "NIM-4FXO-RF", + "L-FLSASR1-BB=", + "NIM-1MFT-T1/E1", + "ASR1001-X-PWR-AC", + "FLSASR1-CS-16KP", + "L-SP-LA-W-2.5K-K9=", + "L-FLSASR1-IOSRED", + "ASR1001-X-PWR-DC=", + "A1K-1RU-REAR=", + "SL-ASR1X-PLR-K9=", + "NIM-LTEA-EA-RF", + "FLASR1-FW-SGT-RTU", + "FLASR1-VPLS-RTU=", + "NIM-SSD", + "M-ASR1K-RP3-16GB=", + "L-FLSASR1-FPI=", + "L-SP-LA-W-50-K9=", + "FLSA1-1X-2.5-20G=", + "ASR1001X-2.5GK9-RF", + "C1AUAASR11KSK9=", + "ASR1000X-AC-1100W=", + "FLASR1-SBC-H248=", + "C1AUAASR1500RK9=", + "L-SP-LA-W-500-K9=", + "CAB-ACI=", + "ASR1001X-AIS-AX", + "L-FLASR1-BB-32K=", + "FLASR1-BB-32K=", + "M-ASR1K-RP3-64GB", + "SLASR1-IPB=", + "M-ASR1K-SSD-400GB=", + "SLASR1-AIS-AES=", + "L-FLSASR1-IOSRED=", + "FLSA1-1X-10-20G=", + "ASR1001X-5G-VPN-RF", + "C8530L-FAN-8S8X4Y", + "M-ASR1K-RP3-8GB", + "FLSASR1-FWNAT-R", + "C8400-FAN-8455-G2", + "FLASR1-CGN-2M", + "M-ASR1K-SSD-200GB", + "L-FLASR1-BB-4K=", + "PWR-8500-CVR", + "NIM-SSD-WS", + "NIM-2MFT-T1/E1", + "NIM-8MFT-T1/E1++=", + "ASR1001X-5G-SEC", + "L-FLA1-1X-5-10G=", + "L-SLASR1-IPB-AIS", + "ASR1001X-2.5G-VPN", + "L-FLASR1-FW-RTU=", + "ASR1001-ACS-RF", + "FLASR1-SBC-4K=", + "FLSA1-1X-10-20G", + "L-SLASR1-AIS=", + "M-ASR1001HX-16GB=", + "SL-ASR1-RP-PLR-K9", + "L-FLS-ASR1001-5G", + "ASR1001X-SSD-200G", + "FLSASR1-CS-TPEX=", + "NIM-2MFT-T1/E1++=", + "FLASR1-CGN-6M=", + "FLASR1-LI-RTU=", + "ASR1KX-AC-750W=", + "M-ASR1KSSD400GB-WS", + "M-ASR1K-RP3-32GB=", + "CAB-AC", + "FLSASR1-CS-4KP=", + "MEMUSB-8GB-RF", + "FLSA1-1X-2.5-10G=", + "L-FLSASR1-BB", + "L-SP-LA-W-5K-K9=", + "M-ASR1K-1001-16GB", + "ASR1001X-5G-SEC-RF", + "NIM-4MFT-T1/E1++=", + "L-FLASR1-BB-64K=", + "EPA-QSFP-1X100GE=", + "FLSASR1-SHELL=", + "L-SP-LA-U-1K-K9=", + "M-ASR1001X-16GB-RF", + "M-ASR1K-RP316GB-WS", + "ASR1K-AZURE-EXP-RT", + "FLASR1-FW-RTU", + "C1AUUASR1K9", + "L-FLASR1-BB-64K", + "CAB-AC-WS", + "FLSA1-1X-2.5-5G", + "FLSASR1-LI", + "C1F1UASR1K9", + "FLSASR1-BB-32K", + "PWR-CH1-400WAC=", + "M-ASR1001X-8GB=", + "M-ASR1K-RP1-4GB-RF", + "ASR1001X-FIPS-KIT=", + "ASR1000-2T+20X1GE=", + "C1AUUASR116KRK9=", + "NIM-2MFT-T1/E1-RF", + "L-FLSASR1-IPSEC", + "ASR1KX-DC-950WR-RF", + "ASR1001X-10G-SEC", + "C1F1UASR1K9=", + "NIM-2FXO-RF", + "PWR-CH1-400WAC-WS", + "L-SP-LA-E-1K-K9=", + "M-ASR1K-RP364GB-WS", + "SLASR1-AIS", + "FLASR1-LI", + "ASR1001-FIPS-KIT=", + "ASR1001HX-FAN=", + "NIM-4E/M-WS", + "M-ASR1K-RP2-8GB=", + "L-SP-LA-W-100-K9=", + "FLSASR1-BB=", + "FLASR1-VPLS-RTU", + "FLASR1-SBC-16K=", + "FLSA1-1X-5-10G", + "FLASR1-SBC-500", + "C1AUUASR1K9=", + "SLASR1-IPB-AES=", + "SL-ASR1-RP-PLR-K9=", + "L-FLASR1-BB-RTU=", + "C1AUAASR1K9=", + "FLASR1-IPSEC-RTU=", + "L-SP-LA-P-25-K9=", + "NIM-4BRI-NT/TE-RF", + "ASR1K-WAN-CORE", + "ASR1001X-2.5G-K9", + "L-FLASR1IPB-AISK9=", + "ASR1001-X-IWANPM", + "FLASR1-BB-48K", + "FLASR1-BB-RTU", + "ASR1001X-20G-SEC", + "C1AUAASR1100RK9=", + "ASR1001-X-PWRDC-WS", + "FLASR1-IPSEC", + "ASR1001X-25GSEC-WS", + "C1AUUASR116KSK9=", + "FLSASR1-AVC=", + "FLASR1-AVC-RTU", + "M-ASR1K-RP1-4GB=", + "FLASR1-BB-48K=", + "PWR-CH2-750WACR", + "NIM-8MFT-T1/E1=", + "C8300-FAN-2R-RF", + "FLASR1-H248-RTU=", + "SM-X-PVDM-500=", + "ASR1KX-AC-750W-R", + "L-FLSASR1-FW", + "EPA-1X100GE-WS", + "FLSASR1-FPI=", + "FLSASR1-CS-250P", + "FLASR1-IOSRED-RTU", + "FLASR1-FW-SGT-RTU=", + "FLASR1-CRYPTO-RTU", + "C1AUUASR14KRK9", + "ASR1001X-10G-K9", + "L-FLSASR1-BB-16K=", + "NIM-SSD-RF", + "C1AUAASR14KSK9", + "ASR1001X-SSD-200G=", + "C8530L-FAN-8S8X4Y=", + "PWR-CH2-950WDCR", + "FLSA1-1X-2.5-20G", + "M-ASR1K-RP3-8GB-WS", + "FLASR1-FW-GTP-RTU=", + "SLASR1-IPB-AES", + "M-ASR1K-SSD-400GB", + "NIM-4MFT-T1/E1", + "A1K-2RU-REAR=", + "ASR1001-X-PWR-AC=", + "ASR1001X-5G-VPN", + "FLSASR1-CS-16KP=", + "SLASR1-AES", + "C1AUUASR1500RK9", + "NIM-4FXO=", + "L-SP-LA-U-2.5K-K9=", + "NIM-4FXO-WS", + "EPA-1X40GE", + "ASR1001X-2.5G-SEC", + "CAB-AC-RF", + "ASR1000-6TGE=", + "FLSASR1-FW-GTP", + "L-FLSASR1-FWNAT-R=", + "FLASR1-FPI-RTU=", + "C1AUUASR14KSK9", + "NIM-LTEA-EA-WS", + "L-FLSASR1-BB-16K", + "C1AUAASR14KRK9", + "FLSA1-1X-2.5-10G", + "ASR1KX-AC-750WR-RF", + "L-SLASR1-AES=", + "ASR1001-X-WS", + "CAB-ACA=", + "NIM-2MFT-T1/E1-WS", + "NIM-BLANK-RF", + "PWR-CH1-750WACR-WS", + "PWR-CH1-250WAC", + "FLASR1-CGN-2M=", + "SL-ASR1X-PLR-K9", + "PWR-CH1-250WAC=", + "FLSASR1-IOSRED", + "FLASR1-BB-16K", + "FLASR1-IPB-AESK9=", + "M-ASR1K-SSD-200GB=", + "NIM-2FXO-WS", + "ASR1001X-5G-K9", + "FLS-ASR1001-5G=", + "C1AUUASR1500SK9", + "L-FLASR1IOSREDRTU=", + "FLSA1-BIN-1X10GE=", + "L-FLSASR1-IPSEC=", + "C1AUUASR14KRK9=", + "SSD-M2SATA-480G", + "L-FLASR1-BB-48K", + "M-ASR1K-RP3-16GB", + "M-ASR1K-RP332GB-WS", + "C1AUAASR116KSK9=", + "FLSASR1-BB-16K", + "C1AUUASR1500RK9=", + "ASR1002HX-FAN-RF", + "C1F1AASR1K9", + "ASR1KX-PWR-BLANK", + "FLASR1-IPB-AES=", + "C8500-FAN-1R=", + "L-SP-LA-E-100-K9=", + "FLSASR1-BB-4K", + "ASR1001X-ACS-RF", + "FLSASR1-FPI", + "FLSASR1-FWNAT-R=", + "C8500-FAN-1R", + "L-FLSASR1-LI", + "FLSASR1-NAT64-2M", + "FLASR1-CGV6-RTU", + "ASR1001-ACS", + "ASR1000X-DC-950W=", + "M-ASR1KSSD100GB-WS", + "FLSASR1-CS-32KP", + "L-FLASR1-IPSECRTU=", + "NIM-4FXS", + "L-SP-LA-U-25-K9=", + "FLSASR1-CS-2KP", + "L-SP-LA-E-25-K9=", + "FLSASR1-CS-LAB=", + "ASR1001X-20G-K9-WS", + "NIM-4FXS-WS", + "L-FLA1-EPA-1X40GE=", + "L-FLA1-1X-10-20G=", + "SSD-M2SATA-240G", + "NIM-8CE1T1-PRI-RF", + "L-FLASR1FWNAT-RED=", + "ASR1000-6TGE", + "ASR1002HX-FAN", + "SM-X-PVDM-1000-RF", + "ASR1KX-AC-750W-R=", + "L-SP-LA-E-50-K9=", + "SLASR1-IPB-AIS=", + "NIM-8MFT-T1/E1", + "FLS-ASR1001-5G", + "ASR1001X-5G-K9-RF", + "FLASR1-CGV6-RTU=", + "FLASR1-AVC-UPG=", + "C1AUUASR11KSK9=", + "ASR1001-5G-AES-AX", + "ASR1000-6TGE-WS", + "FLSASR1-NAT64-2M=", + "M-ASR1K100116GB-RF", + "C1AUUASR14KSK9=", + "C1AUAASR116KRK9=", + "FLASR1-BB-64K", + "FLSASR1-CS-TPEX", + "ASR1001X-ACS", + "FLASR1-SBC-4K", + "UCS-CPU-E52637D=", + "FLSA1-1X-5-10G=", + "ASR1001X-SSD-400G=", + "FLSASR1-FW", + "CAB-MPO24-2XMPO12", + "FLSASR1-BB-32K=", + "M-ASR1K-HDD-80GB", + "FLSA1-1X-5-20G", + "FLASR1-IPSEC-RTU", + "FLASR1-OTV-RTU=", + "ASR10002T+20X1GEWS", + "NIM-X-SSD=", + "PWR-CH1-750WACR=", + "SLFL-ASR1=", + "NIM-4E/M-RF", + "L-SP-LA-U-50-K9=", + "FLASR1-FWNAT-RED", + "M-ASR1K-RP1-4GB", + "ASR1013/06PWRDC-RF", + "C1AUAASR116KRK9", + "FLASR1-FW-RTU=", + "FLASR1-FPI-RTU", + "L-FLSASR1-LI=", + "NIM-8CE1T1-PRI-WS", + "M-ASR1K-SSD-32GB", + "M-ASR1K-SSD-32GB=", + "ASR1001-25GSECK9RF", + "ASR1001-ACS=", + "ASR1001-X-DNA-RF", + "ASR1002HX-FAN-WS", + "FLASR1-NTT-ADVSVC", + "ASR1000-2T+20X1GE", + "PWR-750WACR-RED=", + "FLASR1-SBC-RTU", + "C1AUAASR11KRK9", + "C1AUUASR1500SK9=", + "ASR1001-X-DNA", + "ASR1001-X=", + "C8530L-FAN-8S2X2Y", + "C1AUAASR1500RK9", + "ASR1000XAC1100W-RF", + "ASR1001-XA", + "PWR-CH1-750WACR", + "ASR1000-6TGE-RF", + "ASR1001X-10G-VPN", + "ASR1001-X-PWRAC-RF", + "FLASR1-LI=", + "FLASR1-IPSEC=", + "C8530L-FAN-8S2X2Y=", + "C1AUUASR11KRK9=", + "ASR1001X-20GVPN-WS", + "FLSASR1-FW=", + "PWR-CH2-750WACR=", + "L-FLASR1FPI-RTU=", + "FLASR1-NSIGHT-RTU", + "FLSA1-1X-5-20G=", + "L-FLSASR1-BB-32K", + "C1AUAASR116KSK9", + "EPA-1X40GE=", + "MEMUSB-8GB", + "CAB-MPO24-2XMPO12=", + "NIM-1MFT-T1/E1-WS", + "FLSASR1-IOSRED=", + "FLSASR1-CS-LAB", + "FLASR1-BB-16K=", + "ASR1001X-20G-K9-RF", + "L-SLASR1-IPB-AIS=", + "NIM-4FXS-RF", + "FLASR1-SBC-500=", + "MEMUSB-1024FT=", + "NIM-4MFT-T1/E1=", + "C1AUAASR11KSK9", + "FLASR1-BB-32K", + "ASR1002HX-FAN=", + "NIM-LTEA-LA=", + "C1AUAASR1500SK9", + "FLASR1-AVC-RTU=", + "SLASR1-AES=", + "M-ASR1K-HDD-80GB=", + "SSD-C8530-480G", + "ASR1001X-AES-AX", + "SLASR1-IPB", + "M-ASR1K-HDD80GB-RF", + "L-SP-LA-W-1K-K9=", + "C1F1AASR1K9=", + "L-FLSASR1-FWNAT-R", + "FLSASR1-CS-32KP=", + "L-FLA1-1X-2.5-10G=", + "NIM-8MFT-T1/E1-RF", + "ASR1000X-AC750W-RF", + "FLSA1-MACSEC40G", + "FLASR1-IPB-AIS=", + "NIM-LTEA-LA-WS", + "FLASR1-SBC-16K", + "C1-ASR1001-X/K9", + "ASR10002T+20X1GERF", + "M-ASR1K-RP2-16GB=", + "L-FLSASR1-FPI", + "C1AUUASR11KSK9", + "ASR1001X-SSD-400G", + "NIM-1MFT-T1/E1-RF", + "L-SP-LA-U-500-K9=", + "FLASR1-BB-4K=", + "FLASR1-NAT64-2M=", + "L-SP-LA-E-2.5K-K9=", + "ASR1K-CLOUD-EDGE", + "CAB-ACU=", + "FLSA1-MACSEC100G", + "C8400-FAN-8455-G2=", + "NIM-4MFT-T1/E1-RF", + "C1AUAASR14KRK9=", + "L-FLSASR1-SHELL", + "ASR1000X-FAN-RF", + "FLSASR1-IPSEC=", + "FLASR1-CGN-6M", + "EPA-1X100GE", + "ASR1001X-25GVPN-WS", + "FLASR1-SBC-RTU=", + "L-FLA1-1X-2.5-5G=", + "L-FLSA1-1X-10-20G=", + "ASR1013/06-PWR-AC=", + "FLASR1-LISP-RTU=", + "FLASR1-NTT-ADVSVC=", + "M-ASR1001X-8GB", + "FLASR1-H248-RTU", + "ASR1000X-FAN=", + "FLASR1-OTV-RTU", + "M-ASR1001X-16GB", + "SM-X-PVDM-500-RF", + "M-ASR1K-SSD-100GB", + "FLSA1-MACSEC40G=", + "C1AUAASR14KSK9=", + "ASR1001HX-FAN", + "C1AUUASR11KRK9", + "L-FLS-ASR1001-5G=", + "PWR-CH2-950WDCR=", + "M-ASR1K-1001-16GB=", + "M-ASR1KSSD200GB-WS", + "MEMUSB-1024FT-RF", + "L-FLA1-1X-5-20G=", + "NIM-LTEA-EA", + "L-SP-LA-U-5K-K9=", + "L-SP-LA-E-500-K9=", + "PWR-8500-CVR=", + "ASR1001X-10G-K9-WS", + "C1AUAASR1500SK9=", + "FLSA1-MACSEC100G=", + "L-SP-LA-E-5K-K9=", + "NIM-2BRI-NT/TE-RF", + "L-FLSASR1-AVC=", + "FLASR1-BB-4K", + "ASR1000X-FAN", + "NIM-LTEA-LA", + "ASR1013/06-PWR-DC=", + "L-SLASR1-IPB=", + "L-FLASR1IPB-AESK9=", + "PWR-CH1-950WDCR-WS", + "NIM-1MFT-T1/E1=", + "C1AUUASR1100RK9=", + "L-FLSASR1-BB-4K=", + "ASR1006=", + "C8400-FAN-8475-G2", + "ASR1000X-AC-1100W", + "ASR1KX-DC-950W-R=", + "ASR1001X-25GVPN-RF", + "NIM-SSD=", + "L-FLA1-1X-2.5-20G=", + "ASR1001X-20GVPN-RF", + "M-ASR1001X-8GB-WS", + "ASR1000X-HV-1100W=", + "SSD-M2SATA-240G=", + "FLSA1-1X-2.5-5G=", + "FLASR1-FW-GTP-RTU", + "NIM-2MFT-T1/E1=", + "M-ASR1K-RP216GB-RF", + "MEMUSB-1024FT", + "ASR1001X-10G-K9-RF", + "ASR1001-X-PWRAC-WS", + "C1AUUASR116KRK9", + "FLSASR1-CS-4KP", + "L-SP-LA-U-100-K9=", + "L-FLA1-MACSEC40G=", + "NIM-8CE1T1-PRI=", + "FLSASR1-LI=", + "SSD-M2SATA-480G=", + "FLASR1-LISP-RTU", + "L-SLFL-ASR1=", + "NIM-BLANK=", + "NIM-4MFT-T1/E1-WS", + "MEMUSB-8GB=", + "M-ASR1K-RP2-8GB-RF", + "C1-ASR1001-X/K9=", + "L-FLASR1-BB-48K=", + "M-ASR1K-RP3-32GB", + "ASR1001-5G-AX", + "FLASR1-AES-AIS=", + "L-FLSASR1-BB-32K=", + "C1AUAASR1100RK9", + "M-ASR1001X-16GB=", + "M-ASR1K-RP3-8GB=", + "FLSASR1-BB", + "ASR1000X-FAN-WS", + "FLASR1-IPB-AISK9=", + "L-FLA1-MACSEC100G=", + "ASR1KX-HV-1100W-R", + "C8400-FAN-8475-G2=", + "L-SLASR1-IPB-AES=", + "FLASR1-SBC-H248", + "SL-ASR1-UC=", + "ASR1001X-5G-K9-WS", + "M-ASR1K-RP2-16GB", + "ASR1001X-20G-K9", + "C8500L-FAN-1R", + "ASR1KX-HV-1100W-R=", + "NIM-1MFT-T1/E1++=", + "C1AUUASR116KSK9", + "SSD-M2SATA-480G-RF", + "SL-ASR1-UC", + "L-FLSASR1-FW=", + "ASR1001-X", + "FLSASR1-AVC", + "ASR1KX-AC-750W", + "EPA-1X40GE-WS", + "FLSASR1-CS-250P=", + "CAB-ACU-RF", + "NIM-8MFT-T1/E1-WS", + "ASR1013/06-PWR-AC", + "PWR-750WACR-RED", + "ASR1000X-HV-1100W", + "FLASR1-CRYPTO-RTU=", + "L-FLSASR1-BB-4K", + "ASR1001X-2.5GK9-WS", + "ASR1KX-DC-950W-R" + ], + "sites": [], + "show": false, + "userDefined": false + } + ], + "ccolatest": true, + "importSourceType": "CCO", + "ccoreverseSync": true + }, + { + "imageUuid": "0593a30f-8d0b-4a1d-936e-838b8068c1a7", + "name": "isr4400-universalk9.17.12.04.SPA.bin", + "family": "ISR4400", + "version": "17.12.04.0.4826", + "displayVersion": "17.12.04", + "md5Checksum": "f3a3d053fe3e5d874b409760318d42ef", + "shaCheckSum": "d423272f02f96267bdbf03368a09fa7b2e5580638d9a60fef267b561f71312f8e37175a0b46a00fe0709a03892f7d7a300dd0e1185d864e87a1a2f11d7e1ae55", + "createdTime": "2024-11-05 01:45:47.177", + "imageType": "SYSTEM_SW", + "fileSize": "784049832 bytes", + "imageName": "isr4400-universalk9.17.12.04.SPA.bin", + "applicationType": "", + "feature": "", + "fileServiceId": "9c01cbd5-0ed3-4052-9a33-6777fbbe1abc", + "isTaggedGolden": true, + "imageSource": "CCO", + "extendedAttributes": { + "Description": "Cisco IOS Software, IOS-XE Software", + "DEFAULT_BOOTROM": "0", + "md5_checksum": "f3a3d053fe3e5d874b409760318d42ef", + "DEFAULT_MINFLASHSIZE": "0", + "sha512_checksum": "d423272f02f96267bdbf03368a09fa7b2e5580638d9a60fef267b561f71312f8e37175a0b46a00fe0709a03892f7d7a300dd0e1185d864e87a1a2f11d7e1ae55", + "deviceMNEId": "344428", + "image_name": "isr4400-universalk9.17.12.04.SPA.bin", + "image_guid": "DF50826B88D076ECF804EA67AD4F2B1488CD5F53", + "mdf_id": "284389362", + "min_flash": "8192", + "release_version": "Dublin-17.12.4", + "image_description": "Cisco ISR 4400 Series IOS XE Universal", + "metadata_trans_id": "434139544993189532", + "image_size": "784049832", + "software_type_id": "282046477", + "field_notice_url": "https://www.cisco.com/c/en/us/support/routers/4000-series-integrated-services-routers-isr/products-field-notices-list.html", + "min_dram": "4096", + "field_notices": "Field Notices", + "release_doc_url": "https://www.cisco.com/c/en/us/td/docs/routers/access/4400/release/xe-17-12/isr4k-rel-notes-xe-17-12.html", + "release_doc_name": "Release Notes for ISR4451-X", + "encryption_software_indicator": "Y", + "release_fcs_date": "24/Jul/2024", + "FULL_VERSION": "17.12.04.0.4826", + "DEFAULT_RAM": "0", + "udi": "PID:%20ISR4451-X/K9%20VID:%20V08,%20SN:%20FJC2402A0TX" + }, + "vendor": "CISCO", + "imageIntegrityStatus": "VERIFIED", + "applicableDevicesForImage": [ + { + "mdfId": "284358776", + "productName": "Cisco 4431 Integrated Services Router", + "productId": [ + "ACS-4430FANASSY-RF", + "SM-X-PVDM-1000", + "NIM-VA-B-RF", + "SSD-M2SATA-480G", + "ISR4431-VSEC/K9", + "MEM-4400-8G=", + "NIM-4BRI-NT/TE-WS", + "SM-X-PVDM-1000=", + "PVDM4-128++=", + "C-NIM-1M=", + "PVDM4-32U256", + "NIM-2BRI-NT/TE-WS", + "PVDM4-32-RF", + "L-SP-LA-E-100-K9=", + "SM-X-NIM-ADPTR-WS", + "PWR-4430-DC=", + "SSD-SATA-400G", + "PWR-4430-AC-WS", + "NIM-VAB-M-WS", + "NIM-4FXS=", + "PWR-CC1-400WDC=", + "PVDM4-64-WS", + "ISR4431-V/K9-WS", + "SM-X-PVDM-500", + "E100S-MEM-UDIMM8G", + "ISR4431-PM20", + "NIM-LTEA-EA=", + "NIM-4FXS", + "L-SP-LA-W-25-K9=", + "PVDM4-32", + "L-SP-LA-U-25-K9=", + "L-SP-LA-E-25-K9=", + "E100SMEMUDIMM8G-RF", + "ISR4351-SEC/K9", + "MEM-FLSH-4G=", + "MEM-FLSH-8U16G", + "ISR4431-AX/K9-RF", + "NIM-4FXS-WS", + "NIM-4FXO", + "ISR4431-VSEC/K9-WS", + "SSD-MSATA-200G", + "C1AUUISR4400SK9", + "NIM-2GE-CU-SFP-RF", + "PWR-4430-DC-RF", + "C-NIM-2T-WS", + "SM-X-24FXS/4FXO=", + "NIM-PVDM-64-RF", + "PVDM4-128-RF", + "SM-X-PVDM-1000-RF", + "NIM-X-SSD", + "L-SP-LA-E-50-K9=", + "NIM-8MFT-T1/E1", + "NIM-1CE1T1-PRI-RF", + "PVDM4-256=", + "SSD-SATA-200G-RF", + "PWR-CC1-400WDC-RF", + "NIM-4FXO-RF", + "NIM-1MFT-T1/E1", + "L-SP-LA-W-2.5K-K9=", + "MEM-FLSH-4U16G-RF", + "PWR-CC1-250WAC-WS", + "PVDM4-32U256-RF", + "SM-X-8FXS/12FXO-RF", + "PVDM4-32=", + "NIM-PVDM-128", + "ISR4431-AXV/K9-RF", + "MEM-FLSH-4U8G-RF", + "MEM-4400-DP-2GU4G", + "NIM-LTEA-EA-RF", + "MEM-FLSH-4U16G", + "C1A2UISR4400SK9=", + "ISR4431-DNA-WS", + "ACS-4430-RM-19=", + "SSD-MSATA-400G", + "NIM-SSD", + "SI-ISR4431-IWAN/K9", + "FL-44-PERF-K9=", + "NIM-ES2-8-P-RF", + "NIM-VAB-M-RF", + "NIM-X-SSD=", + "ACS-4430-BEZEL=", + "NIM-2FXS/4FXO=", + "NIM-4E/M-RF", + "ISR4431-SEC/K9", + "PVDM4-64", + "L-SP-LA-W-50-K9=", + "L-SP-LA-U-50-K9=", + "PWR-4430-POE-AC-RF", + "ISR4431-VSEC/K9-RF", + "ISR4431-DNA-RF", + "SSD-MSATA-200G=", + "NIM-PVDM-32-RF", + "MEM-4400-8G", + "L-SP-LA-W-500-K9=", + "E100S-MEM-UDIMM8G=", + "NIM-4G-LTE-ST-RF", + "ISR4431-AX/K9", + "SM-X-PVDM-2000", + "NIM-1CE1T1-PRI=", + "NIM-2FXS-RF", + "PVDM4-256-WS", + "NIM-PVDM-64-WS", + "NIM-4BRI-NT/TE", + "ISR4431-AXV/K9-WS", + "PWR-4430-DC-WS", + "NIM-2FXS/4FXO-WS", + "SM-X-72FXS-RF", + "NIM-VAB-A-WS", + "ISR4431-DNA", + "NIM-4G-LTE-VZ", + "C1AUAISR4400SK9=", + "NIM-4G-LTE-GA", + "NIM-SSD-X=", + "ISR4430U-MEM-SSD", + "ISR4431-SEC/K9-WS", + "SM-X-NIM-ADPTR-RF", + "NIM-4G-LTE-NA-WS", + "SM-X-8FXS/12FXO-WS", + "PWR-CC1-760WAC", + "NIM-2FXS=", + "NIM-SSD-WS", + "NIM-2MFT-T1/E1", + "SM-X-PVDM-3000", + "NIM-8MFT-T1/E1++=", + "NIM-VA-B", + "PWR-CC1-500WAC", + "SSD-MSATA-50G", + "PVDM4-32++=", + "PWR-4430-POE-AC=", + "SM-X-72FXS", + "NIM-2GE-CU-SFP=", + "PWR-CC1-MOD-POE", + "ISR4431-V/K9", + "C-NIM-1M-WS", + "PWR-CC1-400WDC", + "NIM-1MFT-T1/E1-WS", + "MEM-4400-8G-RF", + "C1F1UISR4400SK9=", + "SSD-MSATA-100G=", + "L-SL-44-SEC-K9=", + "PVDM4-128=", + "PVDM4-128-WS", + "NIM-4FXS-RF", + "NIM-2MFT-T1/E1++=", + "SM-X-PVDM-2000=", + "PVDM4-64=", + "NIM-4MFT-T1/E1=", + "NIM-4G-LTE-ST=", + "NIMASYNC-BRA", + "NIM-4G-LTE-VZ=", + "NIM-LTEA-LA=", + "ACS-4430FANASSY-WS", + "L-SP-LA-W-5K-K9=", + "SSD-C8530-480G", + "NIM-1CE1T1-PRI", + "NIM-PVDM-32=", + "NIM-4MFT-T1/E1++=", + "SM-X-PVDM-3000-RF", + "NIM-2FXS/4FXO", + "L-SP-LA-W-1K-K9=", + "SM-X-72FXS-WS", + "NIM-4G-LTE-GA-RF", + "PWR-CC1-400WDC-WS", + "SM-X-NIM-ADPTR++=", + "L-SP-LA-U-1K-K9=", + "NIM-2FXS-WS", + "PVDM4-256", + "NIM-2BRI-NT/TE=", + "PWR-4430-DC/2", + "ISR4431/K9", + "NIM-8MFT-T1/E1-RF", + "C1AUPISR4400SK9", + "MEM-FLSH-32G-RF", + "NIM-LTEA-LA-WS", + "NIM-VAB-A-RF", + "ACS-4430-WM=", + "NIM-4G-LTE-NA-RF", + "PWR-4430-AC", + "NIM-2MFT-T1/E1-RF", + "NIM-4E/M=", + "NIM-1MFT-T1/E1-RF", + "L-SP-LA-U-500-K9=", + "NIM-2FXO-RF", + "SM-X-8FXS/12FXO=", + "L-SP-LA-E-2.5K-K9=", + "L-SP-LA-E-1K-K9=", + "NIM-PVDM-256-WS", + "MEM-FLSH-4GU16G", + "ACS-4430-FANASSY", + "NIM-4MFT-T1/E1-RF", + "NIM-4E/M-WS", + "L-SP-LA-W-100-K9=", + "PVDM4-64++=", + "NIM-2GE-CU-SFP", + "NIM-PVDM-64", + "SM-X-NIM-ADPTR=", + "PWR-CC1-500WAC=", + "NIMASYNC-BRA=", + "NIM-PVDM-256=", + "NIM-2FXS/4FXO-RF", + "NIM-ES2-8-P", + "NIM-2FXO=", + "PVDM4-256-RF", + "C-NIM-2T", + "PWR-CC1-400WAC-WS", + "ISR4431-AX/K9-WS", + "SM-X-16FXS/2FXO-WS", + "SSD-MSATA-200G-RF", + "FL-44-HSEC-K9=", + "SM-X-PVDM-500-RF", + "NIM-PVDM-32", + "SSD-SATA-200G", + "L-SP-LA-P-25-K9=", + "NIM-VAB-A=", + "NIM-4BRI-NT/TE-RF", + "C-NIM-1M", + "SM-X-24FXS/4FXO", + "ISR4431/K9-RF", + "NIM-LTEA-EA", + "NIM-4E/M", + "L-SP-LA-U-5K-K9=", + "SM-X-16FXS/2FXO=", + "PVDM4-64-RF", + "L-SP-LA-E-500-K9=", + "NIM-2FXS", + "C-NIM-1M-RF", + "ACS-4430-RM-23=", + "NIM-PVDM-64=", + "ISR4431/K9++", + "C1-CISCO4431/K9", + "NIM-ES2-8-P-WS", + "L-SP-LA-E-5K-K9=", + "NIM-2BRI-NT/TE-RF", + "SM-X-PVDM-3000=", + "C1F2UISR4431SK9=", + "NIM-2FXO", + "ISR4431-V/K9-RF", + "NIM-8MFT-T1/E1=", + "NIM-LTEA-LA", + "SM-X-PVDM-500=", + "MEM-4400-2G=", + "NIM-PVDM-256-RF", + "SM-X-24FXS/4FXO-WS", + "PVDM4-256++=", + "SSD-SATA-400G=", + "NIM-4G-LTE-GA=", + "C1A2UISR4400SK9", + "SM-X-16FXS/2FXO", + "NIM-1MFT-T1/E1=", + "MEM-FLSH-4GU8G", + "C1F1AISR4431SK9=", + "SM-X-16FXS/2FXO-RF", + "SSD-SATA-200G=", + "NIM-SSD-RF", + "NIM-PVDM-256", + "SSD-SATA-800G", + "PWR-CC1-500WAC-WS", + "NIM-SSD=", + "SSD-MSATA-50G=", + "PWR-4430-DC", + "NIM-4MFT-T1/E1", + "NIM-VAB-A", + "NIM-PVDM-128=", + "PWR-4430-POE-AC", + "NIM-2MFT-T1/E1=", + "MEM-44-4G", + "C1F1AISR4431SK9", + "NIM-4FXO=", + "NIM-VAB-M", + "FL-44-PERF-K9", + "NIM-ES2-8-P=", + "FL-44-HSEC-K9", + "L-SP-LA-U-100-K9=", + "L-SP-LA-U-2.5K-K9=", + "NIM-4FXO-WS", + "SSD-M2SATA-480G=", + "ISR4431-SEC/K9-RF", + "C-NIM-2T=", + "SSD-MSATA-400G=", + "MEM-4400-2G-RF", + "NIM-4MFT-T1/E1-WS", + "SSD-SATA-800G=", + "PVDM4-32-WS", + "NIM-PVDM-32-WS", + "NIM-SSD-X", + "C1F2UISR4431SK9", + "NIM-LTEA-EA-WS", + "C1AUUISR4400SK9=", + "C1F1UISR4400SK9", + "ISR4431/K9-WS", + "SM-X-NIM-ADPTR", + "NIM-4BRI-NT/TE=", + "NIM-2MFT-T1/E1-WS", + "ISR4431-AXV/K9", + "MEM-FLSH-4U8G-WS", + "NIM-2BRI-NT/TE", + "NIM-4G-LTE-GA-WS", + "ISR4351-SEC/K9-WS", + "SSD-MSATA-100G", + "MEM-FLSH-4U8G", + "PVDM4-128", + "SM-X-8FXS/12FXO", + "NIM-2GE-CU-SFP-WS", + "NIM-VA-B-WS", + "NIM-VAB-M=", + "NIM-1MFT-T1/E1++=", + "NIM-PVDM-128-WS", + "MEM-FLSH-32G=", + "SSD-SATA-400G-RF", + "SSD-M2SATA-480G-RF", + "NIM-VA-B=", + "NIM-2FXO-WS", + "NIM-1CE1T1-PRI-WS", + "PWR-4430-AC-RF", + "L-18-HSEC-K9", + "NIM-8MFT-T1/E1-WS", + "SM-X-72FXS=", + "ACS-4430-FANASSY=" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "284389362", + "productName": "Cisco 4451-X Integrated Services Router", + "productId": [ + "SM-X-PVDM-1000", + "NIM-VA-B-RF", + "SSD-M2SATA-480G", + "C-SM-40G8M2X", + "SM-F-BLANK", + "NIM-4BRI-NT/TE-WS", + "SM-X-PVDM-1000=", + "PVDM4-128++=", + "C1-CISCO4451/K9", + "SISR4400NPEK9-175", + "NIM-2BRI-NT/TE-WS", + "PVDM4-32-RF", + "ISR4451XVSEC/K9-WS", + "L-SP-LA-E-100-K9=", + "SM-X-NIM-ADPTR-WS", + "SSD-SATA-400G", + "NIM-VAB-M-WS", + "ISR4451-X/K9-RF", + "NIM-4FXS=", + "NIM-2B-S/T=", + "PVDM4-64-WS", + "SM-X-PVDM-500", + "E100S-MEM-UDIMM8G", + "ISR4451-X-AXV/K9", + "NIM-LTEA-EA=", + "NIM-4FXS", + "L-SP-LA-W-25-K9=", + "PVDM4-32", + "L-SP-LA-U-25-K9=", + "L-SP-LA-E-25-K9=", + "E100SMEMUDIMM8G-RF", + "MEM-FLSH-4G=", + "MEM-FLSH-8U16G", + "NIM-4FXS-WS", + "NIM-4FXO", + "SM-F-BLANK=", + "SSD-MSATA-200G", + "C1AUUISR4400SK9", + "ISR4451-X-V/K9-WS", + "NIM-2GE-CU-SFP-RF", + "PWR-4430-DC-RF", + "SISR4400UK9-175", + "SISR44V2UK9175", + "SM-X-24FXS/4FXO=", + "NIM-PVDM-64-RF", + "ISR4451-X/K9++", + "PVDM4-128-RF", + "SM-X-PVDM-1000-RF", + "C1F1AISR4451SK9", + "NIM-X-SSD", + "L-SP-LA-E-50-K9=", + "NIM-8MFT-T1/E1", + "NIM-1CE1T1-PRI-RF", + "PVDM4-256=", + "SSD-SATA-200G-RF", + "ISR4451-X-VSEC/K9", + "NIM-4FXO-RF", + "NIM-1MFT-T1/E1", + "L-SP-LA-W-2.5K-K9=", + "MEM-FLSH-4U16G-RF", + "PVDM4-32=", + "NIM-PVDM-128", + "MEM-FLSH-4U8G-RF", + "MEM-4400-DP-2GU4G", + "NIM-LTEA-EA-RF", + "MEM-FLSH-4U16G", + "C1A2UISR4400SK9=", + "ACS-4430-RM-19=", + "ISR4451-X-SEC/K9", + "SSD-MSATA-400G", + "NIM-SSD", + "FL-44-PERF-K9=", + "NIM-ES2-8-P-RF", + "NIM-VAB-M-RF", + "ISR4451-X/K9-WS", + "NIM-X-SSD=", + "ACS-4430-BEZEL=", + "NIM-2FXS/4FXO=", + "NIM-4E/M-RF", + "PVDM4-64", + "L-SP-LA-W-50-K9=", + "L-SP-LA-U-50-K9=", + "LL-EAR-4451=", + "SSD-MSATA-200G=", + "NIM-PVDM-32-RF", + "L-SP-LA-W-500-K9=", + "ISR4451-X-AX/K9", + "E100S-MEM-UDIMM8G=", + "NIM-4G-LTE-ST-RF", + "SM-X-64A=", + "SM-X-PVDM-2000", + "NIM-1CE1T1-PRI=", + "NIM-2FXS-RF", + "PVDM4-256-WS", + "C1F1AISR4451SK9=", + "NIM-PVDM-64-WS", + "ISR4451-X-AX/K9-RF", + "NIM-4BRI-NT/TE", + "PWR-4430-DC-WS", + "NIM-2FXS/4FXO-WS", + "SM-X-72FXS-RF", + "NIM-VAB-A-WS", + "NIM-4G-LTE-VZ", + "C1AUAISR4400SK9=", + "NIM-4G-LTE-GA", + "NIM-SSD-X=", + "SM-X-NIM-ADPTR-RF", + "MEM-4300-4GU16G", + "NIM-4G-LTE-NA-WS", + "SM-X-8FXS/12FXO-WS", + "NIM-2FXS=", + "NIM-SSD-WS", + "NIM-2MFT-T1/E1", + "SM-X-PVDM-3000", + "NIM-8MFT-T1/E1++=", + "NIM-VA-B", + "ISR4451-X-SECK9-WS", + "SSD-MSATA-50G", + "PVDM4-32++=", + "SM-X-72FXS", + "NIM-2GE-CU-SFP=", + "NIM-1MFT-T1/E1-WS", + "C1F1UISR4400SK9=", + "SSD-MSATA-100G=", + "L-SL-44-SEC-K9=", + "PVDM4-128=", + "PVDM4-128-WS", + "NIM-4FXS-RF", + "NIM-2MFT-T1/E1++=", + "ACS-4450-RM-19=", + "ISR4451-X-V/K9", + "SM-X-PVDM-2000=", + "PVDM4-64=", + "NIM-4MFT-T1/E1=", + "NIM-4G-LTE-ST=", + "NIMASYNC-BRA", + "ISR4451-UCSE-D/K9", + "NIM-4G-LTE-VZ=", + "NIM-2B-S/T", + "NIM-LTEA-LA=", + "L-SP-LA-W-5K-K9=", + "SSD-C8530-480G", + "NIM-1CE1T1-PRI", + "NIM-PVDM-32=", + "NIM-4MFT-T1/E1++=", + "SM-X-PVDM-3000-RF", + "ISR4451-UCSE-S/K9", + "NIM-2FXS/4FXO", + "L-SP-LA-W-1K-K9=", + "SM-X-72FXS-WS", + "NIM-4G-LTE-GA-RF", + "SM-X-NIM-ADPTR++=", + "L-SP-LA-U-1K-K9=", + "ACS-4450-FANASSY=", + "NIM-2FXS-WS", + "PVDM4-256", + "NIM-2BRI-NT/TE=", + "PWR-4430-DC/2", + "NIM-8MFT-T1/E1-RF", + "C1AUPISR4400SK9", + "NIM-LTEA-LA-WS", + "NIM-VAB-A-RF", + "ISR4451-DNA-RF", + "NIM-4G-LTE-NA-RF", + "C1F2UISR4451SK9", + "ISR4451XWAAS-200G", + "NIM-2MFT-T1/E1-RF", + "NIM-4E/M=", + "C1F2UISR4451SK9=", + "NIM-1MFT-T1/E1-RF", + "L-SP-LA-U-500-K9=", + "NIM-2FXO-RF", + "L-SP-LA-E-2.5K-K9=", + "L-SP-LA-E-1K-K9=", + "NIM-PVDM-256-WS", + "ISR4451-X-AXVK9-WS", + "MEM-FLSH-4GU16G", + "NIM-4MFT-T1/E1-RF", + "NIM-4E/M-WS", + "L-SP-LA-W-100-K9=", + "C-SM-16G4M2X", + "PVDM4-64++=", + "NIM-2GE-CU-SFP", + "NIM-PVDM-64", + "SM-X-NIM-ADPTR=", + "NIMASYNC-BRA=", + "NIM-PVDM-256=", + "NIM-2FXS/4FXO-RF", + "NIM-ES2-8-P", + "NIM-2FXO=", + "PVDM4-256-RF", + "SI-ISR4451-IWAN/K9", + "SM-X-16FXS/2FXO-WS", + "SSD-MSATA-200G-RF", + "FL-44-HSEC-K9=", + "SM-X-PVDM-500-RF", + "NIM-PVDM-32", + "SSD-SATA-200G", + "ACS-4450-FANASSY", + "SM-X-64A-RF", + "L-SP-LA-P-25-K9=", + "NIM-VAB-A=", + "NIM-4B-S/T=", + "NIM-4BRI-NT/TE-RF", + "SM-X-24FXS/4FXO", + "SMASYNC-BRA", + "ISR4451-XSEC/K9-RF", + "NIM-LTEA-EA", + "NIM-4E/M", + "L-SP-LA-U-5K-K9=", + "PVDM4-64-RF", + "L-SP-LA-E-500-K9=", + "NIM-2FXS", + "ISR4451XVSEC/K9-RF", + "ACS-4430-RM-23=", + "SISR44V2NPEK9175", + "ISR4451-PM20", + "NIM-PVDM-64=", + "ACS-4450FANASSY-RF", + "ACS-4450-BEZEL=", + "NIM-ES2-8-P-WS", + "L-SP-LA-E-5K-K9=", + "NIM-2BRI-NT/TE-RF", + "SM-X-PVDM-3000=", + "NIM-2FXO", + "ISR4451-DNA", + "SMASYNC-BRA=", + "NIM-8MFT-T1/E1=", + "NIM-LTEA-LA", + "SM-X-PVDM-500=", + "MEM-4400-2G=", + "NIM-PVDM-256-RF", + "C8300-2N2S-6T-RF", + "SM-X-24FXS/4FXO-WS", + "PVDM4-256++=", + "SSD-SATA-400G=", + "NIM-4G-LTE-GA=", + "C1A2UISR4400SK9", + "SM-X-16FXS/2FXO", + "NIM-1MFT-T1/E1=", + "MEM-FLSH-4GU8G", + "SSD-SATA-200G=", + "NIM-SSD-RF", + "NIM-PVDM-256", + "C1F1PISR4400SK9", + "ISR4451-X-V/K9-RF", + "SSD-SATA-800G", + "NIM-SSD=", + "SSD-MSATA-50G=", + "NIM-4B-S/T", + "MEM-4300-4GU16G=", + "NIM-4MFT-T1/E1", + "NIM-VAB-A", + "NIM-PVDM-128=", + "NIM-2MFT-T1/E1=", + "MEM-44-4G", + "NIM-4FXO=", + "NIM-VAB-M", + "FL-44-PERF-K9", + "NIM-ES2-8-P=", + "FL-44-HSEC-K9", + "L-SP-LA-U-100-K9=", + "L-SP-LA-U-2.5K-K9=", + "NIM-4FXO-WS", + "SSD-M2SATA-480G=", + "SSD-MSATA-400G=", + "MEM-4400-2G-RF", + "NIM-4MFT-T1/E1-WS", + "SSD-SATA-800G=", + "PVDM4-32-WS", + "NIM-PVDM-32-WS", + "NIM-SSD-X", + "NIM-LTEA-EA-WS", + "C1AUUISR4400SK9=", + "ACS-4450-RM-23=", + "C1F1UISR4400SK9", + "SM-X-NIM-ADPTR", + "NIM-4BRI-NT/TE=", + "ISR4451-X-AXVK9-RF", + "NIM-2MFT-T1/E1-WS", + "MEM-FLSH-4U8G-WS", + "NIM-2BRI-NT/TE", + "NIM-4G-LTE-GA-WS", + "SM-X-64A", + "SSD-MSATA-100G", + "MEM-FLSH-4U8G", + "PVDM4-128", + "SM-X-8FXS/12FXO", + "NIM-2GE-CU-SFP-WS", + "NIM-VA-B-WS", + "NIM-VAB-M=", + "NIM-1MFT-T1/E1++=", + "ISR4451-X/K9", + "NIM-PVDM-128-WS", + "SSD-SATA-400G-RF", + "SSD-M2SATA-480G-RF", + "NIM-VA-B=", + "NIM-2FXO-WS", + "NIM-1CE1T1-PRI-WS", + "ISR4451X-AX-AKC/K9", + "L-18-HSEC-K9", + "NIM-8MFT-T1/E1-WS", + "SM-X-72FXS=", + "ISR4451-X-AX/K9-WS" + ], + "sites": [], + "show": false, + "userDefined": false + } + ], + "ccorecommended": true, + "ccolatest": true, + "importSourceType": "CCO", + "ccoreverseSync": true + }, + { + "imageUuid": "9ecf0571-ba35-420a-a72c-9ee74e4b063d", + "name": "cat9k_iosxe.17.12.04.SPA.bin", + "family": "CAT9K", + "version": "17.12.04.0.4826", + "displayVersion": "17.12.04", + "md5Checksum": "1e3ab8c2357b33784373b626c190b907", + "shaCheckSum": "9cc58a50b61cd272cd48d3f801db85b064bc7830eb92e8279b0785ed3e4af8aa2bd598e04135b28236bf1a8bd8f88642f63ec31d20150f94a81a24be7daa7eb5", + "createdTime": "2024-11-07 09:13:36.811", + "imageType": "SYSTEM_SW", + "fileSize": "1306917133 bytes", + "imageName": "cat9k_iosxe.17.12.04.SPA.bin", + "applicationType": "", + "feature": "", + "fileServiceId": "803899de-4cdb-4bbb-9953-b5ecaa2b1f93", + "isTaggedGolden": true, + "imageSource": "CCO", + "extendedAttributes": { + "Description": "Cisco IOS Software, IOS-XE Software", + "DEFAULT_BOOTROM": "UNKNOWN", + "md5_checksum": "1e3ab8c2357b33784373b626c190b907", + "COMPRESSION_CODE": "-1", + "DEFAULT_MINFLASHSIZE": "UNKNOWN", + "sha512_checksum": "9cc58a50b61cd272cd48d3f801db85b064bc7830eb92e8279b0785ed3e4af8aa2bd598e04135b28236bf1a8bd8f88642f63ec31d20150f94a81a24be7daa7eb5", + "deviceMNEId": "344367", + "image_name": "cat9k_iosxe.17.12.04.SPA.bin", + "BOOTROM": "UNKNOWN", + "MINFLASHSIZE": "UNKNOWN", + "image_guid": "63248E337D0B49C76253905DCD87EEDFE16B15AD", + "MEDIA": "5", + "mdf_id": "286315874", + "min_flash": "16384", + "release_version": "Dublin-17.12.4", + "image_description": "CAT9300/9400/9500/9600 Universal", + "metadata_trans_id": "106413557428648281", + "image_size": "1306917133", + "software_type_id": "282046477", + "field_notice_url": "https://www.cisco.com/c/en/us/support/switches/catalyst-9300-series-switches/products-field-notices-list.html", + "min_dram": "8192", + "field_notices": "Field Notices", + "GAIA_FEATURE": "UNKNOWN", + "release_doc_name": "Release Notes for CAT9300", + "release_doc_url": "https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst9300/software/release/17-12/release_notes/ol-17-12-9300.html", + "encryption_software_indicator": "Y", + "release_fcs_date": "24/Jul/2024", + "FULL_VERSION": "17.12.04.0.4826", + "DEFAULT_RAM": "UNKNOWN", + "udi": "PID:%20C9300-48UXM%20VID:%20V08,%20SN:%20FJC271924D9", + "RAM": "UNKNOWN" + }, + "vendor": "CISCO", + "imageIntegrityStatus": "VERIFIED", + "applicableDevicesForImage": [ + { + "mdfId": "286329038", + "productName": "Cisco Catalyst 9400X Supervisor Engine-2", + "productId": [ + "S9400UK9-1714", + "C9400X-SUP-2-WS", + "S9400NPE-1714", + "C9400X-SUP-2=", + "S9400NPE-1715", + "C9400X-SUP-2" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286319589", + "productName": "Cisco Catalyst C9500-48Y4C Switch", + "productId": [ + "C9500-48Y4C-WS", + "C9500-48Y4C", + "C9500-48Y4C-A", + "S9500UK9-1713", + "C9500X-60L4D-CX", + "C9500-48Y4C=", + "C9500X-28C8D-CX", + "S9500UK9-1714", + "L-C9500-48Y4C-EA-3", + "C9500H-ACCKIT-19I=", + "C9500-48Y4C-CX" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286322137", + "productName": "Cisco Catalyst 9606R Switch", + "productId": [ + "C9606R=", + "C9600X-UPG-BN", + "C9606=", + "C9606-RACK-KIT=", + "C9606R-RF", + "C9606-FAN=", + "BN-A1-SBA-C-K9", + "C9606R-1A", + "BN-A1-SBA-I-K9", + "C9606R-48S-BN-A", + "C9600-SSD-NONE", + "C9606R-48Y24C-BN-A", + "C9606R-48Y24C-BNCX", + "QSFP-40G-CSR-S-RF", + "C9606-FILTER=", + "C9606R-48Y24C-EDU", + "BN-A1-SBA-K-K9", + "C9606R-EDU", + "C9606", + "C9600-SUP-NONE", + "C9606R-P", + "HWOA-TETR-PLT", + "C9606R", + "C9600X-BN-A", + "C9606R-10A" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286323141", + "productName": "Cisco Catalyst 9600 Series Supervisor Engine 1", + "productId": [ + "C9600X-SUP-2-RF", + "C9600-LC40YL4CD-RF", + "C9600-SUP-1-WS", + "C9600X-SUP-2", + "C9610-SUP-3XL", + "S9600UK9-1715", + "C9600X-SUP-2=", + "C9610-SUP-3", + "C9600-SUP-1/2", + "C9600-LC-40YL4CD=", + "C9600-SUP-1" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286322029", + "productName": "Cisco Catalyst 9300L Switch Stack", + "productId": [ + "C9300L-48UXG-4X", + "C9300L-48T-4G", + "C9300L-24T-4G", + "C9300L-48UXG-2Q", + "C9300L-24P-4X", + "C9300L-48P-4X", + "C9300L-STACKBLANK=", + "C9300L-48PF-4G", + "C9300LM-48T-4Y", + "S9300LNPE-174", + "C9300L-48T-4X", + "C9300L-24T-4X", + "S9300LUK9-174", + "C9300L-48P-4G", + "C9300L-24P-4G", + "C9300L-24UXG-2Q", + "C9300L-48PF-4X", + "C9300L-24UXG-4X" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286316710", + "productName": "Cisco Catalyst 9400 Supervisor Engine-1XL", + "productId": [ + "C9400-DNX-A-1M", + "C9400-SUP-1XL-WS", + "C9400-SUP-1XL-RF", + "C9400-SUP-1XL/2", + "C9400-SUP-1XL0-RF", + "C9400-SUP-1XL" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286315863", + "productName": "Cisco Catalyst 9500 Switch", + "productId": [ + "C9500-DNA-L-P", + "UCS-CPU-I6542YC=", + "C9500X-ACCKIT-19I", + "C9500X-FAN-1U-R=", + "C9500-ACCKIT-23I", + "C9K-PWR-1500WAC-R", + "NAL-C9500-48X-E", + "NAL-C9500-48X-A", + "C9500-ACCKIT-19I", + "C9K-PWR-1600WDCR/2", + "PWR-C4-950WAC-R", + "C9K-PWR1600WACR-RF", + "C9500X-ACCKIT-19I=", + "C9K-PWR-C5-BLANK", + "C9500X-FAN-1U-R", + "HX-9500-8E", + "C9K-PWR-1600WDC-R=", + "C9500X-FAN-1U-F", + "C9500X-4PTH-KIT", + "C9K-PWR-1500WDC-F", + "PWR-C4-BLANK", + "C9500-4PTH-KIT-RF", + "C9500X-FAN-1U-F=", + "C9K-PWR-1600WAC-R=", + "C9K-F1-SSD-240G=", + "C9K-PWR-1500WDC-R", + "C9K-PWR-1600WDC-R", + "C9500-ACCKITH-19I=", + "C9K-OPT-TOOL-NONE", + "C9500-ACCKIT-19I=", + "C9K-F1-SSD-240G", + "C9K-PWR-C4-BLANK", + "C9500-4PTH-KIT=", + "C9500-DNA-P=", + "UCS-CPU-I8558UC=", + "C9500X-FAN-1U-R-RF", + "C9K-F1-SSD-480G=", + "C9K-F1-SSD-240G-WS", + "C9K-PWR1600WDCR-WS", + "C9500X-FAN-1U-F-RF", + "C9K-PWR-1600WACR/2", + "UCS-CPU-I4510TC=", + "C9500-16X-EDU-RF", + "HX-9500-8E=", + "C9500-DNA-L-1E", + "C9K-PWR-C5-BLANK=", + "C9K-PWR-1500WAC-F", + "C9K-F1-SSD-960G=", + "C9K-PWR-1500WDC-F=", + "C9500X-60L4D", + "C9K-F1-SSD-240G-RF", + "C9500-ACCKIT-23I=", + "C9K-F3-SSD-240GB=", + "C9K-F1-SSD-960G", + "C9K-F1-SSD-480G-WS", + "C9K-F3-SSD-240GB", + "C9500X-NW-1E", + "C9500ACCKITH19I-RF", + "C9500X-NW-1A", + "C9K-F3-SSD240GB-RF", + "C9K-F3-SSD-BLANK=", + "C9K-PWR-1500WDC-R=", + "C9350-PWR-BLANK", + "C9500-ACCKITH-23I", + "C9K-PWR-1500WDCR/2", + "C9500X-4PTH-KIT=", + "C9500X-ACCKIT-23I=", + "C9K-PWR-1500WAC-R=", + "C9K-PWR-1500WDCF/2", + "C9500-SPS-NONE", + "C9K-F3-SSD960GB-RF", + "C9K-PWR-930WDC-R/2", + "C9K-F1-SSD-480G", + "PWR-C4-BLANK=", + "C9K-F3-SSD240GB-WS", + "C9500-4PTH-KIT", + "C9K-F3-SSD-480GB=", + "C9K-F3-SSD-960GB", + "C9K-PWR-1500WACF/2", + "C9500-ACCKITH-19I", + "C9K-PWR-1500WAC-F=", + "C9500-4PT-KIT", + "C9K-PWR-C4-BLANK=", + "C9350-PWR-BLANK=", + "UCS-CPU-I8592VC=", + "C9K-F3-SSD-480GB", + "PWR-C4-950WAC-R-RF", + "C9500X-ACCKIT-23I", + "C9K-PWR-1600WAC-R", + "C9K-F3-SSD-960GB=", + "C9500-DNA-P", + "C9500-ACCKITH-23I=", + "C9K-F3-SSD-BLANK", + "C9500-DNA-L-P=", + "C9K-PWR-1500WACR/2" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286319595", + "productName": "Cisco Catalyst C9500-24Y4C Switch", + "productId": [ + "C9500H-4PT-KIT=", + "L-C9500-24Y4C-EA-3", + "C9500-DNX-E-24Y-5Y", + "C9500-24Y4C-EDU-RF", + "L-C9500-24Y4C-EA-7", + "C9500-24Y4C=", + "C9500-60C12D-A", + "C9500H-ACCKIT-19I=", + "C9500-24Y4C-CX", + "C9500-24Y4C-A", + "C9500-24Y4C" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286328203", + "productName": "Cisco Catalyst 9600 Series Supervisor Engine 2", + "productId": [ + "C9600-DNX-A-XY", + "C9600-DNX-E-1Y", + "SC9600NPE-1714", + "SC9600NPE-1712", + "C9600-DNX-E-1M", + "S9600UK9-1715", + "SC9600NPE-1713", + "S9600UK9-1712", + "S9600UK9-1711", + "S9600UK9-1714", + "S9600UK9-1713" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286329042", + "productName": "Cisco Catalyst 9400X Supervisor Engine-2XL", + "productId": [ + "C9400X-SUP-2XL=", + "C9400X-SUP-2XL-RF", + "C9400X-SUP-2XL", + "C9400X-SUP-2XL-WS" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286328960", + "productName": "Cisco Catalyst C9500X-28C8D Switch", + "productId": [ + "C9500X-DNA-28C-1A=", + "C9500X-28C8D-A-BUN", + "C9500X-DNA-28C-1A", + "C9500X-DNA-28C-10A", + "C9500X-DNA-28C8D-A" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286316172", + "productName": "Cisco Catalyst 9400 Supervisor Engine-1", + "productId": [ + "C9404-FAN=", + "C9400-SUP-1-WS", + "S9400UK9-1714", + "C9400-SSD-960GB=", + "C9400-DNX-A-1R", + "C9400-SSD-480GB-WS", + "C9407R-RF", + "C9400-SSD-960GB", + "C9410R-UL", + "C9400-SSD-240GB=", + "C9400-SUP-1-RF", + "C9400-SSD-960GB-WS", + "C9400-SUP-1", + "C9404-FAN", + "C9400-SSD-240GB-WS", + "C9400-SSD-480GB-RF", + "C9400-SSD-980GB=", + "C9400-SUP-1/2", + "C9400-SSD-480GB", + "C9400-SSD-240GB", + "C9400X-SUP-2XL++=", + "C9400-SUP-1-B", + "C9407R-UL", + "S9400NPE-1714", + "C9400-SUP-1=", + "C9400-SSD-480GB=", + "C9400X-SUP-2++=", + "C9410R-RF" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286319599", + "productName": "Cisco Catalyst C9500-32C Switch", + "productId": [ + "C9500H-4PT-KIT=", + "E2N-C95006-G-A", + "C9500-32C-P", + "C9500H-ACCKIT-19I=", + "C9500-32C", + "C9500-32C=" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286319592", + "productName": "Cisco Catalyst C9500-32QC Switch", + "productId": [ + "C9500H-4PT-KIT=", + "C9500-32QC-P", + "C9500-32QC", + "C9500-32QC=", + "C9500H-ACCKIT-19I=", + "C9500-32QC-EDU-RF" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286320497", + "productName": "Cisco Catalyst C9500 SVL Switch", + "productId": [ + "C9300X-48Y-10E", + "C9500-24Y4C-E-RF", + "C9300X-24Y-10E", + "C9300X-12Y-10E", + "C9300-24Y-10E", + "C9300-12Y-10E", + "C9300-48Y-10E", + "C9300X-12Q-10E", + "C9300-12Q-10E", + "C9500-24Y4C-10E" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286320394", + "productName": "Cisco Catalyst 9400 Supervisor Engine-1XL-Y", + "productId": [ + "C9400-SUP-1XL-Y-WS", + "C9400-SUP-1XL-Y", + "C9400-SUP-1XL-Y/2", + "C9400-DNX-A-10Y", + "C9400-SUP-1XL-Y-RF", + "C9400-SUP-1XL-Y=" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286330391", + "productName": "Cisco Catalyst C9500X-60L4D Switch", + "productId": [ + "C9500-DNX-E-60L-1R", + "C9500X-DNA-28C-1E", + "C9500X-60L4D-A", + "E2N-C9500X2-G-A", + "C9500X-60L4D-A-RF", + "C9500X-60L4D-A=", + "C9500X-60L4D-E", + "E2N-C9500X2-B-A", + "C9500X-60L4D-10A", + "C9500X-DNA-60L4D-A", + "C9500X-60L4D-1E", + "C9500X-60L4D-1A", + "E3N-C9500X2-A", + "C9500-DNX-A-60L-1R", + "E3N-C9500X2-E", + "C9500X-DNA-28C-1E=", + "C9500X-60L4D-EDU" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286315874", + "productName": "Cisco Catalyst 9300 Switch", + "productId": [ + "C9300-NM-8X=", + "C9300-NM-4G", + "C9300-NM-4M-WS", + "C9200-24PXG-EDU-RF", + "SC9300UK9-174", + "C9300-NM-4M", + "C9300-NM-2X=", + "C9300-NM-4X=", + "C9300-48UN-EDU", + "S9300NPE-174", + "C9300X-48TX", + "C9300-NM-8X", + "C9300-NM-4G=", + "C9300-48-E-A", + "C9300-NM-BLANK=", + "C9200-24PXG-EDU", + "C9300-NM-4G++=", + "C9300-NM-BLANK", + "C9300-NM-8X-WS", + "C9300-NM-8X++=", + "E2N-C93002-G-P", + "C9200-48PXG-EDU-WS", + "C9350-NM-BLANK=", + "C9300-NM-2Y", + "C9300-NM-2X", + "C9300-NM-2Q-WS", + "C9300-NM-2Y-WS", + "C9300-48HXG", + "C9300-24UB", + "C9300-24-E-A", + "C9300-NM-2Q", + "C9300-48UN-EDU-WS", + "C9200-48PXG-EDU", + "C9300-48S", + "C9300-24UXB", + "C9300-NM-4G-WS", + "C9300-DNA-A-48", + "C9300-48H", + "C9300-24H", + "C9300-NM-2Q=", + "C9300-SSD-PROMO", + "C9300-NM-2Y=", + "C9300-48UXM", + "C9300-NM-8X-UL", + "C9300-48T", + "C9300-24S", + "C9300-24T", + "C9300-24U", + "C9300-NM-4X", + "C9300X-12Y", + "C9300-48UB", + "C9350-NM-BLANK", + "C9300X-24Y", + "C9300-RFID=", + "SSD-PROMO" + ], + "sites": [], + "show": false, + "userDefined": false + } + ], + "ccorecommended": true, + "ccolatest": true, + "importSourceType": "CCO", + "ccoreverseSync": true + }, + { + "imageUuid": "143c6ff5-c06a-4ff2-96bf-3369779a6dad", + "name": "C9800-40-universalk9_wlc.17.12.04.SPA.bin", + "family": "C9800", + "version": "17.12.04.0.4826", + "displayVersion": "17.12.04", + "md5Checksum": "2ce5bfde2fa730115a6e2f99f30a2c7f", + "shaCheckSum": "f7c2f9154dc01812422cc4708efb919417f84f83fe6d13c39755981eb8cf32ddbdc23c1d75e3160c24f403a0f60a2e7ba69b6d098d10cd75f7abbd3c50ee8e28", + "createdTime": "2024-11-05 01:45:47.177", + "imageType": "SYSTEM_SW", + "fileSize": "1410851678 bytes", + "imageName": "C9800-40-universalk9_wlc.17.12.04.SPA.bin", + "applicationType": "", + "feature": "", + "fileServiceId": "32469997-6a9c-4769-80ac-a0908054a284", + "isTaggedGolden": true, + "imageSource": "CCO", + "extendedAttributes": { + "Description": "Cisco IOS Software, IOS-XE Software", + "DEFAULT_BOOTROM": "0", + "md5_checksum": "2ce5bfde2fa730115a6e2f99f30a2c7f", + "DEFAULT_MINFLASHSIZE": "0", + "sha512_checksum": "f7c2f9154dc01812422cc4708efb919417f84f83fe6d13c39755981eb8cf32ddbdc23c1d75e3160c24f403a0f60a2e7ba69b6d098d10cd75f7abbd3c50ee8e28", + "deviceMNEId": "344386", + "image_name": "C9800-40-universalk9_wlc.17.12.04.SPA.bin", + "image_guid": "F8504D4CE629F8F1E7E29D95DEC2972CBFC1958D", + "mdf_id": "286316412", + "min_flash": "32768", + "release_version": "Dublin-17.12.4", + "image_description": "Cisco Catalyst 9800-40 Wireless Controller", + "metadata_trans_id": "725926476528583006", + "image_size": "1410851678", + "software_type_id": "282046477", + "field_notice_url": "https://www.cisco.com/c/en/us/support/wireless/catalyst-9800-series-wireless-controllers/products-field-notices-list.html", + "min_dram": "32768", + "field_notices": "Field Notices", + "release_doc_url": "https://www.cisco.com/c/en/us/td/docs/wireless/controller/9800/17-12/release-notes/rn-17-12-9800.html", + "release_doc_name": "Release Notes for 9800-40", + "encryption_software_indicator": "Y", + "release_fcs_date": "24/Jul/2024", + "FULL_VERSION": "17.12.04.0.4826", + "DEFAULT_RAM": "0", + "udi": "PID:%20C9800-40-K9%20VID:%20V08,%20SN:%20FOX2639PAYD" + }, + "vendor": "CISCO", + "imageIntegrityStatus": "VERIFIED", + "applicableDevicesForImage": [ + { + "mdfId": "286316412", + "productName": "Cisco Catalyst 9800-40 Wireless Controller", + "productId": [ + "EDU-C9800-40-K9-RF", + "C9800-40-K9-WS", + "C9800-AC750WRED-WS", + "EDU-C9800-40-K9", + "C9800-40-SLRCA-K9", + "C9800-AC-110W", + "C9800-L-F-K9-RF", + "C9800-40-CA-K9", + "C9800-40-K9", + "SC980040K9-1714", + "SC980040K9-1712", + "SC980040K9-1610", + "C9800-AC-750W-R", + "LIC-C9800-DTLS-K9", + "C9800-40-2K-SLR-K9", + "AIR-CT9540-CA-K9", + "CAB-C13-C14-JMPR", + "C9800-40-SLR-K9", + "C9800-402KSLRK9-WS", + "C9800-AC-750W-R-RF", + "EDU-C9800-40-K9-WS", + "C9800-402KSLRK9-RF", + "AIR-CT9540-K9++", + "C9800-AC-110W=", + "AIR-DNA-EDU", + "LIC-C9800-DTLS-K9=", + "C9800-AC-110W-WS", + "C9800-AC-750W-RED", + "C9800-40-K9-RF" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286321396", + "productName": "Cisco Catalyst 9800-80 Wireless Controller", + "productId": [ + "SC980080K9-1610", + "C9800-80-K9-WS", + "EDU-C9800-80-K9-RF", + "C9800-1X100GE-WS", + "SC980080K9-1712", + "C9800-2X40GE", + "C9800-10X10GE=", + "EDU-C9800-80-S5-K9", + "C9800-AC-1100W", + "C9800-80-SLRCA-K9", + "C9800-1X40GE-WS", + "C9800-80-CA-K9", + "C9800-80-CAP-K9", + "C9800-10X10GE", + "C9800-80-K9", + "LIC-C9800-DTLS-K9", + "C9800-1X40GE", + "C9800-18X1GE=", + "EDU-C9800-80-K9-WS", + "C9800-1X100GE", + "EDU-C9800-80-K9", + "C9800-1X40GE=", + "C9800-18X1GE", + "C9800-2X40GE=", + "LIC-C9800-DTLS-K9=", + "C9800-DC-950W", + "SC980080K9-1714", + "C9800-AC-1100W=", + "C9800-1X100GE=", + "C9800-80-K9-RF", + "C9800-80-SLR-K9" + ], + "sites": [], + "show": false, + "userDefined": false + } + ], + "ccolatest": true, + "importSourceType": "CCO", + "ccoreverseSync": true + }, + { + "imageUuid": "79d1cfaa-0db7-4958-84dc-a45630f47611", + "name": "C9800-80-universalk9_wlc.17.12.04.SPA.bin", + "family": "C9800", + "version": "17.12.04.0.4826", + "displayVersion": "17.12.04", + "md5Checksum": "2ce5bfde2fa730115a6e2f99f30a2c7f", + "shaCheckSum": "f7c2f9154dc01812422cc4708efb919417f84f83fe6d13c39755981eb8cf32ddbdc23c1d75e3160c24f403a0f60a2e7ba69b6d098d10cd75f7abbd3c50ee8e28", + "createdTime": "2024-11-05 01:45:47.177", + "imageType": "SYSTEM_SW", + "fileSize": "1410851678 bytes", + "imageName": "C9800-80-universalk9_wlc.17.12.04.SPA.bin", + "applicationType": "", + "feature": "", + "fileServiceId": "6c9184b3-b497-4cc6-803b-5d015a367b5b", + "isTaggedGolden": true, + "imageSource": "CCO", + "extendedAttributes": { + "Description": "Cisco IOS Software, IOS-XE Software", + "DEFAULT_BOOTROM": "0", + "md5_checksum": "2ce5bfde2fa730115a6e2f99f30a2c7f", + "DEFAULT_MINFLASHSIZE": "0", + "sha512_checksum": "f7c2f9154dc01812422cc4708efb919417f84f83fe6d13c39755981eb8cf32ddbdc23c1d75e3160c24f403a0f60a2e7ba69b6d098d10cd75f7abbd3c50ee8e28", + "deviceMNEId": "344394", + "image_name": "C9800-80-universalk9_wlc.17.12.04.SPA.bin", + "image_guid": "8EBFF3022BDBB0427EB3A1204CF6DD6D9ADAFBA4", + "mdf_id": "286321396", + "min_flash": "32768", + "release_version": "Dublin-17.12.4", + "image_description": "Cisco Catalyst 9800-80 Wireless Controller", + "metadata_trans_id": "987613439791103138", + "image_size": "1410851678", + "software_type_id": "282046477", + "field_notice_url": "https://www.cisco.com/c/en/us/support/wireless/catalyst-9800-series-wireless-controllers/products-field-notices-list.html", + "min_dram": "65536", + "field_notices": "Field Notices", + "release_doc_url": "https://www.cisco.com/c/en/us/td/docs/wireless/controller/9800/17-12/release-notes/rn-17-12-9800.html", + "release_doc_name": "Release Notes for 9800-80", + "encryption_software_indicator": "Y", + "release_fcs_date": "24/Jul/2024", + "FULL_VERSION": "17.12.04.0.4826", + "DEFAULT_RAM": "0", + "udi": "PID:%20C9800-80-K9%20VID:%20V02,%20SN:%20FXS2416Q1A4" + }, + "vendor": "CISCO", + "imageIntegrityStatus": "VERIFIED", + "applicableDevicesForImage": [ + { + "mdfId": "286316412", + "productName": "Cisco Catalyst 9800-40 Wireless Controller", + "productId": [ + "C9800-40-K9-WS", + "EDU-C9800-40-K9-RF", + "C9800-AC750WRED-WS", + "EDU-C9800-40-K9", + "C9800-40-SLRCA-K9", + "C9800-AC-110W", + "C9800-L-F-K9-RF", + "C9800-40-CA-K9", + "C9800-40-K9", + "SC980040K9-1714", + "SC980040K9-1712", + "SC980040K9-1610", + "C9800-AC-750W-R", + "LIC-C9800-DTLS-K9", + "C9800-40-2K-SLR-K9", + "AIR-CT9540-CA-K9", + "CAB-C13-C14-JMPR", + "C9800-40-SLR-K9", + "C9800-402KSLRK9-WS", + "C9800-AC-750W-R-RF", + "EDU-C9800-40-K9-WS", + "C9800-402KSLRK9-RF", + "AIR-CT9540-K9++", + "C9800-AC-110W=", + "AIR-DNA-EDU", + "LIC-C9800-DTLS-K9=", + "C9800-AC-110W-WS", + "C9800-AC-750W-RED", + "C9800-40-K9-RF" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286321396", + "productName": "Cisco Catalyst 9800-80 Wireless Controller", + "productId": [ + "SC980080K9-1610", + "C9800-80-K9-WS", + "EDU-C9800-80-K9-RF", + "C9800-1X100GE-WS", + "SC980080K9-1712", + "C9800-2X40GE", + "C9800-10X10GE=", + "EDU-C9800-80-S5-K9", + "C9800-AC-1100W", + "C9800-80-SLRCA-K9", + "C9800-1X40GE-WS", + "C9800-80-CAP-K9", + "C9800-80-CA-K9", + "C9800-10X10GE", + "C9800-80-K9", + "LIC-C9800-DTLS-K9", + "C9800-1X40GE", + "C9800-18X1GE=", + "EDU-C9800-80-K9-WS", + "C9800-1X100GE", + "C9800-1X40GE=", + "EDU-C9800-80-K9", + "C9800-18X1GE", + "C9800-2X40GE=", + "LIC-C9800-DTLS-K9=", + "C9800-DC-950W", + "SC980080K9-1714", + "C9800-1X100GE=", + "C9800-AC-1100W=", + "C9800-80-K9-RF", + "C9800-80-SLR-K9" + ], + "sites": [], + "show": false, + "userDefined": false + } + ], + "ccolatest": true, + "importSourceType": "CCO", + "ccoreverseSync": true + }, + { + "imageUuid": "064d3337-1f34-4476-acf6-db0c4eea8b64", + "name": "cat9k_iosxe_npe.17.06.08.SPA.bin", + "family": "CAT9K", + "version": "17.06.08.0.7919", + "displayVersion": "17.06.08", + "md5Checksum": "cf7625c06e534a12ad542aff05fd666b", + "shaCheckSum": "530a9ec93ea64fda5a59802a70f701ee0b6450ecf7993863e5d9c021319561e920d9b6f4b272fce5fc7486c2363f9e8b01d3ed079d68fcb840b88b505a2fc717", + "createdTime": "2024-11-07 09:13:36.811", + "imageType": "SYSTEM_SW", + "fileSize": "1022136820 bytes", + "imageName": "cat9k_iosxe_npe.17.06.08.SPA.bin", + "applicationType": "", + "feature": "", + "fileServiceId": "da6798e4-aacd-49ec-b808-5c2d875abe9b", + "isTaggedGolden": true, + "imageSource": "CCO", + "extendedAttributes": { + "Description": "Cisco IOS Software, IOS-XE Software", + "DEFAULT_BOOTROM": "UNKNOWN", + "md5_checksum": "cf7625c06e534a12ad542aff05fd666b", + "COMPRESSION_CODE": "-1", + "DEFAULT_MINFLASHSIZE": "UNKNOWN", + "sha512_checksum": "530a9ec93ea64fda5a59802a70f701ee0b6450ecf7993863e5d9c021319561e920d9b6f4b272fce5fc7486c2363f9e8b01d3ed079d68fcb840b88b505a2fc717", + "deviceMNEId": "344367", + "image_name": "cat9k_iosxe_npe.17.06.08.SPA.bin", + "BOOTROM": "UNKNOWN", + "MINFLASHSIZE": "UNKNOWN", + "image_guid": "A79E7A0D26EB199B1CDC84A2CE746C193E08B300", + "MEDIA": "5", + "mdf_id": "286315874", + "min_flash": "16384", + "release_version": "Bengaluru-17.6.8", + "image_description": "CAT9300/9400/9500/9600 UNIVERSAL - NO PAYLOAD ENCRYPTION", + "metadata_trans_id": "106413557428648281", + "image_size": "1022136820", + "software_type_id": "282046477", + "field_notice_url": "https://www.cisco.com/c/en/us/support/switches/catalyst-9300-series-switches/products-field-notices-list.html", + "min_dram": "8192", + "field_notices": "Field Notices", + "GAIA_FEATURE": "UNKNOWN", + "release_doc_url": "https://www.cisco.com/c/en/us/support/docs/switches/catalyst-9300-series-switches/214814-recommended-releases-for-catalyst-9200-9.html", + "release_doc_name": "Recommended Releases Link", + "encryption_software_indicator": "Y", + "release_fcs_date": "12/Sep/2024", + "FULL_VERSION": "17.06.08.0.7919", + "DEFAULT_RAM": "UNKNOWN", + "udi": "PID:%20C9300-48UXM%20VID:%20V08,%20SN:%20FJC271924D9", + "RAM": "UNKNOWN" + }, + "vendor": "CISCO", + "imageIntegrityStatus": "VERIFIED", + "applicableDevicesForImage": [ + { + "mdfId": "286322137", + "productName": "Cisco Catalyst 9606R Switch", + "productId": [ + "C9606R=", + "C9606=", + "C9600X-UPG-BN", + "C9606-RACK-KIT=", + "C9606-FAN=", + "C9606R-RF", + "BN-A1-SBA-C-K9", + "C9606R-1A", + "BN-A1-SBA-I-K9", + "C9606R-48S-BN-A", + "C9600-SSD-NONE", + "C9606R-48Y24C-BN-A", + "C9606R-48Y24C-BNCX", + "QSFP-40G-CSR-S-RF", + "C9606-FILTER=", + "C9606R-48Y24C-EDU", + "BN-A1-SBA-K-K9", + "C9606R-EDU", + "C9606", + "C9600-SUP-NONE", + "C9606R-P", + "HWOA-TETR-PLT", + "C9606R", + "C9600X-BN-A", + "C9606R-10A" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286316710", + "productName": "Cisco Catalyst 9400 Supervisor Engine-1XL", + "productId": [ + "C9400-DNX-A-1M", + "C9400-SUP-1XL-WS", + "C9400-SUP-1XL-RF", + "C9400-SUP-1XL0-RF", + "C9400-SUP-1XL/2", + "C9400-SUP-1XL" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286315691", + "productName": "Cisco Catalyst 9407R Switch", + "productId": [ + "C9400-PWR2100AC-RF", + "C9400-PWR-2100AC", + "C9407R-96U-BNDL-E", + "C9407R96USTKEDU-WS", + "C9407-RACK19KIT-WS", + "C9407R-RF", + "S9400NPE-174", + "C9407R-10A", + "S9400UK9-174", + "C9407R-1A", + "C9407R-96U-STK-EDU", + "C9400-PWR-3200ACT", + "C9407R", + "C9407R-96UBNDLA-WS", + "C9400-PWR-2100ACT=", + "C9407R-96U-BDL-EDU", + "C9400-PWR-2100ACT", + "C9407R-96UBNDLE-RF", + "C9400-PWR-3200AC", + "C9407R-96UBNDLA-RF", + "C9407-RACK19KIT-RF", + "C9400-PWR-2400AC", + "C9400-PWR-3200AC=", + "C9407R-UL", + "C9400-SR-BLANK=", + "C9407-96U-BNDL-CX", + "C9407R-96U-BNDL-1E", + "C9407R-96U-BNDL-A", + "C9400-PWR-2400AC=", + "C9400-PWR-3200ACT=", + "C9407R-96U-BNDL-1A", + "C9407R-WS", + "C9407R-P" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286315703", + "productName": "Cisco Catalyst 9410R Switch", + "productId": [ + "C9400-LC-24XS-WS", + "C9410R-96UBNDLA-RF", + "C9400-LC-48T++=", + "C9410R-1A-WS", + "C9400-SUP-1XL=", + "C9410R-WS", + "C9410R-96U-BNDL-A", + "C9400-SUP-1XL++=", + "C9410-96U-BNDL-CX", + "C9410R-96U-BNDL-E", + "C9400-LC-48S=", + "C9410R-96U-BNDL-1A", + "C9410R-96U-BDL-EDU", + "C9410R-P", + "C9400-LC-48UX++=", + "C9400-LC-48P", + "C9410R-96U-STK-EDU", + "C9400-LC-48P-WS", + "C9400-LC-48S", + "C9410R-UL", + "C9400-PWR-3200ACT", + "C9400-LC-24S", + "C9400-LC-24XS++=", + "C9400-SUP-1XL-B", + "C9400-SUP-1++=", + "C9400-LC-24XS=", + "C9400-LC-48U-B1", + "C9400-LC-48P=", + "C9410R", + "C9400-LC-48UX-WS", + "C9400-PWR-3200AC", + "C9400-LC-48U++=", + "C9410R-96UBNDLA-WS", + "C9400-LC-24S-WS", + "C9400-PWR-2400AC", + "C9410R-10A", + "C9400-PWR-3200AC=", + "C9400-SUP-1XL-WS", + "C9400-LC-48UX", + "C9400-SR-BLANK=", + "C9400-LC-48S-WS", + "C9400-PWR-2400AC=", + "C9400-PWR-3200ACT=", + "C9400-LC-48UX=", + "C9410R-96U-BNDL-1E", + "C9410R-RF", + "C9410R96UBDLEDU-RF", + "C9410R-1A" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286316172", + "productName": "Cisco Catalyst 9400 Supervisor Engine-1", + "productId": [ + "C9404-FAN=", + "C9400-SUP-1-WS", + "S9400UK9-1714", + "C9400-SSD-960GB=", + "C9400-DNX-A-1R", + "C9400-SSD-480GB-WS", + "C9407R-RF", + "C9400-SSD-960GB", + "C9410R-UL", + "C9400-SSD-240GB=", + "C9400-SUP-1-RF", + "C9400-SSD-960GB-WS", + "C9400-SUP-1", + "C9400-SSD-240GB-WS", + "C9404-FAN", + "C9400-SSD-480GB-RF", + "C9400-SSD-980GB=", + "C9400-SUP-1/2", + "C9400-SSD-480GB", + "C9400-SSD-240GB", + "C9400-SUP-1-B", + "C9400X-SUP-2XL++=", + "C9407R-UL", + "S9400NPE-1714", + "C9400-SUP-1=", + "C9400X-SUP-2++=", + "C9400-SSD-480GB=", + "C9410R-RF" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286320244", + "productName": "Cisco Catalyst 9404R Switch", + "productId": [ + "C9404R", + "C9404R-WS", + "C9404R-48UBNDLA-RF", + "C9400-PWR-3200AC", + "C9404R-RF", + "C9404R-UL", + "C9400-PWR-3200AC=", + "C9404R=", + "C9404R-1A", + "C9400-PWR-3200ACT=", + "C9404R-10A", + "C9404R-48U-BNDL-A", + "C9404R-P", + "C9400-PWR-3200ACT", + "C9404R-48U-BNDL-1E", + "C9404R-48U-BDL-EDU", + "C9404R-48U-BNDL-E", + "C9404R-48U-BNDL-1A" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286319589", + "productName": "Cisco Catalyst C9500-48Y4C Switch", + "productId": [ + "C9500-48Y4C-WS", + "C9500-48Y4C", + "C9500-48Y4C-A", + "S9500UK9-1713", + "C9500-48Y4C=", + "C9500X-60L4D-CX", + "L-C9500-48Y4C-EA-3", + "S9500UK9-1714", + "C9500X-28C8D-CX", + "C9500H-ACCKIT-19I=", + "C9500-48Y4C-CX" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286320497", + "productName": "Cisco Catalyst C9500 SVL Switch", + "productId": [ + "C9300X-48Y-10E", + "C9500-24Y4C-E-RF", + "C9300X-24Y-10E", + "C9300X-12Y-10E", + "C9300-24Y-10E", + "C9300-12Y-10E", + "C9300-48Y-10E", + "C9300X-12Q-10E", + "C9300-12Q-10E", + "C9500-24Y4C-10E" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286319595", + "productName": "Cisco Catalyst C9500-24Y4C Switch", + "productId": [ + "C9500H-4PT-KIT=", + "L-C9500-24Y4C-EA-3", + "C9500-DNX-E-24Y-5Y", + "C9500-24Y4C-EDU-RF", + "L-C9500-24Y4C-EA-7", + "C9500-24Y4C=", + "C9500H-ACCKIT-19I=", + "C9500-60C12D-A", + "C9500-24Y4C-CX", + "C9500-24Y4C-A", + "C9500-24Y4C" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286319592", + "productName": "Cisco Catalyst C9500-32QC Switch", + "productId": [ + "C9500H-4PT-KIT=", + "C9500-32QC-P", + "C9500-32QC", + "C9500-32QC=", + "C9500H-ACCKIT-19I=", + "C9500-32QC-EDU-RF" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286315863", + "productName": "Cisco Catalyst 9500 Switch", + "productId": [ + "C9500-DNA-L-P", + "C9500X-ACCKIT-19I", + "UCS-CPU-I6542YC=", + "C9500-ACCKIT-23I", + "C9K-PWR-1500WAC-R", + "C9500X-FAN-1U-R=", + "NAL-C9500-48X-E", + "NAL-C9500-48X-A", + "C9K-PWR-1600WDCR/2", + "PWR-C4-950WAC-R", + "C9500-ACCKIT-19I", + "C9K-PWR1600WACR-RF", + "C9500X-ACCKIT-19I=", + "C9500X-FAN-1U-R", + "C9K-PWR-C5-BLANK", + "HX-9500-8E", + "C9K-PWR-1600WDC-R=", + "C9500X-FAN-1U-F", + "C9500X-4PTH-KIT", + "C9K-PWR-1500WDC-F", + "PWR-C4-BLANK", + "C9500X-FAN-1U-F=", + "C9K-PWR-1600WAC-R=", + "C9500-4PTH-KIT-RF", + "C9K-PWR-1600WDC-R", + "C9K-F1-SSD-240G=", + "C9K-PWR-1500WDC-R", + "C9500-ACCKITH-19I=", + "C9K-OPT-TOOL-NONE", + "C9500-ACCKIT-19I=", + "C9K-F1-SSD-240G", + "C9K-PWR-C4-BLANK", + "C9500-4PTH-KIT=", + "UCS-CPU-I8558UC=", + "C9500X-FAN-1U-R-RF", + "C9500-DNA-P=", + "C9K-F1-SSD-480G=", + "C9K-PWR1600WDCR-WS", + "C9K-F1-SSD-240G-WS", + "C9500X-FAN-1U-F-RF", + "C9K-PWR-1600WACR/2", + "UCS-CPU-I4510TC=", + "C9500-16X-EDU-RF", + "HX-9500-8E=", + "C9500-DNA-L-1E", + "C9K-PWR-C5-BLANK=", + "C9K-PWR-1500WAC-F", + "C9K-F1-SSD-960G=", + "C9K-PWR-1500WDC-F=", + "C9500X-60L4D", + "C9500-ACCKIT-23I=", + "C9K-F1-SSD-240G-RF", + "C9K-F1-SSD-960G", + "C9K-F3-SSD-240GB=", + "C9K-F3-SSD-240GB", + "C9500X-NW-1E", + "C9K-F1-SSD-480G-WS", + "C9500ACCKITH19I-RF", + "C9K-F3-SSD240GB-RF", + "C9500X-NW-1A", + "C9K-F3-SSD-BLANK=", + "C9350-PWR-BLANK", + "C9K-PWR-1500WDC-R=", + "C9500-ACCKITH-23I", + "C9K-PWR-1500WDCR/2", + "C9500X-4PTH-KIT=", + "C9500X-ACCKIT-23I=", + "C9K-PWR-1500WAC-R=", + "C9K-PWR-1500WDCF/2", + "C9500-SPS-NONE", + "C9K-F3-SSD960GB-RF", + "C9K-F1-SSD-480G", + "C9K-PWR-930WDC-R/2", + "PWR-C4-BLANK=", + "C9K-F3-SSD240GB-WS", + "C9500-4PTH-KIT", + "C9K-F3-SSD-960GB", + "C9K-F3-SSD-480GB=", + "C9500-ACCKITH-19I", + "C9K-PWR-1500WACF/2", + "C9K-PWR-1500WAC-F=", + "C9500-4PT-KIT", + "C9K-PWR-C4-BLANK=", + "UCS-CPU-I8592VC=", + "C9350-PWR-BLANK=", + "PWR-C4-950WAC-R-RF", + "C9K-F3-SSD-480GB", + "C9K-PWR-1600WAC-R", + "C9K-F3-SSD-960GB=", + "C9500X-ACCKIT-23I", + "C9500-DNA-P", + "C9K-F3-SSD-BLANK", + "C9500-ACCKITH-23I=", + "C9500-DNA-L-P=", + "C9K-PWR-1500WACR/2" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286323141", + "productName": "Cisco Catalyst 9600 Series Supervisor Engine 1", + "productId": [ + "C9600X-SUP-2-RF", + "C9600X-SUP-2", + "C9600-LC40YL4CD-RF", + "C9600-SUP-1-WS", + "C9610-SUP-3XL", + "S9600UK9-1715", + "C9610-SUP-3", + "C9600X-SUP-2=", + "C9600-SUP-1/2", + "C9600-LC-40YL4CD=", + "C9600-SUP-1" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286322029", + "productName": "Cisco Catalyst 9300L Switch Stack", + "productId": [ + "C9300L-48UXG-4X", + "C9300L-24T-4G", + "C9300L-48T-4G", + "C9300L-48UXG-2Q", + "C9300L-24P-4X", + "C9300L-48P-4X", + "C9300L-STACKBLANK=", + "C9300L-48PF-4G", + "C9300LM-48T-4Y", + "S9300LNPE-174", + "S9300LUK9-174", + "C9300L-24T-4X", + "C9300L-48T-4X", + "C9300L-24P-4G", + "C9300L-48P-4G", + "C9300L-24UXG-2Q", + "C9300L-48PF-4X", + "C9300L-24UXG-4X" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286319599", + "productName": "Cisco Catalyst C9500-32C Switch", + "productId": [ + "C9500H-4PT-KIT=", + "E2N-C95006-G-A", + "C9500-32C-P", + "C9500H-ACCKIT-19I=", + "C9500-32C", + "C9500-32C=" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286320394", + "productName": "Cisco Catalyst 9400 Supervisor Engine-1XL-Y", + "productId": [ + "C9400-SUP-1XL-Y-WS", + "C9400-SUP-1XL-Y", + "C9400-SUP-1XL-Y/2", + "C9400-DNX-A-10Y", + "C9400-SUP-1XL-Y-RF", + "C9400-SUP-1XL-Y=" + ], + "sites": [], + "show": false, + "userDefined": false + }, + { + "mdfId": "286315874", + "productName": "Cisco Catalyst 9300 Switch", + "productId": [ + "C9300-NM-8X=", + "C9300-NM-4M-WS", + "C9300-NM-4G", + "C9200-24PXG-EDU-RF", + "SC9300UK9-174", + "C9300-NM-4M", + "C9300-NM-2X=", + "C9300-NM-4X=", + "C9300-48UN-EDU", + "S9300NPE-174", + "C9300X-48TX", + "C9300-NM-8X", + "C9300-NM-4G=", + "C9300-48-E-A", + "C9300-NM-BLANK=", + "C9200-24PXG-EDU", + "C9300-NM-4G++=", + "C9300-NM-BLANK", + "C9300-NM-8X-WS", + "C9300-NM-8X++=", + "C9200-48PXG-EDU-WS", + "E2N-C93002-G-P", + "C9350-NM-BLANK=", + "C9300-NM-2Y", + "C9300-NM-2X", + "C9300-NM-2Q-WS", + "C9300-NM-2Y-WS", + "C9300-48HXG", + "C9300-24UB", + "C9300-24-E-A", + "C9300-NM-2Q", + "C9300-48UN-EDU-WS", + "C9200-48PXG-EDU", + "C9300-48S", + "C9300-24UXB", + "C9300-NM-4G-WS", + "C9300-DNA-A-48", + "C9300-48H", + "C9300-24H", + "C9300-NM-2Q=", + "C9300-SSD-PROMO", + "C9300-NM-2Y=", + "C9300-48UXM", + "C9300-NM-8X-UL", + "C9300-48T", + "C9300-24S", + "C9300-24T", + "C9300-24U", + "C9300-NM-4X", + "C9300X-12Y", + "C9350-NM-BLANK", + "C9300-48UB", + "C9300X-24Y", + "SSD-PROMO", + "C9300-RFID=" + ], + "sites": [], + "show": false, + "userDefined": false + } + ], + "ccolatest": true, + "importSourceType": "CCO", + "ccoreverseSync": true + } + ], + "version": "1.0" + }, + + "get_template_configuration": [ + { + "name": "Copy of PnP-Devices-SW_1731913275933", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "a8fca942-840d-4cfc-8018-b0e3e29b2089", + "versionsInfo": [ + { + "id": "48b39865-95c1-4b8c-99c5-4938b8e7c50a", + "description": "", + "author": "admin", + "version": "1", + "versionComment": "", + "versionTime": 1731913302568 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9500 Series Switches" + }, + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9300 Series Switches" + } + ] + }, + { + "name": "DMVPN Hub for Cloud Router- System Default", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "11ac2c97-7134-40e6-a860-0a830bd12a6c", + "versionsInfo": [ + { + "id": "c2ebb108-e000-4f29-a35f-14facbb0afc1", + "description": "Dynamic Multipoint VPN Hub for Cloud Router", + "author": "SYSTEM", + "version": "1", + "versionComment": "SYSTEM", + "versionTime": 1726619990248 + } + ], + "composite": false, + "tags": [ + { + "id": "61a6e4ce-c791-4368-9082-e2c83aac61af", + "name": "cloud-dmvpn-hub" + } + ], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Routers", + "productSeries": "Cisco Cloud Services Router 1000V Series" + } + ] + }, + { + "name": "IPsec 1 Branch for Cloud Router - System Default", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "4ec52d83-c8e3-4633-a9f0-d21155d116aa", + "versionsInfo": [ + { + "id": "7b681d45-3940-45b3-ad8e-d3b3af04e952", + "description": "IPsec 1 Branch for Cloud Router - System Default", + "author": "SYSTEM", + "version": "1", + "versionComment": "SYSTEM", + "versionTime": 1726619989635 + } + ], + "composite": false, + "tags": [ + { + "id": "e26e5455-0dcb-49bf-8173-cf4a76163830", + "name": "cloud-ipsec-one-branch-router" + } + ], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Routers", + "productSeries": "Cisco Cloud Services Router 1000V Series" + } + ] + }, + { + "name": "IPsec 2 Branch for Cloud Router - System Default", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "f65cbae1-dcba-45c8-a48d-d1a2cb80a280", + "versionsInfo": [ + { + "id": "5ca46457-5788-48e4-aa72-6d89c1c9bd4e", + "description": "IPsec 2 Branch for Cloud Router - System Default", + "author": "SYSTEM", + "version": "1", + "versionComment": "SYSTEM", + "versionTime": 1726619990838 + } + ], + "composite": false, + "tags": [ + { + "id": "eae74c13-2208-47aa-ab3e-bec85dd05295", + "name": "cloud-ipsec-two-branch-routers" + } + ], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Routers", + "productSeries": "Cisco Cloud Services Router 1000V Series" + } + ] + }, + { + "name": "PnP-Devices-SW", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "f3f89d77-a6da-40af-b96e-41a1f43ffd6d", + "versionsInfo": [ + { + "id": "9c807d03-9cfe-49f2-af88-aa30e94cb886", + "author": "admin", + "version": "2", + "versionTime": 1731041343435 + }, + { + "id": "89bdd486-78a2-4789-8bec-d7e0473e7c45", + "author": "admin", + "version": "1", + "versionTime": 1731040886336 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9500 Series Switches" + }, + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9300 Series Switches" + } + ] + }, + { + "name": "PnP-Devices_SF-EWLC_No-Vars", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "6bb63148-c0b3-4ba1-ab03-beb878298f46", + "versionsInfo": [ + { + "id": "f1c42a2a-1f17-4583-a01f-8c2aacfb98f1", + "author": "admin", + "version": "1", + "versionTime": 1731041057206 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Wireless Controller", + "productSeries": "Cisco Catalyst 9800 Series Wireless Controllers" + } + ] + }, + { + "name": "PnP-Devices_SJ-EWLC", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "aa4956e3-f7ac-434f-bfc3-dcb20994028c", + "versionsInfo": [ + { + "id": "2aad4db4-6f32-4e01-a91c-eb3b3a6c3120", + "author": "admin", + "version": "1", + "versionTime": 1731041013477 + }, + { + "id": "66470a64-535e-444c-afaa-76f1b29ed242", + "author": "admin", + "version": "2", + "versionTime": 1731041465707 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Wireless Controller", + "productSeries": "Cisco Catalyst 9800 Series Wireless Controllers" + } + ] + }, + { + "name": "PnP-Upstream-AP", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "45f633d8-06a4-4eaa-937b-908a90246557", + "versionsInfo": [ + { + "id": "406c4d23-cdcb-4094-ac60-29f6e8f5c8ba", + "author": "admin", + "version": "5", + "versionTime": 1731041365700 + }, + { + "id": "99cc12e3-ed1e-46cf-8519-ec5c5c9fd6ab", + "author": "admin", + "version": "6", + "versionTime": 1731041370009 + }, + { + "id": "6830be69-e2d1-40ae-8ff4-0b81357c6bcf", + "author": "admin", + "version": "7", + "versionTime": 1731041393559 + }, + { + "id": "59e05429-2ae2-4c8f-9619-7d334ad4682d", + "author": "admin", + "version": "8", + "versionTime": 1731041398800 + }, + { + "id": "51e0b58c-79a9-4b84-98ad-46b52ada912f", + "author": "admin", + "version": "3", + "versionTime": 1731040937528 + }, + { + "id": "a3a694b3-d784-4635-b9f0-ce0e291df09d", + "author": "admin", + "version": "4", + "versionTime": 1731040942710 + }, + { + "id": "7e6fa0e2-fce6-44ea-96ca-59005c552edd", + "author": "admin", + "version": "1", + "versionTime": 1731040907549 + }, + { + "id": "7e4d5658-09cc-4404-a16a-c961cf20994d", + "author": "admin", + "version": "2", + "versionTime": 1731040912475 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9500 Series Switches" + }, + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9300 Series Switches" + } + ] + }, + { + "name": "PnP-Upstream-Router", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "44056f20-87b4-4349-a5e1-c70098f4f38f", + "versionsInfo": [ + { + "id": "e80fc360-85e3-49a0-920d-04a837d9e240", + "author": "admin", + "version": "1", + "versionTime": 1731040965103 + }, + { + "id": "7d9200e2-dea0-471d-b89c-faa834e5e248", + "author": "admin", + "version": "2", + "versionTime": 1731041420571 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9500 Series Switches" + }, + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9300 Series Switches" + } + ] + }, + { + "name": "PnP-Upstream-SW", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "19c80ad7-36ac-4fd2-983b-fb26692844b0", + "versionsInfo": [ + { + "id": "2208509a-560f-41c3-887d-46f1f4189618", + "author": "admin", + "version": "2", + "versionTime": 1731041322827 + }, + { + "id": "d2b4dc15-b514-4bc7-a4c7-8fa79859c1a1", + "author": "admin", + "version": "1", + "versionTime": 1731040863077 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9500 Series Switches" + }, + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9300 Series Switches" + } + ] + }, + { + "name": "PnP_Upstream_SF_EWLC_No-Vars", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "4fe2bfbe-4f5e-4361-8030-fc64515f1676", + "versionsInfo": [ + { + "id": "d5b36dae-09a2-495c-aefd-c580531563f0", + "author": "admin", + "version": "1", + "versionTime": 1731041035540 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9500 Series Switches" + }, + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9300 Series Switches" + } + ] + }, + { + "name": "PnP_Upstream_SJ_EWLC_No-Vars", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "e721c891-5218-418f-ba8f-7a5d2f2c6eb4", + "versionsInfo": [ + { + "id": "af1d4368-6dd9-4936-bbd4-88a790c79431", + "author": "admin", + "version": "1", + "versionTime": 1731040988463 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9500 Series Switches" + }, + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9300 Series Switches" + } + ] + }, + { + "name": "Router-generic", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "59a4d6a9-0605-4cba-a6de-3069205822de", + "versionsInfo": [ + { + "id": "4ca36e3c-73d8-4ef0-80d0-cbe99faed211", + "author": "admin", + "version": "1", + "versionTime": 1731041080668 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Routers", + "productSeries": "Cisco Catalyst 8300 Series Edge Platforms" + }, + { + "productFamily": "Routers", + "productSeries": "Cisco 1000 Series Integrated Services Routers" + } + ] + }, + { + "name": "Templates Imported", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "212d196d-d067-4d77-8818-d6af5fd975f1", + "versionsInfo": [ + { + "id": "79e127c8-d821-4943-bc92-c3b3ca6edfb6", + "author": "admin", + "version": "1", + "versionComment": "Imported Template", + "versionTime": 1731041223846 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9500 Series Switches" + }, + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9300 Series Switches" + } + ] + }, + { + "name": "WLC_generic", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "b0c5c22f-2072-4e0b-b6ec-20d57a5e69f6", + "versionsInfo": [ + { + "id": "f9ef2d22-e0e0-4cfd-a71b-acb1edcaa973", + "author": "admin", + "version": "2", + "versionComment": "Modified template", + "versionTime": 1731041149156 + }, + { + "id": "683395a4-999b-41fa-b5fb-64755dc6f2c3", + "author": "admin", + "version": "1", + "versionTime": 1731041124225 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Wireless Controller", + "productSeries": "Cisco 3500 Series Wireless LAN Controller" + } + ] + } + ], + + "get_device_by_id": { + "version": 0, + "deviceInfo": { + "serialNumber": "KWC24160JLL", + "name": "KWC24160JLL", + "dnacDeviceType": "NETWORK", + "pid": "C9130AXI-I", + "lastSyncTime": 0, + "addedOn": 1732092524685, + "lastUpdateOn": 1732092524685, + "firstContact": 0, + "lastContact": 0, + "lastContactDuration": 0, + "provisionedOn": 0, + "state": "Unclaimed", + "onbState": "Not Contacted", + "cmState": "Not Contacted", + "hostname": "Test-AP", + "source": "User", + "reloadRequested": false, + "aaaCredentials": { + "username": "", + "password": "" + }, + "populateInventory": false, + "poeSupported": false, + "capwapBackOff": false, + "redirectionState": "NONE", + "dayN": false, + "dayNClaimOperation": "NO_OP", + "tlsState": "NO_OP", + "reProvision": false, + "authOperation": "AUTHORIZATION_NOT_REQUIRED", + "apProvisionStatus": "DAY0", + "provisioningServerType": "DNAC", + "pnpaasSupportBundleState": "SUPPORT_BUNDLE_NONE", + "stack": false, + "sudiRequired": false, + "hseclicense": false, + "validActions": { + "editSUDI": true, + "editWfParams": true, + "delete": true, + "claim": true, + "unclaim": true, + "reset": false, + "authorize": false, + "resetMsg": "This device is not in Error state. Only devices in Error state may be reset.", + "authorizeMsg": "This device is not in PendingAuthorization state." + }, + "siteClaimType": "AccessPoint" + }, + "progress": { + "message": "Device has not yet contacted the server. Device is ready to be claimed.", + "inProgress": false, + "progressPercent": 0 + }, + "workflowParameters": {}, + "dayNCmdQueue": [], + "runSummaryList": [ + { + "timestamp": 1732092524686, + "details": "User Added Device", + "errorFlag": false + } + ], + "tenantId": "66ea0af5c60db15238522111", + "id": "673da26cf8a6d518470c7360" + }, + + "get_site_detail": { + "response": [ + { + "id": "867314b2-b7e3-4c1b-98a9-0dff412c7cbf", + "parentId": "f7c87d85-c66c-4550-9b0b-b55c6bc3ca09", + "name": "FLOOR1", + "nameHierarchy": "Global/USA/SAN JOSE/SJ_BLD20/FLOOR1", + "type": "floor", + "floorNumber": 1, + "rfModel": "Cubes And Walled Offices", + "width": 100.0, + "length": 100.0, + "height": 10.0, + "unitsOfMeasure": "feet" + } + ], + "version": "1.0" + }, + + "get_site_detail_old": { + "response": [ + { + "parentId": "f7c87d85-c66c-4550-9b0b-b55c6bc3ca09", + "additionalInfo": [ + { + "nameSpace": "Location", + "attributes": { + "address": "725 Alder Drive, Milpitas, California 95035, United States", + "addressInheritedFrom": "f7c87d85-c66c-4550-9b0b-b55c6bc3ca09", + "type": "floor" + } + }, + { + "nameSpace": "mapsSummary", + "attributes": { + "rfModel": "105105", + "floorIndex": "1" + } + }, + { + "nameSpace": "mapGeometry", + "attributes": { + "offsetX": "0.0", + "offsetY": "0.0", + "length": "100.0", + "width": "100.0", + "height": "10.0" + } + } + ], + "name": "FLOOR1", + "instanceTenantId": "66ea0af5c60db15238522111", + "id": "867314b2-b7e3-4c1b-98a9-0dff412c7cbf", + "siteHierarchy": "b901f483-2ecd-4f10-874f-77a98d420e23/9117b526-dd85-49b7-83df-cb9d25202e2e/c1532156-64cd-48e2-969b-61e2f235c48d/f7c87d85-c66c-4550-9b0b-b55c6bc3ca09/867314b2-b7e3-4c1b-98a9-0dff412c7cbf", + "siteNameHierarchy": "Global/USA/SAN JOSE/SJ_BLD20/FLOOR1" + } + ] + }, + + "add_devices": { + "version": 0, + "deviceInfo": { + "serialNumber": "KWC24160JLL", + "name": "KWC24160JLL", + "dnacDeviceType": "NETWORK", + "pid": "C9130AXI-I", + "lastSyncTime": 0, + "addedOn": 1732092524685, + "lastUpdateOn": 1732092524685, + "firstContact": 0, + "lastContact": 0, + "lastContactDuration": 0, + "provisionedOn": 0, + "state": "Unclaimed", + "onbState": "Not Contacted", + "cmState": "Not Contacted", + "hostname": "Test-AP", + "source": "User", + "reloadRequested": false, + "aaaCredentials": { + "username": "", + "password": "" + }, + "populateInventory": false, + "poeSupported": false, + "capwapBackOff": false, + "redirectionState": "NONE", + "dayN": false, + "dayNClaimOperation": "NO_OP", + "tlsState": "NO_OP", + "reProvision": false, + "authOperation": "AUTHORIZATION_NOT_REQUIRED", + "apProvisionStatus": "DAY0", + "provisioningServerType": "DNAC", + "pnpaasSupportBundleState": "SUPPORT_BUNDLE_NONE", + "stack": false, + "sudiRequired": false, + "hseclicense": false, + "validActions": { + "editSUDI": true, + "editWfParams": true, + "delete": true, + "claim": true, + "unclaim": true, + "reset": false, + "authorize": false, + "resetMsg": "This device is not in Error state. Only devices in Error state may be reset.", + "authorizeMsg": "This device is not in PendingAuthorization state." + }, + "siteClaimType": "AccessPoint" + }, + "progress": { + "message": null, + "inProgress": false, + "progressPercent": 0 + }, + "workflowParameters": {}, + "dayNCmdQueue": [], + "runSummaryList": [ + { + "timestamp": 1732092524686, + "details": "User Added Device", + "errorFlag": false + } + ], + "tenantId": "66ea0af5c60db15238522111", + "id": "673da26cf8a6d518470c7360" + }, + + "device_claimed": { + "response": "Device Claimed", + "version": "1.0" + }, + + + "playbook_config_switch": [ + { + "template_name": "PnP-Devices-SW", + "template_params": { + "hostname": "SJ-EN-10-9300", + "interface": "TwoGigabitEthernet1/0/2" + }, + "project_name": "Onboarding Configuration", + "site_name": "Global/USA/SAN JOSE/SJ_BLD22", + "image_name": "cat9k_iosxe.17.15.01.SPA.bin", + "golden_image": true, + "device_info": [ + { + "serial_number": "FOC2439LA89", + "hostname": "SJ-EN-10-9300", + "state": "Unclaimed", + "pid": "C9300-24UXB", + "is_sudi_required": true + } + ], + "pnp_type": "Default", + "rf_profile": "HIGH", + "static_ip": null, + "subnet_mask": null, + "gateway": null, + "vlan_id": null, + "ip_interface_name": null, + "sensorProfile": null + } + ], + + "get_device_detail_sw": [{ + "version": 0, + "deviceInfo": { + "serialNumber": "FOC2439LA89", + "name": "FOC2439LA89", + "deviceType": "Switch", + "dnacDeviceType": "NETWORK", + "pid": "C9300-24UXB", + "lastSyncTime": 0, + "addedOn": 1729830280825, + "lastUpdateOn": 1729830280825, + "firstContact": 0, + "lastContact": 0, + "lastContactDuration": 0, + "provisionedOn": 0, + "state": "Unclaimed", + "onbState": "Not Contacted", + "cmState": "Not Contacted", + "hostname": "SJ-EN-10-9300", + "source": "User", + "reloadRequested": false, + "aaaCredentials": { + "username": "", + "password": "" + }, + "populateInventory": false, + "poeSupported": false, + "capwapBackOff": false, + "redirectionState": "NONE", + "dayN": false, + "dayNClaimOperation": "NO_OP", + "tlsState": "NO_OP", + "reProvision": false, + "authOperation": "AUTHORIZATION_NOT_REQUIRED", + "apProvisionStatus": "DAY0", + "provisioningServerType": "DNAC", + "pnpaasSupportBundleState": "SUPPORT_BUNDLE_NONE", + "hseclicense": false, + "sudiRequired": false, + "stack": false, + "validActions": { + "editSUDI": true, + "editWfParams": true, + "delete": true, + "claim": true, + "unclaim": true, + "reset": false, + "authorize": false, + "resetMsg": "This device is not in Error state. Only devices in Error state may be reset.", + "authorizeMsg": "This device is not in PendingAuthorization state." + }, + "siteClaimType": "Default" + }, + "progress": { + "message": "Device has not yet contacted the server. Device is ready to be claimed.", + "inProgress": false, + "progressPercent": 0 + }, + "workflowParameters": {}, + "dayNCmdQueue": [], + "runSummaryList": [ + { + "timestamp": 1729830280826, + "details": "User Added Device", + "errorFlag": false + } + ], + "tenantId": "66ea0af5c60db15238522111", + "id": "671b1d88c301a454b89d2c84" + }], + + "get_software_image_detail_sw": { + "response": [ + { + "imageUuid": "49258276-76c0-47bd-97ab-dcedca17d666", + "name": "cat9k_iosxe.17.15.01prd18.SPA.bin", + "family": "CAT9K", + "version": "17.15.01.0.1894", + "displayVersion": "17.15.01", + "md5Checksum": "74d285371b6e8c94c043f7e63f185fa7", + "shaCheckSum": "82ba1d0d40fa469c58f69f574601ea9170d42ef69fd32c8684332e3449d0a7467ee854755e84efcf11bb70d638a5ece2524dcbc427dee6e23724e460022ff295", + "createdTime": "2024-09-27 15:56:57.0", + "imageType": "SYSTEM_SW", + "fileSize": "1219563295 bytes", + "imageName": "cat9k_iosxe.17.15.01prd18.SPA.bin", + "applicationType": "", + "feature": "", + "fileServiceId": "b2f796b3-9a7c-4b1a-89f5-c99849c4abb1", + "isTaggedGolden": true, + "imageSource": "http://172.21.236.183/swim/V1715_1PRD18_FC1/cat9k_iosxe.17.15.01prd18.SPA.bin", + "extendedAttributes": { + "Description": "Cisco IOS Software, IOS-XE Software", + "BOOTROM": "UNKNOWN", + "MINFLASHSIZE": "UNKNOWN", + "MEDIA": "5", + "FULL_VERSION": "17.15.01.0.1894", + "DEFAULT_BOOTROM": "UNKNOWN", + "DEFAULT_RAM": "UNKNOWN", + "GAIA_FEATURE": "UNKNOWN", + "COMPRESSION_CODE": "-1", + "DEFAULT_MINFLASHSIZE": "UNKNOWN", + "RAM": "UNKNOWN" + }, + "vendor": "CISCO", + "imageIntegrityStatus": "UNKNOWN", + "importSourceType": "REMOTEURL" + }, + { + "imageUuid": "069546db-f02c-4f21-b22b-1b97e594f5ca", + "name": "C9800-SW-iosxe-wlc.17.15.01prd18.SPA.bin", + "family": "CAT9K", + "version": "17.15.01.0.1894", + "displayVersion": "17.15.01", + "md5Checksum": "7e2eb8e03730dcc0f1a5ede6ef72ebf0", + "shaCheckSum": "7d1ab82327a0b8e1f2a1d955cf45f504c6e026571f8399832678e92c7d548c508c9e407e717d9ffcd59539d5bb0d7930a78ad7e8babcf6444b9feeb714f793c9", + "createdTime": "2024-09-27 16:09:36.0", + "imageType": "SUBPKG_SW", + "fileSize": "792380928 bytes", + "imageName": "C9800-SW-iosxe-wlc.17.15.01prd18.SPA.bin", + "applicationType": "", + "feature": "", + "fileServiceId": "2ff0ff62-a326-4d3e-91a9-775d605169d7", + "isTaggedGolden": false, + "imageSource": "http://172.21.236.183/swim/V1715_1PRD18_FC1/C9800-SW-iosxe-wlc.17.15.01prd18.SPA.bin", + "extendedAttributes": { + "Description": "Cisco IOS Software, IOS-XE Software", + "SMU_LICENSE_LEVEL": "dna-advantage", + "SMU_SUBPKG_TYPE": "C9800-Wireless", + "DEFAULT_BOOTROM": "0", + "SMU_MODE": "install", + "DEFAULT_MINFLASHSIZE": "0", + "SMU_CATEGORY": "bulk-subpkg", + "SMU_TYPE": "reload", + "SMU_PKG_LIST": "wlc", + "SMU_DESCRIPTION": "Cisco IOS-XE Patch package", + "SMU_ID": "1000", + "SMU_CLASS": "recommended", + "FULL_VERSION": "17.15.01.0.1894", + "DEFAULT_RAM": "0", + "SMU_CRDU_ATTR": "unrevertable" + }, + "vendor": "CISCO", + "imageIntegrityStatus": "UNKNOWN", + "importSourceType": "REMOTEURL" + }, + { + "imageUuid": "fda2ec70-9940-435a-9816-25031f821100", + "name": "C9800-universalk9_wlc.17.15.01prd18.SPA.bin", + "family": "C9800", + "version": "17.15.01.0.1894", + "displayVersion": "17.15.01", + "md5Checksum": "5345af418adf4cb2caf019c5a32be0d6", + "shaCheckSum": "49d6e1fe461abbd233517027bd7f59c4937979eeb84083896efc30be51cb3045b616b716dc215946d3b032cdc528c9b5ce6a1f892ba552b4f9f4993227ec542f", + "createdTime": "2024-09-27 16:12:22.0", + "imageType": "SYSTEM_SW", + "fileSize": "1774678621 bytes", + "imageName": "C9800-universalk9_wlc.17.15.01prd18.SPA.bin", + "applicationType": "", + "feature": "", + "fileServiceId": "56d5ea06-3705-4096-9989-58293dcbcef4", + "isTaggedGolden": false, + "imageSource": "http://172.21.236.183/swim/V1715_1PRD18_FC1/C9800-universalk9_wlc.17.15.01prd18.SPA.bin", + "extendedAttributes": { + "Description": "Cisco IOS Software, IOS-XE Software", + "FULL_VERSION": "17.15.01.0.1894", + "DEFAULT_BOOTROM": "0", + "DEFAULT_RAM": "0", + "DEFAULT_MINFLASHSIZE": "0" + }, + "vendor": "CISCO", + "imageIntegrityStatus": "UNKNOWN", + "importSourceType": "REMOTEURL" + } + ], + "version": "1.0" + }, + + "get_template_configuration_sw": [ + { + "name": "DMVPN Hub for Cloud Router- System Default", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "11ac2c97-7134-40e6-a860-0a830bd12a6c", + "versionsInfo": [ + { + "id": "c2ebb108-e000-4f29-a35f-14facbb0afc1", + "description": "Dynamic Multipoint VPN Hub for Cloud Router", + "author": "SYSTEM", + "version": "1", + "versionComment": "SYSTEM", + "versionTime": 1726619990248 + } + ], + "composite": false, + "tags": [ + { + "id": "61a6e4ce-c791-4368-9082-e2c83aac61af", + "name": "cloud-dmvpn-hub" + } + ], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Routers", + "productSeries": "Cisco Cloud Services Router 1000V Series" + } + ] + }, + { + "name": "IPsec 1 Branch for Cloud Router - System Default", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "4ec52d83-c8e3-4633-a9f0-d21155d116aa", + "versionsInfo": [ + { + "id": "7b681d45-3940-45b3-ad8e-d3b3af04e952", + "description": "IPsec 1 Branch for Cloud Router - System Default", + "author": "SYSTEM", + "version": "1", + "versionComment": "SYSTEM", + "versionTime": 1726619989635 + } + ], + "composite": false, + "tags": [ + { + "id": "e26e5455-0dcb-49bf-8173-cf4a76163830", + "name": "cloud-ipsec-one-branch-router" + } + ], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Routers", + "productSeries": "Cisco Cloud Services Router 1000V Series" + } + ] + }, + { + "name": "IPsec 2 Branch for Cloud Router - System Default", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "f65cbae1-dcba-45c8-a48d-d1a2cb80a280", + "versionsInfo": [ + { + "id": "5ca46457-5788-48e4-aa72-6d89c1c9bd4e", + "description": "IPsec 2 Branch for Cloud Router - System Default", + "author": "SYSTEM", + "version": "1", + "versionComment": "SYSTEM", + "versionTime": 1726619990838 + } + ], + "composite": false, + "tags": [ + { + "id": "eae74c13-2208-47aa-ab3e-bec85dd05295", + "name": "cloud-ipsec-two-branch-routers" + } + ], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Routers", + "productSeries": "Cisco Cloud Services Router 1000V Series" + } + ] + }, + { + "name": "PnP-Devices-SW", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "3516157c-cf5c-4c0c-8ddc-665b63e88827", + "versionsInfo": [ + { + "id": "7cd43db4-dfee-494a-8bb8-ecf357ee1bb6", + "author": "admin", + "version": "1", + "versionTime": 1727073777602 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9500 Series Switches" + }, + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9300 Series Switches" + } + ] + }, + { + "name": "PnP-Devices_SJ-EWLC_No-Vars", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "b717290d-6ae1-42da-b036-25c7fba0df22", + "versionsInfo": [ + { + "id": "75b90efd-925c-4496-a53a-d33dc1cb2d47", + "author": "admin", + "version": "1", + "versionTime": 1727073889395 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Wireless Controller", + "productSeries": "Cisco Catalyst 9800 Series Wireless Controllers" + } + ] + }, + { + "name": "PnP-Upstream-AP", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "d6aa21a3-2f17-4f9f-be29-555cb941ed73", + "versionsInfo": [ + { + "id": "2296a944-c906-4fbc-b9ac-7d8403cd52d3", + "author": "admin", + "version": "6", + "versionTime": 1727074197256 + }, + { + "id": "35b6e821-1fa0-4429-84ef-101224b75f23", + "author": "admin", + "version": "5", + "versionTime": 1727074173995 + }, + { + "id": "f4fea1f0-224f-4242-8d83-caec88ff5418", + "author": "admin", + "version": "4", + "versionTime": 1727074170361 + }, + { + "id": "3915bb6a-31db-42ce-9b1e-e55e81eb5c36", + "author": "admin", + "version": "3", + "versionTime": 1727073825655 + }, + { + "id": "7834ff22-016c-4212-9eb4-24e9b4c762ee", + "author": "admin", + "version": "2", + "versionTime": 1727073821581 + }, + { + "id": "3bb8cdce-f299-43fa-ab1c-8a00e2c3b248", + "author": "admin", + "version": "1", + "versionTime": 1727073797032 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9500 Series Switches" + }, + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9300 Series Switches" + } + ] + }, + { + "name": "PnP-Upstream-Router", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "1306ad5c-cbb4-4d80-8e1b-972ab0e8efb9", + "versionsInfo": [ + { + "id": "af243bb9-28a7-4c9a-894a-b8c576e02d99", + "author": "admin", + "version": "2", + "versionTime": 1727074220512 + }, + { + "id": "080bf579-9695-400f-a1bc-082752c85a9a", + "author": "admin", + "version": "1", + "versionTime": 1727073846855 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9500 Series Switches" + }, + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9300 Series Switches" + } + ] + }, + { + "name": "PnP-Upstream-SW", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "526fe6b1-373d-4c19-8f3e-2bac140bd31a", + "versionsInfo": [ + { + "id": "939ddf7e-c6f3-4e94-be3e-7c9ecdc99635", + "author": "admin", + "version": "1", + "versionTime": 1727073754714 + }, + { + "id": "1cb749f1-09fb-47a9-85dd-90ffc05ab828", + "author": "admin", + "version": "2", + "versionTime": 1727074129216 + }, + { + "id": "3d688228-6191-411b-bc7f-aee00ac66007", + "author": "test_change", + "version": "3", + "versionTime": 1727257885894 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9500 Series Switches" + }, + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9300 Series Switches" + } + ] + }, + { + "name": "PnP_Upstream_SJ_EWLC_No-Vars", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "11d1dbbf-a49e-4178-bc03-b6893704edd2", + "versionsInfo": [ + { + "id": "42477ed3-6125-4f01-a58b-df063d1214e3", + "author": "admin", + "version": "1", + "versionTime": 1727073867932 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9500 Series Switches" + }, + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9300 Series Switches" + } + ] + }, + { + "name": "Router-generic", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "2af272ff-5c36-488c-9d50-3290d77b4531", + "versionsInfo": [ + { + "id": "a87c34d7-ab6e-4b01-bcaa-cfe1a43b3a79", + "author": "admin", + "version": "1", + "versionTime": 1727073910865 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Routers", + "productSeries": "Cisco Catalyst 8300 Series Edge Platforms" + }, + { + "productFamily": "Routers", + "productSeries": "Cisco 1000 Series Integrated Services Routers" + } + ] + }, + { + "name": "Templates Imported", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "b4dd6bef-2731-41a5-8559-2fb45c61de54", + "versionsInfo": [ + { + "id": "000111f1-43d3-44cc-9589-8db259b4e23c", + "author": "admin", + "version": "1", + "versionComment": "Imported Template", + "versionTime": 1727074039743 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9500 Series Switches" + }, + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9300 Series Switches" + } + ] + }, + { + "name": "WLC_generic", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "8e836352-8aa5-4ac7-86bf-d103c56a3f61", + "versionsInfo": [ + { + "id": "11aa1404-9f5c-4758-b929-57594db65d7e", + "author": "admin", + "version": "1", + "versionTime": 1727844172138 + }, + { + "id": "c32aabf2-a063-443b-a0a2-24caaf8a372d", + "author": "admin", + "version": "2", + "versionComment": "Modified template", + "versionTime": 1727844175296 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Wireless Controller", + "productSeries": "Cisco 3500 Series Wireless LAN Controller" + } + ] + }, + { + "name": "test", + "projectName": "Onboarding Configuration", + "projectId": "0bce4e6f-f986-4876-8852-b39ecc73a750", + "templateId": "527a7f64-2a93-4b26-ace4-3114ad7043ad", + "versionsInfo": [ + { + "id": "05e62d9b-f5ac-4050-867a-48c825837889", + "author": "network-admin", + "version": "2", + "versionTime": 1727244630876 + }, + { + "id": "3bb4f7f2-d759-43fb-9273-cb0157e340c0", + "author": "super-admin", + "version": "1", + "versionTime": 1727244626089 + }, + { + "id": "2aef8884-0efc-441c-84a5-842f2b563f70", + "author": "super-admin", + "version": "3", + "versionTime": 1727250180529 + }, + { + "id": "6575b222-2e1c-4399-9fee-faa5c03d5758", + "author": "network-admin", + "version": "4", + "versionTime": 1727250184893 + } + ], + "composite": false, + "tags": [], + "softwareType": "IOS-XE", + "deviceTypes": [ + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9500 Series Switches" + }, + { + "productFamily": "Switches and Hubs", + "productSeries": "Cisco Catalyst 9300 Series Switches" + } + ] + } + ], + + "get_device_by_id_sw":{ + "version": 0, + "deviceInfo": { + "serialNumber": "FOC2439LA89", + "name": "FOC2439LA89", + "deviceType": "Switch", + "mode": "INSTALL", + "dnacDeviceType": "NETWORK", + "pid": "C9300-24UXB", + "lastSyncTime": 0, + "addedOn": 1729830280825, + "lastUpdateOn": 1729830280825, + "firstContact": 0, + "lastContact": 0, + "lastContactDuration": 0, + "provisionedOn": 0, + "state": "Unclaimed", + "onbState": "Not Contacted", + "cmState": "Not Contacted", + "hostname": "SJ-EN-10-9300", + "source": "User", + "reloadRequested": false, + "aaaCredentials": { + "username": "", + "password": "" + }, + "populateInventory": false, + "poeSupported": false, + "capwapBackOff": false, + "redirectionState": "NONE", + "dayN": false, + "dayNClaimOperation": "NO_OP", + "tlsState": "NO_OP", + "reProvision": false, + "authOperation": "AUTHORIZATION_NOT_REQUIRED", + "apProvisionStatus": "DAY0", + "provisioningServerType": "DNAC", + "pnpaasSupportBundleState": "SUPPORT_BUNDLE_NONE", + "hseclicense": false, + "sudiRequired": false, + "stack": false, + "validActions": { + "editSUDI": true, + "editWfParams": true, + "delete": true, + "claim": true, + "unclaim": true, + "reset": false, + "authorize": false, + "resetMsg": "This device is not in Error state. Only devices in Error state may be reset.", + "authorizeMsg": "This device is not in PendingAuthorization state." + }, + "siteClaimType": "Default" + }, + "progress": { + "message": "Device has not yet contacted the server. Device is ready to be claimed.", + "inProgress": false, + "progressPercent": 0 + }, + "workflowParameters": {}, + "dayNCmdQueue": [], + "runSummaryList": [ + { + "timestamp": 1729830280826, + "details": "User Added Device", + "errorFlag": false + } + ], + "tenantId": "66ea0af5c60db15238522111", + "id": "671b1d88c301a454b89d2c84" + }, + + "get_site_detail_sw": { + "response": [ + { + "id": "2125cfb6-1be9-45e4-b19f-f3663d987e7f", + "parentId": "c50584c2-ef56-43a0-b809-985a85fcaf21", + "name": "SJ_BLD22", + "nameHierarchy": "Global/USA/SAN JOSE/SJ_BLD22", + "type": "building", + "latitude": 37.416527, + "longitude": -121.91922, + "address": "821 Alder Drive, Milpitas, California 95035, United States", + "country": "United States" + } + ], + "version": "1.0" + }, + + "add_devices_sw": { + "version": 0, + "deviceInfo": { + "serialNumber": "FOC2439LA89", + "name": "FOC2439LA89", + "deviceType": "Switch", + "dnacDeviceType": "NETWORK", + "pid": "C9300-24UXB", + "lastSyncTime": 0, + "addedOn": 1729830280825, + "lastUpdateOn": 1729830280825, + "firstContact": 0, + "lastContact": 0, + "lastContactDuration": 0, + "provisionedOn": 0, + "state": "Unclaimed", + "onbState": "Not Contacted", + "cmState": "Not Contacted", + "hostname": "SJ-EN-10-9300", + "source": "User", + "reloadRequested": false, + "aaaCredentials": { + "username": "", + "password": "" + }, + "populateInventory": false, + "poeSupported": false, + "capwapBackOff": false, + "redirectionState": "NONE", + "dayN": false, + "dayNClaimOperation": "NO_OP", + "tlsState": "NO_OP", + "reProvision": false, + "authOperation": "AUTHORIZATION_NOT_REQUIRED", + "apProvisionStatus": "DAY0", + "provisioningServerType": "DNAC", + "pnpaasSupportBundleState": "SUPPORT_BUNDLE_NONE", + "hseclicense": false, + "sudiRequired": false, + "stack": false, + "validActions": { + "editSUDI": true, + "editWfParams": true, + "delete": true, + "claim": true, + "unclaim": true, + "reset": false, + "authorize": false, + "resetMsg": "This device is not in Error state. Only devices in Error state may be reset.", + "authorizeMsg": "This device is not in PendingAuthorization state." + }, + "siteClaimType": "Default" + }, + "progress": { + "message": null, + "inProgress": false, + "progressPercent": 0 + }, + "workflowParameters": {}, + "dayNCmdQueue": [], + "runSummaryList": [ + { + "timestamp": 1729830280826, + "details": "User Added Device", + "errorFlag": false + } + ], + "tenantId": "66ea0af5c60db15238522111", + "id": "671b1d88c301a454b89d2c84" + }, + + + "playbook_config_delete": [ + { + "template_name": null, + "template_params": null, + "project_name": "Onboarding Configuration", + "site_name": null, + "image_name": null, + "golden_image": null, + "device_info": [ + { + "serial_number": "KWC24160JLL" + }, + { + "serial_number": "KWC24160JL1" + } + ], + "pnp_type": "Default", + "rf_profile": null, + "static_ip": null, + "subnet_mask": null, + "gateway": null, + "vlan_id": null, + "ip_interface_name": null, + "sensorProfile": null + } + ], + + "get_device_detail_delete": { + "version": 0, + "deviceInfo": { + "serialNumber": "KWC24160JLL", + "name": "KWC24160JLL", + "deviceType": "AP", + "agentType": "POSIX", + "pid": "C9130AXI-I", + "lastSyncTime": 0, + "addedOn": 1731049807974, + "lastUpdateOn": 1731343069058, + "firstContact": 1731049807971, + "lastContact": 1731343069058, + "lastContactDuration": 4, + "provisionedOn": 0, + "state": "Deleted", + "onbState": "Initialized", + "cmState": "Secured Connection", + "imageFile": "/san/BUILD/workspace/c1712_throttle_17_12_4_22_CCO/label/ap1g6a", + "imageVersion": "17.12.4.22", + "macAddress": "3C:41:0E:FE:21:D8", + "httpHeaders": [ + { + "key": "clientAddress", + "value": "204.1.216.4" + } + ], + "fileSystemList": [ + { + "name": "bootflash", + "type": "flash", + "readable": true, + "writeable": true, + "freespace": 122961920, + "size": 125829120 + } + ], + "pnpProfileList": [ + { + "profileName": "Profile 1", + "discoveryCreated": false, + "createdBy": "PnP-DHCP", + "primaryEndpoint": { + "protocol": "HTTPS", + "port": 443, + "ipv4Address": "204.192.1.214" + } + } + ], + "hostname": "AP3C41.0EFE.21D8", + "authStatus": "UNSUPPORTED", + "source": "Network", + "reloadRequested": false, + "capabilitiesSupported": [ + "CLI_CONFIG", + "TOPOLOGY", + "IMAGE_INSTALL", + "RELOAD", + "CLI_EXEC", + "DEVICE_AUTH", + "REDIRECTION", + "DEVICE_INFO", + "CAPABILITY", + "BACKOFF", + "SCRIPT", + "CERTIFICATE_INSTALL", + "TAG", + "CONFIG_UPGRADE", + "TOKEN_AUTH" + ], + "featuresSupported": [ + "CAPWAP_BACKOFF", + "RELOAD_WITH_FACTORY_RESET", + "BACKOFF_CCO", + "CERTIFICATE_CHECKSUM" + ], + "populateInventory": false, + "poeSupported": false, + "imageFilesOnDevice": [], + "capwapBackOff": false, + "redirectionState": "NONE", + "dayN": false, + "errorDetails": { + "timestamp": 1731286479480, + "details": "NCOB02073: Unexpected reload detected.", + "errorFlag": true + }, + "deviceCheckpoint": "INITIALIZING", + "dayNClaimOperation": "NO_OP", + "tlsState": "NO_OP", + "reProvision": false, + "authOperation": "NO_OP", + "apProvisionStatus": "DAY0", + "provisioningServerType": "DNAC", + "pnpaasSupportBundleState": "SUPPORT_BUNDLE_NONE", + "stack": false, + "sudiRequired": false, + "hseclicense": false, + "validActions": { + "editSUDI": true, + "editWfParams": true, + "delete": true, + "claim": true, + "unclaim": true, + "reset": false, + "authorize": false, + "resetMsg": "This device is not in Error state. Only devices in Error state may be reset.", + "authorizeMsg": "This device is not in PendingAuthorization state." + }, + "siteClaimType": "AccessPoint" + }, + "progress": { + "message": null, + "inProgress": false, + "progressPercent": 0 + }, + "systemWorkflow": { + "version": 0, + "name": "System Workflow", + "state": "Success", + "type": "Standard", + "instanceType": "SystemWorkflow", + "addedOn": 1731286502191, + "lastupdateOn": 1731286504508, + "startTime": 1731286502191, + "endTime": 1731286504508, + "execTime": 2317, + "currTaskIdx": 0, + "addToInventory": false, + "usedInDeviceCount": 0 + }, + "workflowParameters": {}, + "dayNCmdQueue": [], + "runSummaryList": [ + { + "timestamp": 1731343075737, + "details": "Deleted Device from PnP", + "errorFlag": false + } + ], + "id": "672db94ff8a6d518470ac377" + }, + + "playbook_config_wlc_error": [ + { + "template_name": "PnP_Upstream_SJ_EWLC_No-Vars", + "template_params": { + "hostname": "IAC-EWLC-Claimed" + }, + "project_name": "Onboarding Configuration", + "site_name": "Global/USA/SAN JOSE/SJ_BLD22", + "image_name": "C9800-40-universalk9_wlc.17.12.04.SPA.bin", + "golden_image": null, + "device_info": [ + { + "serial_number": "KWC24160JLL", + "hostname": "SJ-EWLC-1", + "state": "Unclaimed", + "pid": "C9500-16X" + } + ], + "pnp_type": "CatalystWLC", + "rf_profile": "HIGH", + "static_ip": "204.192.101.10", + "subnet_mask": "255.255.255.0", + "gateway": "204.192.101.1", + "vlan_id": "1104", + "ip_interface_name": "TenGigabitEthernet0/0/0", + "sensorProfile": null + } + ], + + "wlc_error_inventory_added": { + "deviceInfo": { + "hostname": "Test-1", + "state": "Unclaimed", + "pid": "C9300-48T", + "serialNumber": "FJC2721271T", + "isSudiRequired": true + }, + "active_validation": false + }, + + "device_claim_site": { + "response": "Device Claimed" + }, + + "playbook_config_wlc_vlan": [ + { + "template_name": "PnP_Upstream_SJ_EWLC_No-Vars", + "template_params": { + "hostname": "IAC-EWLC-Claimed" + }, + "project_name": "Onboarding Configuration", + "site_name": "Global/USA/SAN JOSE/SJ_BLD22", + "image_name": "C9800-40-universalk9_wlc.17.12.04.SPA.bin", + "golden_image": null, + "device_info": [ + { + "serial_number": "KWC24160JLL", + "hostname": "SJ-EWLC-1", + "state": "Unclaimed", + "pid": "C9500-16X" + } + ], + "pnp_type": "CatalystWLC", + "rf_profile": "HIGH", + "static_ip": "204.192.101.10", + "subnet_mask": "255.255.255.0", + "gateway": "204.192.101.1", + "vlan_id": null, + "ip_interface_name": "TenGigabitEthernet0/0/0", + "sensorProfile": null + } + ], + + "get_device_detail_wlc": [{ + "version": 0, + "deviceInfo": { + "serialNumber": "KWC24160JLL", + "name": "KWC24160JLL", + "dnacDeviceType": "NETWORK", + "pid": "C9130AXI-I", + "lastSyncTime": 0, + "addedOn": 1732092524685, + "lastUpdateOn": 1732104734340, + "firstContact": 0, + "lastContact": 0, + "lastContactDuration": 0, + "provisionedOn": 0, + "state": "Planned", + "onbState": "Not Contacted", + "cmState": "Not Contacted", + "projectId": "672db4f9f8a6d518470ac2fe", + "workflowId": "673da26ff8a6d518470c7363", + "projectName": "Default", + "workflowName": "Default 673da26ff8a6d518470c7362", + "siteId": "867314b2-b7e3-4c1b-98a9-0dff412c7cbf", + "siteName": "Global/USA/SAN JOSE/SJ_BLD20/FLOOR1", + "hostname": "Test-AP", + "source": "User", + "reloadRequested": false, + "aaaCredentials": { + "username": "", + "password": "" + }, + "populateInventory": false, + "poeSupported": false, + "capwapBackOff": false, + "redirectionState": "NONE", + "dayN": false, + "dayNClaimOperation": "NO_OP", + "tlsState": "NO_OP", + "reProvision": false, + "authOperation": "AUTHORIZATION_NOT_REQUIRED", + "apProvisionStatus": "DAY0", + "provisioningServerType": "DNAC", + "pnpaasSupportBundleState": "SUPPORT_BUNDLE_NONE", + "stack": false, + "sudiRequired": false, + "hseclicense": false, + "validActions": { + "editSUDI": true, + "editWfParams": true, + "delete": true, + "claim": true, + "unclaim": true, + "reset": false, + "authorize": false, + "resetMsg": "This device is not in Error state. Only devices in Error state may be reset.", + "authorizeMsg": "This device is not in PendingAuthorization state." + }, + "siteClaimType": "AccessPoint" + }, + "progress": { + "message": "Device has been claimed but has not yet contacted the server. You can re-claim this device if you want to change its assigned site or configurations.", + "inProgress": false, + "progressPercent": 0 + }, + "workflowParameters": {}, + "dayNCmdQueue": [], + "runSummaryList": [ + { + "timestamp": 1732092524686, + "details": "User Added Device", + "errorFlag": false + }, + { + "timestamp": 1732092527166, + "details": "Claimed Device", + "errorFlag": false + } + ], + "tenantId": "66ea0af5c60db15238522111", + "id": "673da26cf8a6d518470c7360" + }], + + "get_device_by_id_wlc": { + "version": 0, + "deviceInfo": { + "serialNumber": "KWC24160JLL", + "name": "KWC24160JLL", + "dnacDeviceType": "NETWORK", + "pid": "C9130AXI-I", + "lastSyncTime": 0, + "addedOn": 1732092524685, + "lastUpdateOn": 1732104734340, + "firstContact": 0, + "lastContact": 0, + "lastContactDuration": 0, + "provisionedOn": 0, + "state": "Planned", + "onbState": "Not Contacted", + "cmState": "Not Contacted", + "projectId": "672db4f9f8a6d518470ac2fe", + "workflowId": "673da26ff8a6d518470c7363", + "projectName": "Default", + "workflowName": "Default 673da26ff8a6d518470c7362", + "siteId": "867314b2-b7e3-4c1b-98a9-0dff412c7cbf", + "siteName": "Global/USA/SAN JOSE/SJ_BLD20/FLOOR1", + "hostname": "Test-AP", + "source": "User", + "reloadRequested": false, + "aaaCredentials": { + "username": "", + "password": "" + }, + "populateInventory": false, + "poeSupported": false, + "capwapBackOff": false, + "redirectionState": "NONE", + "dayN": false, + "dayNClaimOperation": "NO_OP", + "tlsState": "NO_OP", + "reProvision": false, + "authOperation": "AUTHORIZATION_NOT_REQUIRED", + "apProvisionStatus": "DAY0", + "provisioningServerType": "DNAC", + "pnpaasSupportBundleState": "SUPPORT_BUNDLE_NONE", + "stack": false, + "sudiRequired": false, + "hseclicense": false, + "validActions": { + "editSUDI": true, + "editWfParams": true, + "delete": true, + "claim": true, + "unclaim": true, + "reset": false, + "authorize": false, + "resetMsg": "This device is not in Error state. Only devices in Error state may be reset.", + "authorizeMsg": "This device is not in PendingAuthorization state." + }, + "siteClaimType": "AccessPoint" + }, + "progress": { + "message": "Device has been claimed but has not yet contacted the server. You can re-claim this device if you want to change its assigned site or configurations.", + "inProgress": false, + "progressPercent": 0 + }, + "workflowParameters": {}, + "dayNCmdQueue": [], + "runSummaryList": [ + { + "timestamp": 1732092524686, + "details": "User Added Device", + "errorFlag": false + }, + { + "timestamp": 1732092527166, + "details": "Claimed Device", + "errorFlag": false + } + ], + "tenantId": "66ea0af5c60db15238522111", + "id": "673da26cf8a6d518470c7360" + }, + + "get_device_by_id_sw_err":{ + "version": 0, + "deviceInfo": { + "serialNumber": "FOC2439LA89", + "name": "FOC2439LA89", + "deviceType": "Switch", + "mode": "INSTALL", + "dnacDeviceType": "NETWORK", + "pid": "C9300-24UXB", + "lastSyncTime": 0, + "addedOn": 1729830280825, + "lastUpdateOn": 1729830280825, + "firstContact": 0, + "lastContact": 0, + "lastContactDuration": 0, + "provisionedOn": 0, + "state": "Error", + "onbState": "Not Contacted", + "cmState": "Not Contacted", + "hostname": "SJ-EN-10-9300", + "source": "User", + "reloadRequested": false, + "aaaCredentials": { + "username": "", + "password": "" + }, + "populateInventory": false, + "poeSupported": false, + "capwapBackOff": false, + "redirectionState": "NONE", + "dayN": false, + "dayNClaimOperation": "NO_OP", + "tlsState": "NO_OP", + "reProvision": false, + "authOperation": "AUTHORIZATION_NOT_REQUIRED", + "apProvisionStatus": "DAY0", + "provisioningServerType": "DNAC", + "pnpaasSupportBundleState": "SUPPORT_BUNDLE_NONE", + "hseclicense": false, + "sudiRequired": false, + "stack": false, + "validActions": { + "editSUDI": true, + "editWfParams": true, + "delete": true, + "claim": true, + "unclaim": true, + "reset": false, + "authorize": false, + "resetMsg": "This device is not in Error state. Only devices in Error state may be reset.", + "authorizeMsg": "This device is not in PendingAuthorization state." + }, + "siteClaimType": "Default" + }, + "progress": { + "message": "Device has not yet contacted the server. Device is ready to be claimed.", + "inProgress": false, + "progressPercent": 0 + }, + "workflowParameters": {}, + "dayNCmdQueue": [], + "runSummaryList": [ + { + "timestamp": 1729830280826, + "details": "User Added Device", + "errorFlag": false + } + ], + "tenantId": "66ea0af5c60db15238522111", + "id": "671b1d88c301a454b89d2c84" + }, + + + "get_membership":{ + "site": { + "response": [], + "version": "1.0", + "message": "Site does not have childrens." + }, + "device": [ + { + "response": [ + { + "instanceUuid": "34f5a410-413d-4a6c-b195-8267fd599491", + "instanceTenantId": "6486ce96ff1f0d0c8be622f4", + "deployPending": "NONE", + "instanceVersion": 0, + "apEthernetMacAddress": "34:b8:83:15:7c:6c", + "apManagerInterfaceIp": "204.192.6.200", + "associatedWlcIp": "204.192.6.200", + "collectionInterval": "NA", + "collectionStatus": "Managed", + "deviceSupportLevel": "Supported", + "dnsResolvedManagementAddress": "", + "errorCode": "null", + "family": "Unified AP", + "hostname": "LTTS-Test2", + "interfaceCount": "0", + "inventoryStatusDetail": "NA", + "lastDeviceResyncStartTime": "", + "lastUpdateTime": 1719810005060, + "lastUpdated": "2024-07-01 05:00:05", + "lineCardCount": "0", + "lineCardId": "", + "macAddress": "34:5d:a8:3b:d8:e0", + "managedAtleastOnce": false, + "managementIpAddress": "204.1.216.3", + "managementState": "Managed", + "memorySize": "NA", + "paddedMgmtIpAddress": "204. 1.216. 3", + "pendingSyncRequestsCount": "0", + "platformId": "C9124AXI-B", + "reachabilityFailureReason": "NA", + "reachabilityStatus": "Reachable", + "reasonsForDeviceResync": "", + "reasonsForPendingSyncRequests": "", + "role": "ACCESS", + "roleSource": "AUTO", + "serialNumber": "FJC27101PRX", + "series": "Cisco Catalyst 9124AXI Series Unified Access Points", + "snmpContact": "", + "snmpLocation": "LTTS-Cisco", + "softwareVersion": "17.14.0.79", + "tagCount": "0", + "type": "Cisco Catalyst 9124AXI Unified Access Point", + "upTime": "33 days, 05:00:40.430", + "uptimeSeconds": 2874442, + "vendor": "NA" + } + ], + "version": "1.0", + "siteId": "17301034-7715-4363-952f-3d290ea6ca59" + } + ] + } +} diff --git a/tests/unit/modules/dnac/test_pnp_workflow_manager.py b/tests/unit/modules/dnac/test_pnp_workflow_manager.py new file mode 100644 index 0000000000..9e114c784a --- /dev/null +++ b/tests/unit/modules/dnac/test_pnp_workflow_manager.py @@ -0,0 +1,289 @@ +# Copyright (c) 2024 Cisco and/or its affiliates. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Make coding more python3-ish +from __future__ import absolute_import, division, print_function + +__metaclass__ = type +from unittest.mock import patch +from ansible_collections.cisco.dnac.plugins.modules import pnp_workflow_manager +from .dnac_module import TestDnacModule, set_module_args, loadPlaybookData + + +class TestDnacPnpWorkflow(TestDnacModule): + """ + Unit test class for PNP workflow manager + """ + module = pnp_workflow_manager + test_data = loadPlaybookData("pnp_workflow_manager") + + playbook_config_accesspoint = test_data.get("playbook_config_accesspoint") + playbook_config_switch = test_data.get("playbook_config_switch") + playbook_config_delete = test_data.get("playbook_config_delete") + playbook_config_wlc_vlan = test_data.get("playbook_config_wlc_vlan") + playbook_config_wlc_error = test_data.get("playbook_config_wlc_error") + + def setUp(self): + super(TestDnacPnpWorkflow, self).setUp() + + self.mock_dnac_init = patch( + "ansible_collections.cisco.dnac.plugins.module_utils.dnac.DNACSDK.__init__") + self.run_dnac_init = self.mock_dnac_init.start() + self.run_dnac_init.side_effect = [None] + self.mock_dnac_exec = patch( + "ansible_collections.cisco.dnac.plugins.module_utils.dnac.DNACSDK._exec" + ) + self.run_dnac_exec = self.mock_dnac_exec.start() + self.load_fixtures() + + def tearDown(self): + super(TestDnacPnpWorkflow, self).tearDown() + self.mock_dnac_exec.stop() + self.mock_dnac_init.stop() + + def load_fixtures(self, response=None, device=""): + """ + Load fixtures for PNP devices. + """ + + if "claim_ap_claimed_new" in self._testMethodName: + self.run_dnac_exec.side_effect = [ + self.test_data.get("get_device_detail"), + self.test_data.get("get_software_image_detail"), + self.test_data.get("get_template_configuration"), + self.test_data.get("get_device_by_id"), + self.test_data.get("get_site_detail"), + self.test_data.get("get_site_detail"), + self.test_data.get("get_site_detail"), + self.test_data.get("add_devices"), + self.test_data.get("get_device_by_id"), + self.test_data.get("get_device_by_id"), + ] + elif "claim_ap_claimed_old" in self._testMethodName: + self.run_dnac_exec.side_effect = [ + self.test_data.get("get_device_detail"), + self.test_data.get("get_software_image_detail"), + self.test_data.get("get_template_configuration"), + self.test_data.get("get_device_by_id"), + self.test_data.get("get_site_detail_old"), + self.test_data.get("get_site_detail_old"), + self.test_data.get("get_site_detail_old"), + self.test_data.get("add_devices"), + self.test_data.get("get_device_by_id"), + self.test_data.get("device_claimed"), + self.test_data.get("device_claimed"), + self.test_data.get("get_device_by_id"), + ] + elif "claim_switch" in self._testMethodName: + self.run_dnac_exec.side_effect = [ + self.test_data.get("get_software_image_detail_sw"), + self.test_data.get("get_software_image_detail_sw"), + self.test_data.get("get_template_configuration_sw"), + self.test_data.get("get_device_by_id_sw"), + self.test_data.get("get_site_detail_sw"), + self.test_data.get("get_site_detail_sw"), + self.test_data.get("get_site_detail_sw"), + self.test_data.get("get_device_by_id_sw"), + self.test_data.get("get_site_detail_sw"), + self.test_data.get("device_claimed"), + ] + elif "device_delete" in self._testMethodName: + self.run_dnac_exec.side_effect = [ + self.test_data.get("get_device_detail_delete"), + self.test_data.get("get_device_detail_delete"), + self.test_data.get("get_device_detail_delete"), + self.test_data.get("get_device_detail_delete"), + ] + elif "claim_switch_wlc_vlan" in self._testMethodName: + self.run_dnac_exec.side_effect = [ + self.test_data.get("get_device_detail_wlc") + ] + elif "wlc_error" in self._testMethodName: + self.run_dnac_exec.side_effect = [ + self.test_data.get("get_device_detail_sw"), + self.test_data.get("get_software_image_detail"), + self.test_data.get("get_template_configuration_sw"), + self.test_data.get("get_device_by_id_wlc"), + self.test_data.get("get_site_detail_sw"), + self.test_data.get("get_device_by_id_wlc"), + self.test_data.get("get_device_by_id_wlc"), + self.test_data.get("get_device_by_id_wlc"), + self.test_data.get("device_claim_site"), + self.test_data.get("device_claimed"), + ] + elif "sw_err" in self._testMethodName: + self.run_dnac_exec.side_effect = [ + self.test_data.get("get_device_detail_sw"), + self.test_data.get("get_software_image_detail_sw"), + self.test_data.get("get_template_configuration_sw"), + self.test_data.get("get_device_by_id_sw_err"), + self.test_data.get("get_site_detail_sw") + ] + + + def test_pnp_workflow_manager_claim_ap_claimed_new(self): + """ + Test case for PNP workflow manager when add and claim switch device. + """ + set_module_args( + dict( + dnac_host="1.1.1.1", + dnac_username="dummy", + dnac_password="dummy", + dnac_version="2.3.7.6", + dnac_log=True, + state="merged", + config=self.playbook_config_accesspoint + ) + ) + result = self.execute_module(changed=True, failed=False) + self.assertEqual( + result.get('msg'), + "Device is already claimed" + ) + + def test_pnp_workflow_manager_claim_ap_claimed_old(self): + """ + Test case for PNP workflow manager when add and claim switch device. + """ + set_module_args( + dict( + dnac_host="1.1.1.1", + dnac_username="dummy", + dnac_password="dummy", + dnac_version="2.3.5.3", + dnac_log=True, + state="merged", + config_verify=True, + config=self.playbook_config_accesspoint + ) + ) + result = self.execute_module(changed=True, failed=False) + self.assertEqual( + result.get('msg'), + "Only Device Claimed Successfully" + ) + + def test_pnp_workflow_manager_claim_switch(self): + """ + Test case for PNP workflow manager when add and claim switch device. + """ + set_module_args( + dict( + dnac_host="1.1.1.1", + dnac_username="dummy", + dnac_password="dummy", + dnac_version="2.3.7.6", + dnac_log=True, + config_verify=True, + state="merged", + config=self.playbook_config_switch + ) + ) + result = self.execute_module(changed=False, failed=True) + self.assertEqual( + result.get('msg'), + "Device Claim Failed" + ) + + def test_pnp_workflow_manager_device_delete(self): + """ + Test case for PNP workflow manager when add and claim switch device. + """ + set_module_args( + dict( + dnac_host="1.1.1.1", + dnac_username="dummy", + dnac_password="dummy", + dnac_version="2.3.7.6", + dnac_log=True, + config_verify=True, + state="deleted", + config=self.playbook_config_delete + ) + ) + result = self.execute_module(changed=False, failed=False) + self.maxDiff = None + self.assertEqual( + result.get('msg'), "Device(s) Not Found" + ) + + def test_pnp_workflow_manager_claim_switch_wlc_vlan(self): + """ + Test case for PNP workflow manager when add and claim switch device. + """ + set_module_args( + dict( + dnac_host="1.1.1.1", + dnac_username="dummy", + dnac_password="dummy", + dnac_version="2.3.7.6", + dnac_log=True, + config_verify=True, + state="merged", + config=self.playbook_config_wlc_vlan + ) + ) + result = self.execute_module(changed=False, failed=True) + self.maxDiff = None + self.assertEqual( + result.get('msg'), + "Please provide the Vlan ID to claim a wireless controller. This is a required field for the process " + + "to create and set the specified port as trunk during PnP." + ) + + def test_pnp_workflow_manager_wlc_error(self): + """ + Test case for PNP workflow manager when add and claim switch device. + """ + set_module_args( + dict( + dnac_host="1.1.1.1", + dnac_username="dummy", + dnac_password="dummy", + dnac_version="2.3.7.6", + dnac_log=True, + config_verify=True, + state="merged", + config=self.playbook_config_wlc_error + ) + ) + result = self.execute_module(changed=False, failed=True) + self.maxDiff = None + self.assertEqual( + result.get('msg'), + "Successfully collected all project and template parameters from Cisco Catalyst Center for comparison" + ) + + def test_pnp_workflow_manager_sw_err(self): + """ + Test case for PNP workflow manager when add and claim switch device. + """ + set_module_args( + dict( + dnac_host="1.1.1.1", + dnac_username="dummy", + dnac_password="dummy", + dnac_version="2.3.7.6", + dnac_log=True, + config_verify=True, + state="merged", + config=self.playbook_config_switch + ) + ) + result = self.execute_module(changed=False, failed=True) + self.assertEqual( + result.get('msg'), + "Successfully collected all project and template parameters from Cisco Catalyst Center for comparison" + ) \ No newline at end of file From d9b7a5f062579a1b5f0a4a6a841e6c3eb8826a1d Mon Sep 17 00:00:00 2001 From: md-rafeek Date: Thu, 21 Nov 2024 01:23:56 +0530 Subject: [PATCH 03/34] PNP workflow manager UT covered sanity fixed --- tests/unit/modules/dnac/test_pnp_workflow_manager.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/unit/modules/dnac/test_pnp_workflow_manager.py b/tests/unit/modules/dnac/test_pnp_workflow_manager.py index 9e114c784a..02abe8c06e 100644 --- a/tests/unit/modules/dnac/test_pnp_workflow_manager.py +++ b/tests/unit/modules/dnac/test_pnp_workflow_manager.py @@ -131,7 +131,6 @@ def load_fixtures(self, response=None, device=""): self.test_data.get("get_site_detail_sw") ] - def test_pnp_workflow_manager_claim_ap_claimed_new(self): """ Test case for PNP workflow manager when add and claim switch device. @@ -286,4 +285,4 @@ def test_pnp_workflow_manager_sw_err(self): self.assertEqual( result.get('msg'), "Successfully collected all project and template parameters from Cisco Catalyst Center for comparison" - ) \ No newline at end of file + ) From f4bb5d7af490e20fd403a80b46bf9fd487c2c002 Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Thu, 21 Nov 2024 16:00:15 +0530 Subject: [PATCH 04/34] address review comments --- plugins/modules/template_workflow_manager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/modules/template_workflow_manager.py b/plugins/modules/template_workflow_manager.py index ec1b973753..0835b7220c 100644 --- a/plugins/modules/template_workflow_manager.py +++ b/plugins/modules/template_workflow_manager.py @@ -3464,6 +3464,7 @@ def get_diff_deleted(self, config): self.msg = "Project is not deletable" self.status = "failed" return self + self.log("Successfully completed the delete operation for the template {0}".format(templateName), "DEBUG") deploy_temp_details = config.get("deploy_template") if deploy_temp_details: @@ -3474,7 +3475,6 @@ def get_diff_deleted(self, config): ).format(template_name) self.set_operation_result("failed", False, self.msg, "ERROR").check_return_status() - self.log("Successfully completed delete state execution", "DEBUG") return self def verify_diff_merged(self, config): @@ -3572,7 +3572,7 @@ def verify_diff_deleted(self, config): self.log("Configuration Template config is not applied to the Cisco Catalyst Center.", "WARNING") return self - self.log("Successfully validated the absence of Template in the Cisco Catalyst Center.", "INFO") + self.log("Successfully validated the absence of Template {0} in the Cisco Catalyst Center.".format(templateName), "INFO") return self From 7d856533d4a002fa45abc7a9946fd5f5ec84caa4 Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Thu, 21 Nov 2024 17:11:55 +0530 Subject: [PATCH 05/34] revert the version in galaxy.yml --- galaxy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/galaxy.yml b/galaxy.yml index 935f754c09..c08001f0ae 100644 --- a/galaxy.yml +++ b/galaxy.yml @@ -1,7 +1,7 @@ --- namespace: cisco name: dnac -version: 6.24.0 +version: 6.25.1 readme: README.md authors: - Rafael Campos From becc28443c0ccff54d44d2c9b72497b6222430a9 Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Thu, 21 Nov 2024 17:21:16 +0530 Subject: [PATCH 06/34] revert the import statements after documentation --- plugins/modules/template_workflow_manager.py | 22 ++++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/plugins/modules/template_workflow_manager.py b/plugins/modules/template_workflow_manager.py index 55e8f3d46b..df0bd7b629 100644 --- a/plugins/modules/template_workflow_manager.py +++ b/plugins/modules/template_workflow_manager.py @@ -6,17 +6,6 @@ """Ansible module to perform operations on project and templates in Cisco Catalyst Center.""" from __future__ import absolute_import, division, print_function -from ansible_collections.cisco.dnac.plugins.module_utils.dnac import ( - DnacBase, - validate_list_of_dicts, - get_dict_result, - dnac_compare_equality, -) -from ansible.module_utils.basic import AnsibleModule -import time -import json -import copy - __metaclass__ = type __author__ = [ 'Madhan Sankaranarayanan, Rishita Chowdhary, Akash Bhaskaran, Muthu Rakesh, Abhishek Maheshwari'] @@ -1186,6 +1175,17 @@ """ +from ansible_collections.cisco.dnac.plugins.module_utils.dnac import ( + DnacBase, + validate_list_of_dicts, + get_dict_result, + dnac_compare_equality, +) +from ansible.module_utils.basic import AnsibleModule +import time +import json +import copy + class Template(DnacBase): """Class containing member attributes for template_workflow_manager module""" From 9287475f5c21e248a647ed4dad2057c798344d52 Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Mon, 25 Nov 2024 11:12:35 +0530 Subject: [PATCH 07/34] moved import to the top of the module --- plugins/modules/template_workflow_manager.py | 21 ++++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/plugins/modules/template_workflow_manager.py b/plugins/modules/template_workflow_manager.py index df0bd7b629..5f05c132e0 100644 --- a/plugins/modules/template_workflow_manager.py +++ b/plugins/modules/template_workflow_manager.py @@ -6,6 +6,16 @@ """Ansible module to perform operations on project and templates in Cisco Catalyst Center.""" from __future__ import absolute_import, division, print_function +from ansible_collections.cisco.dnac.plugins.module_utils.dnac import ( + DnacBase, + validate_list_of_dicts, + get_dict_result, + dnac_compare_equality, +) +from ansible.module_utils.basic import AnsibleModule +import time +import json +import copy __metaclass__ = type __author__ = [ 'Madhan Sankaranarayanan, Rishita Chowdhary, Akash Bhaskaran, Muthu Rakesh, Abhishek Maheshwari'] @@ -1175,17 +1185,6 @@ """ -from ansible_collections.cisco.dnac.plugins.module_utils.dnac import ( - DnacBase, - validate_list_of_dicts, - get_dict_result, - dnac_compare_equality, -) -from ansible.module_utils.basic import AnsibleModule -import time -import json -import copy - class Template(DnacBase): """Class containing member attributes for template_workflow_manager module""" From b54365cf6a5c1ad9c2ebeee631ed1aa4395419aa Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Mon, 25 Nov 2024 11:14:38 +0530 Subject: [PATCH 08/34] add new line after import statements --- plugins/modules/template_workflow_manager.py | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/modules/template_workflow_manager.py b/plugins/modules/template_workflow_manager.py index 5f05c132e0..55e8f3d46b 100644 --- a/plugins/modules/template_workflow_manager.py +++ b/plugins/modules/template_workflow_manager.py @@ -16,6 +16,7 @@ import time import json import copy + __metaclass__ = type __author__ = [ 'Madhan Sankaranarayanan, Rishita Chowdhary, Akash Bhaskaran, Muthu Rakesh, Abhishek Maheshwari'] From af9895f1d6d8af554f5b49cda0e3d86d05231e67 Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Mon, 25 Nov 2024 12:52:23 +0530 Subject: [PATCH 09/34] add quotes to the variable --- plugins/modules/template_workflow_manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/modules/template_workflow_manager.py b/plugins/modules/template_workflow_manager.py index 55e8f3d46b..8eca38311a 100644 --- a/plugins/modules/template_workflow_manager.py +++ b/plugins/modules/template_workflow_manager.py @@ -2927,7 +2927,7 @@ def filter_devices_with_family_role( filtered_device_list = [] self.log( - "Filtering devices from the provided site-assigned device IDs: {0}, device_family='{1}', " + "Filtering devices from the provided site-assigned device IDs: '{0}', device_family='{1}', " "and device_role='{2}'".format( site_assign_device_ids, device_family, From 24d5b76e88b2ac484d3613de425720d0e3353ed8 Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Mon, 25 Nov 2024 12:54:14 +0530 Subject: [PATCH 10/34] Revert "add new line after import statements" This reverts commit b54365cf6a5c1ad9c2ebeee631ed1aa4395419aa. --- plugins/modules/template_workflow_manager.py | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/modules/template_workflow_manager.py b/plugins/modules/template_workflow_manager.py index 8eca38311a..037568fa3d 100644 --- a/plugins/modules/template_workflow_manager.py +++ b/plugins/modules/template_workflow_manager.py @@ -16,7 +16,6 @@ import time import json import copy - __metaclass__ = type __author__ = [ 'Madhan Sankaranarayanan, Rishita Chowdhary, Akash Bhaskaran, Muthu Rakesh, Abhishek Maheshwari'] From 358c7c6e7f4668ccd807dfafa437c0d0b5cc7ea1 Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Mon, 25 Nov 2024 12:57:23 +0530 Subject: [PATCH 11/34] revert 2 commits before --- plugins/modules/template_workflow_manager.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/modules/template_workflow_manager.py b/plugins/modules/template_workflow_manager.py index 037568fa3d..55e8f3d46b 100644 --- a/plugins/modules/template_workflow_manager.py +++ b/plugins/modules/template_workflow_manager.py @@ -16,6 +16,7 @@ import time import json import copy + __metaclass__ = type __author__ = [ 'Madhan Sankaranarayanan, Rishita Chowdhary, Akash Bhaskaran, Muthu Rakesh, Abhishek Maheshwari'] @@ -2926,7 +2927,7 @@ def filter_devices_with_family_role( filtered_device_list = [] self.log( - "Filtering devices from the provided site-assigned device IDs: '{0}', device_family='{1}', " + "Filtering devices from the provided site-assigned device IDs: {0}, device_family='{1}', " "and device_role='{2}'".format( site_assign_device_ids, device_family, From 6347847f7f628b7171faf505312353b8a10469c0 Mon Sep 17 00:00:00 2001 From: md-rafeek Date: Mon, 25 Nov 2024 22:44:45 +0530 Subject: [PATCH 12/34] Yaml document related changes code is working fine --- .../modules/accesspoint_workflow_manager.py | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/plugins/modules/accesspoint_workflow_manager.py b/plugins/modules/accesspoint_workflow_manager.py index 66a8199337..b321d9045f 100644 --- a/plugins/modules/accesspoint_workflow_manager.py +++ b/plugins/modules/accesspoint_workflow_manager.py @@ -263,7 +263,7 @@ description: Mode of power assignment for the 2.4GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str required: False - power_level: + powerlevel: description: Custom power level configured for the 2.4GHz radio interface. For example, 3. type: int required: False @@ -314,7 +314,7 @@ description: Mode of power assignment for the 5GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str required: False - power_level: + powerlevel: description: Custom power level configured for the 5GHz radio interface. For example, 3. type: int required: False @@ -363,7 +363,7 @@ description: Mode of power assignment for the 6GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str required: False - power_level: + powerlevel: description: Custom power level configured for the 6GHz radio interface. For example, 3. type: int required: False @@ -444,7 +444,7 @@ In "Custom" mode, valid values range from 1 to 8. type: str required: False - power_level: + powerlevel: description: Custom power level configured for the XOR radio interface. For example, 3. type: int required: False @@ -506,7 +506,7 @@ In Custom, it accepts values 1 to 8. type: str required: False - power_level: + powerlevel: description: Custom power level configured for the TRI radio interface. For example, 3. type: int required: False @@ -779,7 +779,7 @@ description: Mode of power assignment for the 2.4GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str required: False - power_level: + powerlevel: description: Custom power level configured for the 2.4GHz radio interface. For example, 3. type: int required: False @@ -830,7 +830,7 @@ description: Mode of power assignment for the 5GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str required: False - power_level: + powerlevel: description: Custom power level configured for the 5GHz radio interface. For example, 3. type: int required: False @@ -879,7 +879,7 @@ description: Mode of power assignment for the 6GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str required: False - power_level: + powerlevel: description: Custom power level configured for the 6GHz radio interface. For example, 3. type: int required: False @@ -960,7 +960,7 @@ In "Custom" mode, valid values range from 1 to 8. type: str required: False - power_level: + powerlevel: description: Custom power level configured for the XOR radio interface. For example, 3. type: int required: False @@ -1022,7 +1022,7 @@ In Custom, it accepts values 1 to 8. type: str required: False - power_level: + powerlevel: description: Custom power level configured for the TRI radio interface. For example, 3. type: int required: False From d7a124b978be75cd2ad73e1b54d9f1765433993e Mon Sep 17 00:00:00 2001 From: md-rafeek Date: Tue, 26 Nov 2024 15:41:41 +0530 Subject: [PATCH 13/34] Yaml document identified for required to True for address --- plugins/modules/accesspoint_workflow_manager.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/modules/accesspoint_workflow_manager.py b/plugins/modules/accesspoint_workflow_manager.py index b321d9045f..8089373d41 100644 --- a/plugins/modules/accesspoint_workflow_manager.py +++ b/plugins/modules/accesspoint_workflow_manager.py @@ -185,7 +185,7 @@ address: description: IP address of the primary wireless LAN controller. For example, "10.0.0.3". type: str - required: False + required: True secondary_controller_name: description: | Name or identifier of the secondary wireless LAN controller (WLC) managing the Access Point (AP). @@ -201,7 +201,7 @@ address: description: IP address of the primary wireless LAN controller. For example, "10.0.0.3". type: str - required: False + required: True tertiary_controller_name: description: | Name or identifier of the tertiary wireless LAN controller (WLC) managing the Access Point (AP). @@ -217,7 +217,7 @@ address: description: IP address of the primary wireless LAN controller. For example, "10.0.0.2". type: str - required: False + required: True 2.4ghz_radio: description: Configuration options for the 2.4GHz radio interface. type: dict From 52d6207c569fece4404c8d7276fa77cef399a1d6 Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Wed, 27 Nov 2024 10:13:34 +0530 Subject: [PATCH 14/34] Fix the issue of creating fabric sites/zones in single go --- .../sda_fabric_sites_zones_workflow_manager.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/plugins/modules/sda_fabric_sites_zones_workflow_manager.py b/plugins/modules/sda_fabric_sites_zones_workflow_manager.py index 50e6fb4dea..040b135856 100644 --- a/plugins/modules/sda_fabric_sites_zones_workflow_manager.py +++ b/plugins/modules/sda_fabric_sites_zones_workflow_manager.py @@ -1449,11 +1449,15 @@ def get_diff_merged(self, config): # Create/Update Fabric sites/zones in Cisco Catalyst Center raw_fabric_sites = self.want.get('fabric_sites') - # Convert each dictionary to a sorted tuple of key-value pairs - unique_fabric_sites = {tuple(sorted(d.items())) - for d in raw_fabric_sites} - # Convert each unique tuple back into a dictionary - fabric_sites = [dict(t) for t in unique_fabric_sites] + # Preserve the order of input while deduplicating + unique_fabric_site_set = set() + fabric_sites = [] + for fabric_site_dict in raw_fabric_sites: + # Convert dictionary to a frozenset - immutable set + site_zone = frozenset(fabric_site_dict.items()) + if site_zone not in unique_fabric_site_set: + unique_fabric_site_set.add(site_zone) + fabric_sites.append(fabric_site_dict) for site in fabric_sites: site_name = site.get("site_name_hierarchy") From 985ef5f198fa96e3f380df20aa53392e0b0f1fa2 Mon Sep 17 00:00:00 2001 From: md-rafeek Date: Wed, 27 Nov 2024 22:52:02 +0530 Subject: [PATCH 15/34] Snaity issue fixed --- plugins/modules/accesspoint_workflow_manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/modules/accesspoint_workflow_manager.py b/plugins/modules/accesspoint_workflow_manager.py index 336a0c5a43..def7947ed0 100644 --- a/plugins/modules/accesspoint_workflow_manager.py +++ b/plugins/modules/accesspoint_workflow_manager.py @@ -36,7 +36,7 @@ state: description: The desired state of the device replacement workflow. type: str - choices: [ "merged", "deleted" ] + choices: ["merged", "deleted"] default: merged dnac_api_task_timeout: description: The number of times to retry resynchronization. From 9f706f0f08eca993a1b858a6f69e402086ed3dbc Mon Sep 17 00:00:00 2001 From: md-rafeek Date: Thu, 28 Nov 2024 09:58:09 +0530 Subject: [PATCH 16/34] Snaity issue fixed for true and false --- .../modules/accesspoint_workflow_manager.py | 418 +++++++++--------- 1 file changed, 209 insertions(+), 209 deletions(-) diff --git a/plugins/modules/accesspoint_workflow_manager.py b/plugins/modules/accesspoint_workflow_manager.py index def7947ed0..5487734041 100644 --- a/plugins/modules/accesspoint_workflow_manager.py +++ b/plugins/modules/accesspoint_workflow_manager.py @@ -30,9 +30,9 @@ options: config_verify: - description: Set to True to verify the Cisco Catalyst Center configuration after applying the playbook config. + description: Set to true to verify the Cisco Catalyst Center configuration after applying the playbook config. type: bool - default: False + default: false state: description: The desired state of the device replacement workflow. type: str @@ -54,7 +54,7 @@ description: List of details of AP being managed. type: list elements: dict - required: True + required: true suboptions: mac_address: description: | @@ -64,7 +64,7 @@ - hostname - management_ip_address type: str - required: True + required: true hostname: description: | The Host Name used to identify the device. If provided, it cannot be modified. @@ -73,7 +73,7 @@ - hostname - management_ip_address type: str - required: True + required: true management_ip_address: description: | The Management IP Address used to identify the device. If provided, it cannot be modified. @@ -82,13 +82,13 @@ - hostname - management_ip_address type: str - required: True + required: true rf_profile: description: | Specifies the Radio Frequency (RF) profile name for the Access Point. It can be one of the standard profiles "HIGH", "LOW", "TYPICAL", or a custom profile that has been created. For example, "HIGH". type: str - required: False + required: false site: description: Current site details where the Access Point is located. type: dict @@ -96,285 +96,285 @@ floor: description: Floor details of the current site. type: dict - required: False + required: false suboptions: name: description: Name of the floor. For example, "FLOOR1". type: str - required: False + required: false parent_name: description: Parent name of the floor in the site hierarchy. For example, "Global/USA/New York/BLDNYC". type: str - required: False + required: false ap_name: description: Current AP name that needs to be changed along with the new AP name. For example, "Test2". type: str - required: False + required: false admin_status: description: Status of the AP configuration. Accepts "Enabled" or "Disabled". For example, "Enabled". type: str - required: False + required: false led_status: description: State of the AP's LED. Accepts "Enabled" or "Disabled". For example, "Enabled". type: str - required: False + required: false led_brightness_level: description: Brightness level of the AP's LED. Accepts values from 1 to 8. For example, 3. type: int - required: False + required: false ap_mode: description: | Defines the mode of operation for the Access Point (AP). Possible values include "Local", "Monitor", "Sniffer", or "Bridge". For example, "Local". type: str - required: False + required: false location: description: Location name of the AP. Provide this data if a change is required. For example, "Bangalore". type: str - required: False + required: false is_assigned_site_as_location: description: | Configures whether the access point location is automatically set to the site assigned to the access point. Accepts "Enabled" or "Disabled". If set to "Enabled", no additional location configuration is required. type: str - required: False + required: false failover_priority: description: Priority order for failover in AP configuration. Accepts "Low", "Medium", "High", or "Critical". type: str - required: False + required: false clean_air_si_2.4ghz: description: | Clean Air Spectrum Intelligence (SI) feature status for the 2.4GHz band. Indicates whether. For example, "Enabled". Clean Air Spectrum Intelligence is enabled or disabled. type: str - required: False + required: false clean_air_si_5ghz: description: | Clean Air Spectrum Intelligence (SI) feature status for the 5GHz band. Indicates whether. For example, "Enabled". Clean Air Spectrum Intelligence is enabled or disabled. type: str - required: False + required: false clean_air_si_6ghz: description: | Clean Air Spectrum Intelligence (SI) feature status for the 6GHz band. Indicates whether. For example, "Enabled". Clean Air Spectrum Intelligence is enabled or disabled. type: str - required: False + required: false primary_controller_name: description: | Name or identifier of the primary wireless LAN controller (WLC) managing the Access Point (AP). For example, "SJ-EWLC-1". type: str - required: False + required: false primary_ip_address: description: IP address of the primary wireless LAN controller (WLC) managing the Access Point (AP). type: dict - required: False + required: false suboptions: address: description: IP address of the primary wireless LAN controller. For example, "10.0.0.3". type: str - required: True + required: true secondary_controller_name: description: | Name or identifier of the secondary wireless LAN controller (WLC) managing the Access Point (AP). To modify only the primary controller, set the secondary and tertiary controller names to "Inherit from site / Clear". type: str - required: False + required: false secondary_ip_address: description: IP address of the secondary wireless LAN controller (WLC) managing the Access Point (AP). type: dict - required: False + required: false suboptions: address: description: IP address of the primary wireless LAN controller. For example, "10.0.0.3". type: str - required: True + required: true tertiary_controller_name: description: | Name or identifier of the tertiary wireless LAN controller (WLC) managing the Access Point (AP). To modify only the primary controller, set the secondary and tertiary controller names to "Inherit from site / Clear". type: str - required: False + required: false tertiary_ip_address: description: IP address of the tertiary wireless LAN controller (WLC) managing the Access Point (AP). type: dict - required: False + required: false suboptions: address: description: IP address of the primary wireless LAN controller. For example, "10.0.0.2". type: str - required: True + required: true 2.4ghz_radio: description: Configuration options for the 2.4GHz radio interface. type: dict - required: False + required: false suboptions: admin_status: description: Administrative status for the 2.4GHz radio interface. For example, "Enabled". type: str - required: False + required: false antenna_name: description: Name or type of antenna used for the 2.4GHz radio interface. For example, "other". type: str - required: False + required: false antenna_gain: description: | Specifies the antenna gain value in decibels (dB) for the 2.4GHz radio interface, valid values range from 0 to 40. For example, 10. type: int - required: False + required: false radio_role_assignment: description: Role assignment mode for the 2.4GHz radio interface. Accepts "Auto", "Client-serving", or "Monitor". For example, Auto. type: str - required: False + required: false cable_loss: description: | Cable loss in dB for the 2.4GHz radio interface. Valid values are from 0 to 40. This value must be less than the antenna gain. For example, 2. type: int - required: False + required: false antenna_cable_name: description: Name or type of antenna cable used for the 2.4GHz radio interface. For example, "other". type: str - required: False + required: false channel_assignment_mode: description: Mode of channel assignment for the 2.4GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str - required: False + required: false channel_number: description: Custom channel number configured for the 2.4GHz radio interface. For example, 6. type: int - required: False + required: false power_assignment_mode: description: Mode of power assignment for the 2.4GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str - required: False + required: false powerlevel: description: Custom power level configured for the 2.4GHz radio interface. For example, 3. type: int - required: False + required: false 5ghz_radio: description: Configuration options for the 5GHz radio interface. type: dict - required: False + required: false suboptions: admin_status: description: Administrative status for the 5GHz radio interface. For example, "Enabled". type: str - required: False + required: false antenna_name: description: Name or type of antenna used for the 5GHz radio interface. For example, "other". type: str - required: False + required: false antenna_gain: description: | Antenna gain value in decibels (dB) for the 5GHz radio interface, valid values range from 0 to 40. For example, 5. type: int - required: False + required: false radio_role_assignment: description: | Role assignment mode for the 5GHz radio interface. Accepts "Auto", "Client-serving", or "Monitor". For example, "Auto". This field not required for xor series access point slot 1 type: str - required: False + required: false cable_loss: description: | Cable loss in dB for the 5GHz radio interface. Valid values are from 0 to 40. This value must be less than the antenna gain. For example, 3. type: int - required: False + required: false antenna_cable_name: description: Name or type of antenna cable used for the 5GHz radio interface. For example, "other". type: str - required: False + required: false channel_assignment_mode: description: Mode of channel assignment for the 5GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str - required: False + required: false channel_number: description: Custom channel number configured for the 5GHz radio interface. For example, 36. type: int - required: False + required: false power_assignment_mode: description: Mode of power assignment for the 5GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str - required: False + required: false powerlevel: description: Custom power level configured for the 5GHz radio interface. For example, 3. type: int - required: False + required: false 6ghz_radio: description: Configuration options for the 6GHz radio interface. type: dict - required: False + required: false suboptions: admin_status: description: Administrative status for the 6GHz radio interface. For example, "Enabled". type: str - required: False + required: false antenna_name: description: Name or type of antenna used for the 6GHz radio interface. For example, "other". type: str - required: False + required: false antenna_gain: description: | Antenna gain value in decibels (dB) for the 6GHz radio interface, valid values range from 0 to 40. For example, 30. type: int - required: False + required: false radio_role_assignment: description: Role assignment mode for the 6GHz radio interface. Accepts "Auto", "Client-serving", or "Monitor". type: str - required: False + required: false cable_loss: description: | Cable loss in dB for the 6GHz radio interface. Valid values are from 0 to 40. This value must be less than the antenna gain. For example, 10. type: int - required: False + required: false antenna_cable_name: description: Name or type of antenna cable used for the 6GHz radio interface. For example, "other". type: str - required: False + required: false channel_assignment_mode: description: Mode of channel assignment for the 6GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str - required: False + required: false channel_number: description: Custom channel number configured for the 6GHz radio interface. For example, 6. type: int - required: False + required: false power_assignment_mode: description: Mode of power assignment for the 6GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str - required: False + required: false powerlevel: description: Custom power level configured for the 6GHz radio interface. For example, 3. type: int - required: False + required: false xor_radio: description: Configuration options for the XOR radio interface. type: dict - required: False + required: false suboptions: admin_status: description: Administrative status for the XOR radio interface. For example, "Enabled". type: str - required: False + required: false antenna_name: description: Name or type of antenna used for the XOR radio interface. For example, "other". type: str - required: False + required: false antenna_gain: description: | Antenna gain value in decibels (dB) for the XOR radio interface, valid values range from 0 to 40. For example, 14. type: int - required: False + required: false radio_role_assignment: description: | Role assignment mode for the XOR radio interface. Accepts "Auto", "Client-serving", or "Monitor" @@ -382,23 +382,23 @@ Additionally, if the 5 GHz band is selected in the radio band, the power level cannot be modified. For example, "Auto". type: str - required: False + required: false radio_band: description: | Radio band should be enabled if the radio role assignment is set to "Client-serving" mode. Accepts "2.4 GHz" or "5 GHz" or "6 GHz". type: str - required: False + required: false cable_loss: description: | Cable loss in dB for the XOR radio interface. Valid values are from 0 to 40. This value must be less than the antenna gain. For example, 5. type: int - required: False + required: false antenna_cable_name: description: Name or type of antenna cable used for the XOR radio interface. For example, "other". type: str - required: False + required: false channel_assignment_mode: description: | Mode of channel assignment for the XOR radio interface. Accepts "Global" or "Custom". @@ -416,106 +416,106 @@ 221, 225, 229, 233. For example, "Custom". type: str - required: False + required: false channel_number: description: Custom channel number configured for the XOR radio interface. For example, 6. type: int - required: False + required: false channel_width: description: | Width of the channel configured for the XOR radio interface. Accepts values "20 MHz", "40 MHz", "80 MHz", "160 MHz" or "320 MHz". For example, 20 MHz. type: str - required: False + required: false power_assignment_mode: description: | Mode of power assignment for the XOR radio interface. Accepts "Global" or "Custom." In "Custom" mode, valid values range from 1 to 8. type: str - required: False + required: false powerlevel: description: Custom power level configured for the XOR radio interface. For example, 3. type: int - required: False + required: false tri_radio: description: Configuration options for the TRI radio interface. type: dict - required: False + required: false suboptions: admin_status: description: Administrative status for the TRI radio interface. For example, "Enabled". type: str - required: False + required: false antenna_name: description: Name or type of antenna used for the TRI radio interface. For example, "other". type: str - required: False + required: false antenna_gain: description: | Antenna gain value in decibels (dB) for the TRI radio interface, valid values range from 0 to 40. For example, 16. type: int - required: False + required: false radio_role_assignment: description: | Role assignment mode for the TRI radio interface. Accepts "Auto", "Client-serving", or "Monitor". If radio_role_assignment is "client-serving", then only power-level and channel-level can be changed. type: str - required: False + required: false cable_loss: description: | Cable loss in dB for the TRI radio interface. Valid values are from 0 to 40. This value must be less than the antenna gain. For example, 6. type: int - required: False + required: false antenna_cable_name: description: Name or type of antenna cable used for the TRI radio interface. For example, "other". type: str - required: False + required: false channel_assignment_mode: description: | Mode of channel assignment for the TRI radio interface. Accepts "Global" or "Custom". For Custom, it accepts values like 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. (eg. Custom) type: str - required: False + required: false channel_number: description: Custom channel number configured for the TRI radio interface. For example, 6. type: int - required: False + required: false channel_width: description: | Width of the channel configured for the TRI radio interface. Accepts values "20 MHz", "40 MHz", "80 MHz", "160 MHz", or "320 MHz". . For example, 20 MHz. type: str - required: False + required: false power_assignment_mode: description: | Mode of power assignment for the TRI radio interface. Accepts "Global" or "Custom". In Custom, it accepts values 1 to 8. type: str - required: False + required: false powerlevel: description: Custom power level configured for the TRI radio interface. For example, 3. type: int - required: False + required: false dual_radio_mode: description: | Mode of operation configured for the TRI radio interface. Specifies how the access point (AP) manages its dual radio functionality. eg . Auto type: str - required: False + required: false ap_selected_fields: description: When enable the verify flag "config_verify" to see only the filter field of the AP details in the output. (eg. "id,hostname,family,type,mac_address,management_ip_address,ap_ethernet_mac_address") type: str - required: False + required: false ap_config_selected_fields: description: | When enable the verify flag "config_verify" to see only the filter field of the AP configuration in the output. (eg. "mac_address,eth_mac,ap_name,led_brightness_level,led_status,location,radioDTOs") type: str - required: False + required: false reboot_aps: description: | Reboot one or more access points (APs) identified by their MAC addresses, hostnames, or management IP addresses. @@ -587,7 +587,7 @@ which is used to identify the access points for bulk updated with AP Name to update access point. type: list elements: str - required: True + required: true suboptions: mac_address: description: | @@ -597,7 +597,7 @@ - hostname - management_ip_address type: str - required: True + required: true hostname: description: | The Host Name used to identify the device. If provided, it cannot be modified. @@ -606,7 +606,7 @@ - hostname - management_ip_address type: str - required: True + required: true management_ip_address: description: | The Management IP Address used to identify the device. If provided, it cannot be modified. @@ -615,282 +615,282 @@ - hostname - management_ip_address type: str - required: True + required: true ap_name: description: Current AP name that needs to be changed along with the new AP name. For example, "Test2". type: str - required: False + required: false common_fields_to_change: description: | Common fields to change AP is a dict which contains below data which need to update all listed access points. type: dict - required: True + required: true suboptions: admin_status: description: Status of the AP configuration. Accepts "Enabled" or "Disabled". For example, "Enabled". type: str - required: False + required: false led_status: description: State of the AP's LED. Accepts "Enabled" or "Disabled". For example, "Enabled". type: str - required: False + required: false led_brightness_level: description: Brightness level of the AP's LED. Accepts values from 1 to 8. For example, 3. type: int - required: False + required: false ap_mode: description: | Defines the mode of operation for the Access Point (AP). Possible values include "Local", "Monitor", "Sniffer", or "Bridge". For example, "Local". type: str - required: False + required: false location: description: Location name of the AP. Provide this data if a change is required. For example, "Bangalore". type: str - required: False + required: false is_assigned_site_as_location: description: | Configures whether the access point location is automatically set to the site assigned to the access point. Accepts "Enabled" or "Disabled". If set to "Enabled", no additional location configuration is required. type: str - required: False + required: false failover_priority: description: Priority order for failover in AP configuration. Accepts "Low", "Medium", "High", or "Critical". type: str - required: False + required: false clean_air_si_2.4ghz: description: | Clean Air Spectrum Intelligence (SI) feature status for the 2.4GHz band. Indicates whether. For example, "Enabled". Clean Air Spectrum Intelligence is enabled or disabled. type: str - required: False + required: false clean_air_si_5ghz: description: | Clean Air Spectrum Intelligence (SI) feature status for the 5GHz band. Indicates whether. For example, "Enabled". Clean Air Spectrum Intelligence is enabled or disabled. type: str - required: False + required: false clean_air_si_6ghz: description: | Clean Air Spectrum Intelligence (SI) feature status for the 6GHz band. Indicates whether. For example, "Enabled". Clean Air Spectrum Intelligence is enabled or disabled. type: str - required: False + required: false primary_controller_name: description: | Name or identifier of the primary wireless LAN controller (WLC) managing the Access Point (AP). For example, "SJ-EWLC-1". type: str - required: False + required: false primary_ip_address: description: IP address of the primary wireless LAN controller (WLC) managing the Access Point (AP). type: dict - required: False + required: false suboptions: address: description: IP address of the primary wireless LAN controller. For example, "10.0.0.3". type: str - required: False + required: false secondary_controller_name: description: | Name or identifier of the secondary wireless LAN controller (WLC) managing the Access Point (AP). To modify only the primary controller, set the secondary and tertiary controller names to "Inherit from site / Clear". type: str - required: False + required: false secondary_ip_address: description: IP address of the secondary wireless LAN controller (WLC) managing the Access Point (AP). type: dict - required: False + required: false suboptions: address: description: IP address of the primary wireless LAN controller. For example, "10.0.0.3". type: str - required: False + required: false tertiary_controller_name: description: | Name or identifier of the tertiary wireless LAN controller (WLC) managing the Access Point (AP). To modify only the primary controller, set the secondary and tertiary controller names to "Inherit from site / Clear". type: str - required: False + required: false tertiary_ip_address: description: IP address of the tertiary wireless LAN controller (WLC) managing the Access Point (AP). type: dict - required: False + required: false suboptions: address: description: IP address of the primary wireless LAN controller. For example, "10.0.0.2". type: str - required: False + required: false 2.4ghz_radio: description: Configuration options for the 2.4GHz radio interface. type: dict - required: False + required: false suboptions: admin_status: description: Administrative status for the 2.4GHz radio interface. For example, "Enabled". type: str - required: False + required: false antenna_name: description: Name or type of antenna used for the 2.4GHz radio interface. For example, "other". type: str - required: False + required: false antenna_gain: description: | Specifies the antenna gain value in decibels (dB) for the 2.4GHz radio interface, valid values range from 0 to 40. For example, 10. type: int - required: False + required: false radio_role_assignment: description: Role assignment mode for the 2.4GHz radio interface. Accepts "Auto", "Client-serving", or "Monitor". For example, Auto. type: str - required: False + required: false cable_loss: description: | Cable loss in dB for the 2.4GHz radio interface. Valid values are from 0 to 40. This value must be less than the antenna gain. For example, 2. type: int - required: False + required: false antenna_cable_name: description: Name or type of antenna cable used for the 2.4GHz radio interface. For example, "other". type: str - required: False + required: false channel_assignment_mode: description: Mode of channel assignment for the 2.4GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str - required: False + required: false channel_number: description: Custom channel number configured for the 2.4GHz radio interface. For example, 6. type: int - required: False + required: false power_assignment_mode: description: Mode of power assignment for the 2.4GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str - required: False + required: false powerlevel: description: Custom power level configured for the 2.4GHz radio interface. For example, 3. type: int - required: False + required: false 5ghz_radio: description: Configuration options for the 5GHz radio interface. type: dict - required: False + required: false suboptions: admin_status: description: Administrative status for the 5GHz radio interface. For example, "Enabled". type: str - required: False + required: false antenna_name: description: Name or type of antenna used for the 5GHz radio interface. For example, "other". type: str - required: False + required: false antenna_gain: description: | Antenna gain value in decibels (dB) for the 5GHz radio interface, valid values range from 0 to 40. For example, 5. type: int - required: False + required: false radio_role_assignment: description: | Role assignment mode for the 5GHz radio interface. Accepts "Auto", "Client-serving", or "Monitor". For example, "Auto". This field not required for xor series access point slot 1 type: str - required: False + required: false cable_loss: description: | Cable loss in dB for the 5GHz radio interface. Valid values are from 0 to 40. This value must be less than the antenna gain. For example, 3. type: int - required: False + required: false antenna_cable_name: description: Name or type of antenna cable used for the 5GHz radio interface. For example, "other". type: str - required: False + required: false channel_assignment_mode: description: Mode of channel assignment for the 5GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str - required: False + required: false channel_number: description: Custom channel number configured for the 5GHz radio interface. For example, 36. type: int - required: False + required: false power_assignment_mode: description: Mode of power assignment for the 5GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str - required: False + required: false powerlevel: description: Custom power level configured for the 5GHz radio interface. For example, 3. type: int - required: False + required: false 6ghz_radio: description: Configuration options for the 6GHz radio interface. type: dict - required: False + required: false suboptions: admin_status: description: Administrative status for the 6GHz radio interface. For example, "Enabled". type: str - required: False + required: false antenna_name: description: Name or type of antenna used for the 6GHz radio interface. For example, "other". type: str - required: False + required: false antenna_gain: description: | Antenna gain value in decibels (dB) for the 6GHz radio interface, valid values range from 0 to 40. For example, 30. type: int - required: False + required: false radio_role_assignment: description: Role assignment mode for the 6GHz radio interface. Accepts "Auto", "Client-serving", or "Monitor". type: str - required: False + required: false cable_loss: description: | Cable loss in dB for the 6GHz radio interface. Valid values are from 0 to 40. This value must be less than the antenna gain. For example, 10. type: int - required: False + required: false antenna_cable_name: description: Name or type of antenna cable used for the 6GHz radio interface. For example, "other". type: str - required: False + required: false channel_assignment_mode: description: Mode of channel assignment for the 6GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str - required: False + required: false channel_number: description: Custom channel number configured for the 6GHz radio interface. For example, 6. type: int - required: False + required: false power_assignment_mode: description: Mode of power assignment for the 6GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str - required: False + required: false powerlevel: description: Custom power level configured for the 6GHz radio interface. For example, 3. type: int - required: False + required: false xor_radio: description: Configuration options for the XOR radio interface. type: dict - required: False + required: false suboptions: admin_status: description: Administrative status for the XOR radio interface. For example, "Enabled". type: str - required: False + required: false antenna_name: description: Name or type of antenna used for the XOR radio interface. For example, "other". type: str - required: False + required: false antenna_gain: description: | Antenna gain value in decibels (dB) for the XOR radio interface, valid values range from 0 to 40. For example, 14. type: int - required: False + required: false radio_role_assignment: description: | Role assignment mode for the XOR radio interface. Accepts "Auto", "Client-serving", or "Monitor" @@ -898,23 +898,23 @@ Additionally, if the 5 GHz band is selected in the radio band, the power level cannot be modified. For example, "Auto". type: str - required: False + required: false radio_band: description: | Radio band should be enabled if the radio role assignment is set to "Client-serving" mode. Accepts "2.4 GHz" or "5 GHz" or "6 GHz". type: str - required: False + required: false cable_loss: description: | Cable loss in dB for the XOR radio interface. Valid values are from 0 to 40. This value must be less than the antenna gain. For example, 5. type: int - required: False + required: false antenna_cable_name: description: Name or type of antenna cable used for the XOR radio interface. For example, "other". type: str - required: False + required: false channel_assignment_mode: description: | Mode of channel assignment for the XOR radio interface. Accepts "Global" or "Custom". @@ -932,95 +932,95 @@ 221, 225, 229, 233. For example, "Custom". type: str - required: False + required: false channel_number: description: Custom channel number configured for the XOR radio interface. For example, 6. type: int - required: False + required: false channel_width: description: | Width of the channel configured for the XOR radio interface. Accepts values "20 MHz", "40 MHz", "80 MHz", "160 MHz" or "320 MHz". For example, 20 MHz. type: str - required: False + required: false power_assignment_mode: description: | Mode of power assignment for the XOR radio interface. Accepts "Global" or "Custom." In "Custom" mode, valid values range from 1 to 8. type: str - required: False + required: false powerlevel: description: Custom power level configured for the XOR radio interface. For example, 3. type: int - required: False + required: false tri_radio: description: Configuration options for the TRI radio interface. type: dict - required: False + required: false suboptions: admin_status: description: Administrative status for the TRI radio interface. For example, "Enabled". type: str - required: False + required: false antenna_name: description: Name or type of antenna used for the TRI radio interface. For example, "other". type: str - required: False + required: false antenna_gain: description: | Antenna gain value in decibels (dB) for the TRI radio interface, valid values range from 0 to 40. For example, 16. type: int - required: False + required: false radio_role_assignment: description: | Role assignment mode for the TRI radio interface. Accepts "Auto", "Client-serving", or "Monitor". If radio_role_assignment is "client-serving", then only power-level and channel-level can be changed. type: str - required: False + required: false cable_loss: description: | Cable loss in dB for the TRI radio interface. Valid values are from 0 to 40. This value must be less than the antenna gain. For example, 6. type: int - required: False + required: false antenna_cable_name: description: Name or type of antenna cable used for the TRI radio interface. For example, "other". type: str - required: False + required: false channel_assignment_mode: description: | Mode of channel assignment for the TRI radio interface. Accepts "Global" or "Custom". For Custom, it accepts values like 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. (eg. Custom) type: str - required: False + required: false channel_number: description: Custom channel number configured for the TRI radio interface. For example, 6. type: int - required: False + required: false channel_width: description: | Width of the channel configured for the TRI radio interface. Accepts values "20 MHz", "40 MHz", "80 MHz", "160 MHz", or "320 MHz". . For example, 20 MHz. type: str - required: False + required: false power_assignment_mode: description: | Mode of power assignment for the TRI radio interface. Accepts "Global" or "Custom". In Custom, it accepts values 1 to 8. type: str - required: False + required: false powerlevel: description: Custom power level configured for the TRI radio interface. For example, 3. type: int - required: False + required: false dual_radio_mode: description: | Mode of operation configured for the TRI radio interface. Specifies how the access point (AP) manages its dual radio functionality. eg . Auto type: str - required: False + required: false requirements: - dnacentersdk >= 2.7.2 @@ -1073,9 +1073,9 @@ dnac_port: "{{ dnac_port }}" dnac_version: "{{ dnac_version }}" dnac_debug: "{{ dnac_debug }}" - dnac_log: True + dnac_log: true dnac_log_level: DEBUG - config_verify: False + config_verify: false state: merged config: - mac_address: 90:e9:5e:03:f3:40 @@ -1096,9 +1096,9 @@ dnac_port: "{{ dnac_port }}" dnac_version: "{{ dnac_version }}" dnac_debug: "{{ dnac_debug }}" - dnac_log: True + dnac_log: true dnac_log_level: DEBUG - config_verify: False + config_verify: false state: merged config: - mac_address: 90:e9:5e:03:f3:40 @@ -1116,9 +1116,9 @@ dnac_port: "{{ dnac_port }}" dnac_version: "{{ dnac_version }}" dnac_debug: "{{ dnac_debug }}" - dnac_log: True + dnac_log: true dnac_log_level: DEBUG - config_verify: False + config_verify: false state: merged config: - mac_address: 90:e9:5e:03:f3:40 @@ -1136,9 +1136,9 @@ dnac_port: "{{ dnac_port }}" dnac_version: "{{ dnac_version }}" dnac_debug: "{{ dnac_debug }}" - dnac_log: True + dnac_log: true dnac_log_level: DEBUG - config_verify: False + config_verify: false state: merged config: - mac_address: 90:e9:5e:03:f3:40 @@ -1156,9 +1156,9 @@ dnac_port: "{{ dnac_port }}" dnac_version: "{{ dnac_version }}" dnac_debug: "{{ dnac_debug }}" - dnac_log: True + dnac_log: true dnac_log_level: DEBUG - config_verify: False + config_verify: false state: merged config: - mac_address: 90:e9:5e:03:f3:40 @@ -1178,9 +1178,9 @@ dnac_port: "{{ dnac_port }}" dnac_version: "{{ dnac_version }}" dnac_debug: "{{ dnac_debug }}" - dnac_log: True + dnac_log: true dnac_log_level: DEBUG - config_verify: False + config_verify: false state: merged config: - mac_address: 90:e9:5e:03:f3:40 @@ -1201,9 +1201,9 @@ dnac_port: "{{ dnac_port }}" dnac_version: "{{ dnac_version }}" dnac_debug: "{{ dnac_debug }}" - dnac_log: True + dnac_log: true dnac_log_level: DEBUG - config_verify: False + config_verify: false state: merged config: - mac_address: 90:e9:5e:03:f3:40 @@ -1229,9 +1229,9 @@ dnac_port: "{{ dnac_port }}" dnac_version: "{{ dnac_version }}" dnac_debug: "{{ dnac_debug }}" - dnac_log: True + dnac_log: true dnac_log_level: DEBUG - config_verify: True + config_verify: true state: merged config: - mac_address: 90:e9:5e:03:f3:40 @@ -1251,9 +1251,9 @@ dnac_port: "{{ dnac_port }}" dnac_version: "{{ dnac_version }}" dnac_debug: "{{ dnac_debug }}" - dnac_log: True + dnac_log: true dnac_log_level: DEBUG - config_verify: True + config_verify: true state: merged config: - mac_address: a4:88:73:d4:d6:60 @@ -1284,9 +1284,9 @@ dnac_port: "{{ dnac_port }}" dnac_version: "{{ dnac_version }}" dnac_debug: "{{ dnac_debug }}" - dnac_log: True + dnac_log: true dnac_log_level: DEBUG - config_verify: True + config_verify: true state: merged config: - mac_address: a4:88:73:d4:d6:60 @@ -1315,9 +1315,9 @@ dnac_port: "{{ dnac_port }}" dnac_version: "{{ dnac_version }}" dnac_debug: "{{ dnac_debug }}" - dnac_log: True + dnac_log: true dnac_log_level: DEBUG - config_verify: False + config_verify: false state: merged config: - mac_address: 90:e9:5e:03:f3:40 @@ -1357,9 +1357,9 @@ dnac_port: "{{ dnac_port }}" dnac_version: "{{ dnac_version }}" dnac_debug: "{{ dnac_debug }}" - dnac_log: True + dnac_log: true dnac_log_level: DEBUG - config_verify: True + config_verify: true state: merged config: - mac_address: 6c:d6:e3:75:5a:e0 @@ -1399,9 +1399,9 @@ dnac_port: "{{ dnac_port }}" dnac_version: "{{ dnac_version }}" dnac_debug: "{{ dnac_debug }}" - dnac_log: True + dnac_log: true dnac_log_level: DEBUG - config_verify: True + config_verify: true state: merged config: - mac_address: e4:38:7e:42:bc:00 @@ -1446,9 +1446,9 @@ dnac_port: "{{ dnac_port }}" dnac_version: "{{ dnac_version }}" dnac_debug: "{{ dnac_debug }}" - dnac_log: True + dnac_log: true dnac_log_level: DEBUG - config_verify: True + config_verify: true state: merged config: - reboot_aps: @@ -1466,9 +1466,9 @@ dnac_port: "{{ dnac_port }}" dnac_version: "{{ dnac_version }}" dnac_debug: "{{ dnac_debug }}" - dnac_log: True + dnac_log: true dnac_log_level: DEBUG - config_verify: True + config_verify: true state: merged config: - reboot_aps: @@ -1486,9 +1486,9 @@ dnac_port: "{{ dnac_port }}" dnac_version: "{{ dnac_version }}" dnac_debug: "{{ dnac_debug }}" - dnac_log: True + dnac_log: true dnac_log_level: DEBUG - config_verify: True + config_verify: true state: merged config: - factory_reset_aps: @@ -1506,9 +1506,9 @@ dnac_port: "{{ dnac_port }}" dnac_version: "{{ dnac_version }}" dnac_debug: "{{ dnac_debug }}" - dnac_log: True + dnac_log: true dnac_log_level: DEBUG - config_verify: True + config_verify: true state: merged config: - bulk_update_aps: From bcf46d868d493809381bd96e6ccd8969ad12c72b Mon Sep 17 00:00:00 2001 From: MUTHU-RAKESH-27 <19cs127@psgitech.ac.in> Date: Thu, 28 Nov 2024 10:11:08 +0530 Subject: [PATCH 17/34] Corrected the misleading documentation and handled error for non-existing fabric site --- .../modules/sda_fabric_devices_workflow_manager.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/plugins/modules/sda_fabric_devices_workflow_manager.py b/plugins/modules/sda_fabric_devices_workflow_manager.py index ba0a7085af..65b0190050 100644 --- a/plugins/modules/sda_fabric_devices_workflow_manager.py +++ b/plugins/modules/sda_fabric_devices_workflow_manager.py @@ -103,8 +103,7 @@ to advertise and manage routing information within LISP networks. choices: [LISP_BGP, LISP_PUB_SUB] default: LISP_BGP - type: list - elements: str + type: str borders_settings: description: - Effective only when the 'device_roles' contains BORDER_NODE. @@ -529,7 +528,7 @@ external_connectivity_ip_pool_name: Reserved_sda_test_1 virtual_network_name: L3VN1 vlan_id: 440 - tcp_mss_adjustment: 2 + tcp_mss_adjustment: 501 - name: Add L3 Handoff with IP Transit to the SDA fabric device with local and remote network cisco.dnac.sda_fabric_devices_workflow_manager: @@ -2174,6 +2173,12 @@ def get_have_fabric_devices(self, fabric_devices): "The provided 'fabric_name' '{fabric_name}' is not valid a fabric site." .format(fabric_name=fabric_name) ) + if self.params.get("state") == "deleted": + self.log(self.msg, "INFO") + self.result.get("response").append({"msg": self.msg}) + self.status = "exited" + return self + self.log(self.msg, "ERROR") self.status = "failed" return self From 5c2c660c145ffd3dab53c9199885a590570e8150 Mon Sep 17 00:00:00 2001 From: MUTHU-RAKESH-27 <19cs127@psgitech.ac.in> Date: Thu, 28 Nov 2024 10:26:13 +0530 Subject: [PATCH 18/34] Resolved the sanity issues --- plugins/modules/sda_fabric_devices_workflow_manager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/modules/sda_fabric_devices_workflow_manager.py b/plugins/modules/sda_fabric_devices_workflow_manager.py index 65b0190050..884ffb7337 100644 --- a/plugins/modules/sda_fabric_devices_workflow_manager.py +++ b/plugins/modules/sda_fabric_devices_workflow_manager.py @@ -30,7 +30,7 @@ state: description: The state of Cisco Catalyst Center after module completion. type: str - choices: [ merged, deleted ] + choices: [merged, deleted] default: merged config: description: @@ -195,7 +195,7 @@ - Unique identifier assigned to a Virtual Local Area Network (VLAN). - Should be unique across the entire fabric site settings. - The 'vlan_id' can range from 1 to 4094, excluding 1, 1002-1005, 2046, and 4094. - - Either `virtual_network_name` or `vlan_id` is required for all operations in L3 Handoff with IP transit. + - Either `virtual_network_name` or `vlan_id` is required for all operations in L3 Handoff with IP transit. - This parameter cannot be updated once set. type: int tcp_mss_adjustment: From 669bc8efe7b3eb8a560f2c9821fc0daf7860fe02 Mon Sep 17 00:00:00 2001 From: MUTHU-RAKESH-27 <19cs127@psgitech.ac.in> Date: Thu, 28 Nov 2024 12:34:36 +0530 Subject: [PATCH 19/34] Resolved the sanity issues --- .../sda_fabric_devices_workflow_manager.py | 300 +++++++++--------- 1 file changed, 150 insertions(+), 150 deletions(-) diff --git a/plugins/modules/sda_fabric_devices_workflow_manager.py b/plugins/modules/sda_fabric_devices_workflow_manager.py index 884ffb7337..97c37a3698 100644 --- a/plugins/modules/sda_fabric_devices_workflow_manager.py +++ b/plugins/modules/sda_fabric_devices_workflow_manager.py @@ -13,10 +13,10 @@ module: sda_fabric_devices_workflow_manager short_description: Manage SDA fabric devices in Cisco Catalyst Center. description: -- Perform operations on SDA fabric devices, including adding, updating, and deleting fabric devices. -- Manage L2 handoffs for fabric devices, including adding and deleting configurations. -- Manage L3 handoffs for fabric devices with IP transit, including adding, updating, and deleting configurations. -- Manage L3 handoffs for fabric devices with SDA transit, including adding, updating, and deleting configurations. + - Perform operations on SDA fabric devices, including adding, updating, and deleting fabric devices. + - Manage L2 handoffs for fabric devices, including adding and deleting configurations. + - Manage L3 handoffs for fabric devices with IP transit, including adding, updating, and deleting configurations. + - Manage L3 handoffs for fabric devices with SDA transit, including adding, updating, and deleting configurations. version_added: '6.21.0' extends_documentation_fragment: - cisco.dnac.workflow_manager_params @@ -26,7 +26,7 @@ config_verify: description: Set to True to verify the Cisco Catalyst Center after applying the playbook config. type: bool - default: False + default: false state: description: The state of Cisco Catalyst Center after module completion. type: str @@ -34,8 +34,8 @@ default: merged config: description: - - A list of SDA fabric device configurations associated with fabric sites. - - Each entry in the list represents the configurations for devices within a fabric site. + - A list of SDA fabric device configurations associated with fabric sites. + - Each entry in the list represents the configurations for devices within a fabric site. type: list elements: dict required: true @@ -46,12 +46,12 @@ suboptions: fabric_name: description: - - Name of the SDA fabric site. - - Mandatory parameter for all operations under fabric_devices. - - The fabric site must already be created before configuring devices. - - A Fabric Site is composed of networking devices operating in SD-Access Fabric roles. - - A fabric site consists of networking devices in SD-Access Fabric roles, including Border Nodes, Control Plane Nodes, and Edge Nodes. - - A Fabric sites may also include Fabric Wireless LAN Controllers and Fabric Wireless Access Points. + - Name of the SDA fabric site. + - Mandatory parameter for all operations under fabric_devices. + - The fabric site must already be created before configuring devices. + - A Fabric Site is composed of networking devices operating in SD-Access Fabric roles. + - A fabric site consists of networking devices in SD-Access Fabric roles, including Border Nodes, Control Plane Nodes, and Edge Nodes. + - A Fabric sites may also include Fabric Wireless LAN Controllers and Fabric Wireless Access Points. type: str required: true device_config: @@ -63,54 +63,54 @@ suboptions: device_ip: description: - - IP address of the device to be added to the fabric site. - - Mandatory parameter for all operations under fabric_devices. - - Device must be provisioned to the site prior to configuration. + - IP address of the device to be added to the fabric site. + - Mandatory parameter for all operations under fabric_devices. + - Device must be provisioned to the site prior to configuration. type: str required: true delete_fabric_device: description: - - Effective only when the state is deleted. - - Set to true to delete the device from the fabric site, or false to retain it. + - Effective only when the state is deleted. + - Set to true to delete the device from the fabric site, or false to retain it. type: bool device_roles: description: - - Specifies the role(s) of the device within the fabric site. - - This parameter is required when adding the device to the fabric site. - - The device roles cannot be updated once assigned. - - At least one device must be a CONTROL_PLANE_NODE to assign roles to other devices. - - Available roles, - - CONTROL_PLANE_NODE - Manages the mapping of endpoint IP addresses to their location - within the network using LISP, enabling mobility. - - EDGE_NODE - Connects endpoints to the SDA network, handling policy enforcement, - segmentation, and communication with the control plane. - - BORDER_NODE - Acts as the gateway between the fabric and external networks, - managing traffic entering or exiting the SDA environment. - - WIRELESS_CONTROLLER_NODE - Manages and controls wireless access points and - devices within the network. - - For 'WIRELESS_CONTROLLER_NODE', the check for the provisioning status will be added in 2.3.7.6 SDK. + - Specifies the role(s) of the device within the fabric site. + - This parameter is required when adding the device to the fabric site. + - The device roles cannot be updated once assigned. + - At least one device must be a CONTROL_PLANE_NODE to assign roles to other devices. + - Available roles, + - CONTROL_PLANE_NODE - Manages the mapping of endpoint IP addresses to their location + within the network using LISP, enabling mobility. + - EDGE_NODE - Connects endpoints to the SDA network, handling policy enforcement, + segmentation, and communication with the control plane. + - BORDER_NODE - Acts as the gateway between the fabric and external networks, + managing traffic entering or exiting the SDA environment. + - WIRELESS_CONTROLLER_NODE - Manages and controls wireless access points and + devices within the network. + - For 'WIRELESS_CONTROLLER_NODE', the check for the provisioning status will be added in 2.3.7.6 SDK. choices: [CONTROL_PLANE_NODE, EDGE_NODE, BORDER_NODE, WIRELESS_CONTROLLER_NODE] type: list elements: str route_distribution_protocol: description: - - Specifies the Route Distribution Protocol for the Control Plane Device. - - The route distribution protocol manages routing information across network segments. - - Available protocols, - - LISP_BGP - Location/ID Separation Protocol with a publish-subscribe mechanism - for distributing routing information. - - LISP_PUB_SUB - Location/ID Separation Protocol with BGP, where BGP serves as the control plane - to advertise and manage routing information within LISP networks. + - Specifies the Route Distribution Protocol for the Control Plane Device. + - The route distribution protocol manages routing information across network segments. + - Available protocols, + - LISP_BGP - Location/ID Separation Protocol with a publish-subscribe mechanism + for distributing routing information. + - LISP_PUB_SUB - Location/ID Separation Protocol with BGP, where BGP serves as the control plane + to advertise and manage routing information within LISP networks. choices: [LISP_BGP, LISP_PUB_SUB] default: LISP_BGP type: str borders_settings: description: - - Effective only when the 'device_roles' contains BORDER_NODE. - - This parameter is required when adding the device to a fabric site with the `BORDER_NODE` role. - - Updates to `borders_settings` are allowed after the initial configuration. - - Border type can be Layer2 or Layer3. - - Border type can be Layer2 or Layer3, identified based on the presence of L2 Handoff or L3 Handoff with IP or SDA transit. + - Effective only when the 'device_roles' contains BORDER_NODE. + - This parameter is required when adding the device to a fabric site with the `BORDER_NODE` role. + - Updates to `borders_settings` are allowed after the initial configuration. + - Border type can be Layer2 or Layer3. + - Border type can be Layer2 or Layer3, identified based on the presence of L2 Handoff or L3 Handoff with IP or SDA transit. type: dict suboptions: layer3_settings: @@ -120,201 +120,201 @@ suboptions: local_autonomous_system_number: description: - - Identifies the local autonomous system in BGP routing. - - This parameter is required when adding a device with the `BORDER_NODE` role. - - The `local_autonomous_system_number` cannot be updated once set. - - Acceptable range is from 1 to 4,294,967,295. - - Dot notation (1.0 to 65535.65535) is also allowed. For example, 65534.65535. + - Identifies the local autonomous system in BGP routing. + - This parameter is required when adding a device with the `BORDER_NODE` role. + - The `local_autonomous_system_number` cannot be updated once set. + - Acceptable range is from 1 to 4,294,967,295. + - Dot notation (1.0 to 65535.65535) is also allowed. For example, 65534.65535. type: str is_default_exit: description: - - Indicates whether this Border Node serves as the default gateway for traffic exiting the virtual network. - - The `is_default_exit` cannot be updated. + - Indicates whether this Border Node serves as the default gateway for traffic exiting the virtual network. + - The `is_default_exit` cannot be updated. type: bool default: true import_external_routes: description: - - Determines whether routes from external networks are imported into the fabric. - - Enhances security by limiting route usage to internal routes. - - The 'import_external_routes' cannot be updated. + - Determines whether routes from external networks are imported into the fabric. + - Enhances security by limiting route usage to internal routes. + - The 'import_external_routes' cannot be updated. type: bool default: true border_priority: description: - - Sets the preference level for this Border Node when multiple border nodes are present. - - Higher-priority nodes are favored for routing traffic to external networks. - - Acceptable range is from 1 to 9. If not set, the default value is 10. - - This parameter can be updated. + - Sets the preference level for this Border Node when multiple border nodes are present. + - Higher-priority nodes are favored for routing traffic to external networks. + - Acceptable range is from 1 to 9. If not set, the default value is 10. + - This parameter can be updated. type: int default: 10 prepend_autonomous_system_count: description: - - Increases the AS path length artificially when advertising routes via BGP. - - It makes the route less attractive to external peers. - - Acceptable range is from 1 to 10. If not set, the default value is 0. - - This parameter can be updated. + - Increases the AS path length artificially when advertising routes via BGP. + - It makes the route less attractive to external peers. + - Acceptable range is from 1 to 10. If not set, the default value is 0. + - This parameter can be updated. type: int default: 0 layer3_handoff_ip_transit: description: - - Adds layer 3 handoffs with ip transit in fabric devices. - - Configured when IP traffic is routed from the SDA fabric to external networks. - - If 'layer3_handoff_ip_transit' is set, border type will be considered as Layer3. + - Adds layer 3 handoffs with ip transit in fabric devices. + - Configured when IP traffic is routed from the SDA fabric to external networks. + - If 'layer3_handoff_ip_transit' is set, border type will be considered as Layer3. type: list elements: dict suboptions: transit_network_name: description: - - Network that connects multiple SDA fabrics or networks. - - Required for all operations in L3 Handoff with IP transit. - - It is not possible to update `transit_network_name` after initial configuration. + - Network that connects multiple SDA fabrics or networks. + - Required for all operations in L3 Handoff with IP transit. + - It is not possible to update `transit_network_name` after initial configuration. type: str interface_name: description: - - Refers to the specific network interface in the border device. - - This parameter is required for all operations in L3 Handoff with IP transit. - - This parameter cannot be updated after being set. + - Refers to the specific network interface in the border device. + - This parameter is required for all operations in L3 Handoff with IP transit. + - This parameter cannot be updated after being set. type: str external_connectivity_ip_pool_name: description: - - Denotes the IP address range allocated for communication between the SDA fabric and external networks. - - This parameter is required for adding the L3 Handoff with IP transit. - - The IP pool must be reserved in the fabric site. - - If `external_connectivity_ip_pool_name` is specified, there is no need to set the local and remote addresses. - - Specifying `external_connectivity_ip_pool_name` will automatically configure the local and remote addresses. - - If both are set, `external_connectivity_ip_pool_name` takes precedence. - - Updating IP addresses is not permitted. + - Denotes the IP address range allocated for communication between the SDA fabric and external networks. + - This parameter is required for adding the L3 Handoff with IP transit. + - The IP pool must be reserved in the fabric site. + - If `external_connectivity_ip_pool_name` is specified, there is no need to set the local and remote addresses. + - Specifying `external_connectivity_ip_pool_name` will automatically configure the local and remote addresses. + - If both are set, `external_connectivity_ip_pool_name` takes precedence. + - Updating IP addresses is not permitted. type: str virtual_network_name: description: - - Refers to the logical segmentation of the network, grouping devices into isolated virtual networks. - - Either `virtual_network_name` or `vlan_id` is required for all operations in L3 Handoff with IP transit. + - Refers to the logical segmentation of the network, grouping devices into isolated virtual networks. + - Either `virtual_network_name` or `vlan_id` is required for all operations in L3 Handoff with IP transit. type: str vlan_id: description: - - Unique identifier assigned to a Virtual Local Area Network (VLAN). - - Should be unique across the entire fabric site settings. - - The 'vlan_id' can range from 1 to 4094, excluding 1, 1002-1005, 2046, and 4094. - - Either `virtual_network_name` or `vlan_id` is required for all operations in L3 Handoff with IP transit. - - This parameter cannot be updated once set. + - Unique identifier assigned to a Virtual Local Area Network (VLAN). + - Should be unique across the entire fabric site settings. + - The 'vlan_id' can range from 1 to 4094, excluding 1, 1002-1005, 2046, and 4094. + - Either `virtual_network_name` or `vlan_id` is required for all operations in L3 Handoff with IP transit. + - This parameter cannot be updated once set. type: int tcp_mss_adjustment: description: - - Allows the modification of the Maximum Segment Size in TCP packets. - - The 'tcp_mss_adjustment' can be set from 500 to 1440. - - This parameter can be updated after being initially set. + - Allows the modification of the Maximum Segment Size in TCP packets. + - The 'tcp_mss_adjustment' can be set from 500 to 1440. + - This parameter can be updated after being initially set. type: int local_ip_address: description: - - IP address assigned to a device's interface within the fabric. - - The 'local_ip_address' is for IPv4. - - Both 'local_ip_address' and 'remote_ip_address' must fall within the same subnet. - - Either local and remote addresses or `external_connectivity_ip_pool_name` is required. - - If local and remote addresses are provided with 'external_connectivity_ip_pool_name', - `external_connectivity_ip_pool_name` takes precedence. + - IP address assigned to a device's interface within the fabric. + - The 'local_ip_address' is for IPv4. + - Both 'local_ip_address' and 'remote_ip_address' must fall within the same subnet. + - Either local and remote addresses or `external_connectivity_ip_pool_name` is required. + - If local and remote addresses are provided with 'external_connectivity_ip_pool_name', + `external_connectivity_ip_pool_name` takes precedence. type: str remote_ip_address: description: - - IP address of a device located outside the fabric network, often used for BGP peering. - - The 'remote_ip_address' is for IPv4. - - Both 'local_ip_address' and 'remote_ip_address' must fall within the same subnet. - - Either local and remote addresses or `external_connectivity_ip_pool_name` is required. - - If local and remote addresses are provided with 'external_connectivity_ip_pool_name', - `external_connectivity_ip_pool_name` takes precedence. + - IP address of a device located outside the fabric network, often used for BGP peering. + - The 'remote_ip_address' is for IPv4. + - Both 'local_ip_address' and 'remote_ip_address' must fall within the same subnet. + - Either local and remote addresses or `external_connectivity_ip_pool_name` is required. + - If local and remote addresses are provided with 'external_connectivity_ip_pool_name', + `external_connectivity_ip_pool_name` takes precedence. type: str local_ipv6_address: description: - - IP address assigned to a device's interface within the fabric. - - The local_ipv6_address is for IPv6. - - Both 'local_ipv6_address' and 'remote_ipv6_address' must fall within the same subnet. - - If 'remote_ipv6_address' is provided, then 'local_ipv6_address' is required. - - If local and remote addresses are provided with 'external_connectivity_ip_pool_name', - `external_connectivity_ip_pool_name` takes precedence. + - IP address assigned to a device's interface within the fabric. + - The local_ipv6_address is for IPv6. + - Both 'local_ipv6_address' and 'remote_ipv6_address' must fall within the same subnet. + - If 'remote_ipv6_address' is provided, then 'local_ipv6_address' is required. + - If local and remote addresses are provided with 'external_connectivity_ip_pool_name', + `external_connectivity_ip_pool_name` takes precedence. type: str remote_ipv6_address: description: - - IP address of a device located outside the fabric network, often used for BGP peering. - - The 'remote_ipv6_address' is for IPv6. - - Both 'local_ipv6_address' and 'remote_ipv6_address' must fall within the same subnet. - - If 'local_ipv6_address' is provided, then 'remote_ipv6_address' is required. - - If local and remote addresses are provided with 'external_connectivity_ip_pool_name', - `external_connectivity_ip_pool_name` takes precedence. + - IP address of a device located outside the fabric network, often used for BGP peering. + - The 'remote_ipv6_address' is for IPv6. + - Both 'local_ipv6_address' and 'remote_ipv6_address' must fall within the same subnet. + - If 'local_ipv6_address' is provided, then 'remote_ipv6_address' is required. + - If local and remote addresses are provided with 'external_connectivity_ip_pool_name', + `external_connectivity_ip_pool_name` takes precedence. type: str layer3_handoff_sda_transit: description: - - Adds layer 3 handoffs with SDA transit in fabric devices. - - Configured when routing traffic is routed from the SDA fabric to external networks. - - If 'layer3_handoff_sda_transit' is set, border type will be considered as Layer3. + - Adds layer 3 handoffs with SDA transit in fabric devices. + - Configured when routing traffic is routed from the SDA fabric to external networks. + - If 'layer3_handoff_sda_transit' is set, border type will be considered as Layer3. type: dict suboptions: transit_network_name: description: - - Network that connects multiple SDA fabrics or networks. - - This parameter is required for all operations in L3 Handoff with SDA transit. - - The transit_network_name cannot be updated. + - Network that connects multiple SDA fabrics or networks. + - This parameter is required for all operations in L3 Handoff with SDA transit. + - The transit_network_name cannot be updated. type: str affinity_id_prime: description: - - It supersedes the border priority to determine border node preference. - - The lower the relative value of 'affinity_id_prime', the higher the preference. - - Resources with the same affinity ID are treated similarly and affinity_id_decider decides the priority. - - The 'affinity_id_prime' ranges from 0 to 2147483647. - - The 'affinity_id_prime' can be updated. + - It supersedes the border priority to determine border node preference. + - The lower the relative value of 'affinity_id_prime', the higher the preference. + - Resources with the same affinity ID are treated similarly and affinity_id_decider decides the priority. + - The 'affinity_id_prime' ranges from 0 to 2147483647. + - The 'affinity_id_prime' can be updated. type: int affinity_id_decider: description: - - If the 'affinity_id_prime' value is the same, the 'affinity_id_decider' value is used as a tiebreaker. - - The lower the relative value of 'affinity_id_decider', the higher the preference. - - The 'affinity_id_decider' ranges from 0 to 2147483647. - - The 'affinity_id_decider' can be updated. + - If the 'affinity_id_prime' value is the same, the 'affinity_id_decider' value is used as a tiebreaker. + - The lower the relative value of 'affinity_id_decider', the higher the preference. + - The 'affinity_id_decider' ranges from 0 to 2147483647. + - The 'affinity_id_decider' can be updated. type: int connected_to_internet: description: - - Set this true to allow associated site to provide internet access to other sites through SDA. - - Default value is false. - - This parameter can be updated. + - Set this true to allow associated site to provide internet access to other sites through SDA. + - Default value is false. + - This parameter can be updated. type: bool default: false is_multicast_over_transit_enabled: description: - - Set this true to configure native multicast over multiple sites that are connected to an SDA transit. - - Default value is false. - - This parameter can be updated. + - Set this true to configure native multicast over multiple sites that are connected to an SDA transit. + - Default value is false. + - This parameter can be updated. type: bool default: false layer2_handoff: description: - - Adds layer 2 handoffs in fabric devices. - - This parameter cannots be updated. - - Configured while transferring a device's data traffic at Layer 2 (Data Link layer). - - If 'layer2_handoff' is set, the border type will be considered as Layer2. + - Adds layer 2 handoffs in fabric devices. + - This parameter cannots be updated. + - Configured while transferring a device's data traffic at Layer 2 (Data Link layer). + - If 'layer2_handoff' is set, the border type will be considered as Layer2. type: list elements: dict suboptions: interface_name: description: - - Refers to the specific network interface in the border device. - - This parameter is required for all operations in L2 Handoff. - - The 'interface_name' cannot be updated. + - Refers to the specific network interface in the border device. + - This parameter is required for all operations in L2 Handoff. + - The 'interface_name' cannot be updated. type: str internal_vlan_id: description: - - Represents the VLAN identifier used within the fabric for traffic segmentation among devices. - - Should be unique across the entire fabric site settings. - - This parameter is required for all operations in layer2_handoff. - - The 'internal_vlan_id' can range from 1 to 4094, excluding 1, 1002-1005, 2046, and 4094. + - Represents the VLAN identifier used within the fabric for traffic segmentation among devices. + - Should be unique across the entire fabric site settings. + - This parameter is required for all operations in layer2_handoff. + - The 'internal_vlan_id' can range from 1 to 4094, excluding 1, 1002-1005, 2046, and 4094. type: int external_vlan_id: description: - - Represents to the VLAN identifier used for traffic that exits the fabric to external networks. - - Should be unique across the entire fabric site settings. - - This parameter is required for all operations in 'layer2_handoff'. - - The 'external_vlan_id' can range from 1 to 4094, excluding 1, 1002-1005, 2046, and 4094. + - Represents to the VLAN identifier used for traffic that exits the fabric to external networks. + - Should be unique across the entire fabric site settings. + - This parameter is required for all operations in 'layer2_handoff'. + - The 'external_vlan_id' can range from 1 to 4094, excluding 1, 1002-1005, 2046, and 4094. type: int requirements: -- dnacentersdk >= 2.9.2 -- python >= 3.9 + - dnacentersdk >= 2.9.2 + - python >= 3.9 notes: - SDK Method used are site_design.SiteDesign.get_sites, From b63863043ed43b65b7927cc621e6f31b17b752db Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Thu, 28 Nov 2024 14:41:32 +0530 Subject: [PATCH 20/34] Add space after - to fix sanity errors --- plugins/modules/template_workflow_manager.py | 72 ++++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/plugins/modules/template_workflow_manager.py b/plugins/modules/template_workflow_manager.py index 0835b7220c..32ab9c9aef 100644 --- a/plugins/modules/template_workflow_manager.py +++ b/plugins/modules/template_workflow_manager.py @@ -14,14 +14,14 @@ module: template_workflow_manager short_description: Resource module for Template functions description: -- Manage operations create, update and delete of the resource Configuration Template. -- API to create a template by project name and template name. -- API to update a template by template name and project name. -- API to delete a template by template name and project name. -- API to export the projects for given projectNames. -- API to export the templates for given templateIds. -- API to manage operation create of the resource Configuration Template Import Project. -- API to manage operation create of the resource Configuration Template Import Template. + - Manage operations create, update and delete of the resource Configuration Template. + - API to create a template by project name and template name. + - API to update a template by template name and project name. + - API to delete a template by template name and project name. + - API to export the projects for given projectNames. + - API to export the templates for given templateIds. + - API to manage operation create of the resource Configuration Template Import Project. + - API to manage operation create of the resource Configuration Template Import Template. version_added: '6.6.0' extends_documentation_fragment: - cisco.dnac.workflow_manager_params @@ -38,11 +38,11 @@ state: description: The state of Cisco Catalyst Center after module completion. type: str - choices: [ merged, deleted ] + choices: [merged, deleted] default: merged config: description: - - List of details of templates being managed. + - List of details of templates being managed. type: list elements: dict required: true @@ -59,9 +59,9 @@ type: bool containing_templates: description: - - Refer to a set of templates within the main template to define more complex or modular configurations. - - This is particularly useful in systems that support hierarchical or nested templates. - - Here parent templates may contain child templates to form a complete configuration. + - Refer to a set of templates within the main template to define more complex or modular configurations. + - This is particularly useful in systems that support hierarchical or nested templates. + - Here parent templates may contain child templates to form a complete configuration. suboptions: composite: description: Specifies if the template is composite. @@ -252,8 +252,8 @@ type: str failure_policy: description: - - Define failure policy if template provisioning fails. - - failure_policy will be enabled only when the composite is set to True. + - Define failure policy if template provisioning fails. + - failure_policy will be enabled only when the composite is set to True. choices: - ABORT_TARGET_ON_ERROR type: str @@ -424,22 +424,22 @@ suboptions: do_version: description: - - Determines whether to create a new version of the project with the imported contents. - - If set to true and the project already exists, a new version will be created. - - If false, the operation will fail with a 'Project already exists' error if the project already exists. + - Determines whether to create a new version of the project with the imported contents. + - If set to true and the project already exists, a new version will be created. + - If false, the operation will fail with a 'Project already exists' error if the project already exists. type: bool project_file: description: - - Specifies the path to a JSON file that contains the import project configuration. - - If both 'project_file' and 'payload' are provided, the 'project_file' will be given priority. + - Specifies the path to a JSON file that contains the import project configuration. + - If both 'project_file' and 'payload' are provided, the 'project_file' will be given priority. type: str version_added: 6.17.0 payload: description: - - Directly imports configuration data into the system using the provided payload. - - Offers an alternative to 'project_file' for importing configurations without referencing an external file. - - Ignored if 'project_file' is also provided. - type: list + - Directly imports configuration data into the system using the provided payload. + - Offers an alternative to 'project_file' for importing configurations without referencing an external file. + - Ignored if 'project_file' is also provided. + type: list elements: dict suboptions: name: @@ -457,14 +457,14 @@ type: bool template_file: description: - - Specifies the path to a JSON file that contains an import template. - - If both 'template_file' and 'payload' are provided, the 'template_file' will be given priority. + - Specifies the path to a JSON file that contains an import template. + - If both 'template_file' and 'payload' are provided, the 'template_file' will be given priority. type: str payload: description: - - The payload parameter is used to directly import configuration data into the system. - - The payload provides an alternative way to import configurations without the need to reference an external file. - - If both 'template_file' and 'payload' are provided, the 'template_file' will be given priority. + - The payload parameter is used to directly import configuration data into the system. + - The payload provides an alternative way to import configurations without the need to reference an external file. + - If both 'template_file' and 'payload' are provided, the 'template_file' will be given priority. type: list elements: dict suboptions: @@ -476,9 +476,9 @@ type: bool containing_templates: description: - - Refer to a set of templates within the main template to define more complex or modular configurations. - - This is particularly useful in systems that support hierarchical or nested templates. - - Here parent templates may contain child templates to form a complete configuration. + - Refer to a set of templates within the main template to define more complex or modular configurations. + - This is particularly useful in systems that support hierarchical or nested templates. + - Here parent templates may contain child templates to form a complete configuration. suboptions: composite: description: Specifies if the template is composite. @@ -666,8 +666,8 @@ type: str failure_policy: description: - - Define failure policy if template provisioning fails. - - failure_policy will be enabled only when the composite is set to True. + - Define failure policy if template provisioning fails. + - failure_policy will be enabled only when the composite is set to True. choices: - ABORT_TARGET_ON_ERROR type: str @@ -885,8 +885,8 @@ requirements: -- dnacentersdk >= 2.7.2 -- python >= 3.9 + - dnacentersdk >= 2.7.2 + - python >= 3.9 notes: - SDK Method used are configuration_templates.ConfigurationTemplates.create_template, From a93967c97a2e5d29022243d5400e869cb9887e38 Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Thu, 28 Nov 2024 14:51:49 +0530 Subject: [PATCH 21/34] revert the space after - --- plugins/modules/template_workflow_manager.py | 70 ++++++++++---------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/plugins/modules/template_workflow_manager.py b/plugins/modules/template_workflow_manager.py index 32ab9c9aef..f21b38900c 100644 --- a/plugins/modules/template_workflow_manager.py +++ b/plugins/modules/template_workflow_manager.py @@ -14,14 +14,14 @@ module: template_workflow_manager short_description: Resource module for Template functions description: - - Manage operations create, update and delete of the resource Configuration Template. - - API to create a template by project name and template name. - - API to update a template by template name and project name. - - API to delete a template by template name and project name. - - API to export the projects for given projectNames. - - API to export the templates for given templateIds. - - API to manage operation create of the resource Configuration Template Import Project. - - API to manage operation create of the resource Configuration Template Import Template. +- Manage operations create, update and delete of the resource Configuration Template. +- API to create a template by project name and template name. +- API to update a template by template name and project name. +- API to delete a template by template name and project name. +- API to export the projects for given projectNames. +- API to export the templates for given templateIds. +- API to manage operation create of the resource Configuration Template Import Project. +- API to manage operation create of the resource Configuration Template Import Template. version_added: '6.6.0' extends_documentation_fragment: - cisco.dnac.workflow_manager_params @@ -42,7 +42,7 @@ default: merged config: description: - - List of details of templates being managed. + - List of details of templates being managed. type: list elements: dict required: true @@ -59,9 +59,9 @@ type: bool containing_templates: description: - - Refer to a set of templates within the main template to define more complex or modular configurations. - - This is particularly useful in systems that support hierarchical or nested templates. - - Here parent templates may contain child templates to form a complete configuration. + - Refer to a set of templates within the main template to define more complex or modular configurations. + - This is particularly useful in systems that support hierarchical or nested templates. + - Here parent templates may contain child templates to form a complete configuration. suboptions: composite: description: Specifies if the template is composite. @@ -252,8 +252,8 @@ type: str failure_policy: description: - - Define failure policy if template provisioning fails. - - failure_policy will be enabled only when the composite is set to True. + - Define failure policy if template provisioning fails. + - failure_policy will be enabled only when the composite is set to True. choices: - ABORT_TARGET_ON_ERROR type: str @@ -424,22 +424,22 @@ suboptions: do_version: description: - - Determines whether to create a new version of the project with the imported contents. - - If set to true and the project already exists, a new version will be created. - - If false, the operation will fail with a 'Project already exists' error if the project already exists. + - Determines whether to create a new version of the project with the imported contents. + - If set to true and the project already exists, a new version will be created. + - If false, the operation will fail with a 'Project already exists' error if the project already exists. type: bool project_file: description: - - Specifies the path to a JSON file that contains the import project configuration. - - If both 'project_file' and 'payload' are provided, the 'project_file' will be given priority. + - Specifies the path to a JSON file that contains the import project configuration. + - If both 'project_file' and 'payload' are provided, the 'project_file' will be given priority. type: str version_added: 6.17.0 payload: description: - - Directly imports configuration data into the system using the provided payload. - - Offers an alternative to 'project_file' for importing configurations without referencing an external file. - - Ignored if 'project_file' is also provided. - type: list + - Directly imports configuration data into the system using the provided payload. + - Offers an alternative to 'project_file' for importing configurations without referencing an external file. + - Ignored if 'project_file' is also provided. + type: list elements: dict suboptions: name: @@ -457,14 +457,14 @@ type: bool template_file: description: - - Specifies the path to a JSON file that contains an import template. - - If both 'template_file' and 'payload' are provided, the 'template_file' will be given priority. + - Specifies the path to a JSON file that contains an import template. + - If both 'template_file' and 'payload' are provided, the 'template_file' will be given priority. type: str payload: description: - - The payload parameter is used to directly import configuration data into the system. - - The payload provides an alternative way to import configurations without the need to reference an external file. - - If both 'template_file' and 'payload' are provided, the 'template_file' will be given priority. + - The payload parameter is used to directly import configuration data into the system. + - The payload provides an alternative way to import configurations without the need to reference an external file. + - If both 'template_file' and 'payload' are provided, the 'template_file' will be given priority. type: list elements: dict suboptions: @@ -476,9 +476,9 @@ type: bool containing_templates: description: - - Refer to a set of templates within the main template to define more complex or modular configurations. - - This is particularly useful in systems that support hierarchical or nested templates. - - Here parent templates may contain child templates to form a complete configuration. + - Refer to a set of templates within the main template to define more complex or modular configurations. + - This is particularly useful in systems that support hierarchical or nested templates. + - Here parent templates may contain child templates to form a complete configuration. suboptions: composite: description: Specifies if the template is composite. @@ -666,8 +666,8 @@ type: str failure_policy: description: - - Define failure policy if template provisioning fails. - - failure_policy will be enabled only when the composite is set to True. + - Define failure policy if template provisioning fails. + - failure_policy will be enabled only when the composite is set to True. choices: - ABORT_TARGET_ON_ERROR type: str @@ -885,8 +885,8 @@ requirements: - - dnacentersdk >= 2.7.2 - - python >= 3.9 +- dnacentersdk >= 2.7.2 +- python >= 3.9 notes: - SDK Method used are configuration_templates.ConfigurationTemplates.create_template, From 933beff5646f577e38773b7c36950ab5b8b9189e Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Thu, 28 Nov 2024 14:58:41 +0530 Subject: [PATCH 22/34] fix sanity errors --- plugins/modules/template_workflow_manager.py | 70 ++++++++++---------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/plugins/modules/template_workflow_manager.py b/plugins/modules/template_workflow_manager.py index f21b38900c..b5fc0b1edf 100644 --- a/plugins/modules/template_workflow_manager.py +++ b/plugins/modules/template_workflow_manager.py @@ -14,14 +14,14 @@ module: template_workflow_manager short_description: Resource module for Template functions description: -- Manage operations create, update and delete of the resource Configuration Template. -- API to create a template by project name and template name. -- API to update a template by template name and project name. -- API to delete a template by template name and project name. -- API to export the projects for given projectNames. -- API to export the templates for given templateIds. -- API to manage operation create of the resource Configuration Template Import Project. -- API to manage operation create of the resource Configuration Template Import Template. + - Manage operations create, update and delete of the resource Configuration Template. + - API to create a template by project name and template name. + - API to update a template by template name and project name. + - API to delete a template by template name and project name. + - API to export the projects for given projectNames. + - API to export the templates for given templateIds. + - API to manage operation create of the resource Configuration Template Import Project. + - API to manage operation create of the resource Configuration Template Import Template. version_added: '6.6.0' extends_documentation_fragment: - cisco.dnac.workflow_manager_params @@ -34,7 +34,7 @@ config_verify: description: Set to True to verify the Cisco Catalyst Center after applying the playbook config. type: bool - default: False + default: false state: description: The state of Cisco Catalyst Center after module completion. type: str @@ -42,7 +42,7 @@ default: merged config: description: - - List of details of templates being managed. + - List of details of templates being managed. type: list elements: dict required: true @@ -59,9 +59,9 @@ type: bool containing_templates: description: - - Refer to a set of templates within the main template to define more complex or modular configurations. - - This is particularly useful in systems that support hierarchical or nested templates. - - Here parent templates may contain child templates to form a complete configuration. + - Refer to a set of templates within the main template to define more complex or modular configurations. + - This is particularly useful in systems that support hierarchical or nested templates. + - Here parent templates may contain child templates to form a complete configuration. suboptions: composite: description: Specifies if the template is composite. @@ -252,8 +252,8 @@ type: str failure_policy: description: - - Define failure policy if template provisioning fails. - - failure_policy will be enabled only when the composite is set to True. + - Define failure policy if template provisioning fails. + - failure_policy will be enabled only when the composite is set to True. choices: - ABORT_TARGET_ON_ERROR type: str @@ -424,21 +424,21 @@ suboptions: do_version: description: - - Determines whether to create a new version of the project with the imported contents. - - If set to true and the project already exists, a new version will be created. - - If false, the operation will fail with a 'Project already exists' error if the project already exists. + - Determines whether to create a new version of the project with the imported contents. + - If set to true and the project already exists, a new version will be created. + - If false, the operation will fail with a 'Project already exists' error if the project already exists. type: bool project_file: description: - - Specifies the path to a JSON file that contains the import project configuration. - - If both 'project_file' and 'payload' are provided, the 'project_file' will be given priority. + - Specifies the path to a JSON file that contains the import project configuration. + - If both 'project_file' and 'payload' are provided, the 'project_file' will be given priority. type: str version_added: 6.17.0 payload: description: - - Directly imports configuration data into the system using the provided payload. - - Offers an alternative to 'project_file' for importing configurations without referencing an external file. - - Ignored if 'project_file' is also provided. + - Directly imports configuration data into the system using the provided payload. + - Offers an alternative to 'project_file' for importing configurations without referencing an external file. + - Ignored if 'project_file' is also provided. type: list elements: dict suboptions: @@ -457,14 +457,14 @@ type: bool template_file: description: - - Specifies the path to a JSON file that contains an import template. - - If both 'template_file' and 'payload' are provided, the 'template_file' will be given priority. + - Specifies the path to a JSON file that contains an import template. + - If both 'template_file' and 'payload' are provided, the 'template_file' will be given priority. type: str payload: description: - - The payload parameter is used to directly import configuration data into the system. - - The payload provides an alternative way to import configurations without the need to reference an external file. - - If both 'template_file' and 'payload' are provided, the 'template_file' will be given priority. + - The payload parameter is used to directly import configuration data into the system. + - The payload provides an alternative way to import configurations without the need to reference an external file. + - If both 'template_file' and 'payload' are provided, the 'template_file' will be given priority. type: list elements: dict suboptions: @@ -476,9 +476,9 @@ type: bool containing_templates: description: - - Refer to a set of templates within the main template to define more complex or modular configurations. - - This is particularly useful in systems that support hierarchical or nested templates. - - Here parent templates may contain child templates to form a complete configuration. + - Refer to a set of templates within the main template to define more complex or modular configurations. + - This is particularly useful in systems that support hierarchical or nested templates. + - Here parent templates may contain child templates to form a complete configuration. suboptions: composite: description: Specifies if the template is composite. @@ -666,8 +666,8 @@ type: str failure_policy: description: - - Define failure policy if template provisioning fails. - - failure_policy will be enabled only when the composite is set to True. + - Define failure policy if template provisioning fails. + - failure_policy will be enabled only when the composite is set to True. choices: - ABORT_TARGET_ON_ERROR type: str @@ -885,8 +885,8 @@ requirements: -- dnacentersdk >= 2.7.2 -- python >= 3.9 + - dnacentersdk >= 2.7.2 + - python >= 3.9 notes: - SDK Method used are configuration_templates.ConfigurationTemplates.create_template, From c207857391fcdbf41c411984b8f764e633bc3fab Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Thu, 28 Nov 2024 15:05:28 +0530 Subject: [PATCH 23/34] fix sanity for fabric site module --- .../sda_fabric_sites_zones_workflow_manager.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/modules/sda_fabric_sites_zones_workflow_manager.py b/plugins/modules/sda_fabric_sites_zones_workflow_manager.py index bf7c9719f1..54cecd21d3 100644 --- a/plugins/modules/sda_fabric_sites_zones_workflow_manager.py +++ b/plugins/modules/sda_fabric_sites_zones_workflow_manager.py @@ -30,11 +30,11 @@ config_verify: description: Set to True to verify the Cisco Catalyst Center configuration after applying the playbook configuration. type: bool - default: False + default: false state: description: The desired state of Cisco Catalyst Center after the module execution. type: str - choices: [ merged, deleted ] + choices: [merged, deleted] default: merged config: description: A list containing detailed configurations for creating, updating, or deleting fabric sites or zones @@ -44,7 +44,7 @@ to authentication profiles. type: list elements: dict - required: True + required: true suboptions: fabric_sites: description: A dictionary containing detailed configurations for managing REST Endpoints that will receive Audit log @@ -57,13 +57,13 @@ sites or zones, as well as for updating the authentication profile template. This parameter is mandatory for any fabric site/zone management operation. type: str - required: True + required: true fabric_type: description: Specifies the type of site to be managed within the SDA environment. The acceptable values are 'fabric_site' and 'fabric_zone'. The default value is 'fabric_site', indicating the configuration of a broader network area, whereas 'fabric_zone' typically refers to a more specific segment within the site. type: str - required: True + required: true authentication_profile: description: The authentication profile applied to the specified fabric. This profile determines the security posture and controls for network access within the site. Possible values include 'Closed Authentication', 'Low Impact', @@ -107,8 +107,8 @@ requirements: -- dnacentersdk >= 2.9.2 -- python >= 3.9 + - dnacentersdk >= 2.9.2 + - python >= 3.9 notes: - To ensure the module operates correctly for scaled sets, which involve creating or updating fabric sites/zones and handling From ffa779984aabd5465bd1722fae015b3df675a7f7 Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Thu, 28 Nov 2024 15:10:56 +0530 Subject: [PATCH 24/34] fix sanity --- .../sda_fabric_sites_zones_workflow_manager.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/modules/sda_fabric_sites_zones_workflow_manager.py b/plugins/modules/sda_fabric_sites_zones_workflow_manager.py index 54cecd21d3..7862cb4819 100644 --- a/plugins/modules/sda_fabric_sites_zones_workflow_manager.py +++ b/plugins/modules/sda_fabric_sites_zones_workflow_manager.py @@ -14,13 +14,13 @@ module: sda_fabric_sites_zones_workflow_manager short_description: Manage fabric site(s)/zone(s) and update the authentication profile template in Cisco Catalyst Center. description: -- Creating fabric site(s) for the SDA operation in Cisco Catalyst Center. -- Updating fabric site(s) for the SDA operation in Cisco Catalyst Center. -- Creating fabric zone(s) for the SDA operation in Cisco Catalyst Center. -- Updating fabric zone(s) for the SDA operation in Cisco Catalyst Center. -- Deletes fabric site(s) from Cisco Catalyst Center. -- Deletes fabric zone(s) from Cisco Catalyst Center. -- Configure the authentication profile template for fabric site/zone in Cisco Catalyst Center. + - Creating fabric site(s) for the SDA operation in Cisco Catalyst Center. + - Updating fabric site(s) for the SDA operation in Cisco Catalyst Center. + - Creating fabric zone(s) for the SDA operation in Cisco Catalyst Center. + - Updating fabric zone(s) for the SDA operation in Cisco Catalyst Center. + - Deletes fabric site(s) from Cisco Catalyst Center. + - Deletes fabric zone(s) from Cisco Catalyst Center. + - Configure the authentication profile template for fabric site/zone in Cisco Catalyst Center. version_added: '6.17.0' extends_documentation_fragment: - cisco.dnac.workflow_manager_params From 885d7720cd1bd4669a7d6252ce55388b6521d5af Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Thu, 28 Nov 2024 15:20:07 +0530 Subject: [PATCH 25/34] revert readme changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0b1c7a8964..aafbc2f9ad 100644 --- a/README.md +++ b/README.md @@ -210,4 +210,4 @@ Please read and familiarize yourself with this document. This collection follows [Semantic Versioning](https://semver.org/). More details on versioning can be found [in the Ansible docs](https://docs.ansible.com/ansible/latest/dev_guide/developing_collections.html#collection-versions). -New minor and major releases as well as deprecations will follow new releases and deprecations of the Cisco DNA Center product, its REST API and the corresponding Python SDK, which this project relies on. +New minor and major releases as well as deprecations will follow new releases and deprecations of the Cisco DNA Center product, its REST API and the corresponding Python SDK, which this project relies on. From af546a3992c08bedbd763b6a237ce097f6f317d7 Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Thu, 28 Nov 2024 16:34:18 +0530 Subject: [PATCH 26/34] Update the log messages --- .../sda_fabric_sites_zones_workflow_manager.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/plugins/modules/sda_fabric_sites_zones_workflow_manager.py b/plugins/modules/sda_fabric_sites_zones_workflow_manager.py index 7862cb4819..0d9630006d 100644 --- a/plugins/modules/sda_fabric_sites_zones_workflow_manager.py +++ b/plugins/modules/sda_fabric_sites_zones_workflow_manager.py @@ -1340,14 +1340,17 @@ def get_diff_merged(self, config): # Create/Update Fabric sites/zones in Cisco Catalyst Center raw_fabric_sites = self.want.get('fabric_sites') # Preserve the order of input while deduplicating + self.log("Starting deduplication of raw_fabric_sites.", "DEBUG") unique_fabric_site_set = set() fabric_sites = [] for fabric_site_dict in raw_fabric_sites: # Convert dictionary to a frozenset - immutable set site_zone = frozenset(fabric_site_dict.items()) if site_zone not in unique_fabric_site_set: + self.log("New unique site found: '{0}'".format(site_zone), "DEBUG") unique_fabric_site_set.add(site_zone) fabric_sites.append(fabric_site_dict) + self.log("Deduplication complete. Total unique sites: {0}".format(len(fabric_sites)), "DEBUG") for site in fabric_sites: site_name = site.get("site_name_hierarchy") @@ -1502,7 +1505,20 @@ def get_diff_deleted(self, config): self.set_operation_result("failed", False, self.msg, "ERROR") return self - fabric_sites = self.want.get('fabric_sites') + raw_fabric_sites = self.want.get('fabric_sites') + # Preserve the order of input while deduplicating + self.log("Starting deduplication of raw_fabric_sites.", "DEBUG") + unique_fabric_site_set = set() + fabric_sites = [] + for fabric_site_dict in raw_fabric_sites: + # Convert dictionary to a frozenset - immutable set + site_zone = frozenset(fabric_site_dict.items()) + if site_zone not in unique_fabric_site_set: + self.log("New unique site found: '{0}'".format(site_zone), "DEBUG") + unique_fabric_site_set.add(site_zone) + fabric_sites.append(fabric_site_dict) + + self.log("Deduplication complete. Total unique sites: {0}".format(len(fabric_sites)), "DEBUG") fabric_site_dict = {} for site in fabric_sites: From de7180a0dae9ba87d69aa415bcf5d34977a39946 Mon Sep 17 00:00:00 2001 From: md-rafeek Date: Fri, 29 Nov 2024 19:01:40 +0530 Subject: [PATCH 27/34] power_level changed --- .../modules/accesspoint_workflow_manager.py | 75 ++++++++++--------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/plugins/modules/accesspoint_workflow_manager.py b/plugins/modules/accesspoint_workflow_manager.py index 5487734041..f83e8772d9 100644 --- a/plugins/modules/accesspoint_workflow_manager.py +++ b/plugins/modules/accesspoint_workflow_manager.py @@ -252,7 +252,7 @@ description: Mode of power assignment for the 2.4GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str required: false - powerlevel: + power_level: description: Custom power level configured for the 2.4GHz radio interface. For example, 3. type: int required: false @@ -303,7 +303,7 @@ description: Mode of power assignment for the 5GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str required: false - powerlevel: + power_level: description: Custom power level configured for the 5GHz radio interface. For example, 3. type: int required: false @@ -352,7 +352,7 @@ description: Mode of power assignment for the 6GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str required: false - powerlevel: + power_level: description: Custom power level configured for the 6GHz radio interface. For example, 3. type: int required: false @@ -433,7 +433,7 @@ In "Custom" mode, valid values range from 1 to 8. type: str required: false - powerlevel: + power_level: description: Custom power level configured for the XOR radio interface. For example, 3. type: int required: false @@ -495,7 +495,7 @@ In Custom, it accepts values 1 to 8. type: str required: false - powerlevel: + power_level: description: Custom power level configured for the TRI radio interface. For example, 3. type: int required: false @@ -768,7 +768,7 @@ description: Mode of power assignment for the 2.4GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str required: false - powerlevel: + power_level: description: Custom power level configured for the 2.4GHz radio interface. For example, 3. type: int required: false @@ -819,7 +819,7 @@ description: Mode of power assignment for the 5GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str required: false - powerlevel: + power_level: description: Custom power level configured for the 5GHz radio interface. For example, 3. type: int required: false @@ -868,7 +868,7 @@ description: Mode of power assignment for the 6GHz radio interface. Accepts "Global" or "Custom". For example, "Custom". type: str required: false - powerlevel: + power_level: description: Custom power level configured for the 6GHz radio interface. For example, 3. type: int required: false @@ -949,7 +949,7 @@ In "Custom" mode, valid values range from 1 to 8. type: str required: false - powerlevel: + power_level: description: Custom power level configured for the XOR radio interface. For example, 3. type: int required: false @@ -1011,7 +1011,7 @@ In Custom, it accepts values 1 to 8. type: str required: false - powerlevel: + power_level: description: Custom power level configured for the TRI radio interface. For example, 3. type: int required: false @@ -1083,7 +1083,7 @@ admin_status: "Enabled" antenna_name: "AIR-ANT2513P4M-N-2.4GHz" radio_role_assignment: "Client-Serving" - powerlevel: 5 + power_level: 5 channel_number: 7 register: output_list @@ -1188,7 +1188,7 @@ admin_status: "Enabled" antenna_name: "C-ANT9104-Single-D0-5GHz" channel_number: 52 - powerlevel: 5 + power_level: 5 channel_width: "40 MHz" register: output_list @@ -1211,12 +1211,12 @@ admin_status: "Enabled" antenna_name: "C-ANT9103-2.4GHz" channel_number: 9 - powerlevel: 4 + power_level: 4 5ghz_radio: admin_status: "Enabled" antenna_name: "C-ANT9103-5GHz" channel_number: 40 - powerlevel: 3 + power_level: 3 channel_width: "20 MHz" register: output_list @@ -1338,13 +1338,13 @@ antenna_name: "C-ANT9104-2.4GHz" radio_role_assignment: "Client-Serving" channel_number: 5 - powerlevel: 2 + power_level: 2 5ghz_radio: admin_status: "Enabled" antenna_name: "AIR-ANT2513P4M-N-5GHz" radio_role_assignment: "Client-Serving" channel_number: 36 - powerlevel: 2 + power_level: 2 channel_width: "40 MHz" register: output_list @@ -1386,7 +1386,7 @@ antenna_name: "AIR-ANT2513P4M-N-5GHz" radio_role_assignment: "Client-Serving" channel_number: 40 - powerlevel: 2 + power_level: 2 channel_width: "80 MHz" register: output_list @@ -1421,18 +1421,18 @@ admin_status: "Enabled" radio_role_assignment: "Client-Serving" channel_number: 3 - powerlevel: 3 + power_level: 3 5ghz_radio: admin_status: "Enabled" radio_role_assignment: "Client-Serving" channel_number: 44 - powerlevel: 3 + power_level: 3 channel_width: "20 MHz" xor_radio: admin_status: "Enabled" radio_role_assignment: "Client-Serving" channel_number: 1 - powerlevel: 3 + power_level: 3 radio_band: "6 GHz" channel_width: "40 MHz" register: output_list @@ -1762,7 +1762,7 @@ def validate_input_yml(self): "channel_assignment_mode": {"required": False, "type": "str"}, "channel_number": {"required": False, "type": "int"}, "power_assignment_mode": {"required": False, "type": "str"}, - "powerlevel": {"required": False, "type": "int", "range_min": 1, "range_max": 8}, + "power_level": {"required": False, "type": "int", "range_min": 1, "range_max": 8}, "channel_width": {"required": False, "type": "str"}, "radio_band": {"required": False, "type": "str"} } @@ -2001,7 +2001,7 @@ def ap_update_required(self): "primary_controller_name", "primary_ip_address", "secondary_controller_name", "address", "secondary_ip_address", "tertiary_controller_name", "tertiary_ip_address", "2.4ghz_radio", "antenna_name", "radio_role_assignment", "cable_loss", "antenna_cable_name", - "channel_assignment_mode", "channel_number", "power_assignment_mode", "powerlevel", + "channel_assignment_mode", "channel_number", "power_assignment_mode", "power_level", "antenna_gain", "channel_width", "5ghz_radio", "6ghz_radio", "xor_radio", "radio_band", "tri_radio", "dual_radio_mode" ] @@ -2445,6 +2445,7 @@ def validate_radio_parameters(self, radio_config, radio_series, errormsg): radio_config["radio_type"] = radio_type_map[radio_series] self.want[radio_series]["radio_type"] = radio_config["radio_type"] self.keymap["radio_type"] = "radioType" + self.keymap["power_level"] = "powerlevel" radio_band = radio_config.get("radio_band") antenna_name = radio_config.get("antenna_name") @@ -2521,19 +2522,19 @@ def validate_radio_parameters(self, radio_config, radio_series, errormsg): errormsg.append("power_assignment_mode: Invalid value '{0}' for Power assignment mode in playbook. Must be either 'Global' or 'Custom'." .format(power_assignment_mode)) - powerlevel = radio_config.get("powerlevel") - if powerlevel: - if powerlevel not in range(1, 9): + power_level = radio_config.get("power_level") + if power_level: + if power_level not in range(1, 9): errormsg.append( - "powerlevel: Invalid Power level '{0}' in playbook. Must be between 1 to 8." - .format(powerlevel) + "power_level: Invalid Power level '{0}' in playbook. Must be between 1 to 8." + .format(power_level) ) else: current_radio_role = self.check_current_radio_role_assignment( radio_series, self.have["current_ap_config"].get("radio_dtos", []), radio_band) if self.want.get(radio_series).get("radio_role_assignment") != "Client-Serving" and radio_series != "5ghz_radio": errormsg.append( - "powerlevel: This configuration is only supported with Client-Serving Radio Role Assignment {0} " + "power_level: This configuration is only supported with Client-Serving Radio Role Assignment {0} " .format(current_radio_role) ) @@ -3236,22 +3237,22 @@ def compare_radio_config(self, current_radio, want_radio): self.log("Desired radio configuration: {}".format(want_radio), "INFO") available_key = { "_0": ("admin_status", "antenna_gain", "antenna_name", "radio_role_assignment", - "power_assignment_mode", "powerlevel", "channel_assignment_mode", + "power_assignment_mode", "power_level", "channel_assignment_mode", "channel_number", "cable_loss", "antenna_cable_name", "radio_type", "radio_band"), "_1": ("admin_status", "antenna_gain", "antenna_name", "radio_role_assignment", - "power_assignment_mode", "powerlevel", "channel_assignment_mode", + "power_assignment_mode", "power_level", "channel_assignment_mode", "channel_number", "cable_loss", "antenna_cable_name", "channel_width", "radio_type", "radio_band", "dual_radio_mode"), "_2": ("admin_status", "radio_role_assignment", "radio_type", - "power_assignment_mode", "powerlevel", "channel_assignment_mode", + "power_assignment_mode", "power_level", "channel_assignment_mode", "channel_number", "channel_width", "dual_radio_mode", "radio_band"), "_3": ("admin_status", "antenna_gain", "antenna_name", "radio_role_assignment", - "power_assignment_mode", "powerlevel", "channel_assignment_mode", + "power_assignment_mode", "power_level", "channel_assignment_mode", "channel_number", "cable_loss", "antenna_cable_name", "radio_band", "channel_width", "radio_type"), "_4": ("admin_status", "antenna_gain", "antenna_name", "radio_role_assignment", - "power_assignment_mode", "powerlevel", "channel_assignment_mode", + "power_assignment_mode", "power_level", "channel_assignment_mode", "channel_number", "cable_loss", "antenna_cable_name", "dual_radio_mode", "channel_width", "radio_type") } @@ -3608,10 +3609,10 @@ def update_ap_configuration(self, ap_config): else: radio_dtos[self.keymap["power_assignment_mode"]] = 2 radio_dtos["configurePower"] = True - - if each_radio.get(self.keymap["powerlevel"]) is not None: - radio_dtos[self.keymap["powerlevel"]] = \ - each_radio.get(self.keymap["powerlevel"]) + self.log(self.pprint(each_radio), "INFO") + if each_radio.get(self.keymap["power_level"]) is not None: + radio_dtos[self.keymap["power_level"]] = \ + each_radio.get(self.keymap["power_level"]) radio_dtos[self.keymap["power_assignment_mode"]] = 2 radio_dtos["configurePower"] = True From c809f61ac8b67247604adf68063246f766fd63f5 Mon Sep 17 00:00:00 2001 From: md-rafeek Date: Fri, 29 Nov 2024 19:58:39 +0530 Subject: [PATCH 28/34] Fixed the PR-33 back to here --- plugins/modules/site_workflow_manager.py | 288 ++++++++++++----------- 1 file changed, 152 insertions(+), 136 deletions(-) diff --git a/plugins/modules/site_workflow_manager.py b/plugins/modules/site_workflow_manager.py index 4989f99e2d..a63f153c05 100644 --- a/plugins/modules/site_workflow_manager.py +++ b/plugins/modules/site_workflow_manager.py @@ -15,11 +15,11 @@ module: site_workflow_manager short_description: Resource module for Site operations description: -- Manage operation create, bulk create, update and delete of the resource Sites. -- Creates site with area/building/floor with specified hierarchy. -- Create multiple sites (area, building, or floor) with specified hierarchies in bulk. -- Updates site with area/building/floor with specified hierarchy. -- Deletes site with area/building/floor with specified hierarchy. + - Manage operation create, bulk create, update and delete of the resource Sites. + - Creates site with area/building/floor with specified hierarchy. + - Create multiple sites (area, building, or floor) with specified hierarchies in bulk. + - Updates site with area/building/floor with specified hierarchy. + - Deletes site with area/building/floor with specified hierarchy. version_added: '6.6.0' extends_documentation_fragment: - cisco.dnac.workflow_manager_params @@ -36,13 +36,13 @@ state: description: The state of Catalyst Center after module completion. type: str - choices: [ merged, deleted ] + choices: [merged, deleted] default: merged config: description: It represents a list of details for creating/managing/deleting sites, including areas, buildings, and floors. type: list elements: dict - required: True + required: true suboptions: site_type: description: Type of site to create/update/delete (eg area, building, floor). @@ -125,9 +125,12 @@ description: | Floor number within the building site (e.g., 5). This value can only be specified during the creation of the floor and cannot be modified afterward. + It is required from version 2.3.7.6 onwards. type: int units_of_measure: - description: The unit of measurement for floor dimensions, typically 'feet' or 'meters'. + description: | + Specifies the unit of measurement for floor dimensions, typically 'feet' or 'meters'. + This field is introduced from version 2.3.7.6 onwards. type: str upload_floor_image_path: description: | @@ -137,8 +140,8 @@ 2.3.7.6 Catalyst version onwards requirements: -- dnacentersdk == 2.4.5 -- python >= 3.9 + - dnacentersdk == 2.4.5 + - python >= 3.9 notes: - SDK Method used are sites.Sites.create_site, @@ -659,14 +662,13 @@ def site_exists(self, site_name_hierarchy=None): for site in sites: if isinstance(site, dict): - self.log("No site information found for name: {0}".format(self.pprint(site)), "INFO") + self.log("No site information found for name: {0}".format(site), "INFO") current_site = dict(site.items()) current_site['parentName'] = site.get('nameHierarchy', '').rsplit('/', 1)[0] if site.get('nameHierarchy') else None site_exists = True else: site_name_hierarchy = self.want.get("site_name_hierarchy") - self.log("CHECK {0}".format(site_name_hierarchy), "INFO") response = self.get_site_v1(site_name_hierarchy) if not response: @@ -827,7 +829,7 @@ def get_site_name_hierarchy(self, site): self.set_operation_result("failed", False, self.msg, "ERROR") return None - site_name_hierarchy = '/'.join([parent_name, name]) + site_name_hierarchy = '/'.join([str(parent_name), str(name)]) self.log("Constructed site name: {}".format(site_name_hierarchy), "INFO") return site_name_hierarchy @@ -836,74 +838,6 @@ def get_site_name_hierarchy(self, site): self.log(error_message, "ERROR") return None - def get_bulk_site_names(self, site, bulk_operation=True): - """ - Collects and returns a list of constructed site names for areas, buildings, and floors. - - Parameters: - - self (object): An instance of a class used for interacting with Cisco Catalyst Center. - - site (dict): Configuration for a site in Cisco Catalyst Center. - - bulk_operation (bool, optional): Flag to indicate bulk operation mode. Default is True. - - Returns: - - list: A list of constructed site names (e.g., area/building/floor), or an empty list if none are found. - - Description: - This method constructs site names from areas, buildings, and floors defined in the configuration, - based on the Cisco Catalyst Center version. It logs missing hierarchy information as errors. - """ - name_list = [] - self.log("Starting bulk site names construction with arguments - site: {}, bulk_operation: {}".format(site, bulk_operation), "DEBUG") - - if not self.config or not isinstance(self.config, list) or not self.config[0].get('site'): - self.log("Configuration data for sites is missing or improperly formatted.", "ERROR") - return name_list - - try: - self.log("Processing areas for site names.", "DEBUG") - for area in self.config[0].get('site', {}).get('area', []): - area_name = area.get('name') - area_parent_name_hierarchy = area.get('parent_name_hierarchy') - if area_name and area_parent_name_hierarchy: - constructed_name = "{}/{}".format(area_parent_name_hierarchy, area_name) - name_list.append(constructed_name) - self.log("Constructed area name: {}".format(constructed_name), "DEBUG") - elif not area_parent_name_hierarchy: - self.log("Missing parent name hierarchy for area: {}".format(area_name), "ERROR") - - self.log("Processing buildings for site names.", "DEBUG") - for building in self.config[0].get('site', {}).get('building', []): - building_name = building.get('name') - building_parent_name_hierarchy = building.get('parent_name_hierarchy') - if building_name and building_parent_name_hierarchy: - constructed_name = "{}/{}".format(building_parent_name_hierarchy, building_name) - name_list.append(constructed_name) - self.log("Constructed building name: {}".format(constructed_name), "DEBUG") - elif not building_parent_name_hierarchy: - self.log("Missing parent name hierarchy for building: {}".format(building_name), "ERROR") - - self.log("Processing floors for site names.", "DEBUG") - for floor in self.config[0].get('site', {}).get('floor', []): - floor_name = floor.get('name') - floor_parent_name_hierarchy = floor.get('parent_name_hierarchy') - if floor_name and floor_parent_name_hierarchy: - constructed_name = "{}/{}".format(floor_parent_name_hierarchy, floor_name) - name_list.append(constructed_name) - self.log("Constructed floor name: {}".format(constructed_name), "DEBUG") - elif not floor_parent_name_hierarchy: - self.log("Missing parent name hierarchy for floor: {}".format(floor_name), "ERROR") - - if not name_list: - self.log("No site names constructed from areas, buildings, or floors.", "WARNING") - else: - self.log("Final constructed site names: {}".format(name_list), "DEBUG") - self.log("Bulk site names construction completed successfully.", "DEBUG") - - except Exception as e: - self.log("An error occurred while constructing site names: {}".format(str(e)), "ERROR") - - return name_list - def compare_float_values(self, ele1, ele2, precision=2): """ Compare two floating-point values with a specified precision. @@ -1116,7 +1050,7 @@ def get_have(self, config): for site in sites: if isinstance(site, dict): - self.log("site information found: {0}".format(self.pprint(site)), "INFO") + self.log("site information found: {0}".format(site), "INFO") current_site = dict(site.items()) current_site['parentName'] = site.get('nameHierarchy', '').rsplit('/', 1)[0] if site.get('nameHierarchy') else None site_exists = True @@ -1138,8 +1072,8 @@ def get_have(self, config): self.have = self.handle_config["have"] self.log("All site information collected from bulk operation(create_config): {0}". - format(self.pprint(self.handle_config["create_site"])), "DEBUG") - self.log("All site information collected (have): {0}".format(self.pprint(self.have)), "DEBUG") + format(self.handle_config["create_site"]), "DEBUG") + self.log("All site information collected (have): {0}".format(self.have), "DEBUG") else: site_exists, current_site = self.site_exists() @@ -1201,7 +1135,7 @@ def get_want(self, config): want_list.append(want) self.want = want_list - self.log("Desired State (want): {0}".format(self.pprint(self.want)), "INFO") + self.log("Desired State (want): {0}".format(self.want), "INFO") return self except Exception as e: @@ -1215,7 +1149,7 @@ def get_want(self, config): self.log("Desired State (want): {0}".format(self.want), "INFO") return self - def validate_site_input_data(self, config): + def validate_site_input_data(self, config, state): """ Validates site-related data from the playbook configuration to ensure it meets the required standards for site creation or modification in Cisco Catalyst Center. @@ -1261,6 +1195,9 @@ def validate_site_input_data(self, config): self.log("Missing 'parent_name' field in entry.", "ERROR") errormsg.append("parent_name should not be None or empty") + if state == "deleted": + continue + if site_type: if site_type not in ("area", "building", "floor"): errormsg.append("site_type: Invalid value '{0}' for site_type in playbook. Must be one of: area, building, or Floor.".format(site_type)) @@ -1271,7 +1208,7 @@ def validate_site_input_data(self, config): self.log("Performing building-specific validations.", "DEBUG") address = site.get(site_type, {}).get("address") if address: - self.log("Validating 'address' field: " + address, "DEBUG") + self.log("Validating 'address' field: " + str(address), "DEBUG") param_spec = dict(type="str", length_max=255) validate_str(address, param_spec, "address", errormsg) @@ -1287,15 +1224,20 @@ def validate_site_input_data(self, config): if not (isinstance(longitude, (float, int)) and -180 <= longitude <= 180): errormsg.append("Invalid longitude. Valid range is -180 to +180.") - if not (latitude and longitude or address): - errormsg.append("Either latitude/longitude or address is required.") - self.log("Missing required latitude/longitude or address for building.", "ERROR") - elif (latitude and not longitude) or (not latitude and longitude): - errormsg.append("Either Latitude or longitude is missing in the given playbook") + if self.compare_dnac_versions(self.get_ccc_version(), "2.3.7.6") >= 0: + if not (latitude and longitude or address): + errormsg.append("Either latitude/longitude or address is required.") + self.log("Missing required latitude/longitude or address for building.", "ERROR") + elif (latitude and not longitude) or (not latitude and longitude): + errormsg.append("Either Latitude or longitude is missing in the given playbook") + else: + if not (latitude and longitude): + errormsg.append("Latitude and longitude are required.") + self.log("Missing required latitude and longitude for building.", "ERROR") country = site.get(site_type, {}).get("country") - self.log("Validating 'country' field: " + country, "DEBUG") if country: + self.log("Validating 'country' field: " + str(country), "DEBUG") param_spec = dict(type="str", length_max=100) validate_str(country, param_spec, "country", errormsg) else: @@ -1305,17 +1247,25 @@ def validate_site_input_data(self, config): if site_type == "floor": self.log("Performing floor-specific validations.", "DEBUG") floor_number = site.get(site_type, {}).get("floor_number") - if floor_number: - self.log("Validating 'floor_number': " + str(floor_number), "DEBUG") - if not (isinstance(floor_number, int) and -200 <= floor_number <= 200): - errormsg.append("Please enter a valid floor number (-200 to 200)") + if self.compare_dnac_versions(self.get_ccc_version(), "2.3.7.6") >= 0: + if floor_number: + self.log("Validating 'floor_number': " + str(floor_number), "DEBUG") + if not (isinstance(floor_number, int) and -200 <= floor_number <= 200): + errormsg.append("Please enter a valid floor number (-200 to 200)") + self.log("'floor_number' is out of the valid range (-200 to 200).", "ERROR") + else: + errormsg.append("'floor_number' should not be None or empty.") self.log("Missing 'floor_number' in floor entry.", "ERROR") else: - errormsg.append("Floor number should not be None or empty") + if floor_number: + self.log("Validating 'floor_number': " + str(floor_number), "DEBUG") + if not (isinstance(floor_number, int) and -200 <= floor_number <= 200): + errormsg.append("Please enter a valid floor number (-200 to 200)") + self.log("'floor_number' is out of the valid range (-200 to 200).", "ERROR") rf_model = site.get(site_type, {}).get("rf_model") - self.log("Validating 'rf_model': " + rf_model, "DEBUG") if rf_model: + self.log("Validating 'rf_model': " + str(rf_model), "DEBUG") rf_model_list = [ "Free Space", "Outdoor Open Space", @@ -1326,7 +1276,7 @@ def validate_site_input_data(self, config): if rf_model not in rf_model_list: errormsg.append("rf_model: Invalid value '{0}' for rf_model in playbook. Must be one of: '{1}'". format(site_type, str(rf_model))) - self.log("Invalid 'rf_model': " + rf_model, "ERROR") + self.log("Invalid 'rf_model': " + str(rf_model), "ERROR") else: errormsg.append("RF should not be None or empty") @@ -1353,14 +1303,17 @@ def validate_site_input_data(self, config): else: errormsg.append("height should not be None or empty") - units_of_measure = site.get(site_type, {}).get("units_of_measure") - if units_of_measure: - if units_of_measure not in ("feet", "meters"): - errormsg.append( - "units_of_measure: Invalid value '{0}' for units_of_measure in playbook. Must be one of 'feet' or 'meters'.".format( - units_of_measure)) - else: - errormsg.append("units_of_measure should not be None or empty") + if self.compare_dnac_versions(self.get_ccc_version(), "2.3.7.6") >= 0: + units_of_measure = site.get(site_type, {}).get("units_of_measure") + if units_of_measure: + if units_of_measure not in ("feet", "meters"): + errormsg.append( + "units_of_measure: Invalid value '{0}' for units_of_measure in playbook. Must be one of 'feet' or 'meters'.".format( + units_of_measure)) + self.log("Invalid 'units_of_measure': {0}. Expected 'feet' or 'meters'.".format(units_of_measure), "ERROR") + else: + errormsg.append("units_of_measure should not be None or empty") + self.log("Missing 'units_of_measure' in floor entry.", "ERROR") upload_floor_image_path = site.get(site_type, {}).get("upload_floor_image_path") if upload_floor_image_path: @@ -1377,7 +1330,7 @@ def validate_site_input_data(self, config): ) if len(errormsg) > 0: - self.msg = "Invalid parameters in playbook config: '{0}' ".format(", ".join(errormsg)) + self.msg = "Missing or invalid parameters in playbook config: '{0}' ".format(", ".join(errormsg)) self.log(self.msg, "ERROR") self.status = "failed" return self @@ -1489,12 +1442,12 @@ def update_building(self, site_params): parent_name = site_params.get("site", {}).get("building", {}).get("parentName") parent_id = self.get_parent_id(parent_name) site_params['site']['building']['parentId'] = parent_id - self.log("Updated site_params with parent_id: {0}".format(self.pprint(site_params)), "INFO") + self.log("Updated site_params with parent_id: {0}".format(site_params), "INFO") building_param = site_params.get('site', {}).get('building') site_id = site_params.get("site_id") building_param['id'] = site_id - self.log("Before updating the building params:{0}".format(self.pprint(building_param)), "INFO") + self.log("Before updating the building params:{0}".format(building_param), "INFO") response = self.dnac._exec( family="site_design", function='updates_a_building', @@ -1603,18 +1556,18 @@ def change_payload_data(self, config): site_type = config.get('type') if site_type in ['area', 'building', 'floor'] and site_data: - self.log("Site type identified as: " + site_type, "DEBUG") + self.log("Site type identified as: " + str(site_type), "DEBUG") specific_data = site_data.get(site_type, {}) for key, value in specific_data.items(): if value is not None: - self.log("Mapping key: " + key + " to value: " + str(value), "DEBUG") + self.log("Mapping key: " + str(key) + " to value: " + str(value), "DEBUG") mapped_key = self.keymap.get(key, key) payload_data[mapped_key] = value payload_data["type"] = site_type self.log("Payload data created successfully.", "DEBUG") else: - self.log("Skipping key: " + key + " as value is None.", "DEBUG") + self.log("Skipping key: " + str(key) + " as value is None.", "DEBUG") else: self.log("Invalid site type or missing site data in the configuration.", "ERROR") else: @@ -1625,6 +1578,42 @@ def change_payload_data(self, config): self.msg = "Unable to process the payload data : {}".format(str(e)) self.set_operation_result("failed", False, self.msg, "ERROR").check_return_status() + def is_site_exist(self, site_name): + """ + Checks if a site exists in Cisco Catalyst Center by retrieving site information based on the provided site name. + + Args: + site_name (str): The name or hierarchy of the site to be retrieved. + + Returns: + A boolean indicating whether the site exists (True if found, False otherwise). + + Details: + - Calls `get_site()` to retrieve site details from Cisco Catalyst Center. + - If the site does not exist, it returns (False). + - Logs detailed debug information about the retrieval attempt and any errors that occur. + + """ + site_exists = False + try: + response = self.get_site(site_name) + + if response is None: + self.log("No site details retrieved for site name: {0}".format(site_name), "DEBUG") + return site_exists + + self.log("Site details retrieved for site {0}: {1}".format(site_name, str(response)), "DEBUG") + site_exists = True + + except Exception as e: + self.log( + "An exception occurred while retrieving Site details for Site '{0}' " + "does not exist in the Cisco Catalyst Center. Error: {1}".format(site_name, e), + "INFO" + ) + + return site_exists + def get_diff_merged(self, config): """ Update/Create site information in Cisco Catalyst Center with fields @@ -1671,6 +1660,23 @@ def get_diff_merged(self, config): self.log("Added to floor: {}".format(payload_data), "DEBUG") for each_type in ("area", "building", "floor"): if self.handle_config[each_type]: + self.log("Processing configurations for '{0}'.".format(each_type), "DEBUG") + for create_config in self.handle_config[each_type]: + self.log("Handling configuration: {0}".format(create_config), "DEBUG") + parent_name = create_config.get(self.keymap.get("parent_name_hierarchy")) + if not parent_name: + self.msg = "No parent name found in configuration for '{0}'.".format(each_type) + self.log(self.msg, "DEBUG") + self.set_operation_result("failed", False, self.msg, "ERROR").check_return_status() + self.log("Checking if parent site '{0}' exists in the hierarchy.".format(parent_name), "DEBUG") + + site_exists = self.is_site_exist(parent_name) + if not site_exists: + self.msg = "Parent name '{0}' does not exist in the Cisco Catalyst Center.".format(parent_name) + self.log(self.msg, "DEBUG") + self.site_absent_list.append(str(parent_name) + " does not exist ") + self.set_operation_result("failed", False, self.msg, "ERROR").check_return_status() + response = self.creating_bulk_site(self.handle_config[each_type]) self.log("Response from creating_bulk_site for {}: {}".format(each_type, response), "DEBUG") @@ -1743,9 +1749,9 @@ def get_diff_merged(self, config): if response and isinstance(response, dict): taskid = response["response"]["taskId"] - task_details = self.get_task_details(taskid) while True: + task_details = self.get_task_details(taskid) if site_type != "floor": if task_details.get("progress") == "Group is updated successfully": task_detail_list.append(task_details) @@ -1814,7 +1820,7 @@ def get_diff_merged(self, config): if execution_details.get("status") == "SUCCESS": self.result['changed'] = True site_updated = True - self.updated_site_list.append(site_type + ": " + site_name_hierarchy) + self.updated_site_list.append(str(site_type) + ": " + str(site_name_hierarchy)) self.log("Site - {0} Updated Successfully".format(site_name_hierarchy), "INFO") break elif execution_details.get("bapiError"): @@ -1845,6 +1851,18 @@ def get_diff_merged(self, config): self.log("The site '{0}' is not categorized as a building; no need to filter 'None' values.". format(name), "INFO") + site_type = site_params['type'] + parent_name = site_params.get('site').get(site_type).get('parentName') + try: + response = self.get_site_v1(parent_name) + if not response: + self.msg = "Parent name '{0}' does not exist in the Cisco Catalyst Center.".format(parent_name) + self.log(self.msg, "DEBUG") + self.site_absent_list.append(str(parent_name) + " does not exist ") + self.set_operation_result("failed", False, self.msg, "ERROR").check_return_status() + except Exception as e: + self.log("No response received from 'get_site_v1' API for site: {0}".format(parent_name + str(e)), "ERROR") + response = self.dnac._exec( family="sites", function='create_site', @@ -1861,7 +1879,7 @@ def get_diff_merged(self, config): self.result['changed'] = True break elif execution_details.get("bapiError"): - self.msg = "Unable to Create: " + execution_details.get("bapiError") + self.msg = "Unable to Create: " + str(execution_details.get("bapiError")) self.set_operation_result("failed", False, self.msg, "ERROR", execution_details).check_return_status() break @@ -1869,7 +1887,7 @@ def get_diff_merged(self, config): site_exists, current_site = self.site_exists() if site_exists: site_name_hierarchy = self.want.get("site_name_hierarchy") - self.created_site_list.append(site_type + ": " + site_name_hierarchy) + self.created_site_list.append(str(site_type) + ": " + str(site_name_hierarchy)) self.log("Site '{0}' created successfully".format(site_name_hierarchy), "INFO") return self @@ -2042,17 +2060,16 @@ def get_diff_deleted(self, config): if self.compare_dnac_versions(self.get_ccc_version(), "2.3.5.3") <= 0: site_exists = self.have.get("site_exists") site_name_hierarchy = self.want.get("site_name_hierarchy") - + site_id = self.have.get("site_id") if not site_exists: - self.status = "success" - self.site_absent_list.append(site_name_hierarchy) + if site_name_hierarchy not in self.deleted_site_list: + self.site_absent_list.append(site_name_hierarchy) self.log( - "Unable to delete site '{0}' as it's not found in Cisco Catalyst Center".format(self.want.get("site_name_hierarchy")), "INFO") + "Failed to delete site '{0}'. Reason: The site was not found in the Cisco Catalyst Center.".format(site_name_hierarchy), + "DEBUG" + ) return self - site_id = self.have.get("site_id") - site_name_hierarchy = self.want.get("site_name_hierarchy") api_response, response = self.get_device_ids_from_site(site_name_hierarchy, site_id) - self.log( "Received API response from 'get_membership': {0}".format(str(api_response)), "DEBUG") @@ -2068,7 +2085,7 @@ def get_diff_deleted(self, config): site_response, key=lambda x: x.get("groupHierarchy"), reverse=True) for item in sorted_site_resp: - self.delete_single_site(item['id'], item['name']) + self.delete_single_site(item['id'], item['groupNameHierarchy']) self.delete_single_site(site_id, site_name_hierarchy) self.log( @@ -2084,10 +2101,10 @@ def get_diff_deleted(self, config): if not site_exists: self.log("Unable to delete site {0} as it's not found in Cisco Catalyst Center". format(config.get("site_name_hierarchy")), "INFO") - self.site_absent_list.append(each_type + ": " + config.get("site_name_hierarchy")) + self.site_absent_list.append(str(each_type) + ": " + str(config.get("site_name_hierarchy"))) else: final_deletion_list.append(config) - self.log("Deletion list re-arranged order: {0}.".format(self.pprint(final_deletion_list)), "INFO") + self.log("Deletion list re-arranged order: {0}.".format(final_deletion_list), "INFO") if len(final_deletion_list) > 0: for config in final_deletion_list: @@ -2117,15 +2134,15 @@ def get_diff_deleted(self, config): task_id = response.get("response", {}).get("taskId") if task_id: - task_details = self.get_task_details(task_id) while True: + task_details = self.get_task_details(task_id) if site_type == "area": if task_details.get("progress") == "Group is deleted successfully": self.msg = "Area '{0}' deleted successfully.".format(site_name_hierarchy) self.log(self.msg, "INFO") self.result['changed'] = True self.result['response'] = task_details - self.deleted_site_list.append(site_type + ": " + site_name_hierarchy) + self.deleted_site_list.append(str(site_type) + ": " + str(site_name_hierarchy)) break elif task_details.get("failureReason"): self.msg = "Error response for 'deletes_an_area' task: {0}".format(task_details.get('failureReason')) @@ -2139,7 +2156,7 @@ def get_diff_deleted(self, config): self.log(self.msg, "INFO") self.result['changed'] = True self.result['response'] = task_details - self.deleted_site_list.append(site_type + ": " + site_name_hierarchy) + self.deleted_site_list.append(str(site_type) + ": " + str(site_name_hierarchy)) break elif task_details.get("failureReason"): self.msg = "Error response for 'deletes_building' task: {0}".format(task_details.get('failureReason')) @@ -2150,7 +2167,7 @@ def get_diff_deleted(self, config): else: if task_details.get("progress") == "NCMP00150: Service domain is deleted successfully": self.log("Area site '{0}' deleted successfully.".format(site_name_hierarchy), "INFO") - self.deleted_site_list.append(site_type + ": " + site_name_hierarchy) + self.deleted_site_list.append(str(site_type) + ": " + str(site_name_hierarchy)) break elif task_details.get("failureReason"): self.msg = "Error response for 'deletes_an_floor' task: {0}".format(task_details.get('failureReason')) @@ -2293,8 +2310,7 @@ def update_site_messages(self): if self.update_not_needed_sites: msg = """Site(s) '{0}' created successfully as well as Site(s) '{1}' updated successully and the some site(s) '{2}' needs no update in Cisco Catalyst Center""" - self.msg = msg.format(str(self.created_site_list), str( - self.updated_site_list), str(self.update_not_needed_sites)) + self.msg = msg.format(str(self.created_site_list), str(self.updated_site_list), str(self.update_not_needed_sites)) else: self.msg = """Site(s) '{0}' created successfully in Cisco Catalyst Center as well as Site(s) '{1}' updated successully in Cisco Catalyst Center""".format(str(self.created_site_list), str(self.updated_site_list)) @@ -2406,7 +2422,7 @@ def upload_floor_image(self, config): 'image': (os.path.basename(file_path), file_content, content_type) } - site_hierarchy = config.get(self.keymap["parent_name_hierarchy"], "parent_name_hierarchy") + "/" + config.get('name') + site_hierarchy = config.get(self.keymap["parent_name_hierarchy"], "parent_name_hierarchy") + "/" + str(config.get('name')) site_exists, current_site = self.site_exists(site_hierarchy) site_id = current_site.get("id") if not site_id: @@ -2499,7 +2515,7 @@ def main(): ccc_site.validate_input().check_return_status() config_verify = ccc_site.params.get("config_verify") - ccc_site.validate_site_input_data(ccc_site.validated_config).check_return_status() + ccc_site.validate_site_input_data(ccc_site.validated_config, state).check_return_status() if ccc_site.compare_dnac_versions(ccc_site.get_ccc_version(), "2.3.7.6") >= 0: ccc_site.reset_values() From 01103e3d2741e87866e65c9911b44663e4915396 Mon Sep 17 00:00:00 2001 From: md-rafeek Date: Sun, 1 Dec 2024 00:11:33 +0530 Subject: [PATCH 29/34] Fixed the PR-33 and str concatenate issue also fixed --- plugins/modules/site_workflow_manager.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/modules/site_workflow_manager.py b/plugins/modules/site_workflow_manager.py index a63f153c05..2a7119b9a7 100644 --- a/plugins/modules/site_workflow_manager.py +++ b/plugins/modules/site_workflow_manager.py @@ -1691,7 +1691,8 @@ def get_diff_merged(self, config): for site in self.handle_config[each_type]: if "name" in site: - self.created_site_list.append(str(each_type) + ": " + site.get("name")) + self.created_site_list.append(str(each_type) + ": " + str(site.get("name"))) + self.log("Site '{}' created successfully".format(self.created_site_list), "INFO") for site in self.handle_config[each_type]: @@ -1778,7 +1779,7 @@ def get_diff_merged(self, config): self.log(self.msg, "INFO") self.update_not_needed_sites.append(payload_new.get("type") + ": " + site_name_hierarchy) except Exception as e: - self.log("Yaml is not available for bulk: {}".format(e), "ERROR") + self.log("Yaml is not available for bulk: {}".format(str(e)), "ERROR") return self From 139189e32d430226a97ad00d906f6e8e5bec83ac Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Tue, 3 Dec 2024 12:23:32 +0530 Subject: [PATCH 30/34] Fix the issue of creating scaled fabric VLAN in chunk of 50 vlans at a time to match GUI --- ...abric_virtual_networks_workflow_manager.py | 121 +++++++++++------- 1 file changed, 73 insertions(+), 48 deletions(-) diff --git a/plugins/modules/sda_fabric_virtual_networks_workflow_manager.py b/plugins/modules/sda_fabric_virtual_networks_workflow_manager.py index 64b13593ec..8a7fb5b506 100644 --- a/plugins/modules/sda_fabric_virtual_networks_workflow_manager.py +++ b/plugins/modules/sda_fabric_virtual_networks_workflow_manager.py @@ -14,9 +14,9 @@ module: sda_fabric_virtual_networks_workflow_manager short_description: Configure fabric VLANs, Virtual Networks, and Anycast Gateways in Cisco Catalyst Center. description: -- Create, update, or delete layer2 Fabric VLAN(s) for SDA operations in Cisco Catalyst Center. -- Create, update, or delete layer3 Virtual Network(s) for SDA operations in Cisco Catalyst Center. -- Create, update, or delete Anycast Gateway(s) for SDA operations in Cisco Catalyst Center. + - Create, update, or delete layer2 Fabric VLAN(s) for SDA operations in Cisco Catalyst Center. + - Create, update, or delete layer3 Virtual Network(s) for SDA operations in Cisco Catalyst Center. + - Create, update, or delete Anycast Gateway(s) for SDA operations in Cisco Catalyst Center. version_added: '6.18.0' extends_documentation_fragment: - cisco.dnac.workflow_manager_params @@ -30,7 +30,7 @@ state: description: The state of Cisco Catalyst Center after module completion. type: str - choices: [ merged, deleted ] + choices: [merged, deleted] default: merged config: description: A list containing detailed configurations for creating, updating, or deleting fabric sites/zones @@ -232,8 +232,8 @@ requirements: -- dnacentersdk >= 2.9.2 -- python >= 3.9 + - dnacentersdk >= 2.9.2 + - python >= 3.9 notes: - To ensure the module operates correctly for scaled sets, which involve creating, updating, or deleting Layer2 fabric VLANs @@ -971,6 +971,23 @@ def create_payload_for_fabric_vlan(self, vlan, fabric_id_list): return create_vlan_payload_list + def sda_fabric_vlan_api_request_limit(self): + """ + Retrieves the limit for SDA API to create/update the sda fabric VLAN tasks.. + Args: + self (object): An instance of a class that provides access to Cisco Catalyst Center. + Returns: + int: The limit for SDA fabric VLAN api's, which is set to 50 by default. + Description: + This method returns a predefined limit for the number of request that can be processed or retrieved + from SDA fabric VLAN api. Currently, the limit is set to a fixed value of 50. + """ + + sda_fabric_vlan_limit = 50 + self.log("API request limit is set to '{0}' for the sda fabric VLAN related task.".format(sda_fabric_vlan_limit), "DEBUG") + + return sda_fabric_vlan_limit + def create_fabric_vlan(self, vlan_payloads): """ Creates fabric VLAN(s) in Cisco Catalyst Center using the provided payload. @@ -987,26 +1004,30 @@ def create_fabric_vlan(self, vlan_payloads): class status accordingly. """ - try: - payload = {"payload": vlan_payloads} - task_name = "add_layer2_virtual_networks" - task_id = self.get_taskid_post_api_call("sda", task_name, payload) - - if not task_id: - self.msg = "Unable to retrieve the task_id for the task '{0}'.".format(task_name) - self.set_operation_result("failed", False, self.msg, "ERROR") - return self - - success_msg = "Layer2 Fabric VLAN(s) '{0}' created successfully in the Cisco Catalyst Center.".format(self.created_fabric_vlans) - self.log(success_msg, "DEBUG") - self.get_task_status_from_tasks_by_id(task_id, task_name, success_msg) + req_limit = self.sda_fabric_vlan_api_request_limit() + for i in range(0, len(vlan_payloads), req_limit): + fabric_vlan_payload = vlan_payloads[i: i + req_limit] + fabric_vlan_details = self.created_fabric_vlans[i: i + req_limit] - except Exception as e: - self.msg = ( - "An exception occured while creating the layer2 VLAN(s) '{0}' in the Cisco Catalyst " - "Center: {1}" - ).format(self.created_fabric_vlans, str(e)) - self.set_operation_result("failed", False, self.msg, "ERROR") + try: + payload = {"payload": fabric_vlan_payload} + task_name = "add_layer2_virtual_networks" + task_id = self.get_taskid_post_api_call("sda", task_name, payload) + + if not task_id: + self.msg = "Unable to retrieve the task_id for the task '{0}'.".format(task_name) + self.set_operation_result("failed", False, self.msg, "ERROR") + return self + + success_msg = "Layer2 Fabric VLAN(s) '{0}' created successfully in the Cisco Catalyst Center.".format(fabric_vlan_details) + self.log(success_msg, "DEBUG") + self.get_task_status_from_tasks_by_id(task_id, task_name, success_msg).check_return_status() + except Exception as e: + self.msg = ( + "An exception occured while creating the layer2 VLAN(s) '{0}' in the Cisco Catalyst " + "Center: {1}" + ).format(self.fabric_vlan_details, str(e)) + self.set_operation_result("failed", False, self.msg, "ERROR").check_return_status() return self @@ -1114,34 +1135,38 @@ def update_fabric_vlan(self, update_vlan_payload): and sets the status to "failed". """ - try: - payload = {"payload": update_vlan_payload} - task_name = "update_layer2_virtual_networks" - task_id = self.get_taskid_post_api_call("sda", task_name, payload) + req_limit = self.sda_fabric_vlan_api_request_limit() + for i in range(0, len(update_vlan_payload), req_limit): + vlan_payload = update_vlan_payload[i: i + req_limit] + fabric_vlan_details = self.created_fabric_vlans[i: i + req_limit] - if not task_id: - self.msg = "Unable to retrieve the task_id for the task '{0}'.".format(task_name) - self.set_operation_result("failed", False, self.msg, "ERROR") - return self + try: + payload = {"payload": vlan_payload} + task_name = "update_layer2_virtual_networks" + task_id = self.get_taskid_post_api_call("sda", task_name, payload) - success_msg = "Layer2 Fabric VLAN(s) '{0}' updated successfully in the Cisco Catalyst Center.".format(self.updated_fabric_vlans) - self.get_task_status_from_tasks_by_id(task_id, task_name, success_msg) + if not task_id: + self.msg = "Unable to retrieve the task_id for the task '{0}'.".format(task_name) + self.set_operation_result("failed", False, self.msg, "ERROR") + return self - except Exception as e: - self.msg = ( - "An exception occured while updating the layer2 fabric VLAN(s) '{0}' in the Cisco Catalyst " - "Center: {1}" - ).format(self.updated_fabric_vlans, str(e)) - self.set_operation_result("failed", False, self.msg, "ERROR") + success_msg = "Layer2 Fabric VLAN(s) '{0}' updated successfully in the Cisco Catalyst Center.".format(fabric_vlan_details) + self.get_task_status_from_tasks_by_id(task_id, task_name, success_msg).check_return_status() + + except Exception as e: + self.msg = ( + "An exception occured while updating the layer2 fabric VLAN(s) '{0}' in the Cisco Catalyst " + "Center: {1}" + ).format(fabric_vlan_details, str(e)) + self.set_operation_result("failed", False, self.msg, "ERROR").check_return_status() return self - def delete_layer2_fabric_vlan(self, vlan_name, vlan_vn_id, vlan_name_with_id_and_site): + def delete_layer2_fabric_vlan(self, vlan_vn_id, vlan_name_with_id_and_site): """ Deletes a Layer2 fabric VLAN in Cisco Catalyst Center based on the provided VLAN ID. Args: self (object): An instance of a class used for interacting with Cisco Catalyst Center. - vlan_name (str): The name of the Fabric VLAN to be deleted. vlan_vn_id (str): The unique identifier of the Fabric VLAN to be deleted. vlan_name_with_id_and_site (str): Uniquely identify the name of vlan with it's VLAN id and to the site(s) it is assoicated with @@ -1173,7 +1198,7 @@ class status accordingly. except Exception as e: self.msg = "Exception occurred while deleting the fabric Vlan '{0}' due to: {1}".format(vlan_name_with_id_and_site, str(e)) - self.set_operation_result("failed", False, self.msg, "ERROR").check_return_status() + self.set_operation_result("failed", False, self.msg, "ERROR") return self @@ -2572,11 +2597,11 @@ def update_fabric_vlan_vn_anycast_gateway_messages(self): result_msg_list.append(create_vn_msg) if self.updated_virtual_networks: - update_vn_msg = "Layer3 Virtual Network(s '{0}' updated successfully in the Cisco Catalyst Center.".format(self.updated_virtual_networks) + update_vn_msg = "Layer3 Virtual Network(s) '{0}' updated successfully in the Cisco Catalyst Center.".format(self.updated_virtual_networks) result_msg_list.append(update_vn_msg) if self.no_update_virtual_networks: - no_update_vns_msg = "Given Virtual Network(s '{0}' does not need any update in Cisco Catalyst Center.".format(self.no_update_virtual_networks) + no_update_vns_msg = "Given Virtual Network(s) '{0}' does not need any update in Cisco Catalyst Center.".format(self.no_update_virtual_networks) result_msg_list.append(no_update_vns_msg) if self.created_anycast_gateways: @@ -2920,13 +2945,13 @@ def delete_fabric_vlan(self, fabric_vlan_details): name_id_site_key = "{0}${1}${2}".format(vlan_name, vlan_id, site_name) fabric_site_dict[name_id_site_key] = fabric_vlan_id else: - self.delete_layer2_fabric_vlan(vlan_name, fabric_vlan_id, vlan_name_with_id_and_site).check_return_status() + self.delete_layer2_fabric_vlan(fabric_vlan_id, vlan_name_with_id_and_site).check_return_status() self.log("Successfully deleted fabric VLAN '{0}' from Cisco Catalyst Center.".format(vlan_name_with_id_and_site), "INFO") for name_id_key, fabric_vlan_id in fabric_site_dict.items(): vlan_name, vlan_id, site_name = name_id_key.split("$") vlan_name_with_id_and_site = "{0} having vlan id: {1} and site: {2}".format(vlan_name, vlan_id, site_name) - self.delete_layer2_fabric_vlan(vlan_name, fabric_vlan_id, vlan_name_with_id_and_site).check_return_status() + self.delete_layer2_fabric_vlan(fabric_vlan_id, vlan_name_with_id_and_site).check_return_status() self.log("Successfully deleted fabric VLAN '{0}' from Cisco Catalyst Center.".format(vlan_name_with_id_and_site), "INFO") if self.deleted_fabric_vlans: From 8c06abbe0eaea64106cbef357d20b416bcfaa177 Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Tue, 3 Dec 2024 12:32:23 +0530 Subject: [PATCH 31/34] fix sanity errors --- ...abric_virtual_networks_workflow_manager.py | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/plugins/modules/sda_fabric_virtual_networks_workflow_manager.py b/plugins/modules/sda_fabric_virtual_networks_workflow_manager.py index 8a7fb5b506..7cbace3082 100644 --- a/plugins/modules/sda_fabric_virtual_networks_workflow_manager.py +++ b/plugins/modules/sda_fabric_virtual_networks_workflow_manager.py @@ -26,7 +26,7 @@ config_verify: description: Set to True to verify the Cisco Catalyst Center config after applying the playbook config. type: bool - default: False + default: false state: description: The state of Cisco Catalyst Center after module completion. type: str @@ -40,7 +40,7 @@ to authentication profiles. type: list elements: dict - required: True + required: true suboptions: fabric_vlan: description: A list of VLAN configurations for fabric sites in SDA environment. Each VLAN entry @@ -52,14 +52,14 @@ description: Name of the VLAN of the layer2 virtual network. Must contain only alphanumeric characters, underscores, and hyphens. Updating this field is not allowed. type: str - required: True + required: true vlan_id: description: ID for the layer2 VLAN network. Allowed VLAN range is 2-4093 except for reserved VLANs 1002-1005, and 2046. If deploying on a fabric zone, this vlan_id must match the vlan_id of the corresponding layer2 virtual network on the fabric site. And updation of this field is not allowed. type: int - required: True + required: true fabric_site_locations: description: A list of fabric site locations where this VLAN is deployed, including site hierarchy and fabric type details. type: list @@ -69,17 +69,17 @@ description: This name uniquely identifies the site for operations such as creating/updating/deleting any fabric VLAN. This parameter is required, and updates to this field is not allowed. type: str - required: True + required: true fabric_type: description: Specifies the type of site to be managed within the SDA environment. The acceptable values are 'fabric_site' and 'fabric_zone'. The default value is 'fabric_site', indicating the configuration of a broader network area, whereas 'fabric_zone' typically refers to a more specific segment within the site. type: str - required: True + required: true traffic_type: description: The type of traffic handled by the VLAN (e.g., DATA, VOICE). By default, it is set to "DATA". type: str - required: True + required: true fabric_enabled_wireless: description: Indicates whether the fabric VLAN is enabled for wireless in the fabric environment. By default, it is set to False. type: bool @@ -100,7 +100,7 @@ field is not allowed. It consist of only letters, numbers, and underscores, and must be between 1-16 characters in length. type: str - required: True + required: true fabric_site_locations: description: A list of fabric site locations where this this Layer3 virtual network is to be assigned to, including site hierarchy and fabric type details. If this parameter is given make sure to provide the site_name and fabric_type as @@ -135,13 +135,13 @@ description: The name of the Layer3 virtual network. It must consist only of letters, numbers, and underscores, with a length between 1 and 16 characters. This field cannot be updated after creation. type: str - required: True + required: true fabric_site_locations: description: A list of fabric site locations where this Layer3 virtual network will be assigned, including details about the site hierarchy and fabric type. If this parameter is provided, ensure that both site_name and fabric_type are specified for each entry. This is required to extend the virtual networks across the specified fabric sites. type: dict - required: True + required: true suboptions: site_name_hierarchy: description: The hierarchical name of the site where the anycast gateway is deployed. @@ -157,7 +157,7 @@ if it does not exist, it can be created or reserved using the 'network_settings_workflow_manager' module. Updating this field is not allowed. type: str - required: True + required: true tcp_mss_adjustment: description: The value used to adjust the TCP Maximum Segment Size (MSS). The value should be in the range (500, 1441). type: int From 08743757bf5cb27bf864adf826ef951aeaa6c73f Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Tue, 3 Dec 2024 19:59:10 +0530 Subject: [PATCH 32/34] Take the 'sda_fabric_vlan_limit' parameter from the playbook and update the documentation as well --- ...abric_virtual_networks_workflow_manager.py | 31 +++++++------------ 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/plugins/modules/sda_fabric_virtual_networks_workflow_manager.py b/plugins/modules/sda_fabric_virtual_networks_workflow_manager.py index 7cbace3082..8f3b67e706 100644 --- a/plugins/modules/sda_fabric_virtual_networks_workflow_manager.py +++ b/plugins/modules/sda_fabric_virtual_networks_workflow_manager.py @@ -32,6 +32,11 @@ type: str choices: [merged, deleted] default: merged + sda_fabric_vlan_limit: + description: Set the limit for creating/updating fabric VLAN(s) via the SDA API, consistent with the GUI constraints. + By default it is set to 50 as in the GUI we can only create 50 fabric VLAN(s) at a time. + type: int + default: 50 config: description: A list containing detailed configurations for creating, updating, or deleting fabric sites/zones in a Software-Defined Access (SDA) environment. It also includes specifications for updating the authentication @@ -971,23 +976,6 @@ def create_payload_for_fabric_vlan(self, vlan, fabric_id_list): return create_vlan_payload_list - def sda_fabric_vlan_api_request_limit(self): - """ - Retrieves the limit for SDA API to create/update the sda fabric VLAN tasks.. - Args: - self (object): An instance of a class that provides access to Cisco Catalyst Center. - Returns: - int: The limit for SDA fabric VLAN api's, which is set to 50 by default. - Description: - This method returns a predefined limit for the number of request that can be processed or retrieved - from SDA fabric VLAN api. Currently, the limit is set to a fixed value of 50. - """ - - sda_fabric_vlan_limit = 50 - self.log("API request limit is set to '{0}' for the sda fabric VLAN related task.".format(sda_fabric_vlan_limit), "DEBUG") - - return sda_fabric_vlan_limit - def create_fabric_vlan(self, vlan_payloads): """ Creates fabric VLAN(s) in Cisco Catalyst Center using the provided payload. @@ -1004,7 +992,9 @@ def create_fabric_vlan(self, vlan_payloads): class status accordingly. """ - req_limit = self.sda_fabric_vlan_api_request_limit() + req_limit = self.params.get('sda_fabric_vlan_limit', 50) + self.log("API request item limit is set to '{0}' for the sda fabric VLAN related task.".format(req_limit), "DEBUG") + for i in range(0, len(vlan_payloads), req_limit): fabric_vlan_payload = vlan_payloads[i: i + req_limit] fabric_vlan_details = self.created_fabric_vlans[i: i + req_limit] @@ -1135,7 +1125,9 @@ def update_fabric_vlan(self, update_vlan_payload): and sets the status to "failed". """ - req_limit = self.sda_fabric_vlan_api_request_limit() + req_limit = self.params.get('sda_fabric_vlan_limit', 50) + self.log("API request limit is set to '{0}' for the sda fabric VLAN related task.".format(req_limit), "DEBUG") + for i in range(0, len(update_vlan_payload), req_limit): vlan_payload = update_vlan_payload[i: i + req_limit] fabric_vlan_details = self.created_fabric_vlans[i: i + req_limit] @@ -3567,6 +3559,7 @@ def main(): 'dnac_log': {'type': 'bool', 'default': False}, 'validate_response_schema': {'type': 'bool', 'default': True}, 'config_verify': {'type': 'bool', "default": False}, + 'sda_fabric_vlan_limit': {'type': 'int', 'default': 50}, 'dnac_api_task_timeout': {'type': 'int', "default": 1200}, 'dnac_task_poll_interval': {'type': 'int', "default": 2}, 'config': {'required': True, 'type': 'list', 'elements': 'dict'}, From cf9eeef4c5524b3e99bf123ad07b050c9277a68a Mon Sep 17 00:00:00 2001 From: Abhishek-121 Date: Wed, 4 Dec 2024 11:02:25 +0530 Subject: [PATCH 33/34] address review comments --- ...sda_fabric_virtual_networks_workflow_manager.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/plugins/modules/sda_fabric_virtual_networks_workflow_manager.py b/plugins/modules/sda_fabric_virtual_networks_workflow_manager.py index 8f3b67e706..9160e167fd 100644 --- a/plugins/modules/sda_fabric_virtual_networks_workflow_manager.py +++ b/plugins/modules/sda_fabric_virtual_networks_workflow_manager.py @@ -993,7 +993,9 @@ class status accordingly. """ req_limit = self.params.get('sda_fabric_vlan_limit', 50) - self.log("API request item limit is set to '{0}' for the sda fabric VLAN related task.".format(req_limit), "DEBUG") + self.log( + "API request batch size set to '{0}' for fabric VLAN creation.".format(req_limit), "DEBUG" + ) for i in range(0, len(vlan_payloads), req_limit): fabric_vlan_payload = vlan_payloads[i: i + req_limit] @@ -1005,6 +1007,11 @@ class status accordingly. task_id = self.get_taskid_post_api_call("sda", task_name, payload) if not task_id: + self.msg = ( + "Failed to retrieve task ID for task '{0}'. Payload: '{1}'".format( + task_name, payload + ) + ) self.msg = "Unable to retrieve the task_id for the task '{0}'.".format(task_name) self.set_operation_result("failed", False, self.msg, "ERROR") return self @@ -1012,6 +1019,7 @@ class status accordingly. success_msg = "Layer2 Fabric VLAN(s) '{0}' created successfully in the Cisco Catalyst Center.".format(fabric_vlan_details) self.log(success_msg, "DEBUG") self.get_task_status_from_tasks_by_id(task_id, task_name, success_msg).check_return_status() + except Exception as e: self.msg = ( "An exception occured while creating the layer2 VLAN(s) '{0}' in the Cisco Catalyst " @@ -1126,7 +1134,9 @@ def update_fabric_vlan(self, update_vlan_payload): """ req_limit = self.params.get('sda_fabric_vlan_limit', 50) - self.log("API request limit is set to '{0}' for the sda fabric VLAN related task.".format(req_limit), "DEBUG") + self.log( + "API request batch size set to '{0}' for fabric VLAN updation.".format(req_limit), "DEBUG" + ) for i in range(0, len(update_vlan_payload), req_limit): vlan_payload = update_vlan_payload[i: i + req_limit] From be4333e6e6a37cbda81dc0ee2f197d5c9df56a97 Mon Sep 17 00:00:00 2001 From: Madhan Date: Thu, 5 Dec 2024 06:42:41 +0530 Subject: [PATCH 34/34] Changes in workflow manager modules --- changelogs/changelog.yaml | 12 ++++++++++++ galaxy.yml | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/changelogs/changelog.yaml b/changelogs/changelog.yaml index da5e00691f..737b3f90ff 100644 --- a/changelogs/changelog.yaml +++ b/changelogs/changelog.yaml @@ -1112,3 +1112,15 @@ releases: release_summary: application of unapplied changes. minor_changes: - application of the changes made in pull request 207 + 6.25.2: + release_date: "2024-12-05" + changes: + release_summary: Alias implementation. + minor_changes: + - Bug fixes in accesspoint_workflow_manager module + - Changes in sda_fabric_devices_workflow_manager module + - Bug fixes in [sda_fabric_sites_zones_workflow_manager module + - Enhancements in [sda_fabric_virtual_networks_workflow_manager module to support batch operation. + - Changes in site_workflow_manager module + - Changes in template_workflow_manager + - Unit test modules added for pnp_workflow_manager module diff --git a/galaxy.yml b/galaxy.yml index c08001f0ae..b48a97aefd 100644 --- a/galaxy.yml +++ b/galaxy.yml @@ -1,7 +1,7 @@ --- namespace: cisco name: dnac -version: 6.25.1 +version: 6.25.2 readme: README.md authors: - Rafael Campos