B `@sGdddeZdS)c seZdZfddZeedddZeedddZeeeed d d Z eed d dZ eed ddZ eed ddZ eeedddZ eedddZeedddZeedddZeeeeeeeeddd Zeed!d"d#Zeed!d$d%Zed&d'd(Zed&d)d*Zeed+d,d-Zed&d.d/Zeed0d1d2Zeed0d3d4Zed&d5d6Zeed7d8d9Zeed:d;d<Zeed=d>d?Zeed@dAdBZeed@dCdDZ ed&dEdFZ!eeedGdHdIZ"eedJdKdLZ#eeeedMdNdOZ$ed&dPdQZ%eeeeeedRdSdTZ&eeedUdVdWZ'eeedUdXdYZ(eeedUdZd[Z)eeeed\d]d^Z*eeed_d`daZ+eeed_dbdcZ,ed&dddeZ-ed&dfdgZ.eeeedhdidjZ/eeedkdldmZ0Z1S)nActionBatchSwitchcstt|dS)N)superr__init__)self) __class__r/private/var/folders/7j/8686xlfs15q3tgljmghtvg0r0000gn/T/pip-target-isidps9b/lib/python/meraki/api/batch/switch.pyrszActionBatchSwitch.__init__)serialportscsNt}dddgdd}d|d}dgfdd |D}|d |d }|S) a **Cycle a set of switch ports** https://developer.cisco.com/meraki/api-v1/#!cycle-device-switch-ports - serial (string): (required) - ports (array): List of switch ports. Example: [1, 2-5, 1_MA-MOD-8X10G_1, 1_MA-MOD-8X10G_2-1_MA-MOD-8X10G_8] switchZ liveToolsr cycleDeviceSwitchPorts)tags operationz /devices/z/switch/ports/cyclecs&i|]\}}|kr||qSr)strip).0kv) body_paramsrr sz.create)resourcer body)localsitems)rrr kwargsmetadatarpayloadactionr)rrr s  z(ActionBatchSwitch.cycleDeviceSwitchPorts)rportIdc  sX|td|kr@ddg}|d|ks@td|dd|d|krxddd d g}|d|ksxtd |dd|d |krd dg}|d |kstd|d d|d|krddddg}|d|kstd|dd|dddgdd}d|d|}ddddd d!d"d#d$d%dd&d'd dd(d)d*d+d,d-gfd.d/|D}|d0|d1}|S)2a **Update a switch port** https://developer.cisco.com/meraki/api-v1/#!update-device-switch-port - serial (string): (required) - portId (string): (required) - name (string): The name of the switch port - tags (array): The list of tags of the switch port - enabled (boolean): The status of the switch port - type (string): The type of the switch port ('trunk' or 'access') - vlan (integer): The VLAN of the switch port. A null value will clear the value set for trunk ports. - voiceVlan (integer): The voice VLAN of the switch port. Only applicable to access ports. - allowedVlans (string): The VLANs allowed on the switch port. Only applicable to trunk ports. - poeEnabled (boolean): The PoE status of the switch port - isolationEnabled (boolean): The isolation status of the switch port - rstpEnabled (boolean): The rapid spanning tree protocol status - stpGuard (string): The state of the STP guard ('disabled', 'root guard', 'bpdu guard' or 'loop guard') - linkNegotiation (string): The link speed for the switch port - portScheduleId (string): The ID of the port schedule. A value of null will clear the port schedule. - udld (string): The action to take when Unidirectional Link is detected (Alert only, Enforce). Default configuration is Alert only. - accessPolicyType (string): The type of the access policy of the switch port. Only applicable to access ports. Can be one of 'Open', 'Custom access policy', 'MAC allow list' or 'Sticky MAC allow list' - accessPolicyNumber (integer): The number of a custom access policy to configure on the switch port. Only applicable when 'accessPolicyType' is 'Custom access policy' - macAllowList (array): Only devices with MAC addresses specified in this list will have access to this port. Up to 20 MAC addresses can be defined. Only applicable when 'accessPolicyType' is 'MAC allow list' - stickyMacAllowList (array): The initial list of MAC addresses for sticky Mac allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list' - stickyMacAllowListLimit (integer): The maximum number of MAC addresses for sticky MAC allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list' - stormControlEnabled (boolean): The storm control status of the switch port - flexibleStackingEnabled (boolean): For supported switches (e.g. MS420/MS425), whether or not the port has flexible stacking enabled. typetrunkaccessz"type" cannot be "z", & must be set to one of: stpGuarddisabledz root guardz bpdu guardz loop guardz"stpGuard" cannot be "udldz Alert onlyEnforcez"udld" cannot be "accessPolicyTypeOpenzCustom access policyzMAC allow listzSticky MAC allow listz"accessPolicyType" cannot be "r configurer updateDeviceSwitchPort)r r z /devices/z/switch/ports/namer enabledvlan voiceVlan allowedVlans poeEnabledisolationEnabled rstpEnabledlinkNegotiationportScheduleIdaccessPolicyNumber macAllowListstickyMacAllowListstickyMacAllowListLimitstormControlEnabledflexibleStackingEnabledcs&i|]\}}|kr||qSr)r)rrr)rrrrZsz.update)rr r)r9rAssertionErrorr) rrrroptionsrrrrr)rrr(&s, $ $$ $.z(ActionBatchSwitch.updateDeviceSwitchPort)rr) interfaceIpvlanIdc  s|td|krBdddg}|d|ksBtd|dd|ddd d gd d }d |d}dddddddgfdd|D} |d| d} | S)ac **Create a layer 3 interface for a switch** https://developer.cisco.com/meraki/api-v1/#!create-device-switch-routing-interface - serial (string): (required) - name (string): A friendly name or description for the interface or VLAN. - interfaceIp (string): The IP address this switch will use for layer 3 routing on this VLAN or subnet. This cannot be the same as the switch's management IP. - vlanId (integer): The VLAN this routed interface is on. VLAN must be between 1 and 4094. - subnet (string): The network that this routed interface is on, in CIDR notation (ex. 10.1.1.0/24). - multicastRouting (string): Enable multicast support if, multicast routing between VLANs is required. Options are, 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'. - defaultGateway (string): The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a routed interface. - ospfSettings (object): The OSPF routing settings of the interface. multicastRoutingr"r*zIGMP snooping querierz"multicastRouting" cannot be "z", & must be set to one of: r r'routing interfaces"createDeviceSwitchRoutingInterface)r r z /devices/z/switch/routing/interfacesr)subnetr<r=defaultGateway ospfSettingscs&i|]\}}|kr||qSr)r)rrr)rrrrszHActionBatchSwitch.createDeviceSwitchRoutingInterface..r)rr r)r9rr:r) rrr)r<r=rr;rrrrr)rrrAgs  $  z4ActionBatchSwitch.createDeviceSwitchRoutingInterface)r interfaceIdc  s|td|krBdddg}|d|ksBtd|dd|ddd d gd d }d |d|}ddddddgfdd|D}|d|d}|S)a **Update a layer 3 interface for a switch** https://developer.cisco.com/meraki/api-v1/#!update-device-switch-routing-interface - serial (string): (required) - interfaceId (string): (required) - name (string): A friendly name or description for the interface or VLAN. - subnet (string): The network that this routed interface is on, in CIDR notation (ex. 10.1.1.0/24). - interfaceIp (string): The IP address this switch will use for layer 3 routing on this VLAN or subnet. This cannot be the same as the switch's management IP. - multicastRouting (string): Enable multicast support if, multicast routing between VLANs is required. Options are, 'disabled', 'enabled' or 'IGMP snooping querier'. - vlanId (integer): The VLAN this routed interface is on. VLAN must be between 1 and 4094. - ospfSettings (object): The OSPF routing settings of the interface. r>r"r*zIGMP snooping querierz"multicastRouting" cannot be "z", & must be set to one of: r r'r?r@"updateDeviceSwitchRoutingInterface)r r z /devices/z/switch/routing/interfaces/r)rBr<r=rDcs&i|]\}}|kr||qSr)r)rrr)rrrrszHActionBatchSwitch.updateDeviceSwitchRoutingInterface..r9)rr r)r9rr:r) rrrErr;rrrrr)rrrFs  $ z4ActionBatchSwitch.updateDeviceSwitchRoutingInterfacecCs2ddddgdd}d|d|}|d td }|S) z **Delete a layer 3 interface from the switch** https://developer.cisco.com/meraki/api-v1/#!delete-device-switch-routing-interface - serial (string): (required) - interfaceId (string): (required) r r'r?r@"deleteDeviceSwitchRoutingInterface)r r z /devices/z/switch/routing/interfaces/destroy)rr r)r)rrrErrrrrrrGs z4ActionBatchSwitch.deleteDeviceSwitchRoutingInterfacec s|td|krBdddg}|d|ksBtd|dd|d|kr~dd d d d d g}|d|ks~td|dd|d|krdddg}|d|kstd|dd|dddddgdd}d|d|d}dddddd d!d"d#d$d%g fd&d'|D}|d(|d)}|S)*a **Update a layer 3 interface DHCP configuration for a switch** https://developer.cisco.com/meraki/api-v1/#!update-device-switch-routing-interface-dhcp - serial (string): (required) - interfaceId (string): (required) - dhcpMode (string): The DHCP mode options for the switch interface ('dhcpDisabled', 'dhcpRelay' or 'dhcpServer') - dhcpRelayServerIps (array): The DHCP relay server IPs to which DHCP packets would get relayed for the switch interface - dhcpLeaseTime (string): The DHCP lease time config for the dhcp server running on switch interface ('30 minutes', '1 hour', '4 hours', '12 hours', '1 day' or '1 week') - dnsNameserversOption (string): The DHCP name server option for the dhcp server running on the switch interface ('googlePublicDns', 'openDns' or 'custom') - dnsCustomNameservers (array): The DHCP name server IPs when DHCP name server option is 'custom' - bootOptionsEnabled (boolean): Enable DHCP boot options to provide PXE boot options configs for the dhcp server running on the switch interface - bootNextServer (string): The PXE boot server IP for the DHCP server running on the switch interface - bootFileName (string): The PXE boot server filename for the DHCP server running on the switch interface - dhcpOptions (array): Array of DHCP options consisting of code, type and value for the DHCP server running on the switch interface - reservedIpRanges (array): Array of DHCP reserved IP assignments for the DHCP server running on the switch interface - fixedIpAssignments (array): Array of DHCP fixed IP assignments for the DHCP server running on the switch interface dhcpMode dhcpDisabled dhcpRelay dhcpServerz"dhcpMode" cannot be "z", & must be set to one of: dhcpLeaseTimez 30 minutesz1 hourz4 hoursz12 hoursz1 dayz1 weekz"dhcpLeaseTime" cannot be "dnsNameserversOptiongooglePublicDnsopenDnscustomz""dnsNameserversOption" cannot be "r r'r?r@dhcp&updateDeviceSwitchRoutingInterfaceDhcp)r r z /devices/z/switch/routing/interfaces/z/dhcpdhcpRelayServerIpsdnsCustomNameserversbootOptionsEnabledbootNextServer bootFileName dhcpOptionsreservedIpRangesfixedIpAssignmentscs&i|]\}}|kr||qSr)r)rrr)rrrrszLActionBatchSwitch.updateDeviceSwitchRoutingInterfaceDhcp..r9)rr r)r9rr:r) rrrErr;rrrrr)rrrSs&  $$ $ z8ActionBatchSwitch.updateDeviceSwitchRoutingInterfaceDhcp)rrB nextHopIpc  s^|tddddgdd}d|d}d d d d d gfdd|D}|d|d}|S)a **Create a layer 3 static route for a switch** https://developer.cisco.com/meraki/api-v1/#!create-device-switch-routing-static-route - serial (string): (required) - subnet (string): The subnet which is routed via this static route and should be specified in CIDR notation (ex. 1.2.3.0/24) - nextHopIp (string): IP address of the next hop device to which the device sends its traffic for the subnet - name (string): Name or description for layer 3 static route - advertiseViaOspfEnabled (boolean): Option to advertise static route via OSPF - preferOverOspfRoutesEnabled (boolean): Option to prefer static route over OSPF routes r r'r? staticRoutes$createDeviceSwitchRoutingStaticRoute)r r z /devices/z/switch/routing/staticRoutesr)rBr\advertiseViaOspfEnabledpreferOverOspfRoutesEnabledcs&i|]\}}|kr||qSr)r)rrr)rrrrszJActionBatchSwitch.createDeviceSwitchRoutingStaticRoute..r)rr r)r9rr) rrrBr\rrrrrr)rrr^s   z6ActionBatchSwitch.createDeviceSwitchRoutingStaticRoute)r staticRouteIdc sb|tddddgdd}d|d|}d d d d d gfdd|D}|d|d}|S)a **Update a layer 3 static route for a switch** https://developer.cisco.com/meraki/api-v1/#!update-device-switch-routing-static-route - serial (string): (required) - staticRouteId (string): (required) - name (string): Name or description for layer 3 static route - subnet (string): The subnet which is routed via this static route and should be specified in CIDR notation (ex. 1.2.3.0/24) - nextHopIp (string): IP address of the next hop device to which the device sends its traffic for the subnet - advertiseViaOspfEnabled (boolean): Option to advertise static route via OSPF - preferOverOspfRoutesEnabled (boolean): Option to prefer static route over OSPF routes r r'r?r]$updateDeviceSwitchRoutingStaticRoute)r r z /devices/z/switch/routing/staticRoutes/r)rBr\r_r`cs&i|]\}}|kr||qSr)r)rrr)rrrrBszJActionBatchSwitch.updateDeviceSwitchRoutingStaticRoute..r9)rr r)r9rr)rrrarrrrrr)rrrb+s  z6ActionBatchSwitch.updateDeviceSwitchRoutingStaticRoutecCs2ddddgdd}d|d|}|d td }|S) z **Delete a layer 3 static route for a switch** https://developer.cisco.com/meraki/api-v1/#!delete-device-switch-routing-static-route - serial (string): (required) - staticRouteId (string): (required) r r'r?r]$deleteDeviceSwitchRoutingStaticRoute)r r z /devices/z/switch/routing/staticRoutes/rH)rr r)r)rrrarrrrrrrcOs z6ActionBatchSwitch.deleteDeviceSwitchRoutingStaticRoute)rr*c sV|tdddgdd}d|d}dd gfd d |D}|d |d }|S)aK **Update warm spare configuration for a switch** https://developer.cisco.com/meraki/api-v1/#!update-device-switch-warm-spare - serial (string): (required) - enabled (boolean): Enable or disable warm spare for a switch - spareSerial (string): Serial number of the warm spare switch r r'Z warmSpareupdateDeviceSwitchWarmSpare)r r z /devices/z/switch/warmSparer*Z spareSerialcs&i|]\}}|kr||qSr)r)rrr)rrrr}szAActionBatchSwitch.updateDeviceSwitchWarmSpare..r9)rr r)r9rr)rrr*rrrrrr)rrrdjs  z-ActionBatchSwitch.updateDeviceSwitchWarmSpare) networkIdr) radiusServersradiusTestingEnabledradiusCoaSupportEnabledradiusAccountingEnabledhostModeurlRedirectWalledGardenEnabledc  s| td| krDddddg} | d| ksDtd| dd| d| krzd d d g} | d| ksztd | dd| d ddgdd} d|d} ddddddddddddddgfd d!| D} | d"| d#}|S)$an **Create an access policy for a switch network** https://developer.cisco.com/meraki/api-v1/#!create-network-switch-access-policy - networkId (string): (required) - name (string): Name of the access policy - radiusServers (array): List of RADIUS servers to require connecting devices to authenticate against before granting network access - radiusTestingEnabled (boolean): If enabled, Meraki devices will periodically send access-request messages to these RADIUS servers - radiusCoaSupportEnabled (boolean): Change of authentication for RADIUS re-authentication and disconnection - radiusAccountingEnabled (boolean): Enable to send start, interim-update and stop messages to a configured RADIUS accounting server for tracking connected clients - hostMode (string): Choose the Host Mode for the access policy. - urlRedirectWalledGardenEnabled (boolean): Enable to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication - radiusAccountingServers (array): List of RADIUS accounting servers to require connecting devices to authenticate against before granting network access - radiusGroupAttribute (string): Acceptable values are `""` for None, or `"11"` for Group Policies ACL - accessPolicyType (string): Access Type of the policy. Automatically 'Hybrid authentication' when hostMode is 'Multi-Domain'. - increaseAccessSpeed (boolean): Enabling this option will make switches execute 802.1X and MAC-bypass authentication simultaneously so that clients authenticate faster. Only required when accessPolicyType is 'Hybrid Authentication. - guestVlanId (integer): ID for the guest VLAN allow unauthorized devices access to limited network resources - voiceVlanClients (boolean): CDP/LLDP capable voice clients will be able to use this VLAN. Automatically true when hostMode is 'Multi-Domain'. - urlRedirectWalledGardenRanges (array): IP address ranges, in CIDR notation, to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication rjz Single-Hostz Multi-Domainz Multi-Hostz Multi-Authz"hostMode" cannot be "z", & must be set to one of: r%z802.1xzMAC authentication bypasszHybrid authenticationz"accessPolicyType" cannot be "r r'accessPoliciescreateNetworkSwitchAccessPolicy)r r z /networks/z/switch/accessPoliciesr)rfrgrhriradiusAccountingServersradiusGroupAttributeincreaseAccessSpeed guestVlanIdvoiceVlanClientsrkurlRedirectWalledGardenRangescs&i|]\}}|kr||qSr)r)rrr)rrrrszEActionBatchSwitch.createNetworkSwitchAccessPolicy..r)rr r)r9rr:r)rrer)rfrgrhrirjrkrr;rrrrr)rrrms   $ $  z1ActionBatchSwitch.createNetworkSwitchAccessPolicy)rer3c  s|td|krDddddg}|d|ksDtd|dd|d|krzd d d g}|d|ksztd |dd|d ddgdd}d|d|}ddddddddddddddgfd d!|D}|d"|d#}|S)$a **Update an access policy for a switch network** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-access-policy - networkId (string): (required) - accessPolicyNumber (string): (required) - name (string): Name of the access policy - radiusServers (array): List of RADIUS servers to require connecting devices to authenticate against before granting network access - radiusTestingEnabled (boolean): If enabled, Meraki devices will periodically send access-request messages to these RADIUS servers - radiusCoaSupportEnabled (boolean): Change of authentication for RADIUS re-authentication and disconnection - radiusAccountingEnabled (boolean): Enable to send start, interim-update and stop messages to a configured RADIUS accounting server for tracking connected clients - radiusAccountingServers (array): List of RADIUS accounting servers to require connecting devices to authenticate against before granting network access - radiusGroupAttribute (string): Can be either `""`, which means `None` on Dashboard, or `"11"`, which means `Filter-Id` on Dashboard and will use Group Policy ACLs when supported (firmware 14+) - hostMode (string): Choose the Host Mode for the access policy. - accessPolicyType (string): Access Type of the policy. Automatically 'Hybrid authentication' when hostMode is 'Multi-Domain'. - increaseAccessSpeed (boolean): Enabling this option will make switches execute 802.1X and MAC-bypass authentication simultaneously so that clients authenticate faster. Only required when accessPolicyType is 'Hybrid Authentication. - guestVlanId (integer): ID for the guest VLAN allow unauthorized devices access to limited network resources - voiceVlanClients (boolean): CDP/LLDP capable voice clients will be able to use this VLAN. Automatically true when hostMode is 'Multi-Domain'. - urlRedirectWalledGardenEnabled (boolean): Enable to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication - urlRedirectWalledGardenRanges (array): IP address ranges, in CIDR notation, to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication rjz Single-Hostz Multi-Domainz Multi-Hostz Multi-Authz"hostMode" cannot be "z", & must be set to one of: r%z802.1xzMAC authentication bypasszHybrid authenticationz"accessPolicyType" cannot be "r r'rlupdateNetworkSwitchAccessPolicy)r r z /networks/z/switch/accessPolicies/r)rfrgrhrirnrorprqrrrkrscs&i|]\}}|kr||qSr)r)rrr)rrrrszEActionBatchSwitch.updateNetworkSwitchAccessPolicy..r9)rr r)r9rr:r) rrer3rr;rrrrr)rrrts   $ $ z1ActionBatchSwitch.updateNetworkSwitchAccessPolicycCs0dddgdd}d|d|}|dtd }|S) z **Delete an access policy for a switch network** https://developer.cisco.com/meraki/api-v1/#!delete-network-switch-access-policy - networkId (string): (required) - accessPolicyNumber (string): (required) r r'rldeleteNetworkSwitchAccessPolicy)r r z /networks/z/switch/accessPolicies/rH)rr r)r)rrer3rrrrrrrus z1ActionBatchSwitch.deleteNetworkSwitchAccessPolicy)rec sZ|tdddgdd}d|d}dd d d gfd d |D}|d|d}|S)az **Update the switch alternate management interface for the network** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-alternate-management-interface - networkId (string): (required) - enabled (boolean): Boolean value to enable or disable AMI configuration. If enabled, VLAN and protocols must be set - vlanId (integer): Alternate management VLAN, must be between 1 and 4094 - protocols (array): Can be one or more of the following values: 'radius', 'snmp' or 'syslog' - switches (array): Array of switch serial number and IP assignment. If parameter is present, it cannot have empty body. Note: switches parameter is not applicable for template networks, in other words, do not put 'switches' in the body when updating template networks. Also, an empty 'switches' array will remove all previous assignments r r'ZalternateManagementInterface/updateNetworkSwitchAlternateManagementInterface)r r z /networks/z$/switch/alternateManagementInterfacer*r=Z protocolsZswitchescs&i|]\}}|kr||qSr)r)rrr)rrrr!szUActionBatchSwitch.updateNetworkSwitchAlternateManagementInterface..r9)rr r)r9rr)rrerrrrrr)rrrv s   zAActionBatchSwitch.updateNetworkSwitchAlternateManagementInterfacec s|td|kr@ddg}|d|ks@td|dd|dddgd d }d |d }dd dgfdd|D}|d|d}|S)a **Update the DHCP server policy** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-dhcp-server-policy - networkId (string): (required) - defaultPolicy (string): 'allow' or 'block' new DHCP servers. Default value is 'allow'. - allowedServers (array): List the MAC addresses of DHCP servers to permit on the network. Applicable only if defaultPolicy is set to block. An empty array will clear the entries. - blockedServers (array): List the MAC addresses of DHCP servers to block on the network. Applicable only if defaultPolicy is set to allow. An empty array will clear the entries. Z defaultPolicyZallowblockz"defaultPolicy" cannot be "z", & must be set to one of: r r'ZdhcpServerPolicy#updateNetworkSwitchDhcpServerPolicy)r r z /networks/z/switch/dhcpServerPolicyZallowedServersZblockedServerscs&i|]\}}|kr||qSr)r)rrr)rrrrFszIActionBatchSwitch.updateNetworkSwitchDhcpServerPolicy..r9)rr r)r9rr:r)rrerr;rrrrr)rrrx.s $  z5ActionBatchSwitch.updateNetworkSwitchDhcpServerPolicy)remappingscsNt}dddgdd}d|d}dgfd d |D}|d |d }|S) a/ **Update the DSCP to CoS mappings** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-dscp-to-cos-mappings - networkId (string): (required) - mappings (array): An array of DSCP to CoS mappings. An empty array will reset the mappings to default. r r'ZdscpToCosMappings$updateNetworkSwitchDscpToCosMappings)r r z /networks/z/switch/dscpToCosMappingsrycs&i|]\}}|kr||qSr)r)rrr)rrrreszJActionBatchSwitch.updateNetworkSwitchDscpToCosMappings..r9)rr r)rr)rreryrrrrrr)rrrzSs  z6ActionBatchSwitch.updateNetworkSwitchDscpToCosMappingsc sV|tdddgdd}d|d}dd gfd d |D}|d |d }|S)a **Create a link aggregation group** https://developer.cisco.com/meraki/api-v1/#!create-network-switch-link-aggregation - networkId (string): (required) - switchPorts (array): Array of switch or stack ports for creating aggregation group. Minimum 2 and maximum 8 ports are supported. - switchProfilePorts (array): Array of switch profile ports for creating aggregation group. Minimum 2 and maximum 8 ports are supported. r r'linkAggregations"createNetworkSwitchLinkAggregation)r r z /networks/z/switch/linkAggregations switchPortsswitchProfilePortscs&i|]\}}|kr||qSr)r)rrr)rrrrszHActionBatchSwitch.createNetworkSwitchLinkAggregation..r)rr r)r9rr)rrerrrrrr)rrr|rs  z4ActionBatchSwitch.createNetworkSwitchLinkAggregation)relinkAggregationIdc sZ|tdddgdd}d|d|}dd gfd d |D}|d |d }|S)a **Update a link aggregation group** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-link-aggregation - networkId (string): (required) - linkAggregationId (string): (required) - switchPorts (array): Array of switch or stack ports for updating aggregation group. Minimum 2 and maximum 8 ports are supported. - switchProfilePorts (array): Array of switch profile ports for updating aggregation group. Minimum 2 and maximum 8 ports are supported. r r'r{"updateNetworkSwitchLinkAggregation)r r z /networks/z/switch/linkAggregations/r}r~cs&i|]\}}|kr||qSr)r)rrr)rrrrszHActionBatchSwitch.updateNetworkSwitchLinkAggregation..r9)rr r)r9rr)rrerrrrrrr)rrrs z4ActionBatchSwitch.updateNetworkSwitchLinkAggregationcCs0dddgdd}d|d|}|dtd }|S) z **Split a link aggregation group into separate ports** https://developer.cisco.com/meraki/api-v1/#!delete-network-switch-link-aggregation - networkId (string): (required) - linkAggregationId (string): (required) r r'r{"deleteNetworkSwitchLinkAggregation)r r z /networks/z/switch/linkAggregations/rH)rr r)r)rrerrrrrrrrs z4ActionBatchSwitch.deleteNetworkSwitchLinkAggregationc sV|tdddgdd}d|d}dd gfd d |D}|d |d }|S)a **Update the MTU configuration** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-mtu - networkId (string): (required) - defaultMtuSize (integer): MTU size for the entire network. Default value is 9578. - overrides (array): Override MTU size for individual switches or switch profiles. An empty array will clear overrides. r r'ZmtuupdateNetworkSwitchMtu)r r z /networks/z /switch/mtuZdefaultMtuSize overridescs&i|]\}}|kr||qSr)r)rrr)rrrrsz.r9)rr r)r9rr)rrerrrrrr)rrrs  z(ActionBatchSwitch.updateNetworkSwitchMtu)rer2c sZ|tdddgdd}d|d|}dd gfd d |D}|d |d }|S)aF **Update a switch port schedule** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-port-schedule - networkId (string): (required) - portScheduleId (string): (required) - name (string): The name for your port schedule. - portSchedule (object): The schedule for switch port scheduling. Schedules are applied to days of the week. When it's empty, default schedule with all days of a week are configured. Any unspecified day in the schedule is added as a default schedule configuration of the day. r r'Z portSchedulesupdateNetworkSwitchPortSchedule)r r z /networks/z/switch/portSchedules/r)Z portSchedulecs&i|]\}}|kr||qSr)r)rrr)rrrrszEActionBatchSwitch.updateNetworkSwitchPortSchedule..r9)rr r)r9rr)rrer2rrrrrr)rrrs z1ActionBatchSwitch.updateNetworkSwitchPortSchedule)rer+c  s|td|krBdddg}|d|ksBtd|dd|ddd gd d }d |d }dddddddgfdd|D}|d|d}|S)a **Add a quality of service rule** https://developer.cisco.com/meraki/api-v1/#!create-network-switch-qos-rule - networkId (string): (required) - vlan (integer): The VLAN of the incoming packet. A null value will match any VLAN. - protocol (string): The protocol of the incoming packet. Can be one of "ANY", "TCP" or "UDP". Default value is "ANY" - srcPort (integer): The source port of the incoming packet. Applicable only if protocol is TCP or UDP. - srcPortRange (string): The source port range of the incoming packet. Applicable only if protocol is set to TCP or UDP. Example: 70-80 - dstPort (integer): The destination port of the incoming packet. Applicable only if protocol is TCP or UDP. - dstPortRange (string): The destination port range of the incoming packet. Applicable only if protocol is set to TCP or UDP. Example: 70-80 - dscp (integer): DSCP tag. Set this to -1 to trust incoming DSCP. Default value is 0 protocolANYTCPUDPz"protocol" cannot be "z", & must be set to one of: r r'qosRulescreateNetworkSwitchQosRule)r r z /networks/z/switch/qosRulesr+srcPort srcPortRangedstPort dstPortRangedscpcs&i|]\}}|kr||qSr)r)rrr)rrrr.sz@ActionBatchSwitch.createNetworkSwitchQosRule..r)rr r)r9rr:r) rrer+rr;rrrrr)rrrs  $ z,ActionBatchSwitch.createNetworkSwitchQosRule)reruleIdscsPt}ddddgdd}d|d}d gfd d |D}|d |d }|S)ac **Update the order in which the rules should be processed by the switch** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-qos-rules-order - networkId (string): (required) - ruleIds (array): A list of quality of service rule IDs arranged in order in which they should be processed by the switch. r r'rorder updateNetworkSwitchQosRulesOrder)r r z /networks/z/switch/qosRules/orderrcs&i|]\}}|kr||qSr)r)rrr)rrrrMszFActionBatchSwitch.updateNetworkSwitchQosRulesOrder..r9)rr r)rr)rrerrrrrrr)rrr;s   z2ActionBatchSwitch.updateNetworkSwitchQosRulesOrder)re qosRuleIdcCs0dddgdd}d|d|}|dtd }|S) z **Delete a quality of service rule** https://developer.cisco.com/meraki/api-v1/#!delete-network-switch-qos-rule - networkId (string): (required) - qosRuleId (string): (required) r r'rdeleteNetworkSwitchQosRule)r r z /networks/z/switch/qosRules/rH)rr r)r)rrerrrrrrrrZs z,ActionBatchSwitch.deleteNetworkSwitchQosRulec  s|td|krBdddg}|d|ksBtd|dd|ddd gd d }d |d |}dddddddgfdd|D}|d|d}|S)aL **Update a quality of service rule** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-qos-rule - networkId (string): (required) - qosRuleId (string): (required) - vlan (integer): The VLAN of the incoming packet. A null value will match any VLAN. - protocol (string): The protocol of the incoming packet. Can be one of "ANY", "TCP" or "UDP". Default value is "ANY". - srcPort (integer): The source port of the incoming packet. Applicable only if protocol is TCP or UDP. - srcPortRange (string): The source port range of the incoming packet. Applicable only if protocol is set to TCP or UDP. Example: 70-80 - dstPort (integer): The destination port of the incoming packet. Applicable only if protocol is TCP or UDP. - dstPortRange (string): The destination port range of the incoming packet. Applicable only if protocol is set to TCP or UDP. Example: 70-80 - dscp (integer): DSCP tag that should be assigned to incoming packet. Set this to -1 to trust incoming DSCP. Default value is 0. rrrrz"protocol" cannot be "z", & must be set to one of: r r'rupdateNetworkSwitchQosRule)r r z /networks/z/switch/qosRules/r+rrrrrcs&i|]\}}|kr||qSr)r)rrr)rrrrsz@ActionBatchSwitch.updateNetworkSwitchQosRule..r9)rr r)r9rr:r) rrerrr;rrrrr)rrrus  $z,ActionBatchSwitch.updateNetworkSwitchQosRulec sX|tddddgdd}d|d}d d gfd d |D}|d |d}|S)a **Update multicast settings for a network** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-routing-multicast - networkId (string): (required) - defaultSettings (object): Default multicast setting for entire network. IGMP snooping and Flood unknown multicast traffic settings are enabled by default. - overrides (array): Array of paired switches/stacks/profiles and corresponding multicast settings. An empty array will clear the multicast settings. r r'r? multicast#updateNetworkSwitchRoutingMulticast)r r z /networks/z/switch/routing/multicastZdefaultSettingsrcs&i|]\}}|kr||qSr)r)rrr)rrrrszIActionBatchSwitch.updateNetworkSwitchRoutingMulticast..r9)rr r)r9rr)rrerrrrrr)rrrs   z5ActionBatchSwitch.updateNetworkSwitchRoutingMulticast)rer<multicastGroupc sTt}dddddgdd}d|d }d d gfd d |D}|d|d}|S)u **Create a multicast rendezvous point** https://developer.cisco.com/meraki/api-v1/#!create-network-switch-routing-multicast-rendezvous-point - networkId (string): (required) - interfaceIp (string): The IP address of the interface where the RP needs to be created. - multicastGroup (string): 'Any', or the IP address of a multicast group r r'r?rrendezvousPoints2createNetworkSwitchRoutingMulticastRendezvousPoint)r r z /networks/z*/switch/routing/multicast/rendezvousPointsr<rcs&i|]\}}|kr||qSr)r)rrr)rrrrszXActionBatchSwitch.createNetworkSwitchRoutingMulticastRendezvousPoint..r)rr r)rr) rrer<rrrrrrr)rrrs   zDActionBatchSwitch.createNetworkSwitchRoutingMulticastRendezvousPoint)rerendezvousPointIdcCs4dddddgdd}d|d |}|d td }|S) a **Delete a multicast rendezvous point** https://developer.cisco.com/meraki/api-v1/#!delete-network-switch-routing-multicast-rendezvous-point - networkId (string): (required) - rendezvousPointId (string): (required) r r'r?rr2deleteNetworkSwitchRoutingMulticastRendezvousPoint)r r z /networks/z+/switch/routing/multicast/rendezvousPoints/rH)rr r)r)rrerrrrrrrrs zDActionBatchSwitch.deleteNetworkSwitchRoutingMulticastRendezvousPoint)rerr<rc sXt}dddddgdd}d|d |}d d gfd d |D}|d|d} | S)a **Update a multicast rendezvous point** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-routing-multicast-rendezvous-point - networkId (string): (required) - rendezvousPointId (string): (required) - interfaceIp (string): The IP address of the interface to use - multicastGroup (string): 'Any', or the IP address of a multicast group r r'r?rr2updateNetworkSwitchRoutingMulticastRendezvousPoint)r r z /networks/z+/switch/routing/multicast/rendezvousPoints/r<rcs&i|]\}}|kr||qSr)r)rrr)rrrrszXActionBatchSwitch.updateNetworkSwitchRoutingMulticastRendezvousPoint..r9)rr r)rr) rrerr<rrrrrrr)rrrs  zDActionBatchSwitch.updateNetworkSwitchRoutingMulticastRendezvousPointc s`|tddddgdd}d|d}d d d d d dgfdd|D}|d|d}|S)a **Update layer 3 OSPF routing configuration** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-routing-ospf - networkId (string): (required) - enabled (boolean): Boolean value to enable or disable OSPF routing. OSPF routing is disabled by default. - helloTimerInSeconds (integer): Time interval in seconds at which hello packet will be sent to OSPF neighbors to maintain connectivity. Value must be between 1 and 255. Default is 10 seconds - deadTimerInSeconds (integer): Time interval to determine when the peer will be declare inactive/dead. Value must be between 1 and 65535 - areas (array): OSPF areas - md5AuthenticationEnabled (boolean): Boolean value to enable or disable MD5 authentication. MD5 authentication is disabled by default. - md5AuthenticationKey (object): MD5 authentication credentials. This param is only relevant if md5AuthenticationEnabled is true r r'r?ZospfupdateNetworkSwitchRoutingOspf)r r z /networks/z/switch/routing/ospfr*ZhelloTimerInSecondsZdeadTimerInSecondsZareasZmd5AuthenticationEnabledZmd5AuthenticationKeycs&i|]\}}|kr||qSr)r)rrr)rrrr2szDActionBatchSwitch.updateNetworkSwitchRoutingOspf..r9)rr r)r9rr)rrerrrrrr)rrrs   z0ActionBatchSwitch.updateNetworkSwitchRoutingOspf)re switchStackIdr)rBr<r=c  s|td|krBdddg}|d|ksBtd|dd|ddd d d gd d } d|d|d} dddddddgfdd|D} | d| d} | S)a **Create a layer 3 interface for a switch stack** https://developer.cisco.com/meraki/api-v1/#!create-network-switch-stack-routing-interface - networkId (string): (required) - switchStackId (string): (required) - name (string): A friendly name or description for the interface or VLAN. - subnet (string): The network that this routed interface is on, in CIDR notation (ex. 10.1.1.0/24). - interfaceIp (string): The IP address this switch stack will use for layer 3 routing on this VLAN or subnet. This cannot be the same as the switch's management IP. - vlanId (integer): The VLAN this routed interface is on. VLAN must be between 1 and 4094. - multicastRouting (string): Enable multicast support if, multicast routing between VLANs is required. Options are, 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'. - defaultGateway (string): The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a routed interface. - ospfSettings (object): The OSPF routing settings of the interface. r>r"r*zIGMP snooping querierz"multicastRouting" cannot be "z", & must be set to one of: r r'stacksr?r@(createNetworkSwitchStackRoutingInterface)r r z /networks/z/switch/stacks/z/routing/interfacesr)rBr<r=rCrDcs&i|]\}}|kr||qSr)r)rrr)rrrr\szNActionBatchSwitch.createNetworkSwitchStackRoutingInterface..r)rr r)r9rr:r) rrerr)rBr<r=rr;rrrrr)rrr?s  $ z:ActionBatchSwitch.createNetworkSwitchStackRoutingInterface)rerrEc  s|td|krBdddg}|d|ksBtd|dd|ddd d d gd d }d|d|d|}ddddddgfdd|D}|d|d} | S)a **Update a layer 3 interface for a switch stack** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-stack-routing-interface - networkId (string): (required) - switchStackId (string): (required) - interfaceId (string): (required) - name (string): A friendly name or description for the interface or VLAN. - subnet (string): The network that this routed interface is on, in CIDR notation (ex. 10.1.1.0/24). - interfaceIp (string): The IP address this switch stack will use for layer 3 routing on this VLAN or subnet. This cannot be the same as the switch's management IP. - multicastRouting (string): Enable multicast support if, multicast routing between VLANs is required. Options are, 'disabled', 'enabled' or 'IGMP snooping querier'. - vlanId (integer): The VLAN this routed interface is on. VLAN must be between 1 and 4094. - ospfSettings (object): The OSPF routing settings of the interface. r>r"r*zIGMP snooping querierz"multicastRouting" cannot be "z", & must be set to one of: r r'rr?r@(updateNetworkSwitchStackRoutingInterface)r r z /networks/z/switch/stacks/z/routing/interfaces/r)rBr<r=rDcs&i|]\}}|kr||qSr)r)rrr)rrrrszNActionBatchSwitch.updateNetworkSwitchStackRoutingInterface..r9)rr r)r9rr:r) rrerrErr;rrrrr)rrris  $ z:ActionBatchSwitch.updateNetworkSwitchStackRoutingInterfacecCs:dddddgdd}d|d |d |}|d td }|S) a( **Delete a layer 3 interface from a switch stack** https://developer.cisco.com/meraki/api-v1/#!delete-network-switch-stack-routing-interface - networkId (string): (required) - switchStackId (string): (required) - interfaceId (string): (required) r r'rr?r@(deleteNetworkSwitchStackRoutingInterface)r r z /networks/z/switch/stacks/z/routing/interfaces/rH)rr r)r)rrerrErrrrrrrs z:ActionBatchSwitch.deleteNetworkSwitchStackRoutingInterfacec s"|td|krBdddg}|d|ksBtd|dd|d|kr~dd d d d d g}|d|ks~td|dd|d|krdddg}|d|kstd|dd|ddddddgdd}d|d|d|d}dd ddd!d"d#d$d%d&d'g fd(d)|D}|d*|d+} | S),a7 **Update a layer 3 interface DHCP configuration for a switch stack** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-stack-routing-interface-dhcp - networkId (string): (required) - switchStackId (string): (required) - interfaceId (string): (required) - dhcpMode (string): The DHCP mode options for the switch stack interface ('dhcpDisabled', 'dhcpRelay' or 'dhcpServer') - dhcpRelayServerIps (array): The DHCP relay server IPs to which DHCP packets would get relayed for the switch stack interface - dhcpLeaseTime (string): The DHCP lease time config for the dhcp server running on switch stack interface ('30 minutes', '1 hour', '4 hours', '12 hours', '1 day' or '1 week') - dnsNameserversOption (string): The DHCP name server option for the dhcp server running on the switch stack interface ('googlePublicDns', 'openDns' or 'custom') - dnsCustomNameservers (array): The DHCP name server IPs when DHCP name server option is 'custom' - bootOptionsEnabled (boolean): Enable DHCP boot options to provide PXE boot options configs for the dhcp server running on the switch stack interface - bootNextServer (string): The PXE boot server IP for the DHCP server running on the switch stack interface - bootFileName (string): The PXE boot server file name for the DHCP server running on the switch stack interface - dhcpOptions (array): Array of DHCP options consisting of code, type and value for the DHCP server running on the switch stack interface - reservedIpRanges (array): Array of DHCP reserved IP assignments for the DHCP server running on the switch stack interface - fixedIpAssignments (array): Array of DHCP fixed IP assignments for the DHCP server running on the switch stack interface rIrJrKrLz"dhcpMode" cannot be "z", & must be set to one of: rMz 30 minutesz1 hourz4 hoursz12 hoursz1 dayz1 weekz"dhcpLeaseTime" cannot be "rNrOrPrQz""dnsNameserversOption" cannot be "r r'rr?r@rR,updateNetworkSwitchStackRoutingInterfaceDhcp)r r z /networks/z/switch/stacks/z/routing/interfaces/z/dhcprTrUrVrWrXrYrZr[cs&i|]\}}|kr||qSr)r)rrr)rrrrszRActionBatchSwitch.updateNetworkSwitchStackRoutingInterfaceDhcp..r9)rr r)r9rr:r) rrerrErr;rrrrr)rrrs&  $$ $z>ActionBatchSwitch.updateNetworkSwitchStackRoutingInterfaceDhcp)rerrBr\c  sf|tdddddgdd}d|d |d }d d d ddgfdd|D}|d|d} | S)a **Create a layer 3 static route for a switch stack** https://developer.cisco.com/meraki/api-v1/#!create-network-switch-stack-routing-static-route - networkId (string): (required) - switchStackId (string): (required) - subnet (string): The subnet which is routed via this static route and should be specified in CIDR notation (ex. 1.2.3.0/24) - nextHopIp (string): IP address of the next hop device to which the device sends its traffic for the subnet - name (string): Name or description for layer 3 static route - advertiseViaOspfEnabled (boolean): Option to advertise static route via OSPF - preferOverOspfRoutesEnabled (boolean): Option to prefer static route over OSPF routes r r'rr?r]*createNetworkSwitchStackRoutingStaticRoute)r r z /networks/z/switch/stacks/z/routing/staticRoutesr)rBr\r_r`cs&i|]\}}|kr||qSr)r)rrr)rrrrszPActionBatchSwitch.createNetworkSwitchStackRoutingStaticRoute..r)rr r)r9rr) rrerrBr\rrrrrr)rrrs  z.r9)rr r)r9rr) rrerrarrrrrr)rrrs  z.r9)rr r)r9rr)rrerrrrrr)rrrIs   z1ActionBatchSwitch.updateNetworkSwitchStormControlc sV|tdddgdd}d|d}dd gfd d |D}|d |d }|S)a **Updates STP settings** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-stp - networkId (string): (required) - rstpEnabled (boolean): The spanning tree protocol status in network - stpBridgePriority (array): STP bridge priority for switches/stacks or switch profiles. An empty array will clear the STP bridge priority settings. r r'ZstpupdateNetworkSwitchStp)r r z /networks/z /switch/stpr0ZstpBridgePrioritycs&i|]\}}|kr||qSr)r)rrr)rrrr}sz.r9)rr r)r9rr)rrerrrrrr)rrrjs  z(ActionBatchSwitch.updateNetworkSwitchStp)organizationIdconfigTemplateId profileIdrc  sh|td|kr@ddg}|d|ks@td|dd|d|krxddd d g}|d|ksxtd |dd|d |krd dg}|d |kstd|d d|d|krddddg}|d|kstd|dd|dddddgdd}d|d|d|d |}d!d"d#dd$d%d&d'd(d)dd*d+d dd,d-d.d/d0d1gfd2d3|D} |d4| d5} | S)6a **Update a switch profile port** https://developer.cisco.com/meraki/api-v1/#!update-organization-config-template-switch-profile-port - organizationId (string): (required) - configTemplateId (string): (required) - profileId (string): (required) - portId (string): (required) - name (string): The name of the switch profile port - tags (array): The list of tags of the switch profile port - enabled (boolean): The status of the switch profile port - type (string): The type of the switch profile port ('trunk' or 'access') - vlan (integer): The VLAN of the switch profile port. A null value will clear the value set for trunk ports. - voiceVlan (integer): The voice VLAN of the switch profile port. Only applicable to access ports - allowedVlans (string): The VLANs allowed on the switch profile port. Only applicable to trunk ports - poeEnabled (boolean): The PoE status of the switch profile port - isolationEnabled (boolean): The isolation status of the switch profile port - rstpEnabled (boolean): The rapid spanning tree protocol status - stpGuard (string): The state of the STP guard ('disabled', 'root guard', 'bpdu guard' or 'loop guard') - linkNegotiation (string): The link speed for the switch profile port - portScheduleId (string): The ID of the port schedule. A value of null will clear the port schedule. - udld (string): The action to take when Unidirectional Link is detected (Alert only, Enforce). Default configuration is Alert only. - accessPolicyType (string): The type of the access policy of the switch profile port. Only applicable to access ports. Can be one of 'Open', 'Custom access policy', 'MAC allow list' or 'Sticky MAC allow list' - accessPolicyNumber (integer): The number of a custom access policy to configure on the switch profile port. Only applicable when 'accessPolicyType' is 'Custom access policy' - macAllowList (array): Only devices with MAC addresses specified in this list will have access to this port. Up to 20 MAC addresses can be defined. Only applicable when 'accessPolicyType' is 'MAC allow list' - stickyMacAllowList (array): The initial list of MAC addresses for sticky Mac allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list' - stickyMacAllowListLimit (integer): The maximum number of MAC addresses for sticky MAC allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list' - stormControlEnabled (boolean): The storm control status of the switch profile port - flexibleStackingEnabled (boolean): For supported switches (e.g. MS420/MS425), whether or not the port has flexible stacking enabled. rrr z"type" cannot be "z", & must be set to one of: r!r"z root guardz bpdu guardz loop guardz"stpGuard" cannot be "r#z Alert onlyr$z"udld" cannot be "r%r&zCustom access policyzMAC allow listzSticky MAC allow listz"accessPolicyType" cannot be "r r'ZconfigTemplatesZprofilesr 1updateOrganizationConfigTemplateSwitchProfilePort)r r z/organizations/z/configTemplates/z/switch/profiles/z/ports/r)r r*r+r,r-r.r/r0r1r2r3r4r5r6r7r8cs&i|]\}}|kr||qSr)r)rrr)rrrrszWActionBatchSwitch.updateOrganizationConfigTemplateSwitchProfilePort..r9)rr r)r9rr:r) rrrrrrr;rrrrr)rrrs, $ $$ $ .zCActionBatchSwitch.updateOrganizationConfigTemplateSwitchProfilePort)r sourceSerial targetSerialsc sPt}dddgdd}d|d}dd gfd d |D}|d |d }|S)a **Clone port-level and some switch-level configuration settings from a source switch to one or more target switches** https://developer.cisco.com/meraki/api-v1/#!clone-organization-switch-devices - organizationId (string): (required) - sourceSerial (string): Serial number of the source switch (must be on a network not bound to a template) - targetSerials (array): Array of serial numbers of one or more target switches (must be on a network not bound to a template) r r'ZdevicescloneOrganizationSwitchDevices)r r z/organizations/z/switch/devices/clonerrcs&i|]\}}|kr||qSr)r)rrr)rrrrszDActionBatchSwitch.cloneOrganizationSwitchDevices..r)rr r)rr) rrrrrrrrrr)rrrs  z0ActionBatchSwitch.cloneOrganizationSwitchDevices)2__name__ __module__ __qualname__rstrlistr r(intrArFrGrSr^rbrcboolrdrmrtrurvrxrzr|rrrrrrrrrrrrrrrrrrrrrrrr __classcell__rr)rrrsT A))4#$ 34"% ! $)*  !$**5$%! CrN)objectrrrrr