B `}@sGdddZdS)c seZdZfddZedddZeedddZedd d Zedd d Z eed ddZ eed ddZ edddZ eeee dddZeedddZeedddZeedddZeedddZeedd d!Zedd"d#Zeeed$d%d&Zeed'd(d)Zeed'd*d+Zeed'd,d-Zedd.d/Zeed0d1d2Zed3d4d5Zeed6d7d8Zed3d9d:Zeeeeeeeed;dd?d@Z eed>dAdBZ!eed>dCdDZ"ed3dEdFZ#ed3dGdHZ$ed3dIdJZ%ed3dKdLZ&ed3dMdNZ'eedOdPdQZ(ed3dRdSZ)ed3dTdUZ*eedVdWdXZ+eedVdYdZZ,ed3d[d\Z-ed3d]d^Z.ed3d_d`Z/eedadbdcZ0eedddedfZ1eedddgdhZ2ed3didjZ3ee dkdldmZ4ed3dndoZ5eedpdqdrZ6eedsdtduZ7eedsdvdwZ8eedsdxdyZ9ed3dzd{Z:ed3d|d}Z;ed3d~dZeedddZ?eeeedddZ@ed3ddZAed3ddZBed3ddZCed3ddZDed3ddZEeeedddZFeedddZGeedddZHeeedddZIeeedddZJeedddZKeeeeee dddZLeeedddZMeeedddZNeeedddZOeeedddZPeeedddZQeedddZReeeedddZSeeedddZTeeedddZUeeedddZVed3ddZWed3ddZXed3ddÄZYed3ddńZZeedƜddȄZ[eeedɜdd˄Z\eeeed̜dd΄Z]eeeed̜ddЄZ^eeedќddӄZ_Z`S) AsyncSwitchcst||_dS)N)super__init___session)selfsession) __class__p/private/var/folders/7j/8686xlfs15q3tgljmghtvg0r0000gn/T/pip-target-isidps9b/lib/python/meraki/aio/api/switch.pyrs zAsyncSwitch.__init__)serialcCs*dddgdd}d|d}|j||S)z **List the switch ports for a switch** https://developer.cisco.com/meraki/api-v1/#!get-device-switch-ports - serial (string): (required) switch configureportsgetDeviceSwitchPorts)tags operationz /devices/z /switch/ports)rget)rr metadataresourcerrr rs  z AsyncSwitch.getDeviceSwitchPorts)r r csNt}dddgdd}d|d}dgfdd |D}|j|||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] r Z liveToolsr cycleDeviceSwitchPorts)rrz /devices/z/switch/ports/cyclecs&i|]\}}|kr||qSr)strip).0kv) body_paramsrr ,sz6AsyncSwitch.cycleDeviceSwitchPorts..)localsitemsrpost)rr r kwargsrrpayloadr)rr rs  z"AsyncSwitch.cycleDeviceSwitchPortsc sX|tddddgdd}d|d}d d gfd d |D}|j|||S) a **Return the status for all the ports of a switch** https://developer.cisco.com/meraki/api-v1/#!get-device-switch-ports-statuses - serial (string): (required) - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today. - timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. The value must be in seconds and be less than or equal to 31 days. The default is 1 day. r monitorr statusesgetDeviceSwitchPortsStatuses)rrz /devices/z/switch/ports/statusest0timespancs&i|]\}}|kr||qSr)r)rrr) query_paramsrr rEsz.)updaterrrr)rr rrrparamsr)r%r r"2s   z(AsyncSwitch.getDeviceSwitchPortsStatusesc sZ|tdddddgdd}d|d }d d gfd d |D}|j|||S)a' **Return the packet counters for all the ports of a switch** https://developer.cisco.com/meraki/api-v1/#!get-device-switch-ports-statuses-packets - serial (string): (required) - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 1 day from today. - timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. The value must be in seconds and be less than or equal to 1 day. The default is 1 day. r r r r!Zpackets#getDeviceSwitchPortsStatusesPackets)rrz /devices/z/switch/ports/statuses/packetsr#r$cs&i|]\}}|kr||qSr)r)rrr)r%rr r^szCAsyncSwitch.getDeviceSwitchPortsStatusesPackets..)r&rrrr)rr rrrr'r)r%r r(Ks   z/AsyncSwitch.getDeviceSwitchPortsStatusesPackets)r portIdcCs.dddgdd}d|d|}|j||S)z **Return a switch port** https://developer.cisco.com/meraki/api-v1/#!get-device-switch-port - serial (string): (required) - portId (string): (required) r r r getDeviceSwitchPort)rrz /devices/z/switch/ports/)rr)rr r)rrrrr r*ds zAsyncSwitch.getDeviceSwitchPortc 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}|j|||S)0a **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 r r updateDeviceSwitchPort)rrz /devices/z/switch/ports/namerenabledvlan voiceVlan allowedVlans poeEnabledisolationEnabled rstpEnabledlinkNegotiationportScheduleIdaccessPolicyNumber macAllowListstickyMacAllowListstickyMacAllowListLimitstormControlEnabledflexibleStackingEnabledcs&i|]\}}|kr||qSr)r)rrr)rrr rsz6AsyncSwitch.updateDeviceSwitchPort..)r&rAssertionErrorrrput)rr r)roptionsrrrr)rr r4ws& $ $$ $.z"AsyncSwitch.updateDeviceSwitchPortcCs,ddddgdd}d|d}|j||S) z **List layer 3 interfaces for a switch** https://developer.cisco.com/meraki/api-v1/#!get-device-switch-routing-interfaces - serial (string): (required) r r routing interfaces getDeviceSwitchRoutingInterfaces)rrz /devices/z/switch/routing/interfaces)rr)rr rrrrr rJs  z,AsyncSwitch.getDeviceSwitchRoutingInterfaces)r r5 interfaceIpvlanIdc  s|td|krBdddg}|d|ksBtd|dd|ddd d gd d }d |d}dddddddgfdd|D} |j||| 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/r6zIGMP snooping querierz"multicastRouting" cannot be "z", & must be set to one of: r r rHrI"createDeviceSwitchRoutingInterface)rrz /devices/z/switch/routing/interfacesr5subnetrKrLdefaultGateway ospfSettingscs&i|]\}}|kr||qSr)r)rrr)rrr rszBAsyncSwitch.createDeviceSwitchRoutingInterface..)r&rrErrr) rr r5rKrLrrGrrrr)rr rNs  $  z.AsyncSwitch.createDeviceSwitchRoutingInterface)r interfaceIdcCs0ddddgdd}d|d|}|j||S) z **Return a layer 3 interface for a switch** https://developer.cisco.com/meraki/api-v1/#!get-device-switch-routing-interface - serial (string): (required) - interfaceId (string): (required) r r rHrIgetDeviceSwitchRoutingInterface)rrz /devices/z/switch/routing/interfaces/)rr)rr rRrrrrr rSs z+AsyncSwitch.getDeviceSwitchRoutingInterfacec s|td|krBdddg}|d|ksBtd|dd|ddd d gd d }d |d|}ddddddgfdd|D}|j|||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. rMr/r6zIGMP snooping querierz"multicastRouting" cannot be "z", & must be set to one of: r r rHrI"updateDeviceSwitchRoutingInterface)rrz /devices/z/switch/routing/interfaces/r5rOrKrLrQcs&i|]\}}|kr||qSr)r)rrr)rrr rszBAsyncSwitch.updateDeviceSwitchRoutingInterface..)r&rrErrrF)rr rRrrGrrrr)rr rTs  $ z.AsyncSwitch.updateDeviceSwitchRoutingInterfacecCs0ddddgdd}d|d|}|j||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 rHrI"deleteDeviceSwitchRoutingInterface)rrz /devices/z/switch/routing/interfaces/)rdelete)rr rRrrrrr rUs z.AsyncSwitch.deleteDeviceSwitchRoutingInterfacecCs4dddddgdd}d|d |d }|j||S) z **Return a layer 3 interface DHCP configuration for a switch** https://developer.cisco.com/meraki/api-v1/#!get-device-switch-routing-interface-dhcp - serial (string): (required) - interfaceId (string): (required) r r rHrIdhcp#getDeviceSwitchRoutingInterfaceDhcp)rrz /devices/z/switch/routing/interfaces/z/dhcp)rr)rr rRrrrrr rX-s z/AsyncSwitch.getDeviceSwitchRoutingInterfaceDhcpc 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}|j|||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 rHrIrW&updateDeviceSwitchRoutingInterfaceDhcp)rrz /devices/z/switch/routing/interfaces/z/dhcpdhcpRelayServerIpsdnsCustomNameserversbootOptionsEnabledbootNextServer bootFileName dhcpOptionsreservedIpRangesfixedIpAssignmentscs&i|]\}}|kr||qSr)r)rrr)rrr rgszFAsyncSwitch.updateDeviceSwitchRoutingInterfaceDhcp..)r&rrErrrF)rr rRrrGrrrr)rr rb@s   $$ $ z2AsyncSwitch.updateDeviceSwitchRoutingInterfaceDhcpcCs,ddddgdd}d|d}|j||S) z **List layer 3 static routes for a switch** https://developer.cisco.com/meraki/api-v1/#!get-device-switch-routing-static-routes - serial (string): (required) r r rH staticRoutes"getDeviceSwitchRoutingStaticRoutes)rrz /devices/z/switch/routing/staticRoutes)rr)rr rrrrr rlms  z.AsyncSwitch.getDeviceSwitchRoutingStaticRoutes)r rO nextHopIpc s^|tddddgdd}d|d}d d d d d gfdd|D}|j|||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 rHrk$createDeviceSwitchRoutingStaticRoute)rrz /devices/z/switch/routing/staticRoutesr5rOrmadvertiseViaOspfEnabledpreferOverOspfRoutesEnabledcs&i|]\}}|kr||qSr)r)rrr)rrr rszDAsyncSwitch.createDeviceSwitchRoutingStaticRoute..)r&rrrr)rr rOrmrrrrr)rr rns   z0AsyncSwitch.createDeviceSwitchRoutingStaticRoute)r staticRouteIdcCs0ddddgdd}d|d|}|j||S) z **Return a layer 3 static route for a switch** https://developer.cisco.com/meraki/api-v1/#!get-device-switch-routing-static-route - serial (string): (required) - staticRouteId (string): (required) r r rHrk!getDeviceSwitchRoutingStaticRoute)rrz /devices/z/switch/routing/staticRoutes/)rr)rr rqrrrrr rrs z-AsyncSwitch.getDeviceSwitchRoutingStaticRoutec sb|tddddgdd}d|d|}d d d d d gfdd|D}|j|||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 rHrk$updateDeviceSwitchRoutingStaticRoute)rrz /devices/z/switch/routing/staticRoutes/r5rOrmrorpcs&i|]\}}|kr||qSr)r)rrr)rrr rszDAsyncSwitch.updateDeviceSwitchRoutingStaticRoute..)r&rrrrF)rr rqrrrrr)rr rss  z0AsyncSwitch.updateDeviceSwitchRoutingStaticRoutecCs0ddddgdd}d|d|}|j||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 rHrk$deleteDeviceSwitchRoutingStaticRoute)rrz /devices/z/switch/routing/staticRoutes/)rrV)rr rqrrrrr rts z0AsyncSwitch.deleteDeviceSwitchRoutingStaticRoutecCs*dddgdd}d|d}|j||S)z **Return warm spare configuration for a switch** https://developer.cisco.com/meraki/api-v1/#!get-device-switch-warm-spare - serial (string): (required) r r warmSparegetDeviceSwitchWarmSpare)rrz /devices/z/switch/warmSpare)rr)rr rrrrr rvs  z$AsyncSwitch.getDeviceSwitchWarmSpare)r r6c sV|tdddgdd}d|d}dd gfd d |D}|j|||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 ruupdateDeviceSwitchWarmSpare)rrz /devices/z/switch/warmSparer6Z spareSerialcs&i|]\}}|kr||qSr)r)rrr)rrr rsz;AsyncSwitch.updateDeviceSwitchWarmSpare..)r&rrrrF)rr r6rrrrr)rr rws  z'AsyncSwitch.updateDeviceSwitchWarmSpare) networkIdcCs*dddgdd}d|d}|j||S)z **Return the access control lists for a MS network** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-access-control-lists - networkId (string): (required) r r accessControlLists"getNetworkSwitchAccessControlLists)rrz /networks/z/switch/accessControlLists)rr)rrxrrrrr rz s  z.AsyncSwitch.getNetworkSwitchAccessControlLists)rxrulescsNt}dddgdd}d|d}dgfd d |D}|j|||S) aa **Update the access control lists for a MS network** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-access-control-lists - networkId (string): (required) - rules (array): An ordered array of the access control list rules (not including the default rule). An empty array will clear the rules. r r ry%updateNetworkSwitchAccessControlLists)rrz /networks/z/switch/accessControlListsr{cs&i|]\}}|kr||qSr)r)rrr)rrr r-szEAsyncSwitch.updateNetworkSwitchAccessControlLists..)rrrrF)rrxr{rrrrr)rr r|s  z1AsyncSwitch.updateNetworkSwitchAccessControlListscCs*dddgdd}d|d}|j||S)z **List the access policies for a switch network** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-access-policies - networkId (string): (required) r r accessPoliciesgetNetworkSwitchAccessPolicies)rrz /networks/z/switch/accessPolicies)rr)rrxrrrrr r~3s  z*AsyncSwitch.getNetworkSwitchAccessPolicies)rxr5 radiusServersradiusTestingEnabledradiusCoaSupportEnabledradiusAccountingEnabledhostModeurlRedirectWalledGardenEnabledc  s| td| krDddddg} | d| ksDtd| dd| d| krzd d d g} | d| ksztd | dd| d ddgdd} d|d} ddddddddddddddgfd d!| D} |j| | | 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 rz Single-Hostz Multi-Domainz Multi-Hostz Multi-Authz"hostMode" cannot be "z", & must be set to one of: r2z802.1xzMAC authentication bypasszHybrid authenticationz"accessPolicyType" cannot be "r r r}createNetworkSwitchAccessPolicy)rrz /networks/z/switch/accessPoliciesr5rrrrradiusAccountingServersradiusGroupAttributeincreaseAccessSpeed guestVlanIdvoiceVlanClientsrurlRedirectWalledGardenRangescs&i|]\}}|kr||qSr)r)rrr)rrr rksz?AsyncSwitch.createNetworkSwitchAccessPolicy..)r&rrErrr)rrxr5rrrrrrrrGrrrr)rr rEs  $ $  z+AsyncSwitch.createNetworkSwitchAccessPolicy)rxr?cCs.dddgdd}d|d|}|j||S)z **Return a specific access policy for a switch network** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-access-policy - networkId (string): (required) - accessPolicyNumber (string): (required) r r r}getNetworkSwitchAccessPolicy)rrz /networks/z/switch/accessPolicies/)rr)rrxr?rrrrr rqs z(AsyncSwitch.getNetworkSwitchAccessPolicyc s|td|krDddddg}|d|ksDtd|dd|d|krzd d d g}|d|ksztd |dd|d ddgdd}d|d|}ddddddddddddddgfd d!|D}|j|||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 rz Single-Hostz Multi-Domainz Multi-Hostz Multi-Authz"hostMode" cannot be "z", & must be set to one of: r2z802.1xzMAC authentication bypasszHybrid authenticationz"accessPolicyType" cannot be "r r r}updateNetworkSwitchAccessPolicy)rrz /networks/z/switch/accessPolicies/r5rrrrrrrrrrrcs&i|]\}}|kr||qSr)r)rrr)rrr rsz?AsyncSwitch.updateNetworkSwitchAccessPolicy..)r&rrErrrF)rrxr?rrGrrrr)rr rs  $ $ z+AsyncSwitch.updateNetworkSwitchAccessPolicycCs.dddgdd}d|d|}|j||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 r}deleteNetworkSwitchAccessPolicy)rrz /networks/z/switch/accessPolicies/)rrV)rrxr?rrrrr rs z+AsyncSwitch.deleteNetworkSwitchAccessPolicycCs*dddgdd}d|d}|j||S)z **Return the switch alternate management interface for the network** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-alternate-management-interface - networkId (string): (required) r r alternateManagementInterface,getNetworkSwitchAlternateManagementInterface)rrz /networks/z$/switch/alternateManagementInterface)rr)rrxrrrrr rs  z8AsyncSwitch.getNetworkSwitchAlternateManagementInterfacec sZ|tdddgdd}d|d}dd d d gfd d |D}|j|||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 r/updateNetworkSwitchAlternateManagementInterface)rrz /networks/z$/switch/alternateManagementInterfacer6rLZ protocolsZswitchescs&i|]\}}|kr||qSr)r)rrr)rrr rszOAsyncSwitch.updateNetworkSwitchAlternateManagementInterface..)r&rrrrF)rrxrrrrr)rr rs   z;AsyncSwitch.updateNetworkSwitchAlternateManagementInterfacecCs*dddgdd}d|d}|j||S)z **Return the DHCP server policy** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-dhcp-server-policy - networkId (string): (required) r r dhcpServerPolicy getNetworkSwitchDhcpServerPolicy)rrz /networks/z/switch/dhcpServerPolicy)rr)rrxrrrrr rs  z,AsyncSwitch.getNetworkSwitchDhcpServerPolicyc s|td|kr@ddg}|d|ks@td|dd|dddgd d }d |d }dd dgfdd|D}|j|||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 r#updateNetworkSwitchDhcpServerPolicy)rrz /networks/z/switch/dhcpServerPolicyZallowedServersZblockedServerscs&i|]\}}|kr||qSr)r)rrr)rrr rszCAsyncSwitch.updateNetworkSwitchDhcpServerPolicy..)r&rrErrrF)rrxrrGrrrr)rr rs $  z/AsyncSwitch.updateNetworkSwitchDhcpServerPolicycCs*dddgdd}d|d}|j||S)z **Return the DSCP to CoS mappings** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-dscp-to-cos-mappings - networkId (string): (required) r r dscpToCosMappings!getNetworkSwitchDscpToCosMappings)rrz /networks/z/switch/dscpToCosMappings)rr)rrxrrrrr r!s  z-AsyncSwitch.getNetworkSwitchDscpToCosMappings)rxmappingscsNt}dddgdd}d|d}dgfd d |D}|j|||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 r$updateNetworkSwitchDscpToCosMappings)rrz /networks/z/switch/dscpToCosMappingsrcs&i|]\}}|kr||qSr)r)rrr)rrr rEszDAsyncSwitch.updateNetworkSwitchDscpToCosMappings..)rrrrF)rrxrrrrrr)rr r3s  z0AsyncSwitch.updateNetworkSwitchDscpToCosMappingscCs*dddgdd}d|d}|j||S)z **List link aggregation groups** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-link-aggregations - networkId (string): (required) r r linkAggregations getNetworkSwitchLinkAggregations)rrz /networks/z/switch/linkAggregations)rr)rrxrrrrr rKs  z,AsyncSwitch.getNetworkSwitchLinkAggregationsc sV|tdddgdd}d|d}dd gfd d |D}|j|||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 r"createNetworkSwitchLinkAggregation)rrz /networks/z/switch/linkAggregations switchPortsswitchProfilePortscs&i|]\}}|kr||qSr)r)rrr)rrr rpszBAsyncSwitch.createNetworkSwitchLinkAggregation..)r&rrrr)rrxrrrrr)rr r]s  z.AsyncSwitch.createNetworkSwitchLinkAggregation)rxlinkAggregationIdc sZ|tdddgdd}d|d|}dd gfd d |D}|j|||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)rrz /networks/z/switch/linkAggregations/rrcs&i|]\}}|kr||qSr)r)rrr)rrr rszBAsyncSwitch.updateNetworkSwitchLinkAggregation..)r&rrrrF)rrxrrrrrr)rr rvs z.AsyncSwitch.updateNetworkSwitchLinkAggregationcCs.dddgdd}d|d|}|j||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)rrz /networks/z/switch/linkAggregations/)rrV)rrxrrrrrr rs z.AsyncSwitch.deleteNetworkSwitchLinkAggregationcCs*dddgdd}d|d}|j||S)z **Return the MTU configuration** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-mtu - networkId (string): (required) r r mtugetNetworkSwitchMtu)rrz /networks/z /switch/mtu)rr)rrxrrrrr rs  zAsyncSwitch.getNetworkSwitchMtuc sV|tdddgdd}d|d}dd gfd d |D}|j|||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 rupdateNetworkSwitchMtu)rrz /networks/z /switch/mtuZdefaultMtuSize overridescs&i|]\}}|kr||qSr)r)rrr)rrr rsz6AsyncSwitch.updateNetworkSwitchMtu..)r&rrrrF)rrxrrrrr)rr rs  z"AsyncSwitch.updateNetworkSwitchMtucCs*dddgdd}d|d}|j||S)z **List switch port schedules** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-port-schedules - networkId (string): (required) r r portSchedulesgetNetworkSwitchPortSchedules)rrz /networks/z/switch/portSchedules)rr)rrxrrrrr rs  z)AsyncSwitch.getNetworkSwitchPortSchedules)rxr5c sV|tdddgdd}d|d}dd gfd d |D}|j|||S) a **Add a switch port schedule** https://developer.cisco.com/meraki/api-v1/#!create-network-switch-port-schedule - networkId (string): (required) - name (string): The name for your port schedule. Required - 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 rcreateNetworkSwitchPortSchedule)rrz /networks/z/switch/portSchedulesr5 portSchedulecs&i|]\}}|kr||qSr)r)rrr)rrr rsz?AsyncSwitch.createNetworkSwitchPortSchedule..)r&rrrr)rrxr5rrrrr)rr rs  z+AsyncSwitch.createNetworkSwitchPortSchedule)rxr>cCs.dddgdd}d|d|}|j||S)z **Delete a switch port schedule** https://developer.cisco.com/meraki/api-v1/#!delete-network-switch-port-schedule - networkId (string): (required) - portScheduleId (string): (required) r r rdeleteNetworkSwitchPortSchedule)rrz /networks/z/switch/portSchedules/)rrV)rrxr>rrrrr rs z+AsyncSwitch.deleteNetworkSwitchPortSchedulec sZ|tdddgdd}d|d|}dd gfd d |D}|j|||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 rupdateNetworkSwitchPortSchedule)rrz /networks/z/switch/portSchedules/r5rcs&i|]\}}|kr||qSr)r)rrr)rrr r&sz?AsyncSwitch.updateNetworkSwitchPortSchedule..)r&rrrrF)rrxr>rrrrr)rr rs z+AsyncSwitch.updateNetworkSwitchPortSchedulecCs*dddgdd}d|d}|j||S)z **List quality of service rules** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-qos-rules - networkId (string): (required) r r qosRulesgetNetworkSwitchQosRules)rrz /networks/z/switch/qosRules)rr)rrxrrrrr r,s  z$AsyncSwitch.getNetworkSwitchQosRules)rxr7c s|td|krBdddg}|d|ksBtd|dd|ddd gd d }d |d }dddddddgfdd|D}|j|||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 rcreateNetworkSwitchQosRule)rrz /networks/z/switch/qosRulesr7srcPort srcPortRangedstPort dstPortRangedscpcs&i|]\}}|kr||qSr)r)rrr)rrr rZsz:AsyncSwitch.createNetworkSwitchQosRule..)r&rrErrr)rrxr7rrGrrrr)rr r>s  $ z&AsyncSwitch.createNetworkSwitchQosRulecCs,ddddgdd}d|d}|j||S) z **Return the quality of service rule IDs by order in which they will be processed by the switch** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-qos-rules-order - networkId (string): (required) r r rordergetNetworkSwitchQosRulesOrder)rrz /networks/z/switch/qosRules/order)rr)rrxrrrrr r`s  z)AsyncSwitch.getNetworkSwitchQosRulesOrder)rxruleIdscsPt}ddddgdd}d|d}d gfd d |D}|j|||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 rr updateNetworkSwitchQosRulesOrder)rrz /networks/z/switch/qosRules/orderrcs&i|]\}}|kr||qSr)r)rrr)rrr rsz@AsyncSwitch.updateNetworkSwitchQosRulesOrder..)rrrrF)rrxrrrrrr)rr rrs   z,AsyncSwitch.updateNetworkSwitchQosRulesOrder)rx qosRuleIdcCs.dddgdd}d|d|}|j||S)z **Return a quality of service rule** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-qos-rule - networkId (string): (required) - qosRuleId (string): (required) r r rgetNetworkSwitchQosRule)rrz /networks/z/switch/qosRules/)rr)rrxrrrrrr rs z#AsyncSwitch.getNetworkSwitchQosRulecCs.dddgdd}d|d|}|j||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)rrz /networks/z/switch/qosRules/)rrV)rrxrrrrrr rs z&AsyncSwitch.deleteNetworkSwitchQosRulec s|td|krBdddg}|d|ksBtd|dd|ddd gd d }d |d |}dddddddgfdd|D}|j|||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)rrz /networks/z/switch/qosRules/r7rrrrrcs&i|]\}}|kr||qSr)r)rrr)rrr rsz:AsyncSwitch.updateNetworkSwitchQosRule..)r&rrErrrF)rrxrrrGrrrr)rr rs  $z&AsyncSwitch.updateNetworkSwitchQosRulecCs,ddddgdd}d|d}|j||S) z **Return multicast settings for a network** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-routing-multicast - networkId (string): (required) r r rH multicast getNetworkSwitchRoutingMulticast)rrz /networks/z/switch/routing/multicast)rr)rrxrrrrr rs  z,AsyncSwitch.getNetworkSwitchRoutingMulticastc sX|tddddgdd}d|d}d d gfd d |D}|j|||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 rHr#updateNetworkSwitchRoutingMulticast)rrz /networks/z/switch/routing/multicastZdefaultSettingsrcs&i|]\}}|kr||qSr)r)rrr)rrr rszCAsyncSwitch.updateNetworkSwitchRoutingMulticast..)r&rrrrF)rrxrrrrr)rr rs   z/AsyncSwitch.updateNetworkSwitchRoutingMulticastcCs.dddddgdd}d|d }|j||S) z **List multicast rendezvous points** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-routing-multicast-rendezvous-points - networkId (string): (required) r r rHrrendezvousPoints0getNetworkSwitchRoutingMulticastRendezvousPoints)rrz /networks/z*/switch/routing/multicast/rendezvousPoints)rr)rrxrrrrr rs  z.)rrrr)rrxrKrrrrrr)rr rs   z>AsyncSwitch.createNetworkSwitchRoutingMulticastRendezvousPoint)rxrendezvousPointIdcCs2dddddgdd}d|d |}|j||S) z **Return a multicast rendezvous point** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-routing-multicast-rendezvous-point - networkId (string): (required) - rendezvousPointId (string): (required) r r rHrr/getNetworkSwitchRoutingMulticastRendezvousPoint)rrz /networks/z+/switch/routing/multicast/rendezvousPoints/)rr)rrxrrrrrr r)s z;AsyncSwitch.getNetworkSwitchRoutingMulticastRendezvousPointcCs2dddddgdd}d|d |}|j||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 rHrr2deleteNetworkSwitchRoutingMulticastRendezvousPoint)rrz /networks/z+/switch/routing/multicast/rendezvousPoints/)rrV)rrxrrrrrr r<s z>AsyncSwitch.deleteNetworkSwitchRoutingMulticastRendezvousPoint)rxrrKrc sXt}dddddgdd}d|d |}d d gfd d |D}|j|||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 rHrr2updateNetworkSwitchRoutingMulticastRendezvousPoint)rrz /networks/z+/switch/routing/multicast/rendezvousPoints/rKrcs&i|]\}}|kr||qSr)r)rrr)rrr rcszRAsyncSwitch.updateNetworkSwitchRoutingMulticastRendezvousPoint..)rrrrF) rrxrrKrrrrrr)rr rOs  z>AsyncSwitch.updateNetworkSwitchRoutingMulticastRendezvousPointcCs,ddddgdd}d|d}|j||S) z **Return layer 3 OSPF routing configuration** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-routing-ospf - networkId (string): (required) r r rHospfgetNetworkSwitchRoutingOspf)rrz /networks/z/switch/routing/ospf)rr)rrxrrrrr ris  z'AsyncSwitch.getNetworkSwitchRoutingOspfc s`|tddddgdd}d|d}d d d d d dgfdd|D}|j|||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 rHrupdateNetworkSwitchRoutingOspf)rrz /networks/z/switch/routing/ospfr6ZhelloTimerInSecondsZdeadTimerInSecondsZareasZmd5AuthenticationEnabledZmd5AuthenticationKeycs&i|]\}}|kr||qSr)r)rrr)rrr rsz>AsyncSwitch.updateNetworkSwitchRoutingOspf..)r&rrrrF)rrxrrrrr)rr r{s   z*AsyncSwitch.updateNetworkSwitchRoutingOspfcCs*dddgdd}d|d}|j||S)z **Returns the switch network settings** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-settings - networkId (string): (required) r r settingsgetNetworkSwitchSettings)rrz /networks/z/switch/settings)rr)rrxrrrrr rs  z$AsyncSwitch.getNetworkSwitchSettingsc sX|tdddgdd}d|d}dd d gfd d |D}|j|||S) a **Update switch network settings** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-settings - networkId (string): (required) - vlan (integer): Management VLAN - useCombinedPower (boolean): The use Combined Power as the default behavior of secondary power supplies on supported devices. - powerExceptions (array): Exceptions on a per switch basis to "useCombinedPower" r r rupdateNetworkSwitchSettings)rrz /networks/z/switch/settingsr7ZuseCombinedPowerZpowerExceptionscs&i|]\}}|kr||qSr)r)rrr)rrr rsz;AsyncSwitch.updateNetworkSwitchSettings..)r&rrrrF)rrxrrrrr)rr rs   z'AsyncSwitch.updateNetworkSwitchSettingscCs*dddgdd}d|d}|j||S)z **List the switch stacks in a network** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-stacks - networkId (string): (required) r r stacksgetNetworkSwitchStacks)rrz /networks/z/switch/stacks)rr)rrxrrrrr rs  z"AsyncSwitch.getNetworkSwitchStacks)rxr5serialscsPt}dddgdd}d|d}dd gfd d |D}|j|||S) a& **Create a stack** https://developer.cisco.com/meraki/api-v1/#!create-network-switch-stack - networkId (string): (required) - name (string): The name of the new stack - serials (array): An array of switch serials to be added into the new stack r r rcreateNetworkSwitchStack)rrz /networks/z/switch/stacksr5rcs&i|]\}}|kr||qSr)r)rrr)rrr rsz8AsyncSwitch.createNetworkSwitchStack..)rrrr)rrxr5rrrrrr)rr rs  z$AsyncSwitch.createNetworkSwitchStack)rx switchStackIdcCs.dddgdd}d|d|}|j||S)z **Show a switch stack** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-stack - networkId (string): (required) - switchStackId (string): (required) r r rgetNetworkSwitchStack)rrz /networks/z/switch/stacks/)rr)rrxrrrrrr rs z!AsyncSwitch.getNetworkSwitchStackcCs.dddgdd}d|d|}|j||S)z **Delete a stack** https://developer.cisco.com/meraki/api-v1/#!delete-network-switch-stack - networkId (string): (required) - switchStackId (string): (required) r r rdeleteNetworkSwitchStack)rrz /networks/z/switch/stacks/)rrV)rrxrrrrrr rs z$AsyncSwitch.deleteNetworkSwitchStack)rxrr csTt}dddgdd}d|d|d}d gfd d |D}|j|||S) a **Add a switch to a stack** https://developer.cisco.com/meraki/api-v1/#!add-network-switch-stack - networkId (string): (required) - switchStackId (string): (required) - serial (string): The serial of the switch to be added r r raddNetworkSwitchStack)rrz /networks/z/switch/stacks/z/addr cs&i|]\}}|kr||qSr)r)rrr)rrr r(sz5AsyncSwitch.addNetworkSwitchStack..)rrrr)rrxrr rrrrr)rr rs z!AsyncSwitch.addNetworkSwitchStackcsTt}dddgdd}d|d|d}d gfd d |D}|j|||S) a **Remove a switch from a stack** https://developer.cisco.com/meraki/api-v1/#!remove-network-switch-stack - networkId (string): (required) - switchStackId (string): (required) - serial (string): The serial of the switch to be removed r r rremoveNetworkSwitchStack)rrz /networks/z/switch/stacks/z/remover cs&i|]\}}|kr||qSr)r)rrr)rrr rAsz8AsyncSwitch.removeNetworkSwitchStack..)rrrr)rrxrr rrrrr)rr r.s z$AsyncSwitch.removeNetworkSwitchStackcCs4dddddgdd}d|d |d }|j||S) z **List layer 3 interfaces for a switch stack** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-stack-routing-interfaces - networkId (string): (required) - switchStackId (string): (required) r r rrHrI&getNetworkSwitchStackRoutingInterfaces)rrz /networks/z/switch/stacks/z/routing/interfaces)rr)rrxrrrrrr rGs z2AsyncSwitch.getNetworkSwitchStackRoutingInterfaces)rxrr5rOrKrLc  s|td|krBdddg}|d|ksBtd|dd|ddd d d gd d } d|d|d} dddddddgfdd|D} |j| | | 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. rMr/r6zIGMP snooping querierz"multicastRouting" cannot be "z", & must be set to one of: r r rrHrI(createNetworkSwitchStackRoutingInterface)rrz /networks/z/switch/stacks/z/routing/interfacesr5rOrKrLrPrQcs&i|]\}}|kr||qSr)r)rrr)rrr rwszHAsyncSwitch.createNetworkSwitchStackRoutingInterface..)r&rrErrr) rrxrr5rOrKrLrrGrrrr)rr rZs  $ z4AsyncSwitch.createNetworkSwitchStackRoutingInterface)rxrrRcCs8dddddgdd}d|d |d |}|j||S) a% **Return a layer 3 interface from a switch stack** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-stack-routing-interface - networkId (string): (required) - switchStackId (string): (required) - interfaceId (string): (required) r r rrHrI%getNetworkSwitchStackRoutingInterface)rrz /networks/z/switch/stacks/z/routing/interfaces/)rr)rrxrrRrrrrr r}s z1AsyncSwitch.getNetworkSwitchStackRoutingInterfacec  s|td|krBdddg}|d|ksBtd|dd|ddd d d gd d }d|d|d|}ddddddgfdd|D}|j|||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. rMr/r6zIGMP snooping querierz"multicastRouting" cannot be "z", & must be set to one of: r r rrHrI(updateNetworkSwitchStackRoutingInterface)rrz /networks/z/switch/stacks/z/routing/interfaces/r5rOrKrLrQcs&i|]\}}|kr||qSr)r)rrr)rrr rszHAsyncSwitch.updateNetworkSwitchStackRoutingInterface..)r&rrErrrF) rrxrrRrrGrrrr)rr rs  $ z4AsyncSwitch.updateNetworkSwitchStackRoutingInterfacecCs8dddddgdd}d|d |d |}|j||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 rrHrI(deleteNetworkSwitchStackRoutingInterface)rrz /networks/z/switch/stacks/z/routing/interfaces/)rrV)rrxrrRrrrrr rs z4AsyncSwitch.deleteNetworkSwitchStackRoutingInterfacecCs<ddddddgdd}d |d |d |d }|j||S) a< **Return a layer 3 interface DHCP configuration for a switch stack** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-stack-routing-interface-dhcp - networkId (string): (required) - switchStackId (string): (required) - interfaceId (string): (required) r r rrHrIrW)getNetworkSwitchStackRoutingInterfaceDhcp)rrz /networks/z/switch/stacks/z/routing/interfaces/z/dhcp)rr)rrxrrRrrrrr rs z5AsyncSwitch.getNetworkSwitchStackRoutingInterfaceDhcpc 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}|j|||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 rYrZr[r\z"dhcpMode" cannot be "z", & must be set to one of: r]z 30 minutesz1 hourz4 hoursz12 hoursz1 dayz1 weekz"dhcpLeaseTime" cannot be "r^r_r`raz""dnsNameserversOption" cannot be "r r rrHrIrW,updateNetworkSwitchStackRoutingInterfaceDhcp)rrz /networks/z/switch/stacks/z/routing/interfaces/z/dhcprcrdrerfrgrhrirjcs&i|]\}}|kr||qSr)r)rrr)rrr rszLAsyncSwitch.updateNetworkSwitchStackRoutingInterfaceDhcp..)r&rrErrrF) rrxrrRrrGrrrr)rr rs   $$ $z8AsyncSwitch.updateNetworkSwitchStackRoutingInterfaceDhcpcCs4dddddgdd}d|d |d }|j||S) z **List layer 3 static routes for a switch stack** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-stack-routing-static-routes - networkId (string): (required) - switchStackId (string): (required) r r rrHrk(getNetworkSwitchStackRoutingStaticRoutes)rrz /networks/z/switch/stacks/z/routing/staticRoutes)rr)rrxrrrrrr r s z4AsyncSwitch.getNetworkSwitchStackRoutingStaticRoutes)rxrrOrmc  sf|tdddddgdd}d|d |d }d d d ddgfdd|D}|j|||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 rrHrk*createNetworkSwitchStackRoutingStaticRoute)rrz /networks/z/switch/stacks/z/routing/staticRoutesr5rOrmrorpcs&i|]\}}|kr||qSr)r)rrr)rrr r4szJAsyncSwitch.createNetworkSwitchStackRoutingStaticRoute..)r&rrrr) rrxrrOrmrrrrr)rr rs  z6AsyncSwitch.createNetworkSwitchStackRoutingStaticRoute)rxrrqcCs8dddddgdd}d|d |d |}|j||S) a, **Return a layer 3 static route for a switch stack** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-stack-routing-static-route - networkId (string): (required) - switchStackId (string): (required) - staticRouteId (string): (required) r r rrHrk'getNetworkSwitchStackRoutingStaticRoute)rrz /networks/z/switch/stacks/z/routing/staticRoutes/)rr)rrxrrqrrrrr r:s z3AsyncSwitch.getNetworkSwitchStackRoutingStaticRoutec sj|tdddddgdd}d|d |d |}d d d ddgfdd|D}|j|||S)a' **Update a layer 3 static route for a switch stack** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-stack-routing-static-route - networkId (string): (required) - switchStackId (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 rrHrk*updateNetworkSwitchStackRoutingStaticRoute)rrz /networks/z/switch/stacks/z/routing/staticRoutes/r5rOrmrorpcs&i|]\}}|kr||qSr)r)rrr)rrr rfszJAsyncSwitch.updateNetworkSwitchStackRoutingStaticRoute..)r&rrrrF)rrxrrqrrrrr)rr rNs  z6AsyncSwitch.updateNetworkSwitchStackRoutingStaticRoutecCs8dddddgdd}d|d |d |}|j||S) a/ **Delete a layer 3 static route for a switch stack** https://developer.cisco.com/meraki/api-v1/#!delete-network-switch-stack-routing-static-route - networkId (string): (required) - switchStackId (string): (required) - staticRouteId (string): (required) r r rrHrk*deleteNetworkSwitchStackRoutingStaticRoute)rrz /networks/z/switch/stacks/z/routing/staticRoutes/)rrV)rrxrrqrrrrr rls z6AsyncSwitch.deleteNetworkSwitchStackRoutingStaticRoutecCs*dddgdd}d|d}|j||S)z **Return the storm control configuration for a switch network** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-storm-control - networkId (string): (required) r r stormControlgetNetworkSwitchStormControl)rrz /networks/z/switch/stormControl)rr)rrxrrrrr rs  z(AsyncSwitch.getNetworkSwitchStormControlc sX|tdddgdd}d|d}dd d gfd d |D}|j|||S) a* **Update the storm control configuration for a switch network** https://developer.cisco.com/meraki/api-v1/#!update-network-switch-storm-control - networkId (string): (required) - broadcastThreshold (integer): Percentage (1 to 99) of total available port bandwidth for broadcast traffic type. Default value 100 percent rate is to clear the configuration. - multicastThreshold (integer): Percentage (1 to 99) of total available port bandwidth for multicast traffic type. Default value 100 percent rate is to clear the configuration. - unknownUnicastThreshold (integer): Percentage (1 to 99) of total available port bandwidth for unknown unicast (dlf-destination lookup failure) traffic type. Default value 100 percent rate is to clear the configuration. r r rupdateNetworkSwitchStormControl)rrz /networks/z/switch/stormControlZbroadcastThresholdZmulticastThresholdZunknownUnicastThresholdcs&i|]\}}|kr||qSr)r)rrr)rrr rsz?AsyncSwitch.updateNetworkSwitchStormControl..)r&rrrrF)rrxrrrrr)rr rs   z+AsyncSwitch.updateNetworkSwitchStormControlcCs*dddgdd}d|d}|j||S)z **Returns STP settings** https://developer.cisco.com/meraki/api-v1/#!get-network-switch-stp - networkId (string): (required) r r stpgetNetworkSwitchStp)rrz /networks/z /switch/stp)rr)rrxrrrrr rs  zAsyncSwitch.getNetworkSwitchStpc sV|tdddgdd}d|d}dd gfd d |D}|j|||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 rupdateNetworkSwitchStp)rrz /networks/z /switch/stpr<ZstpBridgePrioritycs&i|]\}}|kr||qSr)r)rrr)rrr rsz6AsyncSwitch.updateNetworkSwitchStp..)r&rrrrF)rrxrrrrr)rr rs  z"AsyncSwitch.updateNetworkSwitchStp)organizationIdconfigTemplateIdcCs2ddddgdd}d|d|d }|j||S) a **List the switch profiles for your switch template configuration** https://developer.cisco.com/meraki/api-v1/#!get-organization-config-template-switch-profiles - organizationId (string): (required) - configTemplateId (string): (required) r r configTemplatesprofiles+getOrganizationConfigTemplateSwitchProfiles)rrz/organizations/z/configTemplates/z/switch/profiles)rr)rrrrrrrr rs z7AsyncSwitch.getOrganizationConfigTemplateSwitchProfiles)rr profileIdcCs:dddddgdd}d|d |d |d }|j||S) a0 **Return all the ports of a switch profile** https://developer.cisco.com/meraki/api-v1/#!get-organization-config-template-switch-profile-ports - organizationId (string): (required) - configTemplateId (string): (required) - profileId (string): (required) r r rrr /getOrganizationConfigTemplateSwitchProfilePorts)rrz/organizations/z/configTemplates/z/switch/profiles/z/ports)rr)rrrrrrrrr rs z;AsyncSwitch.getOrganizationConfigTemplateSwitchProfilePorts)rrrr)cCs>dddddgdd}d|d |d |d |}|j||S) aI **Return a switch profile port** https://developer.cisco.com/meraki/api-v1/#!get-organization-config-template-switch-profile-port - organizationId (string): (required) - configTemplateId (string): (required) - profileId (string): (required) - portId (string): (required) r r rrr .getOrganizationConfigTemplateSwitchProfilePort)rrz/organizations/z/configTemplates/z/switch/profiles/z/ports/)rr)rrrrr)rrrrr rs z:AsyncSwitch.getOrganizationConfigTemplateSwitchProfilePortc  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} |j||| S)4a **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. r+r,r-z"type" cannot be "z", & must be set to one of: r.r/z root guardz bpdu guardz loop guardz"stpGuard" cannot be "r0z Alert onlyr1z"udld" cannot be "r2r3zCustom access policyzMAC allow listzSticky MAC allow listz"accessPolicyType" cannot be "r r rrr 1updateOrganizationConfigTemplateSwitchProfilePort)rrz/organizations/z/configTemplates/z/switch/profiles/z/ports/r5rr6r7r8r9r:r;r<r=r>r?r@rArBrCrDcs&i|]\}}|kr||qSr)r)rrr)rrr rIszQAsyncSwitch.updateOrganizationConfigTemplateSwitchProfilePort..)r&rrErrrF) rrrrr)rrGrrrr)rr rs& $ $$ $ .z=AsyncSwitch.updateOrganizationConfigTemplateSwitchProfilePort)r sourceSerial targetSerialscsPt}dddgdd}d|d}dd gfd d |D}|j|||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)rrz/organizations/z/switch/devices/clonerrcs&i|]\}}|kr||qSr)r)rrr)rrr rbsz>AsyncSwitch.cloneOrganizationSwitchDevices..)rrrr)rrrrrrrrr)rr rOs  z*AsyncSwitch.cloneOrganizationSwitchDevices)a__name__ __module__ __qualname__rstrrlistrr"r(r*r4rJintrNrSrTrUrXrbrlrnrrrsrtrvboolrwrzr|r~rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr __classcell__rr)rr rs :""-,-"###.