summaryrefslogtreecommitdiffstats
path: root/ansible_collections/cisco/meraki/plugins/action
diff options
context:
space:
mode:
Diffstat (limited to 'ansible_collections/cisco/meraki/plugins/action')
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_entitlements_info.py90
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_bind.py91
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_claim.py95
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_claim_key_validate.py87
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_compliance_statuses_info.py94
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_info.py128
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices.py65
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_appliance_radio_settings.py211
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_appliance_radio_settings_info.py90
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_blink_leds.py4
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_camera_custom_analytics.py10
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_camera_generate_snapshot.py4
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_camera_quality_and_retention.py42
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_camera_sense.py22
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_camera_wireless_profiles.py4
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_cellular_gateway_lan.py12
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_cellular_gateway_port_forwarding_rules.py4
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_cellular_sims.py16
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_live_tools_arp_table.py174
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_live_tools_arp_table_info.py79
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_live_tools_cable_test.py180
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_live_tools_cable_test_info.py79
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_live_tools_ping.py18
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_live_tools_ping_device.py6
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_live_tools_throughput_test.py174
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_live_tools_throughput_test_info.py79
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_live_tools_wake_on_lan.py186
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_live_tools_wake_on_lan_info.py79
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_sensor_relationships.py4
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_switch_ports.py213
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_switch_routing_interfaces.py90
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_switch_routing_interfaces_dhcp.py82
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_switch_routing_static_routes.py32
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_wireless_alternate_management_interface_ipv6.py89
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_wireless_bluetooth_settings.py12
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/devices_wireless_radio_settings.py12
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks.py45
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_alerts_settings.py18
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_appliance_content_filtering.py12
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_appliance_ports.py34
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_appliance_prefixes_delegated_statics.py36
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_appliance_rf_profiles.py252
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_appliance_rf_profiles_info.py90
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_appliance_security_intrusion.py12
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_appliance_security_malware.py24
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_appliance_single_lan.py12
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_appliance_ssids.py74
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_appliance_traffic_shaping_custom_performance_classes.py8
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_appliance_traffic_shaping_uplink_selection.py22
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_appliance_traffic_shaping_vpn_exclusions.py91
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_appliance_vlans.py209
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_appliance_vpn_bgp.py10
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_appliance_vpn_site_to_site_vpn.py12
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_bind.py4
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_camera_quality_retention_profiles.py64
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_camera_wireless_profiles.py18
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_cellular_gateway_dhcp.py12
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_cellular_gateway_subnet_pool.py12
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_clients_info.py98
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades.py24
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_rollbacks.py4
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_staged_events_defer.py2
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_staged_events_rollbacks.py2
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_staged_groups.py36
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_floor_plans.py54
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_group_policies.py72
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_meraki_auth_users.py57
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_mqtt_brokers.py8
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_netflow.py20
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_sensor_alerts_profiles.py36
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_settings.py18
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_checkin.py8
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_fields.py8
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_info.py8
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_install_apps.py93
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_lock.py12
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_modify_tags.py8
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_move.py12
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_reboot.py103
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_shutdown.py95
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_uninstall_apps.py91
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_wipe.py8
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_sm_profiles_info.py4
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_switch_access_policies.py186
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_switch_alternate_management_interface.py12
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_switch_dhcp_server_policy.py24
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_switch_dhcp_server_policy_arp_inspection_trusted_servers.py18
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_switch_qos_rules_order.py72
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_switch_routing_ospf.py36
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_switch_settings.py34
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_switch_stacks_routing_interfaces.py90
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_switch_stacks_routing_interfaces_dhcp.py82
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_switch_stacks_routing_static_routes.py32
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_traffic_analysis.py12
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_vlan_profiles.py260
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_vlan_profiles_assignments_by_device_info.py120
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_vlan_profiles_assignments_reassign.py93
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_vlan_profiles_info.py92
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_webhooks_http_servers.py30
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_webhooks_payload_templates.py36
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_alternate_management_interface.py24
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_bluetooth_settings.py34
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_ethernet_ports_profiles.py270
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_ethernet_ports_profiles_assign.py91
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_ethernet_ports_profiles_info.py102
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_ethernet_ports_profiles_set_default.py89
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_rf_profiles.py113
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_settings.py26
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids.py542
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_bonjour_forwarding.py6
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_device_type_group_policies.py10
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_eap_override.py24
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_firewall_l3_firewall_rules.py10
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_hotspot20.py58
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_identity_psks.py36
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_splash_settings.py132
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_traffic_shaping_rules.py10
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_vpn.py12
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations.py34
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_action_batches.py18
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_adaptive_policy_acls.py36
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_adaptive_policy_groups.py36
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_adaptive_policy_policies.py36
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_admins.py30
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_alerts_profiles.py58
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_appliance_traffic_shaping_vpn_exclusions_by_network_info.py112
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_appliance_uplinks_statuses_overview_info.py90
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_appliance_uplinks_usage_by_network_info.py102
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_branding_policies.py50
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_camera_boundaries_areas_by_device_info.py94
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_camera_boundaries_lines_by_device_info.py94
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_camera_detections_history_by_boundary_by_interval_info.py116
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_camera_permissions_info.py102
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_camera_roles.py252
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_camera_roles_info.py90
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_claim.py4
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_config_templates.py6
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_config_templates_switch_profiles_ports.py182
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_devices_availabilities_change_history_info.py136
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_devices_boots_history_info.py132
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_early_access_features_opt_ins.py12
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_firmware_upgrades_by_device_info.py8
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_firmware_upgrades_info.py26
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_info.py18
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_insight_monitored_media_servers.py18
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_inventory_claim.py4
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_inventory_onboarding_cloud_monitoring_export_events.py8
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_inventory_onboarding_cloud_monitoring_networks_info.py4
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_login_security.py96
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_networks_combine.py4
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_openapi_spec_info.py4
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_policy_objects.py66
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_policy_objects_groups.py12
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_saml_idps.py18
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_saml_roles.py36
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_sm_admins_roles.py256
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_sm_admins_roles_info.py108
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_sm_sentry_policies_assignments.py89
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_sm_sentry_policies_assignments_by_network_info.py112
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_snmp.py22
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_summary_top_networks_by_status_info.py108
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_webhooks_callbacks_statuses_info.py102
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_channel_utilization_by_device_info.py132
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_channel_utilization_by_network_info.py132
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_channel_utilization_history_by_device_by_interval_info.py132
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_channel_utilization_history_by_network_by_interval_info.py132
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_packet_loss_by_client_info.py136
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_packet_loss_by_device_info.py136
-rw-r--r--ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_packet_loss_by_network_info.py136
169 files changed, 9172 insertions, 2132 deletions
diff --git a/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_entitlements_info.py b/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_entitlements_info.py
new file mode 100644
index 000000000..b5af8055e
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_entitlements_info.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ skus=dict(type="list"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("skus") is not None:
+ new_object["skus"] = params.get(
+ "skus")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="licensing",
+ function='getAdministeredLicensingSubscriptionEntitlements',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_bind.py b/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_bind.py
new file mode 100644
index 000000000..e3cc7eba1
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_bind.py
@@ -0,0 +1,91 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguements specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ networkIds=dict(type="list"),
+ subscriptionId=dict(type="str"),
+ validate=dict(type="bool"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_object(self, params):
+ new_object = dict(
+ networkIds=params.get("networkIds"),
+ subscription_id=params.get("subscriptionId"),
+ validate=params.get("validate"),
+ )
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="licensing",
+ function='bindAdministeredLicensingSubscriptionSubscription',
+ op_modifies=True,
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_claim.py b/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_claim.py
new file mode 100644
index 000000000..cf02a8ac6
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_claim.py
@@ -0,0 +1,95 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguements specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ claimKey=dict(type="str"),
+ description=dict(type="str"),
+ name=dict(type="str"),
+ organizationId=dict(type="str"),
+ validate=dict(type="bool"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_object(self, params):
+ new_object = dict(
+ claimKey=params.get("claimKey"),
+ description=params.get("description"),
+ name=params.get("name"),
+ organizationId=params.get("organizationId"),
+ validate=params.get("validate"),
+ )
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="licensing",
+ function='claimAdministeredLicensingSubscriptionSubscriptions',
+ op_modifies=True,
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_claim_key_validate.py b/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_claim_key_validate.py
new file mode 100644
index 000000000..9113049d7
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_claim_key_validate.py
@@ -0,0 +1,87 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguements specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ claimKey=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_object(self, params):
+ new_object = dict(
+ claimKey=params.get("claimKey"),
+ )
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="licensing",
+ function='validateAdministeredLicensingSubscriptionSubscriptionsClaimKey',
+ op_modifies=True,
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_compliance_statuses_info.py b/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_compliance_statuses_info.py
new file mode 100644
index 000000000..ec2d035ab
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_compliance_statuses_info.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationIds=dict(type="list"),
+ subscriptionIds=dict(type="list"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationIds") is not None:
+ new_object["organizationIds"] = params.get(
+ "organizationIds")
+ if params.get("subscriptionIds") is not None:
+ new_object["subscriptionIds"] = params.get(
+ "subscriptionIds")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="licensing",
+ function='getAdministeredLicensingSubscriptionSubscriptionsComplianceStatuses',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_info.py b/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_info.py
new file mode 100644
index 000000000..8be76a060
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/administered_licensing_subscription_subscriptions_info.py
@@ -0,0 +1,128 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ startingAfter=dict(type="str"),
+ endingBefore=dict(type="str"),
+ subscriptionIds=dict(type="list"),
+ organizationIds=dict(type="list"),
+ statuses=dict(type="list"),
+ productTypes=dict(type="list"),
+ startDate=dict(type="str"),
+ endDate=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("startingAfter") is not None:
+ new_object["startingAfter"] = params.get(
+ "startingAfter")
+ if params.get("endingBefore") is not None:
+ new_object["endingBefore"] = params.get(
+ "endingBefore")
+ if params.get("subscriptionIds") is not None:
+ new_object["subscriptionIds"] = params.get(
+ "subscriptionIds")
+ if params.get("organizationIds") is not None:
+ new_object["organizationIds"] = params.get(
+ "organizationIds")
+ if params.get("statuses") is not None:
+ new_object["statuses"] = params.get(
+ "statuses")
+ if params.get("productTypes") is not None:
+ new_object["productTypes"] = params.get(
+ "productTypes")
+ if params.get("startDate") is not None:
+ new_object["startDate"] = params.get(
+ "startDate")
+ if params.get("endDate") is not None:
+ new_object["endDate"] = params.get(
+ "endDate")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="licensing",
+ function='getAdministeredLicensingSubscriptionSubscriptions',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices.py b/ansible_collections/cisco/meraki/plugins/action/devices.py
index df0edfd10..49d41b1a7 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices.py
@@ -32,16 +32,15 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- name=dict(type="str"),
- tags=dict(type="list"),
+ address=dict(type="str"),
+ floorPlanId=dict(type="str"),
lat=dict(type="float"),
lng=dict(type="float"),
- address=dict(type="str"),
- notes=dict(type="str"),
moveMapMarker=dict(type="bool"),
+ name=dict(type="str"),
+ notes=dict(type="str"),
switchProfileId=dict(type="str"),
- floorPlanId=dict(type="str"),
- mac=dict(type="str"),
+ tags=dict(type="list"),
serial=dict(type="str"),
organizationId=dict(type="str"),
))
@@ -58,16 +57,15 @@ class Devices(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
- tags=params.get("tags"),
+ address=params.get("address"),
+ floorPlanId=params.get("floorPlanId"),
lat=params.get("lat"),
lng=params.get("lng"),
- address=params.get("address"),
- notes=params.get("notes"),
moveMapMarker=params.get("moveMapMarker"),
+ name=params.get("name"),
+ notes=params.get("notes"),
switchProfileId=params.get("switchProfileId"),
- floorPlanId=params.get("floorPlanId"),
- mac=params.get("mac"),
+ tags=params.get("tags"),
serial=params.get("serial"),
organization_id=params.get("organizationId"),
)
@@ -130,36 +128,32 @@ class Devices(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('tags') is not None or self.new_object.get('tags') is not None:
- new_object_params['tags'] = self.new_object.get('tags') or \
- self.new_object.get('tags')
+ if self.new_object.get('address') is not None or self.new_object.get('address') is not None:
+ new_object_params['address'] = self.new_object.get('address') or \
+ self.new_object.get('address')
+ if self.new_object.get('floorPlanId') is not None or self.new_object.get('floor_plan_id') is not None:
+ new_object_params['floorPlanId'] = self.new_object.get('floorPlanId') or \
+ self.new_object.get('floor_plan_id')
if self.new_object.get('lat') is not None or self.new_object.get('lat') is not None:
new_object_params['lat'] = self.new_object.get('lat') or \
self.new_object.get('lat')
if self.new_object.get('lng') is not None or self.new_object.get('lng') is not None:
new_object_params['lng'] = self.new_object.get('lng') or \
self.new_object.get('lng')
- if self.new_object.get('address') is not None or self.new_object.get('address') is not None:
- new_object_params['address'] = self.new_object.get('address') or \
- self.new_object.get('address')
+ if self.new_object.get('moveMapMarker') is not None or self.new_object.get('move_map_marker') is not None:
+ new_object_params['moveMapMarker'] = self.new_object.get('moveMapMarker')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('notes') is not None or self.new_object.get('notes') is not None:
new_object_params['notes'] = self.new_object.get('notes') or \
self.new_object.get('notes')
- if self.new_object.get('moveMapMarker') is not None or self.new_object.get('move_map_marker') is not None:
- new_object_params['moveMapMarker'] = self.new_object.get(
- 'moveMapMarker')
if self.new_object.get('switchProfileId') is not None or self.new_object.get('switch_profile_id') is not None:
new_object_params['switchProfileId'] = self.new_object.get('switchProfileId') or \
self.new_object.get('switch_profile_id')
- if self.new_object.get('floorPlanId') is not None or self.new_object.get('floor_plan_id') is not None:
- new_object_params['floorPlanId'] = self.new_object.get('floorPlanId') or \
- self.new_object.get('floor_plan_id')
- if self.new_object.get('mac') is not None or self.new_object.get('mac') is not None:
- new_object_params['mac'] = self.new_object.get('mac') or \
- self.new_object.get('mac')
+ if self.new_object.get('tags') is not None or self.new_object.get('tags') is not None:
+ new_object_params['tags'] = self.new_object.get('tags') or \
+ self.new_object.get('tags')
if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
new_object_params['serial'] = self.new_object.get('serial') or \
self.new_object.get('serial')
@@ -238,16 +232,15 @@ class Devices(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
- ("tags", "tags"),
+ ("address", "address"),
+ ("floorPlanId", "floorPlanId"),
("lat", "lat"),
("lng", "lng"),
- ("address", "address"),
- ("notes", "notes"),
("moveMapMarker", "moveMapMarker"),
+ ("name", "name"),
+ ("notes", "notes"),
("switchProfileId", "switchProfileId"),
- ("floorPlanId", "floorPlanId"),
- ("mac", "mac"),
+ ("tags", "tags"),
("serial", "serial"),
("organizationId", "organizationId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_appliance_radio_settings.py b/ansible_collections/cisco/meraki/plugins/action/devices_appliance_radio_settings.py
new file mode 100644
index 000000000..783ba4821
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_appliance_radio_settings.py
@@ -0,0 +1,211 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or
+# https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+ meraki_compare_equality,
+ get_dict_result,
+)
+from ansible_collections.cisco.meraki.plugins.plugin_utils.exceptions import (
+ InconsistentParameters,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ state=dict(type="str", default="present", choices=["present"]),
+ fiveGhzSettings=dict(type="dict"),
+ rfProfileId=dict(type="str"),
+ twoFourGhzSettings=dict(type="dict"),
+ serial=dict(type="str"),
+))
+
+required_if = [
+ ("state", "present", ["serial"], True),
+]
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class DevicesApplianceRadioSettings(object):
+ def __init__(self, params, meraki):
+ self.meraki = meraki
+ self.new_object = dict(
+ fiveGhzSettings=params.get("fiveGhzSettings"),
+ rfProfileId=params.get("rfProfileId"),
+ twoFourGhzSettings=params.get("twoFourGhzSettings"),
+ serial=params.get("serial"),
+ )
+
+ def get_all_params(self, name=None, id=None):
+ new_object_params = {}
+ if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
+ new_object_params['serial'] = self.new_object.get('serial')
+ return new_object_params
+
+ def update_all_params(self):
+ new_object_params = {}
+ if self.new_object.get('fiveGhzSettings') is not None or self.new_object.get('five_ghz_settings') is not None:
+ new_object_params['fiveGhzSettings'] = self.new_object.get('fiveGhzSettings') or \
+ self.new_object.get('five_ghz_settings')
+ if self.new_object.get('rfProfileId') is not None or self.new_object.get('rf_profile_id') is not None:
+ new_object_params['rfProfileId'] = self.new_object.get('rfProfileId') or \
+ self.new_object.get('rf_profile_id')
+ if self.new_object.get('twoFourGhzSettings') is not None or self.new_object.get('two_four_ghz_settings') is not None:
+ new_object_params['twoFourGhzSettings'] = self.new_object.get('twoFourGhzSettings') or \
+ self.new_object.get('two_four_ghz_settings')
+ if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
+ new_object_params['serial'] = self.new_object.get('serial') or \
+ self.new_object.get('serial')
+ return new_object_params
+
+ def get_object_by_name(self, name):
+ result = None
+ # NOTE: Does not have a get by name method, using get all
+ try:
+ items = self.meraki.exec_meraki(
+ family="appliance",
+ function="getDeviceApplianceRadioSettings",
+ params=self.get_all_params(name=name),
+ )
+ if isinstance(items, dict):
+ if 'response' in items:
+ items = items.get('response')
+ result = get_dict_result(items, 'name', name)
+ if result is None:
+ result = items
+ except Exception as e:
+ print("Error: ", e)
+ result = None
+ return result
+
+ def get_object_by_id(self, id):
+ result = None
+ # NOTE: Does not have a get by id method or it is in another action
+ return result
+
+ def exists(self):
+ prev_obj = None
+ id_exists = False
+ name_exists = False
+ o_id = self.new_object.get("serial")
+ name = self.new_object.get("name")
+ if o_id:
+ prev_obj = self.get_object_by_name(o_id)
+ id_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if not id_exists and name:
+ prev_obj = self.get_object_by_name(name)
+ name_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if name_exists:
+ _id = prev_obj.get("id")
+ if id_exists and name_exists and o_id != _id:
+ raise InconsistentParameters(
+ "The 'id' and 'name' params don't refer to the same object")
+ if _id:
+ self.new_object.update(dict(id=_id))
+ it_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ return (it_exists, prev_obj)
+
+ def requires_update(self, current_obj):
+ requested_obj = self.new_object
+
+ obj_params = [
+ ("fiveGhzSettings", "fiveGhzSettings"),
+ ("rfProfileId", "rfProfileId"),
+ ("twoFourGhzSettings", "twoFourGhzSettings"),
+ ("serial", "serial"),
+ ]
+ # Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
+ # If any does not have eq params, it requires update
+ return any(not meraki_compare_equality(current_obj.get(meraki_param),
+ requested_obj.get(ansible_param))
+ for (meraki_param, ansible_param) in obj_params)
+
+ def update(self):
+ id = self.new_object.get("id")
+ name = self.new_object.get("name")
+ result = None
+ result = self.meraki.exec_meraki(
+ family="appliance",
+ function="updateDeviceApplianceRadioSettings",
+ params=self.update_all_params(),
+ op_modifies=True,
+ )
+ return result
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(self._task.args)
+ obj = DevicesApplianceRadioSettings(self._task.args, meraki)
+
+ state = self._task.args.get("state")
+
+ response = None
+ if state == "present":
+ (obj_exists, prev_obj) = obj.exists()
+ if obj_exists:
+ if obj.requires_update(prev_obj):
+ response = obj.update()
+ meraki.object_updated()
+ else:
+ response = prev_obj
+ meraki.object_already_present()
+ else:
+ meraki.fail_json(
+ "Object does not exists, plugin only has update")
+
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_appliance_radio_settings_info.py b/ansible_collections/cisco/meraki/plugins/action/devices_appliance_radio_settings_info.py
new file mode 100644
index 000000000..2ac8e4768
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_appliance_radio_settings_info.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ serial=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("serial") is not None:
+ new_object["serial"] = params.get(
+ "serial")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="appliance",
+ function='getDeviceApplianceRadioSettings',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_blink_leds.py b/ansible_collections/cisco/meraki/plugins/action/devices_blink_leds.py
index d6e157172..010922bcd 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_blink_leds.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_blink_leds.py
@@ -26,8 +26,8 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
duration=dict(type="int"),
- period=dict(type="int"),
duty=dict(type="int"),
+ period=dict(type="int"),
serial=dict(type="str"),
))
@@ -68,8 +68,8 @@ class ActionModule(ActionBase):
def get_object(self, params):
new_object = dict(
duration=params.get("duration"),
- period=params.get("period"),
duty=params.get("duty"),
+ period=params.get("period"),
serial=params.get("serial"),
)
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_camera_custom_analytics.py b/ansible_collections/cisco/meraki/plugins/action/devices_camera_custom_analytics.py
index 92f3aa3ae..7493fe9b4 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_camera_custom_analytics.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_camera_custom_analytics.py
@@ -32,8 +32,8 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- enabled=dict(type="bool"),
artifactId=dict(type="str"),
+ enabled=dict(type="bool"),
parameters=dict(type="list"),
serial=dict(type="str"),
))
@@ -50,8 +50,8 @@ class DevicesCameraCustomAnalytics(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- enabled=params.get("enabled"),
artifactId=params.get("artifactId"),
+ enabled=params.get("enabled"),
parameters=params.get("parameters"),
serial=params.get("serial"),
)
@@ -64,11 +64,11 @@ class DevicesCameraCustomAnalytics(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
- new_object_params['enabled'] = self.new_object.get('enabled')
if self.new_object.get('artifactId') is not None or self.new_object.get('artifact_id') is not None:
new_object_params['artifactId'] = self.new_object.get('artifactId') or \
self.new_object.get('artifact_id')
+ if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
+ new_object_params['enabled'] = self.new_object.get('enabled')
if self.new_object.get('parameters') is not None or self.new_object.get('parameters') is not None:
new_object_params['parameters'] = self.new_object.get('parameters') or \
self.new_object.get('parameters')
@@ -128,8 +128,8 @@ class DevicesCameraCustomAnalytics(object):
requested_obj = self.new_object
obj_params = [
- ("enabled", "enabled"),
("artifactId", "artifactId"),
+ ("enabled", "enabled"),
("parameters", "parameters"),
("serial", "serial"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_camera_generate_snapshot.py b/ansible_collections/cisco/meraki/plugins/action/devices_camera_generate_snapshot.py
index 8b7e68487..25f923011 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_camera_generate_snapshot.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_camera_generate_snapshot.py
@@ -25,8 +25,8 @@ from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
- timestamp=dict(type="str"),
fullframe=dict(type="bool"),
+ timestamp=dict(type="str"),
serial=dict(type="str"),
))
@@ -66,8 +66,8 @@ class ActionModule(ActionBase):
def get_object(self, params):
new_object = dict(
- timestamp=params.get("timestamp"),
fullframe=params.get("fullframe"),
+ timestamp=params.get("timestamp"),
serial=params.get("serial"),
)
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_camera_quality_and_retention.py b/ansible_collections/cisco/meraki/plugins/action/devices_camera_quality_and_retention.py
index b7781783a..7b5056cf0 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_camera_quality_and_retention.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_camera_quality_and_retention.py
@@ -32,13 +32,13 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- profileId=dict(type="str"),
- motionBasedRetentionEnabled=dict(type="bool"),
audioRecordingEnabled=dict(type="bool"),
- restrictedBandwidthModeEnabled=dict(type="bool"),
+ motionBasedRetentionEnabled=dict(type="bool"),
+ motionDetectorVersion=dict(type="int"),
+ profileId=dict(type="str"),
quality=dict(type="str"),
resolution=dict(type="str"),
- motionDetectorVersion=dict(type="int"),
+ restrictedBandwidthModeEnabled=dict(type="bool"),
serial=dict(type="str"),
))
@@ -54,13 +54,13 @@ class DevicesCameraQualityAndRetention(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- profileId=params.get("profileId"),
- motionBasedRetentionEnabled=params.get("motionBasedRetentionEnabled"),
audioRecordingEnabled=params.get("audioRecordingEnabled"),
- restrictedBandwidthModeEnabled=params.get("restrictedBandwidthModeEnabled"),
+ motionBasedRetentionEnabled=params.get("motionBasedRetentionEnabled"),
+ motionDetectorVersion=params.get("motionDetectorVersion"),
+ profileId=params.get("profileId"),
quality=params.get("quality"),
resolution=params.get("resolution"),
- motionDetectorVersion=params.get("motionDetectorVersion"),
+ restrictedBandwidthModeEnabled=params.get("restrictedBandwidthModeEnabled"),
serial=params.get("serial"),
)
@@ -72,24 +72,24 @@ class DevicesCameraQualityAndRetention(object):
def update_all_params(self):
new_object_params = {}
+ if self.new_object.get('audioRecordingEnabled') is not None or self.new_object.get('audio_recording_enabled') is not None:
+ new_object_params['audioRecordingEnabled'] = self.new_object.get('audioRecordingEnabled')
+ if self.new_object.get('motionBasedRetentionEnabled') is not None or self.new_object.get('motion_based_retention_enabled') is not None:
+ new_object_params['motionBasedRetentionEnabled'] = self.new_object.get('motionBasedRetentionEnabled')
+ if self.new_object.get('motionDetectorVersion') is not None or self.new_object.get('motion_detector_version') is not None:
+ new_object_params['motionDetectorVersion'] = self.new_object.get('motionDetectorVersion') or \
+ self.new_object.get('motion_detector_version')
if self.new_object.get('profileId') is not None or self.new_object.get('profile_id') is not None:
new_object_params['profileId'] = self.new_object.get('profileId') or \
self.new_object.get('profile_id')
- if self.new_object.get('motionBasedRetentionEnabled') is not None or self.new_object.get('motion_based_retention_enabled') is not None:
- new_object_params['motionBasedRetentionEnabled'] = self.new_object.get('motionBasedRetentionEnabled')
- if self.new_object.get('audioRecordingEnabled') is not None or self.new_object.get('audio_recording_enabled') is not None:
- new_object_params['audioRecordingEnabled'] = self.new_object.get('audioRecordingEnabled')
- if self.new_object.get('restrictedBandwidthModeEnabled') is not None or self.new_object.get('restricted_bandwidth_mode_enabled') is not None:
- new_object_params['restrictedBandwidthModeEnabled'] = self.new_object.get('restrictedBandwidthModeEnabled')
if self.new_object.get('quality') is not None or self.new_object.get('quality') is not None:
new_object_params['quality'] = self.new_object.get('quality') or \
self.new_object.get('quality')
if self.new_object.get('resolution') is not None or self.new_object.get('resolution') is not None:
new_object_params['resolution'] = self.new_object.get('resolution') or \
self.new_object.get('resolution')
- if self.new_object.get('motionDetectorVersion') is not None or self.new_object.get('motion_detector_version') is not None:
- new_object_params['motionDetectorVersion'] = self.new_object.get('motionDetectorVersion') or \
- self.new_object.get('motion_detector_version')
+ if self.new_object.get('restrictedBandwidthModeEnabled') is not None or self.new_object.get('restricted_bandwidth_mode_enabled') is not None:
+ new_object_params['restrictedBandwidthModeEnabled'] = self.new_object.get('restrictedBandwidthModeEnabled')
if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
new_object_params['serial'] = self.new_object.get('serial') or \
self.new_object.get('serial')
@@ -146,13 +146,13 @@ class DevicesCameraQualityAndRetention(object):
requested_obj = self.new_object
obj_params = [
- ("profileId", "profileId"),
- ("motionBasedRetentionEnabled", "motionBasedRetentionEnabled"),
("audioRecordingEnabled", "audioRecordingEnabled"),
- ("restrictedBandwidthModeEnabled", "restrictedBandwidthModeEnabled"),
+ ("motionBasedRetentionEnabled", "motionBasedRetentionEnabled"),
+ ("motionDetectorVersion", "motionDetectorVersion"),
+ ("profileId", "profileId"),
("quality", "quality"),
("resolution", "resolution"),
- ("motionDetectorVersion", "motionDetectorVersion"),
+ ("restrictedBandwidthModeEnabled", "restrictedBandwidthModeEnabled"),
("serial", "serial"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_camera_sense.py b/ansible_collections/cisco/meraki/plugins/action/devices_camera_sense.py
index 3cc8dca92..c95304f52 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_camera_sense.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_camera_sense.py
@@ -32,10 +32,10 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- senseEnabled=dict(type="bool"),
- mqttBrokerId=dict(type="str"),
audioDetection=dict(type="dict"),
detectionModelId=dict(type="str"),
+ mqttBrokerId=dict(type="str"),
+ senseEnabled=dict(type="bool"),
serial=dict(type="str"),
))
@@ -51,10 +51,10 @@ class DevicesCameraSense(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- senseEnabled=params.get("senseEnabled"),
- mqttBrokerId=params.get("mqttBrokerId"),
audioDetection=params.get("audioDetection"),
detectionModelId=params.get("detectionModelId"),
+ mqttBrokerId=params.get("mqttBrokerId"),
+ senseEnabled=params.get("senseEnabled"),
serial=params.get("serial"),
)
@@ -66,17 +66,17 @@ class DevicesCameraSense(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('senseEnabled') is not None or self.new_object.get('sense_enabled') is not None:
- new_object_params['senseEnabled'] = self.new_object.get('senseEnabled')
- if self.new_object.get('mqttBrokerId') is not None or self.new_object.get('mqtt_broker_id') is not None:
- new_object_params['mqttBrokerId'] = self.new_object.get('mqttBrokerId') or \
- self.new_object.get('mqtt_broker_id')
if self.new_object.get('audioDetection') is not None or self.new_object.get('audio_detection') is not None:
new_object_params['audioDetection'] = self.new_object.get('audioDetection') or \
self.new_object.get('audio_detection')
if self.new_object.get('detectionModelId') is not None or self.new_object.get('detection_model_id') is not None:
new_object_params['detectionModelId'] = self.new_object.get('detectionModelId') or \
self.new_object.get('detection_model_id')
+ if self.new_object.get('mqttBrokerId') is not None or self.new_object.get('mqtt_broker_id') is not None:
+ new_object_params['mqttBrokerId'] = self.new_object.get('mqttBrokerId') or \
+ self.new_object.get('mqtt_broker_id')
+ if self.new_object.get('senseEnabled') is not None or self.new_object.get('sense_enabled') is not None:
+ new_object_params['senseEnabled'] = self.new_object.get('senseEnabled')
if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
new_object_params['serial'] = self.new_object.get('serial') or \
self.new_object.get('serial')
@@ -133,10 +133,10 @@ class DevicesCameraSense(object):
requested_obj = self.new_object
obj_params = [
- ("senseEnabled", "senseEnabled"),
- ("mqttBrokerId", "mqttBrokerId"),
("audioDetection", "audioDetection"),
("detectionModelId", "detectionModelId"),
+ ("mqttBrokerId", "mqttBrokerId"),
+ ("senseEnabled", "senseEnabled"),
("serial", "serial"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_camera_wireless_profiles.py b/ansible_collections/cisco/meraki/plugins/action/devices_camera_wireless_profiles.py
index 8153293df..f891d8c5b 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_camera_wireless_profiles.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_camera_wireless_profiles.py
@@ -78,8 +78,8 @@ class DevicesCameraWirelessProfiles(object):
params=self.get_all_params(name=name),
)
if isinstance(items, dict):
- if 'response' in items:
- items = items.get('response')
+ if 'ids' in items:
+ items = items.get('ids')
result = get_dict_result(items, 'name', name)
if result is None:
result = items
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_cellular_gateway_lan.py b/ansible_collections/cisco/meraki/plugins/action/devices_cellular_gateway_lan.py
index ddb0b4d97..048e8a28b 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_cellular_gateway_lan.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_cellular_gateway_lan.py
@@ -32,8 +32,8 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- reservedIpRanges=dict(type="list"),
fixedIpAssignments=dict(type="list"),
+ reservedIpRanges=dict(type="list"),
serial=dict(type="str"),
))
@@ -49,8 +49,8 @@ class DevicesCellularGatewayLan(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- reservedIpRanges=params.get("reservedIpRanges"),
fixedIpAssignments=params.get("fixedIpAssignments"),
+ reservedIpRanges=params.get("reservedIpRanges"),
serial=params.get("serial"),
)
@@ -62,12 +62,12 @@ class DevicesCellularGatewayLan(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('reservedIpRanges') is not None or self.new_object.get('reserved_ip_ranges') is not None:
- new_object_params['reservedIpRanges'] = self.new_object.get('reservedIpRanges') or \
- self.new_object.get('reserved_ip_ranges')
if self.new_object.get('fixedIpAssignments') is not None or self.new_object.get('fixed_ip_assignments') is not None:
new_object_params['fixedIpAssignments'] = self.new_object.get('fixedIpAssignments') or \
self.new_object.get('fixed_ip_assignments')
+ if self.new_object.get('reservedIpRanges') is not None or self.new_object.get('reserved_ip_ranges') is not None:
+ new_object_params['reservedIpRanges'] = self.new_object.get('reservedIpRanges') or \
+ self.new_object.get('reserved_ip_ranges')
if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
new_object_params['serial'] = self.new_object.get('serial') or \
self.new_object.get('serial')
@@ -124,8 +124,8 @@ class DevicesCellularGatewayLan(object):
requested_obj = self.new_object
obj_params = [
- ("reservedIpRanges", "reservedIpRanges"),
("fixedIpAssignments", "fixedIpAssignments"),
+ ("reservedIpRanges", "reservedIpRanges"),
("serial", "serial"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_cellular_gateway_port_forwarding_rules.py b/ansible_collections/cisco/meraki/plugins/action/devices_cellular_gateway_port_forwarding_rules.py
index 59a6ddf66..cb8693d61 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_cellular_gateway_port_forwarding_rules.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_cellular_gateway_port_forwarding_rules.py
@@ -78,8 +78,8 @@ class DevicesCellularGatewayPortForwardingRules(object):
params=self.get_all_params(name=name),
)
if isinstance(items, dict):
- if 'response' in items:
- items = items.get('response')
+ if 'rules' in items:
+ items = items.get('rules')
result = get_dict_result(items, 'name', name)
if result is None:
result = items
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_cellular_sims.py b/ansible_collections/cisco/meraki/plugins/action/devices_cellular_sims.py
index 93e187918..d00c47622 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_cellular_sims.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_cellular_sims.py
@@ -32,8 +32,8 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- sims=dict(type="list"),
simFailover=dict(type="dict"),
+ sims=dict(type="list"),
serial=dict(type="str"),
))
@@ -49,8 +49,8 @@ class DevicesCellularSims(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- sims=params.get("sims"),
simFailover=params.get("simFailover"),
+ sims=params.get("sims"),
serial=params.get("serial"),
)
@@ -62,12 +62,12 @@ class DevicesCellularSims(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('sims') is not None or self.new_object.get('sims') is not None:
- new_object_params['sims'] = self.new_object.get('sims') or \
- self.new_object.get('sims')
if self.new_object.get('simFailover') is not None or self.new_object.get('sim_failover') is not None:
new_object_params['simFailover'] = self.new_object.get('simFailover') or \
self.new_object.get('sim_failover')
+ if self.new_object.get('sims') is not None or self.new_object.get('sims') is not None:
+ new_object_params['sims'] = self.new_object.get('sims') or \
+ self.new_object.get('sims')
if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
new_object_params['serial'] = self.new_object.get('serial') or \
self.new_object.get('serial')
@@ -83,8 +83,8 @@ class DevicesCellularSims(object):
params=self.get_all_params(name=name),
)
if isinstance(items, dict):
- if 'response' in items:
- items = items.get('response')
+ if 'sims' in items:
+ items = items.get('sims')
result = get_dict_result(items, 'name', name)
if result is None:
result = items
@@ -124,8 +124,8 @@ class DevicesCellularSims(object):
requested_obj = self.new_object
obj_params = [
- ("sims", "sims"),
("simFailover", "simFailover"),
+ ("sims", "sims"),
("serial", "serial"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_arp_table.py b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_arp_table.py
new file mode 100644
index 000000000..3c80f50c5
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_arp_table.py
@@ -0,0 +1,174 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or
+# https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+ meraki_compare_equality,
+)
+from ansible_collections.cisco.meraki.plugins.plugin_utils.exceptions import (
+ InconsistentParameters,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ state=dict(type="str", default="present", choices=["present"]),
+ callback=dict(type="dict"),
+ serial=dict(type="str"),
+))
+
+required_if = [
+ ("state", "present", ["serial"], True),
+]
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class DevicesLiveToolsArpTable(object):
+ def __init__(self, params, meraki):
+ self.meraki = meraki
+ self.new_object = dict(
+ callback=params.get("callback"),
+ serial=params.get("serial"),
+ )
+
+ def create_params(self):
+ new_object_params = {}
+ if self.new_object.get('callback') is not None or self.new_object.get('callback') is not None:
+ new_object_params['callback'] = self.new_object.get('callback') or \
+ self.new_object.get('callback')
+ if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
+ new_object_params['serial'] = self.new_object.get('serial') or \
+ self.new_object.get('serial')
+ return new_object_params
+
+ def get_object_by_name(self, name):
+ result = None
+ # NOTE: Does not have a get by name and get all
+ return result
+
+ def get_object_by_id(self, id):
+ result = None
+ # NOTE: Does not have a get by id method or it is in another action
+ return result
+
+ def exists(self):
+ prev_obj = None
+ id_exists = False
+ name_exists = False
+ o_id = self.new_object.get("serial")
+ name = self.new_object.get("name")
+ if o_id:
+ prev_obj = self.get_object_by_name(o_id)
+ id_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if not id_exists and name:
+ prev_obj = self.get_object_by_name(name)
+ name_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if name_exists:
+ _id = prev_obj.get("id")
+ if id_exists and name_exists and o_id != _id:
+ raise InconsistentParameters(
+ "The 'id' and 'name' params don't refer to the same object")
+ if _id:
+ self.new_object.update(dict(id=_id))
+ it_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ return (it_exists, prev_obj)
+
+ def requires_update(self, current_obj):
+ requested_obj = self.new_object
+
+ obj_params = [
+ ("callback", "callback"),
+ ("serial", "serial"),
+ ]
+ # Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
+ # If any does not have eq params, it requires update
+ return any(not meraki_compare_equality(current_obj.get(meraki_param),
+ requested_obj.get(ansible_param))
+ for (meraki_param, ansible_param) in obj_params)
+
+ def create(self):
+ result = self.meraki.exec_meraki(
+ family="devices",
+ function="createDeviceLiveToolsArpTable",
+ params=self.create_params(),
+ op_modifies=True,
+ )
+ return result
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(self._task.args)
+ obj = DevicesLiveToolsArpTable(self._task.args, meraki)
+
+ state = self._task.args.get("state")
+
+ response = None
+ if state == "present":
+ (obj_exists, prev_obj) = obj.exists()
+ if obj_exists:
+ if obj.requires_update(prev_obj):
+ response = prev_obj
+ meraki.object_present_and_different()
+ else:
+ response = prev_obj
+ meraki.object_already_present()
+ else:
+ response = obj.create()
+ meraki.object_created()
+
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_arp_table_info.py b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_arp_table_info.py
new file mode 100644
index 000000000..8e972db51
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_arp_table_info.py
@@ -0,0 +1,79 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ # NOTE: Does not have a get all method or it is in another action
+ response = None
+ meraki.object_modify_result(changed=False, result="Module does not have get all, check arguments of module")
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_cable_test.py b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_cable_test.py
new file mode 100644
index 000000000..ec58e54fc
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_cable_test.py
@@ -0,0 +1,180 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or
+# https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+ meraki_compare_equality,
+)
+from ansible_collections.cisco.meraki.plugins.plugin_utils.exceptions import (
+ InconsistentParameters,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ state=dict(type="str", default="present", choices=["present"]),
+ callback=dict(type="dict"),
+ ports=dict(type="list"),
+ serial=dict(type="str"),
+))
+
+required_if = [
+ ("state", "present", ["serial"], True),
+]
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class DevicesLiveToolsCableTest(object):
+ def __init__(self, params, meraki):
+ self.meraki = meraki
+ self.new_object = dict(
+ callback=params.get("callback"),
+ ports=params.get("ports"),
+ serial=params.get("serial"),
+ )
+
+ def create_params(self):
+ new_object_params = {}
+ if self.new_object.get('callback') is not None or self.new_object.get('callback') is not None:
+ new_object_params['callback'] = self.new_object.get('callback') or \
+ self.new_object.get('callback')
+ if self.new_object.get('ports') is not None or self.new_object.get('ports') is not None:
+ new_object_params['ports'] = self.new_object.get('ports') or \
+ self.new_object.get('ports')
+ if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
+ new_object_params['serial'] = self.new_object.get('serial') or \
+ self.new_object.get('serial')
+ return new_object_params
+
+ def get_object_by_name(self, name):
+ result = None
+ # NOTE: Does not have a get by name and get all
+ return result
+
+ def get_object_by_id(self, id):
+ result = None
+ # NOTE: Does not have a get by id method or it is in another action
+ return result
+
+ def exists(self):
+ prev_obj = None
+ id_exists = False
+ name_exists = False
+ o_id = self.new_object.get("serial")
+ name = self.new_object.get("name")
+ if o_id:
+ prev_obj = self.get_object_by_name(o_id)
+ id_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if not id_exists and name:
+ prev_obj = self.get_object_by_name(name)
+ name_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if name_exists:
+ _id = prev_obj.get("id")
+ if id_exists and name_exists and o_id != _id:
+ raise InconsistentParameters(
+ "The 'id' and 'name' params don't refer to the same object")
+ if _id:
+ self.new_object.update(dict(id=_id))
+ it_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ return (it_exists, prev_obj)
+
+ def requires_update(self, current_obj):
+ requested_obj = self.new_object
+
+ obj_params = [
+ ("callback", "callback"),
+ ("ports", "ports"),
+ ("serial", "serial"),
+ ]
+ # Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
+ # If any does not have eq params, it requires update
+ return any(not meraki_compare_equality(current_obj.get(meraki_param),
+ requested_obj.get(ansible_param))
+ for (meraki_param, ansible_param) in obj_params)
+
+ def create(self):
+ result = self.meraki.exec_meraki(
+ family="devices",
+ function="createDeviceLiveToolsCableTest",
+ params=self.create_params(),
+ op_modifies=True,
+ )
+ return result
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(self._task.args)
+ obj = DevicesLiveToolsCableTest(self._task.args, meraki)
+
+ state = self._task.args.get("state")
+
+ response = None
+ if state == "present":
+ (obj_exists, prev_obj) = obj.exists()
+ if obj_exists:
+ if obj.requires_update(prev_obj):
+ response = prev_obj
+ meraki.object_present_and_different()
+ else:
+ response = prev_obj
+ meraki.object_already_present()
+ else:
+ response = obj.create()
+ meraki.object_created()
+
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_cable_test_info.py b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_cable_test_info.py
new file mode 100644
index 000000000..8e972db51
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_cable_test_info.py
@@ -0,0 +1,79 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ # NOTE: Does not have a get all method or it is in another action
+ response = None
+ meraki.object_modify_result(changed=False, result="Module does not have get all, check arguments of module")
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_ping.py b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_ping.py
index ba5ef2d67..bd91ad77e 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_ping.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_ping.py
@@ -31,8 +31,9 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- target=dict(type="str"),
+ callback=dict(type="dict"),
count=dict(type="int"),
+ target=dict(type="str"),
serial=dict(type="str"),
id=dict(type="str"),
))
@@ -49,8 +50,9 @@ class DevicesLiveToolsPing(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- target=params.get("target"),
+ callback=params.get("callback"),
count=params.get("count"),
+ target=params.get("target"),
serial=params.get("serial"),
id=params.get("id"),
)
@@ -65,12 +67,15 @@ class DevicesLiveToolsPing(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('target') is not None or self.new_object.get('target') is not None:
- new_object_params['target'] = self.new_object.get('target') or \
- self.new_object.get('target')
+ if self.new_object.get('callback') is not None or self.new_object.get('callback') is not None:
+ new_object_params['callback'] = self.new_object.get('callback') or \
+ self.new_object.get('callback')
if self.new_object.get('count') is not None or self.new_object.get('count') is not None:
new_object_params['count'] = self.new_object.get('count') or \
self.new_object.get('count')
+ if self.new_object.get('target') is not None or self.new_object.get('target') is not None:
+ new_object_params['target'] = self.new_object.get('target') or \
+ self.new_object.get('target')
if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
new_object_params['serial'] = self.new_object.get('serial') or \
self.new_object.get('serial')
@@ -126,8 +131,9 @@ class DevicesLiveToolsPing(object):
requested_obj = self.new_object
obj_params = [
- ("target", "target"),
+ ("callback", "callback"),
("count", "count"),
+ ("target", "target"),
("serial", "serial"),
("id", "id"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_ping_device.py b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_ping_device.py
index cb00a6c6b..4738511fb 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_ping_device.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_ping_device.py
@@ -31,6 +31,7 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
+ callback=dict(type="dict"),
count=dict(type="int"),
serial=dict(type="str"),
id=dict(type="str"),
@@ -48,6 +49,7 @@ class DevicesLiveToolsPingDevice(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ callback=params.get("callback"),
count=params.get("count"),
serial=params.get("serial"),
id=params.get("id"),
@@ -63,6 +65,9 @@ class DevicesLiveToolsPingDevice(object):
def create_params(self):
new_object_params = {}
+ if self.new_object.get('callback') is not None or self.new_object.get('callback') is not None:
+ new_object_params['callback'] = self.new_object.get('callback') or \
+ self.new_object.get('callback')
if self.new_object.get('count') is not None or self.new_object.get('count') is not None:
new_object_params['count'] = self.new_object.get('count') or \
self.new_object.get('count')
@@ -121,6 +126,7 @@ class DevicesLiveToolsPingDevice(object):
requested_obj = self.new_object
obj_params = [
+ ("callback", "callback"),
("count", "count"),
("serial", "serial"),
("id", "id"),
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_throughput_test.py b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_throughput_test.py
new file mode 100644
index 000000000..50edfcffd
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_throughput_test.py
@@ -0,0 +1,174 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or
+# https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+ meraki_compare_equality,
+)
+from ansible_collections.cisco.meraki.plugins.plugin_utils.exceptions import (
+ InconsistentParameters,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ state=dict(type="str", default="present", choices=["present"]),
+ callback=dict(type="dict"),
+ serial=dict(type="str"),
+))
+
+required_if = [
+ ("state", "present", ["serial"], True),
+]
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class DevicesLiveToolsThroughputTest(object):
+ def __init__(self, params, meraki):
+ self.meraki = meraki
+ self.new_object = dict(
+ callback=params.get("callback"),
+ serial=params.get("serial"),
+ )
+
+ def create_params(self):
+ new_object_params = {}
+ if self.new_object.get('callback') is not None or self.new_object.get('callback') is not None:
+ new_object_params['callback'] = self.new_object.get('callback') or \
+ self.new_object.get('callback')
+ if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
+ new_object_params['serial'] = self.new_object.get('serial') or \
+ self.new_object.get('serial')
+ return new_object_params
+
+ def get_object_by_name(self, name):
+ result = None
+ # NOTE: Does not have a get by name and get all
+ return result
+
+ def get_object_by_id(self, id):
+ result = None
+ # NOTE: Does not have a get by id method or it is in another action
+ return result
+
+ def exists(self):
+ prev_obj = None
+ id_exists = False
+ name_exists = False
+ o_id = self.new_object.get("serial")
+ name = self.new_object.get("name")
+ if o_id:
+ prev_obj = self.get_object_by_name(o_id)
+ id_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if not id_exists and name:
+ prev_obj = self.get_object_by_name(name)
+ name_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if name_exists:
+ _id = prev_obj.get("id")
+ if id_exists and name_exists and o_id != _id:
+ raise InconsistentParameters(
+ "The 'id' and 'name' params don't refer to the same object")
+ if _id:
+ self.new_object.update(dict(id=_id))
+ it_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ return (it_exists, prev_obj)
+
+ def requires_update(self, current_obj):
+ requested_obj = self.new_object
+
+ obj_params = [
+ ("callback", "callback"),
+ ("serial", "serial"),
+ ]
+ # Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
+ # If any does not have eq params, it requires update
+ return any(not meraki_compare_equality(current_obj.get(meraki_param),
+ requested_obj.get(ansible_param))
+ for (meraki_param, ansible_param) in obj_params)
+
+ def create(self):
+ result = self.meraki.exec_meraki(
+ family="devices",
+ function="createDeviceLiveToolsThroughputTest",
+ params=self.create_params(),
+ op_modifies=True,
+ )
+ return result
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(self._task.args)
+ obj = DevicesLiveToolsThroughputTest(self._task.args, meraki)
+
+ state = self._task.args.get("state")
+
+ response = None
+ if state == "present":
+ (obj_exists, prev_obj) = obj.exists()
+ if obj_exists:
+ if obj.requires_update(prev_obj):
+ response = prev_obj
+ meraki.object_present_and_different()
+ else:
+ response = prev_obj
+ meraki.object_already_present()
+ else:
+ response = obj.create()
+ meraki.object_created()
+
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_throughput_test_info.py b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_throughput_test_info.py
new file mode 100644
index 000000000..8e972db51
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_throughput_test_info.py
@@ -0,0 +1,79 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ # NOTE: Does not have a get all method or it is in another action
+ response = None
+ meraki.object_modify_result(changed=False, result="Module does not have get all, check arguments of module")
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_wake_on_lan.py b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_wake_on_lan.py
new file mode 100644
index 000000000..4fc6873e4
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_wake_on_lan.py
@@ -0,0 +1,186 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or
+# https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+ meraki_compare_equality,
+)
+from ansible_collections.cisco.meraki.plugins.plugin_utils.exceptions import (
+ InconsistentParameters,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ state=dict(type="str", default="present", choices=["present"]),
+ callback=dict(type="dict"),
+ mac=dict(type="str"),
+ vlanId=dict(type="int"),
+ serial=dict(type="str"),
+))
+
+required_if = [
+ ("state", "present", ["serial"], True),
+]
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class DevicesLiveToolsWakeOnLan(object):
+ def __init__(self, params, meraki):
+ self.meraki = meraki
+ self.new_object = dict(
+ callback=params.get("callback"),
+ mac=params.get("mac"),
+ vlanId=params.get("vlanId"),
+ serial=params.get("serial"),
+ )
+
+ def create_params(self):
+ new_object_params = {}
+ if self.new_object.get('callback') is not None or self.new_object.get('callback') is not None:
+ new_object_params['callback'] = self.new_object.get('callback') or \
+ self.new_object.get('callback')
+ if self.new_object.get('mac') is not None or self.new_object.get('mac') is not None:
+ new_object_params['mac'] = self.new_object.get('mac') or \
+ self.new_object.get('mac')
+ if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None:
+ new_object_params['vlanId'] = self.new_object.get('vlanId') or \
+ self.new_object.get('vlan_id')
+ if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
+ new_object_params['serial'] = self.new_object.get('serial') or \
+ self.new_object.get('serial')
+ return new_object_params
+
+ def get_object_by_name(self, name):
+ result = None
+ # NOTE: Does not have a get by name and get all
+ return result
+
+ def get_object_by_id(self, id):
+ result = None
+ # NOTE: Does not have a get by id method or it is in another action
+ return result
+
+ def exists(self):
+ prev_obj = None
+ id_exists = False
+ name_exists = False
+ o_id = self.new_object.get("serial")
+ name = self.new_object.get("name")
+ if o_id:
+ prev_obj = self.get_object_by_name(o_id)
+ id_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if not id_exists and name:
+ prev_obj = self.get_object_by_name(name)
+ name_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if name_exists:
+ _id = prev_obj.get("id")
+ if id_exists and name_exists and o_id != _id:
+ raise InconsistentParameters(
+ "The 'id' and 'name' params don't refer to the same object")
+ if _id:
+ self.new_object.update(dict(id=_id))
+ it_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ return (it_exists, prev_obj)
+
+ def requires_update(self, current_obj):
+ requested_obj = self.new_object
+
+ obj_params = [
+ ("callback", "callback"),
+ ("mac", "mac"),
+ ("vlanId", "vlanId"),
+ ("serial", "serial"),
+ ]
+ # Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
+ # If any does not have eq params, it requires update
+ return any(not meraki_compare_equality(current_obj.get(meraki_param),
+ requested_obj.get(ansible_param))
+ for (meraki_param, ansible_param) in obj_params)
+
+ def create(self):
+ result = self.meraki.exec_meraki(
+ family="devices",
+ function="createDeviceLiveToolsWakeOnLan",
+ params=self.create_params(),
+ op_modifies=True,
+ )
+ return result
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(self._task.args)
+ obj = DevicesLiveToolsWakeOnLan(self._task.args, meraki)
+
+ state = self._task.args.get("state")
+
+ response = None
+ if state == "present":
+ (obj_exists, prev_obj) = obj.exists()
+ if obj_exists:
+ if obj.requires_update(prev_obj):
+ response = prev_obj
+ meraki.object_present_and_different()
+ else:
+ response = prev_obj
+ meraki.object_already_present()
+ else:
+ response = obj.create()
+ meraki.object_created()
+
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_wake_on_lan_info.py b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_wake_on_lan_info.py
new file mode 100644
index 000000000..8e972db51
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_live_tools_wake_on_lan_info.py
@@ -0,0 +1,79 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ # NOTE: Does not have a get all method or it is in another action
+ response = None
+ meraki.object_modify_result(changed=False, result="Module does not have get all, check arguments of module")
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_sensor_relationships.py b/ansible_collections/cisco/meraki/plugins/action/devices_sensor_relationships.py
index 75c20b830..b55f44b6e 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_sensor_relationships.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_sensor_relationships.py
@@ -78,8 +78,8 @@ class DevicesSensorRelationships(object):
params=self.get_all_params(name=name),
)
if isinstance(items, dict):
- if 'response' in items:
- items = items.get('response')
+ if 'livestream' in items:
+ items = items.get('livestream')
result = get_dict_result(items, 'name', name)
if result is None:
result = items
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_switch_ports.py b/ansible_collections/cisco/meraki/plugins/action/devices_switch_ports.py
index 659e6a4f8..44a238eb2 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_switch_ports.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_switch_ports.py
@@ -32,31 +32,31 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- name=dict(type="str"),
- tags=dict(type="list"),
- enabled=dict(type="bool"),
- poeEnabled=dict(type="bool"),
- type=dict(type="str"),
- vlan=dict(type="int"),
- voiceVlan=dict(type="int"),
+ accessPolicyNumber=dict(type="int"),
+ accessPolicyType=dict(type="str"),
+ adaptivePolicyGroupId=dict(type="str"),
allowedVlans=dict(type="str"),
+ daiTrusted=dict(type="bool"),
+ enabled=dict(type="bool"),
+ flexibleStackingEnabled=dict(type="bool"),
isolationEnabled=dict(type="bool"),
- rstpEnabled=dict(type="bool"),
- stpGuard=dict(type="str"),
linkNegotiation=dict(type="str"),
- portScheduleId=dict(type="str"),
- udld=dict(type="str"),
- accessPolicyType=dict(type="str"),
- accessPolicyNumber=dict(type="int"),
macAllowList=dict(type="list"),
+ name=dict(type="str"),
+ peerSgtCapable=dict(type="bool"),
+ poeEnabled=dict(type="bool"),
+ portScheduleId=dict(type="str"),
+ profile=dict(type="dict"),
+ rstpEnabled=dict(type="bool"),
stickyMacAllowList=dict(type="list"),
stickyMacAllowListLimit=dict(type="int"),
stormControlEnabled=dict(type="bool"),
- adaptivePolicyGroupId=dict(type="str"),
- peerSgtCapable=dict(type="bool"),
- flexibleStackingEnabled=dict(type="bool"),
- daiTrusted=dict(type="bool"),
- profile=dict(type="dict"),
+ stpGuard=dict(type="str"),
+ tags=dict(type="list"),
+ type=dict(type="str"),
+ udld=dict(type="str"),
+ vlan=dict(type="int"),
+ voiceVlan=dict(type="int"),
serial=dict(type="str"),
portId=dict(type="str"),
))
@@ -73,31 +73,31 @@ class DevicesSwitchPorts(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
- tags=params.get("tags"),
- enabled=params.get("enabled"),
- poeEnabled=params.get("poeEnabled"),
- type=params.get("type"),
- vlan=params.get("vlan"),
- voiceVlan=params.get("voiceVlan"),
+ accessPolicyNumber=params.get("accessPolicyNumber"),
+ accessPolicyType=params.get("accessPolicyType"),
+ adaptivePolicyGroupId=params.get("adaptivePolicyGroupId"),
allowedVlans=params.get("allowedVlans"),
+ daiTrusted=params.get("daiTrusted"),
+ enabled=params.get("enabled"),
+ flexibleStackingEnabled=params.get("flexibleStackingEnabled"),
isolationEnabled=params.get("isolationEnabled"),
- rstpEnabled=params.get("rstpEnabled"),
- stpGuard=params.get("stpGuard"),
linkNegotiation=params.get("linkNegotiation"),
- portScheduleId=params.get("portScheduleId"),
- udld=params.get("udld"),
- accessPolicyType=params.get("accessPolicyType"),
- accessPolicyNumber=params.get("accessPolicyNumber"),
macAllowList=params.get("macAllowList"),
+ name=params.get("name"),
+ peerSgtCapable=params.get("peerSgtCapable"),
+ poeEnabled=params.get("poeEnabled"),
+ portScheduleId=params.get("portScheduleId"),
+ profile=params.get("profile"),
+ rstpEnabled=params.get("rstpEnabled"),
stickyMacAllowList=params.get("stickyMacAllowList"),
stickyMacAllowListLimit=params.get("stickyMacAllowListLimit"),
stormControlEnabled=params.get("stormControlEnabled"),
- adaptivePolicyGroupId=params.get("adaptivePolicyGroupId"),
- peerSgtCapable=params.get("peerSgtCapable"),
- flexibleStackingEnabled=params.get("flexibleStackingEnabled"),
- daiTrusted=params.get("daiTrusted"),
- profile=params.get("profile"),
+ stpGuard=params.get("stpGuard"),
+ tags=params.get("tags"),
+ type=params.get("type"),
+ udld=params.get("udld"),
+ vlan=params.get("vlan"),
+ voiceVlan=params.get("voiceVlan"),
serial=params.get("serial"),
port_id=params.get("portId"),
)
@@ -119,55 +119,47 @@ class DevicesSwitchPorts(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('tags') is not None or self.new_object.get('tags') is not None:
- new_object_params['tags'] = self.new_object.get('tags') or \
- self.new_object.get('tags')
- if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
- new_object_params['enabled'] = self.new_object.get('enabled')
- if self.new_object.get('poeEnabled') is not None or self.new_object.get('poe_enabled') is not None:
- new_object_params['poeEnabled'] = self.new_object.get('poeEnabled')
- if self.new_object.get('type') is not None or self.new_object.get('type') is not None:
- new_object_params['type'] = self.new_object.get('type') or \
- self.new_object.get('type')
- if self.new_object.get('vlan') is not None or self.new_object.get('vlan') is not None:
- new_object_params['vlan'] = self.new_object.get('vlan') or \
- self.new_object.get('vlan')
- if self.new_object.get('voiceVlan') is not None or self.new_object.get('voice_vlan') is not None:
- new_object_params['voiceVlan'] = self.new_object.get('voiceVlan') or \
- self.new_object.get('voice_vlan')
+ if self.new_object.get('accessPolicyNumber') is not None or self.new_object.get('access_policy_number') is not None:
+ new_object_params['accessPolicyNumber'] = self.new_object.get('accessPolicyNumber') or \
+ self.new_object.get('access_policy_number')
+ if self.new_object.get('accessPolicyType') is not None or self.new_object.get('access_policy_type') is not None:
+ new_object_params['accessPolicyType'] = self.new_object.get('accessPolicyType') or \
+ self.new_object.get('access_policy_type')
+ if self.new_object.get('adaptivePolicyGroupId') is not None or self.new_object.get('adaptive_policy_group_id') is not None:
+ new_object_params['adaptivePolicyGroupId'] = self.new_object.get('adaptivePolicyGroupId') or \
+ self.new_object.get('adaptive_policy_group_id')
if self.new_object.get('allowedVlans') is not None or self.new_object.get('allowed_vlans') is not None:
new_object_params['allowedVlans'] = self.new_object.get('allowedVlans') or \
self.new_object.get('allowed_vlans')
+ if self.new_object.get('daiTrusted') is not None or self.new_object.get('dai_trusted') is not None:
+ new_object_params['daiTrusted'] = self.new_object.get('daiTrusted')
+ if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
+ new_object_params['enabled'] = self.new_object.get('enabled')
+ if self.new_object.get('flexibleStackingEnabled') is not None or self.new_object.get('flexible_stacking_enabled') is not None:
+ new_object_params['flexibleStackingEnabled'] = self.new_object.get('flexibleStackingEnabled')
if self.new_object.get('isolationEnabled') is not None or self.new_object.get('isolation_enabled') is not None:
- new_object_params['isolationEnabled'] = self.new_object.get(
- 'isolationEnabled')
- if self.new_object.get('rstpEnabled') is not None or self.new_object.get('rstp_enabled') is not None:
- new_object_params['rstpEnabled'] = self.new_object.get(
- 'rstpEnabled')
- if self.new_object.get('stpGuard') is not None or self.new_object.get('stp_guard') is not None:
- new_object_params['stpGuard'] = self.new_object.get('stpGuard') or \
- self.new_object.get('stp_guard')
+ new_object_params['isolationEnabled'] = self.new_object.get('isolationEnabled')
if self.new_object.get('linkNegotiation') is not None or self.new_object.get('link_negotiation') is not None:
new_object_params['linkNegotiation'] = self.new_object.get('linkNegotiation') or \
self.new_object.get('link_negotiation')
- if self.new_object.get('portScheduleId') is not None or self.new_object.get('port_schedule_id') is not None:
- new_object_params['portScheduleId'] = self.new_object.get('portScheduleId') or \
- self.new_object.get('port_schedule_id')
- if self.new_object.get('udld') is not None or self.new_object.get('udld') is not None:
- new_object_params['udld'] = self.new_object.get('udld') or \
- self.new_object.get('udld')
- if self.new_object.get('accessPolicyType') is not None or self.new_object.get('access_policy_type') is not None:
- new_object_params['accessPolicyType'] = self.new_object.get('accessPolicyType') or \
- self.new_object.get('access_policy_type')
- if self.new_object.get('accessPolicyNumber') is not None or self.new_object.get('access_policy_number') is not None:
- new_object_params['accessPolicyNumber'] = self.new_object.get('accessPolicyNumber') or \
- self.new_object.get('access_policy_number')
if self.new_object.get('macAllowList') is not None or self.new_object.get('mac_allow_list') is not None:
new_object_params['macAllowList'] = self.new_object.get('macAllowList') or \
self.new_object.get('mac_allow_list')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('peerSgtCapable') is not None or self.new_object.get('peer_sgt_capable') is not None:
+ new_object_params['peerSgtCapable'] = self.new_object.get('peerSgtCapable')
+ if self.new_object.get('poeEnabled') is not None or self.new_object.get('poe_enabled') is not None:
+ new_object_params['poeEnabled'] = self.new_object.get('poeEnabled')
+ if self.new_object.get('portScheduleId') is not None or self.new_object.get('port_schedule_id') is not None:
+ new_object_params['portScheduleId'] = self.new_object.get('portScheduleId') or \
+ self.new_object.get('port_schedule_id')
+ if self.new_object.get('profile') is not None or self.new_object.get('profile') is not None:
+ new_object_params['profile'] = self.new_object.get('profile') or \
+ self.new_object.get('profile')
+ if self.new_object.get('rstpEnabled') is not None or self.new_object.get('rstp_enabled') is not None:
+ new_object_params['rstpEnabled'] = self.new_object.get('rstpEnabled')
if self.new_object.get('stickyMacAllowList') is not None or self.new_object.get('sticky_mac_allow_list') is not None:
new_object_params['stickyMacAllowList'] = self.new_object.get('stickyMacAllowList') or \
self.new_object.get('sticky_mac_allow_list')
@@ -175,22 +167,25 @@ class DevicesSwitchPorts(object):
new_object_params['stickyMacAllowListLimit'] = self.new_object.get('stickyMacAllowListLimit') or \
self.new_object.get('sticky_mac_allow_list_limit')
if self.new_object.get('stormControlEnabled') is not None or self.new_object.get('storm_control_enabled') is not None:
- new_object_params['stormControlEnabled'] = self.new_object.get(
- 'stormControlEnabled')
- if self.new_object.get('adaptivePolicyGroupId') is not None or self.new_object.get('adaptive_policy_group_id') is not None:
- new_object_params['adaptivePolicyGroupId'] = self.new_object.get('adaptivePolicyGroupId') or \
- self.new_object.get('adaptive_policy_group_id')
- if self.new_object.get('peerSgtCapable') is not None or self.new_object.get('peer_sgt_capable') is not None:
- new_object_params['peerSgtCapable'] = self.new_object.get(
- 'peerSgtCapable')
- if self.new_object.get('flexibleStackingEnabled') is not None or self.new_object.get('flexible_stacking_enabled') is not None:
- new_object_params['flexibleStackingEnabled'] = self.new_object.get(
- 'flexibleStackingEnabled')
- if self.new_object.get('daiTrusted') is not None or self.new_object.get('dai_trusted') is not None:
- new_object_params['daiTrusted'] = self.new_object.get('daiTrusted')
- if self.new_object.get('profile') is not None or self.new_object.get('profile') is not None:
- new_object_params['profile'] = self.new_object.get('profile') or \
- self.new_object.get('profile')
+ new_object_params['stormControlEnabled'] = self.new_object.get('stormControlEnabled')
+ if self.new_object.get('stpGuard') is not None or self.new_object.get('stp_guard') is not None:
+ new_object_params['stpGuard'] = self.new_object.get('stpGuard') or \
+ self.new_object.get('stp_guard')
+ if self.new_object.get('tags') is not None or self.new_object.get('tags') is not None:
+ new_object_params['tags'] = self.new_object.get('tags') or \
+ self.new_object.get('tags')
+ if self.new_object.get('type') is not None or self.new_object.get('type') is not None:
+ new_object_params['type'] = self.new_object.get('type') or \
+ self.new_object.get('type')
+ if self.new_object.get('udld') is not None or self.new_object.get('udld') is not None:
+ new_object_params['udld'] = self.new_object.get('udld') or \
+ self.new_object.get('udld')
+ if self.new_object.get('vlan') is not None or self.new_object.get('vlan') is not None:
+ new_object_params['vlan'] = self.new_object.get('vlan') or \
+ self.new_object.get('vlan')
+ if self.new_object.get('voiceVlan') is not None or self.new_object.get('voice_vlan') is not None:
+ new_object_params['voiceVlan'] = self.new_object.get('voiceVlan') or \
+ self.new_object.get('voice_vlan')
if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
new_object_params['serial'] = self.new_object.get('serial') or \
self.new_object.get('serial')
@@ -269,31 +264,31 @@ class DevicesSwitchPorts(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
- ("tags", "tags"),
- ("enabled", "enabled"),
- ("poeEnabled", "poeEnabled"),
- ("type", "type"),
- ("vlan", "vlan"),
- ("voiceVlan", "voiceVlan"),
+ ("accessPolicyNumber", "accessPolicyNumber"),
+ ("accessPolicyType", "accessPolicyType"),
+ ("adaptivePolicyGroupId", "adaptivePolicyGroupId"),
("allowedVlans", "allowedVlans"),
+ ("daiTrusted", "daiTrusted"),
+ ("enabled", "enabled"),
+ ("flexibleStackingEnabled", "flexibleStackingEnabled"),
("isolationEnabled", "isolationEnabled"),
- ("rstpEnabled", "rstpEnabled"),
- ("stpGuard", "stpGuard"),
("linkNegotiation", "linkNegotiation"),
- ("portScheduleId", "portScheduleId"),
- ("udld", "udld"),
- ("accessPolicyType", "accessPolicyType"),
- ("accessPolicyNumber", "accessPolicyNumber"),
("macAllowList", "macAllowList"),
+ ("name", "name"),
+ ("peerSgtCapable", "peerSgtCapable"),
+ ("poeEnabled", "poeEnabled"),
+ ("portScheduleId", "portScheduleId"),
+ ("profile", "profile"),
+ ("rstpEnabled", "rstpEnabled"),
("stickyMacAllowList", "stickyMacAllowList"),
("stickyMacAllowListLimit", "stickyMacAllowListLimit"),
("stormControlEnabled", "stormControlEnabled"),
- ("adaptivePolicyGroupId", "adaptivePolicyGroupId"),
- ("peerSgtCapable", "peerSgtCapable"),
- ("flexibleStackingEnabled", "flexibleStackingEnabled"),
- ("daiTrusted", "daiTrusted"),
- ("profile", "profile"),
+ ("stpGuard", "stpGuard"),
+ ("tags", "tags"),
+ ("type", "type"),
+ ("udld", "udld"),
+ ("vlan", "vlan"),
+ ("voiceVlan", "voiceVlan"),
("serial", "serial"),
("portId", "portId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_switch_routing_interfaces.py b/ansible_collections/cisco/meraki/plugins/action/devices_switch_routing_interfaces.py
index 774366850..c013c4bb5 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_switch_routing_interfaces.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_switch_routing_interfaces.py
@@ -32,15 +32,15 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- name=dict(type="str"),
- subnet=dict(type="str"),
+ defaultGateway=dict(type="str"),
interfaceIp=dict(type="str"),
+ ipv6=dict(type="dict"),
multicastRouting=dict(type="str"),
- vlanId=dict(type="int"),
- defaultGateway=dict(type="str"),
+ name=dict(type="str"),
ospfSettings=dict(type="dict"),
ospfV3=dict(type="dict"),
- ipv6=dict(type="dict"),
+ subnet=dict(type="str"),
+ vlanId=dict(type="int"),
serial=dict(type="str"),
interfaceId=dict(type="str"),
))
@@ -58,15 +58,15 @@ class DevicesSwitchRoutingInterfaces(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
- subnet=params.get("subnet"),
+ defaultGateway=params.get("defaultGateway"),
interfaceIp=params.get("interfaceIp"),
+ ipv6=params.get("ipv6"),
multicastRouting=params.get("multicastRouting"),
- vlanId=params.get("vlanId"),
- defaultGateway=params.get("defaultGateway"),
+ name=params.get("name"),
ospfSettings=params.get("ospfSettings"),
ospfV3=params.get("ospfV3"),
- ipv6=params.get("ipv6"),
+ subnet=params.get("subnet"),
+ vlanId=params.get("vlanId"),
serial=params.get("serial"),
interfaceId=params.get("interfaceId"),
)
@@ -88,33 +88,33 @@ class DevicesSwitchRoutingInterfaces(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
- new_object_params['subnet'] = self.new_object.get('subnet') or \
- self.new_object.get('subnet')
+ if self.new_object.get('defaultGateway') is not None or self.new_object.get('default_gateway') is not None:
+ new_object_params['defaultGateway'] = self.new_object.get('defaultGateway') or \
+ self.new_object.get('default_gateway')
if self.new_object.get('interfaceIp') is not None or self.new_object.get('interface_ip') is not None:
new_object_params['interfaceIp'] = self.new_object.get('interfaceIp') or \
self.new_object.get('interface_ip')
+ if self.new_object.get('ipv6') is not None or self.new_object.get('ipv6') is not None:
+ new_object_params['ipv6'] = self.new_object.get('ipv6') or \
+ self.new_object.get('ipv6')
if self.new_object.get('multicastRouting') is not None or self.new_object.get('multicast_routing') is not None:
new_object_params['multicastRouting'] = self.new_object.get('multicastRouting') or \
self.new_object.get('multicast_routing')
- if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None:
- new_object_params['vlanId'] = self.new_object.get('vlanId') or \
- self.new_object.get('vlan_id')
- if self.new_object.get('defaultGateway') is not None or self.new_object.get('default_gateway') is not None:
- new_object_params['defaultGateway'] = self.new_object.get('defaultGateway') or \
- self.new_object.get('default_gateway')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('ospfSettings') is not None or self.new_object.get('ospf_settings') is not None:
new_object_params['ospfSettings'] = self.new_object.get('ospfSettings') or \
self.new_object.get('ospf_settings')
if self.new_object.get('ospfV3') is not None or self.new_object.get('ospf_v3') is not None:
new_object_params['ospfV3'] = self.new_object.get('ospfV3') or \
self.new_object.get('ospf_v3')
- if self.new_object.get('ipv6') is not None or self.new_object.get('ipv6') is not None:
- new_object_params['ipv6'] = self.new_object.get('ipv6') or \
- self.new_object.get('ipv6')
+ if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
+ new_object_params['subnet'] = self.new_object.get('subnet') or \
+ self.new_object.get('subnet')
+ if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None:
+ new_object_params['vlanId'] = self.new_object.get('vlanId') or \
+ self.new_object.get('vlan_id')
if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
new_object_params['serial'] = self.new_object.get('serial') or \
self.new_object.get('serial')
@@ -132,33 +132,33 @@ class DevicesSwitchRoutingInterfaces(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
- new_object_params['subnet'] = self.new_object.get('subnet') or \
- self.new_object.get('subnet')
+ if self.new_object.get('defaultGateway') is not None or self.new_object.get('default_gateway') is not None:
+ new_object_params['defaultGateway'] = self.new_object.get('defaultGateway') or \
+ self.new_object.get('default_gateway')
if self.new_object.get('interfaceIp') is not None or self.new_object.get('interface_ip') is not None:
new_object_params['interfaceIp'] = self.new_object.get('interfaceIp') or \
self.new_object.get('interface_ip')
+ if self.new_object.get('ipv6') is not None or self.new_object.get('ipv6') is not None:
+ new_object_params['ipv6'] = self.new_object.get('ipv6') or \
+ self.new_object.get('ipv6')
if self.new_object.get('multicastRouting') is not None or self.new_object.get('multicast_routing') is not None:
new_object_params['multicastRouting'] = self.new_object.get('multicastRouting') or \
self.new_object.get('multicast_routing')
- if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None:
- new_object_params['vlanId'] = self.new_object.get('vlanId') or \
- self.new_object.get('vlan_id')
- if self.new_object.get('defaultGateway') is not None or self.new_object.get('default_gateway') is not None:
- new_object_params['defaultGateway'] = self.new_object.get('defaultGateway') or \
- self.new_object.get('default_gateway')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('ospfSettings') is not None or self.new_object.get('ospf_settings') is not None:
new_object_params['ospfSettings'] = self.new_object.get('ospfSettings') or \
self.new_object.get('ospf_settings')
if self.new_object.get('ospfV3') is not None or self.new_object.get('ospf_v3') is not None:
new_object_params['ospfV3'] = self.new_object.get('ospfV3') or \
self.new_object.get('ospf_v3')
- if self.new_object.get('ipv6') is not None or self.new_object.get('ipv6') is not None:
- new_object_params['ipv6'] = self.new_object.get('ipv6') or \
- self.new_object.get('ipv6')
+ if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
+ new_object_params['subnet'] = self.new_object.get('subnet') or \
+ self.new_object.get('subnet')
+ if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None:
+ new_object_params['vlanId'] = self.new_object.get('vlanId') or \
+ self.new_object.get('vlan_id')
if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
new_object_params['serial'] = self.new_object.get('serial') or \
self.new_object.get('serial')
@@ -236,15 +236,15 @@ class DevicesSwitchRoutingInterfaces(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
- ("subnet", "subnet"),
+ ("defaultGateway", "defaultGateway"),
("interfaceIp", "interfaceIp"),
+ ("ipv6", "ipv6"),
("multicastRouting", "multicastRouting"),
- ("vlanId", "vlanId"),
- ("defaultGateway", "defaultGateway"),
+ ("name", "name"),
("ospfSettings", "ospfSettings"),
("ospfV3", "ospfV3"),
- ("ipv6", "ipv6"),
+ ("subnet", "subnet"),
+ ("vlanId", "vlanId"),
("serial", "serial"),
("interfaceId", "interfaceId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_switch_routing_interfaces_dhcp.py b/ansible_collections/cisco/meraki/plugins/action/devices_switch_routing_interfaces_dhcp.py
index 4fdb74e4e..39063de9f 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_switch_routing_interfaces_dhcp.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_switch_routing_interfaces_dhcp.py
@@ -32,17 +32,17 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
+ bootFileName=dict(type="str"),
+ bootNextServer=dict(type="str"),
+ bootOptionsEnabled=dict(type="bool"),
+ dhcpLeaseTime=dict(type="str"),
dhcpMode=dict(type="str"),
+ dhcpOptions=dict(type="list"),
dhcpRelayServerIps=dict(type="list"),
- dhcpLeaseTime=dict(type="str"),
- dnsNameserversOption=dict(type="str"),
dnsCustomNameservers=dict(type="list"),
- bootOptionsEnabled=dict(type="bool"),
- bootNextServer=dict(type="str"),
- bootFileName=dict(type="str"),
- dhcpOptions=dict(type="list"),
- reservedIpRanges=dict(type="list"),
+ dnsNameserversOption=dict(type="str"),
fixedIpAssignments=dict(type="list"),
+ reservedIpRanges=dict(type="list"),
serial=dict(type="str"),
interfaceId=dict(type="str"),
))
@@ -59,17 +59,17 @@ class DevicesSwitchRoutingInterfacesDhcp(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ bootFileName=params.get("bootFileName"),
+ bootNextServer=params.get("bootNextServer"),
+ bootOptionsEnabled=params.get("bootOptionsEnabled"),
+ dhcpLeaseTime=params.get("dhcpLeaseTime"),
dhcpMode=params.get("dhcpMode"),
+ dhcpOptions=params.get("dhcpOptions"),
dhcpRelayServerIps=params.get("dhcpRelayServerIps"),
- dhcpLeaseTime=params.get("dhcpLeaseTime"),
- dnsNameserversOption=params.get("dnsNameserversOption"),
dnsCustomNameservers=params.get("dnsCustomNameservers"),
- bootOptionsEnabled=params.get("bootOptionsEnabled"),
- bootNextServer=params.get("bootNextServer"),
- bootFileName=params.get("bootFileName"),
- dhcpOptions=params.get("dhcpOptions"),
- reservedIpRanges=params.get("reservedIpRanges"),
+ dnsNameserversOption=params.get("dnsNameserversOption"),
fixedIpAssignments=params.get("fixedIpAssignments"),
+ reservedIpRanges=params.get("reservedIpRanges"),
serial=params.get("serial"),
interface_id=params.get("interfaceId"),
)
@@ -85,38 +85,38 @@ class DevicesSwitchRoutingInterfacesDhcp(object):
def update_all_params(self):
new_object_params = {}
+ if self.new_object.get('bootFileName') is not None or self.new_object.get('boot_file_name') is not None:
+ new_object_params['bootFileName'] = self.new_object.get('bootFileName') or \
+ self.new_object.get('boot_file_name')
+ if self.new_object.get('bootNextServer') is not None or self.new_object.get('boot_next_server') is not None:
+ new_object_params['bootNextServer'] = self.new_object.get('bootNextServer') or \
+ self.new_object.get('boot_next_server')
+ if self.new_object.get('bootOptionsEnabled') is not None or self.new_object.get('boot_options_enabled') is not None:
+ new_object_params['bootOptionsEnabled'] = self.new_object.get('bootOptionsEnabled')
+ if self.new_object.get('dhcpLeaseTime') is not None or self.new_object.get('dhcp_lease_time') is not None:
+ new_object_params['dhcpLeaseTime'] = self.new_object.get('dhcpLeaseTime') or \
+ self.new_object.get('dhcp_lease_time')
if self.new_object.get('dhcpMode') is not None or self.new_object.get('dhcp_mode') is not None:
new_object_params['dhcpMode'] = self.new_object.get('dhcpMode') or \
self.new_object.get('dhcp_mode')
+ if self.new_object.get('dhcpOptions') is not None or self.new_object.get('dhcp_options') is not None:
+ new_object_params['dhcpOptions'] = self.new_object.get('dhcpOptions') or \
+ self.new_object.get('dhcp_options')
if self.new_object.get('dhcpRelayServerIps') is not None or self.new_object.get('dhcp_relay_server_ips') is not None:
new_object_params['dhcpRelayServerIps'] = self.new_object.get('dhcpRelayServerIps') or \
self.new_object.get('dhcp_relay_server_ips')
- if self.new_object.get('dhcpLeaseTime') is not None or self.new_object.get('dhcp_lease_time') is not None:
- new_object_params['dhcpLeaseTime'] = self.new_object.get('dhcpLeaseTime') or \
- self.new_object.get('dhcp_lease_time')
- if self.new_object.get('dnsNameserversOption') is not None or self.new_object.get('dns_nameservers_option') is not None:
- new_object_params['dnsNameserversOption'] = self.new_object.get('dnsNameserversOption') or \
- self.new_object.get('dns_nameservers_option')
if self.new_object.get('dnsCustomNameservers') is not None or self.new_object.get('dns_custom_nameservers') is not None:
new_object_params['dnsCustomNameservers'] = self.new_object.get('dnsCustomNameservers') or \
self.new_object.get('dns_custom_nameservers')
- if self.new_object.get('bootOptionsEnabled') is not None or self.new_object.get('boot_options_enabled') is not None:
- new_object_params['bootOptionsEnabled'] = self.new_object.get('bootOptionsEnabled')
- if self.new_object.get('bootNextServer') is not None or self.new_object.get('boot_next_server') is not None:
- new_object_params['bootNextServer'] = self.new_object.get('bootNextServer') or \
- self.new_object.get('boot_next_server')
- if self.new_object.get('bootFileName') is not None or self.new_object.get('boot_file_name') is not None:
- new_object_params['bootFileName'] = self.new_object.get('bootFileName') or \
- self.new_object.get('boot_file_name')
- if self.new_object.get('dhcpOptions') is not None or self.new_object.get('dhcp_options') is not None:
- new_object_params['dhcpOptions'] = self.new_object.get('dhcpOptions') or \
- self.new_object.get('dhcp_options')
- if self.new_object.get('reservedIpRanges') is not None or self.new_object.get('reserved_ip_ranges') is not None:
- new_object_params['reservedIpRanges'] = self.new_object.get('reservedIpRanges') or \
- self.new_object.get('reserved_ip_ranges')
+ if self.new_object.get('dnsNameserversOption') is not None or self.new_object.get('dns_nameservers_option') is not None:
+ new_object_params['dnsNameserversOption'] = self.new_object.get('dnsNameserversOption') or \
+ self.new_object.get('dns_nameservers_option')
if self.new_object.get('fixedIpAssignments') is not None or self.new_object.get('fixed_ip_assignments') is not None:
new_object_params['fixedIpAssignments'] = self.new_object.get('fixedIpAssignments') or \
self.new_object.get('fixed_ip_assignments')
+ if self.new_object.get('reservedIpRanges') is not None or self.new_object.get('reserved_ip_ranges') is not None:
+ new_object_params['reservedIpRanges'] = self.new_object.get('reservedIpRanges') or \
+ self.new_object.get('reserved_ip_ranges')
if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
new_object_params['serial'] = self.new_object.get('serial') or \
self.new_object.get('serial')
@@ -176,17 +176,17 @@ class DevicesSwitchRoutingInterfacesDhcp(object):
requested_obj = self.new_object
obj_params = [
+ ("bootFileName", "bootFileName"),
+ ("bootNextServer", "bootNextServer"),
+ ("bootOptionsEnabled", "bootOptionsEnabled"),
+ ("dhcpLeaseTime", "dhcpLeaseTime"),
("dhcpMode", "dhcpMode"),
+ ("dhcpOptions", "dhcpOptions"),
("dhcpRelayServerIps", "dhcpRelayServerIps"),
- ("dhcpLeaseTime", "dhcpLeaseTime"),
- ("dnsNameserversOption", "dnsNameserversOption"),
("dnsCustomNameservers", "dnsCustomNameservers"),
- ("bootOptionsEnabled", "bootOptionsEnabled"),
- ("bootNextServer", "bootNextServer"),
- ("bootFileName", "bootFileName"),
- ("dhcpOptions", "dhcpOptions"),
- ("reservedIpRanges", "reservedIpRanges"),
+ ("dnsNameserversOption", "dnsNameserversOption"),
("fixedIpAssignments", "fixedIpAssignments"),
+ ("reservedIpRanges", "reservedIpRanges"),
("serial", "serial"),
("interfaceId", "interfaceId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_switch_routing_static_routes.py b/ansible_collections/cisco/meraki/plugins/action/devices_switch_routing_static_routes.py
index e24a6e721..f146b8447 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_switch_routing_static_routes.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_switch_routing_static_routes.py
@@ -32,11 +32,11 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
+ advertiseViaOspfEnabled=dict(type="bool"),
name=dict(type="str"),
- subnet=dict(type="str"),
nextHopIp=dict(type="str"),
- advertiseViaOspfEnabled=dict(type="bool"),
preferOverOspfRoutesEnabled=dict(type="bool"),
+ subnet=dict(type="str"),
serial=dict(type="str"),
staticRouteId=dict(type="str"),
))
@@ -54,11 +54,11 @@ class DevicesSwitchRoutingStaticRoutes(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ advertiseViaOspfEnabled=params.get("advertiseViaOspfEnabled"),
name=params.get("name"),
- subnet=params.get("subnet"),
nextHopIp=params.get("nextHopIp"),
- advertiseViaOspfEnabled=params.get("advertiseViaOspfEnabled"),
preferOverOspfRoutesEnabled=params.get("preferOverOspfRoutesEnabled"),
+ subnet=params.get("subnet"),
serial=params.get("serial"),
staticRouteId=params.get("staticRouteId"),
)
@@ -80,19 +80,19 @@ class DevicesSwitchRoutingStaticRoutes(object):
def create_params(self):
new_object_params = {}
+ if self.new_object.get('advertiseViaOspfEnabled') is not None or self.new_object.get('advertise_via_ospf_enabled') is not None:
+ new_object_params['advertiseViaOspfEnabled'] = self.new_object.get('advertiseViaOspfEnabled')
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
- if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
- new_object_params['subnet'] = self.new_object.get('subnet') or \
- self.new_object.get('subnet')
if self.new_object.get('nextHopIp') is not None or self.new_object.get('next_hop_ip') is not None:
new_object_params['nextHopIp'] = self.new_object.get('nextHopIp') or \
self.new_object.get('next_hop_ip')
- if self.new_object.get('advertiseViaOspfEnabled') is not None or self.new_object.get('advertise_via_ospf_enabled') is not None:
- new_object_params['advertiseViaOspfEnabled'] = self.new_object.get('advertiseViaOspfEnabled')
if self.new_object.get('preferOverOspfRoutesEnabled') is not None or self.new_object.get('prefer_over_ospf_routes_enabled') is not None:
new_object_params['preferOverOspfRoutesEnabled'] = self.new_object.get('preferOverOspfRoutesEnabled')
+ if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
+ new_object_params['subnet'] = self.new_object.get('subnet') or \
+ self.new_object.get('subnet')
if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
new_object_params['serial'] = self.new_object.get('serial') or \
self.new_object.get('serial')
@@ -110,19 +110,19 @@ class DevicesSwitchRoutingStaticRoutes(object):
def update_by_id_params(self):
new_object_params = {}
+ if self.new_object.get('advertiseViaOspfEnabled') is not None or self.new_object.get('advertise_via_ospf_enabled') is not None:
+ new_object_params['advertiseViaOspfEnabled'] = self.new_object.get('advertiseViaOspfEnabled')
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
- if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
- new_object_params['subnet'] = self.new_object.get('subnet') or \
- self.new_object.get('subnet')
if self.new_object.get('nextHopIp') is not None or self.new_object.get('next_hop_ip') is not None:
new_object_params['nextHopIp'] = self.new_object.get('nextHopIp') or \
self.new_object.get('next_hop_ip')
- if self.new_object.get('advertiseViaOspfEnabled') is not None or self.new_object.get('advertise_via_ospf_enabled') is not None:
- new_object_params['advertiseViaOspfEnabled'] = self.new_object.get('advertiseViaOspfEnabled')
if self.new_object.get('preferOverOspfRoutesEnabled') is not None or self.new_object.get('prefer_over_ospf_routes_enabled') is not None:
new_object_params['preferOverOspfRoutesEnabled'] = self.new_object.get('preferOverOspfRoutesEnabled')
+ if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
+ new_object_params['subnet'] = self.new_object.get('subnet') or \
+ self.new_object.get('subnet')
if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
new_object_params['serial'] = self.new_object.get('serial') or \
self.new_object.get('serial')
@@ -200,11 +200,11 @@ class DevicesSwitchRoutingStaticRoutes(object):
requested_obj = self.new_object
obj_params = [
+ ("advertiseViaOspfEnabled", "advertiseViaOspfEnabled"),
("name", "name"),
- ("subnet", "subnet"),
("nextHopIp", "nextHopIp"),
- ("advertiseViaOspfEnabled", "advertiseViaOspfEnabled"),
("preferOverOspfRoutesEnabled", "preferOverOspfRoutesEnabled"),
+ ("subnet", "subnet"),
("serial", "serial"),
("staticRouteId", "staticRouteId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_wireless_alternate_management_interface_ipv6.py b/ansible_collections/cisco/meraki/plugins/action/devices_wireless_alternate_management_interface_ipv6.py
new file mode 100644
index 000000000..41447bb98
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_wireless_alternate_management_interface_ipv6.py
@@ -0,0 +1,89 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguements specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ addresses=dict(type="list"),
+ serial=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_object(self, params):
+ new_object = dict(
+ addresses=params.get("addresses"),
+ serial=params.get("serial"),
+ )
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="wireless",
+ function='updateDeviceWirelessAlternateManagementInterfaceIpv6',
+ op_modifies=True,
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_wireless_bluetooth_settings.py b/ansible_collections/cisco/meraki/plugins/action/devices_wireless_bluetooth_settings.py
index dd3712df6..f1f41d07c 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_wireless_bluetooth_settings.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_wireless_bluetooth_settings.py
@@ -32,9 +32,9 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- uuid=dict(type="str"),
major=dict(type="int"),
minor=dict(type="int"),
+ uuid=dict(type="str"),
serial=dict(type="str"),
))
@@ -50,9 +50,9 @@ class DevicesWirelessBluetoothSettings(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- uuid=params.get("uuid"),
major=params.get("major"),
minor=params.get("minor"),
+ uuid=params.get("uuid"),
serial=params.get("serial"),
)
@@ -64,15 +64,15 @@ class DevicesWirelessBluetoothSettings(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('uuid') is not None or self.new_object.get('uuid') is not None:
- new_object_params['uuid'] = self.new_object.get('uuid') or \
- self.new_object.get('uuid')
if self.new_object.get('major') is not None or self.new_object.get('major') is not None:
new_object_params['major'] = self.new_object.get('major') or \
self.new_object.get('major')
if self.new_object.get('minor') is not None or self.new_object.get('minor') is not None:
new_object_params['minor'] = self.new_object.get('minor') or \
self.new_object.get('minor')
+ if self.new_object.get('uuid') is not None or self.new_object.get('uuid') is not None:
+ new_object_params['uuid'] = self.new_object.get('uuid') or \
+ self.new_object.get('uuid')
if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
new_object_params['serial'] = self.new_object.get('serial') or \
self.new_object.get('serial')
@@ -129,9 +129,9 @@ class DevicesWirelessBluetoothSettings(object):
requested_obj = self.new_object
obj_params = [
- ("uuid", "uuid"),
("major", "major"),
("minor", "minor"),
+ ("uuid", "uuid"),
("serial", "serial"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/devices_wireless_radio_settings.py b/ansible_collections/cisco/meraki/plugins/action/devices_wireless_radio_settings.py
index 72dad3f48..2fc35da7b 100644
--- a/ansible_collections/cisco/meraki/plugins/action/devices_wireless_radio_settings.py
+++ b/ansible_collections/cisco/meraki/plugins/action/devices_wireless_radio_settings.py
@@ -32,9 +32,9 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
+ fiveGhzSettings=dict(type="dict"),
rfProfileId=dict(type="str"),
twoFourGhzSettings=dict(type="dict"),
- fiveGhzSettings=dict(type="dict"),
serial=dict(type="str"),
))
@@ -50,9 +50,9 @@ class DevicesWirelessRadioSettings(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ fiveGhzSettings=params.get("fiveGhzSettings"),
rfProfileId=params.get("rfProfileId"),
twoFourGhzSettings=params.get("twoFourGhzSettings"),
- fiveGhzSettings=params.get("fiveGhzSettings"),
serial=params.get("serial"),
)
@@ -64,15 +64,15 @@ class DevicesWirelessRadioSettings(object):
def update_all_params(self):
new_object_params = {}
+ if self.new_object.get('fiveGhzSettings') is not None or self.new_object.get('five_ghz_settings') is not None:
+ new_object_params['fiveGhzSettings'] = self.new_object.get('fiveGhzSettings') or \
+ self.new_object.get('five_ghz_settings')
if self.new_object.get('rfProfileId') is not None or self.new_object.get('rf_profile_id') is not None:
new_object_params['rfProfileId'] = self.new_object.get('rfProfileId') or \
self.new_object.get('rf_profile_id')
if self.new_object.get('twoFourGhzSettings') is not None or self.new_object.get('two_four_ghz_settings') is not None:
new_object_params['twoFourGhzSettings'] = self.new_object.get('twoFourGhzSettings') or \
self.new_object.get('two_four_ghz_settings')
- if self.new_object.get('fiveGhzSettings') is not None or self.new_object.get('five_ghz_settings') is not None:
- new_object_params['fiveGhzSettings'] = self.new_object.get('fiveGhzSettings') or \
- self.new_object.get('five_ghz_settings')
if self.new_object.get('serial') is not None or self.new_object.get('serial') is not None:
new_object_params['serial'] = self.new_object.get('serial') or \
self.new_object.get('serial')
@@ -129,9 +129,9 @@ class DevicesWirelessRadioSettings(object):
requested_obj = self.new_object
obj_params = [
+ ("fiveGhzSettings", "fiveGhzSettings"),
("rfProfileId", "rfProfileId"),
("twoFourGhzSettings", "twoFourGhzSettings"),
- ("fiveGhzSettings", "fiveGhzSettings"),
("serial", "serial"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks.py b/ansible_collections/cisco/meraki/plugins/action/networks.py
index 378b0bc0d..17904b9f8 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks.py
@@ -32,12 +32,12 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
+ copyFromNetworkId=dict(type="str"),
name=dict(type="str"),
+ notes=dict(type="str"),
productTypes=dict(type="list"),
tags=dict(type="list"),
timeZone=dict(type="str"),
- copyFromNetworkId=dict(type="str"),
- notes=dict(type="str"),
organizationId=dict(type="str"),
networkId=dict(type="str"),
enrollmentString=dict(type="str"),
@@ -56,12 +56,12 @@ class Networks(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ copyFromNetworkId=params.get("copyFromNetworkId"),
name=params.get("name"),
+ notes=params.get("notes"),
productTypes=params.get("productTypes"),
tags=params.get("tags"),
timeZone=params.get("timeZone"),
- copyFromNetworkId=params.get("copyFromNetworkId"),
- notes=params.get("notes"),
organizationId=params.get("organizationId"),
networkId=params.get("networkId"),
enrollmentString=params.get("enrollmentString"),
@@ -104,9 +104,15 @@ class Networks(object):
def create_params(self):
new_object_params = {}
+ if self.new_object.get('copyFromNetworkId') is not None or self.new_object.get('copy_from_network_id') is not None:
+ new_object_params['copyFromNetworkId'] = self.new_object.get('copyFromNetworkId') or \
+ self.new_object.get('copy_from_network_id')
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
+ if self.new_object.get('notes') is not None or self.new_object.get('notes') is not None:
+ new_object_params['notes'] = self.new_object.get('notes') or \
+ self.new_object.get('notes')
if self.new_object.get('productTypes') is not None or self.new_object.get('product_types') is not None:
new_object_params['productTypes'] = self.new_object.get('productTypes') or \
self.new_object.get('product_types')
@@ -116,12 +122,6 @@ class Networks(object):
if self.new_object.get('timeZone') is not None or self.new_object.get('time_zone') is not None:
new_object_params['timeZone'] = self.new_object.get('timeZone') or \
self.new_object.get('time_zone')
- if self.new_object.get('copyFromNetworkId') is not None or self.new_object.get('copy_from_network_id') is not None:
- new_object_params['copyFromNetworkId'] = self.new_object.get('copyFromNetworkId') or \
- self.new_object.get('copy_from_network_id')
- if self.new_object.get('notes') is not None or self.new_object.get('notes') is not None:
- new_object_params['notes'] = self.new_object.get('notes') or \
- self.new_object.get('notes')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -136,24 +136,21 @@ class Networks(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('timeZone') is not None or self.new_object.get('time_zone') is not None:
- new_object_params['timeZone'] = self.new_object.get('timeZone') or \
- self.new_object.get('time_zone')
- if self.new_object.get('productTypes') is not None or self.new_object.get('product_types') is not None:
- new_object_params['productTypes'] = self.new_object.get('productTypes') or \
- self.new_object.get('product_types')
- if self.new_object.get('tags') is not None or self.new_object.get('tags') is not None:
- new_object_params['tags'] = self.new_object.get('tags') or \
- self.new_object.get('tags')
if self.new_object.get('enrollmentString') is not None or self.new_object.get('enrollment_string') is not None:
new_object_params['enrollmentString'] = self.new_object.get('enrollmentString') or \
self.new_object.get('enrollment_string')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('notes') is not None or self.new_object.get('notes') is not None:
new_object_params['notes'] = self.new_object.get('notes') or \
self.new_object.get('notes')
+ if self.new_object.get('tags') is not None or self.new_object.get('tags') is not None:
+ new_object_params['tags'] = self.new_object.get('tags') or \
+ self.new_object.get('tags')
+ if self.new_object.get('timeZone') is not None or self.new_object.get('time_zone') is not None:
+ new_object_params['timeZone'] = self.new_object.get('timeZone') or \
+ self.new_object.get('time_zone')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -228,12 +225,12 @@ class Networks(object):
requested_obj = self.new_object
obj_params = [
+ ("copyFromNetworkId", "copyFromNetworkId"),
("name", "name"),
+ ("notes", "notes"),
("productTypes", "productTypes"),
("tags", "tags"),
("timeZone", "timeZone"),
- ("copyFromNetworkId", "copyFromNetworkId"),
- ("notes", "notes"),
("organizationId", "organizationId"),
("networkId", "networkId"),
("enrollmentString", "enrollmentString"),
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_alerts_settings.py b/ansible_collections/cisco/meraki/plugins/action/networks_alerts_settings.py
index 9389b5db1..6d0da8e32 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_alerts_settings.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_alerts_settings.py
@@ -32,8 +32,9 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- defaultDestinations=dict(type="dict"),
alerts=dict(type="list"),
+ defaultDestinations=dict(type="dict"),
+ muting=dict(type="dict"),
networkId=dict(type="str"),
))
@@ -49,8 +50,9 @@ class NetworksAlertsSettings(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- defaultDestinations=params.get("defaultDestinations"),
alerts=params.get("alerts"),
+ defaultDestinations=params.get("defaultDestinations"),
+ muting=params.get("muting"),
network_id=params.get("networkId"),
)
@@ -63,12 +65,15 @@ class NetworksAlertsSettings(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('defaultDestinations') is not None or self.new_object.get('default_destinations') is not None:
- new_object_params['defaultDestinations'] = self.new_object.get('defaultDestinations') or \
- self.new_object.get('default_destinations')
if self.new_object.get('alerts') is not None or self.new_object.get('alerts') is not None:
new_object_params['alerts'] = self.new_object.get('alerts') or \
self.new_object.get('alerts')
+ if self.new_object.get('defaultDestinations') is not None or self.new_object.get('default_destinations') is not None:
+ new_object_params['defaultDestinations'] = self.new_object.get('defaultDestinations') or \
+ self.new_object.get('default_destinations')
+ if self.new_object.get('muting') is not None or self.new_object.get('muting') is not None:
+ new_object_params['muting'] = self.new_object.get('muting') or \
+ self.new_object.get('muting')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -125,8 +130,9 @@ class NetworksAlertsSettings(object):
requested_obj = self.new_object
obj_params = [
- ("defaultDestinations", "defaultDestinations"),
("alerts", "alerts"),
+ ("defaultDestinations", "defaultDestinations"),
+ ("muting", "muting"),
("networkId", "networkId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_content_filtering.py b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_content_filtering.py
index 5cad13ae6..3f1144ee3 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_content_filtering.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_content_filtering.py
@@ -33,8 +33,8 @@ argument_spec = meraki_argument_spec()
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
allowedUrlPatterns=dict(type="list"),
- blockedUrlPatterns=dict(type="list"),
blockedUrlCategories=dict(type="list"),
+ blockedUrlPatterns=dict(type="list"),
urlCategoryListSize=dict(type="str"),
networkId=dict(type="str"),
))
@@ -52,8 +52,8 @@ class NetworksApplianceContentFiltering(object):
self.meraki = meraki
self.new_object = dict(
allowedUrlPatterns=params.get("allowedUrlPatterns"),
- blockedUrlPatterns=params.get("blockedUrlPatterns"),
blockedUrlCategories=params.get("blockedUrlCategories"),
+ blockedUrlPatterns=params.get("blockedUrlPatterns"),
urlCategoryListSize=params.get("urlCategoryListSize"),
network_id=params.get("networkId"),
)
@@ -70,12 +70,12 @@ class NetworksApplianceContentFiltering(object):
if self.new_object.get('allowedUrlPatterns') is not None or self.new_object.get('allowed_url_patterns') is not None:
new_object_params['allowedUrlPatterns'] = self.new_object.get('allowedUrlPatterns') or \
self.new_object.get('allowed_url_patterns')
- if self.new_object.get('blockedUrlPatterns') is not None or self.new_object.get('blocked_url_patterns') is not None:
- new_object_params['blockedUrlPatterns'] = self.new_object.get('blockedUrlPatterns') or \
- self.new_object.get('blocked_url_patterns')
if self.new_object.get('blockedUrlCategories') is not None or self.new_object.get('blocked_url_categories') is not None:
new_object_params['blockedUrlCategories'] = self.new_object.get('blockedUrlCategories') or \
self.new_object.get('blocked_url_categories')
+ if self.new_object.get('blockedUrlPatterns') is not None or self.new_object.get('blocked_url_patterns') is not None:
+ new_object_params['blockedUrlPatterns'] = self.new_object.get('blockedUrlPatterns') or \
+ self.new_object.get('blocked_url_patterns')
if self.new_object.get('urlCategoryListSize') is not None or self.new_object.get('url_category_list_size') is not None:
new_object_params['urlCategoryListSize'] = self.new_object.get('urlCategoryListSize') or \
self.new_object.get('url_category_list_size')
@@ -136,8 +136,8 @@ class NetworksApplianceContentFiltering(object):
obj_params = [
("allowedUrlPatterns", "allowedUrlPatterns"),
- ("blockedUrlPatterns", "blockedUrlPatterns"),
("blockedUrlCategories", "blockedUrlCategories"),
+ ("blockedUrlPatterns", "blockedUrlPatterns"),
("urlCategoryListSize", "urlCategoryListSize"),
("networkId", "networkId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_ports.py b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_ports.py
index 1c57e3fb3..c6a4ddbfb 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_ports.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_ports.py
@@ -32,12 +32,12 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- enabled=dict(type="bool"),
+ accessPolicy=dict(type="str"),
+ allowedVlans=dict(type="str"),
dropUntaggedTraffic=dict(type="bool"),
+ enabled=dict(type="bool"),
type=dict(type="str"),
vlan=dict(type="int"),
- allowedVlans=dict(type="str"),
- accessPolicy=dict(type="str"),
networkId=dict(type="str"),
portId=dict(type="str"),
))
@@ -54,12 +54,12 @@ class NetworksAppliancePorts(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- enabled=params.get("enabled"),
+ accessPolicy=params.get("accessPolicy"),
+ allowedVlans=params.get("allowedVlans"),
dropUntaggedTraffic=params.get("dropUntaggedTraffic"),
+ enabled=params.get("enabled"),
type=params.get("type"),
vlan=params.get("vlan"),
- allowedVlans=params.get("allowedVlans"),
- accessPolicy=params.get("accessPolicy"),
network_id=params.get("networkId"),
port_id=params.get("portId"),
)
@@ -83,22 +83,22 @@ class NetworksAppliancePorts(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
- new_object_params['enabled'] = self.new_object.get('enabled')
+ if self.new_object.get('accessPolicy') is not None or self.new_object.get('access_policy') is not None:
+ new_object_params['accessPolicy'] = self.new_object.get('accessPolicy') or \
+ self.new_object.get('access_policy')
+ if self.new_object.get('allowedVlans') is not None or self.new_object.get('allowed_vlans') is not None:
+ new_object_params['allowedVlans'] = self.new_object.get('allowedVlans') or \
+ self.new_object.get('allowed_vlans')
if self.new_object.get('dropUntaggedTraffic') is not None or self.new_object.get('drop_untagged_traffic') is not None:
new_object_params['dropUntaggedTraffic'] = self.new_object.get('dropUntaggedTraffic')
+ if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
+ new_object_params['enabled'] = self.new_object.get('enabled')
if self.new_object.get('type') is not None or self.new_object.get('type') is not None:
new_object_params['type'] = self.new_object.get('type') or \
self.new_object.get('type')
if self.new_object.get('vlan') is not None or self.new_object.get('vlan') is not None:
new_object_params['vlan'] = self.new_object.get('vlan') or \
self.new_object.get('vlan')
- if self.new_object.get('allowedVlans') is not None or self.new_object.get('allowed_vlans') is not None:
- new_object_params['allowedVlans'] = self.new_object.get('allowedVlans') or \
- self.new_object.get('allowed_vlans')
- if self.new_object.get('accessPolicy') is not None or self.new_object.get('access_policy') is not None:
- new_object_params['accessPolicy'] = self.new_object.get('accessPolicy') or \
- self.new_object.get('access_policy')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -176,12 +176,12 @@ class NetworksAppliancePorts(object):
requested_obj = self.new_object
obj_params = [
- ("enabled", "enabled"),
+ ("accessPolicy", "accessPolicy"),
+ ("allowedVlans", "allowedVlans"),
("dropUntaggedTraffic", "dropUntaggedTraffic"),
+ ("enabled", "enabled"),
("type", "type"),
("vlan", "vlan"),
- ("allowedVlans", "allowedVlans"),
- ("accessPolicy", "accessPolicy"),
("networkId", "networkId"),
("portId", "portId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_prefixes_delegated_statics.py b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_prefixes_delegated_statics.py
index 0297ff01e..f0fdfec7c 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_prefixes_delegated_statics.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_prefixes_delegated_statics.py
@@ -32,9 +32,9 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- prefix=dict(type="str"),
- origin=dict(type="dict"),
description=dict(type="str"),
+ origin=dict(type="dict"),
+ prefix=dict(type="str"),
networkId=dict(type="str"),
staticDelegatedPrefixId=dict(type="str"),
))
@@ -52,9 +52,9 @@ class NetworksAppliancePrefixesDelegatedStatics(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- prefix=params.get("prefix"),
- origin=params.get("origin"),
description=params.get("description"),
+ origin=params.get("origin"),
+ prefix=params.get("prefix"),
networkId=params.get("networkId"),
staticDelegatedPrefixId=params.get("staticDelegatedPrefixId"),
)
@@ -78,15 +78,15 @@ class NetworksAppliancePrefixesDelegatedStatics(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('prefix') is not None or self.new_object.get('prefix') is not None:
- new_object_params['prefix'] = self.new_object.get('prefix') or \
- self.new_object.get('prefix')
- if self.new_object.get('origin') is not None or self.new_object.get('origin') is not None:
- new_object_params['origin'] = self.new_object.get('origin') or \
- self.new_object.get('origin')
if self.new_object.get('description') is not None or self.new_object.get('description') is not None:
new_object_params['description'] = self.new_object.get('description') or \
self.new_object.get('description')
+ if self.new_object.get('origin') is not None or self.new_object.get('origin') is not None:
+ new_object_params['origin'] = self.new_object.get('origin') or \
+ self.new_object.get('origin')
+ if self.new_object.get('prefix') is not None or self.new_object.get('prefix') is not None:
+ new_object_params['prefix'] = self.new_object.get('prefix') or \
+ self.new_object.get('prefix')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -104,15 +104,15 @@ class NetworksAppliancePrefixesDelegatedStatics(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('prefix') is not None or self.new_object.get('prefix') is not None:
- new_object_params['prefix'] = self.new_object.get('prefix') or \
- self.new_object.get('prefix')
- if self.new_object.get('origin') is not None or self.new_object.get('origin') is not None:
- new_object_params['origin'] = self.new_object.get('origin') or \
- self.new_object.get('origin')
if self.new_object.get('description') is not None or self.new_object.get('description') is not None:
new_object_params['description'] = self.new_object.get('description') or \
self.new_object.get('description')
+ if self.new_object.get('origin') is not None or self.new_object.get('origin') is not None:
+ new_object_params['origin'] = self.new_object.get('origin') or \
+ self.new_object.get('origin')
+ if self.new_object.get('prefix') is not None or self.new_object.get('prefix') is not None:
+ new_object_params['prefix'] = self.new_object.get('prefix') or \
+ self.new_object.get('prefix')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -190,9 +190,9 @@ class NetworksAppliancePrefixesDelegatedStatics(object):
requested_obj = self.new_object
obj_params = [
- ("prefix", "prefix"),
- ("origin", "origin"),
("description", "description"),
+ ("origin", "origin"),
+ ("prefix", "prefix"),
("networkId", "networkId"),
("staticDelegatedPrefixId", "staticDelegatedPrefixId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_rf_profiles.py b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_rf_profiles.py
new file mode 100644
index 000000000..88a31b2d1
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_rf_profiles.py
@@ -0,0 +1,252 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or
+# https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+ meraki_compare_equality,
+ get_dict_result,
+)
+from ansible_collections.cisco.meraki.plugins.plugin_utils.exceptions import (
+ InconsistentParameters,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ state=dict(type="str", default="present", choices=["present", "absent"]),
+ fiveGhzSettings=dict(type="dict"),
+ name=dict(type="str"),
+ perSsidSettings=dict(type="dict"),
+ twoFourGhzSettings=dict(type="dict"),
+ networkId=dict(type="str"),
+))
+
+required_if = [
+ ("state", "present", ["name", "networkId"], True),
+ ("state", "absent", ["name", "networkId"], True),
+]
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class NetworksApplianceRfProfiles(object):
+ def __init__(self, params, meraki):
+ self.meraki = meraki
+ self.new_object = dict(
+ fiveGhzSettings=params.get("fiveGhzSettings"),
+ name=params.get("name"),
+ perSsidSettings=params.get("perSsidSettings"),
+ twoFourGhzSettings=params.get("twoFourGhzSettings"),
+ networkId=params.get("networkId"),
+ )
+
+ def get_all_params(self, name=None, id=None):
+ new_object_params = {}
+ if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
+ new_object_params['networkId'] = self.new_object.get('networkId') or \
+ self.new_object.get('network_id')
+ return new_object_params
+
+ def create_params(self):
+ new_object_params = {}
+ if self.new_object.get('fiveGhzSettings') is not None or self.new_object.get('five_ghz_settings') is not None:
+ new_object_params['fiveGhzSettings'] = self.new_object.get('fiveGhzSettings') or \
+ self.new_object.get('five_ghz_settings')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('perSsidSettings') is not None or self.new_object.get('per_ssid_settings') is not None:
+ new_object_params['perSsidSettings'] = self.new_object.get('perSsidSettings') or \
+ self.new_object.get('per_ssid_settings')
+ if self.new_object.get('twoFourGhzSettings') is not None or self.new_object.get('two_four_ghz_settings') is not None:
+ new_object_params['twoFourGhzSettings'] = self.new_object.get('twoFourGhzSettings') or \
+ self.new_object.get('two_four_ghz_settings')
+ if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
+ new_object_params['networkId'] = self.new_object.get('networkId') or \
+ self.new_object.get('network_id')
+ return new_object_params
+
+ def get_object_by_name(self, name):
+ result = None
+ # NOTE: Does not have a get by name method or it is in another action
+ try:
+ items = self.meraki.exec_meraki(
+ family="appliance",
+ function="getNetworkApplianceRfProfiles",
+ params=self.get_all_params(name=name),
+ )
+ if isinstance(items, dict):
+ if 'assigned' in items:
+ items = items.get('assigned')
+ result = get_dict_result(items, 'name', name)
+ if result is None:
+ result = items
+ except Exception as e:
+ print("Error: ", e)
+ result = None
+ return result
+
+ def get_object_by_id(self, id):
+ result = None
+ # NOTE: Does not have a get by id method or it is in another action
+ try:
+ items = self.meraki.exec_meraki(
+ family="appliance",
+ function="getNetworkApplianceRfProfiles",
+ params=self.get_all_params(id=id),
+ )
+ if isinstance(items, dict):
+ if 'response' in items:
+ items = items.get('response')
+ result = get_dict_result(items, 'id', id)
+ except Exception as e:
+ print("Error: ", e)
+ result = None
+ return result
+
+ def exists(self):
+ id_exists = False
+ name_exists = False
+ prev_obj = None
+ o_id = self.new_object.get("id")
+ name = self.new_object.get("name")
+ if o_id:
+ prev_obj = self.get_object_by_id(o_id)
+ id_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if not id_exists and name:
+ prev_obj = self.get_object_by_name(name)
+ name_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if name_exists:
+ _id = prev_obj.get("id")
+ if id_exists and name_exists and o_id != _id:
+ raise InconsistentParameters(
+ "The 'id' and 'name' params don't refer to the same object")
+ if _id:
+ self.new_object.update(dict(id=_id))
+ it_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ return (it_exists, prev_obj)
+
+ def requires_update(self, current_obj):
+ requested_obj = self.new_object
+
+ obj_params = [
+ ("fiveGhzSettings", "fiveGhzSettings"),
+ ("name", "name"),
+ ("perSsidSettings", "perSsidSettings"),
+ ("twoFourGhzSettings", "twoFourGhzSettings"),
+ ("networkId", "networkId"),
+ ]
+ # Method 1. Params present in request (Ansible) obj are the same as the current (DNAC) params
+ # If any does not have eq params, it requires update
+ return any(not meraki_compare_equality(current_obj.get(meraki_param),
+ requested_obj.get(ansible_param))
+ for (meraki_param, ansible_param) in obj_params)
+
+ def create(self):
+ result = self.meraki.exec_meraki(
+ family="appliance",
+ function="createNetworkApplianceRfProfile",
+ params=self.create_params(),
+ op_modifies=True,
+ )
+ return result
+
+ def update(self):
+ id = self.new_object.get("id")
+ name = self.new_object.get("name")
+ result = None
+ # NOTE: Does not have update method. What do we do?
+ return result
+
+ def delete(self):
+ id = self.new_object.get("id")
+ name = self.new_object.get("name")
+ result = None
+ # NOTE: Does not have delete method. What do we do?
+ return result
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(self._task.args)
+ obj = NetworksApplianceRfProfiles(self._task.args, meraki)
+
+ state = self._task.args.get("state")
+
+ response = None
+
+ if state == "present":
+ (obj_exists, prev_obj) = obj.exists()
+ if obj_exists:
+ if obj.requires_update(prev_obj):
+ response = obj.update()
+ meraki.object_updated()
+ else:
+ response = prev_obj
+ meraki.object_already_present()
+ else:
+ response = obj.create()
+ meraki.object_created()
+
+ elif state == "absent":
+ (obj_exists, prev_obj) = obj.exists()
+ if obj_exists:
+ response = obj.delete()
+ meraki.object_deleted()
+ else:
+ meraki.object_already_absent()
+
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_rf_profiles_info.py b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_rf_profiles_info.py
new file mode 100644
index 000000000..863571233
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_rf_profiles_info.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ networkId=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("networkId") is not None:
+ new_object["networkId"] = params.get(
+ "networkId")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="appliance",
+ function='getNetworkApplianceRfProfiles',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_security_intrusion.py b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_security_intrusion.py
index 3449abf9c..6da952d48 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_security_intrusion.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_security_intrusion.py
@@ -32,8 +32,8 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- mode=dict(type="str"),
idsRulesets=dict(type="str"),
+ mode=dict(type="str"),
protectedNetworks=dict(type="dict"),
networkId=dict(type="str"),
))
@@ -50,8 +50,8 @@ class NetworksApplianceSecurityIntrusion(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- mode=params.get("mode"),
idsRulesets=params.get("idsRulesets"),
+ mode=params.get("mode"),
protectedNetworks=params.get("protectedNetworks"),
network_id=params.get("networkId"),
)
@@ -65,12 +65,12 @@ class NetworksApplianceSecurityIntrusion(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('mode') is not None or self.new_object.get('mode') is not None:
- new_object_params['mode'] = self.new_object.get('mode') or \
- self.new_object.get('mode')
if self.new_object.get('idsRulesets') is not None or self.new_object.get('ids_rulesets') is not None:
new_object_params['idsRulesets'] = self.new_object.get('idsRulesets') or \
self.new_object.get('ids_rulesets')
+ if self.new_object.get('mode') is not None or self.new_object.get('mode') is not None:
+ new_object_params['mode'] = self.new_object.get('mode') or \
+ self.new_object.get('mode')
if self.new_object.get('protectedNetworks') is not None or self.new_object.get('protected_networks') is not None:
new_object_params['protectedNetworks'] = self.new_object.get('protectedNetworks') or \
self.new_object.get('protected_networks')
@@ -130,8 +130,8 @@ class NetworksApplianceSecurityIntrusion(object):
requested_obj = self.new_object
obj_params = [
- ("mode", "mode"),
("idsRulesets", "idsRulesets"),
+ ("mode", "mode"),
("protectedNetworks", "protectedNetworks"),
("networkId", "networkId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_security_malware.py b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_security_malware.py
index 904889494..faef0ed12 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_security_malware.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_security_malware.py
@@ -32,9 +32,9 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- mode=dict(type="str"),
- allowedUrls=dict(type="list"),
allowedFiles=dict(type="list"),
+ allowedUrls=dict(type="list"),
+ mode=dict(type="str"),
networkId=dict(type="str"),
))
@@ -50,9 +50,9 @@ class NetworksApplianceSecurityMalware(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- mode=params.get("mode"),
- allowedUrls=params.get("allowedUrls"),
allowedFiles=params.get("allowedFiles"),
+ allowedUrls=params.get("allowedUrls"),
+ mode=params.get("mode"),
network_id=params.get("networkId"),
)
@@ -65,15 +65,15 @@ class NetworksApplianceSecurityMalware(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('mode') is not None or self.new_object.get('mode') is not None:
- new_object_params['mode'] = self.new_object.get('mode') or \
- self.new_object.get('mode')
- if self.new_object.get('allowedUrls') is not None or self.new_object.get('allowed_urls') is not None:
- new_object_params['allowedUrls'] = self.new_object.get('allowedUrls') or \
- self.new_object.get('allowed_urls')
if self.new_object.get('allowedFiles') is not None or self.new_object.get('allowed_files') is not None:
new_object_params['allowedFiles'] = self.new_object.get('allowedFiles') or \
self.new_object.get('allowed_files')
+ if self.new_object.get('allowedUrls') is not None or self.new_object.get('allowed_urls') is not None:
+ new_object_params['allowedUrls'] = self.new_object.get('allowedUrls') or \
+ self.new_object.get('allowed_urls')
+ if self.new_object.get('mode') is not None or self.new_object.get('mode') is not None:
+ new_object_params['mode'] = self.new_object.get('mode') or \
+ self.new_object.get('mode')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -130,9 +130,9 @@ class NetworksApplianceSecurityMalware(object):
requested_obj = self.new_object
obj_params = [
- ("mode", "mode"),
- ("allowedUrls", "allowedUrls"),
("allowedFiles", "allowedFiles"),
+ ("allowedUrls", "allowedUrls"),
+ ("mode", "mode"),
("networkId", "networkId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_single_lan.py b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_single_lan.py
index fd8219403..4254f631f 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_single_lan.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_single_lan.py
@@ -32,10 +32,10 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- subnet=dict(type="str"),
applianceIp=dict(type="str"),
ipv6=dict(type="dict"),
mandatoryDhcp=dict(type="dict"),
+ subnet=dict(type="str"),
networkId=dict(type="str"),
))
@@ -51,10 +51,10 @@ class NetworksApplianceSingleLan(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- subnet=params.get("subnet"),
applianceIp=params.get("applianceIp"),
ipv6=params.get("ipv6"),
mandatoryDhcp=params.get("mandatoryDhcp"),
+ subnet=params.get("subnet"),
network_id=params.get("networkId"),
)
@@ -67,9 +67,6 @@ class NetworksApplianceSingleLan(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
- new_object_params['subnet'] = self.new_object.get('subnet') or \
- self.new_object.get('subnet')
if self.new_object.get('applianceIp') is not None or self.new_object.get('appliance_ip') is not None:
new_object_params['applianceIp'] = self.new_object.get('applianceIp') or \
self.new_object.get('appliance_ip')
@@ -79,6 +76,9 @@ class NetworksApplianceSingleLan(object):
if self.new_object.get('mandatoryDhcp') is not None or self.new_object.get('mandatory_dhcp') is not None:
new_object_params['mandatoryDhcp'] = self.new_object.get('mandatoryDhcp') or \
self.new_object.get('mandatory_dhcp')
+ if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
+ new_object_params['subnet'] = self.new_object.get('subnet') or \
+ self.new_object.get('subnet')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -135,10 +135,10 @@ class NetworksApplianceSingleLan(object):
requested_obj = self.new_object
obj_params = [
- ("subnet", "subnet"),
("applianceIp", "applianceIp"),
("ipv6", "ipv6"),
("mandatoryDhcp", "mandatoryDhcp"),
+ ("subnet", "subnet"),
("networkId", "networkId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_ssids.py b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_ssids.py
index cfe172d5a..364855692 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_ssids.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_ssids.py
@@ -32,16 +32,17 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- name=dict(type="str"),
- enabled=dict(type="bool"),
- defaultVlanId=dict(type="int"),
authMode=dict(type="str"),
+ defaultVlanId=dict(type="int"),
+ dhcpEnforcedDeauthentication=dict(type="dict"),
+ dot11w=dict(type="dict"),
+ enabled=dict(type="bool"),
+ encryptionMode=dict(type="str"),
+ name=dict(type="str"),
psk=dict(type="str"),
radiusServers=dict(type="list"),
- encryptionMode=dict(type="str"),
- wpaEncryptionMode=dict(type="str"),
visible=dict(type="bool"),
- dhcpEnforcedDeauthentication=dict(type="dict"),
+ wpaEncryptionMode=dict(type="str"),
networkId=dict(type="str"),
number=dict(type="str"),
))
@@ -58,16 +59,17 @@ class NetworksApplianceSsids(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
- enabled=params.get("enabled"),
- defaultVlanId=params.get("defaultVlanId"),
authMode=params.get("authMode"),
+ defaultVlanId=params.get("defaultVlanId"),
+ dhcpEnforcedDeauthentication=params.get("dhcpEnforcedDeauthentication"),
+ dot11w=params.get("dot11w"),
+ enabled=params.get("enabled"),
+ encryptionMode=params.get("encryptionMode"),
+ name=params.get("name"),
psk=params.get("psk"),
radiusServers=params.get("radiusServers"),
- encryptionMode=params.get("encryptionMode"),
- wpaEncryptionMode=params.get("wpaEncryptionMode"),
visible=params.get("visible"),
- dhcpEnforcedDeauthentication=params.get("dhcpEnforcedDeauthentication"),
+ wpaEncryptionMode=params.get("wpaEncryptionMode"),
network_id=params.get("networkId"),
number=params.get("number"),
)
@@ -90,34 +92,37 @@ class NetworksApplianceSsids(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
- new_object_params['enabled'] = self.new_object.get('enabled')
- if self.new_object.get('defaultVlanId') is not None or self.new_object.get('default_vlan_id') is not None:
- new_object_params['defaultVlanId'] = self.new_object.get('defaultVlanId') or \
- self.new_object.get('default_vlan_id')
if self.new_object.get('authMode') is not None or self.new_object.get('auth_mode') is not None:
new_object_params['authMode'] = self.new_object.get('authMode') or \
self.new_object.get('auth_mode')
+ if self.new_object.get('defaultVlanId') is not None or self.new_object.get('default_vlan_id') is not None:
+ new_object_params['defaultVlanId'] = self.new_object.get('defaultVlanId') or \
+ self.new_object.get('default_vlan_id')
+ if self.new_object.get('dhcpEnforcedDeauthentication') is not None or self.new_object.get('dhcp_enforced_deauthentication') is not None:
+ new_object_params['dhcpEnforcedDeauthentication'] = self.new_object.get('dhcpEnforcedDeauthentication') or \
+ self.new_object.get('dhcp_enforced_deauthentication')
+ if self.new_object.get('dot11w') is not None or self.new_object.get('dot11w') is not None:
+ new_object_params['dot11w'] = self.new_object.get('dot11w') or \
+ self.new_object.get('dot11w')
+ if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
+ new_object_params['enabled'] = self.new_object.get('enabled')
+ if self.new_object.get('encryptionMode') is not None or self.new_object.get('encryption_mode') is not None:
+ new_object_params['encryptionMode'] = self.new_object.get('encryptionMode') or \
+ self.new_object.get('encryption_mode')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('psk') is not None or self.new_object.get('psk') is not None:
new_object_params['psk'] = self.new_object.get('psk') or \
self.new_object.get('psk')
if self.new_object.get('radiusServers') is not None or self.new_object.get('radius_servers') is not None:
new_object_params['radiusServers'] = self.new_object.get('radiusServers') or \
self.new_object.get('radius_servers')
- if self.new_object.get('encryptionMode') is not None or self.new_object.get('encryption_mode') is not None:
- new_object_params['encryptionMode'] = self.new_object.get('encryptionMode') or \
- self.new_object.get('encryption_mode')
+ if self.new_object.get('visible') is not None or self.new_object.get('visible') is not None:
+ new_object_params['visible'] = self.new_object.get('visible')
if self.new_object.get('wpaEncryptionMode') is not None or self.new_object.get('wpa_encryption_mode') is not None:
new_object_params['wpaEncryptionMode'] = self.new_object.get('wpaEncryptionMode') or \
self.new_object.get('wpa_encryption_mode')
- if self.new_object.get('visible') is not None or self.new_object.get('visible') is not None:
- new_object_params['visible'] = self.new_object.get('visible')
- if self.new_object.get('dhcpEnforcedDeauthentication') is not None or self.new_object.get('dhcp_enforced_deauthentication') is not None:
- new_object_params['dhcpEnforcedDeauthentication'] = self.new_object.get('dhcpEnforcedDeauthentication') or \
- self.new_object.get('dhcp_enforced_deauthentication')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -195,16 +200,17 @@ class NetworksApplianceSsids(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
- ("enabled", "enabled"),
- ("defaultVlanId", "defaultVlanId"),
("authMode", "authMode"),
+ ("defaultVlanId", "defaultVlanId"),
+ ("dhcpEnforcedDeauthentication", "dhcpEnforcedDeauthentication"),
+ ("dot11w", "dot11w"),
+ ("enabled", "enabled"),
+ ("encryptionMode", "encryptionMode"),
+ ("name", "name"),
("psk", "psk"),
("radiusServers", "radiusServers"),
- ("encryptionMode", "encryptionMode"),
- ("wpaEncryptionMode", "wpaEncryptionMode"),
("visible", "visible"),
- ("dhcpEnforcedDeauthentication", "dhcpEnforcedDeauthentication"),
+ ("wpaEncryptionMode", "wpaEncryptionMode"),
("networkId", "networkId"),
("number", "number"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_traffic_shaping_custom_performance_classes.py b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_traffic_shaping_custom_performance_classes.py
index 4331bc9b2..dd072c4c8 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_traffic_shaping_custom_performance_classes.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_traffic_shaping_custom_performance_classes.py
@@ -25,10 +25,10 @@ from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
- name=dict(type="str"),
- maxLatency=dict(type="int"),
maxJitter=dict(type="int"),
+ maxLatency=dict(type="int"),
maxLossPercentage=dict(type="int"),
+ name=dict(type="str"),
networkId=dict(type="str"),
))
@@ -68,10 +68,10 @@ class ActionModule(ActionBase):
def get_object(self, params):
new_object = dict(
- name=params.get("name"),
- maxLatency=params.get("maxLatency"),
maxJitter=params.get("maxJitter"),
+ maxLatency=params.get("maxLatency"),
maxLossPercentage=params.get("maxLossPercentage"),
+ name=params.get("name"),
networkId=params.get("networkId"),
)
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_traffic_shaping_uplink_selection.py b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_traffic_shaping_uplink_selection.py
index 79b737a1e..525ba5f77 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_traffic_shaping_uplink_selection.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_traffic_shaping_uplink_selection.py
@@ -34,10 +34,10 @@ argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
activeActiveAutoVpnEnabled=dict(type="bool"),
defaultUplink=dict(type="str"),
- loadBalancingEnabled=dict(type="bool"),
failoverAndFailback=dict(type="dict"),
- wanTrafficUplinkPreferences=dict(type="list"),
+ loadBalancingEnabled=dict(type="bool"),
vpnTrafficUplinkPreferences=dict(type="list"),
+ wanTrafficUplinkPreferences=dict(type="list"),
networkId=dict(type="str"),
))
@@ -55,10 +55,10 @@ class NetworksApplianceTrafficShapingUplinkSelection(object):
self.new_object = dict(
activeActiveAutoVpnEnabled=params.get("activeActiveAutoVpnEnabled"),
defaultUplink=params.get("defaultUplink"),
- loadBalancingEnabled=params.get("loadBalancingEnabled"),
failoverAndFailback=params.get("failoverAndFailback"),
- wanTrafficUplinkPreferences=params.get("wanTrafficUplinkPreferences"),
+ loadBalancingEnabled=params.get("loadBalancingEnabled"),
vpnTrafficUplinkPreferences=params.get("vpnTrafficUplinkPreferences"),
+ wanTrafficUplinkPreferences=params.get("wanTrafficUplinkPreferences"),
network_id=params.get("networkId"),
)
@@ -76,17 +76,17 @@ class NetworksApplianceTrafficShapingUplinkSelection(object):
if self.new_object.get('defaultUplink') is not None or self.new_object.get('default_uplink') is not None:
new_object_params['defaultUplink'] = self.new_object.get('defaultUplink') or \
self.new_object.get('default_uplink')
- if self.new_object.get('loadBalancingEnabled') is not None or self.new_object.get('load_balancing_enabled') is not None:
- new_object_params['loadBalancingEnabled'] = self.new_object.get('loadBalancingEnabled')
if self.new_object.get('failoverAndFailback') is not None or self.new_object.get('failover_and_failback') is not None:
new_object_params['failoverAndFailback'] = self.new_object.get('failoverAndFailback') or \
self.new_object.get('failover_and_failback')
- if self.new_object.get('wanTrafficUplinkPreferences') is not None or self.new_object.get('wan_traffic_uplink_preferences') is not None:
- new_object_params['wanTrafficUplinkPreferences'] = self.new_object.get('wanTrafficUplinkPreferences') or \
- self.new_object.get('wan_traffic_uplink_preferences')
+ if self.new_object.get('loadBalancingEnabled') is not None or self.new_object.get('load_balancing_enabled') is not None:
+ new_object_params['loadBalancingEnabled'] = self.new_object.get('loadBalancingEnabled')
if self.new_object.get('vpnTrafficUplinkPreferences') is not None or self.new_object.get('vpn_traffic_uplink_preferences') is not None:
new_object_params['vpnTrafficUplinkPreferences'] = self.new_object.get('vpnTrafficUplinkPreferences') or \
self.new_object.get('vpn_traffic_uplink_preferences')
+ if self.new_object.get('wanTrafficUplinkPreferences') is not None or self.new_object.get('wan_traffic_uplink_preferences') is not None:
+ new_object_params['wanTrafficUplinkPreferences'] = self.new_object.get('wanTrafficUplinkPreferences') or \
+ self.new_object.get('wan_traffic_uplink_preferences')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -145,10 +145,10 @@ class NetworksApplianceTrafficShapingUplinkSelection(object):
obj_params = [
("activeActiveAutoVpnEnabled", "activeActiveAutoVpnEnabled"),
("defaultUplink", "defaultUplink"),
- ("loadBalancingEnabled", "loadBalancingEnabled"),
("failoverAndFailback", "failoverAndFailback"),
- ("wanTrafficUplinkPreferences", "wanTrafficUplinkPreferences"),
+ ("loadBalancingEnabled", "loadBalancingEnabled"),
("vpnTrafficUplinkPreferences", "vpnTrafficUplinkPreferences"),
+ ("wanTrafficUplinkPreferences", "wanTrafficUplinkPreferences"),
("networkId", "networkId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_traffic_shaping_vpn_exclusions.py b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_traffic_shaping_vpn_exclusions.py
new file mode 100644
index 000000000..447231a08
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_traffic_shaping_vpn_exclusions.py
@@ -0,0 +1,91 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguements specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ custom=dict(type="list"),
+ majorApplications=dict(type="list"),
+ networkId=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_object(self, params):
+ new_object = dict(
+ custom=params.get("custom"),
+ majorApplications=params.get("majorApplications"),
+ networkId=params.get("networkId"),
+ )
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="appliance",
+ function='updateNetworkApplianceTrafficShapingVpnExclusions',
+ op_modifies=True,
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_vlans.py b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_vlans.py
index ba4835a9d..48ebdb4ca 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_vlans.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_vlans.py
@@ -32,29 +32,29 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- id=dict(type="str"),
- name=dict(type="str"),
- subnet=dict(type="str"),
applianceIp=dict(type="str"),
- groupPolicyId=dict(type="str"),
- templateVlanType=dict(type="str"),
cidr=dict(type="str"),
- mask=dict(type="int"),
+ groupPolicyId=dict(type="str"),
+ id=dict(type="str"),
ipv6=dict(type="dict"),
mandatoryDhcp=dict(type="dict"),
+ mask=dict(type="int"),
+ name=dict(type="str"),
+ subnet=dict(type="str"),
+ templateVlanType=dict(type="str"),
networkId=dict(type="str"),
vlanId=dict(type="str"),
- vpnNatSubnet=dict(type="str"),
+ dhcpBootFilename=dict(type="str"),
+ dhcpBootNextServer=dict(type="str"),
+ dhcpBootOptionsEnabled=dict(type="bool"),
dhcpHandling=dict(type="str"),
- dhcpRelayServerIps=dict(type="list"),
dhcpLeaseTime=dict(type="str"),
- dhcpBootOptionsEnabled=dict(type="bool"),
- dhcpBootNextServer=dict(type="str"),
- dhcpBootFilename=dict(type="str"),
+ dhcpOptions=dict(type="list"),
+ dhcpRelayServerIps=dict(type="list"),
+ dnsNameservers=dict(type="str"),
fixedIpAssignments=dict(type="dict"),
reservedIpRanges=dict(type="list"),
- dnsNameservers=dict(type="str"),
- dhcpOptions=dict(type="list"),
+ vpnNatSubnet=dict(type="str"),
))
required_if = [
@@ -70,29 +70,29 @@ class NetworksApplianceVlans(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- id=params.get("id"),
- name=params.get("name"),
- subnet=params.get("subnet"),
applianceIp=params.get("applianceIp"),
- groupPolicyId=params.get("groupPolicyId"),
- templateVlanType=params.get("templateVlanType"),
cidr=params.get("cidr"),
- mask=params.get("mask"),
+ groupPolicyId=params.get("groupPolicyId"),
+ id=params.get("id"),
ipv6=params.get("ipv6"),
mandatoryDhcp=params.get("mandatoryDhcp"),
+ mask=params.get("mask"),
+ name=params.get("name"),
+ subnet=params.get("subnet"),
+ templateVlanType=params.get("templateVlanType"),
networkId=params.get("networkId"),
vlanId=params.get("vlanId"),
- vpnNatSubnet=params.get("vpnNatSubnet"),
+ dhcpBootFilename=params.get("dhcpBootFilename"),
+ dhcpBootNextServer=params.get("dhcpBootNextServer"),
+ dhcpBootOptionsEnabled=params.get("dhcpBootOptionsEnabled"),
dhcpHandling=params.get("dhcpHandling"),
- dhcpRelayServerIps=params.get("dhcpRelayServerIps"),
dhcpLeaseTime=params.get("dhcpLeaseTime"),
- dhcpBootOptionsEnabled=params.get("dhcpBootOptionsEnabled"),
- dhcpBootNextServer=params.get("dhcpBootNextServer"),
- dhcpBootFilename=params.get("dhcpBootFilename"),
+ dhcpOptions=params.get("dhcpOptions"),
+ dhcpRelayServerIps=params.get("dhcpRelayServerIps"),
+ dnsNameservers=params.get("dnsNameservers"),
fixedIpAssignments=params.get("fixedIpAssignments"),
reservedIpRanges=params.get("reservedIpRanges"),
- dnsNameservers=params.get("dnsNameservers"),
- dhcpOptions=params.get("dhcpOptions"),
+ vpnNatSubnet=params.get("vpnNatSubnet"),
)
def get_all_params(self, name=None, id=None):
@@ -107,43 +107,43 @@ class NetworksApplianceVlans(object):
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
- if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None or self.new_object.get('id') is not None:
+ if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None:
new_object_params['vlanId'] = self.new_object.get('vlanId') or \
- self.new_object.get('vlan_id') or self.new_object.get('id')
+ self.new_object.get('vlan_id')
return new_object_params
def create_params(self):
new_object_params = {}
- if self.new_object.get('id') is not None or self.new_object.get('id') is not None:
- new_object_params['id'] = self.new_object.get('id') or \
- self.new_object.get('id')
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
- new_object_params['subnet'] = self.new_object.get('subnet') or \
- self.new_object.get('subnet')
if self.new_object.get('applianceIp') is not None or self.new_object.get('appliance_ip') is not None:
new_object_params['applianceIp'] = self.new_object.get('applianceIp') or \
self.new_object.get('appliance_ip')
- if self.new_object.get('groupPolicyId') is not None or self.new_object.get('group_policy_id') is not None:
- new_object_params['groupPolicyId'] = self.new_object.get('groupPolicyId') or \
- self.new_object.get('group_policy_id')
- if self.new_object.get('templateVlanType') is not None or self.new_object.get('template_vlan_type') is not None:
- new_object_params['templateVlanType'] = self.new_object.get('templateVlanType') or \
- self.new_object.get('template_vlan_type')
if self.new_object.get('cidr') is not None or self.new_object.get('cidr') is not None:
new_object_params['cidr'] = self.new_object.get('cidr') or \
self.new_object.get('cidr')
- if self.new_object.get('mask') is not None or self.new_object.get('mask') is not None:
- new_object_params['mask'] = self.new_object.get('mask') or \
- self.new_object.get('mask')
+ if self.new_object.get('groupPolicyId') is not None or self.new_object.get('group_policy_id') is not None:
+ new_object_params['groupPolicyId'] = self.new_object.get('groupPolicyId') or \
+ self.new_object.get('group_policy_id')
+ if self.new_object.get('id') is not None or self.new_object.get('id') is not None:
+ new_object_params['id'] = self.new_object.get('id') or \
+ self.new_object.get('id')
if self.new_object.get('ipv6') is not None or self.new_object.get('ipv6') is not None:
new_object_params['ipv6'] = self.new_object.get('ipv6') or \
self.new_object.get('ipv6')
if self.new_object.get('mandatoryDhcp') is not None or self.new_object.get('mandatory_dhcp') is not None:
new_object_params['mandatoryDhcp'] = self.new_object.get('mandatoryDhcp') or \
self.new_object.get('mandatory_dhcp')
+ if self.new_object.get('mask') is not None or self.new_object.get('mask') is not None:
+ new_object_params['mask'] = self.new_object.get('mask') or \
+ self.new_object.get('mask')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
+ new_object_params['subnet'] = self.new_object.get('subnet') or \
+ self.new_object.get('subnet')
+ if self.new_object.get('templateVlanType') is not None or self.new_object.get('template_vlan_type') is not None:
+ new_object_params['templateVlanType'] = self.new_object.get('templateVlanType') or \
+ self.new_object.get('template_vlan_type')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -154,79 +154,78 @@ class NetworksApplianceVlans(object):
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
- if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None is not None or self.new_object.get('id') is not None:
+ if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None:
new_object_params['vlanId'] = self.new_object.get('vlanId') or \
- self.new_object.get('vlan_id') or self.new_object.get('id')
+ self.new_object.get('vlan_id')
return new_object_params
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
- new_object_params['subnet'] = self.new_object.get('subnet') or \
- self.new_object.get('subnet')
if self.new_object.get('applianceIp') is not None or self.new_object.get('appliance_ip') is not None:
new_object_params['applianceIp'] = self.new_object.get('applianceIp') or \
self.new_object.get('appliance_ip')
- if self.new_object.get('groupPolicyId') is not None or self.new_object.get('group_policy_id') is not None:
- new_object_params['groupPolicyId'] = self.new_object.get('groupPolicyId') or \
- self.new_object.get('group_policy_id')
- if self.new_object.get('vpnNatSubnet') is not None or self.new_object.get('vpn_nat_subnet') is not None:
- new_object_params['vpnNatSubnet'] = self.new_object.get('vpnNatSubnet') or \
- self.new_object.get('vpn_nat_subnet')
+ if self.new_object.get('cidr') is not None or self.new_object.get('cidr') is not None:
+ new_object_params['cidr'] = self.new_object.get('cidr') or \
+ self.new_object.get('cidr')
+ if self.new_object.get('dhcpBootFilename') is not None or self.new_object.get('dhcp_boot_filename') is not None:
+ new_object_params['dhcpBootFilename'] = self.new_object.get('dhcpBootFilename') or \
+ self.new_object.get('dhcp_boot_filename')
+ if self.new_object.get('dhcpBootNextServer') is not None or self.new_object.get('dhcp_boot_next_server') is not None:
+ new_object_params['dhcpBootNextServer'] = self.new_object.get('dhcpBootNextServer') or \
+ self.new_object.get('dhcp_boot_next_server')
+ if self.new_object.get('dhcpBootOptionsEnabled') is not None or self.new_object.get('dhcp_boot_options_enabled') is not None:
+ new_object_params['dhcpBootOptionsEnabled'] = self.new_object.get('dhcpBootOptionsEnabled')
if self.new_object.get('dhcpHandling') is not None or self.new_object.get('dhcp_handling') is not None:
new_object_params['dhcpHandling'] = self.new_object.get('dhcpHandling') or \
self.new_object.get('dhcp_handling')
- if self.new_object.get('dhcpRelayServerIps') is not None or self.new_object.get('dhcp_relay_server_ips') is not None:
- new_object_params['dhcpRelayServerIps'] = self.new_object.get('dhcpRelayServerIps') or \
- self.new_object.get('dhcp_relay_server_ips')
if self.new_object.get('dhcpLeaseTime') is not None or self.new_object.get('dhcp_lease_time') is not None:
new_object_params['dhcpLeaseTime'] = self.new_object.get('dhcpLeaseTime') or \
self.new_object.get('dhcp_lease_time')
- if self.new_object.get('dhcpBootOptionsEnabled') is not None or self.new_object.get('dhcp_boot_options_enabled') is not None:
- new_object_params['dhcpBootOptionsEnabled'] = self.new_object.get(
- 'dhcpBootOptionsEnabled')
- if self.new_object.get('dhcpBootNextServer') is not None or self.new_object.get('dhcp_boot_next_server') is not None:
- new_object_params['dhcpBootNextServer'] = self.new_object.get('dhcpBootNextServer') or \
- self.new_object.get('dhcp_boot_next_server')
- if self.new_object.get('dhcpBootFilename') is not None or self.new_object.get('dhcp_boot_filename') is not None:
- new_object_params['dhcpBootFilename'] = self.new_object.get('dhcpBootFilename') or \
- self.new_object.get('dhcp_boot_filename')
- if self.new_object.get('fixedIpAssignments') is not None or self.new_object.get('fixed_ip_assignments') is not None:
- new_object_params['fixedIpAssignments'] = self.new_object.get('fixedIpAssignments') or \
- self.new_object.get('fixed_ip_assignments')
- if self.new_object.get('reservedIpRanges') is not None or self.new_object.get('reserved_ip_ranges') is not None:
- new_object_params['reservedIpRanges'] = self.new_object.get('reservedIpRanges') or \
- self.new_object.get('reserved_ip_ranges')
- if self.new_object.get('dnsNameservers') is not None or self.new_object.get('dns_nameservers') is not None:
- new_object_params['dnsNameservers'] = self.new_object.get('dnsNameservers') or \
- self.new_object.get('dns_nameservers')
if self.new_object.get('dhcpOptions') is not None or self.new_object.get('dhcp_options') is not None:
new_object_params['dhcpOptions'] = self.new_object.get('dhcpOptions') or \
self.new_object.get('dhcp_options')
- if self.new_object.get('templateVlanType') is not None or self.new_object.get('template_vlan_type') is not None:
- new_object_params['templateVlanType'] = self.new_object.get('templateVlanType') or \
- self.new_object.get('template_vlan_type')
- if self.new_object.get('cidr') is not None or self.new_object.get('cidr') is not None:
- new_object_params['cidr'] = self.new_object.get('cidr') or \
- self.new_object.get('cidr')
- if self.new_object.get('mask') is not None or self.new_object.get('mask') is not None:
- new_object_params['mask'] = self.new_object.get('mask') or \
- self.new_object.get('mask')
+ if self.new_object.get('dhcpRelayServerIps') is not None or self.new_object.get('dhcp_relay_server_ips') is not None:
+ new_object_params['dhcpRelayServerIps'] = self.new_object.get('dhcpRelayServerIps') or \
+ self.new_object.get('dhcp_relay_server_ips')
+ if self.new_object.get('dnsNameservers') is not None or self.new_object.get('dns_nameservers') is not None:
+ new_object_params['dnsNameservers'] = self.new_object.get('dnsNameservers') or \
+ self.new_object.get('dns_nameservers')
+ if self.new_object.get('fixedIpAssignments') is not None or self.new_object.get('fixed_ip_assignments') is not None:
+ new_object_params['fixedIpAssignments'] = self.new_object.get('fixedIpAssignments') or \
+ self.new_object.get('fixed_ip_assignments')
+ if self.new_object.get('groupPolicyId') is not None or self.new_object.get('group_policy_id') is not None:
+ new_object_params['groupPolicyId'] = self.new_object.get('groupPolicyId') or \
+ self.new_object.get('group_policy_id')
if self.new_object.get('ipv6') is not None or self.new_object.get('ipv6') is not None:
new_object_params['ipv6'] = self.new_object.get('ipv6') or \
self.new_object.get('ipv6')
if self.new_object.get('mandatoryDhcp') is not None or self.new_object.get('mandatory_dhcp') is not None:
new_object_params['mandatoryDhcp'] = self.new_object.get('mandatoryDhcp') or \
self.new_object.get('mandatory_dhcp')
+ if self.new_object.get('mask') is not None or self.new_object.get('mask') is not None:
+ new_object_params['mask'] = self.new_object.get('mask') or \
+ self.new_object.get('mask')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('reservedIpRanges') is not None or self.new_object.get('reserved_ip_ranges') is not None:
+ new_object_params['reservedIpRanges'] = self.new_object.get('reservedIpRanges') or \
+ self.new_object.get('reserved_ip_ranges')
+ if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
+ new_object_params['subnet'] = self.new_object.get('subnet') or \
+ self.new_object.get('subnet')
+ if self.new_object.get('templateVlanType') is not None or self.new_object.get('template_vlan_type') is not None:
+ new_object_params['templateVlanType'] = self.new_object.get('templateVlanType') or \
+ self.new_object.get('template_vlan_type')
+ if self.new_object.get('vpnNatSubnet') is not None or self.new_object.get('vpn_nat_subnet') is not None:
+ new_object_params['vpnNatSubnet'] = self.new_object.get('vpnNatSubnet') or \
+ self.new_object.get('vpn_nat_subnet')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
- if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None is not None or self.new_object.get('id') is not None:
+ if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None:
new_object_params['vlanId'] = self.new_object.get('vlanId') or \
- self.new_object.get('vlan_id') or self.new_object.get('id')
+ self.new_object.get('vlan_id')
return new_object_params
def get_object_by_name(self, name):
@@ -298,29 +297,29 @@ class NetworksApplianceVlans(object):
requested_obj = self.new_object
obj_params = [
- ("id", "id"),
- ("name", "name"),
- ("subnet", "subnet"),
("applianceIp", "applianceIp"),
- ("groupPolicyId", "groupPolicyId"),
- ("templateVlanType", "templateVlanType"),
("cidr", "cidr"),
- ("mask", "mask"),
+ ("groupPolicyId", "groupPolicyId"),
+ ("id", "id"),
("ipv6", "ipv6"),
("mandatoryDhcp", "mandatoryDhcp"),
+ ("mask", "mask"),
+ ("name", "name"),
+ ("subnet", "subnet"),
+ ("templateVlanType", "templateVlanType"),
("networkId", "networkId"),
("vlanId", "vlanId"),
- ("vpnNatSubnet", "vpnNatSubnet"),
+ ("dhcpBootFilename", "dhcpBootFilename"),
+ ("dhcpBootNextServer", "dhcpBootNextServer"),
+ ("dhcpBootOptionsEnabled", "dhcpBootOptionsEnabled"),
("dhcpHandling", "dhcpHandling"),
- ("dhcpRelayServerIps", "dhcpRelayServerIps"),
("dhcpLeaseTime", "dhcpLeaseTime"),
- ("dhcpBootOptionsEnabled", "dhcpBootOptionsEnabled"),
- ("dhcpBootNextServer", "dhcpBootNextServer"),
- ("dhcpBootFilename", "dhcpBootFilename"),
+ ("dhcpOptions", "dhcpOptions"),
+ ("dhcpRelayServerIps", "dhcpRelayServerIps"),
+ ("dnsNameservers", "dnsNameservers"),
("fixedIpAssignments", "fixedIpAssignments"),
("reservedIpRanges", "reservedIpRanges"),
- ("dnsNameservers", "dnsNameservers"),
- ("dhcpOptions", "dhcpOptions"),
+ ("vpnNatSubnet", "vpnNatSubnet"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (DNAC) params
# If any does not have eq params, it requires update
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_vpn_bgp.py b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_vpn_bgp.py
index e3eba8000..956e2bf59 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_vpn_bgp.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_vpn_bgp.py
@@ -32,8 +32,8 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- enabled=dict(type="bool"),
asNumber=dict(type="int"),
+ enabled=dict(type="bool"),
ibgpHoldTimer=dict(type="int"),
neighbors=dict(type="list"),
networkId=dict(type="str"),
@@ -51,8 +51,8 @@ class NetworksApplianceVpnBgp(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- enabled=params.get("enabled"),
asNumber=params.get("asNumber"),
+ enabled=params.get("enabled"),
ibgpHoldTimer=params.get("ibgpHoldTimer"),
neighbors=params.get("neighbors"),
network_id=params.get("networkId"),
@@ -67,11 +67,11 @@ class NetworksApplianceVpnBgp(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
- new_object_params['enabled'] = self.new_object.get('enabled')
if self.new_object.get('asNumber') is not None or self.new_object.get('as_number') is not None:
new_object_params['asNumber'] = self.new_object.get('asNumber') or \
self.new_object.get('as_number')
+ if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
+ new_object_params['enabled'] = self.new_object.get('enabled')
if self.new_object.get('ibgpHoldTimer') is not None or self.new_object.get('ibgp_hold_timer') is not None:
new_object_params['ibgpHoldTimer'] = self.new_object.get('ibgpHoldTimer') or \
self.new_object.get('ibgp_hold_timer')
@@ -134,8 +134,8 @@ class NetworksApplianceVpnBgp(object):
requested_obj = self.new_object
obj_params = [
- ("enabled", "enabled"),
("asNumber", "asNumber"),
+ ("enabled", "enabled"),
("ibgpHoldTimer", "ibgpHoldTimer"),
("neighbors", "neighbors"),
("networkId", "networkId"),
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_vpn_site_to_site_vpn.py b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_vpn_site_to_site_vpn.py
index 1a73bb08d..e687d1ed4 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_appliance_vpn_site_to_site_vpn.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_appliance_vpn_site_to_site_vpn.py
@@ -32,8 +32,8 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- mode=dict(type="str"),
hubs=dict(type="list"),
+ mode=dict(type="str"),
subnets=dict(type="list"),
networkId=dict(type="str"),
))
@@ -50,8 +50,8 @@ class NetworksApplianceVpnSiteToSiteVpn(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- mode=params.get("mode"),
hubs=params.get("hubs"),
+ mode=params.get("mode"),
subnets=params.get("subnets"),
network_id=params.get("networkId"),
)
@@ -65,12 +65,12 @@ class NetworksApplianceVpnSiteToSiteVpn(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('mode') is not None or self.new_object.get('mode') is not None:
- new_object_params['mode'] = self.new_object.get('mode') or \
- self.new_object.get('mode')
if self.new_object.get('hubs') is not None or self.new_object.get('hubs') is not None:
new_object_params['hubs'] = self.new_object.get('hubs') or \
self.new_object.get('hubs')
+ if self.new_object.get('mode') is not None or self.new_object.get('mode') is not None:
+ new_object_params['mode'] = self.new_object.get('mode') or \
+ self.new_object.get('mode')
if self.new_object.get('subnets') is not None or self.new_object.get('subnets') is not None:
new_object_params['subnets'] = self.new_object.get('subnets') or \
self.new_object.get('subnets')
@@ -130,8 +130,8 @@ class NetworksApplianceVpnSiteToSiteVpn(object):
requested_obj = self.new_object
obj_params = [
- ("mode", "mode"),
("hubs", "hubs"),
+ ("mode", "mode"),
("subnets", "subnets"),
("networkId", "networkId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_bind.py b/ansible_collections/cisco/meraki/plugins/action/networks_bind.py
index 2e65eefb3..e25f56335 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_bind.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_bind.py
@@ -25,8 +25,8 @@ from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
- configTemplateId=dict(type="str"),
autoBind=dict(type="bool"),
+ configTemplateId=dict(type="str"),
networkId=dict(type="str"),
))
@@ -66,8 +66,8 @@ class ActionModule(ActionBase):
def get_object(self, params):
new_object = dict(
- configTemplateId=params.get("configTemplateId"),
autoBind=params.get("autoBind"),
+ configTemplateId=params.get("configTemplateId"),
networkId=params.get("networkId"),
)
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_camera_quality_retention_profiles.py b/ansible_collections/cisco/meraki/plugins/action/networks_camera_quality_retention_profiles.py
index 29e1aae17..4b33683b8 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_camera_quality_retention_profiles.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_camera_quality_retention_profiles.py
@@ -32,14 +32,14 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- name=dict(type="str"),
- motionBasedRetentionEnabled=dict(type="bool"),
- restrictedBandwidthModeEnabled=dict(type="bool"),
audioRecordingEnabled=dict(type="bool"),
cloudArchiveEnabled=dict(type="bool"),
+ maxRetentionDays=dict(type="int"),
+ motionBasedRetentionEnabled=dict(type="bool"),
motionDetectorVersion=dict(type="int"),
+ name=dict(type="str"),
+ restrictedBandwidthModeEnabled=dict(type="bool"),
scheduleId=dict(type="str"),
- maxRetentionDays=dict(type="int"),
videoSettings=dict(type="dict"),
networkId=dict(type="str"),
qualityRetentionProfileId=dict(type="str"),
@@ -58,14 +58,14 @@ class NetworksCameraQualityRetentionProfiles(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
- motionBasedRetentionEnabled=params.get("motionBasedRetentionEnabled"),
- restrictedBandwidthModeEnabled=params.get("restrictedBandwidthModeEnabled"),
audioRecordingEnabled=params.get("audioRecordingEnabled"),
cloudArchiveEnabled=params.get("cloudArchiveEnabled"),
+ maxRetentionDays=params.get("maxRetentionDays"),
+ motionBasedRetentionEnabled=params.get("motionBasedRetentionEnabled"),
motionDetectorVersion=params.get("motionDetectorVersion"),
+ name=params.get("name"),
+ restrictedBandwidthModeEnabled=params.get("restrictedBandwidthModeEnabled"),
scheduleId=params.get("scheduleId"),
- maxRetentionDays=params.get("maxRetentionDays"),
videoSettings=params.get("videoSettings"),
networkId=params.get("networkId"),
qualityRetentionProfileId=params.get("qualityRetentionProfileId"),
@@ -90,26 +90,26 @@ class NetworksCameraQualityRetentionProfiles(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('motionBasedRetentionEnabled') is not None or self.new_object.get('motion_based_retention_enabled') is not None:
- new_object_params['motionBasedRetentionEnabled'] = self.new_object.get('motionBasedRetentionEnabled')
- if self.new_object.get('restrictedBandwidthModeEnabled') is not None or self.new_object.get('restricted_bandwidth_mode_enabled') is not None:
- new_object_params['restrictedBandwidthModeEnabled'] = self.new_object.get('restrictedBandwidthModeEnabled')
if self.new_object.get('audioRecordingEnabled') is not None or self.new_object.get('audio_recording_enabled') is not None:
new_object_params['audioRecordingEnabled'] = self.new_object.get('audioRecordingEnabled')
if self.new_object.get('cloudArchiveEnabled') is not None or self.new_object.get('cloud_archive_enabled') is not None:
new_object_params['cloudArchiveEnabled'] = self.new_object.get('cloudArchiveEnabled')
+ if self.new_object.get('maxRetentionDays') is not None or self.new_object.get('max_retention_days') is not None:
+ new_object_params['maxRetentionDays'] = self.new_object.get('maxRetentionDays') or \
+ self.new_object.get('max_retention_days')
+ if self.new_object.get('motionBasedRetentionEnabled') is not None or self.new_object.get('motion_based_retention_enabled') is not None:
+ new_object_params['motionBasedRetentionEnabled'] = self.new_object.get('motionBasedRetentionEnabled')
if self.new_object.get('motionDetectorVersion') is not None or self.new_object.get('motion_detector_version') is not None:
new_object_params['motionDetectorVersion'] = self.new_object.get('motionDetectorVersion') or \
self.new_object.get('motion_detector_version')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('restrictedBandwidthModeEnabled') is not None or self.new_object.get('restricted_bandwidth_mode_enabled') is not None:
+ new_object_params['restrictedBandwidthModeEnabled'] = self.new_object.get('restrictedBandwidthModeEnabled')
if self.new_object.get('scheduleId') is not None or self.new_object.get('schedule_id') is not None:
new_object_params['scheduleId'] = self.new_object.get('scheduleId') or \
self.new_object.get('schedule_id')
- if self.new_object.get('maxRetentionDays') is not None or self.new_object.get('max_retention_days') is not None:
- new_object_params['maxRetentionDays'] = self.new_object.get('maxRetentionDays') or \
- self.new_object.get('max_retention_days')
if self.new_object.get('videoSettings') is not None or self.new_object.get('video_settings') is not None:
new_object_params['videoSettings'] = self.new_object.get('videoSettings') or \
self.new_object.get('video_settings')
@@ -130,26 +130,26 @@ class NetworksCameraQualityRetentionProfiles(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('motionBasedRetentionEnabled') is not None or self.new_object.get('motion_based_retention_enabled') is not None:
- new_object_params['motionBasedRetentionEnabled'] = self.new_object.get('motionBasedRetentionEnabled')
- if self.new_object.get('restrictedBandwidthModeEnabled') is not None or self.new_object.get('restricted_bandwidth_mode_enabled') is not None:
- new_object_params['restrictedBandwidthModeEnabled'] = self.new_object.get('restrictedBandwidthModeEnabled')
if self.new_object.get('audioRecordingEnabled') is not None or self.new_object.get('audio_recording_enabled') is not None:
new_object_params['audioRecordingEnabled'] = self.new_object.get('audioRecordingEnabled')
if self.new_object.get('cloudArchiveEnabled') is not None or self.new_object.get('cloud_archive_enabled') is not None:
new_object_params['cloudArchiveEnabled'] = self.new_object.get('cloudArchiveEnabled')
+ if self.new_object.get('maxRetentionDays') is not None or self.new_object.get('max_retention_days') is not None:
+ new_object_params['maxRetentionDays'] = self.new_object.get('maxRetentionDays') or \
+ self.new_object.get('max_retention_days')
+ if self.new_object.get('motionBasedRetentionEnabled') is not None or self.new_object.get('motion_based_retention_enabled') is not None:
+ new_object_params['motionBasedRetentionEnabled'] = self.new_object.get('motionBasedRetentionEnabled')
if self.new_object.get('motionDetectorVersion') is not None or self.new_object.get('motion_detector_version') is not None:
new_object_params['motionDetectorVersion'] = self.new_object.get('motionDetectorVersion') or \
self.new_object.get('motion_detector_version')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('restrictedBandwidthModeEnabled') is not None or self.new_object.get('restricted_bandwidth_mode_enabled') is not None:
+ new_object_params['restrictedBandwidthModeEnabled'] = self.new_object.get('restrictedBandwidthModeEnabled')
if self.new_object.get('scheduleId') is not None or self.new_object.get('schedule_id') is not None:
new_object_params['scheduleId'] = self.new_object.get('scheduleId') or \
self.new_object.get('schedule_id')
- if self.new_object.get('maxRetentionDays') is not None or self.new_object.get('max_retention_days') is not None:
- new_object_params['maxRetentionDays'] = self.new_object.get('maxRetentionDays') or \
- self.new_object.get('max_retention_days')
if self.new_object.get('videoSettings') is not None or self.new_object.get('video_settings') is not None:
new_object_params['videoSettings'] = self.new_object.get('videoSettings') or \
self.new_object.get('video_settings')
@@ -230,14 +230,14 @@ class NetworksCameraQualityRetentionProfiles(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
- ("motionBasedRetentionEnabled", "motionBasedRetentionEnabled"),
- ("restrictedBandwidthModeEnabled", "restrictedBandwidthModeEnabled"),
("audioRecordingEnabled", "audioRecordingEnabled"),
("cloudArchiveEnabled", "cloudArchiveEnabled"),
+ ("maxRetentionDays", "maxRetentionDays"),
+ ("motionBasedRetentionEnabled", "motionBasedRetentionEnabled"),
("motionDetectorVersion", "motionDetectorVersion"),
+ ("name", "name"),
+ ("restrictedBandwidthModeEnabled", "restrictedBandwidthModeEnabled"),
("scheduleId", "scheduleId"),
- ("maxRetentionDays", "maxRetentionDays"),
("videoSettings", "videoSettings"),
("networkId", "networkId"),
("qualityRetentionProfileId", "qualityRetentionProfileId"),
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_camera_wireless_profiles.py b/ansible_collections/cisco/meraki/plugins/action/networks_camera_wireless_profiles.py
index 4aedf37c2..4525ab771 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_camera_wireless_profiles.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_camera_wireless_profiles.py
@@ -32,9 +32,9 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
+ identity=dict(type="dict"),
name=dict(type="str"),
ssid=dict(type="dict"),
- identity=dict(type="dict"),
networkId=dict(type="str"),
wirelessProfileId=dict(type="str"),
))
@@ -52,9 +52,9 @@ class NetworksCameraWirelessProfiles(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ identity=params.get("identity"),
name=params.get("name"),
ssid=params.get("ssid"),
- identity=params.get("identity"),
networkId=params.get("networkId"),
wirelessProfileId=params.get("wirelessProfileId"),
)
@@ -78,15 +78,15 @@ class NetworksCameraWirelessProfiles(object):
def create_params(self):
new_object_params = {}
+ if self.new_object.get('identity') is not None or self.new_object.get('identity') is not None:
+ new_object_params['identity'] = self.new_object.get('identity') or \
+ self.new_object.get('identity')
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
if self.new_object.get('ssid') is not None or self.new_object.get('ssid') is not None:
new_object_params['ssid'] = self.new_object.get('ssid') or \
self.new_object.get('ssid')
- if self.new_object.get('identity') is not None or self.new_object.get('identity') is not None:
- new_object_params['identity'] = self.new_object.get('identity') or \
- self.new_object.get('identity')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -104,15 +104,15 @@ class NetworksCameraWirelessProfiles(object):
def update_by_id_params(self):
new_object_params = {}
+ if self.new_object.get('identity') is not None or self.new_object.get('identity') is not None:
+ new_object_params['identity'] = self.new_object.get('identity') or \
+ self.new_object.get('identity')
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
if self.new_object.get('ssid') is not None or self.new_object.get('ssid') is not None:
new_object_params['ssid'] = self.new_object.get('ssid') or \
self.new_object.get('ssid')
- if self.new_object.get('identity') is not None or self.new_object.get('identity') is not None:
- new_object_params['identity'] = self.new_object.get('identity') or \
- self.new_object.get('identity')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -190,9 +190,9 @@ class NetworksCameraWirelessProfiles(object):
requested_obj = self.new_object
obj_params = [
+ ("identity", "identity"),
("name", "name"),
("ssid", "ssid"),
- ("identity", "identity"),
("networkId", "networkId"),
("wirelessProfileId", "wirelessProfileId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_cellular_gateway_dhcp.py b/ansible_collections/cisco/meraki/plugins/action/networks_cellular_gateway_dhcp.py
index a02d4c4d4..823ff2348 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_cellular_gateway_dhcp.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_cellular_gateway_dhcp.py
@@ -33,8 +33,8 @@ argument_spec = meraki_argument_spec()
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
dhcpLeaseTime=dict(type="str"),
- dnsNameservers=dict(type="str"),
dnsCustomNameservers=dict(type="list"),
+ dnsNameservers=dict(type="str"),
networkId=dict(type="str"),
))
@@ -51,8 +51,8 @@ class NetworksCellularGatewayDhcp(object):
self.meraki = meraki
self.new_object = dict(
dhcpLeaseTime=params.get("dhcpLeaseTime"),
- dnsNameservers=params.get("dnsNameservers"),
dnsCustomNameservers=params.get("dnsCustomNameservers"),
+ dnsNameservers=params.get("dnsNameservers"),
network_id=params.get("networkId"),
)
@@ -68,12 +68,12 @@ class NetworksCellularGatewayDhcp(object):
if self.new_object.get('dhcpLeaseTime') is not None or self.new_object.get('dhcp_lease_time') is not None:
new_object_params['dhcpLeaseTime'] = self.new_object.get('dhcpLeaseTime') or \
self.new_object.get('dhcp_lease_time')
- if self.new_object.get('dnsNameservers') is not None or self.new_object.get('dns_nameservers') is not None:
- new_object_params['dnsNameservers'] = self.new_object.get('dnsNameservers') or \
- self.new_object.get('dns_nameservers')
if self.new_object.get('dnsCustomNameservers') is not None or self.new_object.get('dns_custom_nameservers') is not None:
new_object_params['dnsCustomNameservers'] = self.new_object.get('dnsCustomNameservers') or \
self.new_object.get('dns_custom_nameservers')
+ if self.new_object.get('dnsNameservers') is not None or self.new_object.get('dns_nameservers') is not None:
+ new_object_params['dnsNameservers'] = self.new_object.get('dnsNameservers') or \
+ self.new_object.get('dns_nameservers')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -131,8 +131,8 @@ class NetworksCellularGatewayDhcp(object):
obj_params = [
("dhcpLeaseTime", "dhcpLeaseTime"),
- ("dnsNameservers", "dnsNameservers"),
("dnsCustomNameservers", "dnsCustomNameservers"),
+ ("dnsNameservers", "dnsNameservers"),
("networkId", "networkId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_cellular_gateway_subnet_pool.py b/ansible_collections/cisco/meraki/plugins/action/networks_cellular_gateway_subnet_pool.py
index 4af5e75ad..328e935ae 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_cellular_gateway_subnet_pool.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_cellular_gateway_subnet_pool.py
@@ -32,8 +32,8 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- mask=dict(type="int"),
cidr=dict(type="str"),
+ mask=dict(type="int"),
networkId=dict(type="str"),
))
@@ -49,8 +49,8 @@ class NetworksCellularGatewaySubnetPool(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- mask=params.get("mask"),
cidr=params.get("cidr"),
+ mask=params.get("mask"),
network_id=params.get("networkId"),
)
@@ -63,12 +63,12 @@ class NetworksCellularGatewaySubnetPool(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('mask') is not None or self.new_object.get('mask') is not None:
- new_object_params['mask'] = self.new_object.get('mask') or \
- self.new_object.get('mask')
if self.new_object.get('cidr') is not None or self.new_object.get('cidr') is not None:
new_object_params['cidr'] = self.new_object.get('cidr') or \
self.new_object.get('cidr')
+ if self.new_object.get('mask') is not None or self.new_object.get('mask') is not None:
+ new_object_params['mask'] = self.new_object.get('mask') or \
+ self.new_object.get('mask')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -125,8 +125,8 @@ class NetworksCellularGatewaySubnetPool(object):
requested_obj = self.new_object
obj_params = [
- ("mask", "mask"),
("cidr", "cidr"),
+ ("mask", "mask"),
("networkId", "networkId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_clients_info.py b/ansible_collections/cisco/meraki/plugins/action/networks_clients_info.py
index 7f6eae8dc..cb865220d 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_clients_info.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_clients_info.py
@@ -26,23 +26,7 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
networkId=dict(type="str"),
- t0=dict(type="str"),
- timespan=dict(type="float"),
- perPage=dict(type="int"),
- total_pages=dict(type="int"),
- direction=dict(type="str"),
- startingAfter=dict(type="str"),
- endingBefore=dict(type="str"),
- statuses=dict(type="list"),
- ip=dict(type="str"),
- ip6=dict(type="str"),
- ip6Local=dict(type="str"),
- mac=dict(type="str"),
- os=dict(type="str"),
- pskGroup=dict(type="str"),
- description=dict(type="str"),
- vlan=dict(type="str"),
- recentDeviceConnections=dict(type="list"),
+ clientId=dict(type="str"),
))
required_if = []
@@ -79,61 +63,14 @@ class ActionModule(ActionBase):
if not valid:
raise AnsibleActionFail(errors)
- def get_all(self, params):
+ def get_object(self, params):
new_object = {}
if params.get("networkId") is not None:
new_object["networkId"] = params.get(
"networkId")
- if params.get("t0") is not None:
- new_object["t0"] = params.get(
- "t0")
- if params.get("timespan") is not None:
- new_object["timespan"] = params.get(
- "timespan")
- if params.get("perPage") is not None:
- new_object["perPage"] = params.get(
- "perPage")
- new_object['total_pages'] = params.get(
- "total_pages") or 1
- new_object['direction'] = params.get(
- "direction") or "next"
- if params.get("startingAfter") is not None:
- new_object["startingAfter"] = params.get(
- "startingAfter")
- if params.get("endingBefore") is not None:
- new_object["endingBefore"] = params.get(
- "endingBefore")
- if params.get("statuses") is not None:
- new_object["statuses"] = params.get(
- "statuses")
- if params.get("ip") is not None:
- new_object["ip"] = params.get(
- "ip")
- if params.get("ip6") is not None:
- new_object["ip6"] = params.get(
- "ip6")
- if params.get("ip6Local") is not None:
- new_object["ip6Local"] = params.get(
- "ip6Local")
- if params.get("mac") is not None:
- new_object["mac"] = params.get(
- "mac")
- if params.get("os") is not None:
- new_object["os"] = params.get(
- "os")
- if params.get("pskGroup") is not None:
- new_object["pskGroup"] = params.get(
- "pskGroup")
- if params.get("description") is not None:
- new_object["description"] = params.get(
- "description")
- if params.get("vlan") is not None:
- new_object["vlan"] = params.get(
- "vlan")
- if params.get("recentDeviceConnections") is not None:
- new_object["recentDeviceConnections"] = params.get(
- "recentDeviceConnections")
-
+ if params.get("clientId") is not None:
+ new_object["clientId"] = params.get(
+ "clientId")
return new_object
def run(self, tmp=None, task_vars=None):
@@ -146,11 +83,20 @@ class ActionModule(ActionBase):
meraki = MERAKI(params=self._task.args)
- response = meraki.exec_meraki(
- family="networks",
- function='getNetworkClients',
- params=self.get_all(self._task.args),
- )
- self._result.update(dict(meraki_response=response))
- self._result.update(meraki.exit_json())
- return self._result
+ id = self._task.args.get("clientId")
+ if id:
+ response = meraki.exec_meraki(
+ family="networks",
+ function='getNetworkClient',
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
+ if not id:
+ # NOTE: Does not have a get all method or it is in another action
+ response = None
+ meraki.object_modify_result(changed=False, result="Module does not have get all, check arguments of module")
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades.py b/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades.py
index d60217404..f3cc453f0 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades.py
@@ -32,9 +32,9 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- upgradeWindow=dict(type="dict"),
- timezone=dict(type="str"),
products=dict(type="dict"),
+ timezone=dict(type="str"),
+ upgradeWindow=dict(type="dict"),
networkId=dict(type="str"),
))
@@ -50,9 +50,9 @@ class NetworksFirmwareUpgrades(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- upgradeWindow=params.get("upgradeWindow"),
- timezone=params.get("timezone"),
products=params.get("products"),
+ timezone=params.get("timezone"),
+ upgradeWindow=params.get("upgradeWindow"),
network_id=params.get("networkId"),
)
@@ -65,15 +65,15 @@ class NetworksFirmwareUpgrades(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('upgradeWindow') is not None or self.new_object.get('upgrade_window') is not None:
- new_object_params['upgradeWindow'] = self.new_object.get('upgradeWindow') or \
- self.new_object.get('upgrade_window')
- if self.new_object.get('timezone') is not None or self.new_object.get('timezone') is not None:
- new_object_params['timezone'] = self.new_object.get('timezone') or \
- self.new_object.get('timezone')
if self.new_object.get('products') is not None or self.new_object.get('products') is not None:
new_object_params['products'] = self.new_object.get('products') or \
self.new_object.get('products')
+ if self.new_object.get('timezone') is not None or self.new_object.get('timezone') is not None:
+ new_object_params['timezone'] = self.new_object.get('timezone') or \
+ self.new_object.get('timezone')
+ if self.new_object.get('upgradeWindow') is not None or self.new_object.get('upgrade_window') is not None:
+ new_object_params['upgradeWindow'] = self.new_object.get('upgradeWindow') or \
+ self.new_object.get('upgrade_window')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -130,9 +130,9 @@ class NetworksFirmwareUpgrades(object):
requested_obj = self.new_object
obj_params = [
- ("upgradeWindow", "upgradeWindow"),
- ("timezone", "timezone"),
("products", "products"),
+ ("timezone", "timezone"),
+ ("upgradeWindow", "upgradeWindow"),
("networkId", "networkId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_rollbacks.py b/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_rollbacks.py
index 02dd7a060..ac1f8efea 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_rollbacks.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_rollbacks.py
@@ -26,8 +26,8 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
product=dict(type="str"),
- time=dict(type="str"),
reasons=dict(type="list"),
+ time=dict(type="str"),
toVersion=dict(type="dict"),
networkId=dict(type="str"),
))
@@ -69,8 +69,8 @@ class ActionModule(ActionBase):
def get_object(self, params):
new_object = dict(
product=params.get("product"),
- time=params.get("time"),
reasons=params.get("reasons"),
+ time=params.get("time"),
toVersion=params.get("toVersion"),
networkId=params.get("networkId"),
)
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_staged_events_defer.py b/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_staged_events_defer.py
index db07326b4..f4676d6e5 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_staged_events_defer.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_staged_events_defer.py
@@ -64,7 +64,7 @@ class ActionModule(ActionBase):
def get_object(self, params):
new_object = dict(
- network_id=params.get("networkId"),
+ networkId=params.get("networkId"),
)
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_staged_events_rollbacks.py b/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_staged_events_rollbacks.py
index 72ab2abcc..4a7b0d8aa 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_staged_events_rollbacks.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_staged_events_rollbacks.py
@@ -25,8 +25,8 @@ from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
- stages=dict(type="list"),
reasons=dict(type="list"),
+ stages=dict(type="list"),
networkId=dict(type="str"),
))
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_staged_groups.py b/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_staged_groups.py
index ea0902e37..61f7f1b4b 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_staged_groups.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_firmware_upgrades_staged_groups.py
@@ -32,10 +32,10 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- name=dict(type="str"),
+ assignedDevices=dict(type="dict"),
description=dict(type="str"),
isDefault=dict(type="bool"),
- assignedDevices=dict(type="dict"),
+ name=dict(type="str"),
networkId=dict(type="str"),
groupId=dict(type="str"),
))
@@ -53,10 +53,10 @@ class NetworksFirmwareUpgradesStagedGroups(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
+ assignedDevices=params.get("assignedDevices"),
description=params.get("description"),
isDefault=params.get("isDefault"),
- assignedDevices=params.get("assignedDevices"),
+ name=params.get("name"),
networkId=params.get("networkId"),
groupId=params.get("groupId"),
)
@@ -80,17 +80,17 @@ class NetworksFirmwareUpgradesStagedGroups(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
+ if self.new_object.get('assignedDevices') is not None or self.new_object.get('assigned_devices') is not None:
+ new_object_params['assignedDevices'] = self.new_object.get('assignedDevices') or \
+ self.new_object.get('assigned_devices')
if self.new_object.get('description') is not None or self.new_object.get('description') is not None:
new_object_params['description'] = self.new_object.get('description') or \
self.new_object.get('description')
if self.new_object.get('isDefault') is not None or self.new_object.get('is_default') is not None:
new_object_params['isDefault'] = self.new_object.get('isDefault')
- if self.new_object.get('assignedDevices') is not None or self.new_object.get('assigned_devices') is not None:
- new_object_params['assignedDevices'] = self.new_object.get('assignedDevices') or \
- self.new_object.get('assigned_devices')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -108,17 +108,17 @@ class NetworksFirmwareUpgradesStagedGroups(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
+ if self.new_object.get('assignedDevices') is not None or self.new_object.get('assigned_devices') is not None:
+ new_object_params['assignedDevices'] = self.new_object.get('assignedDevices') or \
+ self.new_object.get('assigned_devices')
if self.new_object.get('description') is not None or self.new_object.get('description') is not None:
new_object_params['description'] = self.new_object.get('description') or \
self.new_object.get('description')
if self.new_object.get('isDefault') is not None or self.new_object.get('is_default') is not None:
new_object_params['isDefault'] = self.new_object.get('isDefault')
- if self.new_object.get('assignedDevices') is not None or self.new_object.get('assigned_devices') is not None:
- new_object_params['assignedDevices'] = self.new_object.get('assignedDevices') or \
- self.new_object.get('assigned_devices')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -196,10 +196,10 @@ class NetworksFirmwareUpgradesStagedGroups(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
+ ("assignedDevices", "assignedDevices"),
("description", "description"),
("isDefault", "isDefault"),
- ("assignedDevices", "assignedDevices"),
+ ("name", "name"),
("networkId", "networkId"),
("groupId", "groupId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_floor_plans.py b/ansible_collections/cisco/meraki/plugins/action/networks_floor_plans.py
index 0e1a40eec..561919d38 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_floor_plans.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_floor_plans.py
@@ -32,13 +32,13 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- name=dict(type="str"),
- center=dict(type="dict"),
bottomLeftCorner=dict(type="dict"),
bottomRightCorner=dict(type="dict"),
+ center=dict(type="dict"),
+ imageContents=dict(type="str"),
+ name=dict(type="str"),
topLeftCorner=dict(type="dict"),
topRightCorner=dict(type="dict"),
- imageContents=dict(type="str"),
networkId=dict(type="str"),
floorPlanId=dict(type="str"),
))
@@ -56,13 +56,13 @@ class NetworksFloorPlans(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
- center=params.get("center"),
bottomLeftCorner=params.get("bottomLeftCorner"),
bottomRightCorner=params.get("bottomRightCorner"),
+ center=params.get("center"),
+ imageContents=params.get("imageContents"),
+ name=params.get("name"),
topLeftCorner=params.get("topLeftCorner"),
topRightCorner=params.get("topRightCorner"),
- imageContents=params.get("imageContents"),
networkId=params.get("networkId"),
floorPlanId=params.get("floorPlanId"),
)
@@ -86,27 +86,27 @@ class NetworksFloorPlans(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('center') is not None or self.new_object.get('center') is not None:
- new_object_params['center'] = self.new_object.get('center') or \
- self.new_object.get('center')
if self.new_object.get('bottomLeftCorner') is not None or self.new_object.get('bottom_left_corner') is not None:
new_object_params['bottomLeftCorner'] = self.new_object.get('bottomLeftCorner') or \
self.new_object.get('bottom_left_corner')
if self.new_object.get('bottomRightCorner') is not None or self.new_object.get('bottom_right_corner') is not None:
new_object_params['bottomRightCorner'] = self.new_object.get('bottomRightCorner') or \
self.new_object.get('bottom_right_corner')
+ if self.new_object.get('center') is not None or self.new_object.get('center') is not None:
+ new_object_params['center'] = self.new_object.get('center') or \
+ self.new_object.get('center')
+ if self.new_object.get('imageContents') is not None or self.new_object.get('image_contents') is not None:
+ new_object_params['imageContents'] = self.new_object.get('imageContents') or \
+ self.new_object.get('image_contents')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('topLeftCorner') is not None or self.new_object.get('top_left_corner') is not None:
new_object_params['topLeftCorner'] = self.new_object.get('topLeftCorner') or \
self.new_object.get('top_left_corner')
if self.new_object.get('topRightCorner') is not None or self.new_object.get('top_right_corner') is not None:
new_object_params['topRightCorner'] = self.new_object.get('topRightCorner') or \
self.new_object.get('top_right_corner')
- if self.new_object.get('imageContents') is not None or self.new_object.get('image_contents') is not None:
- new_object_params['imageContents'] = self.new_object.get('imageContents') or \
- self.new_object.get('image_contents')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -124,27 +124,27 @@ class NetworksFloorPlans(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('center') is not None or self.new_object.get('center') is not None:
- new_object_params['center'] = self.new_object.get('center') or \
- self.new_object.get('center')
if self.new_object.get('bottomLeftCorner') is not None or self.new_object.get('bottom_left_corner') is not None:
new_object_params['bottomLeftCorner'] = self.new_object.get('bottomLeftCorner') or \
self.new_object.get('bottom_left_corner')
if self.new_object.get('bottomRightCorner') is not None or self.new_object.get('bottom_right_corner') is not None:
new_object_params['bottomRightCorner'] = self.new_object.get('bottomRightCorner') or \
self.new_object.get('bottom_right_corner')
+ if self.new_object.get('center') is not None or self.new_object.get('center') is not None:
+ new_object_params['center'] = self.new_object.get('center') or \
+ self.new_object.get('center')
+ if self.new_object.get('imageContents') is not None or self.new_object.get('image_contents') is not None:
+ new_object_params['imageContents'] = self.new_object.get('imageContents') or \
+ self.new_object.get('image_contents')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('topLeftCorner') is not None or self.new_object.get('top_left_corner') is not None:
new_object_params['topLeftCorner'] = self.new_object.get('topLeftCorner') or \
self.new_object.get('top_left_corner')
if self.new_object.get('topRightCorner') is not None or self.new_object.get('top_right_corner') is not None:
new_object_params['topRightCorner'] = self.new_object.get('topRightCorner') or \
self.new_object.get('top_right_corner')
- if self.new_object.get('imageContents') is not None or self.new_object.get('image_contents') is not None:
- new_object_params['imageContents'] = self.new_object.get('imageContents') or \
- self.new_object.get('image_contents')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -222,13 +222,13 @@ class NetworksFloorPlans(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
- ("center", "center"),
("bottomLeftCorner", "bottomLeftCorner"),
("bottomRightCorner", "bottomRightCorner"),
+ ("center", "center"),
+ ("imageContents", "imageContents"),
+ ("name", "name"),
("topLeftCorner", "topLeftCorner"),
("topRightCorner", "topRightCorner"),
- ("imageContents", "imageContents"),
("networkId", "networkId"),
("floorPlanId", "floorPlanId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_group_policies.py b/ansible_collections/cisco/meraki/plugins/action/networks_group_policies.py
index c8f41fc81..749350851 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_group_policies.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_group_policies.py
@@ -32,14 +32,14 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- name=dict(type="str"),
- scheduling=dict(type="dict"),
bandwidth=dict(type="dict"),
- firewallAndTrafficShaping=dict(type="dict"),
+ bonjourForwarding=dict(type="dict"),
contentFiltering=dict(type="dict"),
+ firewallAndTrafficShaping=dict(type="dict"),
+ name=dict(type="str"),
+ scheduling=dict(type="dict"),
splashAuthSettings=dict(type="str"),
vlanTagging=dict(type="dict"),
- bonjourForwarding=dict(type="dict"),
networkId=dict(type="str"),
groupPolicyId=dict(type="str"),
))
@@ -57,14 +57,14 @@ class NetworksGroupPolicies(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
- scheduling=params.get("scheduling"),
bandwidth=params.get("bandwidth"),
- firewallAndTrafficShaping=params.get("firewallAndTrafficShaping"),
+ bonjourForwarding=params.get("bonjourForwarding"),
contentFiltering=params.get("contentFiltering"),
+ firewallAndTrafficShaping=params.get("firewallAndTrafficShaping"),
+ name=params.get("name"),
+ scheduling=params.get("scheduling"),
splashAuthSettings=params.get("splashAuthSettings"),
vlanTagging=params.get("vlanTagging"),
- bonjourForwarding=params.get("bonjourForwarding"),
networkId=params.get("networkId"),
groupPolicyId=params.get("groupPolicyId"),
)
@@ -88,30 +88,30 @@ class NetworksGroupPolicies(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('scheduling') is not None or self.new_object.get('scheduling') is not None:
- new_object_params['scheduling'] = self.new_object.get('scheduling') or \
- self.new_object.get('scheduling')
if self.new_object.get('bandwidth') is not None or self.new_object.get('bandwidth') is not None:
new_object_params['bandwidth'] = self.new_object.get('bandwidth') or \
self.new_object.get('bandwidth')
- if self.new_object.get('firewallAndTrafficShaping') is not None or self.new_object.get('firewall_and_traffic_shaping') is not None:
- new_object_params['firewallAndTrafficShaping'] = self.new_object.get('firewallAndTrafficShaping') or \
- self.new_object.get('firewall_and_traffic_shaping')
+ if self.new_object.get('bonjourForwarding') is not None or self.new_object.get('bonjour_forwarding') is not None:
+ new_object_params['bonjourForwarding'] = self.new_object.get('bonjourForwarding') or \
+ self.new_object.get('bonjour_forwarding')
if self.new_object.get('contentFiltering') is not None or self.new_object.get('content_filtering') is not None:
new_object_params['contentFiltering'] = self.new_object.get('contentFiltering') or \
self.new_object.get('content_filtering')
+ if self.new_object.get('firewallAndTrafficShaping') is not None or self.new_object.get('firewall_and_traffic_shaping') is not None:
+ new_object_params['firewallAndTrafficShaping'] = self.new_object.get('firewallAndTrafficShaping') or \
+ self.new_object.get('firewall_and_traffic_shaping')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('scheduling') is not None or self.new_object.get('scheduling') is not None:
+ new_object_params['scheduling'] = self.new_object.get('scheduling') or \
+ self.new_object.get('scheduling')
if self.new_object.get('splashAuthSettings') is not None or self.new_object.get('splash_auth_settings') is not None:
new_object_params['splashAuthSettings'] = self.new_object.get('splashAuthSettings') or \
self.new_object.get('splash_auth_settings')
if self.new_object.get('vlanTagging') is not None or self.new_object.get('vlan_tagging') is not None:
new_object_params['vlanTagging'] = self.new_object.get('vlanTagging') or \
self.new_object.get('vlan_tagging')
- if self.new_object.get('bonjourForwarding') is not None or self.new_object.get('bonjour_forwarding') is not None:
- new_object_params['bonjourForwarding'] = self.new_object.get('bonjourForwarding') or \
- self.new_object.get('bonjour_forwarding')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -129,30 +129,30 @@ class NetworksGroupPolicies(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('scheduling') is not None or self.new_object.get('scheduling') is not None:
- new_object_params['scheduling'] = self.new_object.get('scheduling') or \
- self.new_object.get('scheduling')
if self.new_object.get('bandwidth') is not None or self.new_object.get('bandwidth') is not None:
new_object_params['bandwidth'] = self.new_object.get('bandwidth') or \
self.new_object.get('bandwidth')
- if self.new_object.get('firewallAndTrafficShaping') is not None or self.new_object.get('firewall_and_traffic_shaping') is not None:
- new_object_params['firewallAndTrafficShaping'] = self.new_object.get('firewallAndTrafficShaping') or \
- self.new_object.get('firewall_and_traffic_shaping')
+ if self.new_object.get('bonjourForwarding') is not None or self.new_object.get('bonjour_forwarding') is not None:
+ new_object_params['bonjourForwarding'] = self.new_object.get('bonjourForwarding') or \
+ self.new_object.get('bonjour_forwarding')
if self.new_object.get('contentFiltering') is not None or self.new_object.get('content_filtering') is not None:
new_object_params['contentFiltering'] = self.new_object.get('contentFiltering') or \
self.new_object.get('content_filtering')
+ if self.new_object.get('firewallAndTrafficShaping') is not None or self.new_object.get('firewall_and_traffic_shaping') is not None:
+ new_object_params['firewallAndTrafficShaping'] = self.new_object.get('firewallAndTrafficShaping') or \
+ self.new_object.get('firewall_and_traffic_shaping')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('scheduling') is not None or self.new_object.get('scheduling') is not None:
+ new_object_params['scheduling'] = self.new_object.get('scheduling') or \
+ self.new_object.get('scheduling')
if self.new_object.get('splashAuthSettings') is not None or self.new_object.get('splash_auth_settings') is not None:
new_object_params['splashAuthSettings'] = self.new_object.get('splashAuthSettings') or \
self.new_object.get('splash_auth_settings')
if self.new_object.get('vlanTagging') is not None or self.new_object.get('vlan_tagging') is not None:
new_object_params['vlanTagging'] = self.new_object.get('vlanTagging') or \
self.new_object.get('vlan_tagging')
- if self.new_object.get('bonjourForwarding') is not None or self.new_object.get('bonjour_forwarding') is not None:
- new_object_params['bonjourForwarding'] = self.new_object.get('bonjourForwarding') or \
- self.new_object.get('bonjour_forwarding')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -230,14 +230,14 @@ class NetworksGroupPolicies(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
- ("scheduling", "scheduling"),
("bandwidth", "bandwidth"),
- ("firewallAndTrafficShaping", "firewallAndTrafficShaping"),
+ ("bonjourForwarding", "bonjourForwarding"),
("contentFiltering", "contentFiltering"),
+ ("firewallAndTrafficShaping", "firewallAndTrafficShaping"),
+ ("name", "name"),
+ ("scheduling", "scheduling"),
("splashAuthSettings", "splashAuthSettings"),
("vlanTagging", "vlanTagging"),
- ("bonjourForwarding", "bonjourForwarding"),
("networkId", "networkId"),
("groupPolicyId", "groupPolicyId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_meraki_auth_users.py b/ansible_collections/cisco/meraki/plugins/action/networks_meraki_auth_users.py
index 56787c4fd..436947b7c 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_meraki_auth_users.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_meraki_auth_users.py
@@ -32,15 +32,16 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- email=dict(type="str"),
- name=dict(type="str"),
- password=dict(type="str"),
accountType=dict(type="str"),
+ authorizations=dict(type="list"),
+ email=dict(type="str"),
emailPasswordToUser=dict(type="bool"),
isAdmin=dict(type="bool"),
- authorizations=dict(type="list"),
+ name=dict(type="str"),
+ password=dict(type="str"),
networkId=dict(type="str"),
merakiAuthUserId=dict(type="str"),
+ delete=dict(type="bool"),
))
required_if = [
@@ -56,15 +57,16 @@ class NetworksMerakiAuthUsers(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- email=params.get("email"),
- name=params.get("name"),
- password=params.get("password"),
accountType=params.get("accountType"),
+ authorizations=params.get("authorizations"),
+ email=params.get("email"),
emailPasswordToUser=params.get("emailPasswordToUser"),
isAdmin=params.get("isAdmin"),
- authorizations=params.get("authorizations"),
+ name=params.get("name"),
+ password=params.get("password"),
networkId=params.get("networkId"),
merakiAuthUserId=params.get("merakiAuthUserId"),
+ delete=params.get("delete"),
)
def get_all_params(self, name=None, id=None):
@@ -86,25 +88,25 @@ class NetworksMerakiAuthUsers(object):
def create_params(self):
new_object_params = {}
+ if self.new_object.get('accountType') is not None or self.new_object.get('account_type') is not None:
+ new_object_params['accountType'] = self.new_object.get('accountType') or \
+ self.new_object.get('account_type')
+ if self.new_object.get('authorizations') is not None or self.new_object.get('authorizations') is not None:
+ new_object_params['authorizations'] = self.new_object.get('authorizations') or \
+ self.new_object.get('authorizations')
if self.new_object.get('email') is not None or self.new_object.get('email') is not None:
new_object_params['email'] = self.new_object.get('email') or \
self.new_object.get('email')
+ if self.new_object.get('emailPasswordToUser') is not None or self.new_object.get('email_password_to_user') is not None:
+ new_object_params['emailPasswordToUser'] = self.new_object.get('emailPasswordToUser')
+ if self.new_object.get('isAdmin') is not None or self.new_object.get('is_admin') is not None:
+ new_object_params['isAdmin'] = self.new_object.get('isAdmin')
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
if self.new_object.get('password') is not None or self.new_object.get('password') is not None:
new_object_params['password'] = self.new_object.get('password') or \
self.new_object.get('password')
- if self.new_object.get('accountType') is not None or self.new_object.get('account_type') is not None:
- new_object_params['accountType'] = self.new_object.get('accountType') or \
- self.new_object.get('account_type')
- if self.new_object.get('emailPasswordToUser') is not None or self.new_object.get('email_password_to_user') is not None:
- new_object_params['emailPasswordToUser'] = self.new_object.get('emailPasswordToUser')
- if self.new_object.get('isAdmin') is not None or self.new_object.get('is_admin') is not None:
- new_object_params['isAdmin'] = self.new_object.get('isAdmin')
- if self.new_object.get('authorizations') is not None or self.new_object.get('authorizations') is not None:
- new_object_params['authorizations'] = self.new_object.get('authorizations') or \
- self.new_object.get('authorizations')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -112,6 +114,8 @@ class NetworksMerakiAuthUsers(object):
def delete_by_id_params(self):
new_object_params = {}
+ if self.new_object.get('delete') is not None or self.new_object.get('delete') is not None:
+ new_object_params['delete'] = self.new_object.get('delete')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -122,17 +126,17 @@ class NetworksMerakiAuthUsers(object):
def update_by_id_params(self):
new_object_params = {}
+ if self.new_object.get('authorizations') is not None or self.new_object.get('authorizations') is not None:
+ new_object_params['authorizations'] = self.new_object.get('authorizations') or \
+ self.new_object.get('authorizations')
+ if self.new_object.get('emailPasswordToUser') is not None or self.new_object.get('email_password_to_user') is not None:
+ new_object_params['emailPasswordToUser'] = self.new_object.get('emailPasswordToUser')
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
if self.new_object.get('password') is not None or self.new_object.get('password') is not None:
new_object_params['password'] = self.new_object.get('password') or \
self.new_object.get('password')
- if self.new_object.get('emailPasswordToUser') is not None or self.new_object.get('email_password_to_user') is not None:
- new_object_params['emailPasswordToUser'] = self.new_object.get('emailPasswordToUser')
- if self.new_object.get('authorizations') is not None or self.new_object.get('authorizations') is not None:
- new_object_params['authorizations'] = self.new_object.get('authorizations') or \
- self.new_object.get('authorizations')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -210,14 +214,15 @@ class NetworksMerakiAuthUsers(object):
requested_obj = self.new_object
obj_params = [
- ("email", "email"),
- ("name", "name"),
("accountType", "accountType"),
+ ("authorizations", "authorizations"),
+ ("email", "email"),
("emailPasswordToUser", "emailPasswordToUser"),
("isAdmin", "isAdmin"),
- ("authorizations", "authorizations"),
+ ("name", "name"),
("networkId", "networkId"),
("merakiAuthUserId", "merakiAuthUserId"),
+ ("delete", "delete"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (DNAC) params
# If any does not have eq params, it requires update
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_mqtt_brokers.py b/ansible_collections/cisco/meraki/plugins/action/networks_mqtt_brokers.py
index 4313ec519..89e45246e 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_mqtt_brokers.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_mqtt_brokers.py
@@ -25,11 +25,11 @@ from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
- name=dict(type="str"),
+ authentication=dict(type="dict"),
host=dict(type="str"),
+ name=dict(type="str"),
port=dict(type="int"),
security=dict(type="dict"),
- authentication=dict(type="dict"),
networkId=dict(type="str"),
))
@@ -69,11 +69,11 @@ class ActionModule(ActionBase):
def get_object(self, params):
new_object = dict(
- name=params.get("name"),
+ authentication=params.get("authentication"),
host=params.get("host"),
+ name=params.get("name"),
port=params.get("port"),
security=params.get("security"),
- authentication=params.get("authentication"),
networkId=params.get("networkId"),
)
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_netflow.py b/ansible_collections/cisco/meraki/plugins/action/networks_netflow.py
index 0360b2792..730f5518b 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_netflow.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_netflow.py
@@ -32,11 +32,11 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- reportingEnabled=dict(type="bool"),
collectorIp=dict(type="str"),
collectorPort=dict(type="int"),
- etaEnabled=dict(type="bool"),
etaDstPort=dict(type="int"),
+ etaEnabled=dict(type="bool"),
+ reportingEnabled=dict(type="bool"),
networkId=dict(type="str"),
))
@@ -52,11 +52,11 @@ class NetworksNetflow(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- reportingEnabled=params.get("reportingEnabled"),
collectorIp=params.get("collectorIp"),
collectorPort=params.get("collectorPort"),
- etaEnabled=params.get("etaEnabled"),
etaDstPort=params.get("etaDstPort"),
+ etaEnabled=params.get("etaEnabled"),
+ reportingEnabled=params.get("reportingEnabled"),
network_id=params.get("networkId"),
)
@@ -69,19 +69,19 @@ class NetworksNetflow(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('reportingEnabled') is not None or self.new_object.get('reporting_enabled') is not None:
- new_object_params['reportingEnabled'] = self.new_object.get('reportingEnabled')
if self.new_object.get('collectorIp') is not None or self.new_object.get('collector_ip') is not None:
new_object_params['collectorIp'] = self.new_object.get('collectorIp') or \
self.new_object.get('collector_ip')
if self.new_object.get('collectorPort') is not None or self.new_object.get('collector_port') is not None:
new_object_params['collectorPort'] = self.new_object.get('collectorPort') or \
self.new_object.get('collector_port')
- if self.new_object.get('etaEnabled') is not None or self.new_object.get('eta_enabled') is not None:
- new_object_params['etaEnabled'] = self.new_object.get('etaEnabled')
if self.new_object.get('etaDstPort') is not None or self.new_object.get('eta_dst_port') is not None:
new_object_params['etaDstPort'] = self.new_object.get('etaDstPort') or \
self.new_object.get('eta_dst_port')
+ if self.new_object.get('etaEnabled') is not None or self.new_object.get('eta_enabled') is not None:
+ new_object_params['etaEnabled'] = self.new_object.get('etaEnabled')
+ if self.new_object.get('reportingEnabled') is not None or self.new_object.get('reporting_enabled') is not None:
+ new_object_params['reportingEnabled'] = self.new_object.get('reportingEnabled')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -138,11 +138,11 @@ class NetworksNetflow(object):
requested_obj = self.new_object
obj_params = [
- ("reportingEnabled", "reportingEnabled"),
("collectorIp", "collectorIp"),
("collectorPort", "collectorPort"),
- ("etaEnabled", "etaEnabled"),
("etaDstPort", "etaDstPort"),
+ ("etaEnabled", "etaEnabled"),
+ ("reportingEnabled", "reportingEnabled"),
("networkId", "networkId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_sensor_alerts_profiles.py b/ansible_collections/cisco/meraki/plugins/action/networks_sensor_alerts_profiles.py
index 13be65175..bb150c8fd 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_sensor_alerts_profiles.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_sensor_alerts_profiles.py
@@ -32,10 +32,10 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- name=dict(type="str"),
- schedule=dict(type="dict"),
conditions=dict(type="list"),
+ name=dict(type="str"),
recipients=dict(type="dict"),
+ schedule=dict(type="dict"),
serials=dict(type="list"),
networkId=dict(type="str"),
id=dict(type="str"),
@@ -54,10 +54,10 @@ class NetworksSensorAlertsProfiles(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
- schedule=params.get("schedule"),
conditions=params.get("conditions"),
+ name=params.get("name"),
recipients=params.get("recipients"),
+ schedule=params.get("schedule"),
serials=params.get("serials"),
networkId=params.get("networkId"),
id=params.get("id"),
@@ -81,18 +81,18 @@ class NetworksSensorAlertsProfiles(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('schedule') is not None or self.new_object.get('schedule') is not None:
- new_object_params['schedule'] = self.new_object.get('schedule') or \
- self.new_object.get('schedule')
if self.new_object.get('conditions') is not None or self.new_object.get('conditions') is not None:
new_object_params['conditions'] = self.new_object.get('conditions') or \
self.new_object.get('conditions')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('recipients') is not None or self.new_object.get('recipients') is not None:
new_object_params['recipients'] = self.new_object.get('recipients') or \
self.new_object.get('recipients')
+ if self.new_object.get('schedule') is not None or self.new_object.get('schedule') is not None:
+ new_object_params['schedule'] = self.new_object.get('schedule') or \
+ self.new_object.get('schedule')
if self.new_object.get('serials') is not None or self.new_object.get('serials') is not None:
new_object_params['serials'] = self.new_object.get('serials') or \
self.new_object.get('serials')
@@ -113,18 +113,18 @@ class NetworksSensorAlertsProfiles(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('schedule') is not None or self.new_object.get('schedule') is not None:
- new_object_params['schedule'] = self.new_object.get('schedule') or \
- self.new_object.get('schedule')
if self.new_object.get('conditions') is not None or self.new_object.get('conditions') is not None:
new_object_params['conditions'] = self.new_object.get('conditions') or \
self.new_object.get('conditions')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('recipients') is not None or self.new_object.get('recipients') is not None:
new_object_params['recipients'] = self.new_object.get('recipients') or \
self.new_object.get('recipients')
+ if self.new_object.get('schedule') is not None or self.new_object.get('schedule') is not None:
+ new_object_params['schedule'] = self.new_object.get('schedule') or \
+ self.new_object.get('schedule')
if self.new_object.get('serials') is not None or self.new_object.get('serials') is not None:
new_object_params['serials'] = self.new_object.get('serials') or \
self.new_object.get('serials')
@@ -201,10 +201,10 @@ class NetworksSensorAlertsProfiles(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
- ("schedule", "schedule"),
("conditions", "conditions"),
+ ("name", "name"),
("recipients", "recipients"),
+ ("schedule", "schedule"),
("serials", "serials"),
("networkId", "networkId"),
("id", "id"),
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_settings.py b/ansible_collections/cisco/meraki/plugins/action/networks_settings.py
index 3827be9c0..26277be99 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_settings.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_settings.py
@@ -32,9 +32,10 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
+ localStatusPage=dict(type="dict"),
localStatusPageEnabled=dict(type="bool"),
+ namedVlans=dict(type="dict"),
remoteStatusPageEnabled=dict(type="bool"),
- localStatusPage=dict(type="dict"),
securePort=dict(type="dict"),
networkId=dict(type="str"),
))
@@ -51,9 +52,10 @@ class NetworksSettings(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ localStatusPage=params.get("localStatusPage"),
localStatusPageEnabled=params.get("localStatusPageEnabled"),
+ namedVlans=params.get("namedVlans"),
remoteStatusPageEnabled=params.get("remoteStatusPageEnabled"),
- localStatusPage=params.get("localStatusPage"),
securePort=params.get("securePort"),
network_id=params.get("networkId"),
)
@@ -67,13 +69,16 @@ class NetworksSettings(object):
def update_all_params(self):
new_object_params = {}
+ if self.new_object.get('localStatusPage') is not None or self.new_object.get('local_status_page') is not None:
+ new_object_params['localStatusPage'] = self.new_object.get('localStatusPage') or \
+ self.new_object.get('local_status_page')
if self.new_object.get('localStatusPageEnabled') is not None or self.new_object.get('local_status_page_enabled') is not None:
new_object_params['localStatusPageEnabled'] = self.new_object.get('localStatusPageEnabled')
+ if self.new_object.get('namedVlans') is not None or self.new_object.get('named_vlans') is not None:
+ new_object_params['namedVlans'] = self.new_object.get('namedVlans') or \
+ self.new_object.get('named_vlans')
if self.new_object.get('remoteStatusPageEnabled') is not None or self.new_object.get('remote_status_page_enabled') is not None:
new_object_params['remoteStatusPageEnabled'] = self.new_object.get('remoteStatusPageEnabled')
- if self.new_object.get('localStatusPage') is not None or self.new_object.get('local_status_page') is not None:
- new_object_params['localStatusPage'] = self.new_object.get('localStatusPage') or \
- self.new_object.get('local_status_page')
if self.new_object.get('securePort') is not None or self.new_object.get('secure_port') is not None:
new_object_params['securePort'] = self.new_object.get('securePort') or \
self.new_object.get('secure_port')
@@ -133,9 +138,10 @@ class NetworksSettings(object):
requested_obj = self.new_object
obj_params = [
+ ("localStatusPage", "localStatusPage"),
("localStatusPageEnabled", "localStatusPageEnabled"),
+ ("namedVlans", "namedVlans"),
("remoteStatusPageEnabled", "remoteStatusPageEnabled"),
- ("localStatusPage", "localStatusPage"),
("securePort", "securePort"),
("networkId", "networkId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_checkin.py b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_checkin.py
index 8695838b5..ba46b4121 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_checkin.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_checkin.py
@@ -25,10 +25,10 @@ from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
- wifiMacs=dict(type="list"),
ids=dict(type="list"),
- serials=dict(type="list"),
scope=dict(type="list"),
+ serials=dict(type="list"),
+ wifiMacs=dict(type="list"),
networkId=dict(type="str"),
))
@@ -68,10 +68,10 @@ class ActionModule(ActionBase):
def get_object(self, params):
new_object = dict(
- wifiMacs=params.get("wifiMacs"),
ids=params.get("ids"),
- serials=params.get("serials"),
scope=params.get("scope"),
+ serials=params.get("serials"),
+ wifiMacs=params.get("wifiMacs"),
networkId=params.get("networkId"),
)
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_fields.py b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_fields.py
index 6d9bda4c7..7d7ada596 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_fields.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_fields.py
@@ -25,10 +25,10 @@ from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
- wifiMac=dict(type="str"),
+ deviceFields=dict(type="dict"),
id=dict(type="str"),
serial=dict(type="str"),
- deviceFields=dict(type="dict"),
+ wifiMac=dict(type="str"),
networkId=dict(type="str"),
))
@@ -68,10 +68,10 @@ class ActionModule(ActionBase):
def get_object(self, params):
new_object = dict(
- wifiMac=params.get("wifiMac"),
+ deviceFields=params.get("deviceFields"),
id=params.get("id"),
serial=params.get("serial"),
- deviceFields=params.get("deviceFields"),
+ wifiMac=params.get("wifiMac"),
networkId=params.get("networkId"),
)
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_info.py b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_info.py
index c37f3cc07..e186502cd 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_info.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_info.py
@@ -30,6 +30,8 @@ argument_spec.update(dict(
wifiMacs=dict(type="list"),
serials=dict(type="list"),
ids=dict(type="list"),
+ uuids=dict(type="list"),
+ systemTypes=dict(type="list"),
scope=dict(type="list"),
perPage=dict(type="int"),
total_pages=dict(type="int"),
@@ -89,6 +91,12 @@ class ActionModule(ActionBase):
if params.get("ids") is not None:
new_object["ids"] = params.get(
"ids")
+ if params.get("uuids") is not None:
+ new_object["uuids"] = params.get(
+ "uuids")
+ if params.get("systemTypes") is not None:
+ new_object["systemTypes"] = params.get(
+ "systemTypes")
if params.get("scope") is not None:
new_object["scope"] = params.get(
"scope")
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_install_apps.py b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_install_apps.py
new file mode 100644
index 000000000..5dfbe018f
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_install_apps.py
@@ -0,0 +1,93 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguements specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ appIds=dict(type="list"),
+ force=dict(type="bool"),
+ networkId=dict(type="str"),
+ deviceId=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_object(self, params):
+ new_object = dict(
+ appIds=params.get("appIds"),
+ force=params.get("force"),
+ networkId=params.get("networkId"),
+ deviceId=params.get("deviceId"),
+ )
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="sm",
+ function='installNetworkSmDeviceApps',
+ op_modifies=True,
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_lock.py b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_lock.py
index c846a4dde..8f851fe0a 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_lock.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_lock.py
@@ -25,11 +25,11 @@ from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
- wifiMacs=dict(type="list"),
ids=dict(type="list"),
- serials=dict(type="list"),
- scope=dict(type="list"),
pin=dict(type="int"),
+ scope=dict(type="list"),
+ serials=dict(type="list"),
+ wifiMacs=dict(type="list"),
networkId=dict(type="str"),
))
@@ -69,11 +69,11 @@ class ActionModule(ActionBase):
def get_object(self, params):
new_object = dict(
- wifiMacs=params.get("wifiMacs"),
ids=params.get("ids"),
- serials=params.get("serials"),
- scope=params.get("scope"),
pin=params.get("pin"),
+ scope=params.get("scope"),
+ serials=params.get("serials"),
+ wifiMacs=params.get("wifiMacs"),
networkId=params.get("networkId"),
)
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_modify_tags.py b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_modify_tags.py
index ea771b977..27f47614e 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_modify_tags.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_modify_tags.py
@@ -25,12 +25,12 @@ from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
- wifiMacs=dict(type="list"),
ids=dict(type="list"),
- serials=dict(type="list"),
scope=dict(type="list"),
+ serials=dict(type="list"),
tags=dict(type="list"),
updateAction=dict(type="str"),
+ wifiMacs=dict(type="list"),
networkId=dict(type="str"),
))
@@ -70,12 +70,12 @@ class ActionModule(ActionBase):
def get_object(self, params):
new_object = dict(
- wifiMacs=params.get("wifiMacs"),
ids=params.get("ids"),
- serials=params.get("serials"),
scope=params.get("scope"),
+ serials=params.get("serials"),
tags=params.get("tags"),
updateAction=params.get("updateAction"),
+ wifiMacs=params.get("wifiMacs"),
networkId=params.get("networkId"),
)
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_move.py b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_move.py
index 5ed4b5d65..384f3abf0 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_move.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_move.py
@@ -25,11 +25,11 @@ from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
- wifiMacs=dict(type="list"),
ids=dict(type="list"),
- serials=dict(type="list"),
- scope=dict(type="list"),
newNetwork=dict(type="str"),
+ scope=dict(type="list"),
+ serials=dict(type="list"),
+ wifiMacs=dict(type="list"),
networkId=dict(type="str"),
))
@@ -69,11 +69,11 @@ class ActionModule(ActionBase):
def get_object(self, params):
new_object = dict(
- wifiMacs=params.get("wifiMacs"),
ids=params.get("ids"),
- serials=params.get("serials"),
- scope=params.get("scope"),
newNetwork=params.get("newNetwork"),
+ scope=params.get("scope"),
+ serials=params.get("serials"),
+ wifiMacs=params.get("wifiMacs"),
networkId=params.get("networkId"),
)
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_reboot.py b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_reboot.py
new file mode 100644
index 000000000..16e825308
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_reboot.py
@@ -0,0 +1,103 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguements specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ ids=dict(type="list"),
+ kextPaths=dict(type="list"),
+ notifyUser=dict(type="bool"),
+ rebuildKernelCache=dict(type="bool"),
+ requestRequiresNetworkTether=dict(type="bool"),
+ scope=dict(type="list"),
+ serials=dict(type="list"),
+ wifiMacs=dict(type="list"),
+ networkId=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_object(self, params):
+ new_object = dict(
+ ids=params.get("ids"),
+ kextPaths=params.get("kextPaths"),
+ notifyUser=params.get("notifyUser"),
+ rebuildKernelCache=params.get("rebuildKernelCache"),
+ requestRequiresNetworkTether=params.get("requestRequiresNetworkTether"),
+ scope=params.get("scope"),
+ serials=params.get("serials"),
+ wifiMacs=params.get("wifiMacs"),
+ networkId=params.get("networkId"),
+ )
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="sm",
+ function='rebootNetworkSmDevices',
+ op_modifies=True,
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_shutdown.py b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_shutdown.py
new file mode 100644
index 000000000..fb184208c
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_shutdown.py
@@ -0,0 +1,95 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguements specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ ids=dict(type="list"),
+ scope=dict(type="list"),
+ serials=dict(type="list"),
+ wifiMacs=dict(type="list"),
+ networkId=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_object(self, params):
+ new_object = dict(
+ ids=params.get("ids"),
+ scope=params.get("scope"),
+ serials=params.get("serials"),
+ wifiMacs=params.get("wifiMacs"),
+ networkId=params.get("networkId"),
+ )
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="sm",
+ function='shutdownNetworkSmDevices',
+ op_modifies=True,
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_uninstall_apps.py b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_uninstall_apps.py
new file mode 100644
index 000000000..056734402
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_uninstall_apps.py
@@ -0,0 +1,91 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguements specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ appIds=dict(type="list"),
+ networkId=dict(type="str"),
+ deviceId=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_object(self, params):
+ new_object = dict(
+ appIds=params.get("appIds"),
+ networkId=params.get("networkId"),
+ deviceId=params.get("deviceId"),
+ )
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="sm",
+ function='uninstallNetworkSmDeviceApps',
+ op_modifies=True,
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_wipe.py b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_wipe.py
index 1b20cad81..ca334bd8c 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_wipe.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_sm_devices_wipe.py
@@ -25,10 +25,10 @@ from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
- wifiMac=dict(type="str"),
id=dict(type="str"),
- serial=dict(type="str"),
pin=dict(type="int"),
+ serial=dict(type="str"),
+ wifiMac=dict(type="str"),
networkId=dict(type="str"),
))
@@ -68,10 +68,10 @@ class ActionModule(ActionBase):
def get_object(self, params):
new_object = dict(
- wifiMac=params.get("wifiMac"),
id=params.get("id"),
- serial=params.get("serial"),
pin=params.get("pin"),
+ serial=params.get("serial"),
+ wifiMac=params.get("wifiMac"),
networkId=params.get("networkId"),
)
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_sm_profiles_info.py b/ansible_collections/cisco/meraki/plugins/action/networks_sm_profiles_info.py
index 44ab17a59..d834af8b9 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_sm_profiles_info.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_sm_profiles_info.py
@@ -26,6 +26,7 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
networkId=dict(type="str"),
+ payloadTypes=dict(type="list"),
))
required_if = []
@@ -67,6 +68,9 @@ class ActionModule(ActionBase):
if params.get("networkId") is not None:
new_object["networkId"] = params.get(
"networkId")
+ if params.get("payloadTypes") is not None:
+ new_object["payloadTypes"] = params.get(
+ "payloadTypes")
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_switch_access_policies.py b/ansible_collections/cisco/meraki/plugins/action/networks_switch_access_policies.py
index a56a7f0dd..aef2813a9 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_switch_access_policies.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_switch_access_policies.py
@@ -32,23 +32,23 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
+ accessPolicyType=dict(type="str"),
+ dot1x=dict(type="dict"),
+ guestPortBouncing=dict(type="bool"),
+ guestVlanId=dict(type="int"),
+ hostMode=dict(type="str"),
+ increaseAccessSpeed=dict(type="bool"),
name=dict(type="str"),
- radiusServers=dict(type="list"),
radius=dict(type="dict"),
- guestPortBouncing=dict(type="bool"),
- radiusTestingEnabled=dict(type="bool"),
- radiusCoaSupportEnabled=dict(type="bool"),
radiusAccountingEnabled=dict(type="bool"),
radiusAccountingServers=dict(type="list"),
+ radiusCoaSupportEnabled=dict(type="bool"),
radiusGroupAttribute=dict(type="str"),
- hostMode=dict(type="str"),
- accessPolicyType=dict(type="str"),
- increaseAccessSpeed=dict(type="bool"),
- guestVlanId=dict(type="int"),
- dot1x=dict(type="dict"),
- voiceVlanClients=dict(type="bool"),
+ radiusServers=dict(type="list"),
+ radiusTestingEnabled=dict(type="bool"),
urlRedirectWalledGardenEnabled=dict(type="bool"),
urlRedirectWalledGardenRanges=dict(type="list"),
+ voiceVlanClients=dict(type="bool"),
networkId=dict(type="str"),
accessPolicyNumber=dict(type="str"),
))
@@ -66,25 +66,23 @@ class NetworksSwitchAccessPolicies(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ accessPolicyType=params.get("accessPolicyType"),
+ dot1x=params.get("dot1x"),
+ guestPortBouncing=params.get("guestPortBouncing"),
+ guestVlanId=params.get("guestVlanId"),
+ hostMode=params.get("hostMode"),
+ increaseAccessSpeed=params.get("increaseAccessSpeed"),
name=params.get("name"),
- radiusServers=params.get("radiusServers"),
radius=params.get("radius"),
- guestPortBouncing=params.get("guestPortBouncing"),
- radiusTestingEnabled=params.get("radiusTestingEnabled"),
- radiusCoaSupportEnabled=params.get("radiusCoaSupportEnabled"),
radiusAccountingEnabled=params.get("radiusAccountingEnabled"),
radiusAccountingServers=params.get("radiusAccountingServers"),
+ radiusCoaSupportEnabled=params.get("radiusCoaSupportEnabled"),
radiusGroupAttribute=params.get("radiusGroupAttribute"),
- hostMode=params.get("hostMode"),
- accessPolicyType=params.get("accessPolicyType"),
- increaseAccessSpeed=params.get("increaseAccessSpeed"),
- guestVlanId=params.get("guestVlanId"),
- dot1x=params.get("dot1x"),
+ radiusServers=params.get("radiusServers"),
+ radiusTestingEnabled=params.get("radiusTestingEnabled"),
+ urlRedirectWalledGardenEnabled=params.get("urlRedirectWalledGardenEnabled"),
+ urlRedirectWalledGardenRanges=params.get("urlRedirectWalledGardenRanges"),
voiceVlanClients=params.get("voiceVlanClients"),
- urlRedirectWalledGardenEnabled=params.get(
- "urlRedirectWalledGardenEnabled"),
- urlRedirectWalledGardenRanges=params.get(
- "urlRedirectWalledGardenRanges"),
networkId=params.get("networkId"),
accessPolicyNumber=params.get("accessPolicyNumber"),
)
@@ -108,57 +106,50 @@ class NetworksSwitchAccessPolicies(object):
def create_params(self):
new_object_params = {}
+ if self.new_object.get('accessPolicyType') is not None or self.new_object.get('access_policy_type') is not None:
+ new_object_params['accessPolicyType'] = self.new_object.get('accessPolicyType') or \
+ self.new_object.get('access_policy_type')
+ if self.new_object.get('dot1x') is not None or self.new_object.get('dot1x') is not None:
+ new_object_params['dot1x'] = self.new_object.get('dot1x') or \
+ self.new_object.get('dot1x')
+ if self.new_object.get('guestPortBouncing') is not None or self.new_object.get('guest_port_bouncing') is not None:
+ new_object_params['guestPortBouncing'] = self.new_object.get('guestPortBouncing')
+ if self.new_object.get('guestVlanId') is not None or self.new_object.get('guest_vlan_id') is not None:
+ new_object_params['guestVlanId'] = self.new_object.get('guestVlanId') or \
+ self.new_object.get('guest_vlan_id')
+ if self.new_object.get('hostMode') is not None or self.new_object.get('host_mode') is not None:
+ new_object_params['hostMode'] = self.new_object.get('hostMode') or \
+ self.new_object.get('host_mode')
+ if self.new_object.get('increaseAccessSpeed') is not None or self.new_object.get('increase_access_speed') is not None:
+ new_object_params['increaseAccessSpeed'] = self.new_object.get('increaseAccessSpeed')
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
- if self.new_object.get('radiusServers') is not None or self.new_object.get('radius_servers') is not None:
- new_object_params['radiusServers'] = self.new_object.get('radiusServers') or \
- self.new_object.get('radius_servers')
if self.new_object.get('radius') is not None or self.new_object.get('radius') is not None:
new_object_params['radius'] = self.new_object.get('radius') or \
self.new_object.get('radius')
- if self.new_object.get('guestPortBouncing') is not None or self.new_object.get('guest_port_bouncing') is not None:
- new_object_params['guestPortBouncing'] = self.new_object.get(
- 'guestPortBouncing')
- if self.new_object.get('radiusTestingEnabled') is not None or self.new_object.get('radius_testing_enabled') is not None:
- new_object_params['radiusTestingEnabled'] = self.new_object.get(
- 'radiusTestingEnabled')
- if self.new_object.get('radiusCoaSupportEnabled') is not None or self.new_object.get('radius_coa_support_enabled') is not None:
- new_object_params['radiusCoaSupportEnabled'] = self.new_object.get(
- 'radiusCoaSupportEnabled')
if self.new_object.get('radiusAccountingEnabled') is not None or self.new_object.get('radius_accounting_enabled') is not None:
- new_object_params['radiusAccountingEnabled'] = self.new_object.get(
- 'radiusAccountingEnabled')
+ new_object_params['radiusAccountingEnabled'] = self.new_object.get('radiusAccountingEnabled')
if self.new_object.get('radiusAccountingServers') is not None or self.new_object.get('radius_accounting_servers') is not None:
new_object_params['radiusAccountingServers'] = self.new_object.get('radiusAccountingServers') or \
self.new_object.get('radius_accounting_servers')
+ if self.new_object.get('radiusCoaSupportEnabled') is not None or self.new_object.get('radius_coa_support_enabled') is not None:
+ new_object_params['radiusCoaSupportEnabled'] = self.new_object.get('radiusCoaSupportEnabled')
if self.new_object.get('radiusGroupAttribute') is not None or self.new_object.get('radius_group_attribute') is not None:
new_object_params['radiusGroupAttribute'] = self.new_object.get('radiusGroupAttribute') or \
self.new_object.get('radius_group_attribute')
- if self.new_object.get('hostMode') is not None or self.new_object.get('host_mode') is not None:
- new_object_params['hostMode'] = self.new_object.get('hostMode') or \
- self.new_object.get('host_mode')
- if self.new_object.get('accessPolicyType') is not None or self.new_object.get('access_policy_type') is not None:
- new_object_params['accessPolicyType'] = self.new_object.get('accessPolicyType') or \
- self.new_object.get('access_policy_type')
- if self.new_object.get('increaseAccessSpeed') is not None or self.new_object.get('increase_access_speed') is not None:
- new_object_params['increaseAccessSpeed'] = self.new_object.get(
- 'increaseAccessSpeed')
- if self.new_object.get('guestVlanId') is not None or self.new_object.get('guest_vlan_id') is not None:
- new_object_params['guestVlanId'] = self.new_object.get('guestVlanId') or \
- self.new_object.get('guest_vlan_id')
- if self.new_object.get('dot1x') is not None or self.new_object.get('dot1x') is not None:
- new_object_params['dot1x'] = self.new_object.get('dot1x') or \
- self.new_object.get('dot1x')
- if self.new_object.get('voiceVlanClients') is not None or self.new_object.get('voice_vlan_clients') is not None:
- new_object_params['voiceVlanClients'] = self.new_object.get(
- 'voiceVlanClients')
+ if self.new_object.get('radiusServers') is not None or self.new_object.get('radius_servers') is not None:
+ new_object_params['radiusServers'] = self.new_object.get('radiusServers') or \
+ self.new_object.get('radius_servers')
+ if self.new_object.get('radiusTestingEnabled') is not None or self.new_object.get('radius_testing_enabled') is not None:
+ new_object_params['radiusTestingEnabled'] = self.new_object.get('radiusTestingEnabled')
if self.new_object.get('urlRedirectWalledGardenEnabled') is not None or self.new_object.get('url_redirect_walled_garden_enabled') is not None:
- new_object_params['urlRedirectWalledGardenEnabled'] = self.new_object.get(
- 'urlRedirectWalledGardenEnabled')
+ new_object_params['urlRedirectWalledGardenEnabled'] = self.new_object.get('urlRedirectWalledGardenEnabled')
if self.new_object.get('urlRedirectWalledGardenRanges') is not None or self.new_object.get('url_redirect_walled_garden_ranges') is not None:
new_object_params['urlRedirectWalledGardenRanges'] = self.new_object.get('urlRedirectWalledGardenRanges') or \
self.new_object.get('url_redirect_walled_garden_ranges')
+ if self.new_object.get('voiceVlanClients') is not None or self.new_object.get('voice_vlan_clients') is not None:
+ new_object_params['voiceVlanClients'] = self.new_object.get('voiceVlanClients')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -176,57 +167,50 @@ class NetworksSwitchAccessPolicies(object):
def update_by_id_params(self):
new_object_params = {}
+ if self.new_object.get('accessPolicyType') is not None or self.new_object.get('access_policy_type') is not None:
+ new_object_params['accessPolicyType'] = self.new_object.get('accessPolicyType') or \
+ self.new_object.get('access_policy_type')
+ if self.new_object.get('dot1x') is not None or self.new_object.get('dot1x') is not None:
+ new_object_params['dot1x'] = self.new_object.get('dot1x') or \
+ self.new_object.get('dot1x')
+ if self.new_object.get('guestPortBouncing') is not None or self.new_object.get('guest_port_bouncing') is not None:
+ new_object_params['guestPortBouncing'] = self.new_object.get('guestPortBouncing')
+ if self.new_object.get('guestVlanId') is not None or self.new_object.get('guest_vlan_id') is not None:
+ new_object_params['guestVlanId'] = self.new_object.get('guestVlanId') or \
+ self.new_object.get('guest_vlan_id')
+ if self.new_object.get('hostMode') is not None or self.new_object.get('host_mode') is not None:
+ new_object_params['hostMode'] = self.new_object.get('hostMode') or \
+ self.new_object.get('host_mode')
+ if self.new_object.get('increaseAccessSpeed') is not None or self.new_object.get('increase_access_speed') is not None:
+ new_object_params['increaseAccessSpeed'] = self.new_object.get('increaseAccessSpeed')
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
- if self.new_object.get('radiusServers') is not None or self.new_object.get('radius_servers') is not None:
- new_object_params['radiusServers'] = self.new_object.get('radiusServers') or \
- self.new_object.get('radius_servers')
if self.new_object.get('radius') is not None or self.new_object.get('radius') is not None:
new_object_params['radius'] = self.new_object.get('radius') or \
self.new_object.get('radius')
- if self.new_object.get('guestPortBouncing') is not None or self.new_object.get('guest_port_bouncing') is not None:
- new_object_params['guestPortBouncing'] = self.new_object.get(
- 'guestPortBouncing')
- if self.new_object.get('radiusTestingEnabled') is not None or self.new_object.get('radius_testing_enabled') is not None:
- new_object_params['radiusTestingEnabled'] = self.new_object.get(
- 'radiusTestingEnabled')
- if self.new_object.get('radiusCoaSupportEnabled') is not None or self.new_object.get('radius_coa_support_enabled') is not None:
- new_object_params['radiusCoaSupportEnabled'] = self.new_object.get(
- 'radiusCoaSupportEnabled')
if self.new_object.get('radiusAccountingEnabled') is not None or self.new_object.get('radius_accounting_enabled') is not None:
- new_object_params['radiusAccountingEnabled'] = self.new_object.get(
- 'radiusAccountingEnabled')
+ new_object_params['radiusAccountingEnabled'] = self.new_object.get('radiusAccountingEnabled')
if self.new_object.get('radiusAccountingServers') is not None or self.new_object.get('radius_accounting_servers') is not None:
new_object_params['radiusAccountingServers'] = self.new_object.get('radiusAccountingServers') or \
self.new_object.get('radius_accounting_servers')
+ if self.new_object.get('radiusCoaSupportEnabled') is not None or self.new_object.get('radius_coa_support_enabled') is not None:
+ new_object_params['radiusCoaSupportEnabled'] = self.new_object.get('radiusCoaSupportEnabled')
if self.new_object.get('radiusGroupAttribute') is not None or self.new_object.get('radius_group_attribute') is not None:
new_object_params['radiusGroupAttribute'] = self.new_object.get('radiusGroupAttribute') or \
self.new_object.get('radius_group_attribute')
- if self.new_object.get('hostMode') is not None or self.new_object.get('host_mode') is not None:
- new_object_params['hostMode'] = self.new_object.get('hostMode') or \
- self.new_object.get('host_mode')
- if self.new_object.get('accessPolicyType') is not None or self.new_object.get('access_policy_type') is not None:
- new_object_params['accessPolicyType'] = self.new_object.get('accessPolicyType') or \
- self.new_object.get('access_policy_type')
- if self.new_object.get('increaseAccessSpeed') is not None or self.new_object.get('increase_access_speed') is not None:
- new_object_params['increaseAccessSpeed'] = self.new_object.get(
- 'increaseAccessSpeed')
- if self.new_object.get('guestVlanId') is not None or self.new_object.get('guest_vlan_id') is not None:
- new_object_params['guestVlanId'] = self.new_object.get('guestVlanId') or \
- self.new_object.get('guest_vlan_id')
- if self.new_object.get('dot1x') is not None or self.new_object.get('dot1x') is not None:
- new_object_params['dot1x'] = self.new_object.get('dot1x') or \
- self.new_object.get('dot1x')
- if self.new_object.get('voiceVlanClients') is not None or self.new_object.get('voice_vlan_clients') is not None:
- new_object_params['voiceVlanClients'] = self.new_object.get(
- 'voiceVlanClients')
+ if self.new_object.get('radiusServers') is not None or self.new_object.get('radius_servers') is not None:
+ new_object_params['radiusServers'] = self.new_object.get('radiusServers') or \
+ self.new_object.get('radius_servers')
+ if self.new_object.get('radiusTestingEnabled') is not None or self.new_object.get('radius_testing_enabled') is not None:
+ new_object_params['radiusTestingEnabled'] = self.new_object.get('radiusTestingEnabled')
if self.new_object.get('urlRedirectWalledGardenEnabled') is not None or self.new_object.get('url_redirect_walled_garden_enabled') is not None:
- new_object_params['urlRedirectWalledGardenEnabled'] = self.new_object.get(
- 'urlRedirectWalledGardenEnabled')
+ new_object_params['urlRedirectWalledGardenEnabled'] = self.new_object.get('urlRedirectWalledGardenEnabled')
if self.new_object.get('urlRedirectWalledGardenRanges') is not None or self.new_object.get('url_redirect_walled_garden_ranges') is not None:
new_object_params['urlRedirectWalledGardenRanges'] = self.new_object.get('urlRedirectWalledGardenRanges') or \
self.new_object.get('url_redirect_walled_garden_ranges')
+ if self.new_object.get('voiceVlanClients') is not None or self.new_object.get('voice_vlan_clients') is not None:
+ new_object_params['voiceVlanClients'] = self.new_object.get('voiceVlanClients')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -304,23 +288,23 @@ class NetworksSwitchAccessPolicies(object):
requested_obj = self.new_object
obj_params = [
+ ("accessPolicyType", "accessPolicyType"),
+ ("dot1x", "dot1x"),
+ ("guestPortBouncing", "guestPortBouncing"),
+ ("guestVlanId", "guestVlanId"),
+ ("hostMode", "hostMode"),
+ ("increaseAccessSpeed", "increaseAccessSpeed"),
("name", "name"),
- ("radiusServers", "radiusServers"),
("radius", "radius"),
- ("guestPortBouncing", "guestPortBouncing"),
- ("radiusTestingEnabled", "radiusTestingEnabled"),
- ("radiusCoaSupportEnabled", "radiusCoaSupportEnabled"),
("radiusAccountingEnabled", "radiusAccountingEnabled"),
("radiusAccountingServers", "radiusAccountingServers"),
+ ("radiusCoaSupportEnabled", "radiusCoaSupportEnabled"),
("radiusGroupAttribute", "radiusGroupAttribute"),
- ("hostMode", "hostMode"),
- ("accessPolicyType", "accessPolicyType"),
- ("increaseAccessSpeed", "increaseAccessSpeed"),
- ("guestVlanId", "guestVlanId"),
- ("dot1x", "dot1x"),
- ("voiceVlanClients", "voiceVlanClients"),
+ ("radiusServers", "radiusServers"),
+ ("radiusTestingEnabled", "radiusTestingEnabled"),
("urlRedirectWalledGardenEnabled", "urlRedirectWalledGardenEnabled"),
("urlRedirectWalledGardenRanges", "urlRedirectWalledGardenRanges"),
+ ("voiceVlanClients", "voiceVlanClients"),
("networkId", "networkId"),
("accessPolicyNumber", "accessPolicyNumber"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_switch_alternate_management_interface.py b/ansible_collections/cisco/meraki/plugins/action/networks_switch_alternate_management_interface.py
index 7fd38d4f3..02d8d2c0c 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_switch_alternate_management_interface.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_switch_alternate_management_interface.py
@@ -33,9 +33,9 @@ argument_spec = meraki_argument_spec()
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
enabled=dict(type="bool"),
- vlanId=dict(type="int"),
protocols=dict(type="list"),
switches=dict(type="list"),
+ vlanId=dict(type="int"),
networkId=dict(type="str"),
))
@@ -52,9 +52,9 @@ class NetworksSwitchAlternateManagementInterface(object):
self.meraki = meraki
self.new_object = dict(
enabled=params.get("enabled"),
- vlanId=params.get("vlanId"),
protocols=params.get("protocols"),
switches=params.get("switches"),
+ vlanId=params.get("vlanId"),
network_id=params.get("networkId"),
)
@@ -69,15 +69,15 @@ class NetworksSwitchAlternateManagementInterface(object):
new_object_params = {}
if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
new_object_params['enabled'] = self.new_object.get('enabled')
- if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None:
- new_object_params['vlanId'] = self.new_object.get('vlanId') or \
- self.new_object.get('vlan_id')
if self.new_object.get('protocols') is not None or self.new_object.get('protocols') is not None:
new_object_params['protocols'] = self.new_object.get('protocols') or \
self.new_object.get('protocols')
if self.new_object.get('switches') is not None or self.new_object.get('switches') is not None:
new_object_params['switches'] = self.new_object.get('switches') or \
self.new_object.get('switches')
+ if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None:
+ new_object_params['vlanId'] = self.new_object.get('vlanId') or \
+ self.new_object.get('vlan_id')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -135,9 +135,9 @@ class NetworksSwitchAlternateManagementInterface(object):
obj_params = [
("enabled", "enabled"),
- ("vlanId", "vlanId"),
("protocols", "protocols"),
("switches", "switches"),
+ ("vlanId", "vlanId"),
("networkId", "networkId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_switch_dhcp_server_policy.py b/ansible_collections/cisco/meraki/plugins/action/networks_switch_dhcp_server_policy.py
index 70dae83da..4e3434058 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_switch_dhcp_server_policy.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_switch_dhcp_server_policy.py
@@ -33,10 +33,10 @@ argument_spec = meraki_argument_spec()
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
alerts=dict(type="dict"),
- defaultPolicy=dict(type="str"),
allowedServers=dict(type="list"),
- blockedServers=dict(type="list"),
arpInspection=dict(type="dict"),
+ blockedServers=dict(type="list"),
+ defaultPolicy=dict(type="str"),
networkId=dict(type="str"),
))
@@ -53,10 +53,10 @@ class NetworksSwitchDhcpServerPolicy(object):
self.meraki = meraki
self.new_object = dict(
alerts=params.get("alerts"),
- defaultPolicy=params.get("defaultPolicy"),
allowedServers=params.get("allowedServers"),
- blockedServers=params.get("blockedServers"),
arpInspection=params.get("arpInspection"),
+ blockedServers=params.get("blockedServers"),
+ defaultPolicy=params.get("defaultPolicy"),
network_id=params.get("networkId"),
)
@@ -72,18 +72,18 @@ class NetworksSwitchDhcpServerPolicy(object):
if self.new_object.get('alerts') is not None or self.new_object.get('alerts') is not None:
new_object_params['alerts'] = self.new_object.get('alerts') or \
self.new_object.get('alerts')
- if self.new_object.get('defaultPolicy') is not None or self.new_object.get('default_policy') is not None:
- new_object_params['defaultPolicy'] = self.new_object.get('defaultPolicy') or \
- self.new_object.get('default_policy')
if self.new_object.get('allowedServers') is not None or self.new_object.get('allowed_servers') is not None:
new_object_params['allowedServers'] = self.new_object.get('allowedServers') or \
self.new_object.get('allowed_servers')
- if self.new_object.get('blockedServers') is not None or self.new_object.get('blocked_servers') is not None:
- new_object_params['blockedServers'] = self.new_object.get('blockedServers') or \
- self.new_object.get('blocked_servers')
if self.new_object.get('arpInspection') is not None or self.new_object.get('arp_inspection') is not None:
new_object_params['arpInspection'] = self.new_object.get('arpInspection') or \
self.new_object.get('arp_inspection')
+ if self.new_object.get('blockedServers') is not None or self.new_object.get('blocked_servers') is not None:
+ new_object_params['blockedServers'] = self.new_object.get('blockedServers') or \
+ self.new_object.get('blocked_servers')
+ if self.new_object.get('defaultPolicy') is not None or self.new_object.get('default_policy') is not None:
+ new_object_params['defaultPolicy'] = self.new_object.get('defaultPolicy') or \
+ self.new_object.get('default_policy')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -141,10 +141,10 @@ class NetworksSwitchDhcpServerPolicy(object):
obj_params = [
("alerts", "alerts"),
- ("defaultPolicy", "defaultPolicy"),
("allowedServers", "allowedServers"),
- ("blockedServers", "blockedServers"),
("arpInspection", "arpInspection"),
+ ("blockedServers", "blockedServers"),
+ ("defaultPolicy", "defaultPolicy"),
("networkId", "networkId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_switch_dhcp_server_policy_arp_inspection_trusted_servers.py b/ansible_collections/cisco/meraki/plugins/action/networks_switch_dhcp_server_policy_arp_inspection_trusted_servers.py
index d0bd4b120..e6110049d 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_switch_dhcp_server_policy_arp_inspection_trusted_servers.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_switch_dhcp_server_policy_arp_inspection_trusted_servers.py
@@ -32,9 +32,9 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
+ ipv4=dict(type="dict"),
mac=dict(type="str"),
vlan=dict(type="int"),
- ipv4=dict(type="dict"),
networkId=dict(type="str"),
trustedServerId=dict(type="str"),
))
@@ -52,9 +52,9 @@ class NetworksSwitchDhcpServerPolicyArpInspectionTrustedServers(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ ipv4=params.get("ipv4"),
mac=params.get("mac"),
vlan=params.get("vlan"),
- ipv4=params.get("ipv4"),
networkId=params.get("networkId"),
trustedServerId=params.get("trustedServerId"),
)
@@ -78,15 +78,15 @@ class NetworksSwitchDhcpServerPolicyArpInspectionTrustedServers(object):
def create_params(self):
new_object_params = {}
+ if self.new_object.get('ipv4') is not None or self.new_object.get('ipv4') is not None:
+ new_object_params['ipv4'] = self.new_object.get('ipv4') or \
+ self.new_object.get('ipv4')
if self.new_object.get('mac') is not None or self.new_object.get('mac') is not None:
new_object_params['mac'] = self.new_object.get('mac') or \
self.new_object.get('mac')
if self.new_object.get('vlan') is not None or self.new_object.get('vlan') is not None:
new_object_params['vlan'] = self.new_object.get('vlan') or \
self.new_object.get('vlan')
- if self.new_object.get('ipv4') is not None or self.new_object.get('ipv4') is not None:
- new_object_params['ipv4'] = self.new_object.get('ipv4') or \
- self.new_object.get('ipv4')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -104,15 +104,15 @@ class NetworksSwitchDhcpServerPolicyArpInspectionTrustedServers(object):
def update_by_id_params(self):
new_object_params = {}
+ if self.new_object.get('ipv4') is not None or self.new_object.get('ipv4') is not None:
+ new_object_params['ipv4'] = self.new_object.get('ipv4') or \
+ self.new_object.get('ipv4')
if self.new_object.get('mac') is not None or self.new_object.get('mac') is not None:
new_object_params['mac'] = self.new_object.get('mac') or \
self.new_object.get('mac')
if self.new_object.get('vlan') is not None or self.new_object.get('vlan') is not None:
new_object_params['vlan'] = self.new_object.get('vlan') or \
self.new_object.get('vlan')
- if self.new_object.get('ipv4') is not None or self.new_object.get('ipv4') is not None:
- new_object_params['ipv4'] = self.new_object.get('ipv4') or \
- self.new_object.get('ipv4')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -189,9 +189,9 @@ class NetworksSwitchDhcpServerPolicyArpInspectionTrustedServers(object):
requested_obj = self.new_object
obj_params = [
+ ("ipv4", "ipv4"),
("mac", "mac"),
("vlan", "vlan"),
- ("ipv4", "ipv4"),
("networkId", "networkId"),
("trustedServerId", "trustedServerId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_switch_qos_rules_order.py b/ansible_collections/cisco/meraki/plugins/action/networks_switch_qos_rules_order.py
index 33841d11c..430d78211 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_switch_qos_rules_order.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_switch_qos_rules_order.py
@@ -32,13 +32,13 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- vlan=dict(type="int"),
+ dscp=dict(type="int"),
+ dstPort=dict(type="int"),
+ dstPortRange=dict(type="str"),
protocol=dict(type="str"),
srcPort=dict(type="int"),
srcPortRange=dict(type="str"),
- dstPort=dict(type="int"),
- dstPortRange=dict(type="str"),
- dscp=dict(type="int"),
+ vlan=dict(type="int"),
networkId=dict(type="str"),
qosRuleId=dict(type="str"),
))
@@ -56,13 +56,13 @@ class NetworksSwitchQosRulesOrder(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- vlan=params.get("vlan"),
+ dscp=params.get("dscp"),
+ dstPort=params.get("dstPort"),
+ dstPortRange=params.get("dstPortRange"),
protocol=params.get("protocol"),
srcPort=params.get("srcPort"),
srcPortRange=params.get("srcPortRange"),
- dstPort=params.get("dstPort"),
- dstPortRange=params.get("dstPortRange"),
- dscp=params.get("dscp"),
+ vlan=params.get("vlan"),
networkId=params.get("networkId"),
qosRuleId=params.get("qosRuleId"),
)
@@ -86,9 +86,15 @@ class NetworksSwitchQosRulesOrder(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('vlan') is not None or self.new_object.get('vlan') is not None:
- new_object_params['vlan'] = self.new_object.get('vlan') or \
- self.new_object.get('vlan')
+ if self.new_object.get('dscp') is not None or self.new_object.get('dscp') is not None:
+ new_object_params['dscp'] = self.new_object.get('dscp') or \
+ self.new_object.get('dscp')
+ if self.new_object.get('dstPort') is not None or self.new_object.get('dst_port') is not None:
+ new_object_params['dstPort'] = self.new_object.get('dstPort') or \
+ self.new_object.get('dst_port')
+ if self.new_object.get('dstPortRange') is not None or self.new_object.get('dst_port_range') is not None:
+ new_object_params['dstPortRange'] = self.new_object.get('dstPortRange') or \
+ self.new_object.get('dst_port_range')
if self.new_object.get('protocol') is not None or self.new_object.get('protocol') is not None:
new_object_params['protocol'] = self.new_object.get('protocol') or \
self.new_object.get('protocol')
@@ -98,15 +104,9 @@ class NetworksSwitchQosRulesOrder(object):
if self.new_object.get('srcPortRange') is not None or self.new_object.get('src_port_range') is not None:
new_object_params['srcPortRange'] = self.new_object.get('srcPortRange') or \
self.new_object.get('src_port_range')
- if self.new_object.get('dstPort') is not None or self.new_object.get('dst_port') is not None:
- new_object_params['dstPort'] = self.new_object.get('dstPort') or \
- self.new_object.get('dst_port')
- if self.new_object.get('dstPortRange') is not None or self.new_object.get('dst_port_range') is not None:
- new_object_params['dstPortRange'] = self.new_object.get('dstPortRange') or \
- self.new_object.get('dst_port_range')
- if self.new_object.get('dscp') is not None or self.new_object.get('dscp') is not None:
- new_object_params['dscp'] = self.new_object.get('dscp') or \
- self.new_object.get('dscp')
+ if self.new_object.get('vlan') is not None or self.new_object.get('vlan') is not None:
+ new_object_params['vlan'] = self.new_object.get('vlan') or \
+ self.new_object.get('vlan')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -124,9 +124,15 @@ class NetworksSwitchQosRulesOrder(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('vlan') is not None or self.new_object.get('vlan') is not None:
- new_object_params['vlan'] = self.new_object.get('vlan') or \
- self.new_object.get('vlan')
+ if self.new_object.get('dscp') is not None or self.new_object.get('dscp') is not None:
+ new_object_params['dscp'] = self.new_object.get('dscp') or \
+ self.new_object.get('dscp')
+ if self.new_object.get('dstPort') is not None or self.new_object.get('dst_port') is not None:
+ new_object_params['dstPort'] = self.new_object.get('dstPort') or \
+ self.new_object.get('dst_port')
+ if self.new_object.get('dstPortRange') is not None or self.new_object.get('dst_port_range') is not None:
+ new_object_params['dstPortRange'] = self.new_object.get('dstPortRange') or \
+ self.new_object.get('dst_port_range')
if self.new_object.get('protocol') is not None or self.new_object.get('protocol') is not None:
new_object_params['protocol'] = self.new_object.get('protocol') or \
self.new_object.get('protocol')
@@ -136,15 +142,9 @@ class NetworksSwitchQosRulesOrder(object):
if self.new_object.get('srcPortRange') is not None or self.new_object.get('src_port_range') is not None:
new_object_params['srcPortRange'] = self.new_object.get('srcPortRange') or \
self.new_object.get('src_port_range')
- if self.new_object.get('dstPort') is not None or self.new_object.get('dst_port') is not None:
- new_object_params['dstPort'] = self.new_object.get('dstPort') or \
- self.new_object.get('dst_port')
- if self.new_object.get('dstPortRange') is not None or self.new_object.get('dst_port_range') is not None:
- new_object_params['dstPortRange'] = self.new_object.get('dstPortRange') or \
- self.new_object.get('dst_port_range')
- if self.new_object.get('dscp') is not None or self.new_object.get('dscp') is not None:
- new_object_params['dscp'] = self.new_object.get('dscp') or \
- self.new_object.get('dscp')
+ if self.new_object.get('vlan') is not None or self.new_object.get('vlan') is not None:
+ new_object_params['vlan'] = self.new_object.get('vlan') or \
+ self.new_object.get('vlan')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -222,13 +222,13 @@ class NetworksSwitchQosRulesOrder(object):
requested_obj = self.new_object
obj_params = [
- ("vlan", "vlan"),
+ ("dscp", "dscp"),
+ ("dstPort", "dstPort"),
+ ("dstPortRange", "dstPortRange"),
("protocol", "protocol"),
("srcPort", "srcPort"),
("srcPortRange", "srcPortRange"),
- ("dstPort", "dstPort"),
- ("dstPortRange", "dstPortRange"),
- ("dscp", "dscp"),
+ ("vlan", "vlan"),
("networkId", "networkId"),
("qosRuleId", "qosRuleId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_switch_routing_ospf.py b/ansible_collections/cisco/meraki/plugins/action/networks_switch_routing_ospf.py
index ec0eed0ee..aa72b735c 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_switch_routing_ospf.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_switch_routing_ospf.py
@@ -32,13 +32,13 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
+ areas=dict(type="list"),
+ deadTimerInSeconds=dict(type="int"),
enabled=dict(type="bool"),
helloTimerInSeconds=dict(type="int"),
- deadTimerInSeconds=dict(type="int"),
- areas=dict(type="list"),
- v3=dict(type="dict"),
md5AuthenticationEnabled=dict(type="bool"),
md5AuthenticationKey=dict(type="dict"),
+ v3=dict(type="dict"),
networkId=dict(type="str"),
))
@@ -54,13 +54,13 @@ class NetworksSwitchRoutingOspf(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ areas=params.get("areas"),
+ deadTimerInSeconds=params.get("deadTimerInSeconds"),
enabled=params.get("enabled"),
helloTimerInSeconds=params.get("helloTimerInSeconds"),
- deadTimerInSeconds=params.get("deadTimerInSeconds"),
- areas=params.get("areas"),
- v3=params.get("v3"),
md5AuthenticationEnabled=params.get("md5AuthenticationEnabled"),
md5AuthenticationKey=params.get("md5AuthenticationKey"),
+ v3=params.get("v3"),
network_id=params.get("networkId"),
)
@@ -73,25 +73,25 @@ class NetworksSwitchRoutingOspf(object):
def update_all_params(self):
new_object_params = {}
+ if self.new_object.get('areas') is not None or self.new_object.get('areas') is not None:
+ new_object_params['areas'] = self.new_object.get('areas') or \
+ self.new_object.get('areas')
+ if self.new_object.get('deadTimerInSeconds') is not None or self.new_object.get('dead_timer_in_seconds') is not None:
+ new_object_params['deadTimerInSeconds'] = self.new_object.get('deadTimerInSeconds') or \
+ self.new_object.get('dead_timer_in_seconds')
if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
new_object_params['enabled'] = self.new_object.get('enabled')
if self.new_object.get('helloTimerInSeconds') is not None or self.new_object.get('hello_timer_in_seconds') is not None:
new_object_params['helloTimerInSeconds'] = self.new_object.get('helloTimerInSeconds') or \
self.new_object.get('hello_timer_in_seconds')
- if self.new_object.get('deadTimerInSeconds') is not None or self.new_object.get('dead_timer_in_seconds') is not None:
- new_object_params['deadTimerInSeconds'] = self.new_object.get('deadTimerInSeconds') or \
- self.new_object.get('dead_timer_in_seconds')
- if self.new_object.get('areas') is not None or self.new_object.get('areas') is not None:
- new_object_params['areas'] = self.new_object.get('areas') or \
- self.new_object.get('areas')
- if self.new_object.get('v3') is not None or self.new_object.get('v3') is not None:
- new_object_params['v3'] = self.new_object.get('v3') or \
- self.new_object.get('v3')
if self.new_object.get('md5AuthenticationEnabled') is not None or self.new_object.get('md5_authentication_enabled') is not None:
new_object_params['md5AuthenticationEnabled'] = self.new_object.get('md5AuthenticationEnabled')
if self.new_object.get('md5AuthenticationKey') is not None or self.new_object.get('md5_authentication_key') is not None:
new_object_params['md5AuthenticationKey'] = self.new_object.get('md5AuthenticationKey') or \
self.new_object.get('md5_authentication_key')
+ if self.new_object.get('v3') is not None or self.new_object.get('v3') is not None:
+ new_object_params['v3'] = self.new_object.get('v3') or \
+ self.new_object.get('v3')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -148,13 +148,13 @@ class NetworksSwitchRoutingOspf(object):
requested_obj = self.new_object
obj_params = [
+ ("areas", "areas"),
+ ("deadTimerInSeconds", "deadTimerInSeconds"),
("enabled", "enabled"),
("helloTimerInSeconds", "helloTimerInSeconds"),
- ("deadTimerInSeconds", "deadTimerInSeconds"),
- ("areas", "areas"),
- ("v3", "v3"),
("md5AuthenticationEnabled", "md5AuthenticationEnabled"),
("md5AuthenticationKey", "md5AuthenticationKey"),
+ ("v3", "v3"),
("networkId", "networkId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_switch_settings.py b/ansible_collections/cisco/meraki/plugins/action/networks_switch_settings.py
index 65ae85bab..66664b957 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_switch_settings.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_switch_settings.py
@@ -32,9 +32,11 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- vlan=dict(type="int"),
- useCombinedPower=dict(type="bool"),
+ macBlocklist=dict(type="dict"),
powerExceptions=dict(type="list"),
+ uplinkClientSampling=dict(type="dict"),
+ useCombinedPower=dict(type="bool"),
+ vlan=dict(type="int"),
networkId=dict(type="str"),
))
@@ -50,9 +52,11 @@ class NetworksSwitchSettings(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- vlan=params.get("vlan"),
- useCombinedPower=params.get("useCombinedPower"),
+ macBlocklist=params.get("macBlocklist"),
powerExceptions=params.get("powerExceptions"),
+ uplinkClientSampling=params.get("uplinkClientSampling"),
+ useCombinedPower=params.get("useCombinedPower"),
+ vlan=params.get("vlan"),
network_id=params.get("networkId"),
)
@@ -65,14 +69,20 @@ class NetworksSwitchSettings(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('vlan') is not None or self.new_object.get('vlan') is not None:
- new_object_params['vlan'] = self.new_object.get('vlan') or \
- self.new_object.get('vlan')
- if self.new_object.get('useCombinedPower') is not None or self.new_object.get('use_combined_power') is not None:
- new_object_params['useCombinedPower'] = self.new_object.get('useCombinedPower')
+ if self.new_object.get('macBlocklist') is not None or self.new_object.get('mac_blocklist') is not None:
+ new_object_params['macBlocklist'] = self.new_object.get('macBlocklist') or \
+ self.new_object.get('mac_blocklist')
if self.new_object.get('powerExceptions') is not None or self.new_object.get('power_exceptions') is not None:
new_object_params['powerExceptions'] = self.new_object.get('powerExceptions') or \
self.new_object.get('power_exceptions')
+ if self.new_object.get('uplinkClientSampling') is not None or self.new_object.get('uplink_client_sampling') is not None:
+ new_object_params['uplinkClientSampling'] = self.new_object.get('uplinkClientSampling') or \
+ self.new_object.get('uplink_client_sampling')
+ if self.new_object.get('useCombinedPower') is not None or self.new_object.get('use_combined_power') is not None:
+ new_object_params['useCombinedPower'] = self.new_object.get('useCombinedPower')
+ if self.new_object.get('vlan') is not None or self.new_object.get('vlan') is not None:
+ new_object_params['vlan'] = self.new_object.get('vlan') or \
+ self.new_object.get('vlan')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -129,9 +139,11 @@ class NetworksSwitchSettings(object):
requested_obj = self.new_object
obj_params = [
- ("vlan", "vlan"),
- ("useCombinedPower", "useCombinedPower"),
+ ("macBlocklist", "macBlocklist"),
("powerExceptions", "powerExceptions"),
+ ("uplinkClientSampling", "uplinkClientSampling"),
+ ("useCombinedPower", "useCombinedPower"),
+ ("vlan", "vlan"),
("networkId", "networkId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_switch_stacks_routing_interfaces.py b/ansible_collections/cisco/meraki/plugins/action/networks_switch_stacks_routing_interfaces.py
index 948b77458..e126bce26 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_switch_stacks_routing_interfaces.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_switch_stacks_routing_interfaces.py
@@ -32,14 +32,14 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- name=dict(type="str"),
- subnet=dict(type="str"),
+ defaultGateway=dict(type="str"),
interfaceIp=dict(type="str"),
+ ipv6=dict(type="dict"),
multicastRouting=dict(type="str"),
- vlanId=dict(type="int"),
- defaultGateway=dict(type="str"),
+ name=dict(type="str"),
ospfSettings=dict(type="dict"),
- ipv6=dict(type="dict"),
+ subnet=dict(type="str"),
+ vlanId=dict(type="int"),
networkId=dict(type="str"),
switchStackId=dict(type="str"),
interfaceId=dict(type="str"),
@@ -58,14 +58,14 @@ class NetworksSwitchStacksRoutingInterfaces(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
- subnet=params.get("subnet"),
+ defaultGateway=params.get("defaultGateway"),
interfaceIp=params.get("interfaceIp"),
+ ipv6=params.get("ipv6"),
multicastRouting=params.get("multicastRouting"),
- vlanId=params.get("vlanId"),
- defaultGateway=params.get("defaultGateway"),
+ name=params.get("name"),
ospfSettings=params.get("ospfSettings"),
- ipv6=params.get("ipv6"),
+ subnet=params.get("subnet"),
+ vlanId=params.get("vlanId"),
networkId=params.get("networkId"),
switchStackId=params.get("switchStackId"),
interfaceId=params.get("interfaceId"),
@@ -96,30 +96,30 @@ class NetworksSwitchStacksRoutingInterfaces(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
- new_object_params['subnet'] = self.new_object.get('subnet') or \
- self.new_object.get('subnet')
+ if self.new_object.get('defaultGateway') is not None or self.new_object.get('default_gateway') is not None:
+ new_object_params['defaultGateway'] = self.new_object.get('defaultGateway') or \
+ self.new_object.get('default_gateway')
if self.new_object.get('interfaceIp') is not None or self.new_object.get('interface_ip') is not None:
new_object_params['interfaceIp'] = self.new_object.get('interfaceIp') or \
self.new_object.get('interface_ip')
+ if self.new_object.get('ipv6') is not None or self.new_object.get('ipv6') is not None:
+ new_object_params['ipv6'] = self.new_object.get('ipv6') or \
+ self.new_object.get('ipv6')
if self.new_object.get('multicastRouting') is not None or self.new_object.get('multicast_routing') is not None:
new_object_params['multicastRouting'] = self.new_object.get('multicastRouting') or \
self.new_object.get('multicast_routing')
- if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None:
- new_object_params['vlanId'] = self.new_object.get('vlanId') or \
- self.new_object.get('vlan_id')
- if self.new_object.get('defaultGateway') is not None or self.new_object.get('default_gateway') is not None:
- new_object_params['defaultGateway'] = self.new_object.get('defaultGateway') or \
- self.new_object.get('default_gateway')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('ospfSettings') is not None or self.new_object.get('ospf_settings') is not None:
new_object_params['ospfSettings'] = self.new_object.get('ospfSettings') or \
self.new_object.get('ospf_settings')
- if self.new_object.get('ipv6') is not None or self.new_object.get('ipv6') is not None:
- new_object_params['ipv6'] = self.new_object.get('ipv6') or \
- self.new_object.get('ipv6')
+ if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
+ new_object_params['subnet'] = self.new_object.get('subnet') or \
+ self.new_object.get('subnet')
+ if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None:
+ new_object_params['vlanId'] = self.new_object.get('vlanId') or \
+ self.new_object.get('vlan_id')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -143,30 +143,30 @@ class NetworksSwitchStacksRoutingInterfaces(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
- new_object_params['subnet'] = self.new_object.get('subnet') or \
- self.new_object.get('subnet')
+ if self.new_object.get('defaultGateway') is not None or self.new_object.get('default_gateway') is not None:
+ new_object_params['defaultGateway'] = self.new_object.get('defaultGateway') or \
+ self.new_object.get('default_gateway')
if self.new_object.get('interfaceIp') is not None or self.new_object.get('interface_ip') is not None:
new_object_params['interfaceIp'] = self.new_object.get('interfaceIp') or \
self.new_object.get('interface_ip')
+ if self.new_object.get('ipv6') is not None or self.new_object.get('ipv6') is not None:
+ new_object_params['ipv6'] = self.new_object.get('ipv6') or \
+ self.new_object.get('ipv6')
if self.new_object.get('multicastRouting') is not None or self.new_object.get('multicast_routing') is not None:
new_object_params['multicastRouting'] = self.new_object.get('multicastRouting') or \
self.new_object.get('multicast_routing')
- if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None:
- new_object_params['vlanId'] = self.new_object.get('vlanId') or \
- self.new_object.get('vlan_id')
- if self.new_object.get('defaultGateway') is not None or self.new_object.get('default_gateway') is not None:
- new_object_params['defaultGateway'] = self.new_object.get('defaultGateway') or \
- self.new_object.get('default_gateway')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('ospfSettings') is not None or self.new_object.get('ospf_settings') is not None:
new_object_params['ospfSettings'] = self.new_object.get('ospfSettings') or \
self.new_object.get('ospf_settings')
- if self.new_object.get('ipv6') is not None or self.new_object.get('ipv6') is not None:
- new_object_params['ipv6'] = self.new_object.get('ipv6') or \
- self.new_object.get('ipv6')
+ if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
+ new_object_params['subnet'] = self.new_object.get('subnet') or \
+ self.new_object.get('subnet')
+ if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None:
+ new_object_params['vlanId'] = self.new_object.get('vlanId') or \
+ self.new_object.get('vlan_id')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -247,14 +247,14 @@ class NetworksSwitchStacksRoutingInterfaces(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
- ("subnet", "subnet"),
+ ("defaultGateway", "defaultGateway"),
("interfaceIp", "interfaceIp"),
+ ("ipv6", "ipv6"),
("multicastRouting", "multicastRouting"),
- ("vlanId", "vlanId"),
- ("defaultGateway", "defaultGateway"),
+ ("name", "name"),
("ospfSettings", "ospfSettings"),
- ("ipv6", "ipv6"),
+ ("subnet", "subnet"),
+ ("vlanId", "vlanId"),
("networkId", "networkId"),
("switchStackId", "switchStackId"),
("interfaceId", "interfaceId"),
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_switch_stacks_routing_interfaces_dhcp.py b/ansible_collections/cisco/meraki/plugins/action/networks_switch_stacks_routing_interfaces_dhcp.py
index 0127666a5..e1addc98e 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_switch_stacks_routing_interfaces_dhcp.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_switch_stacks_routing_interfaces_dhcp.py
@@ -32,17 +32,17 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
+ bootFileName=dict(type="str"),
+ bootNextServer=dict(type="str"),
+ bootOptionsEnabled=dict(type="bool"),
+ dhcpLeaseTime=dict(type="str"),
dhcpMode=dict(type="str"),
+ dhcpOptions=dict(type="list"),
dhcpRelayServerIps=dict(type="list"),
- dhcpLeaseTime=dict(type="str"),
- dnsNameserversOption=dict(type="str"),
dnsCustomNameservers=dict(type="list"),
- bootOptionsEnabled=dict(type="bool"),
- bootNextServer=dict(type="str"),
- bootFileName=dict(type="str"),
- dhcpOptions=dict(type="list"),
- reservedIpRanges=dict(type="list"),
+ dnsNameserversOption=dict(type="str"),
fixedIpAssignments=dict(type="list"),
+ reservedIpRanges=dict(type="list"),
networkId=dict(type="str"),
switchStackId=dict(type="str"),
interfaceId=dict(type="str"),
@@ -60,17 +60,17 @@ class NetworksSwitchStacksRoutingInterfacesDhcp(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ bootFileName=params.get("bootFileName"),
+ bootNextServer=params.get("bootNextServer"),
+ bootOptionsEnabled=params.get("bootOptionsEnabled"),
+ dhcpLeaseTime=params.get("dhcpLeaseTime"),
dhcpMode=params.get("dhcpMode"),
+ dhcpOptions=params.get("dhcpOptions"),
dhcpRelayServerIps=params.get("dhcpRelayServerIps"),
- dhcpLeaseTime=params.get("dhcpLeaseTime"),
- dnsNameserversOption=params.get("dnsNameserversOption"),
dnsCustomNameservers=params.get("dnsCustomNameservers"),
- bootOptionsEnabled=params.get("bootOptionsEnabled"),
- bootNextServer=params.get("bootNextServer"),
- bootFileName=params.get("bootFileName"),
- dhcpOptions=params.get("dhcpOptions"),
- reservedIpRanges=params.get("reservedIpRanges"),
+ dnsNameserversOption=params.get("dnsNameserversOption"),
fixedIpAssignments=params.get("fixedIpAssignments"),
+ reservedIpRanges=params.get("reservedIpRanges"),
network_id=params.get("networkId"),
switch_stack_id=params.get("switchStackId"),
interface_id=params.get("interfaceId"),
@@ -91,38 +91,38 @@ class NetworksSwitchStacksRoutingInterfacesDhcp(object):
def update_all_params(self):
new_object_params = {}
+ if self.new_object.get('bootFileName') is not None or self.new_object.get('boot_file_name') is not None:
+ new_object_params['bootFileName'] = self.new_object.get('bootFileName') or \
+ self.new_object.get('boot_file_name')
+ if self.new_object.get('bootNextServer') is not None or self.new_object.get('boot_next_server') is not None:
+ new_object_params['bootNextServer'] = self.new_object.get('bootNextServer') or \
+ self.new_object.get('boot_next_server')
+ if self.new_object.get('bootOptionsEnabled') is not None or self.new_object.get('boot_options_enabled') is not None:
+ new_object_params['bootOptionsEnabled'] = self.new_object.get('bootOptionsEnabled')
+ if self.new_object.get('dhcpLeaseTime') is not None or self.new_object.get('dhcp_lease_time') is not None:
+ new_object_params['dhcpLeaseTime'] = self.new_object.get('dhcpLeaseTime') or \
+ self.new_object.get('dhcp_lease_time')
if self.new_object.get('dhcpMode') is not None or self.new_object.get('dhcp_mode') is not None:
new_object_params['dhcpMode'] = self.new_object.get('dhcpMode') or \
self.new_object.get('dhcp_mode')
+ if self.new_object.get('dhcpOptions') is not None or self.new_object.get('dhcp_options') is not None:
+ new_object_params['dhcpOptions'] = self.new_object.get('dhcpOptions') or \
+ self.new_object.get('dhcp_options')
if self.new_object.get('dhcpRelayServerIps') is not None or self.new_object.get('dhcp_relay_server_ips') is not None:
new_object_params['dhcpRelayServerIps'] = self.new_object.get('dhcpRelayServerIps') or \
self.new_object.get('dhcp_relay_server_ips')
- if self.new_object.get('dhcpLeaseTime') is not None or self.new_object.get('dhcp_lease_time') is not None:
- new_object_params['dhcpLeaseTime'] = self.new_object.get('dhcpLeaseTime') or \
- self.new_object.get('dhcp_lease_time')
- if self.new_object.get('dnsNameserversOption') is not None or self.new_object.get('dns_nameservers_option') is not None:
- new_object_params['dnsNameserversOption'] = self.new_object.get('dnsNameserversOption') or \
- self.new_object.get('dns_nameservers_option')
if self.new_object.get('dnsCustomNameservers') is not None or self.new_object.get('dns_custom_nameservers') is not None:
new_object_params['dnsCustomNameservers'] = self.new_object.get('dnsCustomNameservers') or \
self.new_object.get('dns_custom_nameservers')
- if self.new_object.get('bootOptionsEnabled') is not None or self.new_object.get('boot_options_enabled') is not None:
- new_object_params['bootOptionsEnabled'] = self.new_object.get('bootOptionsEnabled')
- if self.new_object.get('bootNextServer') is not None or self.new_object.get('boot_next_server') is not None:
- new_object_params['bootNextServer'] = self.new_object.get('bootNextServer') or \
- self.new_object.get('boot_next_server')
- if self.new_object.get('bootFileName') is not None or self.new_object.get('boot_file_name') is not None:
- new_object_params['bootFileName'] = self.new_object.get('bootFileName') or \
- self.new_object.get('boot_file_name')
- if self.new_object.get('dhcpOptions') is not None or self.new_object.get('dhcp_options') is not None:
- new_object_params['dhcpOptions'] = self.new_object.get('dhcpOptions') or \
- self.new_object.get('dhcp_options')
- if self.new_object.get('reservedIpRanges') is not None or self.new_object.get('reserved_ip_ranges') is not None:
- new_object_params['reservedIpRanges'] = self.new_object.get('reservedIpRanges') or \
- self.new_object.get('reserved_ip_ranges')
+ if self.new_object.get('dnsNameserversOption') is not None or self.new_object.get('dns_nameservers_option') is not None:
+ new_object_params['dnsNameserversOption'] = self.new_object.get('dnsNameserversOption') or \
+ self.new_object.get('dns_nameservers_option')
if self.new_object.get('fixedIpAssignments') is not None or self.new_object.get('fixed_ip_assignments') is not None:
new_object_params['fixedIpAssignments'] = self.new_object.get('fixedIpAssignments') or \
self.new_object.get('fixed_ip_assignments')
+ if self.new_object.get('reservedIpRanges') is not None or self.new_object.get('reserved_ip_ranges') is not None:
+ new_object_params['reservedIpRanges'] = self.new_object.get('reservedIpRanges') or \
+ self.new_object.get('reserved_ip_ranges')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -185,17 +185,17 @@ class NetworksSwitchStacksRoutingInterfacesDhcp(object):
requested_obj = self.new_object
obj_params = [
+ ("bootFileName", "bootFileName"),
+ ("bootNextServer", "bootNextServer"),
+ ("bootOptionsEnabled", "bootOptionsEnabled"),
+ ("dhcpLeaseTime", "dhcpLeaseTime"),
("dhcpMode", "dhcpMode"),
+ ("dhcpOptions", "dhcpOptions"),
("dhcpRelayServerIps", "dhcpRelayServerIps"),
- ("dhcpLeaseTime", "dhcpLeaseTime"),
- ("dnsNameserversOption", "dnsNameserversOption"),
("dnsCustomNameservers", "dnsCustomNameservers"),
- ("bootOptionsEnabled", "bootOptionsEnabled"),
- ("bootNextServer", "bootNextServer"),
- ("bootFileName", "bootFileName"),
- ("dhcpOptions", "dhcpOptions"),
- ("reservedIpRanges", "reservedIpRanges"),
+ ("dnsNameserversOption", "dnsNameserversOption"),
("fixedIpAssignments", "fixedIpAssignments"),
+ ("reservedIpRanges", "reservedIpRanges"),
("networkId", "networkId"),
("switchStackId", "switchStackId"),
("interfaceId", "interfaceId"),
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_switch_stacks_routing_static_routes.py b/ansible_collections/cisco/meraki/plugins/action/networks_switch_stacks_routing_static_routes.py
index 1ac473570..88d04e931 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_switch_stacks_routing_static_routes.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_switch_stacks_routing_static_routes.py
@@ -32,11 +32,11 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
+ advertiseViaOspfEnabled=dict(type="bool"),
name=dict(type="str"),
- subnet=dict(type="str"),
nextHopIp=dict(type="str"),
- advertiseViaOspfEnabled=dict(type="bool"),
preferOverOspfRoutesEnabled=dict(type="bool"),
+ subnet=dict(type="str"),
networkId=dict(type="str"),
switchStackId=dict(type="str"),
staticRouteId=dict(type="str"),
@@ -55,11 +55,11 @@ class NetworksSwitchStacksRoutingStaticRoutes(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ advertiseViaOspfEnabled=params.get("advertiseViaOspfEnabled"),
name=params.get("name"),
- subnet=params.get("subnet"),
nextHopIp=params.get("nextHopIp"),
- advertiseViaOspfEnabled=params.get("advertiseViaOspfEnabled"),
preferOverOspfRoutesEnabled=params.get("preferOverOspfRoutesEnabled"),
+ subnet=params.get("subnet"),
networkId=params.get("networkId"),
switchStackId=params.get("switchStackId"),
staticRouteId=params.get("staticRouteId"),
@@ -90,19 +90,19 @@ class NetworksSwitchStacksRoutingStaticRoutes(object):
def create_params(self):
new_object_params = {}
+ if self.new_object.get('advertiseViaOspfEnabled') is not None or self.new_object.get('advertise_via_ospf_enabled') is not None:
+ new_object_params['advertiseViaOspfEnabled'] = self.new_object.get('advertiseViaOspfEnabled')
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
- if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
- new_object_params['subnet'] = self.new_object.get('subnet') or \
- self.new_object.get('subnet')
if self.new_object.get('nextHopIp') is not None or self.new_object.get('next_hop_ip') is not None:
new_object_params['nextHopIp'] = self.new_object.get('nextHopIp') or \
self.new_object.get('next_hop_ip')
- if self.new_object.get('advertiseViaOspfEnabled') is not None or self.new_object.get('advertise_via_ospf_enabled') is not None:
- new_object_params['advertiseViaOspfEnabled'] = self.new_object.get('advertiseViaOspfEnabled')
if self.new_object.get('preferOverOspfRoutesEnabled') is not None or self.new_object.get('prefer_over_ospf_routes_enabled') is not None:
new_object_params['preferOverOspfRoutesEnabled'] = self.new_object.get('preferOverOspfRoutesEnabled')
+ if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
+ new_object_params['subnet'] = self.new_object.get('subnet') or \
+ self.new_object.get('subnet')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -126,19 +126,19 @@ class NetworksSwitchStacksRoutingStaticRoutes(object):
def update_by_id_params(self):
new_object_params = {}
+ if self.new_object.get('advertiseViaOspfEnabled') is not None or self.new_object.get('advertise_via_ospf_enabled') is not None:
+ new_object_params['advertiseViaOspfEnabled'] = self.new_object.get('advertiseViaOspfEnabled')
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
- if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
- new_object_params['subnet'] = self.new_object.get('subnet') or \
- self.new_object.get('subnet')
if self.new_object.get('nextHopIp') is not None or self.new_object.get('next_hop_ip') is not None:
new_object_params['nextHopIp'] = self.new_object.get('nextHopIp') or \
self.new_object.get('next_hop_ip')
- if self.new_object.get('advertiseViaOspfEnabled') is not None or self.new_object.get('advertise_via_ospf_enabled') is not None:
- new_object_params['advertiseViaOspfEnabled'] = self.new_object.get('advertiseViaOspfEnabled')
if self.new_object.get('preferOverOspfRoutesEnabled') is not None or self.new_object.get('prefer_over_ospf_routes_enabled') is not None:
new_object_params['preferOverOspfRoutesEnabled'] = self.new_object.get('preferOverOspfRoutesEnabled')
+ if self.new_object.get('subnet') is not None or self.new_object.get('subnet') is not None:
+ new_object_params['subnet'] = self.new_object.get('subnet') or \
+ self.new_object.get('subnet')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -219,11 +219,11 @@ class NetworksSwitchStacksRoutingStaticRoutes(object):
requested_obj = self.new_object
obj_params = [
+ ("advertiseViaOspfEnabled", "advertiseViaOspfEnabled"),
("name", "name"),
- ("subnet", "subnet"),
("nextHopIp", "nextHopIp"),
- ("advertiseViaOspfEnabled", "advertiseViaOspfEnabled"),
("preferOverOspfRoutesEnabled", "preferOverOspfRoutesEnabled"),
+ ("subnet", "subnet"),
("networkId", "networkId"),
("switchStackId", "switchStackId"),
("staticRouteId", "staticRouteId"),
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_traffic_analysis.py b/ansible_collections/cisco/meraki/plugins/action/networks_traffic_analysis.py
index eb815e34c..3a0362321 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_traffic_analysis.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_traffic_analysis.py
@@ -32,8 +32,8 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- mode=dict(type="str"),
customPieChartItems=dict(type="list"),
+ mode=dict(type="str"),
networkId=dict(type="str"),
))
@@ -49,8 +49,8 @@ class NetworksTrafficAnalysis(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- mode=params.get("mode"),
customPieChartItems=params.get("customPieChartItems"),
+ mode=params.get("mode"),
network_id=params.get("networkId"),
)
@@ -63,12 +63,12 @@ class NetworksTrafficAnalysis(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('mode') is not None or self.new_object.get('mode') is not None:
- new_object_params['mode'] = self.new_object.get('mode') or \
- self.new_object.get('mode')
if self.new_object.get('customPieChartItems') is not None or self.new_object.get('custom_pie_chart_items') is not None:
new_object_params['customPieChartItems'] = self.new_object.get('customPieChartItems') or \
self.new_object.get('custom_pie_chart_items')
+ if self.new_object.get('mode') is not None or self.new_object.get('mode') is not None:
+ new_object_params['mode'] = self.new_object.get('mode') or \
+ self.new_object.get('mode')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -125,8 +125,8 @@ class NetworksTrafficAnalysis(object):
requested_obj = self.new_object
obj_params = [
- ("mode", "mode"),
("customPieChartItems", "customPieChartItems"),
+ ("mode", "mode"),
("networkId", "networkId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_vlan_profiles.py b/ansible_collections/cisco/meraki/plugins/action/networks_vlan_profiles.py
new file mode 100644
index 000000000..c92346bea
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_vlan_profiles.py
@@ -0,0 +1,260 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or
+# https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+ meraki_compare_equality,
+ get_dict_result,
+)
+from ansible_collections.cisco.meraki.plugins.plugin_utils.exceptions import (
+ InconsistentParameters,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ state=dict(type="str", default="present", choices=["present", "absent"]),
+ name=dict(type="str"),
+ vlanGroups=dict(type="list"),
+ vlanNames=dict(type="list"),
+ networkId=dict(type="str"),
+ iname=dict(type="str"),
+))
+
+required_if = [
+ ("state", "present", ["iname", "name", "networkId"], True),
+ ("state", "absent", ["iname", "name", "networkId"], True),
+]
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class NetworksVlanProfiles(object):
+ def __init__(self, params, meraki):
+ self.meraki = meraki
+ self.new_object = dict(
+ name=params.get("name"),
+ vlanGroups=params.get("vlanGroups"),
+ vlanNames=params.get("vlanNames"),
+ network_id=params.get("networkId"),
+ iname=params.get("iname"),
+ )
+
+ def delete_by_name_params(self):
+ new_object_params = {}
+ if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
+ new_object_params['networkId'] = self.new_object.get('networkId') or \
+ self.new_object.get('network_id')
+ if self.new_object.get('iname') is not None or self.new_object.get('iname') is not None:
+ new_object_params['iname'] = self.new_object.get('iname') or \
+ self.new_object.get('iname')
+ return new_object_params
+
+ def update_by_name_params(self):
+ new_object_params = {}
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('vlanGroups') is not None or self.new_object.get('vlan_groups') is not None:
+ new_object_params['vlanGroups'] = self.new_object.get('vlanGroups') or \
+ self.new_object.get('vlan_groups')
+ if self.new_object.get('vlanNames') is not None or self.new_object.get('vlan_names') is not None:
+ new_object_params['vlanNames'] = self.new_object.get('vlanNames') or \
+ self.new_object.get('vlan_names')
+ if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
+ new_object_params['networkId'] = self.new_object.get('networkId') or \
+ self.new_object.get('network_id')
+ if self.new_object.get('iname') is not None or self.new_object.get('iname') is not None:
+ new_object_params['iname'] = self.new_object.get('iname') or \
+ self.new_object.get('iname')
+ return new_object_params
+
+ def get_object_by_name(self, name):
+ result = None
+ try:
+ items = self.meraki.exec_meraki(
+ family="networks",
+ function="getNetworkVlanProfile",
+ params={"iname": name}
+ )
+ if isinstance(items, dict):
+ if 'response' in items:
+ items = items.get('response')
+ result = get_dict_result(items, 'iname', name)
+ except Exception:
+ result = None
+ return result
+
+ def get_object_by_id(self, id):
+ result = None
+ # NOTE: Does not have a get by id method or it is in another action
+ return result
+
+ def exists(self):
+ prev_obj = None
+ id_exists = False
+ name_exists = False
+ o_id = self.new_object.get("networkId") or self.new_object.get("network_id")
+ name = self.new_object.get("name")
+ name = name or self.new_object.get("iname")
+ if o_id:
+ prev_obj = self.get_object_by_name(o_id)
+ id_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if not id_exists and name:
+ prev_obj = self.get_object_by_name(name)
+ name_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if id_exists:
+ _name = prev_obj.get("name")
+ _name = _name or prev_obj.get("iname")
+ if _name:
+ self.new_object.update(dict(iname=_name))
+ if name_exists:
+ _id = prev_obj.get("id")
+ if id_exists and name_exists and o_id != _id:
+ raise InconsistentParameters(
+ "The 'id' and 'name' params don't refer to the same object")
+ if _id:
+ self.new_object.update(dict(id=_id))
+ it_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ return (it_exists, prev_obj)
+
+ def requires_update(self, current_obj):
+ requested_obj = self.new_object
+
+ obj_params = [
+ ("name", "name"),
+ ("vlanGroups", "vlanGroups"),
+ ("vlanNames", "vlanNames"),
+ ("networkId", "networkId"),
+ ("iname", "iname"),
+ ]
+ # Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
+ # If any does not have eq params, it requires update
+ return any(not meraki_compare_equality(current_obj.get(meraki_param),
+ requested_obj.get(ansible_param))
+ for (meraki_param, ansible_param) in obj_params)
+
+ def update(self):
+ id = self.new_object.get("id")
+ name = self.new_object.get("name")
+ name = name or self.new_object.get("iname")
+ result = None
+ if not name:
+ prev_obj_id = self.get_object_by_id(id)
+ name_ = None
+ if prev_obj_id:
+ name_ = prev_obj_id.get("name")
+ name_ = name_ or prev_obj_id.get("iname")
+ if name_:
+ self.new_object.update(dict(iname=name_))
+ result = self.meraki.exec_meraki(
+ family="networks",
+ function="updateNetworkVlanProfile",
+ params=self.update_by_name_params(),
+ op_modifies=True,
+ )
+ return result
+
+ def delete(self):
+ id = self.new_object.get("id")
+ name = self.new_object.get("name")
+ name = name or self.new_object.get("iname")
+ result = None
+ if not name:
+ prev_obj_id = self.get_object_by_id(id)
+ name_ = None
+ if prev_obj_id:
+ name_ = prev_obj_id.get("name")
+ name_ = name_ or prev_obj_id.get("iname")
+ if name_:
+ self.new_object.update(dict(iname=name_))
+ result = self.meraki.exec_meraki(
+ family="networks",
+ function="deleteNetworkVlanProfile",
+ params=self.delete_by_name_params(),
+ )
+ return result
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(self._task.args)
+ obj = NetworksVlanProfiles(self._task.args, meraki)
+
+ state = self._task.args.get("state")
+
+ response = None
+ if state == "present":
+ (obj_exists, prev_obj) = obj.exists()
+ if obj_exists:
+ if obj.requires_update(prev_obj):
+ response = obj.update()
+ meraki.object_updated()
+ else:
+ response = prev_obj
+ meraki.object_already_present()
+ else:
+ meraki.fail_json(
+ "Object does not exists, plugin only has update")
+ elif state == "absent":
+ (obj_exists, prev_obj) = obj.exists()
+ if obj_exists:
+ response = obj.delete()
+ meraki.object_deleted()
+ else:
+ meraki.object_already_absent()
+
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_vlan_profiles_assignments_by_device_info.py b/ansible_collections/cisco/meraki/plugins/action/networks_vlan_profiles_assignments_by_device_info.py
new file mode 100644
index 000000000..2e386c0ab
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_vlan_profiles_assignments_by_device_info.py
@@ -0,0 +1,120 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ networkId=dict(type="str"),
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ startingAfter=dict(type="str"),
+ endingBefore=dict(type="str"),
+ serials=dict(type="list"),
+ productTypes=dict(type="list"),
+ stackIds=dict(type="list"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("networkId") is not None:
+ new_object["networkId"] = params.get(
+ "networkId")
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("startingAfter") is not None:
+ new_object["startingAfter"] = params.get(
+ "startingAfter")
+ if params.get("endingBefore") is not None:
+ new_object["endingBefore"] = params.get(
+ "endingBefore")
+ if params.get("serials") is not None:
+ new_object["serials"] = params.get(
+ "serials")
+ if params.get("productTypes") is not None:
+ new_object["productTypes"] = params.get(
+ "productTypes")
+ if params.get("stackIds") is not None:
+ new_object["stackIds"] = params.get(
+ "stackIds")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="networks",
+ function='getNetworkVlanProfilesAssignmentsByDevice',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_vlan_profiles_assignments_reassign.py b/ansible_collections/cisco/meraki/plugins/action/networks_vlan_profiles_assignments_reassign.py
new file mode 100644
index 000000000..96cb0a3a1
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_vlan_profiles_assignments_reassign.py
@@ -0,0 +1,93 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguements specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ serials=dict(type="list"),
+ stackIds=dict(type="list"),
+ vlanProfile=dict(type="dict"),
+ networkId=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_object(self, params):
+ new_object = dict(
+ serials=params.get("serials"),
+ stackIds=params.get("stackIds"),
+ vlanProfile=params.get("vlanProfile"),
+ networkId=params.get("networkId"),
+ )
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="networks",
+ function='reassignNetworkVlanProfilesAssignments',
+ op_modifies=True,
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_vlan_profiles_info.py b/ansible_collections/cisco/meraki/plugins/action/networks_vlan_profiles_info.py
new file mode 100644
index 000000000..74fa01c03
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_vlan_profiles_info.py
@@ -0,0 +1,92 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ networkId=dict(type="str"),
+ iname=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ name = self._task.args.get("iname")
+ if name:
+ response = meraki.exec_meraki(
+ family="networks",
+ function='getNetworkVlanProfile',
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
+ if not name:
+ # NOTE: Does not have a get all method or it is in another action
+ response = None
+ meraki.object_modify_result(changed=False, result="Module does not have get all, check arguments of module")
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_webhooks_http_servers.py b/ansible_collections/cisco/meraki/plugins/action/networks_webhooks_http_servers.py
index ef9a6d29d..a893960f6 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_webhooks_http_servers.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_webhooks_http_servers.py
@@ -33,9 +33,9 @@ argument_spec = meraki_argument_spec()
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
name=dict(type="str"),
- url=dict(type="str"),
- sharedSecret=dict(type="str"),
payloadTemplate=dict(type="dict"),
+ sharedSecret=dict(type="str"),
+ url=dict(type="str"),
networkId=dict(type="str"),
httpServerId=dict(type="str"),
))
@@ -54,9 +54,9 @@ class NetworksWebhooksHttpServers(object):
self.meraki = meraki
self.new_object = dict(
name=params.get("name"),
- url=params.get("url"),
- sharedSecret=params.get("sharedSecret"),
payloadTemplate=params.get("payloadTemplate"),
+ sharedSecret=params.get("sharedSecret"),
+ url=params.get("url"),
networkId=params.get("networkId"),
httpServerId=params.get("httpServerId"),
)
@@ -83,15 +83,15 @@ class NetworksWebhooksHttpServers(object):
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
- if self.new_object.get('url') is not None or self.new_object.get('url') is not None:
- new_object_params['url'] = self.new_object.get('url') or \
- self.new_object.get('url')
- if self.new_object.get('sharedSecret') is not None or self.new_object.get('shared_secret') is not None:
- new_object_params['sharedSecret'] = self.new_object.get('sharedSecret') or \
- self.new_object.get('shared_secret')
if self.new_object.get('payloadTemplate') is not None or self.new_object.get('payload_template') is not None:
new_object_params['payloadTemplate'] = self.new_object.get('payloadTemplate') or \
self.new_object.get('payload_template')
+ if self.new_object.get('sharedSecret') is not None or self.new_object.get('shared_secret') is not None:
+ new_object_params['sharedSecret'] = self.new_object.get('sharedSecret') or \
+ self.new_object.get('shared_secret')
+ if self.new_object.get('url') is not None or self.new_object.get('url') is not None:
+ new_object_params['url'] = self.new_object.get('url') or \
+ self.new_object.get('url')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -112,12 +112,12 @@ class NetworksWebhooksHttpServers(object):
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
- if self.new_object.get('sharedSecret') is not None or self.new_object.get('shared_secret') is not None:
- new_object_params['sharedSecret'] = self.new_object.get('sharedSecret') or \
- self.new_object.get('shared_secret')
if self.new_object.get('payloadTemplate') is not None or self.new_object.get('payload_template') is not None:
new_object_params['payloadTemplate'] = self.new_object.get('payloadTemplate') or \
self.new_object.get('payload_template')
+ if self.new_object.get('sharedSecret') is not None or self.new_object.get('shared_secret') is not None:
+ new_object_params['sharedSecret'] = self.new_object.get('sharedSecret') or \
+ self.new_object.get('shared_secret')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -196,9 +196,9 @@ class NetworksWebhooksHttpServers(object):
obj_params = [
("name", "name"),
- ("url", "url"),
- ("sharedSecret", "sharedSecret"),
("payloadTemplate", "payloadTemplate"),
+ ("sharedSecret", "sharedSecret"),
+ ("url", "url"),
("networkId", "networkId"),
("httpServerId", "httpServerId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_webhooks_payload_templates.py b/ansible_collections/cisco/meraki/plugins/action/networks_webhooks_payload_templates.py
index 335a112bc..9f1b32936 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_webhooks_payload_templates.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_webhooks_payload_templates.py
@@ -32,11 +32,11 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- name=dict(type="str"),
body=dict(type="str"),
- headers=dict(type="list"),
bodyFile=dict(type="str"),
+ headers=dict(type="list"),
headersFile=dict(type="str"),
+ name=dict(type="str"),
networkId=dict(type="str"),
payloadTemplateId=dict(type="str"),
))
@@ -54,11 +54,11 @@ class NetworksWebhooksPayloadTemplates(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
body=params.get("body"),
- headers=params.get("headers"),
bodyFile=params.get("bodyFile"),
+ headers=params.get("headers"),
headersFile=params.get("headersFile"),
+ name=params.get("name"),
networkId=params.get("networkId"),
payloadTemplateId=params.get("payloadTemplateId"),
)
@@ -82,21 +82,21 @@ class NetworksWebhooksPayloadTemplates(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
if self.new_object.get('body') is not None or self.new_object.get('body') is not None:
new_object_params['body'] = self.new_object.get('body') or \
self.new_object.get('body')
- if self.new_object.get('headers') is not None or self.new_object.get('headers') is not None:
- new_object_params['headers'] = self.new_object.get('headers') or \
- self.new_object.get('headers')
if self.new_object.get('bodyFile') is not None or self.new_object.get('body_file') is not None:
new_object_params['bodyFile'] = self.new_object.get('bodyFile') or \
self.new_object.get('body_file')
+ if self.new_object.get('headers') is not None or self.new_object.get('headers') is not None:
+ new_object_params['headers'] = self.new_object.get('headers') or \
+ self.new_object.get('headers')
if self.new_object.get('headersFile') is not None or self.new_object.get('headers_file') is not None:
new_object_params['headersFile'] = self.new_object.get('headersFile') or \
self.new_object.get('headers_file')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -114,21 +114,21 @@ class NetworksWebhooksPayloadTemplates(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
if self.new_object.get('body') is not None or self.new_object.get('body') is not None:
new_object_params['body'] = self.new_object.get('body') or \
self.new_object.get('body')
- if self.new_object.get('headers') is not None or self.new_object.get('headers') is not None:
- new_object_params['headers'] = self.new_object.get('headers') or \
- self.new_object.get('headers')
if self.new_object.get('bodyFile') is not None or self.new_object.get('body_file') is not None:
new_object_params['bodyFile'] = self.new_object.get('bodyFile') or \
self.new_object.get('body_file')
+ if self.new_object.get('headers') is not None or self.new_object.get('headers') is not None:
+ new_object_params['headers'] = self.new_object.get('headers') or \
+ self.new_object.get('headers')
if self.new_object.get('headersFile') is not None or self.new_object.get('headers_file') is not None:
new_object_params['headersFile'] = self.new_object.get('headersFile') or \
self.new_object.get('headers_file')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -206,11 +206,11 @@ class NetworksWebhooksPayloadTemplates(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
("body", "body"),
- ("headers", "headers"),
("bodyFile", "bodyFile"),
+ ("headers", "headers"),
("headersFile", "headersFile"),
+ ("name", "name"),
("networkId", "networkId"),
("payloadTemplateId", "payloadTemplateId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_alternate_management_interface.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_alternate_management_interface.py
index 899d9f264..f21ab1696 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_alternate_management_interface.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_alternate_management_interface.py
@@ -32,10 +32,10 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
+ accessPoints=dict(type="list"),
enabled=dict(type="bool"),
- vlanId=dict(type="int"),
protocols=dict(type="list"),
- accessPoints=dict(type="list"),
+ vlanId=dict(type="int"),
networkId=dict(type="str"),
))
@@ -51,10 +51,10 @@ class NetworksWirelessAlternateManagementInterface(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ accessPoints=params.get("accessPoints"),
enabled=params.get("enabled"),
- vlanId=params.get("vlanId"),
protocols=params.get("protocols"),
- accessPoints=params.get("accessPoints"),
+ vlanId=params.get("vlanId"),
network_id=params.get("networkId"),
)
@@ -67,17 +67,17 @@ class NetworksWirelessAlternateManagementInterface(object):
def update_all_params(self):
new_object_params = {}
+ if self.new_object.get('accessPoints') is not None or self.new_object.get('access_points') is not None:
+ new_object_params['accessPoints'] = self.new_object.get('accessPoints') or \
+ self.new_object.get('access_points')
if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
new_object_params['enabled'] = self.new_object.get('enabled')
- if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None:
- new_object_params['vlanId'] = self.new_object.get('vlanId') or \
- self.new_object.get('vlan_id')
if self.new_object.get('protocols') is not None or self.new_object.get('protocols') is not None:
new_object_params['protocols'] = self.new_object.get('protocols') or \
self.new_object.get('protocols')
- if self.new_object.get('accessPoints') is not None or self.new_object.get('access_points') is not None:
- new_object_params['accessPoints'] = self.new_object.get('accessPoints') or \
- self.new_object.get('access_points')
+ if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None:
+ new_object_params['vlanId'] = self.new_object.get('vlanId') or \
+ self.new_object.get('vlan_id')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -134,10 +134,10 @@ class NetworksWirelessAlternateManagementInterface(object):
requested_obj = self.new_object
obj_params = [
+ ("accessPoints", "accessPoints"),
("enabled", "enabled"),
- ("vlanId", "vlanId"),
("protocols", "protocols"),
- ("accessPoints", "accessPoints"),
+ ("vlanId", "vlanId"),
("networkId", "networkId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_bluetooth_settings.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_bluetooth_settings.py
index 59f9f6c75..ea730674c 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_bluetooth_settings.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_bluetooth_settings.py
@@ -32,12 +32,12 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- scanningEnabled=dict(type="bool"),
advertisingEnabled=dict(type="bool"),
- uuid=dict(type="str"),
- majorMinorAssignmentMode=dict(type="str"),
major=dict(type="int"),
+ majorMinorAssignmentMode=dict(type="str"),
minor=dict(type="int"),
+ scanningEnabled=dict(type="bool"),
+ uuid=dict(type="str"),
networkId=dict(type="str"),
))
@@ -53,12 +53,12 @@ class NetworksWirelessBluetoothSettings(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- scanningEnabled=params.get("scanningEnabled"),
advertisingEnabled=params.get("advertisingEnabled"),
- uuid=params.get("uuid"),
- majorMinorAssignmentMode=params.get("majorMinorAssignmentMode"),
major=params.get("major"),
+ majorMinorAssignmentMode=params.get("majorMinorAssignmentMode"),
minor=params.get("minor"),
+ scanningEnabled=params.get("scanningEnabled"),
+ uuid=params.get("uuid"),
network_id=params.get("networkId"),
)
@@ -71,22 +71,22 @@ class NetworksWirelessBluetoothSettings(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('scanningEnabled') is not None or self.new_object.get('scanning_enabled') is not None:
- new_object_params['scanningEnabled'] = self.new_object.get('scanningEnabled')
if self.new_object.get('advertisingEnabled') is not None or self.new_object.get('advertising_enabled') is not None:
new_object_params['advertisingEnabled'] = self.new_object.get('advertisingEnabled')
- if self.new_object.get('uuid') is not None or self.new_object.get('uuid') is not None:
- new_object_params['uuid'] = self.new_object.get('uuid') or \
- self.new_object.get('uuid')
- if self.new_object.get('majorMinorAssignmentMode') is not None or self.new_object.get('major_minor_assignment_mode') is not None:
- new_object_params['majorMinorAssignmentMode'] = self.new_object.get('majorMinorAssignmentMode') or \
- self.new_object.get('major_minor_assignment_mode')
if self.new_object.get('major') is not None or self.new_object.get('major') is not None:
new_object_params['major'] = self.new_object.get('major') or \
self.new_object.get('major')
+ if self.new_object.get('majorMinorAssignmentMode') is not None or self.new_object.get('major_minor_assignment_mode') is not None:
+ new_object_params['majorMinorAssignmentMode'] = self.new_object.get('majorMinorAssignmentMode') or \
+ self.new_object.get('major_minor_assignment_mode')
if self.new_object.get('minor') is not None or self.new_object.get('minor') is not None:
new_object_params['minor'] = self.new_object.get('minor') or \
self.new_object.get('minor')
+ if self.new_object.get('scanningEnabled') is not None or self.new_object.get('scanning_enabled') is not None:
+ new_object_params['scanningEnabled'] = self.new_object.get('scanningEnabled')
+ if self.new_object.get('uuid') is not None or self.new_object.get('uuid') is not None:
+ new_object_params['uuid'] = self.new_object.get('uuid') or \
+ self.new_object.get('uuid')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -143,12 +143,12 @@ class NetworksWirelessBluetoothSettings(object):
requested_obj = self.new_object
obj_params = [
- ("scanningEnabled", "scanningEnabled"),
("advertisingEnabled", "advertisingEnabled"),
- ("uuid", "uuid"),
- ("majorMinorAssignmentMode", "majorMinorAssignmentMode"),
("major", "major"),
+ ("majorMinorAssignmentMode", "majorMinorAssignmentMode"),
("minor", "minor"),
+ ("scanningEnabled", "scanningEnabled"),
+ ("uuid", "uuid"),
("networkId", "networkId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ethernet_ports_profiles.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ethernet_ports_profiles.py
new file mode 100644
index 000000000..fc95256a5
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ethernet_ports_profiles.py
@@ -0,0 +1,270 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or
+# https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+ meraki_compare_equality,
+)
+from ansible_collections.cisco.meraki.plugins.plugin_utils.exceptions import (
+ InconsistentParameters,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ state=dict(type="str", default="present", choices=["present", "absent"]),
+ name=dict(type="str"),
+ ports=dict(type="list"),
+ usbPorts=dict(type="list"),
+ networkId=dict(type="str"),
+ profileId=dict(type="str"),
+))
+
+required_if = [
+ ("state", "present", ["name", "networkId", "profileId"], True),
+ ("state", "absent", ["name", "networkId", "profileId"], True),
+]
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class NetworksWirelessEthernetPortsProfiles(object):
+ def __init__(self, params, meraki):
+ self.meraki = meraki
+ self.new_object = dict(
+ name=params.get("name"),
+ ports=params.get("ports"),
+ usbPorts=params.get("usbPorts"),
+ network_id=params.get("networkId"),
+ profile_id=params.get("profileId"),
+ )
+
+ def get_params_by_id(self, name=None, id=None):
+ new_object_params = {}
+ if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
+ new_object_params['networkId'] = self.new_object.get('networkId') or \
+ self.new_object.get('network_id')
+ if self.new_object.get('profileId') is not None or self.new_object.get('profile_id') is not None:
+ new_object_params['profileId'] = self.new_object.get('profileId') or \
+ self.new_object.get('profile_id')
+ return new_object_params
+
+ def delete_by_id_params(self):
+ new_object_params = {}
+ if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
+ new_object_params['networkId'] = self.new_object.get('networkId') or \
+ self.new_object.get('network_id')
+ if self.new_object.get('profileId') is not None or self.new_object.get('profile_id') is not None:
+ new_object_params['profileId'] = self.new_object.get('profileId') or \
+ self.new_object.get('profile_id')
+ return new_object_params
+
+ def update_by_id_params(self):
+ new_object_params = {}
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('ports') is not None or self.new_object.get('ports') is not None:
+ new_object_params['ports'] = self.new_object.get('ports') or \
+ self.new_object.get('ports')
+ if self.new_object.get('usbPorts') is not None or self.new_object.get('usb_ports') is not None:
+ new_object_params['usbPorts'] = self.new_object.get('usbPorts') or \
+ self.new_object.get('usb_ports')
+ if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
+ new_object_params['networkId'] = self.new_object.get('networkId') or \
+ self.new_object.get('network_id')
+ if self.new_object.get('profileId') is not None or self.new_object.get('profile_id') is not None:
+ new_object_params['profileId'] = self.new_object.get('profileId') or \
+ self.new_object.get('profile_id')
+ return new_object_params
+
+ def get_object_by_name(self, name):
+ result = None
+ # NOTE: Does not have a get by name and get all
+ return result
+
+ def get_object_by_id(self, id):
+ result = None
+ try:
+ items = self.meraki.exec_meraki(
+ family="wireless",
+ function="getNetworkWirelessEthernetPortsProfile",
+ params=self.get_params_by_id()
+ )
+ if isinstance(items, dict):
+ if 'response' in items:
+ items = items.get('response')
+ result = items
+ except Exception as e:
+ print("Error: ", e)
+ result = None
+ return result
+
+ def exists(self):
+ prev_obj = None
+ id_exists = False
+ name_exists = False
+ o_id = self.new_object.get("networkId") or self.new_object.get("network_id")
+ o_id = o_id or self.new_object.get(
+ "profile_id") or self.new_object.get("profileId")
+ name = self.new_object.get("name")
+ if o_id:
+ prev_obj = self.get_object_by_id(o_id)
+ id_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if not id_exists and name:
+ prev_obj = self.get_object_by_name(name)
+ name_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if name_exists:
+ _id = prev_obj.get("id")
+ _id = _id or prev_obj.get("profileId")
+ if id_exists and name_exists and o_id != _id:
+ raise InconsistentParameters(
+ "The 'id' and 'name' params don't refer to the same object")
+ if _id:
+ self.new_object.update(dict(id=_id))
+ self.new_object.update(dict(profileId=_id))
+ if _id:
+ prev_obj = self.get_object_by_id(_id)
+ it_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ return (it_exists, prev_obj)
+
+ def requires_update(self, current_obj):
+ requested_obj = self.new_object
+
+ obj_params = [
+ ("name", "name"),
+ ("ports", "ports"),
+ ("usbPorts", "usbPorts"),
+ ("networkId", "networkId"),
+ ("profileId", "profileId"),
+ ]
+ # Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
+ # If any does not have eq params, it requires update
+ return any(not meraki_compare_equality(current_obj.get(meraki_param),
+ requested_obj.get(ansible_param))
+ for (meraki_param, ansible_param) in obj_params)
+
+ def update(self):
+ id = self.new_object.get("id")
+ id = id or self.new_object.get("profileId")
+ name = self.new_object.get("name")
+ result = None
+ if not id:
+ prev_obj_name = self.get_object_by_name(name)
+ id_ = None
+ if prev_obj_name:
+ id_ = prev_obj_name.get("id")
+ id_ = id_ or prev_obj_name.get("profileId")
+ if id_:
+ self.new_object.update(dict(profileid=id_))
+ result = self.meraki.exec_meraki(
+ family="wireless",
+ function="updateNetworkWirelessEthernetPortsProfile",
+ params=self.update_by_id_params(),
+ op_modifies=True,
+ )
+ return result
+
+ def delete(self):
+ id = self.new_object.get("id")
+ id = id or self.new_object.get("profileId")
+ name = self.new_object.get("name")
+ result = None
+ if not id:
+ prev_obj_name = self.get_object_by_name(name)
+ id_ = None
+ if prev_obj_name:
+ id_ = prev_obj_name.get("id")
+ id_ = id_ or prev_obj_name.get("profileId")
+ if id_:
+ self.new_object.update(dict(profileid=id_))
+ result = self.meraki.exec_meraki(
+ family="wireless",
+ function="deleteNetworkWirelessEthernetPortsProfile",
+ params=self.delete_by_id_params(),
+ )
+ return result
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(self._task.args)
+ obj = NetworksWirelessEthernetPortsProfiles(self._task.args, meraki)
+
+ state = self._task.args.get("state")
+
+ response = None
+ if state == "present":
+ (obj_exists, prev_obj) = obj.exists()
+ if obj_exists:
+ if obj.requires_update(prev_obj):
+ response = obj.update()
+ meraki.object_updated()
+ else:
+ response = prev_obj
+ meraki.object_already_present()
+ else:
+ meraki.fail_json(
+ "Object does not exists, plugin only has update")
+ elif state == "absent":
+ (obj_exists, prev_obj) = obj.exists()
+ if obj_exists:
+ response = obj.delete()
+ meraki.object_deleted()
+ else:
+ meraki.object_already_absent()
+
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ethernet_ports_profiles_assign.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ethernet_ports_profiles_assign.py
new file mode 100644
index 000000000..8e594fcae
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ethernet_ports_profiles_assign.py
@@ -0,0 +1,91 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguements specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ profileId=dict(type="str"),
+ serials=dict(type="list"),
+ networkId=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_object(self, params):
+ new_object = dict(
+ profileId=params.get("profileId"),
+ serials=params.get("serials"),
+ networkId=params.get("networkId"),
+ )
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="wireless",
+ function='assignNetworkWirelessEthernetPortsProfiles',
+ op_modifies=True,
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ethernet_ports_profiles_info.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ethernet_ports_profiles_info.py
new file mode 100644
index 000000000..1bf4c8dee
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ethernet_ports_profiles_info.py
@@ -0,0 +1,102 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ networkId=dict(type="str"),
+ profileId=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_object(self, params):
+ new_object = {}
+ if params.get("networkId") is not None:
+ new_object["networkId"] = params.get(
+ "networkId")
+ if params.get("profileId") is not None:
+ new_object["profileId"] = params.get(
+ "profileId")
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ id = self._task.args.get("profileId")
+ if id:
+ response = meraki.exec_meraki(
+ family="wireless",
+ function='getNetworkWirelessEthernetPortsProfile',
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
+ if not id:
+ # NOTE: Does not have a get all method or it is in another action
+ response = None
+ meraki.object_modify_result(changed=False, result="Module does not have get all, check arguments of module")
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ethernet_ports_profiles_set_default.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ethernet_ports_profiles_set_default.py
new file mode 100644
index 000000000..1cccd7aa1
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ethernet_ports_profiles_set_default.py
@@ -0,0 +1,89 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguements specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ profileId=dict(type="str"),
+ networkId=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_object(self, params):
+ new_object = dict(
+ profileId=params.get("profileId"),
+ networkId=params.get("networkId"),
+ )
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="wireless",
+ function='setNetworkWirelessEthernetPortsProfilesDefault',
+ op_modifies=True,
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_rf_profiles.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_rf_profiles.py
index ad3f0d8ec..c4d650c4d 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_rf_profiles.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_rf_profiles.py
@@ -32,16 +32,17 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- name=dict(type="str"),
- clientBalancingEnabled=dict(type="bool"),
- minBitrateType=dict(type="str"),
- bandSelectionType=dict(type="str"),
apBandSettings=dict(type="dict"),
- twoFourGhzSettings=dict(type="dict"),
+ bandSelectionType=dict(type="str"),
+ clientBalancingEnabled=dict(type="bool"),
fiveGhzSettings=dict(type="dict"),
+ flexRadios=dict(type="dict"),
+ minBitrateType=dict(type="str"),
+ name=dict(type="str"),
+ perSsidSettings=dict(type="dict"),
sixGhzSettings=dict(type="dict"),
transmission=dict(type="dict"),
- perSsidSettings=dict(type="dict"),
+ twoFourGhzSettings=dict(type="dict"),
networkId=dict(type="str"),
rfProfileId=dict(type="str"),
))
@@ -59,16 +60,17 @@ class NetworksWirelessRfProfiles(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
- clientBalancingEnabled=params.get("clientBalancingEnabled"),
- minBitrateType=params.get("minBitrateType"),
- bandSelectionType=params.get("bandSelectionType"),
apBandSettings=params.get("apBandSettings"),
- twoFourGhzSettings=params.get("twoFourGhzSettings"),
+ bandSelectionType=params.get("bandSelectionType"),
+ clientBalancingEnabled=params.get("clientBalancingEnabled"),
fiveGhzSettings=params.get("fiveGhzSettings"),
+ flexRadios=params.get("flexRadios"),
+ minBitrateType=params.get("minBitrateType"),
+ name=params.get("name"),
+ perSsidSettings=params.get("perSsidSettings"),
sixGhzSettings=params.get("sixGhzSettings"),
transmission=params.get("transmission"),
- perSsidSettings=params.get("perSsidSettings"),
+ twoFourGhzSettings=params.get("twoFourGhzSettings"),
networkId=params.get("networkId"),
rfProfileId=params.get("rfProfileId"),
)
@@ -95,35 +97,38 @@ class NetworksWirelessRfProfiles(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('clientBalancingEnabled') is not None or self.new_object.get('client_balancing_enabled') is not None:
- new_object_params['clientBalancingEnabled'] = self.new_object.get('clientBalancingEnabled')
- if self.new_object.get('minBitrateType') is not None or self.new_object.get('min_bitrate_type') is not None:
- new_object_params['minBitrateType'] = self.new_object.get('minBitrateType') or \
- self.new_object.get('min_bitrate_type')
- if self.new_object.get('bandSelectionType') is not None or self.new_object.get('band_selection_type') is not None:
- new_object_params['bandSelectionType'] = self.new_object.get('bandSelectionType') or \
- self.new_object.get('band_selection_type')
if self.new_object.get('apBandSettings') is not None or self.new_object.get('ap_band_settings') is not None:
new_object_params['apBandSettings'] = self.new_object.get('apBandSettings') or \
self.new_object.get('ap_band_settings')
- if self.new_object.get('twoFourGhzSettings') is not None or self.new_object.get('two_four_ghz_settings') is not None:
- new_object_params['twoFourGhzSettings'] = self.new_object.get('twoFourGhzSettings') or \
- self.new_object.get('two_four_ghz_settings')
+ if self.new_object.get('bandSelectionType') is not None or self.new_object.get('band_selection_type') is not None:
+ new_object_params['bandSelectionType'] = self.new_object.get('bandSelectionType') or \
+ self.new_object.get('band_selection_type')
+ if self.new_object.get('clientBalancingEnabled') is not None or self.new_object.get('client_balancing_enabled') is not None:
+ new_object_params['clientBalancingEnabled'] = self.new_object.get('clientBalancingEnabled')
if self.new_object.get('fiveGhzSettings') is not None or self.new_object.get('five_ghz_settings') is not None:
new_object_params['fiveGhzSettings'] = self.new_object.get('fiveGhzSettings') or \
self.new_object.get('five_ghz_settings')
+ if self.new_object.get('flexRadios') is not None or self.new_object.get('flex_radios') is not None:
+ new_object_params['flexRadios'] = self.new_object.get('flexRadios') or \
+ self.new_object.get('flex_radios')
+ if self.new_object.get('minBitrateType') is not None or self.new_object.get('min_bitrate_type') is not None:
+ new_object_params['minBitrateType'] = self.new_object.get('minBitrateType') or \
+ self.new_object.get('min_bitrate_type')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('perSsidSettings') is not None or self.new_object.get('per_ssid_settings') is not None:
+ new_object_params['perSsidSettings'] = self.new_object.get('perSsidSettings') or \
+ self.new_object.get('per_ssid_settings')
if self.new_object.get('sixGhzSettings') is not None or self.new_object.get('six_ghz_settings') is not None:
new_object_params['sixGhzSettings'] = self.new_object.get('sixGhzSettings') or \
self.new_object.get('six_ghz_settings')
if self.new_object.get('transmission') is not None or self.new_object.get('transmission') is not None:
new_object_params['transmission'] = self.new_object.get('transmission') or \
self.new_object.get('transmission')
- if self.new_object.get('perSsidSettings') is not None or self.new_object.get('per_ssid_settings') is not None:
- new_object_params['perSsidSettings'] = self.new_object.get('perSsidSettings') or \
- self.new_object.get('per_ssid_settings')
+ if self.new_object.get('twoFourGhzSettings') is not None or self.new_object.get('two_four_ghz_settings') is not None:
+ new_object_params['twoFourGhzSettings'] = self.new_object.get('twoFourGhzSettings') or \
+ self.new_object.get('two_four_ghz_settings')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -141,35 +146,38 @@ class NetworksWirelessRfProfiles(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('clientBalancingEnabled') is not None or self.new_object.get('client_balancing_enabled') is not None:
- new_object_params['clientBalancingEnabled'] = self.new_object.get('clientBalancingEnabled')
- if self.new_object.get('minBitrateType') is not None or self.new_object.get('min_bitrate_type') is not None:
- new_object_params['minBitrateType'] = self.new_object.get('minBitrateType') or \
- self.new_object.get('min_bitrate_type')
- if self.new_object.get('bandSelectionType') is not None or self.new_object.get('band_selection_type') is not None:
- new_object_params['bandSelectionType'] = self.new_object.get('bandSelectionType') or \
- self.new_object.get('band_selection_type')
if self.new_object.get('apBandSettings') is not None or self.new_object.get('ap_band_settings') is not None:
new_object_params['apBandSettings'] = self.new_object.get('apBandSettings') or \
self.new_object.get('ap_band_settings')
- if self.new_object.get('twoFourGhzSettings') is not None or self.new_object.get('two_four_ghz_settings') is not None:
- new_object_params['twoFourGhzSettings'] = self.new_object.get('twoFourGhzSettings') or \
- self.new_object.get('two_four_ghz_settings')
+ if self.new_object.get('bandSelectionType') is not None or self.new_object.get('band_selection_type') is not None:
+ new_object_params['bandSelectionType'] = self.new_object.get('bandSelectionType') or \
+ self.new_object.get('band_selection_type')
+ if self.new_object.get('clientBalancingEnabled') is not None or self.new_object.get('client_balancing_enabled') is not None:
+ new_object_params['clientBalancingEnabled'] = self.new_object.get('clientBalancingEnabled')
if self.new_object.get('fiveGhzSettings') is not None or self.new_object.get('five_ghz_settings') is not None:
new_object_params['fiveGhzSettings'] = self.new_object.get('fiveGhzSettings') or \
self.new_object.get('five_ghz_settings')
+ if self.new_object.get('flexRadios') is not None or self.new_object.get('flex_radios') is not None:
+ new_object_params['flexRadios'] = self.new_object.get('flexRadios') or \
+ self.new_object.get('flex_radios')
+ if self.new_object.get('minBitrateType') is not None or self.new_object.get('min_bitrate_type') is not None:
+ new_object_params['minBitrateType'] = self.new_object.get('minBitrateType') or \
+ self.new_object.get('min_bitrate_type')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('perSsidSettings') is not None or self.new_object.get('per_ssid_settings') is not None:
+ new_object_params['perSsidSettings'] = self.new_object.get('perSsidSettings') or \
+ self.new_object.get('per_ssid_settings')
if self.new_object.get('sixGhzSettings') is not None or self.new_object.get('six_ghz_settings') is not None:
new_object_params['sixGhzSettings'] = self.new_object.get('sixGhzSettings') or \
self.new_object.get('six_ghz_settings')
if self.new_object.get('transmission') is not None or self.new_object.get('transmission') is not None:
new_object_params['transmission'] = self.new_object.get('transmission') or \
self.new_object.get('transmission')
- if self.new_object.get('perSsidSettings') is not None or self.new_object.get('per_ssid_settings') is not None:
- new_object_params['perSsidSettings'] = self.new_object.get('perSsidSettings') or \
- self.new_object.get('per_ssid_settings')
+ if self.new_object.get('twoFourGhzSettings') is not None or self.new_object.get('two_four_ghz_settings') is not None:
+ new_object_params['twoFourGhzSettings'] = self.new_object.get('twoFourGhzSettings') or \
+ self.new_object.get('two_four_ghz_settings')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -247,16 +255,17 @@ class NetworksWirelessRfProfiles(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
- ("clientBalancingEnabled", "clientBalancingEnabled"),
- ("minBitrateType", "minBitrateType"),
- ("bandSelectionType", "bandSelectionType"),
("apBandSettings", "apBandSettings"),
- ("twoFourGhzSettings", "twoFourGhzSettings"),
+ ("bandSelectionType", "bandSelectionType"),
+ ("clientBalancingEnabled", "clientBalancingEnabled"),
("fiveGhzSettings", "fiveGhzSettings"),
+ ("flexRadios", "flexRadios"),
+ ("minBitrateType", "minBitrateType"),
+ ("name", "name"),
+ ("perSsidSettings", "perSsidSettings"),
("sixGhzSettings", "sixGhzSettings"),
("transmission", "transmission"),
- ("perSsidSettings", "perSsidSettings"),
+ ("twoFourGhzSettings", "twoFourGhzSettings"),
("networkId", "networkId"),
("rfProfileId", "rfProfileId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_settings.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_settings.py
index 2a7543475..4fecff005 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_settings.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_settings.py
@@ -32,11 +32,12 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- meshingEnabled=dict(type="bool"),
ipv6BridgeEnabled=dict(type="bool"),
+ ledLightsOn=dict(type="bool"),
locationAnalyticsEnabled=dict(type="bool"),
+ meshingEnabled=dict(type="bool"),
+ namedVlans=dict(type="dict"),
upgradeStrategy=dict(type="str"),
- ledLightsOn=dict(type="bool"),
networkId=dict(type="str"),
))
@@ -52,11 +53,12 @@ class NetworksWirelessSettings(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- meshingEnabled=params.get("meshingEnabled"),
ipv6BridgeEnabled=params.get("ipv6BridgeEnabled"),
+ ledLightsOn=params.get("ledLightsOn"),
locationAnalyticsEnabled=params.get("locationAnalyticsEnabled"),
+ meshingEnabled=params.get("meshingEnabled"),
+ namedVlans=params.get("namedVlans"),
upgradeStrategy=params.get("upgradeStrategy"),
- ledLightsOn=params.get("ledLightsOn"),
network_id=params.get("networkId"),
)
@@ -69,17 +71,20 @@ class NetworksWirelessSettings(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('meshingEnabled') is not None or self.new_object.get('meshing_enabled') is not None:
- new_object_params['meshingEnabled'] = self.new_object.get('meshingEnabled')
if self.new_object.get('ipv6BridgeEnabled') is not None or self.new_object.get('ipv6_bridge_enabled') is not None:
new_object_params['ipv6BridgeEnabled'] = self.new_object.get('ipv6BridgeEnabled')
+ if self.new_object.get('ledLightsOn') is not None or self.new_object.get('led_lights_on') is not None:
+ new_object_params['ledLightsOn'] = self.new_object.get('ledLightsOn')
if self.new_object.get('locationAnalyticsEnabled') is not None or self.new_object.get('location_analytics_enabled') is not None:
new_object_params['locationAnalyticsEnabled'] = self.new_object.get('locationAnalyticsEnabled')
+ if self.new_object.get('meshingEnabled') is not None or self.new_object.get('meshing_enabled') is not None:
+ new_object_params['meshingEnabled'] = self.new_object.get('meshingEnabled')
+ if self.new_object.get('namedVlans') is not None or self.new_object.get('named_vlans') is not None:
+ new_object_params['namedVlans'] = self.new_object.get('namedVlans') or \
+ self.new_object.get('named_vlans')
if self.new_object.get('upgradeStrategy') is not None or self.new_object.get('upgrade_strategy') is not None:
new_object_params['upgradeStrategy'] = self.new_object.get('upgradeStrategy') or \
self.new_object.get('upgrade_strategy')
- if self.new_object.get('ledLightsOn') is not None or self.new_object.get('led_lights_on') is not None:
- new_object_params['ledLightsOn'] = self.new_object.get('ledLightsOn')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -136,11 +141,12 @@ class NetworksWirelessSettings(object):
requested_obj = self.new_object
obj_params = [
- ("meshingEnabled", "meshingEnabled"),
("ipv6BridgeEnabled", "ipv6BridgeEnabled"),
+ ("ledLightsOn", "ledLightsOn"),
("locationAnalyticsEnabled", "locationAnalyticsEnabled"),
+ ("meshingEnabled", "meshingEnabled"),
+ ("namedVlans", "namedVlans"),
("upgradeStrategy", "upgradeStrategy"),
- ("ledLightsOn", "ledLightsOn"),
("networkId", "networkId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids.py
index eb8affa88..24272855d 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids.py
@@ -32,64 +32,65 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- name=dict(type="str"),
- enabled=dict(type="bool"),
+ activeDirectory=dict(type="dict"),
+ adultContentFilteringEnabled=dict(type="bool"),
+ apTagsAndVlanIds=dict(type="list"),
authMode=dict(type="str"),
- enterpriseAdminAccess=dict(type="str"),
- encryptionMode=dict(type="str"),
- psk=dict(type="str"),
- wpaEncryptionMode=dict(type="str"),
- dot11w=dict(type="dict"),
+ availabilityTags=dict(type="list"),
+ availableOnAllAps=dict(type="bool"),
+ bandSelection=dict(type="str"),
+ concentratorNetworkId=dict(type="str"),
+ defaultVlanId=dict(type="int"),
+ disassociateClientsOnVpnFailover=dict(type="bool"),
+ dnsRewrite=dict(type="dict"),
dot11r=dict(type="dict"),
- splashPage=dict(type="str"),
- splashGuestSponsorDomains=dict(type="list"),
- oauth=dict(type="dict"),
- localRadius=dict(type="dict"),
+ dot11w=dict(type="dict"),
+ enabled=dict(type="bool"),
+ encryptionMode=dict(type="str"),
+ enterpriseAdminAccess=dict(type="str"),
+ gre=dict(type="dict"),
+ ipAssignmentMode=dict(type="str"),
+ lanIsolationEnabled=dict(type="bool"),
ldap=dict(type="dict"),
- activeDirectory=dict(type="dict"),
- radiusServers=dict(type="list"),
- radiusProxyEnabled=dict(type="bool"),
- radiusTestingEnabled=dict(type="bool"),
- radiusCalledStationId=dict(type="str"),
+ localRadius=dict(type="dict"),
+ mandatoryDhcpEnabled=dict(type="bool"),
+ minBitrate=dict(type="float"),
+ name=dict(type="str"),
+ namedVlans=dict(type="dict"),
+ oauth=dict(type="dict"),
+ perClientBandwidthLimitDown=dict(type="int"),
+ perClientBandwidthLimitUp=dict(type="int"),
+ perSsidBandwidthLimitDown=dict(type="int"),
+ perSsidBandwidthLimitUp=dict(type="int"),
+ psk=dict(type="str"),
+ radiusAccountingEnabled=dict(type="bool"),
+ radiusAccountingInterimInterval=dict(type="int"),
+ radiusAccountingServers=dict(type="list"),
+ radiusAttributeForGroupPolicies=dict(type="str"),
radiusAuthenticationNasId=dict(type="str"),
- radiusServerTimeout=dict(type="int"),
- radiusServerAttemptsLimit=dict(type="int"),
- radiusFallbackEnabled=dict(type="bool"),
+ radiusCalledStationId=dict(type="str"),
radiusCoaEnabled=dict(type="bool"),
radiusFailoverPolicy=dict(type="str"),
+ radiusFallbackEnabled=dict(type="bool"),
+ radiusGuestVlanEnabled=dict(type="bool"),
+ radiusGuestVlanId=dict(type="int"),
radiusLoadBalancingPolicy=dict(type="str"),
- radiusAccountingEnabled=dict(type="bool"),
- radiusAccountingServers=dict(type="list"),
- radiusAccountingInterimInterval=dict(type="int"),
- radiusAttributeForGroupPolicies=dict(type="str"),
- ipAssignmentMode=dict(type="str"),
- useVlanTagging=dict(type="bool"),
- concentratorNetworkId=dict(type="str"),
+ radiusOverride=dict(type="bool"),
+ radiusProxyEnabled=dict(type="bool"),
+ radiusServerAttemptsLimit=dict(type="int"),
+ radiusServerTimeout=dict(type="int"),
+ radiusServers=dict(type="list"),
+ radiusTestingEnabled=dict(type="bool"),
secondaryConcentratorNetworkId=dict(type="str"),
- disassociateClientsOnVpnFailover=dict(type="bool"),
+ speedBurst=dict(type="dict"),
+ splashGuestSponsorDomains=dict(type="list"),
+ splashPage=dict(type="str"),
+ useVlanTagging=dict(type="bool"),
+ visible=dict(type="bool"),
vlanId=dict(type="int"),
- defaultVlanId=dict(type="int"),
- apTagsAndVlanIds=dict(type="list"),
walledGardenEnabled=dict(type="bool"),
walledGardenRanges=dict(type="list"),
- gre=dict(type="dict"),
- radiusOverride=dict(type="bool"),
- radiusGuestVlanEnabled=dict(type="bool"),
- radiusGuestVlanId=dict(type="int"),
- minBitrate=dict(type="float"),
- bandSelection=dict(type="str"),
- perClientBandwidthLimitUp=dict(type="int"),
- perClientBandwidthLimitDown=dict(type="int"),
- perSsidBandwidthLimitUp=dict(type="int"),
- perSsidBandwidthLimitDown=dict(type="int"),
- lanIsolationEnabled=dict(type="bool"),
- visible=dict(type="bool"),
- availableOnAllAps=dict(type="bool"),
- availabilityTags=dict(type="list"),
- mandatoryDhcpEnabled=dict(type="bool"),
- adultContentFilteringEnabled=dict(type="bool"),
- dnsRewrite=dict(type="dict"),
- speedBurst=dict(type="dict"),
+ wpaEncryptionMode=dict(type="str"),
networkId=dict(type="str"),
number=dict(type="str"),
))
@@ -106,64 +107,65 @@ class NetworksWirelessSsids(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
- enabled=params.get("enabled"),
+ activeDirectory=params.get("activeDirectory"),
+ adultContentFilteringEnabled=params.get("adultContentFilteringEnabled"),
+ apTagsAndVlanIds=params.get("apTagsAndVlanIds"),
authMode=params.get("authMode"),
- enterpriseAdminAccess=params.get("enterpriseAdminAccess"),
- encryptionMode=params.get("encryptionMode"),
- psk=params.get("psk"),
- wpaEncryptionMode=params.get("wpaEncryptionMode"),
- dot11w=params.get("dot11w"),
+ availabilityTags=params.get("availabilityTags"),
+ availableOnAllAps=params.get("availableOnAllAps"),
+ bandSelection=params.get("bandSelection"),
+ concentratorNetworkId=params.get("concentratorNetworkId"),
+ defaultVlanId=params.get("defaultVlanId"),
+ disassociateClientsOnVpnFailover=params.get("disassociateClientsOnVpnFailover"),
+ dnsRewrite=params.get("dnsRewrite"),
dot11r=params.get("dot11r"),
- splashPage=params.get("splashPage"),
- splashGuestSponsorDomains=params.get("splashGuestSponsorDomains"),
- oauth=params.get("oauth"),
- localRadius=params.get("localRadius"),
+ dot11w=params.get("dot11w"),
+ enabled=params.get("enabled"),
+ encryptionMode=params.get("encryptionMode"),
+ enterpriseAdminAccess=params.get("enterpriseAdminAccess"),
+ gre=params.get("gre"),
+ ipAssignmentMode=params.get("ipAssignmentMode"),
+ lanIsolationEnabled=params.get("lanIsolationEnabled"),
ldap=params.get("ldap"),
- activeDirectory=params.get("activeDirectory"),
- radiusServers=params.get("radiusServers"),
- radiusProxyEnabled=params.get("radiusProxyEnabled"),
- radiusTestingEnabled=params.get("radiusTestingEnabled"),
- radiusCalledStationId=params.get("radiusCalledStationId"),
+ localRadius=params.get("localRadius"),
+ mandatoryDhcpEnabled=params.get("mandatoryDhcpEnabled"),
+ minBitrate=params.get("minBitrate"),
+ name=params.get("name"),
+ namedVlans=params.get("namedVlans"),
+ oauth=params.get("oauth"),
+ perClientBandwidthLimitDown=params.get("perClientBandwidthLimitDown"),
+ perClientBandwidthLimitUp=params.get("perClientBandwidthLimitUp"),
+ perSsidBandwidthLimitDown=params.get("perSsidBandwidthLimitDown"),
+ perSsidBandwidthLimitUp=params.get("perSsidBandwidthLimitUp"),
+ psk=params.get("psk"),
+ radiusAccountingEnabled=params.get("radiusAccountingEnabled"),
+ radiusAccountingInterimInterval=params.get("radiusAccountingInterimInterval"),
+ radiusAccountingServers=params.get("radiusAccountingServers"),
+ radiusAttributeForGroupPolicies=params.get("radiusAttributeForGroupPolicies"),
radiusAuthenticationNasId=params.get("radiusAuthenticationNasId"),
- radiusServerTimeout=params.get("radiusServerTimeout"),
- radiusServerAttemptsLimit=params.get("radiusServerAttemptsLimit"),
- radiusFallbackEnabled=params.get("radiusFallbackEnabled"),
+ radiusCalledStationId=params.get("radiusCalledStationId"),
radiusCoaEnabled=params.get("radiusCoaEnabled"),
radiusFailoverPolicy=params.get("radiusFailoverPolicy"),
+ radiusFallbackEnabled=params.get("radiusFallbackEnabled"),
+ radiusGuestVlanEnabled=params.get("radiusGuestVlanEnabled"),
+ radiusGuestVlanId=params.get("radiusGuestVlanId"),
radiusLoadBalancingPolicy=params.get("radiusLoadBalancingPolicy"),
- radiusAccountingEnabled=params.get("radiusAccountingEnabled"),
- radiusAccountingServers=params.get("radiusAccountingServers"),
- radiusAccountingInterimInterval=params.get("radiusAccountingInterimInterval"),
- radiusAttributeForGroupPolicies=params.get("radiusAttributeForGroupPolicies"),
- ipAssignmentMode=params.get("ipAssignmentMode"),
- useVlanTagging=params.get("useVlanTagging"),
- concentratorNetworkId=params.get("concentratorNetworkId"),
+ radiusOverride=params.get("radiusOverride"),
+ radiusProxyEnabled=params.get("radiusProxyEnabled"),
+ radiusServerAttemptsLimit=params.get("radiusServerAttemptsLimit"),
+ radiusServerTimeout=params.get("radiusServerTimeout"),
+ radiusServers=params.get("radiusServers"),
+ radiusTestingEnabled=params.get("radiusTestingEnabled"),
secondaryConcentratorNetworkId=params.get("secondaryConcentratorNetworkId"),
- disassociateClientsOnVpnFailover=params.get("disassociateClientsOnVpnFailover"),
+ speedBurst=params.get("speedBurst"),
+ splashGuestSponsorDomains=params.get("splashGuestSponsorDomains"),
+ splashPage=params.get("splashPage"),
+ useVlanTagging=params.get("useVlanTagging"),
+ visible=params.get("visible"),
vlanId=params.get("vlanId"),
- defaultVlanId=params.get("defaultVlanId"),
- apTagsAndVlanIds=params.get("apTagsAndVlanIds"),
walledGardenEnabled=params.get("walledGardenEnabled"),
walledGardenRanges=params.get("walledGardenRanges"),
- gre=params.get("gre"),
- radiusOverride=params.get("radiusOverride"),
- radiusGuestVlanEnabled=params.get("radiusGuestVlanEnabled"),
- radiusGuestVlanId=params.get("radiusGuestVlanId"),
- minBitrate=params.get("minBitrate"),
- bandSelection=params.get("bandSelection"),
- perClientBandwidthLimitUp=params.get("perClientBandwidthLimitUp"),
- perClientBandwidthLimitDown=params.get("perClientBandwidthLimitDown"),
- perSsidBandwidthLimitUp=params.get("perSsidBandwidthLimitUp"),
- perSsidBandwidthLimitDown=params.get("perSsidBandwidthLimitDown"),
- lanIsolationEnabled=params.get("lanIsolationEnabled"),
- visible=params.get("visible"),
- availableOnAllAps=params.get("availableOnAllAps"),
- availabilityTags=params.get("availabilityTags"),
- mandatoryDhcpEnabled=params.get("mandatoryDhcpEnabled"),
- adultContentFilteringEnabled=params.get("adultContentFilteringEnabled"),
- dnsRewrite=params.get("dnsRewrite"),
- speedBurst=params.get("speedBurst"),
+ wpaEncryptionMode=params.get("wpaEncryptionMode"),
network_id=params.get("networkId"),
number=params.get("number"),
)
@@ -186,164 +188,167 @@ class NetworksWirelessSsids(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
- new_object_params['enabled'] = self.new_object.get('enabled')
+ if self.new_object.get('activeDirectory') is not None or self.new_object.get('active_directory') is not None:
+ new_object_params['activeDirectory'] = self.new_object.get('activeDirectory') or \
+ self.new_object.get('active_directory')
+ if self.new_object.get('adultContentFilteringEnabled') is not None or self.new_object.get('adult_content_filtering_enabled') is not None:
+ new_object_params['adultContentFilteringEnabled'] = self.new_object.get('adultContentFilteringEnabled')
+ if self.new_object.get('apTagsAndVlanIds') is not None or self.new_object.get('ap_tags_and_vlan_ids') is not None:
+ new_object_params['apTagsAndVlanIds'] = self.new_object.get('apTagsAndVlanIds') or \
+ self.new_object.get('ap_tags_and_vlan_ids')
if self.new_object.get('authMode') is not None or self.new_object.get('auth_mode') is not None:
new_object_params['authMode'] = self.new_object.get('authMode') or \
self.new_object.get('auth_mode')
- if self.new_object.get('enterpriseAdminAccess') is not None or self.new_object.get('enterprise_admin_access') is not None:
- new_object_params['enterpriseAdminAccess'] = self.new_object.get('enterpriseAdminAccess') or \
- self.new_object.get('enterprise_admin_access')
- if self.new_object.get('encryptionMode') is not None or self.new_object.get('encryption_mode') is not None:
- new_object_params['encryptionMode'] = self.new_object.get('encryptionMode') or \
- self.new_object.get('encryption_mode')
- if self.new_object.get('psk') is not None or self.new_object.get('psk') is not None:
- new_object_params['psk'] = self.new_object.get('psk') or \
- self.new_object.get('psk')
- if self.new_object.get('wpaEncryptionMode') is not None or self.new_object.get('wpa_encryption_mode') is not None:
- new_object_params['wpaEncryptionMode'] = self.new_object.get('wpaEncryptionMode') or \
- self.new_object.get('wpa_encryption_mode')
- if self.new_object.get('dot11w') is not None or self.new_object.get('dot11w') is not None:
- new_object_params['dot11w'] = self.new_object.get('dot11w') or \
- self.new_object.get('dot11w')
+ if self.new_object.get('availabilityTags') is not None or self.new_object.get('availability_tags') is not None:
+ new_object_params['availabilityTags'] = self.new_object.get('availabilityTags') or \
+ self.new_object.get('availability_tags')
+ if self.new_object.get('availableOnAllAps') is not None or self.new_object.get('available_on_all_aps') is not None:
+ new_object_params['availableOnAllAps'] = self.new_object.get('availableOnAllAps')
+ if self.new_object.get('bandSelection') is not None or self.new_object.get('band_selection') is not None:
+ new_object_params['bandSelection'] = self.new_object.get('bandSelection') or \
+ self.new_object.get('band_selection')
+ if self.new_object.get('concentratorNetworkId') is not None or self.new_object.get('concentrator_network_id') is not None:
+ new_object_params['concentratorNetworkId'] = self.new_object.get('concentratorNetworkId') or \
+ self.new_object.get('concentrator_network_id')
+ if self.new_object.get('defaultVlanId') is not None or self.new_object.get('default_vlan_id') is not None:
+ new_object_params['defaultVlanId'] = self.new_object.get('defaultVlanId') or \
+ self.new_object.get('default_vlan_id')
+ if self.new_object.get('disassociateClientsOnVpnFailover') is not None or self.new_object.get('disassociate_clients_on_vpn_failover') is not None:
+ new_object_params['disassociateClientsOnVpnFailover'] = self.new_object.get('disassociateClientsOnVpnFailover')
+ if self.new_object.get('dnsRewrite') is not None or self.new_object.get('dns_rewrite') is not None:
+ new_object_params['dnsRewrite'] = self.new_object.get('dnsRewrite') or \
+ self.new_object.get('dns_rewrite')
if self.new_object.get('dot11r') is not None or self.new_object.get('dot11r') is not None:
new_object_params['dot11r'] = self.new_object.get('dot11r') or \
self.new_object.get('dot11r')
- if self.new_object.get('splashPage') is not None or self.new_object.get('splash_page') is not None:
- new_object_params['splashPage'] = self.new_object.get('splashPage') or \
- self.new_object.get('splash_page')
- if self.new_object.get('splashGuestSponsorDomains') is not None or self.new_object.get('splash_guest_sponsor_domains') is not None:
- new_object_params['splashGuestSponsorDomains'] = self.new_object.get('splashGuestSponsorDomains') or \
- self.new_object.get('splash_guest_sponsor_domains')
- if self.new_object.get('oauth') is not None or self.new_object.get('oauth') is not None:
- new_object_params['oauth'] = self.new_object.get('oauth') or \
- self.new_object.get('oauth')
- if self.new_object.get('localRadius') is not None or self.new_object.get('local_radius') is not None:
- new_object_params['localRadius'] = self.new_object.get('localRadius') or \
- self.new_object.get('local_radius')
+ if self.new_object.get('dot11w') is not None or self.new_object.get('dot11w') is not None:
+ new_object_params['dot11w'] = self.new_object.get('dot11w') or \
+ self.new_object.get('dot11w')
+ if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
+ new_object_params['enabled'] = self.new_object.get('enabled')
+ if self.new_object.get('encryptionMode') is not None or self.new_object.get('encryption_mode') is not None:
+ new_object_params['encryptionMode'] = self.new_object.get('encryptionMode') or \
+ self.new_object.get('encryption_mode')
+ if self.new_object.get('enterpriseAdminAccess') is not None or self.new_object.get('enterprise_admin_access') is not None:
+ new_object_params['enterpriseAdminAccess'] = self.new_object.get('enterpriseAdminAccess') or \
+ self.new_object.get('enterprise_admin_access')
+ if self.new_object.get('gre') is not None or self.new_object.get('gre') is not None:
+ new_object_params['gre'] = self.new_object.get('gre') or \
+ self.new_object.get('gre')
+ if self.new_object.get('ipAssignmentMode') is not None or self.new_object.get('ip_assignment_mode') is not None:
+ new_object_params['ipAssignmentMode'] = self.new_object.get('ipAssignmentMode') or \
+ self.new_object.get('ip_assignment_mode')
+ if self.new_object.get('lanIsolationEnabled') is not None or self.new_object.get('lan_isolation_enabled') is not None:
+ new_object_params['lanIsolationEnabled'] = self.new_object.get('lanIsolationEnabled')
if self.new_object.get('ldap') is not None or self.new_object.get('ldap') is not None:
new_object_params['ldap'] = self.new_object.get('ldap') or \
self.new_object.get('ldap')
- if self.new_object.get('activeDirectory') is not None or self.new_object.get('active_directory') is not None:
- new_object_params['activeDirectory'] = self.new_object.get('activeDirectory') or \
- self.new_object.get('active_directory')
- if self.new_object.get('radiusServers') is not None or self.new_object.get('radius_servers') is not None:
- new_object_params['radiusServers'] = self.new_object.get('radiusServers') or \
- self.new_object.get('radius_servers')
- if self.new_object.get('radiusProxyEnabled') is not None or self.new_object.get('radius_proxy_enabled') is not None:
- new_object_params['radiusProxyEnabled'] = self.new_object.get('radiusProxyEnabled')
- if self.new_object.get('radiusTestingEnabled') is not None or self.new_object.get('radius_testing_enabled') is not None:
- new_object_params['radiusTestingEnabled'] = self.new_object.get('radiusTestingEnabled')
- if self.new_object.get('radiusCalledStationId') is not None or self.new_object.get('radius_called_station_id') is not None:
- new_object_params['radiusCalledStationId'] = self.new_object.get('radiusCalledStationId') or \
- self.new_object.get('radius_called_station_id')
+ if self.new_object.get('localRadius') is not None or self.new_object.get('local_radius') is not None:
+ new_object_params['localRadius'] = self.new_object.get('localRadius') or \
+ self.new_object.get('local_radius')
+ if self.new_object.get('mandatoryDhcpEnabled') is not None or self.new_object.get('mandatory_dhcp_enabled') is not None:
+ new_object_params['mandatoryDhcpEnabled'] = self.new_object.get('mandatoryDhcpEnabled')
+ if self.new_object.get('minBitrate') is not None or self.new_object.get('min_bitrate') is not None:
+ new_object_params['minBitrate'] = self.new_object.get('minBitrate') or \
+ self.new_object.get('min_bitrate')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('namedVlans') is not None or self.new_object.get('named_vlans') is not None:
+ new_object_params['namedVlans'] = self.new_object.get('namedVlans') or \
+ self.new_object.get('named_vlans')
+ if self.new_object.get('oauth') is not None or self.new_object.get('oauth') is not None:
+ new_object_params['oauth'] = self.new_object.get('oauth') or \
+ self.new_object.get('oauth')
+ if self.new_object.get('perClientBandwidthLimitDown') is not None or self.new_object.get('per_client_bandwidth_limit_down') is not None:
+ new_object_params['perClientBandwidthLimitDown'] = self.new_object.get('perClientBandwidthLimitDown') or \
+ self.new_object.get('per_client_bandwidth_limit_down')
+ if self.new_object.get('perClientBandwidthLimitUp') is not None or self.new_object.get('per_client_bandwidth_limit_up') is not None:
+ new_object_params['perClientBandwidthLimitUp'] = self.new_object.get('perClientBandwidthLimitUp') or \
+ self.new_object.get('per_client_bandwidth_limit_up')
+ if self.new_object.get('perSsidBandwidthLimitDown') is not None or self.new_object.get('per_ssid_bandwidth_limit_down') is not None:
+ new_object_params['perSsidBandwidthLimitDown'] = self.new_object.get('perSsidBandwidthLimitDown') or \
+ self.new_object.get('per_ssid_bandwidth_limit_down')
+ if self.new_object.get('perSsidBandwidthLimitUp') is not None or self.new_object.get('per_ssid_bandwidth_limit_up') is not None:
+ new_object_params['perSsidBandwidthLimitUp'] = self.new_object.get('perSsidBandwidthLimitUp') or \
+ self.new_object.get('per_ssid_bandwidth_limit_up')
+ if self.new_object.get('psk') is not None or self.new_object.get('psk') is not None:
+ new_object_params['psk'] = self.new_object.get('psk') or \
+ self.new_object.get('psk')
+ if self.new_object.get('radiusAccountingEnabled') is not None or self.new_object.get('radius_accounting_enabled') is not None:
+ new_object_params['radiusAccountingEnabled'] = self.new_object.get('radiusAccountingEnabled')
+ if self.new_object.get('radiusAccountingInterimInterval') is not None or self.new_object.get('radius_accounting_interim_interval') is not None:
+ new_object_params['radiusAccountingInterimInterval'] = self.new_object.get('radiusAccountingInterimInterval') or \
+ self.new_object.get('radius_accounting_interim_interval')
+ if self.new_object.get('radiusAccountingServers') is not None or self.new_object.get('radius_accounting_servers') is not None:
+ new_object_params['radiusAccountingServers'] = self.new_object.get('radiusAccountingServers') or \
+ self.new_object.get('radius_accounting_servers')
+ if self.new_object.get('radiusAttributeForGroupPolicies') is not None or self.new_object.get('radius_attribute_for_group_policies') is not None:
+ new_object_params['radiusAttributeForGroupPolicies'] = self.new_object.get('radiusAttributeForGroupPolicies') or \
+ self.new_object.get('radius_attribute_for_group_policies')
if self.new_object.get('radiusAuthenticationNasId') is not None or self.new_object.get('radius_authentication_nas_id') is not None:
new_object_params['radiusAuthenticationNasId'] = self.new_object.get('radiusAuthenticationNasId') or \
self.new_object.get('radius_authentication_nas_id')
- if self.new_object.get('radiusServerTimeout') is not None or self.new_object.get('radius_server_timeout') is not None:
- new_object_params['radiusServerTimeout'] = self.new_object.get('radiusServerTimeout') or \
- self.new_object.get('radius_server_timeout')
- if self.new_object.get('radiusServerAttemptsLimit') is not None or self.new_object.get('radius_server_attempts_limit') is not None:
- new_object_params['radiusServerAttemptsLimit'] = self.new_object.get('radiusServerAttemptsLimit') or \
- self.new_object.get('radius_server_attempts_limit')
- if self.new_object.get('radiusFallbackEnabled') is not None or self.new_object.get('radius_fallback_enabled') is not None:
- new_object_params['radiusFallbackEnabled'] = self.new_object.get('radiusFallbackEnabled')
+ if self.new_object.get('radiusCalledStationId') is not None or self.new_object.get('radius_called_station_id') is not None:
+ new_object_params['radiusCalledStationId'] = self.new_object.get('radiusCalledStationId') or \
+ self.new_object.get('radius_called_station_id')
if self.new_object.get('radiusCoaEnabled') is not None or self.new_object.get('radius_coa_enabled') is not None:
new_object_params['radiusCoaEnabled'] = self.new_object.get('radiusCoaEnabled')
if self.new_object.get('radiusFailoverPolicy') is not None or self.new_object.get('radius_failover_policy') is not None:
new_object_params['radiusFailoverPolicy'] = self.new_object.get('radiusFailoverPolicy') or \
self.new_object.get('radius_failover_policy')
+ if self.new_object.get('radiusFallbackEnabled') is not None or self.new_object.get('radius_fallback_enabled') is not None:
+ new_object_params['radiusFallbackEnabled'] = self.new_object.get('radiusFallbackEnabled')
+ if self.new_object.get('radiusGuestVlanEnabled') is not None or self.new_object.get('radius_guest_vlan_enabled') is not None:
+ new_object_params['radiusGuestVlanEnabled'] = self.new_object.get('radiusGuestVlanEnabled')
+ if self.new_object.get('radiusGuestVlanId') is not None or self.new_object.get('radius_guest_vlan_id') is not None:
+ new_object_params['radiusGuestVlanId'] = self.new_object.get('radiusGuestVlanId') or \
+ self.new_object.get('radius_guest_vlan_id')
if self.new_object.get('radiusLoadBalancingPolicy') is not None or self.new_object.get('radius_load_balancing_policy') is not None:
new_object_params['radiusLoadBalancingPolicy'] = self.new_object.get('radiusLoadBalancingPolicy') or \
self.new_object.get('radius_load_balancing_policy')
- if self.new_object.get('radiusAccountingEnabled') is not None or self.new_object.get('radius_accounting_enabled') is not None:
- new_object_params['radiusAccountingEnabled'] = self.new_object.get('radiusAccountingEnabled')
- if self.new_object.get('radiusAccountingServers') is not None or self.new_object.get('radius_accounting_servers') is not None:
- new_object_params['radiusAccountingServers'] = self.new_object.get('radiusAccountingServers') or \
- self.new_object.get('radius_accounting_servers')
- if self.new_object.get('radiusAccountingInterimInterval') is not None or self.new_object.get('radius_accounting_interim_interval') is not None:
- new_object_params['radiusAccountingInterimInterval'] = self.new_object.get('radiusAccountingInterimInterval') or \
- self.new_object.get('radius_accounting_interim_interval')
- if self.new_object.get('radiusAttributeForGroupPolicies') is not None or self.new_object.get('radius_attribute_for_group_policies') is not None:
- new_object_params['radiusAttributeForGroupPolicies'] = self.new_object.get('radiusAttributeForGroupPolicies') or \
- self.new_object.get('radius_attribute_for_group_policies')
- if self.new_object.get('ipAssignmentMode') is not None or self.new_object.get('ip_assignment_mode') is not None:
- new_object_params['ipAssignmentMode'] = self.new_object.get('ipAssignmentMode') or \
- self.new_object.get('ip_assignment_mode')
- if self.new_object.get('useVlanTagging') is not None or self.new_object.get('use_vlan_tagging') is not None:
- new_object_params['useVlanTagging'] = self.new_object.get('useVlanTagging')
- if self.new_object.get('concentratorNetworkId') is not None or self.new_object.get('concentrator_network_id') is not None:
- new_object_params['concentratorNetworkId'] = self.new_object.get('concentratorNetworkId') or \
- self.new_object.get('concentrator_network_id')
+ if self.new_object.get('radiusOverride') is not None or self.new_object.get('radius_override') is not None:
+ new_object_params['radiusOverride'] = self.new_object.get('radiusOverride')
+ if self.new_object.get('radiusProxyEnabled') is not None or self.new_object.get('radius_proxy_enabled') is not None:
+ new_object_params['radiusProxyEnabled'] = self.new_object.get('radiusProxyEnabled')
+ if self.new_object.get('radiusServerAttemptsLimit') is not None or self.new_object.get('radius_server_attempts_limit') is not None:
+ new_object_params['radiusServerAttemptsLimit'] = self.new_object.get('radiusServerAttemptsLimit') or \
+ self.new_object.get('radius_server_attempts_limit')
+ if self.new_object.get('radiusServerTimeout') is not None or self.new_object.get('radius_server_timeout') is not None:
+ new_object_params['radiusServerTimeout'] = self.new_object.get('radiusServerTimeout') or \
+ self.new_object.get('radius_server_timeout')
+ if self.new_object.get('radiusServers') is not None or self.new_object.get('radius_servers') is not None:
+ new_object_params['radiusServers'] = self.new_object.get('radiusServers') or \
+ self.new_object.get('radius_servers')
+ if self.new_object.get('radiusTestingEnabled') is not None or self.new_object.get('radius_testing_enabled') is not None:
+ new_object_params['radiusTestingEnabled'] = self.new_object.get('radiusTestingEnabled')
if self.new_object.get('secondaryConcentratorNetworkId') is not None or self.new_object.get('secondary_concentrator_network_id') is not None:
new_object_params['secondaryConcentratorNetworkId'] = self.new_object.get('secondaryConcentratorNetworkId') or \
self.new_object.get('secondary_concentrator_network_id')
- if self.new_object.get('disassociateClientsOnVpnFailover') is not None or self.new_object.get('disassociate_clients_on_vpn_failover') is not None:
- new_object_params['disassociateClientsOnVpnFailover'] = self.new_object.get('disassociateClientsOnVpnFailover')
+ if self.new_object.get('speedBurst') is not None or self.new_object.get('speed_burst') is not None:
+ new_object_params['speedBurst'] = self.new_object.get('speedBurst') or \
+ self.new_object.get('speed_burst')
+ if self.new_object.get('splashGuestSponsorDomains') is not None or self.new_object.get('splash_guest_sponsor_domains') is not None:
+ new_object_params['splashGuestSponsorDomains'] = self.new_object.get('splashGuestSponsorDomains') or \
+ self.new_object.get('splash_guest_sponsor_domains')
+ if self.new_object.get('splashPage') is not None or self.new_object.get('splash_page') is not None:
+ new_object_params['splashPage'] = self.new_object.get('splashPage') or \
+ self.new_object.get('splash_page')
+ if self.new_object.get('useVlanTagging') is not None or self.new_object.get('use_vlan_tagging') is not None:
+ new_object_params['useVlanTagging'] = self.new_object.get('useVlanTagging')
+ if self.new_object.get('visible') is not None or self.new_object.get('visible') is not None:
+ new_object_params['visible'] = self.new_object.get('visible')
if self.new_object.get('vlanId') is not None or self.new_object.get('vlan_id') is not None:
new_object_params['vlanId'] = self.new_object.get('vlanId') or \
self.new_object.get('vlan_id')
- if self.new_object.get('defaultVlanId') is not None or self.new_object.get('default_vlan_id') is not None:
- new_object_params['defaultVlanId'] = self.new_object.get('defaultVlanId') or \
- self.new_object.get('default_vlan_id')
- if self.new_object.get('apTagsAndVlanIds') is not None or self.new_object.get('ap_tags_and_vlan_ids') is not None:
- new_object_params['apTagsAndVlanIds'] = self.new_object.get('apTagsAndVlanIds') or \
- self.new_object.get('ap_tags_and_vlan_ids')
if self.new_object.get('walledGardenEnabled') is not None or self.new_object.get('walled_garden_enabled') is not None:
new_object_params['walledGardenEnabled'] = self.new_object.get('walledGardenEnabled')
if self.new_object.get('walledGardenRanges') is not None or self.new_object.get('walled_garden_ranges') is not None:
new_object_params['walledGardenRanges'] = self.new_object.get('walledGardenRanges') or \
self.new_object.get('walled_garden_ranges')
- if self.new_object.get('gre') is not None or self.new_object.get('gre') is not None:
- new_object_params['gre'] = self.new_object.get('gre') or \
- self.new_object.get('gre')
- if self.new_object.get('radiusOverride') is not None or self.new_object.get('radius_override') is not None:
- new_object_params['radiusOverride'] = self.new_object.get('radiusOverride')
- if self.new_object.get('radiusGuestVlanEnabled') is not None or self.new_object.get('radius_guest_vlan_enabled') is not None:
- new_object_params['radiusGuestVlanEnabled'] = self.new_object.get('radiusGuestVlanEnabled')
- if self.new_object.get('radiusGuestVlanId') is not None or self.new_object.get('radius_guest_vlan_id') is not None:
- new_object_params['radiusGuestVlanId'] = self.new_object.get('radiusGuestVlanId') or \
- self.new_object.get('radius_guest_vlan_id')
- if self.new_object.get('minBitrate') is not None or self.new_object.get('min_bitrate') is not None:
- new_object_params['minBitrate'] = self.new_object.get('minBitrate') or \
- self.new_object.get('min_bitrate')
- if self.new_object.get('bandSelection') is not None or self.new_object.get('band_selection') is not None:
- new_object_params['bandSelection'] = self.new_object.get('bandSelection') or \
- self.new_object.get('band_selection')
- if self.new_object.get('perClientBandwidthLimitUp') is not None or self.new_object.get('per_client_bandwidth_limit_up') is not None:
- new_object_params['perClientBandwidthLimitUp'] = self.new_object.get('perClientBandwidthLimitUp') or \
- self.new_object.get('per_client_bandwidth_limit_up')
- if self.new_object.get('perClientBandwidthLimitDown') is not None or self.new_object.get('per_client_bandwidth_limit_down') is not None:
- new_object_params['perClientBandwidthLimitDown'] = self.new_object.get('perClientBandwidthLimitDown') or \
- self.new_object.get('per_client_bandwidth_limit_down')
- if self.new_object.get('perSsidBandwidthLimitUp') is not None or self.new_object.get('per_ssid_bandwidth_limit_up') is not None:
- new_object_params['perSsidBandwidthLimitUp'] = self.new_object.get('perSsidBandwidthLimitUp') or \
- self.new_object.get('per_ssid_bandwidth_limit_up')
- if self.new_object.get('perSsidBandwidthLimitDown') is not None or self.new_object.get('per_ssid_bandwidth_limit_down') is not None:
- new_object_params['perSsidBandwidthLimitDown'] = self.new_object.get('perSsidBandwidthLimitDown') or \
- self.new_object.get('per_ssid_bandwidth_limit_down')
- if self.new_object.get('lanIsolationEnabled') is not None or self.new_object.get('lan_isolation_enabled') is not None:
- new_object_params['lanIsolationEnabled'] = self.new_object.get('lanIsolationEnabled')
- if self.new_object.get('visible') is not None or self.new_object.get('visible') is not None:
- new_object_params['visible'] = self.new_object.get('visible')
- if self.new_object.get('availableOnAllAps') is not None or self.new_object.get('available_on_all_aps') is not None:
- new_object_params['availableOnAllAps'] = self.new_object.get('availableOnAllAps')
- if self.new_object.get('availabilityTags') is not None or self.new_object.get('availability_tags') is not None:
- new_object_params['availabilityTags'] = self.new_object.get('availabilityTags') or \
- self.new_object.get('availability_tags')
- if self.new_object.get('mandatoryDhcpEnabled') is not None or self.new_object.get('mandatory_dhcp_enabled') is not None:
- new_object_params['mandatoryDhcpEnabled'] = self.new_object.get('mandatoryDhcpEnabled')
- if self.new_object.get('adultContentFilteringEnabled') is not None or self.new_object.get('adult_content_filtering_enabled') is not None:
- new_object_params['adultContentFilteringEnabled'] = self.new_object.get('adultContentFilteringEnabled')
- if self.new_object.get('dnsRewrite') is not None or self.new_object.get('dns_rewrite') is not None:
- new_object_params['dnsRewrite'] = self.new_object.get('dnsRewrite') or \
- self.new_object.get('dns_rewrite')
- if self.new_object.get('speedBurst') is not None or self.new_object.get('speed_burst') is not None:
- new_object_params['speedBurst'] = self.new_object.get('speedBurst') or \
- self.new_object.get('speed_burst')
+ if self.new_object.get('wpaEncryptionMode') is not None or self.new_object.get('wpa_encryption_mode') is not None:
+ new_object_params['wpaEncryptionMode'] = self.new_object.get('wpaEncryptionMode') or \
+ self.new_object.get('wpa_encryption_mode')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -421,64 +426,65 @@ class NetworksWirelessSsids(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
- ("enabled", "enabled"),
+ ("activeDirectory", "activeDirectory"),
+ ("adultContentFilteringEnabled", "adultContentFilteringEnabled"),
+ ("apTagsAndVlanIds", "apTagsAndVlanIds"),
("authMode", "authMode"),
- ("enterpriseAdminAccess", "enterpriseAdminAccess"),
- ("encryptionMode", "encryptionMode"),
- ("psk", "psk"),
- ("wpaEncryptionMode", "wpaEncryptionMode"),
- ("dot11w", "dot11w"),
+ ("availabilityTags", "availabilityTags"),
+ ("availableOnAllAps", "availableOnAllAps"),
+ ("bandSelection", "bandSelection"),
+ ("concentratorNetworkId", "concentratorNetworkId"),
+ ("defaultVlanId", "defaultVlanId"),
+ ("disassociateClientsOnVpnFailover", "disassociateClientsOnVpnFailover"),
+ ("dnsRewrite", "dnsRewrite"),
("dot11r", "dot11r"),
- ("splashPage", "splashPage"),
- ("splashGuestSponsorDomains", "splashGuestSponsorDomains"),
- ("oauth", "oauth"),
- ("localRadius", "localRadius"),
+ ("dot11w", "dot11w"),
+ ("enabled", "enabled"),
+ ("encryptionMode", "encryptionMode"),
+ ("enterpriseAdminAccess", "enterpriseAdminAccess"),
+ ("gre", "gre"),
+ ("ipAssignmentMode", "ipAssignmentMode"),
+ ("lanIsolationEnabled", "lanIsolationEnabled"),
("ldap", "ldap"),
- ("activeDirectory", "activeDirectory"),
- ("radiusServers", "radiusServers"),
- ("radiusProxyEnabled", "radiusProxyEnabled"),
- ("radiusTestingEnabled", "radiusTestingEnabled"),
- ("radiusCalledStationId", "radiusCalledStationId"),
+ ("localRadius", "localRadius"),
+ ("mandatoryDhcpEnabled", "mandatoryDhcpEnabled"),
+ ("minBitrate", "minBitrate"),
+ ("name", "name"),
+ ("namedVlans", "namedVlans"),
+ ("oauth", "oauth"),
+ ("perClientBandwidthLimitDown", "perClientBandwidthLimitDown"),
+ ("perClientBandwidthLimitUp", "perClientBandwidthLimitUp"),
+ ("perSsidBandwidthLimitDown", "perSsidBandwidthLimitDown"),
+ ("perSsidBandwidthLimitUp", "perSsidBandwidthLimitUp"),
+ ("psk", "psk"),
+ ("radiusAccountingEnabled", "radiusAccountingEnabled"),
+ ("radiusAccountingInterimInterval", "radiusAccountingInterimInterval"),
+ ("radiusAccountingServers", "radiusAccountingServers"),
+ ("radiusAttributeForGroupPolicies", "radiusAttributeForGroupPolicies"),
("radiusAuthenticationNasId", "radiusAuthenticationNasId"),
- ("radiusServerTimeout", "radiusServerTimeout"),
- ("radiusServerAttemptsLimit", "radiusServerAttemptsLimit"),
- ("radiusFallbackEnabled", "radiusFallbackEnabled"),
+ ("radiusCalledStationId", "radiusCalledStationId"),
("radiusCoaEnabled", "radiusCoaEnabled"),
("radiusFailoverPolicy", "radiusFailoverPolicy"),
+ ("radiusFallbackEnabled", "radiusFallbackEnabled"),
+ ("radiusGuestVlanEnabled", "radiusGuestVlanEnabled"),
+ ("radiusGuestVlanId", "radiusGuestVlanId"),
("radiusLoadBalancingPolicy", "radiusLoadBalancingPolicy"),
- ("radiusAccountingEnabled", "radiusAccountingEnabled"),
- ("radiusAccountingServers", "radiusAccountingServers"),
- ("radiusAccountingInterimInterval", "radiusAccountingInterimInterval"),
- ("radiusAttributeForGroupPolicies", "radiusAttributeForGroupPolicies"),
- ("ipAssignmentMode", "ipAssignmentMode"),
- ("useVlanTagging", "useVlanTagging"),
- ("concentratorNetworkId", "concentratorNetworkId"),
+ ("radiusOverride", "radiusOverride"),
+ ("radiusProxyEnabled", "radiusProxyEnabled"),
+ ("radiusServerAttemptsLimit", "radiusServerAttemptsLimit"),
+ ("radiusServerTimeout", "radiusServerTimeout"),
+ ("radiusServers", "radiusServers"),
+ ("radiusTestingEnabled", "radiusTestingEnabled"),
("secondaryConcentratorNetworkId", "secondaryConcentratorNetworkId"),
- ("disassociateClientsOnVpnFailover", "disassociateClientsOnVpnFailover"),
+ ("speedBurst", "speedBurst"),
+ ("splashGuestSponsorDomains", "splashGuestSponsorDomains"),
+ ("splashPage", "splashPage"),
+ ("useVlanTagging", "useVlanTagging"),
+ ("visible", "visible"),
("vlanId", "vlanId"),
- ("defaultVlanId", "defaultVlanId"),
- ("apTagsAndVlanIds", "apTagsAndVlanIds"),
("walledGardenEnabled", "walledGardenEnabled"),
("walledGardenRanges", "walledGardenRanges"),
- ("gre", "gre"),
- ("radiusOverride", "radiusOverride"),
- ("radiusGuestVlanEnabled", "radiusGuestVlanEnabled"),
- ("radiusGuestVlanId", "radiusGuestVlanId"),
- ("minBitrate", "minBitrate"),
- ("bandSelection", "bandSelection"),
- ("perClientBandwidthLimitUp", "perClientBandwidthLimitUp"),
- ("perClientBandwidthLimitDown", "perClientBandwidthLimitDown"),
- ("perSsidBandwidthLimitUp", "perSsidBandwidthLimitUp"),
- ("perSsidBandwidthLimitDown", "perSsidBandwidthLimitDown"),
- ("lanIsolationEnabled", "lanIsolationEnabled"),
- ("visible", "visible"),
- ("availableOnAllAps", "availableOnAllAps"),
- ("availabilityTags", "availabilityTags"),
- ("mandatoryDhcpEnabled", "mandatoryDhcpEnabled"),
- ("adultContentFilteringEnabled", "adultContentFilteringEnabled"),
- ("dnsRewrite", "dnsRewrite"),
- ("speedBurst", "speedBurst"),
+ ("wpaEncryptionMode", "wpaEncryptionMode"),
("networkId", "networkId"),
("number", "number"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_bonjour_forwarding.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_bonjour_forwarding.py
index 43f69849a..85a078a39 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_bonjour_forwarding.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_bonjour_forwarding.py
@@ -33,6 +33,7 @@ argument_spec = meraki_argument_spec()
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
enabled=dict(type="bool"),
+ exception=dict(type="dict"),
rules=dict(type="list"),
networkId=dict(type="str"),
number=dict(type="str"),
@@ -51,6 +52,7 @@ class NetworksWirelessSsidsBonjourForwarding(object):
self.meraki = meraki
self.new_object = dict(
enabled=params.get("enabled"),
+ exception=params.get("exception"),
rules=params.get("rules"),
network_id=params.get("networkId"),
number=params.get("number"),
@@ -69,6 +71,9 @@ class NetworksWirelessSsidsBonjourForwarding(object):
new_object_params = {}
if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
new_object_params['enabled'] = self.new_object.get('enabled')
+ if self.new_object.get('exception') is not None or self.new_object.get('exception') is not None:
+ new_object_params['exception'] = self.new_object.get('exception') or \
+ self.new_object.get('exception')
if self.new_object.get('rules') is not None or self.new_object.get('rules') is not None:
new_object_params['rules'] = self.new_object.get('rules') or \
self.new_object.get('rules')
@@ -132,6 +137,7 @@ class NetworksWirelessSsidsBonjourForwarding(object):
obj_params = [
("enabled", "enabled"),
+ ("exception", "exception"),
("rules", "rules"),
("networkId", "networkId"),
("number", "number"),
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_device_type_group_policies.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_device_type_group_policies.py
index 7cc30fd3e..b3890afbe 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_device_type_group_policies.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_device_type_group_policies.py
@@ -32,8 +32,8 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- enabled=dict(type="bool"),
deviceTypePolicies=dict(type="list"),
+ enabled=dict(type="bool"),
networkId=dict(type="str"),
number=dict(type="str"),
))
@@ -50,8 +50,8 @@ class NetworksWirelessSsidsDeviceTypeGroupPolicies(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- enabled=params.get("enabled"),
deviceTypePolicies=params.get("deviceTypePolicies"),
+ enabled=params.get("enabled"),
network_id=params.get("networkId"),
number=params.get("number"),
)
@@ -67,11 +67,11 @@ class NetworksWirelessSsidsDeviceTypeGroupPolicies(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
- new_object_params['enabled'] = self.new_object.get('enabled')
if self.new_object.get('deviceTypePolicies') is not None or self.new_object.get('device_type_policies') is not None:
new_object_params['deviceTypePolicies'] = self.new_object.get('deviceTypePolicies') or \
self.new_object.get('device_type_policies')
+ if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
+ new_object_params['enabled'] = self.new_object.get('enabled')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -131,8 +131,8 @@ class NetworksWirelessSsidsDeviceTypeGroupPolicies(object):
requested_obj = self.new_object
obj_params = [
- ("enabled", "enabled"),
("deviceTypePolicies", "deviceTypePolicies"),
+ ("enabled", "enabled"),
("networkId", "networkId"),
("number", "number"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_eap_override.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_eap_override.py
index d0e924aaa..2d0748958 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_eap_override.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_eap_override.py
@@ -32,10 +32,10 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- timeout=dict(type="int"),
+ eapolKey=dict(type="dict"),
identity=dict(type="dict"),
maxRetries=dict(type="int"),
- eapolKey=dict(type="dict"),
+ timeout=dict(type="int"),
networkId=dict(type="str"),
number=dict(type="str"),
))
@@ -52,10 +52,10 @@ class NetworksWirelessSsidsEapOverride(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- timeout=params.get("timeout"),
+ eapolKey=params.get("eapolKey"),
identity=params.get("identity"),
maxRetries=params.get("maxRetries"),
- eapolKey=params.get("eapolKey"),
+ timeout=params.get("timeout"),
network_id=params.get("networkId"),
number=params.get("number"),
)
@@ -71,18 +71,18 @@ class NetworksWirelessSsidsEapOverride(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('timeout') is not None or self.new_object.get('timeout') is not None:
- new_object_params['timeout'] = self.new_object.get('timeout') or \
- self.new_object.get('timeout')
+ if self.new_object.get('eapolKey') is not None or self.new_object.get('eapol_key') is not None:
+ new_object_params['eapolKey'] = self.new_object.get('eapolKey') or \
+ self.new_object.get('eapol_key')
if self.new_object.get('identity') is not None or self.new_object.get('identity') is not None:
new_object_params['identity'] = self.new_object.get('identity') or \
self.new_object.get('identity')
if self.new_object.get('maxRetries') is not None or self.new_object.get('max_retries') is not None:
new_object_params['maxRetries'] = self.new_object.get('maxRetries') or \
self.new_object.get('max_retries')
- if self.new_object.get('eapolKey') is not None or self.new_object.get('eapol_key') is not None:
- new_object_params['eapolKey'] = self.new_object.get('eapolKey') or \
- self.new_object.get('eapol_key')
+ if self.new_object.get('timeout') is not None or self.new_object.get('timeout') is not None:
+ new_object_params['timeout'] = self.new_object.get('timeout') or \
+ self.new_object.get('timeout')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -142,10 +142,10 @@ class NetworksWirelessSsidsEapOverride(object):
requested_obj = self.new_object
obj_params = [
- ("timeout", "timeout"),
+ ("eapolKey", "eapolKey"),
("identity", "identity"),
("maxRetries", "maxRetries"),
- ("eapolKey", "eapolKey"),
+ ("timeout", "timeout"),
("networkId", "networkId"),
("number", "number"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_firewall_l3_firewall_rules.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_firewall_l3_firewall_rules.py
index 178967038..909fc147c 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_firewall_l3_firewall_rules.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_firewall_l3_firewall_rules.py
@@ -32,8 +32,8 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- rules=dict(type="list"),
allowLanAccess=dict(type="bool"),
+ rules=dict(type="list"),
networkId=dict(type="str"),
number=dict(type="str"),
))
@@ -50,8 +50,8 @@ class NetworksWirelessSsidsFirewallL3FirewallRules(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- rules=params.get("rules"),
allowLanAccess=params.get("allowLanAccess"),
+ rules=params.get("rules"),
network_id=params.get("networkId"),
number=params.get("number"),
)
@@ -67,11 +67,11 @@ class NetworksWirelessSsidsFirewallL3FirewallRules(object):
def update_all_params(self):
new_object_params = {}
+ if self.new_object.get('allowLanAccess') is not None or self.new_object.get('allow_lan_access') is not None:
+ new_object_params['allowLanAccess'] = self.new_object.get('allowLanAccess')
if self.new_object.get('rules') is not None or self.new_object.get('rules') is not None:
new_object_params['rules'] = self.new_object.get('rules') or \
self.new_object.get('rules')
- if self.new_object.get('allowLanAccess') is not None or self.new_object.get('allow_lan_access') is not None:
- new_object_params['allowLanAccess'] = self.new_object.get('allowLanAccess')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -131,8 +131,8 @@ class NetworksWirelessSsidsFirewallL3FirewallRules(object):
requested_obj = self.new_object
obj_params = [
- ("rules", "rules"),
("allowLanAccess", "allowLanAccess"),
+ ("rules", "rules"),
("networkId", "networkId"),
("number", "number"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_hotspot20.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_hotspot20.py
index 553ea6544..8efc94199 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_hotspot20.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_hotspot20.py
@@ -32,14 +32,14 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- enabled=dict(type="bool"),
- operator=dict(type="dict"),
- venue=dict(type="dict"),
- networkAccessType=dict(type="str"),
domains=dict(type="list"),
- roamConsortOis=dict(type="list"),
+ enabled=dict(type="bool"),
mccMncs=dict(type="list"),
naiRealms=dict(type="list"),
+ networkAccessType=dict(type="str"),
+ operator=dict(type="dict"),
+ roamConsortOis=dict(type="list"),
+ venue=dict(type="dict"),
networkId=dict(type="str"),
number=dict(type="str"),
))
@@ -56,14 +56,14 @@ class NetworksWirelessSsidsHotspot20(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- enabled=params.get("enabled"),
- operator=params.get("operator"),
- venue=params.get("venue"),
- networkAccessType=params.get("networkAccessType"),
domains=params.get("domains"),
- roamConsortOis=params.get("roamConsortOis"),
+ enabled=params.get("enabled"),
mccMncs=params.get("mccMncs"),
naiRealms=params.get("naiRealms"),
+ networkAccessType=params.get("networkAccessType"),
+ operator=params.get("operator"),
+ roamConsortOis=params.get("roamConsortOis"),
+ venue=params.get("venue"),
network_id=params.get("networkId"),
number=params.get("number"),
)
@@ -79,29 +79,29 @@ class NetworksWirelessSsidsHotspot20(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
- new_object_params['enabled'] = self.new_object.get('enabled')
- if self.new_object.get('operator') is not None or self.new_object.get('operator') is not None:
- new_object_params['operator'] = self.new_object.get('operator') or \
- self.new_object.get('operator')
- if self.new_object.get('venue') is not None or self.new_object.get('venue') is not None:
- new_object_params['venue'] = self.new_object.get('venue') or \
- self.new_object.get('venue')
- if self.new_object.get('networkAccessType') is not None or self.new_object.get('network_access_type') is not None:
- new_object_params['networkAccessType'] = self.new_object.get('networkAccessType') or \
- self.new_object.get('network_access_type')
if self.new_object.get('domains') is not None or self.new_object.get('domains') is not None:
new_object_params['domains'] = self.new_object.get('domains') or \
self.new_object.get('domains')
- if self.new_object.get('roamConsortOis') is not None or self.new_object.get('roam_consort_ois') is not None:
- new_object_params['roamConsortOis'] = self.new_object.get('roamConsortOis') or \
- self.new_object.get('roam_consort_ois')
+ if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
+ new_object_params['enabled'] = self.new_object.get('enabled')
if self.new_object.get('mccMncs') is not None or self.new_object.get('mcc_mncs') is not None:
new_object_params['mccMncs'] = self.new_object.get('mccMncs') or \
self.new_object.get('mcc_mncs')
if self.new_object.get('naiRealms') is not None or self.new_object.get('nai_realms') is not None:
new_object_params['naiRealms'] = self.new_object.get('naiRealms') or \
self.new_object.get('nai_realms')
+ if self.new_object.get('networkAccessType') is not None or self.new_object.get('network_access_type') is not None:
+ new_object_params['networkAccessType'] = self.new_object.get('networkAccessType') or \
+ self.new_object.get('network_access_type')
+ if self.new_object.get('operator') is not None or self.new_object.get('operator') is not None:
+ new_object_params['operator'] = self.new_object.get('operator') or \
+ self.new_object.get('operator')
+ if self.new_object.get('roamConsortOis') is not None or self.new_object.get('roam_consort_ois') is not None:
+ new_object_params['roamConsortOis'] = self.new_object.get('roamConsortOis') or \
+ self.new_object.get('roam_consort_ois')
+ if self.new_object.get('venue') is not None or self.new_object.get('venue') is not None:
+ new_object_params['venue'] = self.new_object.get('venue') or \
+ self.new_object.get('venue')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -161,14 +161,14 @@ class NetworksWirelessSsidsHotspot20(object):
requested_obj = self.new_object
obj_params = [
- ("enabled", "enabled"),
- ("operator", "operator"),
- ("venue", "venue"),
- ("networkAccessType", "networkAccessType"),
("domains", "domains"),
- ("roamConsortOis", "roamConsortOis"),
+ ("enabled", "enabled"),
("mccMncs", "mccMncs"),
("naiRealms", "naiRealms"),
+ ("networkAccessType", "networkAccessType"),
+ ("operator", "operator"),
+ ("roamConsortOis", "roamConsortOis"),
+ ("venue", "venue"),
("networkId", "networkId"),
("number", "number"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_identity_psks.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_identity_psks.py
index 266306851..995997893 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_identity_psks.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_identity_psks.py
@@ -32,10 +32,10 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
+ expiresAt=dict(type="str"),
+ groupPolicyId=dict(type="str"),
name=dict(type="str"),
passphrase=dict(type="str"),
- groupPolicyId=dict(type="str"),
- expiresAt=dict(type="str"),
networkId=dict(type="str"),
number=dict(type="str"),
identityPskId=dict(type="str"),
@@ -54,10 +54,10 @@ class NetworksWirelessSsidsIdentityPsks(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ expiresAt=params.get("expiresAt"),
+ groupPolicyId=params.get("groupPolicyId"),
name=params.get("name"),
passphrase=params.get("passphrase"),
- groupPolicyId=params.get("groupPolicyId"),
- expiresAt=params.get("expiresAt"),
networkId=params.get("networkId"),
number=params.get("number"),
identityPskId=params.get("identityPskId"),
@@ -86,18 +86,18 @@ class NetworksWirelessSsidsIdentityPsks(object):
def create_params(self):
new_object_params = {}
+ if self.new_object.get('expiresAt') is not None or self.new_object.get('expires_at') is not None:
+ new_object_params['expiresAt'] = self.new_object.get('expiresAt') or \
+ self.new_object.get('expires_at')
+ if self.new_object.get('groupPolicyId') is not None or self.new_object.get('group_policy_id') is not None:
+ new_object_params['groupPolicyId'] = self.new_object.get('groupPolicyId') or \
+ self.new_object.get('group_policy_id')
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
if self.new_object.get('passphrase') is not None or self.new_object.get('passphrase') is not None:
new_object_params['passphrase'] = self.new_object.get('passphrase') or \
self.new_object.get('passphrase')
- if self.new_object.get('groupPolicyId') is not None or self.new_object.get('group_policy_id') is not None:
- new_object_params['groupPolicyId'] = self.new_object.get('groupPolicyId') or \
- self.new_object.get('group_policy_id')
- if self.new_object.get('expiresAt') is not None or self.new_object.get('expires_at') is not None:
- new_object_params['expiresAt'] = self.new_object.get('expiresAt') or \
- self.new_object.get('expires_at')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -121,18 +121,18 @@ class NetworksWirelessSsidsIdentityPsks(object):
def update_by_id_params(self):
new_object_params = {}
+ if self.new_object.get('expiresAt') is not None or self.new_object.get('expires_at') is not None:
+ new_object_params['expiresAt'] = self.new_object.get('expiresAt') or \
+ self.new_object.get('expires_at')
+ if self.new_object.get('groupPolicyId') is not None or self.new_object.get('group_policy_id') is not None:
+ new_object_params['groupPolicyId'] = self.new_object.get('groupPolicyId') or \
+ self.new_object.get('group_policy_id')
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
if self.new_object.get('passphrase') is not None or self.new_object.get('passphrase') is not None:
new_object_params['passphrase'] = self.new_object.get('passphrase') or \
self.new_object.get('passphrase')
- if self.new_object.get('groupPolicyId') is not None or self.new_object.get('group_policy_id') is not None:
- new_object_params['groupPolicyId'] = self.new_object.get('groupPolicyId') or \
- self.new_object.get('group_policy_id')
- if self.new_object.get('expiresAt') is not None or self.new_object.get('expires_at') is not None:
- new_object_params['expiresAt'] = self.new_object.get('expiresAt') or \
- self.new_object.get('expires_at')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -213,10 +213,10 @@ class NetworksWirelessSsidsIdentityPsks(object):
requested_obj = self.new_object
obj_params = [
+ ("expiresAt", "expiresAt"),
+ ("groupPolicyId", "groupPolicyId"),
("name", "name"),
("passphrase", "passphrase"),
- ("groupPolicyId", "groupPolicyId"),
- ("expiresAt", "expiresAt"),
("networkId", "networkId"),
("number", "number"),
("identityPskId", "identityPskId"),
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_splash_settings.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_splash_settings.py
index 71989ade2..b062af863 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_splash_settings.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_splash_settings.py
@@ -32,21 +32,22 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- splashUrl=dict(type="str"),
- useSplashUrl=dict(type="bool"),
- splashTimeout=dict(type="int"),
- redirectUrl=dict(type="str"),
- useRedirectUrl=dict(type="bool"),
- welcomeMessage=dict(type="str"),
- splashLogo=dict(type="dict"),
- splashImage=dict(type="dict"),
- splashPrepaidFront=dict(type="dict"),
+ allowSimultaneousLogins=dict(type="bool"),
+ billing=dict(type="dict"),
blockAllTrafficBeforeSignOn=dict(type="bool"),
controllerDisconnectionBehavior=dict(type="str"),
- allowSimultaneousLogins=dict(type="bool"),
guestSponsorship=dict(type="dict"),
- billing=dict(type="dict"),
+ redirectUrl=dict(type="str"),
sentryEnrollment=dict(type="dict"),
+ splashImage=dict(type="dict"),
+ splashLogo=dict(type="dict"),
+ splashPrepaidFront=dict(type="dict"),
+ splashTimeout=dict(type="int"),
+ splashUrl=dict(type="str"),
+ themeId=dict(type="str"),
+ useRedirectUrl=dict(type="bool"),
+ useSplashUrl=dict(type="bool"),
+ welcomeMessage=dict(type="str"),
networkId=dict(type="str"),
number=dict(type="str"),
))
@@ -63,21 +64,22 @@ class NetworksWirelessSsidsSplashSettings(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- splashUrl=params.get("splashUrl"),
- useSplashUrl=params.get("useSplashUrl"),
- splashTimeout=params.get("splashTimeout"),
- redirectUrl=params.get("redirectUrl"),
- useRedirectUrl=params.get("useRedirectUrl"),
- welcomeMessage=params.get("welcomeMessage"),
- splashLogo=params.get("splashLogo"),
- splashImage=params.get("splashImage"),
- splashPrepaidFront=params.get("splashPrepaidFront"),
+ allowSimultaneousLogins=params.get("allowSimultaneousLogins"),
+ billing=params.get("billing"),
blockAllTrafficBeforeSignOn=params.get("blockAllTrafficBeforeSignOn"),
controllerDisconnectionBehavior=params.get("controllerDisconnectionBehavior"),
- allowSimultaneousLogins=params.get("allowSimultaneousLogins"),
guestSponsorship=params.get("guestSponsorship"),
- billing=params.get("billing"),
+ redirectUrl=params.get("redirectUrl"),
sentryEnrollment=params.get("sentryEnrollment"),
+ splashImage=params.get("splashImage"),
+ splashLogo=params.get("splashLogo"),
+ splashPrepaidFront=params.get("splashPrepaidFront"),
+ splashTimeout=params.get("splashTimeout"),
+ splashUrl=params.get("splashUrl"),
+ themeId=params.get("themeId"),
+ useRedirectUrl=params.get("useRedirectUrl"),
+ useSplashUrl=params.get("useSplashUrl"),
+ welcomeMessage=params.get("welcomeMessage"),
network_id=params.get("networkId"),
number=params.get("number"),
)
@@ -93,47 +95,50 @@ class NetworksWirelessSsidsSplashSettings(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('splashUrl') is not None or self.new_object.get('splash_url') is not None:
- new_object_params['splashUrl'] = self.new_object.get('splashUrl') or \
- self.new_object.get('splash_url')
- if self.new_object.get('useSplashUrl') is not None or self.new_object.get('use_splash_url') is not None:
- new_object_params['useSplashUrl'] = self.new_object.get('useSplashUrl')
- if self.new_object.get('splashTimeout') is not None or self.new_object.get('splash_timeout') is not None:
- new_object_params['splashTimeout'] = self.new_object.get('splashTimeout') or \
- self.new_object.get('splash_timeout')
- if self.new_object.get('redirectUrl') is not None or self.new_object.get('redirect_url') is not None:
- new_object_params['redirectUrl'] = self.new_object.get('redirectUrl') or \
- self.new_object.get('redirect_url')
- if self.new_object.get('useRedirectUrl') is not None or self.new_object.get('use_redirect_url') is not None:
- new_object_params['useRedirectUrl'] = self.new_object.get('useRedirectUrl')
- if self.new_object.get('welcomeMessage') is not None or self.new_object.get('welcome_message') is not None:
- new_object_params['welcomeMessage'] = self.new_object.get('welcomeMessage') or \
- self.new_object.get('welcome_message')
- if self.new_object.get('splashLogo') is not None or self.new_object.get('splash_logo') is not None:
- new_object_params['splashLogo'] = self.new_object.get('splashLogo') or \
- self.new_object.get('splash_logo')
- if self.new_object.get('splashImage') is not None or self.new_object.get('splash_image') is not None:
- new_object_params['splashImage'] = self.new_object.get('splashImage') or \
- self.new_object.get('splash_image')
- if self.new_object.get('splashPrepaidFront') is not None or self.new_object.get('splash_prepaid_front') is not None:
- new_object_params['splashPrepaidFront'] = self.new_object.get('splashPrepaidFront') or \
- self.new_object.get('splash_prepaid_front')
+ if self.new_object.get('allowSimultaneousLogins') is not None or self.new_object.get('allow_simultaneous_logins') is not None:
+ new_object_params['allowSimultaneousLogins'] = self.new_object.get('allowSimultaneousLogins')
+ if self.new_object.get('billing') is not None or self.new_object.get('billing') is not None:
+ new_object_params['billing'] = self.new_object.get('billing') or \
+ self.new_object.get('billing')
if self.new_object.get('blockAllTrafficBeforeSignOn') is not None or self.new_object.get('block_all_traffic_before_sign_on') is not None:
new_object_params['blockAllTrafficBeforeSignOn'] = self.new_object.get('blockAllTrafficBeforeSignOn')
if self.new_object.get('controllerDisconnectionBehavior') is not None or self.new_object.get('controller_disconnection_behavior') is not None:
new_object_params['controllerDisconnectionBehavior'] = self.new_object.get('controllerDisconnectionBehavior') or \
self.new_object.get('controller_disconnection_behavior')
- if self.new_object.get('allowSimultaneousLogins') is not None or self.new_object.get('allow_simultaneous_logins') is not None:
- new_object_params['allowSimultaneousLogins'] = self.new_object.get('allowSimultaneousLogins')
if self.new_object.get('guestSponsorship') is not None or self.new_object.get('guest_sponsorship') is not None:
new_object_params['guestSponsorship'] = self.new_object.get('guestSponsorship') or \
self.new_object.get('guest_sponsorship')
- if self.new_object.get('billing') is not None or self.new_object.get('billing') is not None:
- new_object_params['billing'] = self.new_object.get('billing') or \
- self.new_object.get('billing')
+ if self.new_object.get('redirectUrl') is not None or self.new_object.get('redirect_url') is not None:
+ new_object_params['redirectUrl'] = self.new_object.get('redirectUrl') or \
+ self.new_object.get('redirect_url')
if self.new_object.get('sentryEnrollment') is not None or self.new_object.get('sentry_enrollment') is not None:
new_object_params['sentryEnrollment'] = self.new_object.get('sentryEnrollment') or \
self.new_object.get('sentry_enrollment')
+ if self.new_object.get('splashImage') is not None or self.new_object.get('splash_image') is not None:
+ new_object_params['splashImage'] = self.new_object.get('splashImage') or \
+ self.new_object.get('splash_image')
+ if self.new_object.get('splashLogo') is not None or self.new_object.get('splash_logo') is not None:
+ new_object_params['splashLogo'] = self.new_object.get('splashLogo') or \
+ self.new_object.get('splash_logo')
+ if self.new_object.get('splashPrepaidFront') is not None or self.new_object.get('splash_prepaid_front') is not None:
+ new_object_params['splashPrepaidFront'] = self.new_object.get('splashPrepaidFront') or \
+ self.new_object.get('splash_prepaid_front')
+ if self.new_object.get('splashTimeout') is not None or self.new_object.get('splash_timeout') is not None:
+ new_object_params['splashTimeout'] = self.new_object.get('splashTimeout') or \
+ self.new_object.get('splash_timeout')
+ if self.new_object.get('splashUrl') is not None or self.new_object.get('splash_url') is not None:
+ new_object_params['splashUrl'] = self.new_object.get('splashUrl') or \
+ self.new_object.get('splash_url')
+ if self.new_object.get('themeId') is not None or self.new_object.get('theme_id') is not None:
+ new_object_params['themeId'] = self.new_object.get('themeId') or \
+ self.new_object.get('theme_id')
+ if self.new_object.get('useRedirectUrl') is not None or self.new_object.get('use_redirect_url') is not None:
+ new_object_params['useRedirectUrl'] = self.new_object.get('useRedirectUrl')
+ if self.new_object.get('useSplashUrl') is not None or self.new_object.get('use_splash_url') is not None:
+ new_object_params['useSplashUrl'] = self.new_object.get('useSplashUrl')
+ if self.new_object.get('welcomeMessage') is not None or self.new_object.get('welcome_message') is not None:
+ new_object_params['welcomeMessage'] = self.new_object.get('welcomeMessage') or \
+ self.new_object.get('welcome_message')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -193,21 +198,22 @@ class NetworksWirelessSsidsSplashSettings(object):
requested_obj = self.new_object
obj_params = [
- ("splashUrl", "splashUrl"),
- ("useSplashUrl", "useSplashUrl"),
- ("splashTimeout", "splashTimeout"),
- ("redirectUrl", "redirectUrl"),
- ("useRedirectUrl", "useRedirectUrl"),
- ("welcomeMessage", "welcomeMessage"),
- ("splashLogo", "splashLogo"),
- ("splashImage", "splashImage"),
- ("splashPrepaidFront", "splashPrepaidFront"),
+ ("allowSimultaneousLogins", "allowSimultaneousLogins"),
+ ("billing", "billing"),
("blockAllTrafficBeforeSignOn", "blockAllTrafficBeforeSignOn"),
("controllerDisconnectionBehavior", "controllerDisconnectionBehavior"),
- ("allowSimultaneousLogins", "allowSimultaneousLogins"),
("guestSponsorship", "guestSponsorship"),
- ("billing", "billing"),
+ ("redirectUrl", "redirectUrl"),
("sentryEnrollment", "sentryEnrollment"),
+ ("splashImage", "splashImage"),
+ ("splashLogo", "splashLogo"),
+ ("splashPrepaidFront", "splashPrepaidFront"),
+ ("splashTimeout", "splashTimeout"),
+ ("splashUrl", "splashUrl"),
+ ("themeId", "themeId"),
+ ("useRedirectUrl", "useRedirectUrl"),
+ ("useSplashUrl", "useSplashUrl"),
+ ("welcomeMessage", "welcomeMessage"),
("networkId", "networkId"),
("number", "number"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_traffic_shaping_rules.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_traffic_shaping_rules.py
index de13a0d80..bddddcbea 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_traffic_shaping_rules.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_traffic_shaping_rules.py
@@ -32,9 +32,9 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- trafficShapingEnabled=dict(type="bool"),
defaultRulesEnabled=dict(type="bool"),
rules=dict(type="list"),
+ trafficShapingEnabled=dict(type="bool"),
networkId=dict(type="str"),
number=dict(type="str"),
))
@@ -51,9 +51,9 @@ class NetworksWirelessSsidsTrafficShapingRules(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- trafficShapingEnabled=params.get("trafficShapingEnabled"),
defaultRulesEnabled=params.get("defaultRulesEnabled"),
rules=params.get("rules"),
+ trafficShapingEnabled=params.get("trafficShapingEnabled"),
network_id=params.get("networkId"),
number=params.get("number"),
)
@@ -69,13 +69,13 @@ class NetworksWirelessSsidsTrafficShapingRules(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('trafficShapingEnabled') is not None or self.new_object.get('traffic_shaping_enabled') is not None:
- new_object_params['trafficShapingEnabled'] = self.new_object.get('trafficShapingEnabled')
if self.new_object.get('defaultRulesEnabled') is not None or self.new_object.get('default_rules_enabled') is not None:
new_object_params['defaultRulesEnabled'] = self.new_object.get('defaultRulesEnabled')
if self.new_object.get('rules') is not None or self.new_object.get('rules') is not None:
new_object_params['rules'] = self.new_object.get('rules') or \
self.new_object.get('rules')
+ if self.new_object.get('trafficShapingEnabled') is not None or self.new_object.get('traffic_shaping_enabled') is not None:
+ new_object_params['trafficShapingEnabled'] = self.new_object.get('trafficShapingEnabled')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -135,9 +135,9 @@ class NetworksWirelessSsidsTrafficShapingRules(object):
requested_obj = self.new_object
obj_params = [
- ("trafficShapingEnabled", "trafficShapingEnabled"),
("defaultRulesEnabled", "defaultRulesEnabled"),
("rules", "rules"),
+ ("trafficShapingEnabled", "trafficShapingEnabled"),
("networkId", "networkId"),
("number", "number"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_vpn.py b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_vpn.py
index cc3836353..a66830f81 100644
--- a/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_vpn.py
+++ b/ansible_collections/cisco/meraki/plugins/action/networks_wireless_ssids_vpn.py
@@ -33,8 +33,8 @@ argument_spec = meraki_argument_spec()
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
concentrator=dict(type="dict"),
- splitTunnel=dict(type="dict"),
failover=dict(type="dict"),
+ splitTunnel=dict(type="dict"),
networkId=dict(type="str"),
number=dict(type="str"),
))
@@ -52,8 +52,8 @@ class NetworksWirelessSsidsVpn(object):
self.meraki = meraki
self.new_object = dict(
concentrator=params.get("concentrator"),
- splitTunnel=params.get("splitTunnel"),
failover=params.get("failover"),
+ splitTunnel=params.get("splitTunnel"),
network_id=params.get("networkId"),
number=params.get("number"),
)
@@ -72,12 +72,12 @@ class NetworksWirelessSsidsVpn(object):
if self.new_object.get('concentrator') is not None or self.new_object.get('concentrator') is not None:
new_object_params['concentrator'] = self.new_object.get('concentrator') or \
self.new_object.get('concentrator')
- if self.new_object.get('splitTunnel') is not None or self.new_object.get('split_tunnel') is not None:
- new_object_params['splitTunnel'] = self.new_object.get('splitTunnel') or \
- self.new_object.get('split_tunnel')
if self.new_object.get('failover') is not None or self.new_object.get('failover') is not None:
new_object_params['failover'] = self.new_object.get('failover') or \
self.new_object.get('failover')
+ if self.new_object.get('splitTunnel') is not None or self.new_object.get('split_tunnel') is not None:
+ new_object_params['splitTunnel'] = self.new_object.get('splitTunnel') or \
+ self.new_object.get('split_tunnel')
if self.new_object.get('networkId') is not None or self.new_object.get('network_id') is not None:
new_object_params['networkId'] = self.new_object.get('networkId') or \
self.new_object.get('network_id')
@@ -138,8 +138,8 @@ class NetworksWirelessSsidsVpn(object):
obj_params = [
("concentrator", "concentrator"),
- ("splitTunnel", "splitTunnel"),
("failover", "failover"),
+ ("splitTunnel", "splitTunnel"),
("networkId", "networkId"),
("number", "number"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations.py b/ansible_collections/cisco/meraki/plugins/action/organizations.py
index 0cb1670ef..410ebc37d 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations.py
@@ -32,8 +32,8 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- name=dict(type="str"),
management=dict(type="dict"),
+ name=dict(type="str"),
organizationId=dict(type="str"),
api=dict(type="dict"),
))
@@ -51,14 +51,24 @@ class Organizations(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
management=params.get("management"),
+ name=params.get("name"),
organizationId=params.get("organizationId"),
api=params.get("api"),
)
def get_all_params(self, name=None, id=None):
new_object_params = {}
+ if self.new_object.get('perPage') is not None or self.new_object.get('per_page') is not None:
+ new_object_params['perPage'] = self.new_object.get('perPage') or \
+ self.new_object.get('per_page')
+ new_object_params['total_pages'] = -1
+ if self.new_object.get('startingAfter') is not None or self.new_object.get('starting_after') is not None:
+ new_object_params['startingAfter'] = self.new_object.get('startingAfter') or \
+ self.new_object.get('starting_after')
+ if self.new_object.get('endingBefore') is not None or self.new_object.get('ending_before') is not None:
+ new_object_params['endingBefore'] = self.new_object.get('endingBefore') or \
+ self.new_object.get('ending_before')
return new_object_params
def get_params_by_id(self, name=None, id=None):
@@ -70,12 +80,12 @@ class Organizations(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
if self.new_object.get('management') is not None or self.new_object.get('management') is not None:
new_object_params['management'] = self.new_object.get('management') or \
self.new_object.get('management')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
return new_object_params
def delete_by_id_params(self):
@@ -87,15 +97,15 @@ class Organizations(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('management') is not None or self.new_object.get('management') is not None:
- new_object_params['management'] = self.new_object.get('management') or \
- self.new_object.get('management')
if self.new_object.get('api') is not None or self.new_object.get('api') is not None:
new_object_params['api'] = self.new_object.get('api') or \
self.new_object.get('api')
+ if self.new_object.get('management') is not None or self.new_object.get('management') is not None:
+ new_object_params['management'] = self.new_object.get('management') or \
+ self.new_object.get('management')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -170,8 +180,8 @@ class Organizations(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
("management", "management"),
+ ("name", "name"),
("organizationId", "organizationId"),
("api", "api"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_action_batches.py b/ansible_collections/cisco/meraki/plugins/action/organizations_action_batches.py
index 8780b3e82..92a82e869 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_action_batches.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_action_batches.py
@@ -32,9 +32,10 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
+ actions=dict(type="list"),
+ callback=dict(type="dict"),
confirmed=dict(type="bool"),
synchronous=dict(type="bool"),
- actions=dict(type="list"),
organizationId=dict(type="str"),
actionBatchId=dict(type="str"),
))
@@ -52,9 +53,10 @@ class OrganizationsActionBatches(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ actions=params.get("actions"),
+ callback=params.get("callback"),
confirmed=params.get("confirmed"),
synchronous=params.get("synchronous"),
- actions=params.get("actions"),
organizationId=params.get("organizationId"),
actionBatchId=params.get("actionBatchId"),
)
@@ -80,13 +82,16 @@ class OrganizationsActionBatches(object):
def create_params(self):
new_object_params = {}
+ if self.new_object.get('actions') is not None or self.new_object.get('actions') is not None:
+ new_object_params['actions'] = self.new_object.get('actions') or \
+ self.new_object.get('actions')
+ if self.new_object.get('callback') is not None or self.new_object.get('callback') is not None:
+ new_object_params['callback'] = self.new_object.get('callback') or \
+ self.new_object.get('callback')
if self.new_object.get('confirmed') is not None or self.new_object.get('confirmed') is not None:
new_object_params['confirmed'] = self.new_object.get('confirmed')
if self.new_object.get('synchronous') is not None or self.new_object.get('synchronous') is not None:
new_object_params['synchronous'] = self.new_object.get('synchronous')
- if self.new_object.get('actions') is not None or self.new_object.get('actions') is not None:
- new_object_params['actions'] = self.new_object.get('actions') or \
- self.new_object.get('actions')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -185,9 +190,10 @@ class OrganizationsActionBatches(object):
requested_obj = self.new_object
obj_params = [
+ ("actions", "actions"),
+ ("callback", "callback"),
("confirmed", "confirmed"),
("synchronous", "synchronous"),
- ("actions", "actions"),
("organizationId", "organizationId"),
("actionBatchId", "actionBatchId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_adaptive_policy_acls.py b/ansible_collections/cisco/meraki/plugins/action/organizations_adaptive_policy_acls.py
index cc445e11f..b5249443c 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_adaptive_policy_acls.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_adaptive_policy_acls.py
@@ -32,10 +32,10 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- name=dict(type="str"),
description=dict(type="str"),
- rules=dict(type="list"),
ipVersion=dict(type="str"),
+ name=dict(type="str"),
+ rules=dict(type="list"),
organizationId=dict(type="str"),
aclId=dict(type="str"),
))
@@ -53,10 +53,10 @@ class OrganizationsAdaptivePolicyAcls(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
description=params.get("description"),
- rules=params.get("rules"),
ipVersion=params.get("ipVersion"),
+ name=params.get("name"),
+ rules=params.get("rules"),
organizationId=params.get("organizationId"),
aclId=params.get("aclId"),
)
@@ -80,18 +80,18 @@ class OrganizationsAdaptivePolicyAcls(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
if self.new_object.get('description') is not None or self.new_object.get('description') is not None:
new_object_params['description'] = self.new_object.get('description') or \
self.new_object.get('description')
- if self.new_object.get('rules') is not None or self.new_object.get('rules') is not None:
- new_object_params['rules'] = self.new_object.get('rules') or \
- self.new_object.get('rules')
if self.new_object.get('ipVersion') is not None or self.new_object.get('ip_version') is not None:
new_object_params['ipVersion'] = self.new_object.get('ipVersion') or \
self.new_object.get('ip_version')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('rules') is not None or self.new_object.get('rules') is not None:
+ new_object_params['rules'] = self.new_object.get('rules') or \
+ self.new_object.get('rules')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -109,18 +109,18 @@ class OrganizationsAdaptivePolicyAcls(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
if self.new_object.get('description') is not None or self.new_object.get('description') is not None:
new_object_params['description'] = self.new_object.get('description') or \
self.new_object.get('description')
- if self.new_object.get('rules') is not None or self.new_object.get('rules') is not None:
- new_object_params['rules'] = self.new_object.get('rules') or \
- self.new_object.get('rules')
if self.new_object.get('ipVersion') is not None or self.new_object.get('ip_version') is not None:
new_object_params['ipVersion'] = self.new_object.get('ipVersion') or \
self.new_object.get('ip_version')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('rules') is not None or self.new_object.get('rules') is not None:
+ new_object_params['rules'] = self.new_object.get('rules') or \
+ self.new_object.get('rules')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -198,10 +198,10 @@ class OrganizationsAdaptivePolicyAcls(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
("description", "description"),
- ("rules", "rules"),
("ipVersion", "ipVersion"),
+ ("name", "name"),
+ ("rules", "rules"),
("organizationId", "organizationId"),
("aclId", "aclId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_adaptive_policy_groups.py b/ansible_collections/cisco/meraki/plugins/action/organizations_adaptive_policy_groups.py
index f170a7ad0..7a871b57b 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_adaptive_policy_groups.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_adaptive_policy_groups.py
@@ -32,10 +32,10 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- name=dict(type="str"),
- sgt=dict(type="int"),
description=dict(type="str"),
+ name=dict(type="str"),
policyObjects=dict(type="list"),
+ sgt=dict(type="int"),
organizationId=dict(type="str"),
id=dict(type="str"),
))
@@ -53,10 +53,10 @@ class OrganizationsAdaptivePolicyGroups(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
- sgt=params.get("sgt"),
description=params.get("description"),
+ name=params.get("name"),
policyObjects=params.get("policyObjects"),
+ sgt=params.get("sgt"),
organizationId=params.get("organizationId"),
id=params.get("id"),
)
@@ -79,18 +79,18 @@ class OrganizationsAdaptivePolicyGroups(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('sgt') is not None or self.new_object.get('sgt') is not None:
- new_object_params['sgt'] = self.new_object.get('sgt') or \
- self.new_object.get('sgt')
if self.new_object.get('description') is not None or self.new_object.get('description') is not None:
new_object_params['description'] = self.new_object.get('description') or \
self.new_object.get('description')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('policyObjects') is not None or self.new_object.get('policy_objects') is not None:
new_object_params['policyObjects'] = self.new_object.get('policyObjects') or \
self.new_object.get('policy_objects')
+ if self.new_object.get('sgt') is not None or self.new_object.get('sgt') is not None:
+ new_object_params['sgt'] = self.new_object.get('sgt') or \
+ self.new_object.get('sgt')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -108,18 +108,18 @@ class OrganizationsAdaptivePolicyGroups(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('sgt') is not None or self.new_object.get('sgt') is not None:
- new_object_params['sgt'] = self.new_object.get('sgt') or \
- self.new_object.get('sgt')
if self.new_object.get('description') is not None or self.new_object.get('description') is not None:
new_object_params['description'] = self.new_object.get('description') or \
self.new_object.get('description')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('policyObjects') is not None or self.new_object.get('policy_objects') is not None:
new_object_params['policyObjects'] = self.new_object.get('policyObjects') or \
self.new_object.get('policy_objects')
+ if self.new_object.get('sgt') is not None or self.new_object.get('sgt') is not None:
+ new_object_params['sgt'] = self.new_object.get('sgt') or \
+ self.new_object.get('sgt')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -193,10 +193,10 @@ class OrganizationsAdaptivePolicyGroups(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
- ("sgt", "sgt"),
("description", "description"),
+ ("name", "name"),
("policyObjects", "policyObjects"),
+ ("sgt", "sgt"),
("organizationId", "organizationId"),
("id", "id"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_adaptive_policy_policies.py b/ansible_collections/cisco/meraki/plugins/action/organizations_adaptive_policy_policies.py
index 9717b4aef..856b7ac16 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_adaptive_policy_policies.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_adaptive_policy_policies.py
@@ -32,10 +32,10 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- sourceGroup=dict(type="dict"),
- destinationGroup=dict(type="dict"),
acls=dict(type="list"),
+ destinationGroup=dict(type="dict"),
lastEntryRule=dict(type="str"),
+ sourceGroup=dict(type="dict"),
organizationId=dict(type="str"),
id=dict(type="str"),
))
@@ -53,10 +53,10 @@ class OrganizationsAdaptivePolicyPolicies(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- sourceGroup=params.get("sourceGroup"),
- destinationGroup=params.get("destinationGroup"),
acls=params.get("acls"),
+ destinationGroup=params.get("destinationGroup"),
lastEntryRule=params.get("lastEntryRule"),
+ sourceGroup=params.get("sourceGroup"),
organizationId=params.get("organizationId"),
id=params.get("id"),
)
@@ -79,18 +79,18 @@ class OrganizationsAdaptivePolicyPolicies(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('sourceGroup') is not None or self.new_object.get('source_group') is not None:
- new_object_params['sourceGroup'] = self.new_object.get('sourceGroup') or \
- self.new_object.get('source_group')
- if self.new_object.get('destinationGroup') is not None or self.new_object.get('destination_group') is not None:
- new_object_params['destinationGroup'] = self.new_object.get('destinationGroup') or \
- self.new_object.get('destination_group')
if self.new_object.get('acls') is not None or self.new_object.get('acls') is not None:
new_object_params['acls'] = self.new_object.get('acls') or \
self.new_object.get('acls')
+ if self.new_object.get('destinationGroup') is not None or self.new_object.get('destination_group') is not None:
+ new_object_params['destinationGroup'] = self.new_object.get('destinationGroup') or \
+ self.new_object.get('destination_group')
if self.new_object.get('lastEntryRule') is not None or self.new_object.get('last_entry_rule') is not None:
new_object_params['lastEntryRule'] = self.new_object.get('lastEntryRule') or \
self.new_object.get('last_entry_rule')
+ if self.new_object.get('sourceGroup') is not None or self.new_object.get('source_group') is not None:
+ new_object_params['sourceGroup'] = self.new_object.get('sourceGroup') or \
+ self.new_object.get('source_group')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -108,18 +108,18 @@ class OrganizationsAdaptivePolicyPolicies(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('sourceGroup') is not None or self.new_object.get('source_group') is not None:
- new_object_params['sourceGroup'] = self.new_object.get('sourceGroup') or \
- self.new_object.get('source_group')
- if self.new_object.get('destinationGroup') is not None or self.new_object.get('destination_group') is not None:
- new_object_params['destinationGroup'] = self.new_object.get('destinationGroup') or \
- self.new_object.get('destination_group')
if self.new_object.get('acls') is not None or self.new_object.get('acls') is not None:
new_object_params['acls'] = self.new_object.get('acls') or \
self.new_object.get('acls')
+ if self.new_object.get('destinationGroup') is not None or self.new_object.get('destination_group') is not None:
+ new_object_params['destinationGroup'] = self.new_object.get('destinationGroup') or \
+ self.new_object.get('destination_group')
if self.new_object.get('lastEntryRule') is not None or self.new_object.get('last_entry_rule') is not None:
new_object_params['lastEntryRule'] = self.new_object.get('lastEntryRule') or \
self.new_object.get('last_entry_rule')
+ if self.new_object.get('sourceGroup') is not None or self.new_object.get('source_group') is not None:
+ new_object_params['sourceGroup'] = self.new_object.get('sourceGroup') or \
+ self.new_object.get('source_group')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -193,10 +193,10 @@ class OrganizationsAdaptivePolicyPolicies(object):
requested_obj = self.new_object
obj_params = [
- ("sourceGroup", "sourceGroup"),
- ("destinationGroup", "destinationGroup"),
("acls", "acls"),
+ ("destinationGroup", "destinationGroup"),
("lastEntryRule", "lastEntryRule"),
+ ("sourceGroup", "sourceGroup"),
("organizationId", "organizationId"),
("id", "id"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_admins.py b/ansible_collections/cisco/meraki/plugins/action/organizations_admins.py
index a9b2140ef..641befa29 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_admins.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_admins.py
@@ -32,12 +32,12 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
+ authenticationMethod=dict(type="str"),
email=dict(type="str"),
name=dict(type="str"),
+ networks=dict(type="list"),
orgAccess=dict(type="str"),
tags=dict(type="list"),
- networks=dict(type="list"),
- authenticationMethod=dict(type="str"),
organizationId=dict(type="str"),
adminId=dict(type="str"),
))
@@ -55,12 +55,12 @@ class OrganizationsAdmins(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ authenticationMethod=params.get("authenticationMethod"),
email=params.get("email"),
name=params.get("name"),
+ networks=params.get("networks"),
orgAccess=params.get("orgAccess"),
tags=params.get("tags"),
- networks=params.get("networks"),
- authenticationMethod=params.get("authenticationMethod"),
organizationId=params.get("organizationId"),
adminId=params.get("adminId"),
)
@@ -74,24 +74,24 @@ class OrganizationsAdmins(object):
def create_params(self):
new_object_params = {}
+ if self.new_object.get('authenticationMethod') is not None or self.new_object.get('authentication_method') is not None:
+ new_object_params['authenticationMethod'] = self.new_object.get('authenticationMethod') or \
+ self.new_object.get('authentication_method')
if self.new_object.get('email') is not None or self.new_object.get('email') is not None:
new_object_params['email'] = self.new_object.get('email') or \
self.new_object.get('email')
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
+ if self.new_object.get('networks') is not None or self.new_object.get('networks') is not None:
+ new_object_params['networks'] = self.new_object.get('networks') or \
+ self.new_object.get('networks')
if self.new_object.get('orgAccess') is not None or self.new_object.get('org_access') is not None:
new_object_params['orgAccess'] = self.new_object.get('orgAccess') or \
self.new_object.get('org_access')
if self.new_object.get('tags') is not None or self.new_object.get('tags') is not None:
new_object_params['tags'] = self.new_object.get('tags') or \
self.new_object.get('tags')
- if self.new_object.get('networks') is not None or self.new_object.get('networks') is not None:
- new_object_params['networks'] = self.new_object.get('networks') or \
- self.new_object.get('networks')
- if self.new_object.get('authenticationMethod') is not None or self.new_object.get('authentication_method') is not None:
- new_object_params['authenticationMethod'] = self.new_object.get('authenticationMethod') or \
- self.new_object.get('authentication_method')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -112,15 +112,15 @@ class OrganizationsAdmins(object):
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
+ if self.new_object.get('networks') is not None or self.new_object.get('networks') is not None:
+ new_object_params['networks'] = self.new_object.get('networks') or \
+ self.new_object.get('networks')
if self.new_object.get('orgAccess') is not None or self.new_object.get('org_access') is not None:
new_object_params['orgAccess'] = self.new_object.get('orgAccess') or \
self.new_object.get('org_access')
if self.new_object.get('tags') is not None or self.new_object.get('tags') is not None:
new_object_params['tags'] = self.new_object.get('tags') or \
self.new_object.get('tags')
- if self.new_object.get('networks') is not None or self.new_object.get('networks') is not None:
- new_object_params['networks'] = self.new_object.get('networks') or \
- self.new_object.get('networks')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -195,12 +195,12 @@ class OrganizationsAdmins(object):
requested_obj = self.new_object
obj_params = [
+ ("authenticationMethod", "authenticationMethod"),
("email", "email"),
("name", "name"),
+ ("networks", "networks"),
("orgAccess", "orgAccess"),
("tags", "tags"),
- ("networks", "networks"),
- ("authenticationMethod", "authenticationMethod"),
("organizationId", "organizationId"),
("adminId", "adminId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_alerts_profiles.py b/ansible_collections/cisco/meraki/plugins/action/organizations_alerts_profiles.py
index cc046ea86..b773a76cc 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_alerts_profiles.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_alerts_profiles.py
@@ -31,11 +31,11 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- type=dict(type="str"),
alertCondition=dict(type="dict"),
- recipients=dict(type="dict"),
- networkTags=dict(type="list"),
description=dict(type="str"),
+ networkTags=dict(type="list"),
+ recipients=dict(type="dict"),
+ type=dict(type="str"),
organizationId=dict(type="str"),
enabled=dict(type="bool"),
alertConfigId=dict(type="str"),
@@ -54,11 +54,11 @@ class OrganizationsAlertsProfiles(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- type=params.get("type"),
alertCondition=params.get("alertCondition"),
- recipients=params.get("recipients"),
- networkTags=params.get("networkTags"),
description=params.get("description"),
+ networkTags=params.get("networkTags"),
+ recipients=params.get("recipients"),
+ type=params.get("type"),
organization_id=params.get("organizationId"),
enabled=params.get("enabled"),
alert_config_id=params.get("alertConfigId"),
@@ -66,21 +66,21 @@ class OrganizationsAlertsProfiles(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('type') is not None or self.new_object.get('type') is not None:
- new_object_params['type'] = self.new_object.get('type') or \
- self.new_object.get('type')
if self.new_object.get('alertCondition') is not None or self.new_object.get('alert_condition') is not None:
new_object_params['alertCondition'] = self.new_object.get('alertCondition') or \
self.new_object.get('alert_condition')
- if self.new_object.get('recipients') is not None or self.new_object.get('recipients') is not None:
- new_object_params['recipients'] = self.new_object.get('recipients') or \
- self.new_object.get('recipients')
- if self.new_object.get('networkTags') is not None or self.new_object.get('network_tags') is not None:
- new_object_params['networkTags'] = self.new_object.get('networkTags') or \
- self.new_object.get('network_tags')
if self.new_object.get('description') is not None or self.new_object.get('description') is not None:
new_object_params['description'] = self.new_object.get('description') or \
self.new_object.get('description')
+ if self.new_object.get('networkTags') is not None or self.new_object.get('network_tags') is not None:
+ new_object_params['networkTags'] = self.new_object.get('networkTags') or \
+ self.new_object.get('network_tags')
+ if self.new_object.get('recipients') is not None or self.new_object.get('recipients') is not None:
+ new_object_params['recipients'] = self.new_object.get('recipients') or \
+ self.new_object.get('recipients')
+ if self.new_object.get('type') is not None or self.new_object.get('type') is not None:
+ new_object_params['type'] = self.new_object.get('type') or \
+ self.new_object.get('type')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -98,23 +98,23 @@ class OrganizationsAlertsProfiles(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
- new_object_params['enabled'] = self.new_object.get('enabled')
- if self.new_object.get('type') is not None or self.new_object.get('type') is not None:
- new_object_params['type'] = self.new_object.get('type') or \
- self.new_object.get('type')
if self.new_object.get('alertCondition') is not None or self.new_object.get('alert_condition') is not None:
new_object_params['alertCondition'] = self.new_object.get('alertCondition') or \
self.new_object.get('alert_condition')
- if self.new_object.get('recipients') is not None or self.new_object.get('recipients') is not None:
- new_object_params['recipients'] = self.new_object.get('recipients') or \
- self.new_object.get('recipients')
- if self.new_object.get('networkTags') is not None or self.new_object.get('network_tags') is not None:
- new_object_params['networkTags'] = self.new_object.get('networkTags') or \
- self.new_object.get('network_tags')
if self.new_object.get('description') is not None or self.new_object.get('description') is not None:
new_object_params['description'] = self.new_object.get('description') or \
self.new_object.get('description')
+ if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
+ new_object_params['enabled'] = self.new_object.get('enabled')
+ if self.new_object.get('networkTags') is not None or self.new_object.get('network_tags') is not None:
+ new_object_params['networkTags'] = self.new_object.get('networkTags') or \
+ self.new_object.get('network_tags')
+ if self.new_object.get('recipients') is not None or self.new_object.get('recipients') is not None:
+ new_object_params['recipients'] = self.new_object.get('recipients') or \
+ self.new_object.get('recipients')
+ if self.new_object.get('type') is not None or self.new_object.get('type') is not None:
+ new_object_params['type'] = self.new_object.get('type') or \
+ self.new_object.get('type')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -163,11 +163,11 @@ class OrganizationsAlertsProfiles(object):
requested_obj = self.new_object
obj_params = [
- ("type", "type"),
("alertCondition", "alertCondition"),
- ("recipients", "recipients"),
- ("networkTags", "networkTags"),
("description", "description"),
+ ("networkTags", "networkTags"),
+ ("recipients", "recipients"),
+ ("type", "type"),
("organizationId", "organizationId"),
("enabled", "enabled"),
("alertConfigId", "alertConfigId"),
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_appliance_traffic_shaping_vpn_exclusions_by_network_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_appliance_traffic_shaping_vpn_exclusions_by_network_info.py
new file mode 100644
index 000000000..6aad7552f
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_appliance_traffic_shaping_vpn_exclusions_by_network_info.py
@@ -0,0 +1,112 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ startingAfter=dict(type="str"),
+ endingBefore=dict(type="str"),
+ networkIds=dict(type="list"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("startingAfter") is not None:
+ new_object["startingAfter"] = params.get(
+ "startingAfter")
+ if params.get("endingBefore") is not None:
+ new_object["endingBefore"] = params.get(
+ "endingBefore")
+ if params.get("networkIds") is not None:
+ new_object["networkIds"] = params.get(
+ "networkIds")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="appliance",
+ function='getOrganizationApplianceTrafficShapingVpnExclusionsByNetwork',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_appliance_uplinks_statuses_overview_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_appliance_uplinks_statuses_overview_info.py
new file mode 100644
index 000000000..8180b0eb2
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_appliance_uplinks_statuses_overview_info.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="appliance",
+ function='getOrganizationApplianceUplinksStatusesOverview',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_appliance_uplinks_usage_by_network_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_appliance_uplinks_usage_by_network_info.py
new file mode 100644
index 000000000..c52e2bac2
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_appliance_uplinks_usage_by_network_info.py
@@ -0,0 +1,102 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ t0=dict(type="str"),
+ t1=dict(type="str"),
+ timespan=dict(type="float"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("t0") is not None:
+ new_object["t0"] = params.get(
+ "t0")
+ if params.get("t1") is not None:
+ new_object["t1"] = params.get(
+ "t1")
+ if params.get("timespan") is not None:
+ new_object["timespan"] = params.get(
+ "timespan")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="appliance",
+ function='getOrganizationApplianceUplinksUsageByNetwork',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_branding_policies.py b/ansible_collections/cisco/meraki/plugins/action/organizations_branding_policies.py
index 870c0370e..246f94575 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_branding_policies.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_branding_policies.py
@@ -32,11 +32,11 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- name=dict(type="str"),
- enabled=dict(type="bool"),
adminSettings=dict(type="dict"),
- helpSettings=dict(type="dict"),
customLogo=dict(type="dict"),
+ enabled=dict(type="bool"),
+ helpSettings=dict(type="dict"),
+ name=dict(type="str"),
organizationId=dict(type="str"),
brandingPolicyId=dict(type="str"),
))
@@ -54,11 +54,11 @@ class OrganizationsBrandingPolicies(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
- enabled=params.get("enabled"),
adminSettings=params.get("adminSettings"),
- helpSettings=params.get("helpSettings"),
customLogo=params.get("customLogo"),
+ enabled=params.get("enabled"),
+ helpSettings=params.get("helpSettings"),
+ name=params.get("name"),
organizationId=params.get("organizationId"),
brandingPolicyId=params.get("brandingPolicyId"),
)
@@ -82,20 +82,20 @@ class OrganizationsBrandingPolicies(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
- new_object_params['enabled'] = self.new_object.get('enabled')
if self.new_object.get('adminSettings') is not None or self.new_object.get('admin_settings') is not None:
new_object_params['adminSettings'] = self.new_object.get('adminSettings') or \
self.new_object.get('admin_settings')
- if self.new_object.get('helpSettings') is not None or self.new_object.get('help_settings') is not None:
- new_object_params['helpSettings'] = self.new_object.get('helpSettings') or \
- self.new_object.get('help_settings')
if self.new_object.get('customLogo') is not None or self.new_object.get('custom_logo') is not None:
new_object_params['customLogo'] = self.new_object.get('customLogo') or \
self.new_object.get('custom_logo')
+ if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
+ new_object_params['enabled'] = self.new_object.get('enabled')
+ if self.new_object.get('helpSettings') is not None or self.new_object.get('help_settings') is not None:
+ new_object_params['helpSettings'] = self.new_object.get('helpSettings') or \
+ self.new_object.get('help_settings')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -113,20 +113,20 @@ class OrganizationsBrandingPolicies(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
- new_object_params['enabled'] = self.new_object.get('enabled')
if self.new_object.get('adminSettings') is not None or self.new_object.get('admin_settings') is not None:
new_object_params['adminSettings'] = self.new_object.get('adminSettings') or \
self.new_object.get('admin_settings')
- if self.new_object.get('helpSettings') is not None or self.new_object.get('help_settings') is not None:
- new_object_params['helpSettings'] = self.new_object.get('helpSettings') or \
- self.new_object.get('help_settings')
if self.new_object.get('customLogo') is not None or self.new_object.get('custom_logo') is not None:
new_object_params['customLogo'] = self.new_object.get('customLogo') or \
self.new_object.get('custom_logo')
+ if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
+ new_object_params['enabled'] = self.new_object.get('enabled')
+ if self.new_object.get('helpSettings') is not None or self.new_object.get('help_settings') is not None:
+ new_object_params['helpSettings'] = self.new_object.get('helpSettings') or \
+ self.new_object.get('help_settings')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -204,11 +204,11 @@ class OrganizationsBrandingPolicies(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
- ("enabled", "enabled"),
("adminSettings", "adminSettings"),
- ("helpSettings", "helpSettings"),
("customLogo", "customLogo"),
+ ("enabled", "enabled"),
+ ("helpSettings", "helpSettings"),
+ ("name", "name"),
("organizationId", "organizationId"),
("brandingPolicyId", "brandingPolicyId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_camera_boundaries_areas_by_device_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_camera_boundaries_areas_by_device_info.py
new file mode 100644
index 000000000..a54a4f830
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_camera_boundaries_areas_by_device_info.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ serials=dict(type="list"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("serials") is not None:
+ new_object["serials"] = params.get(
+ "serials")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="camera",
+ function='getOrganizationCameraBoundariesAreasByDevice',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_camera_boundaries_lines_by_device_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_camera_boundaries_lines_by_device_info.py
new file mode 100644
index 000000000..89f74a210
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_camera_boundaries_lines_by_device_info.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ serials=dict(type="list"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("serials") is not None:
+ new_object["serials"] = params.get(
+ "serials")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="camera",
+ function='getOrganizationCameraBoundariesLinesByDevice',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_camera_detections_history_by_boundary_by_interval_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_camera_detections_history_by_boundary_by_interval_info.py
new file mode 100644
index 000000000..fd9ef63d5
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_camera_detections_history_by_boundary_by_interval_info.py
@@ -0,0 +1,116 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ boundaryIds=dict(type="list"),
+ ranges=dict(type="list"),
+ duration=dict(type="int"),
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ boundaryTypes=dict(type="list"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("boundaryIds") is not None:
+ new_object["boundaryIds"] = params.get(
+ "boundaryIds")
+ if params.get("ranges") is not None:
+ new_object["ranges"] = params.get(
+ "ranges")
+ if params.get("duration") is not None:
+ new_object["duration"] = params.get(
+ "duration")
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("boundaryTypes") is not None:
+ new_object["boundaryTypes"] = params.get(
+ "boundaryTypes")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="camera",
+ function='getOrganizationCameraDetectionsHistoryByBoundaryByInterval',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_camera_permissions_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_camera_permissions_info.py
new file mode 100644
index 000000000..3eb13d08d
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_camera_permissions_info.py
@@ -0,0 +1,102 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ permissionScopeId=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_object(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("permissionScopeId") is not None:
+ new_object["permissionScopeId"] = params.get(
+ "permissionScopeId")
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ id = self._task.args.get("permissionScopeId")
+ if id:
+ response = meraki.exec_meraki(
+ family="camera",
+ function='getOrganizationCameraPermission',
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
+ if not id:
+ # NOTE: Does not have a get all method or it is in another action
+ response = None
+ meraki.object_modify_result(changed=False, result="Module does not have get all, check arguments of module")
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_camera_roles.py b/ansible_collections/cisco/meraki/plugins/action/organizations_camera_roles.py
new file mode 100644
index 000000000..222b2503d
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_camera_roles.py
@@ -0,0 +1,252 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or
+# https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+ meraki_compare_equality,
+ get_dict_result,
+)
+from ansible_collections.cisco.meraki.plugins.plugin_utils.exceptions import (
+ InconsistentParameters,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ state=dict(type="str", default="present", choices=["present", "absent"]),
+ appliedOnDevices=dict(type="list"),
+ appliedOnNetworks=dict(type="list"),
+ appliedOrgWide=dict(type="list"),
+ name=dict(type="str"),
+ organizationId=dict(type="str"),
+))
+
+required_if = [
+ ("state", "present", ["name", "organizationId"], True),
+ ("state", "absent", ["name", "organizationId"], True),
+]
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class OrganizationsCameraRoles(object):
+ def __init__(self, params, meraki):
+ self.meraki = meraki
+ self.new_object = dict(
+ appliedOnDevices=params.get("appliedOnDevices"),
+ appliedOnNetworks=params.get("appliedOnNetworks"),
+ appliedOrgWide=params.get("appliedOrgWide"),
+ name=params.get("name"),
+ organizationId=params.get("organizationId"),
+ )
+
+ def get_all_params(self, name=None, id=None):
+ new_object_params = {}
+ if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
+ new_object_params['organizationId'] = self.new_object.get('organizationId') or \
+ self.new_object.get('organization_id')
+ return new_object_params
+
+ def create_params(self):
+ new_object_params = {}
+ if self.new_object.get('appliedOnDevices') is not None or self.new_object.get('applied_on_devices') is not None:
+ new_object_params['appliedOnDevices'] = self.new_object.get('appliedOnDevices') or \
+ self.new_object.get('applied_on_devices')
+ if self.new_object.get('appliedOnNetworks') is not None or self.new_object.get('applied_on_networks') is not None:
+ new_object_params['appliedOnNetworks'] = self.new_object.get('appliedOnNetworks') or \
+ self.new_object.get('applied_on_networks')
+ if self.new_object.get('appliedOrgWide') is not None or self.new_object.get('applied_org_wide') is not None:
+ new_object_params['appliedOrgWide'] = self.new_object.get('appliedOrgWide') or \
+ self.new_object.get('applied_org_wide')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
+ new_object_params['organizationId'] = self.new_object.get('organizationId') or \
+ self.new_object.get('organization_id')
+ return new_object_params
+
+ def get_object_by_name(self, name):
+ result = None
+ # NOTE: Does not have a get by name method or it is in another action
+ try:
+ items = self.meraki.exec_meraki(
+ family="camera",
+ function="getOrganizationCameraRoles",
+ params=self.get_all_params(name=name),
+ )
+ if isinstance(items, dict):
+ if 'response' in items:
+ items = items.get('response')
+ result = get_dict_result(items, 'name', name)
+ if result is None:
+ result = items
+ except Exception as e:
+ print("Error: ", e)
+ result = None
+ return result
+
+ def get_object_by_id(self, id):
+ result = None
+ # NOTE: Does not have a get by id method or it is in another action
+ try:
+ items = self.meraki.exec_meraki(
+ family="camera",
+ function="getOrganizationCameraRoles",
+ params=self.get_all_params(id=id),
+ )
+ if isinstance(items, dict):
+ if 'response' in items:
+ items = items.get('response')
+ result = get_dict_result(items, 'id', id)
+ except Exception as e:
+ print("Error: ", e)
+ result = None
+ return result
+
+ def exists(self):
+ id_exists = False
+ name_exists = False
+ prev_obj = None
+ o_id = self.new_object.get("id")
+ name = self.new_object.get("name")
+ if o_id:
+ prev_obj = self.get_object_by_id(o_id)
+ id_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if not id_exists and name:
+ prev_obj = self.get_object_by_name(name)
+ name_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if name_exists:
+ _id = prev_obj.get("id")
+ if id_exists and name_exists and o_id != _id:
+ raise InconsistentParameters(
+ "The 'id' and 'name' params don't refer to the same object")
+ if _id:
+ self.new_object.update(dict(id=_id))
+ it_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ return (it_exists, prev_obj)
+
+ def requires_update(self, current_obj):
+ requested_obj = self.new_object
+
+ obj_params = [
+ ("appliedOnDevices", "appliedOnDevices"),
+ ("appliedOnNetworks", "appliedOnNetworks"),
+ ("appliedOrgWide", "appliedOrgWide"),
+ ("name", "name"),
+ ("organizationId", "organizationId"),
+ ]
+ # Method 1. Params present in request (Ansible) obj are the same as the current (DNAC) params
+ # If any does not have eq params, it requires update
+ return any(not meraki_compare_equality(current_obj.get(meraki_param),
+ requested_obj.get(ansible_param))
+ for (meraki_param, ansible_param) in obj_params)
+
+ def create(self):
+ result = self.meraki.exec_meraki(
+ family="camera",
+ function="createOrganizationCameraRole",
+ params=self.create_params(),
+ op_modifies=True,
+ )
+ return result
+
+ def update(self):
+ id = self.new_object.get("id")
+ name = self.new_object.get("name")
+ result = None
+ # NOTE: Does not have update method. What do we do?
+ return result
+
+ def delete(self):
+ id = self.new_object.get("id")
+ name = self.new_object.get("name")
+ result = None
+ # NOTE: Does not have delete method. What do we do?
+ return result
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(self._task.args)
+ obj = OrganizationsCameraRoles(self._task.args, meraki)
+
+ state = self._task.args.get("state")
+
+ response = None
+
+ if state == "present":
+ (obj_exists, prev_obj) = obj.exists()
+ if obj_exists:
+ if obj.requires_update(prev_obj):
+ response = obj.update()
+ meraki.object_updated()
+ else:
+ response = prev_obj
+ meraki.object_already_present()
+ else:
+ response = obj.create()
+ meraki.object_created()
+
+ elif state == "absent":
+ (obj_exists, prev_obj) = obj.exists()
+ if obj_exists:
+ response = obj.delete()
+ meraki.object_deleted()
+ else:
+ meraki.object_already_absent()
+
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_camera_roles_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_camera_roles_info.py
new file mode 100644
index 000000000..2a100b4e2
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_camera_roles_info.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="camera",
+ function='getOrganizationCameraRoles',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_claim.py b/ansible_collections/cisco/meraki/plugins/action/organizations_claim.py
index 5439a5af8..6f3a8ef92 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_claim.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_claim.py
@@ -25,9 +25,9 @@ from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
+ licenses=dict(type="list"),
orders=dict(type="list"),
serials=dict(type="list"),
- licenses=dict(type="list"),
organizationId=dict(type="str"),
))
@@ -67,9 +67,9 @@ class ActionModule(ActionBase):
def get_object(self, params):
new_object = dict(
+ licenses=params.get("licenses"),
orders=params.get("orders"),
serials=params.get("serials"),
- licenses=params.get("licenses"),
organizationId=params.get("organizationId"),
)
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_config_templates.py b/ansible_collections/cisco/meraki/plugins/action/organizations_config_templates.py
index 09dc845b0..1811392e7 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_config_templates.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_config_templates.py
@@ -32,6 +32,7 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
+ copyFromNetworkId=dict(type="str"),
name=dict(type="str"),
timeZone=dict(type="str"),
organizationId=dict(type="str"),
@@ -51,6 +52,7 @@ class OrganizationsConfigTemplates(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ copyFromNetworkId=params.get("copyFromNetworkId"),
name=params.get("name"),
timeZone=params.get("timeZone"),
organizationId=params.get("organizationId"),
@@ -76,6 +78,9 @@ class OrganizationsConfigTemplates(object):
def create_params(self):
new_object_params = {}
+ if self.new_object.get('copyFromNetworkId') is not None or self.new_object.get('copy_from_network_id') is not None:
+ new_object_params['copyFromNetworkId'] = self.new_object.get('copyFromNetworkId') or \
+ self.new_object.get('copy_from_network_id')
if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
new_object_params['name'] = self.new_object.get('name') or \
self.new_object.get('name')
@@ -182,6 +187,7 @@ class OrganizationsConfigTemplates(object):
requested_obj = self.new_object
obj_params = [
+ ("copyFromNetworkId", "copyFromNetworkId"),
("name", "name"),
("timeZone", "timeZone"),
("organizationId", "organizationId"),
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_config_templates_switch_profiles_ports.py b/ansible_collections/cisco/meraki/plugins/action/organizations_config_templates_switch_profiles_ports.py
index 38cd937fc..82963b4b0 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_config_templates_switch_profiles_ports.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_config_templates_switch_profiles_ports.py
@@ -32,29 +32,29 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- name=dict(type="str"),
- tags=dict(type="list"),
- enabled=dict(type="bool"),
- poeEnabled=dict(type="bool"),
- type=dict(type="str"),
- vlan=dict(type="int"),
- voiceVlan=dict(type="int"),
+ accessPolicyNumber=dict(type="int"),
+ accessPolicyType=dict(type="str"),
allowedVlans=dict(type="str"),
+ daiTrusted=dict(type="bool"),
+ enabled=dict(type="bool"),
+ flexibleStackingEnabled=dict(type="bool"),
isolationEnabled=dict(type="bool"),
- rstpEnabled=dict(type="bool"),
- stpGuard=dict(type="str"),
linkNegotiation=dict(type="str"),
- portScheduleId=dict(type="str"),
- udld=dict(type="str"),
- accessPolicyType=dict(type="str"),
- accessPolicyNumber=dict(type="int"),
macAllowList=dict(type="list"),
+ name=dict(type="str"),
+ poeEnabled=dict(type="bool"),
+ portScheduleId=dict(type="str"),
+ profile=dict(type="dict"),
+ rstpEnabled=dict(type="bool"),
stickyMacAllowList=dict(type="list"),
stickyMacAllowListLimit=dict(type="int"),
stormControlEnabled=dict(type="bool"),
- flexibleStackingEnabled=dict(type="bool"),
- daiTrusted=dict(type="bool"),
- profile=dict(type="dict"),
+ stpGuard=dict(type="str"),
+ tags=dict(type="list"),
+ type=dict(type="str"),
+ udld=dict(type="str"),
+ vlan=dict(type="int"),
+ voiceVlan=dict(type="int"),
organizationId=dict(type="str"),
configTemplateId=dict(type="str"),
profileId=dict(type="str"),
@@ -73,29 +73,29 @@ class OrganizationsConfigTemplatesSwitchProfilesPorts(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
- tags=params.get("tags"),
- enabled=params.get("enabled"),
- poeEnabled=params.get("poeEnabled"),
- type=params.get("type"),
- vlan=params.get("vlan"),
- voiceVlan=params.get("voiceVlan"),
+ accessPolicyNumber=params.get("accessPolicyNumber"),
+ accessPolicyType=params.get("accessPolicyType"),
allowedVlans=params.get("allowedVlans"),
+ daiTrusted=params.get("daiTrusted"),
+ enabled=params.get("enabled"),
+ flexibleStackingEnabled=params.get("flexibleStackingEnabled"),
isolationEnabled=params.get("isolationEnabled"),
- rstpEnabled=params.get("rstpEnabled"),
- stpGuard=params.get("stpGuard"),
linkNegotiation=params.get("linkNegotiation"),
- portScheduleId=params.get("portScheduleId"),
- udld=params.get("udld"),
- accessPolicyType=params.get("accessPolicyType"),
- accessPolicyNumber=params.get("accessPolicyNumber"),
macAllowList=params.get("macAllowList"),
+ name=params.get("name"),
+ poeEnabled=params.get("poeEnabled"),
+ portScheduleId=params.get("portScheduleId"),
+ profile=params.get("profile"),
+ rstpEnabled=params.get("rstpEnabled"),
stickyMacAllowList=params.get("stickyMacAllowList"),
stickyMacAllowListLimit=params.get("stickyMacAllowListLimit"),
stormControlEnabled=params.get("stormControlEnabled"),
- flexibleStackingEnabled=params.get("flexibleStackingEnabled"),
- daiTrusted=params.get("daiTrusted"),
- profile=params.get("profile"),
+ stpGuard=params.get("stpGuard"),
+ tags=params.get("tags"),
+ type=params.get("type"),
+ udld=params.get("udld"),
+ vlan=params.get("vlan"),
+ voiceVlan=params.get("voiceVlan"),
organization_id=params.get("organizationId"),
config_template_id=params.get("configTemplateId"),
profile_id=params.get("profileId"),
@@ -133,53 +133,42 @@ class OrganizationsConfigTemplatesSwitchProfilesPorts(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
- if self.new_object.get('tags') is not None or self.new_object.get('tags') is not None:
- new_object_params['tags'] = self.new_object.get('tags') or \
- self.new_object.get('tags')
- if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
- new_object_params['enabled'] = self.new_object.get('enabled')
- if self.new_object.get('poeEnabled') is not None or self.new_object.get('poe_enabled') is not None:
- new_object_params['poeEnabled'] = self.new_object.get('poeEnabled')
- if self.new_object.get('type') is not None or self.new_object.get('type') is not None:
- new_object_params['type'] = self.new_object.get('type') or \
- self.new_object.get('type')
- if self.new_object.get('vlan') is not None or self.new_object.get('vlan') is not None:
- new_object_params['vlan'] = self.new_object.get('vlan') or \
- self.new_object.get('vlan')
- if self.new_object.get('voiceVlan') is not None or self.new_object.get('voice_vlan') is not None:
- new_object_params['voiceVlan'] = self.new_object.get('voiceVlan') or \
- self.new_object.get('voice_vlan')
+ if self.new_object.get('accessPolicyNumber') is not None or self.new_object.get('access_policy_number') is not None:
+ new_object_params['accessPolicyNumber'] = self.new_object.get('accessPolicyNumber') or \
+ self.new_object.get('access_policy_number')
+ if self.new_object.get('accessPolicyType') is not None or self.new_object.get('access_policy_type') is not None:
+ new_object_params['accessPolicyType'] = self.new_object.get('accessPolicyType') or \
+ self.new_object.get('access_policy_type')
if self.new_object.get('allowedVlans') is not None or self.new_object.get('allowed_vlans') is not None:
new_object_params['allowedVlans'] = self.new_object.get('allowedVlans') or \
self.new_object.get('allowed_vlans')
+ if self.new_object.get('daiTrusted') is not None or self.new_object.get('dai_trusted') is not None:
+ new_object_params['daiTrusted'] = self.new_object.get('daiTrusted')
+ if self.new_object.get('enabled') is not None or self.new_object.get('enabled') is not None:
+ new_object_params['enabled'] = self.new_object.get('enabled')
+ if self.new_object.get('flexibleStackingEnabled') is not None or self.new_object.get('flexible_stacking_enabled') is not None:
+ new_object_params['flexibleStackingEnabled'] = self.new_object.get('flexibleStackingEnabled')
if self.new_object.get('isolationEnabled') is not None or self.new_object.get('isolation_enabled') is not None:
new_object_params['isolationEnabled'] = self.new_object.get('isolationEnabled')
- if self.new_object.get('rstpEnabled') is not None or self.new_object.get('rstp_enabled') is not None:
- new_object_params['rstpEnabled'] = self.new_object.get('rstpEnabled')
- if self.new_object.get('stpGuard') is not None or self.new_object.get('stp_guard') is not None:
- new_object_params['stpGuard'] = self.new_object.get('stpGuard') or \
- self.new_object.get('stp_guard')
if self.new_object.get('linkNegotiation') is not None or self.new_object.get('link_negotiation') is not None:
new_object_params['linkNegotiation'] = self.new_object.get('linkNegotiation') or \
self.new_object.get('link_negotiation')
- if self.new_object.get('portScheduleId') is not None or self.new_object.get('port_schedule_id') is not None:
- new_object_params['portScheduleId'] = self.new_object.get('portScheduleId') or \
- self.new_object.get('port_schedule_id')
- if self.new_object.get('udld') is not None or self.new_object.get('udld') is not None:
- new_object_params['udld'] = self.new_object.get('udld') or \
- self.new_object.get('udld')
- if self.new_object.get('accessPolicyType') is not None or self.new_object.get('access_policy_type') is not None:
- new_object_params['accessPolicyType'] = self.new_object.get('accessPolicyType') or \
- self.new_object.get('access_policy_type')
- if self.new_object.get('accessPolicyNumber') is not None or self.new_object.get('access_policy_number') is not None:
- new_object_params['accessPolicyNumber'] = self.new_object.get('accessPolicyNumber') or \
- self.new_object.get('access_policy_number')
if self.new_object.get('macAllowList') is not None or self.new_object.get('mac_allow_list') is not None:
new_object_params['macAllowList'] = self.new_object.get('macAllowList') or \
self.new_object.get('mac_allow_list')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('poeEnabled') is not None or self.new_object.get('poe_enabled') is not None:
+ new_object_params['poeEnabled'] = self.new_object.get('poeEnabled')
+ if self.new_object.get('portScheduleId') is not None or self.new_object.get('port_schedule_id') is not None:
+ new_object_params['portScheduleId'] = self.new_object.get('portScheduleId') or \
+ self.new_object.get('port_schedule_id')
+ if self.new_object.get('profile') is not None or self.new_object.get('profile') is not None:
+ new_object_params['profile'] = self.new_object.get('profile') or \
+ self.new_object.get('profile')
+ if self.new_object.get('rstpEnabled') is not None or self.new_object.get('rstp_enabled') is not None:
+ new_object_params['rstpEnabled'] = self.new_object.get('rstpEnabled')
if self.new_object.get('stickyMacAllowList') is not None or self.new_object.get('sticky_mac_allow_list') is not None:
new_object_params['stickyMacAllowList'] = self.new_object.get('stickyMacAllowList') or \
self.new_object.get('sticky_mac_allow_list')
@@ -188,13 +177,24 @@ class OrganizationsConfigTemplatesSwitchProfilesPorts(object):
self.new_object.get('sticky_mac_allow_list_limit')
if self.new_object.get('stormControlEnabled') is not None or self.new_object.get('storm_control_enabled') is not None:
new_object_params['stormControlEnabled'] = self.new_object.get('stormControlEnabled')
- if self.new_object.get('flexibleStackingEnabled') is not None or self.new_object.get('flexible_stacking_enabled') is not None:
- new_object_params['flexibleStackingEnabled'] = self.new_object.get('flexibleStackingEnabled')
- if self.new_object.get('daiTrusted') is not None or self.new_object.get('dai_trusted') is not None:
- new_object_params['daiTrusted'] = self.new_object.get('daiTrusted')
- if self.new_object.get('profile') is not None or self.new_object.get('profile') is not None:
- new_object_params['profile'] = self.new_object.get('profile') or \
- self.new_object.get('profile')
+ if self.new_object.get('stpGuard') is not None or self.new_object.get('stp_guard') is not None:
+ new_object_params['stpGuard'] = self.new_object.get('stpGuard') or \
+ self.new_object.get('stp_guard')
+ if self.new_object.get('tags') is not None or self.new_object.get('tags') is not None:
+ new_object_params['tags'] = self.new_object.get('tags') or \
+ self.new_object.get('tags')
+ if self.new_object.get('type') is not None or self.new_object.get('type') is not None:
+ new_object_params['type'] = self.new_object.get('type') or \
+ self.new_object.get('type')
+ if self.new_object.get('udld') is not None or self.new_object.get('udld') is not None:
+ new_object_params['udld'] = self.new_object.get('udld') or \
+ self.new_object.get('udld')
+ if self.new_object.get('vlan') is not None or self.new_object.get('vlan') is not None:
+ new_object_params['vlan'] = self.new_object.get('vlan') or \
+ self.new_object.get('vlan')
+ if self.new_object.get('voiceVlan') is not None or self.new_object.get('voice_vlan') is not None:
+ new_object_params['voiceVlan'] = self.new_object.get('voiceVlan') or \
+ self.new_object.get('voice_vlan')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -278,29 +278,29 @@ class OrganizationsConfigTemplatesSwitchProfilesPorts(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
- ("tags", "tags"),
- ("enabled", "enabled"),
- ("poeEnabled", "poeEnabled"),
- ("type", "type"),
- ("vlan", "vlan"),
- ("voiceVlan", "voiceVlan"),
+ ("accessPolicyNumber", "accessPolicyNumber"),
+ ("accessPolicyType", "accessPolicyType"),
("allowedVlans", "allowedVlans"),
+ ("daiTrusted", "daiTrusted"),
+ ("enabled", "enabled"),
+ ("flexibleStackingEnabled", "flexibleStackingEnabled"),
("isolationEnabled", "isolationEnabled"),
- ("rstpEnabled", "rstpEnabled"),
- ("stpGuard", "stpGuard"),
("linkNegotiation", "linkNegotiation"),
- ("portScheduleId", "portScheduleId"),
- ("udld", "udld"),
- ("accessPolicyType", "accessPolicyType"),
- ("accessPolicyNumber", "accessPolicyNumber"),
("macAllowList", "macAllowList"),
+ ("name", "name"),
+ ("poeEnabled", "poeEnabled"),
+ ("portScheduleId", "portScheduleId"),
+ ("profile", "profile"),
+ ("rstpEnabled", "rstpEnabled"),
("stickyMacAllowList", "stickyMacAllowList"),
("stickyMacAllowListLimit", "stickyMacAllowListLimit"),
("stormControlEnabled", "stormControlEnabled"),
- ("flexibleStackingEnabled", "flexibleStackingEnabled"),
- ("daiTrusted", "daiTrusted"),
- ("profile", "profile"),
+ ("stpGuard", "stpGuard"),
+ ("tags", "tags"),
+ ("type", "type"),
+ ("udld", "udld"),
+ ("vlan", "vlan"),
+ ("voiceVlan", "voiceVlan"),
("organizationId", "organizationId"),
("configTemplateId", "configTemplateId"),
("profileId", "profileId"),
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_devices_availabilities_change_history_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_devices_availabilities_change_history_info.py
new file mode 100644
index 000000000..feee0396e
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_devices_availabilities_change_history_info.py
@@ -0,0 +1,136 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ startingAfter=dict(type="str"),
+ endingBefore=dict(type="str"),
+ t0=dict(type="str"),
+ t1=dict(type="str"),
+ timespan=dict(type="float"),
+ serials=dict(type="list"),
+ productTypes=dict(type="list"),
+ networkIds=dict(type="list"),
+ statuses=dict(type="list"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("startingAfter") is not None:
+ new_object["startingAfter"] = params.get(
+ "startingAfter")
+ if params.get("endingBefore") is not None:
+ new_object["endingBefore"] = params.get(
+ "endingBefore")
+ if params.get("t0") is not None:
+ new_object["t0"] = params.get(
+ "t0")
+ if params.get("t1") is not None:
+ new_object["t1"] = params.get(
+ "t1")
+ if params.get("timespan") is not None:
+ new_object["timespan"] = params.get(
+ "timespan")
+ if params.get("serials") is not None:
+ new_object["serials"] = params.get(
+ "serials")
+ if params.get("productTypes") is not None:
+ new_object["productTypes"] = params.get(
+ "productTypes")
+ if params.get("networkIds") is not None:
+ new_object["networkIds"] = params.get(
+ "networkIds")
+ if params.get("statuses") is not None:
+ new_object["statuses"] = params.get(
+ "statuses")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="organizations",
+ function='getOrganizationDevicesAvailabilitiesChangeHistory',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_devices_boots_history_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_devices_boots_history_info.py
new file mode 100644
index 000000000..53053eb7a
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_devices_boots_history_info.py
@@ -0,0 +1,132 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ t0=dict(type="str"),
+ t1=dict(type="str"),
+ timespan=dict(type="float"),
+ serials=dict(type="list"),
+ mostRecentPerDevice=dict(type="bool"),
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ startingAfter=dict(type="str"),
+ endingBefore=dict(type="str"),
+ sortOrder=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("t0") is not None:
+ new_object["t0"] = params.get(
+ "t0")
+ if params.get("t1") is not None:
+ new_object["t1"] = params.get(
+ "t1")
+ if params.get("timespan") is not None:
+ new_object["timespan"] = params.get(
+ "timespan")
+ if params.get("serials") is not None:
+ new_object["serials"] = params.get(
+ "serials")
+ if params.get("mostRecentPerDevice") is not None:
+ new_object["mostRecentPerDevice"] = params.get(
+ "mostRecentPerDevice")
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("startingAfter") is not None:
+ new_object["startingAfter"] = params.get(
+ "startingAfter")
+ if params.get("endingBefore") is not None:
+ new_object["endingBefore"] = params.get(
+ "endingBefore")
+ if params.get("sortOrder") is not None:
+ new_object["sortOrder"] = params.get(
+ "sortOrder")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="organizations",
+ function='getOrganizationDevicesBootsHistory',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_early_access_features_opt_ins.py b/ansible_collections/cisco/meraki/plugins/action/organizations_early_access_features_opt_ins.py
index 7a952168f..b0ebdf793 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_early_access_features_opt_ins.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_early_access_features_opt_ins.py
@@ -32,8 +32,8 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- shortName=dict(type="str"),
limitScopeToNetworks=dict(type="list"),
+ shortName=dict(type="str"),
organizationId=dict(type="str"),
optInId=dict(type="str"),
))
@@ -51,8 +51,8 @@ class OrganizationsEarlyAccessFeaturesOptIns(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- shortName=params.get("shortName"),
limitScopeToNetworks=params.get("limitScopeToNetworks"),
+ shortName=params.get("shortName"),
organizationId=params.get("organizationId"),
optInId=params.get("optInId"),
)
@@ -76,12 +76,12 @@ class OrganizationsEarlyAccessFeaturesOptIns(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('shortName') is not None or self.new_object.get('short_name') is not None:
- new_object_params['shortName'] = self.new_object.get('shortName') or \
- self.new_object.get('short_name')
if self.new_object.get('limitScopeToNetworks') is not None or self.new_object.get('limit_scope_to_networks') is not None:
new_object_params['limitScopeToNetworks'] = self.new_object.get('limitScopeToNetworks') or \
self.new_object.get('limit_scope_to_networks')
+ if self.new_object.get('shortName') is not None or self.new_object.get('short_name') is not None:
+ new_object_params['shortName'] = self.new_object.get('shortName') or \
+ self.new_object.get('short_name')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -179,8 +179,8 @@ class OrganizationsEarlyAccessFeaturesOptIns(object):
requested_obj = self.new_object
obj_params = [
- ("shortName", "shortName"),
("limitScopeToNetworks", "limitScopeToNetworks"),
+ ("shortName", "shortName"),
("organizationId", "organizationId"),
("optInId", "optInId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_firmware_upgrades_by_device_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_firmware_upgrades_by_device_info.py
index 254770a93..942ee2ecb 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_firmware_upgrades_by_device_info.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_firmware_upgrades_by_device_info.py
@@ -34,8 +34,8 @@ argument_spec.update(dict(
networkIds=dict(type="list"),
serials=dict(type="list"),
macs=dict(type="list"),
- firmwareUpgradeIds=dict(type="list"),
firmwareUpgradeBatchIds=dict(type="list"),
+ upgradeStatuses=dict(type="list"),
))
required_if = []
@@ -99,12 +99,12 @@ class ActionModule(ActionBase):
if params.get("macs") is not None:
new_object["macs"] = params.get(
"macs")
- if params.get("firmwareUpgradeIds") is not None:
- new_object["firmwareUpgradeIds"] = params.get(
- "firmwareUpgradeIds")
if params.get("firmwareUpgradeBatchIds") is not None:
new_object["firmwareUpgradeBatchIds"] = params.get(
"firmwareUpgradeBatchIds")
+ if params.get("upgradeStatuses") is not None:
+ new_object["upgradeStatuses"] = params.get(
+ "upgradeStatuses")
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_firmware_upgrades_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_firmware_upgrades_info.py
index e8e72f6ce..afe4584e9 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_firmware_upgrades_info.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_firmware_upgrades_info.py
@@ -26,8 +26,13 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
organizationId=dict(type="str"),
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ startingAfter=dict(type="str"),
+ endingBefore=dict(type="str"),
status=dict(type="list"),
- productType=dict(type="list"),
+ productTypes=dict(type="list"),
))
required_if = []
@@ -69,12 +74,25 @@ class ActionModule(ActionBase):
if params.get("organizationId") is not None:
new_object["organizationId"] = params.get(
"organizationId")
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("startingAfter") is not None:
+ new_object["startingAfter"] = params.get(
+ "startingAfter")
+ if params.get("endingBefore") is not None:
+ new_object["endingBefore"] = params.get(
+ "endingBefore")
if params.get("status") is not None:
new_object["status"] = params.get(
"status")
- if params.get("productType") is not None:
- new_object["productType"] = params.get(
- "productType")
+ if params.get("productTypes") is not None:
+ new_object["productTypes"] = params.get(
+ "productTypes")
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_info.py
index e7dba48d4..3a48d1c4b 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_info.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_info.py
@@ -25,6 +25,11 @@ from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ startingAfter=dict(type="str"),
+ endingBefore=dict(type="str"),
organizationId=dict(type="str"),
))
@@ -71,6 +76,19 @@ class ActionModule(ActionBase):
def get_all(self, params):
new_object = {}
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("startingAfter") is not None:
+ new_object["startingAfter"] = params.get(
+ "startingAfter")
+ if params.get("endingBefore") is not None:
+ new_object["endingBefore"] = params.get(
+ "endingBefore")
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_insight_monitored_media_servers.py b/ansible_collections/cisco/meraki/plugins/action/organizations_insight_monitored_media_servers.py
index 14957d943..dbead6d01 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_insight_monitored_media_servers.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_insight_monitored_media_servers.py
@@ -32,9 +32,9 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- name=dict(type="str"),
address=dict(type="str"),
bestEffortMonitoringEnabled=dict(type="bool"),
+ name=dict(type="str"),
organizationId=dict(type="str"),
monitoredMediaServerId=dict(type="str"),
))
@@ -52,9 +52,9 @@ class OrganizationsInsightMonitoredMediaServers(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
address=params.get("address"),
bestEffortMonitoringEnabled=params.get("bestEffortMonitoringEnabled"),
+ name=params.get("name"),
organizationId=params.get("organizationId"),
monitoredMediaServerId=params.get("monitoredMediaServerId"),
)
@@ -78,14 +78,14 @@ class OrganizationsInsightMonitoredMediaServers(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
if self.new_object.get('address') is not None or self.new_object.get('address') is not None:
new_object_params['address'] = self.new_object.get('address') or \
self.new_object.get('address')
if self.new_object.get('bestEffortMonitoringEnabled') is not None or self.new_object.get('best_effort_monitoring_enabled') is not None:
new_object_params['bestEffortMonitoringEnabled'] = self.new_object.get('bestEffortMonitoringEnabled')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -103,14 +103,14 @@ class OrganizationsInsightMonitoredMediaServers(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
if self.new_object.get('address') is not None or self.new_object.get('address') is not None:
new_object_params['address'] = self.new_object.get('address') or \
self.new_object.get('address')
if self.new_object.get('bestEffortMonitoringEnabled') is not None or self.new_object.get('best_effort_monitoring_enabled') is not None:
new_object_params['bestEffortMonitoringEnabled'] = self.new_object.get('bestEffortMonitoringEnabled')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -188,9 +188,9 @@ class OrganizationsInsightMonitoredMediaServers(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
("address", "address"),
("bestEffortMonitoringEnabled", "bestEffortMonitoringEnabled"),
+ ("name", "name"),
("organizationId", "organizationId"),
("monitoredMediaServerId", "monitoredMediaServerId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_inventory_claim.py b/ansible_collections/cisco/meraki/plugins/action/organizations_inventory_claim.py
index 5bc648b91..e25a3d67b 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_inventory_claim.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_inventory_claim.py
@@ -25,9 +25,9 @@ from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
+ licenses=dict(type="list"),
orders=dict(type="list"),
serials=dict(type="list"),
- licenses=dict(type="list"),
organizationId=dict(type="str"),
))
@@ -67,9 +67,9 @@ class ActionModule(ActionBase):
def get_object(self, params):
new_object = dict(
+ licenses=params.get("licenses"),
orders=params.get("orders"),
serials=params.get("serials"),
- licenses=params.get("licenses"),
organizationId=params.get("organizationId"),
)
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_inventory_onboarding_cloud_monitoring_export_events.py b/ansible_collections/cisco/meraki/plugins/action/organizations_inventory_onboarding_cloud_monitoring_export_events.py
index 11cefb220..6a03ab49f 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_inventory_onboarding_cloud_monitoring_export_events.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_inventory_onboarding_cloud_monitoring_export_events.py
@@ -26,9 +26,9 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
logEvent=dict(type="str"),
- timestamp=dict(type="int"),
- targetOS=dict(type="str"),
request=dict(type="str"),
+ targetOS=dict(type="str"),
+ timestamp=dict(type="int"),
organizationId=dict(type="str"),
))
@@ -69,9 +69,9 @@ class ActionModule(ActionBase):
def get_object(self, params):
new_object = dict(
logEvent=params.get("logEvent"),
- timestamp=params.get("timestamp"),
- targetOS=params.get("targetOS"),
request=params.get("request"),
+ targetOS=params.get("targetOS"),
+ timestamp=params.get("timestamp"),
organizationId=params.get("organizationId"),
)
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_inventory_onboarding_cloud_monitoring_networks_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_inventory_onboarding_cloud_monitoring_networks_info.py
index 409b7abdb..bf953f272 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_inventory_onboarding_cloud_monitoring_networks_info.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_inventory_onboarding_cloud_monitoring_networks_info.py
@@ -27,6 +27,7 @@ argument_spec = meraki_argument_spec()
argument_spec.update(dict(
organizationId=dict(type="str"),
deviceType=dict(type="str"),
+ search=dict(type="str"),
perPage=dict(type="int"),
total_pages=dict(type="int"),
direction=dict(type="str"),
@@ -76,6 +77,9 @@ class ActionModule(ActionBase):
if params.get("deviceType") is not None:
new_object["deviceType"] = params.get(
"deviceType")
+ if params.get("search") is not None:
+ new_object["search"] = params.get(
+ "search")
if params.get("perPage") is not None:
new_object["perPage"] = params.get(
"perPage")
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_login_security.py b/ansible_collections/cisco/meraki/plugins/action/organizations_login_security.py
index 64f5ea7b4..d231966d9 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_login_security.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_login_security.py
@@ -32,19 +32,19 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
- enforcePasswordExpiration=dict(type="bool"),
- passwordExpirationDays=dict(type="int"),
- enforceDifferentPasswords=dict(type="bool"),
- numDifferentPasswords=dict(type="int"),
- enforceStrongPasswords=dict(type="bool"),
- enforceAccountLockout=dict(type="bool"),
accountLockoutAttempts=dict(type="int"),
+ apiAuthentication=dict(type="dict"),
+ enforceAccountLockout=dict(type="bool"),
+ enforceDifferentPasswords=dict(type="bool"),
enforceIdleTimeout=dict(type="bool"),
- idleTimeoutMinutes=dict(type="int"),
- enforceTwoFactorAuth=dict(type="bool"),
enforceLoginIpRanges=dict(type="bool"),
+ enforcePasswordExpiration=dict(type="bool"),
+ enforceStrongPasswords=dict(type="bool"),
+ enforceTwoFactorAuth=dict(type="bool"),
+ idleTimeoutMinutes=dict(type="int"),
loginIpRanges=dict(type="list"),
- apiAuthentication=dict(type="dict"),
+ numDifferentPasswords=dict(type="int"),
+ passwordExpirationDays=dict(type="int"),
organizationId=dict(type="str"),
))
@@ -60,19 +60,19 @@ class OrganizationsLoginSecurity(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- enforcePasswordExpiration=params.get("enforcePasswordExpiration"),
- passwordExpirationDays=params.get("passwordExpirationDays"),
- enforceDifferentPasswords=params.get("enforceDifferentPasswords"),
- numDifferentPasswords=params.get("numDifferentPasswords"),
- enforceStrongPasswords=params.get("enforceStrongPasswords"),
- enforceAccountLockout=params.get("enforceAccountLockout"),
accountLockoutAttempts=params.get("accountLockoutAttempts"),
+ apiAuthentication=params.get("apiAuthentication"),
+ enforceAccountLockout=params.get("enforceAccountLockout"),
+ enforceDifferentPasswords=params.get("enforceDifferentPasswords"),
enforceIdleTimeout=params.get("enforceIdleTimeout"),
- idleTimeoutMinutes=params.get("idleTimeoutMinutes"),
- enforceTwoFactorAuth=params.get("enforceTwoFactorAuth"),
enforceLoginIpRanges=params.get("enforceLoginIpRanges"),
+ enforcePasswordExpiration=params.get("enforcePasswordExpiration"),
+ enforceStrongPasswords=params.get("enforceStrongPasswords"),
+ enforceTwoFactorAuth=params.get("enforceTwoFactorAuth"),
+ idleTimeoutMinutes=params.get("idleTimeoutMinutes"),
loginIpRanges=params.get("loginIpRanges"),
- apiAuthentication=params.get("apiAuthentication"),
+ numDifferentPasswords=params.get("numDifferentPasswords"),
+ passwordExpirationDays=params.get("passwordExpirationDays"),
organization_id=params.get("organizationId"),
)
@@ -85,38 +85,38 @@ class OrganizationsLoginSecurity(object):
def update_all_params(self):
new_object_params = {}
- if self.new_object.get('enforcePasswordExpiration') is not None or self.new_object.get('enforce_password_expiration') is not None:
- new_object_params['enforcePasswordExpiration'] = self.new_object.get('enforcePasswordExpiration')
- if self.new_object.get('passwordExpirationDays') is not None or self.new_object.get('password_expiration_days') is not None:
- new_object_params['passwordExpirationDays'] = self.new_object.get('passwordExpirationDays') or \
- self.new_object.get('password_expiration_days')
- if self.new_object.get('enforceDifferentPasswords') is not None or self.new_object.get('enforce_different_passwords') is not None:
- new_object_params['enforceDifferentPasswords'] = self.new_object.get('enforceDifferentPasswords')
- if self.new_object.get('numDifferentPasswords') is not None or self.new_object.get('num_different_passwords') is not None:
- new_object_params['numDifferentPasswords'] = self.new_object.get('numDifferentPasswords') or \
- self.new_object.get('num_different_passwords')
- if self.new_object.get('enforceStrongPasswords') is not None or self.new_object.get('enforce_strong_passwords') is not None:
- new_object_params['enforceStrongPasswords'] = self.new_object.get('enforceStrongPasswords')
- if self.new_object.get('enforceAccountLockout') is not None or self.new_object.get('enforce_account_lockout') is not None:
- new_object_params['enforceAccountLockout'] = self.new_object.get('enforceAccountLockout')
if self.new_object.get('accountLockoutAttempts') is not None or self.new_object.get('account_lockout_attempts') is not None:
new_object_params['accountLockoutAttempts'] = self.new_object.get('accountLockoutAttempts') or \
self.new_object.get('account_lockout_attempts')
+ if self.new_object.get('apiAuthentication') is not None or self.new_object.get('api_authentication') is not None:
+ new_object_params['apiAuthentication'] = self.new_object.get('apiAuthentication') or \
+ self.new_object.get('api_authentication')
+ if self.new_object.get('enforceAccountLockout') is not None or self.new_object.get('enforce_account_lockout') is not None:
+ new_object_params['enforceAccountLockout'] = self.new_object.get('enforceAccountLockout')
+ if self.new_object.get('enforceDifferentPasswords') is not None or self.new_object.get('enforce_different_passwords') is not None:
+ new_object_params['enforceDifferentPasswords'] = self.new_object.get('enforceDifferentPasswords')
if self.new_object.get('enforceIdleTimeout') is not None or self.new_object.get('enforce_idle_timeout') is not None:
new_object_params['enforceIdleTimeout'] = self.new_object.get('enforceIdleTimeout')
+ if self.new_object.get('enforceLoginIpRanges') is not None or self.new_object.get('enforce_login_ip_ranges') is not None:
+ new_object_params['enforceLoginIpRanges'] = self.new_object.get('enforceLoginIpRanges')
+ if self.new_object.get('enforcePasswordExpiration') is not None or self.new_object.get('enforce_password_expiration') is not None:
+ new_object_params['enforcePasswordExpiration'] = self.new_object.get('enforcePasswordExpiration')
+ if self.new_object.get('enforceStrongPasswords') is not None or self.new_object.get('enforce_strong_passwords') is not None:
+ new_object_params['enforceStrongPasswords'] = self.new_object.get('enforceStrongPasswords')
+ if self.new_object.get('enforceTwoFactorAuth') is not None or self.new_object.get('enforce_two_factor_auth') is not None:
+ new_object_params['enforceTwoFactorAuth'] = self.new_object.get('enforceTwoFactorAuth')
if self.new_object.get('idleTimeoutMinutes') is not None or self.new_object.get('idle_timeout_minutes') is not None:
new_object_params['idleTimeoutMinutes'] = self.new_object.get('idleTimeoutMinutes') or \
self.new_object.get('idle_timeout_minutes')
- if self.new_object.get('enforceTwoFactorAuth') is not None or self.new_object.get('enforce_two_factor_auth') is not None:
- new_object_params['enforceTwoFactorAuth'] = self.new_object.get('enforceTwoFactorAuth')
- if self.new_object.get('enforceLoginIpRanges') is not None or self.new_object.get('enforce_login_ip_ranges') is not None:
- new_object_params['enforceLoginIpRanges'] = self.new_object.get('enforceLoginIpRanges')
if self.new_object.get('loginIpRanges') is not None or self.new_object.get('login_ip_ranges') is not None:
new_object_params['loginIpRanges'] = self.new_object.get('loginIpRanges') or \
self.new_object.get('login_ip_ranges')
- if self.new_object.get('apiAuthentication') is not None or self.new_object.get('api_authentication') is not None:
- new_object_params['apiAuthentication'] = self.new_object.get('apiAuthentication') or \
- self.new_object.get('api_authentication')
+ if self.new_object.get('numDifferentPasswords') is not None or self.new_object.get('num_different_passwords') is not None:
+ new_object_params['numDifferentPasswords'] = self.new_object.get('numDifferentPasswords') or \
+ self.new_object.get('num_different_passwords')
+ if self.new_object.get('passwordExpirationDays') is not None or self.new_object.get('password_expiration_days') is not None:
+ new_object_params['passwordExpirationDays'] = self.new_object.get('passwordExpirationDays') or \
+ self.new_object.get('password_expiration_days')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -152,7 +152,7 @@ class OrganizationsLoginSecurity(object):
id_exists = False
name_exists = False
o_id = self.new_object.get("id")
- name = self.new_object.get("organization_id")
+ name = self.new_object.get("name")
if o_id:
prev_obj = self.get_object_by_name(o_id)
id_exists = prev_obj is not None and isinstance(prev_obj, dict)
@@ -173,18 +173,18 @@ class OrganizationsLoginSecurity(object):
requested_obj = self.new_object
obj_params = [
- ("enforcePasswordExpiration", "enforcePasswordExpiration"),
- ("enforceDifferentPasswords", "enforceDifferentPasswords"),
- ("numDifferentPasswords", "numDifferentPasswords"),
- ("enforceStrongPasswords", "enforceStrongPasswords"),
- ("enforceAccountLockout", "enforceAccountLockout"),
("accountLockoutAttempts", "accountLockoutAttempts"),
+ ("apiAuthentication", "apiAuthentication"),
+ ("enforceAccountLockout", "enforceAccountLockout"),
+ ("enforceDifferentPasswords", "enforceDifferentPasswords"),
("enforceIdleTimeout", "enforceIdleTimeout"),
- ("idleTimeoutMinutes", "idleTimeoutMinutes"),
- ("enforceTwoFactorAuth", "enforceTwoFactorAuth"),
("enforceLoginIpRanges", "enforceLoginIpRanges"),
+ ("enforcePasswordExpiration", "enforcePasswordExpiration"),
+ ("enforceStrongPasswords", "enforceStrongPasswords"),
+ ("enforceTwoFactorAuth", "enforceTwoFactorAuth"),
+ ("idleTimeoutMinutes", "idleTimeoutMinutes"),
("loginIpRanges", "loginIpRanges"),
- ("apiAuthentication", "apiAuthentication"),
+ ("numDifferentPasswords", "numDifferentPasswords"),
("organizationId", "organizationId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_networks_combine.py b/ansible_collections/cisco/meraki/plugins/action/organizations_networks_combine.py
index c6d337d78..395cd6597 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_networks_combine.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_networks_combine.py
@@ -25,9 +25,9 @@ from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
+ enrollmentString=dict(type="str"),
name=dict(type="str"),
networkIds=dict(type="list"),
- enrollmentString=dict(type="str"),
organizationId=dict(type="str"),
))
@@ -67,9 +67,9 @@ class ActionModule(ActionBase):
def get_object(self, params):
new_object = dict(
+ enrollmentString=params.get("enrollmentString"),
name=params.get("name"),
networkIds=params.get("networkIds"),
- enrollmentString=params.get("enrollmentString"),
organizationId=params.get("organizationId"),
)
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_openapi_spec_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_openapi_spec_info.py
index 6ad1215dc..2d6bb35ed 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_openapi_spec_info.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_openapi_spec_info.py
@@ -26,6 +26,7 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
organizationId=dict(type="str"),
+ version=dict(type="int"),
))
required_if = []
@@ -67,6 +68,9 @@ class ActionModule(ActionBase):
if params.get("organizationId") is not None:
new_object["organizationId"] = params.get(
"organizationId")
+ if params.get("version") is not None:
+ new_object["version"] = params.get(
+ "version")
return new_object
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_policy_objects.py b/ansible_collections/cisco/meraki/plugins/action/organizations_policy_objects.py
index 6e49366b2..e412ec4d4 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_policy_objects.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_policy_objects.py
@@ -32,14 +32,14 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- name=dict(type="str"),
category=dict(type="str"),
- type=dict(type="str"),
cidr=dict(type="str"),
fqdn=dict(type="str"),
- mask=dict(type="str"),
- ip=dict(type="str"),
groupIds=dict(type="list"),
+ ip=dict(type="str"),
+ mask=dict(type="str"),
+ name=dict(type="str"),
+ type=dict(type="str"),
organizationId=dict(type="str"),
policyObjectId=dict(type="str"),
))
@@ -57,14 +57,14 @@ class OrganizationsPolicyObjects(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
category=params.get("category"),
- type=params.get("type"),
cidr=params.get("cidr"),
fqdn=params.get("fqdn"),
- mask=params.get("mask"),
- ip=params.get("ip"),
groupIds=params.get("groupIds"),
+ ip=params.get("ip"),
+ mask=params.get("mask"),
+ name=params.get("name"),
+ type=params.get("type"),
organizationId=params.get("organizationId"),
policyObjectId=params.get("policyObjectId"),
)
@@ -98,30 +98,30 @@ class OrganizationsPolicyObjects(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
if self.new_object.get('category') is not None or self.new_object.get('category') is not None:
new_object_params['category'] = self.new_object.get('category') or \
self.new_object.get('category')
- if self.new_object.get('type') is not None or self.new_object.get('type') is not None:
- new_object_params['type'] = self.new_object.get('type') or \
- self.new_object.get('type')
if self.new_object.get('cidr') is not None or self.new_object.get('cidr') is not None:
new_object_params['cidr'] = self.new_object.get('cidr') or \
self.new_object.get('cidr')
if self.new_object.get('fqdn') is not None or self.new_object.get('fqdn') is not None:
new_object_params['fqdn'] = self.new_object.get('fqdn') or \
self.new_object.get('fqdn')
- if self.new_object.get('mask') is not None or self.new_object.get('mask') is not None:
- new_object_params['mask'] = self.new_object.get('mask') or \
- self.new_object.get('mask')
- if self.new_object.get('ip') is not None or self.new_object.get('ip') is not None:
- new_object_params['ip'] = self.new_object.get('ip') or \
- self.new_object.get('ip')
if self.new_object.get('groupIds') is not None or self.new_object.get('group_ids') is not None:
new_object_params['groupIds'] = self.new_object.get('groupIds') or \
self.new_object.get('group_ids')
+ if self.new_object.get('ip') is not None or self.new_object.get('ip') is not None:
+ new_object_params['ip'] = self.new_object.get('ip') or \
+ self.new_object.get('ip')
+ if self.new_object.get('mask') is not None or self.new_object.get('mask') is not None:
+ new_object_params['mask'] = self.new_object.get('mask') or \
+ self.new_object.get('mask')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('type') is not None or self.new_object.get('type') is not None:
+ new_object_params['type'] = self.new_object.get('type') or \
+ self.new_object.get('type')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -139,24 +139,24 @@ class OrganizationsPolicyObjects(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
if self.new_object.get('cidr') is not None or self.new_object.get('cidr') is not None:
new_object_params['cidr'] = self.new_object.get('cidr') or \
self.new_object.get('cidr')
if self.new_object.get('fqdn') is not None or self.new_object.get('fqdn') is not None:
new_object_params['fqdn'] = self.new_object.get('fqdn') or \
self.new_object.get('fqdn')
- if self.new_object.get('mask') is not None or self.new_object.get('mask') is not None:
- new_object_params['mask'] = self.new_object.get('mask') or \
- self.new_object.get('mask')
- if self.new_object.get('ip') is not None or self.new_object.get('ip') is not None:
- new_object_params['ip'] = self.new_object.get('ip') or \
- self.new_object.get('ip')
if self.new_object.get('groupIds') is not None or self.new_object.get('group_ids') is not None:
new_object_params['groupIds'] = self.new_object.get('groupIds') or \
self.new_object.get('group_ids')
+ if self.new_object.get('ip') is not None or self.new_object.get('ip') is not None:
+ new_object_params['ip'] = self.new_object.get('ip') or \
+ self.new_object.get('ip')
+ if self.new_object.get('mask') is not None or self.new_object.get('mask') is not None:
+ new_object_params['mask'] = self.new_object.get('mask') or \
+ self.new_object.get('mask')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -234,14 +234,14 @@ class OrganizationsPolicyObjects(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
("category", "category"),
- ("type", "type"),
("cidr", "cidr"),
("fqdn", "fqdn"),
- ("mask", "mask"),
- ("ip", "ip"),
("groupIds", "groupIds"),
+ ("ip", "ip"),
+ ("mask", "mask"),
+ ("name", "name"),
+ ("type", "type"),
("organizationId", "organizationId"),
("policyObjectId", "policyObjectId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_policy_objects_groups.py b/ansible_collections/cisco/meraki/plugins/action/organizations_policy_objects_groups.py
index ff6b3f852..7de772a5e 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_policy_objects_groups.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_policy_objects_groups.py
@@ -32,8 +32,8 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- name=dict(type="str"),
category=dict(type="str"),
+ name=dict(type="str"),
objectIds=dict(type="list"),
organizationId=dict(type="str"),
policyObjectGroupId=dict(type="str"),
@@ -52,8 +52,8 @@ class OrganizationsPolicyObjectsGroups(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- name=params.get("name"),
category=params.get("category"),
+ name=params.get("name"),
objectIds=params.get("objectIds"),
organizationId=params.get("organizationId"),
policyObjectGroupId=params.get("policyObjectGroupId"),
@@ -88,12 +88,12 @@ class OrganizationsPolicyObjectsGroups(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
- new_object_params['name'] = self.new_object.get('name') or \
- self.new_object.get('name')
if self.new_object.get('category') is not None or self.new_object.get('category') is not None:
new_object_params['category'] = self.new_object.get('category') or \
self.new_object.get('category')
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
if self.new_object.get('objectIds') is not None or self.new_object.get('object_ids') is not None:
new_object_params['objectIds'] = self.new_object.get('objectIds') or \
self.new_object.get('object_ids')
@@ -197,8 +197,8 @@ class OrganizationsPolicyObjectsGroups(object):
requested_obj = self.new_object
obj_params = [
- ("name", "name"),
("category", "category"),
+ ("name", "name"),
("objectIds", "objectIds"),
("organizationId", "organizationId"),
("policyObjectGroupId", "policyObjectGroupId"),
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_saml_idps.py b/ansible_collections/cisco/meraki/plugins/action/organizations_saml_idps.py
index e557665b9..196750ebf 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_saml_idps.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_saml_idps.py
@@ -32,8 +32,8 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- x509certSha1Fingerprint=dict(type="str"),
sloLogoutUrl=dict(type="str"),
+ x509certSha1Fingerprint=dict(type="str"),
organizationId=dict(type="str"),
idpId=dict(type="str"),
))
@@ -51,8 +51,8 @@ class OrganizationsSamlIdps(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- x509certSha1Fingerprint=params.get("x509certSha1Fingerprint"),
sloLogoutUrl=params.get("sloLogoutUrl"),
+ x509certSha1Fingerprint=params.get("x509certSha1Fingerprint"),
organizationId=params.get("organizationId"),
idpId=params.get("idpId"),
)
@@ -76,12 +76,12 @@ class OrganizationsSamlIdps(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('x509certSha1Fingerprint') is not None or self.new_object.get('x509cert_sha1_fingerprint') is not None:
- new_object_params['x509certSha1Fingerprint'] = self.new_object.get('x509certSha1Fingerprint') or \
- self.new_object.get('x509cert_sha1_fingerprint')
if self.new_object.get('sloLogoutUrl') is not None or self.new_object.get('slo_logout_url') is not None:
new_object_params['sloLogoutUrl'] = self.new_object.get('sloLogoutUrl') or \
self.new_object.get('slo_logout_url')
+ if self.new_object.get('x509certSha1Fingerprint') is not None or self.new_object.get('x509cert_sha1_fingerprint') is not None:
+ new_object_params['x509certSha1Fingerprint'] = self.new_object.get('x509certSha1Fingerprint') or \
+ self.new_object.get('x509cert_sha1_fingerprint')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -99,12 +99,12 @@ class OrganizationsSamlIdps(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('x509certSha1Fingerprint') is not None or self.new_object.get('x509cert_sha1_fingerprint') is not None:
- new_object_params['x509certSha1Fingerprint'] = self.new_object.get('x509certSha1Fingerprint') or \
- self.new_object.get('x509cert_sha1_fingerprint')
if self.new_object.get('sloLogoutUrl') is not None or self.new_object.get('slo_logout_url') is not None:
new_object_params['sloLogoutUrl'] = self.new_object.get('sloLogoutUrl') or \
self.new_object.get('slo_logout_url')
+ if self.new_object.get('x509certSha1Fingerprint') is not None or self.new_object.get('x509cert_sha1_fingerprint') is not None:
+ new_object_params['x509certSha1Fingerprint'] = self.new_object.get('x509certSha1Fingerprint') or \
+ self.new_object.get('x509cert_sha1_fingerprint')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -182,8 +182,8 @@ class OrganizationsSamlIdps(object):
requested_obj = self.new_object
obj_params = [
- ("x509certSha1Fingerprint", "x509certSha1Fingerprint"),
("sloLogoutUrl", "sloLogoutUrl"),
+ ("x509certSha1Fingerprint", "x509certSha1Fingerprint"),
("organizationId", "organizationId"),
("idpId", "idpId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_saml_roles.py b/ansible_collections/cisco/meraki/plugins/action/organizations_saml_roles.py
index 48dc6dfdb..bfc4a978b 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_saml_roles.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_saml_roles.py
@@ -32,10 +32,10 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present", "absent"]),
- role=dict(type="str"),
+ networks=dict(type="list"),
orgAccess=dict(type="str"),
+ role=dict(type="str"),
tags=dict(type="list"),
- networks=dict(type="list"),
organizationId=dict(type="str"),
samlRoleId=dict(type="str"),
))
@@ -53,10 +53,10 @@ class OrganizationsSamlRoles(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
- role=params.get("role"),
+ networks=params.get("networks"),
orgAccess=params.get("orgAccess"),
+ role=params.get("role"),
tags=params.get("tags"),
- networks=params.get("networks"),
organizationId=params.get("organizationId"),
samlRoleId=params.get("samlRoleId"),
)
@@ -80,18 +80,18 @@ class OrganizationsSamlRoles(object):
def create_params(self):
new_object_params = {}
- if self.new_object.get('role') is not None or self.new_object.get('role') is not None:
- new_object_params['role'] = self.new_object.get('role') or \
- self.new_object.get('role')
+ if self.new_object.get('networks') is not None or self.new_object.get('networks') is not None:
+ new_object_params['networks'] = self.new_object.get('networks') or \
+ self.new_object.get('networks')
if self.new_object.get('orgAccess') is not None or self.new_object.get('org_access') is not None:
new_object_params['orgAccess'] = self.new_object.get('orgAccess') or \
self.new_object.get('org_access')
+ if self.new_object.get('role') is not None or self.new_object.get('role') is not None:
+ new_object_params['role'] = self.new_object.get('role') or \
+ self.new_object.get('role')
if self.new_object.get('tags') is not None or self.new_object.get('tags') is not None:
new_object_params['tags'] = self.new_object.get('tags') or \
self.new_object.get('tags')
- if self.new_object.get('networks') is not None or self.new_object.get('networks') is not None:
- new_object_params['networks'] = self.new_object.get('networks') or \
- self.new_object.get('networks')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -109,18 +109,18 @@ class OrganizationsSamlRoles(object):
def update_by_id_params(self):
new_object_params = {}
- if self.new_object.get('role') is not None or self.new_object.get('role') is not None:
- new_object_params['role'] = self.new_object.get('role') or \
- self.new_object.get('role')
+ if self.new_object.get('networks') is not None or self.new_object.get('networks') is not None:
+ new_object_params['networks'] = self.new_object.get('networks') or \
+ self.new_object.get('networks')
if self.new_object.get('orgAccess') is not None or self.new_object.get('org_access') is not None:
new_object_params['orgAccess'] = self.new_object.get('orgAccess') or \
self.new_object.get('org_access')
+ if self.new_object.get('role') is not None or self.new_object.get('role') is not None:
+ new_object_params['role'] = self.new_object.get('role') or \
+ self.new_object.get('role')
if self.new_object.get('tags') is not None or self.new_object.get('tags') is not None:
new_object_params['tags'] = self.new_object.get('tags') or \
self.new_object.get('tags')
- if self.new_object.get('networks') is not None or self.new_object.get('networks') is not None:
- new_object_params['networks'] = self.new_object.get('networks') or \
- self.new_object.get('networks')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -198,10 +198,10 @@ class OrganizationsSamlRoles(object):
requested_obj = self.new_object
obj_params = [
- ("role", "role"),
+ ("networks", "networks"),
("orgAccess", "orgAccess"),
+ ("role", "role"),
("tags", "tags"),
- ("networks", "networks"),
("organizationId", "organizationId"),
("samlRoleId", "samlRoleId"),
]
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_sm_admins_roles.py b/ansible_collections/cisco/meraki/plugins/action/organizations_sm_admins_roles.py
new file mode 100644
index 000000000..4bbf8db98
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_sm_admins_roles.py
@@ -0,0 +1,256 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or
+# https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+ meraki_compare_equality,
+ get_dict_result,
+)
+from ansible_collections.cisco.meraki.plugins.plugin_utils.exceptions import (
+ InconsistentParameters,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ state=dict(type="str", default="present", choices=["present", "absent"]),
+ name=dict(type="str"),
+ scope=dict(type="str"),
+ tags=dict(type="list"),
+ organizationId=dict(type="str"),
+))
+
+required_if = [
+ ("state", "present", ["name", "organizationId"], True),
+ ("state", "absent", ["name", "organizationId"], True),
+]
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class OrganizationsSmAdminsRoles(object):
+ def __init__(self, params, meraki):
+ self.meraki = meraki
+ self.new_object = dict(
+ name=params.get("name"),
+ scope=params.get("scope"),
+ tags=params.get("tags"),
+ organizationId=params.get("organizationId"),
+ )
+
+ def get_all_params(self, name=None, id=None):
+ new_object_params = {}
+ if self.new_object.get('perPage') is not None or self.new_object.get('per_page') is not None:
+ new_object_params['perPage'] = self.new_object.get('perPage') or \
+ self.new_object.get('per_page')
+ new_object_params['total_pages'] = -1
+ if self.new_object.get('startingAfter') is not None or self.new_object.get('starting_after') is not None:
+ new_object_params['startingAfter'] = self.new_object.get('startingAfter') or \
+ self.new_object.get('starting_after')
+ if self.new_object.get('endingBefore') is not None or self.new_object.get('ending_before') is not None:
+ new_object_params['endingBefore'] = self.new_object.get('endingBefore') or \
+ self.new_object.get('ending_before')
+ if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
+ new_object_params['organizationId'] = self.new_object.get('organizationId') or \
+ self.new_object.get('organization_id')
+ return new_object_params
+
+ def create_params(self):
+ new_object_params = {}
+ if self.new_object.get('name') is not None or self.new_object.get('name') is not None:
+ new_object_params['name'] = self.new_object.get('name') or \
+ self.new_object.get('name')
+ if self.new_object.get('scope') is not None or self.new_object.get('scope') is not None:
+ new_object_params['scope'] = self.new_object.get('scope') or \
+ self.new_object.get('scope')
+ if self.new_object.get('tags') is not None or self.new_object.get('tags') is not None:
+ new_object_params['tags'] = self.new_object.get('tags') or \
+ self.new_object.get('tags')
+ if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
+ new_object_params['organizationId'] = self.new_object.get('organizationId') or \
+ self.new_object.get('organization_id')
+ return new_object_params
+
+ def get_object_by_name(self, name):
+ result = None
+ # NOTE: Does not have a get by name method or it is in another action
+ try:
+ items = self.meraki.exec_meraki(
+ family="sm",
+ function="getOrganizationSmAdminsRoles",
+ params=self.get_all_params(name=name),
+ )
+ if isinstance(items, dict):
+ if 'response' in items:
+ items = items.get('response')
+ result = get_dict_result(items, 'name', name)
+ if result is None:
+ result = items
+ except Exception as e:
+ print("Error: ", e)
+ result = None
+ return result
+
+ def get_object_by_id(self, id):
+ result = None
+ # NOTE: Does not have a get by id method or it is in another action
+ try:
+ items = self.meraki.exec_meraki(
+ family="sm",
+ function="getOrganizationSmAdminsRoles",
+ params=self.get_all_params(id=id),
+ )
+ if isinstance(items, dict):
+ if 'response' in items:
+ items = items.get('response')
+ result = get_dict_result(items, 'id', id)
+ except Exception as e:
+ print("Error: ", e)
+ result = None
+ return result
+
+ def exists(self):
+ id_exists = False
+ name_exists = False
+ prev_obj = None
+ o_id = self.new_object.get("id")
+ name = self.new_object.get("name")
+ if o_id:
+ prev_obj = self.get_object_by_id(o_id)
+ id_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if not id_exists and name:
+ prev_obj = self.get_object_by_name(name)
+ name_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ if name_exists:
+ _id = prev_obj.get("id")
+ if id_exists and name_exists and o_id != _id:
+ raise InconsistentParameters(
+ "The 'id' and 'name' params don't refer to the same object")
+ if _id:
+ self.new_object.update(dict(id=_id))
+ it_exists = prev_obj is not None and isinstance(prev_obj, dict)
+ return (it_exists, prev_obj)
+
+ def requires_update(self, current_obj):
+ requested_obj = self.new_object
+
+ obj_params = [
+ ("name", "name"),
+ ("scope", "scope"),
+ ("tags", "tags"),
+ ("organizationId", "organizationId"),
+ ]
+ # Method 1. Params present in request (Ansible) obj are the same as the current (DNAC) params
+ # If any does not have eq params, it requires update
+ return any(not meraki_compare_equality(current_obj.get(meraki_param),
+ requested_obj.get(ansible_param))
+ for (meraki_param, ansible_param) in obj_params)
+
+ def create(self):
+ result = self.meraki.exec_meraki(
+ family="sm",
+ function="createOrganizationSmAdminsRole",
+ params=self.create_params(),
+ op_modifies=True,
+ )
+ return result
+
+ def update(self):
+ id = self.new_object.get("id")
+ name = self.new_object.get("name")
+ result = None
+ # NOTE: Does not have update method. What do we do?
+ return result
+
+ def delete(self):
+ id = self.new_object.get("id")
+ name = self.new_object.get("name")
+ result = None
+ # NOTE: Does not have delete method. What do we do?
+ return result
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(self._task.args)
+ obj = OrganizationsSmAdminsRoles(self._task.args, meraki)
+
+ state = self._task.args.get("state")
+
+ response = None
+
+ if state == "present":
+ (obj_exists, prev_obj) = obj.exists()
+ if obj_exists:
+ if obj.requires_update(prev_obj):
+ response = obj.update()
+ meraki.object_updated()
+ else:
+ response = prev_obj
+ meraki.object_already_present()
+ else:
+ response = obj.create()
+ meraki.object_created()
+
+ elif state == "absent":
+ (obj_exists, prev_obj) = obj.exists()
+ if obj_exists:
+ response = obj.delete()
+ meraki.object_deleted()
+ else:
+ meraki.object_already_absent()
+
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_sm_admins_roles_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_sm_admins_roles_info.py
new file mode 100644
index 000000000..297c64b48
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_sm_admins_roles_info.py
@@ -0,0 +1,108 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ startingAfter=dict(type="str"),
+ endingBefore=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("startingAfter") is not None:
+ new_object["startingAfter"] = params.get(
+ "startingAfter")
+ if params.get("endingBefore") is not None:
+ new_object["endingBefore"] = params.get(
+ "endingBefore")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="sm",
+ function='getOrganizationSmAdminsRoles',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_sm_sentry_policies_assignments.py b/ansible_collections/cisco/meraki/plugins/action/organizations_sm_sentry_policies_assignments.py
new file mode 100644
index 000000000..8e51a06e0
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_sm_sentry_policies_assignments.py
@@ -0,0 +1,89 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguements specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ items=dict(type="list"),
+ organizationId=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = False
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_object(self, params):
+ new_object = dict(
+ items=params.get("items"),
+ organizationId=params.get("organizationId"),
+ )
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="sm",
+ function='updateOrganizationSmSentryPoliciesAssignments',
+ op_modifies=True,
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_sm_sentry_policies_assignments_by_network_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_sm_sentry_policies_assignments_by_network_info.py
new file mode 100644
index 000000000..fdc3bd05d
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_sm_sentry_policies_assignments_by_network_info.py
@@ -0,0 +1,112 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ startingAfter=dict(type="str"),
+ endingBefore=dict(type="str"),
+ networkIds=dict(type="list"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("startingAfter") is not None:
+ new_object["startingAfter"] = params.get(
+ "startingAfter")
+ if params.get("endingBefore") is not None:
+ new_object["endingBefore"] = params.get(
+ "endingBefore")
+ if params.get("networkIds") is not None:
+ new_object["networkIds"] = params.get(
+ "networkIds")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="sm",
+ function='getOrganizationSmSentryPoliciesAssignmentsByNetwork',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_snmp.py b/ansible_collections/cisco/meraki/plugins/action/organizations_snmp.py
index aaf676ee7..4641a02e5 100644
--- a/ansible_collections/cisco/meraki/plugins/action/organizations_snmp.py
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_snmp.py
@@ -32,13 +32,13 @@ argument_spec = meraki_argument_spec()
# Add arguments specific for this module
argument_spec.update(dict(
state=dict(type="str", default="present", choices=["present"]),
+ peerIps=dict(type="list"),
v2cEnabled=dict(type="bool"),
- v3Enabled=dict(type="bool"),
v3AuthMode=dict(type="str"),
v3AuthPass=dict(type="str"),
+ v3Enabled=dict(type="bool"),
v3PrivMode=dict(type="str"),
v3PrivPass=dict(type="str"),
- peerIps=dict(type="list"),
organizationId=dict(type="str"),
))
@@ -54,13 +54,13 @@ class OrganizationsSnmp(object):
def __init__(self, params, meraki):
self.meraki = meraki
self.new_object = dict(
+ peerIps=params.get("peerIps"),
v2cEnabled=params.get("v2cEnabled"),
- v3Enabled=params.get("v3Enabled"),
v3AuthMode=params.get("v3AuthMode"),
v3AuthPass=params.get("v3AuthPass"),
+ v3Enabled=params.get("v3Enabled"),
v3PrivMode=params.get("v3PrivMode"),
v3PrivPass=params.get("v3PrivPass"),
- peerIps=params.get("peerIps"),
organization_id=params.get("organizationId"),
)
@@ -73,25 +73,25 @@ class OrganizationsSnmp(object):
def update_all_params(self):
new_object_params = {}
+ if self.new_object.get('peerIps') is not None or self.new_object.get('peer_ips') is not None:
+ new_object_params['peerIps'] = self.new_object.get('peerIps') or \
+ self.new_object.get('peer_ips')
if self.new_object.get('v2cEnabled') is not None or self.new_object.get('v2c_enabled') is not None:
new_object_params['v2cEnabled'] = self.new_object.get('v2cEnabled')
- if self.new_object.get('v3Enabled') is not None or self.new_object.get('v3_enabled') is not None:
- new_object_params['v3Enabled'] = self.new_object.get('v3Enabled')
if self.new_object.get('v3AuthMode') is not None or self.new_object.get('v3_auth_mode') is not None:
new_object_params['v3AuthMode'] = self.new_object.get('v3AuthMode') or \
self.new_object.get('v3_auth_mode')
if self.new_object.get('v3AuthPass') is not None or self.new_object.get('v3_auth_pass') is not None:
new_object_params['v3AuthPass'] = self.new_object.get('v3AuthPass') or \
self.new_object.get('v3_auth_pass')
+ if self.new_object.get('v3Enabled') is not None or self.new_object.get('v3_enabled') is not None:
+ new_object_params['v3Enabled'] = self.new_object.get('v3Enabled')
if self.new_object.get('v3PrivMode') is not None or self.new_object.get('v3_priv_mode') is not None:
new_object_params['v3PrivMode'] = self.new_object.get('v3PrivMode') or \
self.new_object.get('v3_priv_mode')
if self.new_object.get('v3PrivPass') is not None or self.new_object.get('v3_priv_pass') is not None:
new_object_params['v3PrivPass'] = self.new_object.get('v3PrivPass') or \
self.new_object.get('v3_priv_pass')
- if self.new_object.get('peerIps') is not None or self.new_object.get('peer_ips') is not None:
- new_object_params['peerIps'] = self.new_object.get('peerIps') or \
- self.new_object.get('peer_ips')
if self.new_object.get('organizationId') is not None or self.new_object.get('organization_id') is not None:
new_object_params['organizationId'] = self.new_object.get('organizationId') or \
self.new_object.get('organization_id')
@@ -148,13 +148,13 @@ class OrganizationsSnmp(object):
requested_obj = self.new_object
obj_params = [
+ ("peerIps", "peerIps"),
("v2cEnabled", "v2cEnabled"),
- ("v3Enabled", "v3Enabled"),
("v3AuthMode", "v3AuthMode"),
("v3AuthPass", "v3AuthPass"),
+ ("v3Enabled", "v3Enabled"),
("v3PrivMode", "v3PrivMode"),
("v3PrivPass", "v3PrivPass"),
- ("peerIps", "peerIps"),
("organizationId", "organizationId"),
]
# Method 1. Params present in request (Ansible) obj are the same as the current (ISE) params
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_summary_top_networks_by_status_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_summary_top_networks_by_status_info.py
new file mode 100644
index 000000000..c7091e152
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_summary_top_networks_by_status_info.py
@@ -0,0 +1,108 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ startingAfter=dict(type="str"),
+ endingBefore=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("startingAfter") is not None:
+ new_object["startingAfter"] = params.get(
+ "startingAfter")
+ if params.get("endingBefore") is not None:
+ new_object["endingBefore"] = params.get(
+ "endingBefore")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="organizations",
+ function='getOrganizationSummaryTopNetworksByStatus',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_webhooks_callbacks_statuses_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_webhooks_callbacks_statuses_info.py
new file mode 100644
index 000000000..868d02371
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_webhooks_callbacks_statuses_info.py
@@ -0,0 +1,102 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ callbackId=dict(type="str"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_object(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("callbackId") is not None:
+ new_object["callbackId"] = params.get(
+ "callbackId")
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ id = self._task.args.get("callbackId")
+ if id:
+ response = meraki.exec_meraki(
+ family="organizations",
+ function='getOrganizationWebhooksCallbacksStatus',
+ params=self.get_object(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
+ if not id:
+ # NOTE: Does not have a get all method or it is in another action
+ response = None
+ meraki.object_modify_result(changed=False, result="Module does not have get all, check arguments of module")
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_channel_utilization_by_device_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_channel_utilization_by_device_info.py
new file mode 100644
index 000000000..5d78f5a98
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_channel_utilization_by_device_info.py
@@ -0,0 +1,132 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ networkIds=dict(type="list"),
+ serials=dict(type="list"),
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ startingAfter=dict(type="str"),
+ endingBefore=dict(type="str"),
+ t0=dict(type="str"),
+ t1=dict(type="str"),
+ timespan=dict(type="float"),
+ interval=dict(type="int"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("networkIds") is not None:
+ new_object["networkIds"] = params.get(
+ "networkIds")
+ if params.get("serials") is not None:
+ new_object["serials"] = params.get(
+ "serials")
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("startingAfter") is not None:
+ new_object["startingAfter"] = params.get(
+ "startingAfter")
+ if params.get("endingBefore") is not None:
+ new_object["endingBefore"] = params.get(
+ "endingBefore")
+ if params.get("t0") is not None:
+ new_object["t0"] = params.get(
+ "t0")
+ if params.get("t1") is not None:
+ new_object["t1"] = params.get(
+ "t1")
+ if params.get("timespan") is not None:
+ new_object["timespan"] = params.get(
+ "timespan")
+ if params.get("interval") is not None:
+ new_object["interval"] = params.get(
+ "interval")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="wireless",
+ function='getOrganizationWirelessDevicesChannelUtilizationByDevice',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_channel_utilization_by_network_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_channel_utilization_by_network_info.py
new file mode 100644
index 000000000..fb57fd52f
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_channel_utilization_by_network_info.py
@@ -0,0 +1,132 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ networkIds=dict(type="list"),
+ serials=dict(type="list"),
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ startingAfter=dict(type="str"),
+ endingBefore=dict(type="str"),
+ t0=dict(type="str"),
+ t1=dict(type="str"),
+ timespan=dict(type="float"),
+ interval=dict(type="int"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("networkIds") is not None:
+ new_object["networkIds"] = params.get(
+ "networkIds")
+ if params.get("serials") is not None:
+ new_object["serials"] = params.get(
+ "serials")
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("startingAfter") is not None:
+ new_object["startingAfter"] = params.get(
+ "startingAfter")
+ if params.get("endingBefore") is not None:
+ new_object["endingBefore"] = params.get(
+ "endingBefore")
+ if params.get("t0") is not None:
+ new_object["t0"] = params.get(
+ "t0")
+ if params.get("t1") is not None:
+ new_object["t1"] = params.get(
+ "t1")
+ if params.get("timespan") is not None:
+ new_object["timespan"] = params.get(
+ "timespan")
+ if params.get("interval") is not None:
+ new_object["interval"] = params.get(
+ "interval")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="wireless",
+ function='getOrganizationWirelessDevicesChannelUtilizationByNetwork',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_channel_utilization_history_by_device_by_interval_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_channel_utilization_history_by_device_by_interval_info.py
new file mode 100644
index 000000000..9bd73d0b2
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_channel_utilization_history_by_device_by_interval_info.py
@@ -0,0 +1,132 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ networkIds=dict(type="list"),
+ serials=dict(type="list"),
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ startingAfter=dict(type="str"),
+ endingBefore=dict(type="str"),
+ t0=dict(type="str"),
+ t1=dict(type="str"),
+ timespan=dict(type="float"),
+ interval=dict(type="int"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("networkIds") is not None:
+ new_object["networkIds"] = params.get(
+ "networkIds")
+ if params.get("serials") is not None:
+ new_object["serials"] = params.get(
+ "serials")
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("startingAfter") is not None:
+ new_object["startingAfter"] = params.get(
+ "startingAfter")
+ if params.get("endingBefore") is not None:
+ new_object["endingBefore"] = params.get(
+ "endingBefore")
+ if params.get("t0") is not None:
+ new_object["t0"] = params.get(
+ "t0")
+ if params.get("t1") is not None:
+ new_object["t1"] = params.get(
+ "t1")
+ if params.get("timespan") is not None:
+ new_object["timespan"] = params.get(
+ "timespan")
+ if params.get("interval") is not None:
+ new_object["interval"] = params.get(
+ "interval")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="wireless",
+ function='getOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByInterval',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_channel_utilization_history_by_network_by_interval_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_channel_utilization_history_by_network_by_interval_info.py
new file mode 100644
index 000000000..872cc59be
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_channel_utilization_history_by_network_by_interval_info.py
@@ -0,0 +1,132 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ networkIds=dict(type="list"),
+ serials=dict(type="list"),
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ startingAfter=dict(type="str"),
+ endingBefore=dict(type="str"),
+ t0=dict(type="str"),
+ t1=dict(type="str"),
+ timespan=dict(type="float"),
+ interval=dict(type="int"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("networkIds") is not None:
+ new_object["networkIds"] = params.get(
+ "networkIds")
+ if params.get("serials") is not None:
+ new_object["serials"] = params.get(
+ "serials")
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("startingAfter") is not None:
+ new_object["startingAfter"] = params.get(
+ "startingAfter")
+ if params.get("endingBefore") is not None:
+ new_object["endingBefore"] = params.get(
+ "endingBefore")
+ if params.get("t0") is not None:
+ new_object["t0"] = params.get(
+ "t0")
+ if params.get("t1") is not None:
+ new_object["t1"] = params.get(
+ "t1")
+ if params.get("timespan") is not None:
+ new_object["timespan"] = params.get(
+ "timespan")
+ if params.get("interval") is not None:
+ new_object["interval"] = params.get(
+ "interval")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="wireless",
+ function='getOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByInterval',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_packet_loss_by_client_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_packet_loss_by_client_info.py
new file mode 100644
index 000000000..772ffac1a
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_packet_loss_by_client_info.py
@@ -0,0 +1,136 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ networkIds=dict(type="list"),
+ ssids=dict(type="list"),
+ bands=dict(type="list"),
+ macs=dict(type="list"),
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ startingAfter=dict(type="str"),
+ endingBefore=dict(type="str"),
+ t0=dict(type="str"),
+ t1=dict(type="str"),
+ timespan=dict(type="float"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("networkIds") is not None:
+ new_object["networkIds"] = params.get(
+ "networkIds")
+ if params.get("ssids") is not None:
+ new_object["ssids"] = params.get(
+ "ssids")
+ if params.get("bands") is not None:
+ new_object["bands"] = params.get(
+ "bands")
+ if params.get("macs") is not None:
+ new_object["macs"] = params.get(
+ "macs")
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("startingAfter") is not None:
+ new_object["startingAfter"] = params.get(
+ "startingAfter")
+ if params.get("endingBefore") is not None:
+ new_object["endingBefore"] = params.get(
+ "endingBefore")
+ if params.get("t0") is not None:
+ new_object["t0"] = params.get(
+ "t0")
+ if params.get("t1") is not None:
+ new_object["t1"] = params.get(
+ "t1")
+ if params.get("timespan") is not None:
+ new_object["timespan"] = params.get(
+ "timespan")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="wireless",
+ function='getOrganizationWirelessDevicesPacketLossByClient',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_packet_loss_by_device_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_packet_loss_by_device_info.py
new file mode 100644
index 000000000..beef87f14
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_packet_loss_by_device_info.py
@@ -0,0 +1,136 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ networkIds=dict(type="list"),
+ serials=dict(type="list"),
+ ssids=dict(type="list"),
+ bands=dict(type="list"),
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ startingAfter=dict(type="str"),
+ endingBefore=dict(type="str"),
+ t0=dict(type="str"),
+ t1=dict(type="str"),
+ timespan=dict(type="float"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("networkIds") is not None:
+ new_object["networkIds"] = params.get(
+ "networkIds")
+ if params.get("serials") is not None:
+ new_object["serials"] = params.get(
+ "serials")
+ if params.get("ssids") is not None:
+ new_object["ssids"] = params.get(
+ "ssids")
+ if params.get("bands") is not None:
+ new_object["bands"] = params.get(
+ "bands")
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("startingAfter") is not None:
+ new_object["startingAfter"] = params.get(
+ "startingAfter")
+ if params.get("endingBefore") is not None:
+ new_object["endingBefore"] = params.get(
+ "endingBefore")
+ if params.get("t0") is not None:
+ new_object["t0"] = params.get(
+ "t0")
+ if params.get("t1") is not None:
+ new_object["t1"] = params.get(
+ "t1")
+ if params.get("timespan") is not None:
+ new_object["timespan"] = params.get(
+ "timespan")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="wireless",
+ function='getOrganizationWirelessDevicesPacketLossByDevice',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result
diff --git a/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_packet_loss_by_network_info.py b/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_packet_loss_by_network_info.py
new file mode 100644
index 000000000..b871a3539
--- /dev/null
+++ b/ansible_collections/cisco/meraki/plugins/action/organizations_wireless_devices_packet_loss_by_network_info.py
@@ -0,0 +1,136 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021, Cisco Systems
+# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+from ansible.plugins.action import ActionBase
+try:
+ from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
+ AnsibleArgSpecValidator,
+ )
+except ImportError:
+ ANSIBLE_UTILS_IS_INSTALLED = False
+else:
+ ANSIBLE_UTILS_IS_INSTALLED = True
+from ansible.errors import AnsibleActionFail
+from ansible_collections.cisco.meraki.plugins.plugin_utils.meraki import (
+ MERAKI,
+ meraki_argument_spec,
+)
+
+# Get common arguments specification
+argument_spec = meraki_argument_spec()
+# Add arguments specific for this module
+argument_spec.update(dict(
+ organizationId=dict(type="str"),
+ networkIds=dict(type="list"),
+ serials=dict(type="list"),
+ ssids=dict(type="list"),
+ bands=dict(type="list"),
+ perPage=dict(type="int"),
+ total_pages=dict(type="int"),
+ direction=dict(type="str"),
+ startingAfter=dict(type="str"),
+ endingBefore=dict(type="str"),
+ t0=dict(type="str"),
+ t1=dict(type="str"),
+ timespan=dict(type="float"),
+))
+
+required_if = []
+required_one_of = []
+mutually_exclusive = []
+required_together = []
+
+
+class ActionModule(ActionBase):
+ def __init__(self, *args, **kwargs):
+ if not ANSIBLE_UTILS_IS_INSTALLED:
+ raise AnsibleActionFail(
+ "ansible.utils is not installed. Execute 'ansible-galaxy collection install ansible.utils'")
+ super(ActionModule, self).__init__(*args, **kwargs)
+ self._supports_async = False
+ self._supports_check_mode = True
+ self._result = None
+
+ # Checks the supplied parameters against the argument spec for this module
+ def _check_argspec(self):
+ aav = AnsibleArgSpecValidator(
+ data=self._task.args,
+ schema=dict(argument_spec=argument_spec),
+ schema_format="argspec",
+ schema_conditionals=dict(
+ required_if=required_if,
+ required_one_of=required_one_of,
+ mutually_exclusive=mutually_exclusive,
+ required_together=required_together,
+ ),
+ name=self._task.action,
+ )
+ valid, errors, self._task.args = aav.validate()
+ if not valid:
+ raise AnsibleActionFail(errors)
+
+ def get_all(self, params):
+ new_object = {}
+ if params.get("organizationId") is not None:
+ new_object["organizationId"] = params.get(
+ "organizationId")
+ if params.get("networkIds") is not None:
+ new_object["networkIds"] = params.get(
+ "networkIds")
+ if params.get("serials") is not None:
+ new_object["serials"] = params.get(
+ "serials")
+ if params.get("ssids") is not None:
+ new_object["ssids"] = params.get(
+ "ssids")
+ if params.get("bands") is not None:
+ new_object["bands"] = params.get(
+ "bands")
+ if params.get("perPage") is not None:
+ new_object["perPage"] = params.get(
+ "perPage")
+ new_object['total_pages'] = params.get(
+ "total_pages") or 1
+ new_object['direction'] = params.get(
+ "direction") or "next"
+ if params.get("startingAfter") is not None:
+ new_object["startingAfter"] = params.get(
+ "startingAfter")
+ if params.get("endingBefore") is not None:
+ new_object["endingBefore"] = params.get(
+ "endingBefore")
+ if params.get("t0") is not None:
+ new_object["t0"] = params.get(
+ "t0")
+ if params.get("t1") is not None:
+ new_object["t1"] = params.get(
+ "t1")
+ if params.get("timespan") is not None:
+ new_object["timespan"] = params.get(
+ "timespan")
+
+ return new_object
+
+ def run(self, tmp=None, task_vars=None):
+ self._task.diff = False
+ self._result = super(ActionModule, self).run(tmp, task_vars)
+ self._result["changed"] = False
+ self._check_argspec()
+
+ self._result.update(dict(meraki_response={}))
+
+ meraki = MERAKI(params=self._task.args)
+
+ response = meraki.exec_meraki(
+ family="wireless",
+ function='getOrganizationWirelessDevicesPacketLossByNetwork',
+ params=self.get_all(self._task.args),
+ )
+ self._result.update(dict(meraki_response=response))
+ self._result.update(meraki.exit_json())
+ return self._result