testprotocols 0.5.2__tar.gz → 0.7.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. {testprotocols-0.5.2/src/testprotocols.egg-info → testprotocols-0.7.0}/PKG-INFO +1 -1
  2. {testprotocols-0.5.2 → testprotocols-0.7.0}/pyproject.toml +1 -1
  3. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/__init__.py +1 -1
  4. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/iperf_client.py +0 -5
  5. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/sdwan_policy_manager.py +3 -1
  6. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/site_to_site_vpn.py +32 -3
  7. {testprotocols-0.5.2 → testprotocols-0.7.0/src/testprotocols.egg-info}/PKG-INFO +1 -1
  8. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_sdwan_appliance_templates.py +2 -0
  9. {testprotocols-0.5.2 → testprotocols-0.7.0}/LICENSE +0 -0
  10. {testprotocols-0.5.2 → testprotocols-0.7.0}/NOTICE +0 -0
  11. {testprotocols-0.5.2 → testprotocols-0.7.0}/README.md +0 -0
  12. {testprotocols-0.5.2 → testprotocols-0.7.0}/setup.cfg +0 -0
  13. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/aftr_gateway.py +0 -0
  14. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/appliance_nat.py +0 -0
  15. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/appliance_uplinks.py +0 -0
  16. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/appliance_vlans.py +0 -0
  17. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/arp_client.py +0 -0
  18. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/bgp.py +0 -0
  19. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/conntrack.py +0 -0
  20. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/content_filtering.py +0 -0
  21. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/device_lifecycle.py +0 -0
  22. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/device_management.py +0 -0
  23. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/devices/__init__.py +0 -0
  24. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/devices/base.py +0 -0
  25. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/devices/client.py +0 -0
  26. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/devices/cpe.py +0 -0
  27. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/devices/infra.py +0 -0
  28. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/devices/sdwan.py +0 -0
  29. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/devices/switch.py +0 -0
  30. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/devices/traffic.py +0 -0
  31. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/devices/voice.py +0 -0
  32. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/devices/wan.py +0 -0
  33. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/dhcp_client.py +0 -0
  34. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/dhcp_server.py +0 -0
  35. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/discovery.py +0 -0
  36. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/dns_client.py +0 -0
  37. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/file_transfer.py +0 -0
  38. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/firewall.py +0 -0
  39. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/firewall_zones.py +0 -0
  40. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/first_hop_security.py +0 -0
  41. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/gateway_redundancy.py +0 -0
  42. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/http_client.py +0 -0
  43. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/http_server.py +0 -0
  44. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/hw_console.py +0 -0
  45. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/interface_dhcp.py +0 -0
  46. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/ip_interface.py +0 -0
  47. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/ip_routing.py +0 -0
  48. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/iperf_generator.py +0 -0
  49. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/iperf_server.py +0 -0
  50. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/l3_firewall.py +0 -0
  51. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/l7_firewall.py +0 -0
  52. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/link_aggregation.py +0 -0
  53. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/mac_table.py +0 -0
  54. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/models/__init__.py +0 -0
  55. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/models/dhcp.py +0 -0
  56. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/models/firewall.py +0 -0
  57. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/models/impairment.py +0 -0
  58. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/models/l2_common.py +0 -0
  59. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/models/multicast.py +0 -0
  60. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/models/networking.py +0 -0
  61. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/models/packets.py +0 -0
  62. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/models/qoe.py +0 -0
  63. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/models/radius.py +0 -0
  64. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/models/sdwan_appliance.py +0 -0
  65. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/models/switch.py +0 -0
  66. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/models/switch_routing.py +0 -0
  67. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/models/tr069.py +0 -0
  68. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/models/traffic.py +0 -0
  69. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/models/wan_edge.py +0 -0
  70. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/models/wifi.py +0 -0
  71. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/multicast_client.py +0 -0
  72. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/nat.py +0 -0
  73. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/netem_controller.py +0 -0
  74. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/network_endpoint.py +0 -0
  75. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/network_probe.py +0 -0
  76. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/nmap_scanner.py +0 -0
  77. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/ntp_client.py +0 -0
  78. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/ntp_config.py +0 -0
  79. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/ospf.py +0 -0
  80. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/packet_filter.py +0 -0
  81. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/pcap_capture.py +0 -0
  82. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/pdu_controller.py +0 -0
  83. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/port_poe.py +0 -0
  84. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/port_security.py +0 -0
  85. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/port_status.py +0 -0
  86. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/py.typed +0 -0
  87. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/qoe_browser.py +0 -0
  88. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/radius_client.py +0 -0
  89. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/radius_server.py +0 -0
  90. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/reachability_responder.py +0 -0
  91. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/routed_interfaces.py +0 -0
  92. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/router.py +0 -0
  93. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/routing_read.py +0 -0
  94. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/sip_phone.py +0 -0
  95. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/sip_server.py +0 -0
  96. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/snmp_client.py +0 -0
  97. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/spanning_tree.py +0 -0
  98. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/static_routes.py +0 -0
  99. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/storm_control.py +0 -0
  100. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/streaming_server.py +0 -0
  101. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/switch_acl.py +0 -0
  102. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/switch_ports.py +0 -0
  103. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/switch_qos.py +0 -0
  104. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/switch_vlans.py +0 -0
  105. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/syslog_config.py +0 -0
  106. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/tftp_server.py +0 -0
  107. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/threat_prevention.py +0 -0
  108. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/tr069_client.py +0 -0
  109. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/tr069_server.py +0 -0
  110. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/traffic_shaping.py +0 -0
  111. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/upnp_client.py +0 -0
  112. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/vlan_client.py +0 -0
  113. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/wan_link_admin.py +0 -0
  114. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/wifi_bss.py +0 -0
  115. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/wifi_client.py +0 -0
  116. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/wifi_mesh.py +0 -0
  117. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/wifi_onboarding.py +0 -0
  118. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/wifi_radio.py +0 -0
  119. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/wifi_rf.py +0 -0
  120. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/wifi_stations.py +0 -0
  121. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols/wifi_transitions.py +0 -0
  122. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols.egg-info/SOURCES.txt +0 -0
  123. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols.egg-info/dependency_links.txt +0 -0
  124. {testprotocols-0.5.2 → testprotocols-0.7.0}/src/testprotocols.egg-info/top_level.txt +0 -0
  125. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_appliance_vlans.py +0 -0
  126. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_cpe_templates.py +0 -0
  127. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_device_types.py +0 -0
  128. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_dhcp_templates.py +0 -0
  129. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_firewall_templates.py +0 -0
  130. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_infra_templates.py +0 -0
  131. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_ip_interface.py +0 -0
  132. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_ip_routing.py +0 -0
  133. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_network_tool_templates.py +0 -0
  134. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_package_imports.py +0 -0
  135. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_radius_templates.py +0 -0
  136. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_sdwan_appliance_models.py +0 -0
  137. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_switch_models.py +0 -0
  138. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_switch_routing_models.py +0 -0
  139. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_switch_templates.py +0 -0
  140. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_traffic_templates.py +0 -0
  141. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_voice_wifi_templates.py +0 -0
  142. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_wan_edge_templates.py +0 -0
  143. {testprotocols-0.5.2 → testprotocols-0.7.0}/tests/test_wifi_templates.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: testprotocols
3
- Version: 0.5.2
3
+ Version: 0.7.0
4
4
  Summary: Common Test Resource Layer — capability and device protocols for telco testing.
5
5
  Author-email: Alottabits <rjvisser@alottabits.com>
6
6
  Maintainer-email: Alottabits <rjvisser@alottabits.com>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "testprotocols"
3
- version = "0.5.2"
3
+ version = "0.7.0"
4
4
  description = "Common Test Resource Layer — capability and device protocols for telco testing."
5
5
  requires-python = ">=3.12"
6
6
  dependencies = []
@@ -1,6 +1,6 @@
1
1
  """testprotocols — capability and device Protocols for telco resources under test."""
2
2
 
3
- __version__ = "0.5.0"
3
+ __version__ = "0.6.0"
4
4
 
5
5
  from testprotocols.aftr_gateway import AftrGateway
6
6
  from testprotocols.appliance_nat import ApplianceNat
@@ -19,7 +19,6 @@ class IperfClient(Protocol):
19
19
  traffic_port: int,
20
20
  bandwidth: int | None = None,
21
21
  bind_to_ip: str | None = None,
22
- direction: str | None = None,
23
22
  ip_version: int | None = None,
24
23
  udp_protocol: bool = False,
25
24
  time: int = 10,
@@ -51,10 +50,6 @@ class IperfClient(Protocol):
51
50
  ``tcp_rmem``/``tcp_wmem``), so the host must be provisioned
52
51
  accordingly.
53
52
 
54
- ``direction`` is DEPRECATED: a raw CLI fragment appended verbatim
55
- after the typed flags. Kept as an escape hatch only; use the typed
56
- parameters instead.
57
-
58
53
  Returns a tuple of (pid, log_file_path).
59
54
  """
60
55
  ...
@@ -5,7 +5,9 @@ policy application, SLA policies, and application-flow visibility.
5
5
 
6
6
  Firewall-rule administration is **not** here — it moved to the dedicated
7
7
  ``l3_firewall`` / ``l7_firewall`` capabilities (coherent-domain split; see
8
- SPLITS.md). Typed path steering (``set_uplink_selection`` /
8
+ SPLITS.md). Also not here: moving flows between the overlay and internet
9
+ domains (overlay membership carve-outs) — see ``site_to_site_vpn``. Typed
10
+ path steering (``set_uplink_selection`` /
9
11
  ``get_uplink_selection`` over ordered ``UplinkSelectionRule``s; performance
10
12
  classes reuse ``SLAPolicy`` by name) landed 2026-06-12; the default
11
13
  (primary) uplink pair (``get_default_uplink`` / ``set_default_uplink``)
@@ -21,8 +21,12 @@ hub anywhere → ``HUB``; overlay enabled with hub list → ``SPOKE``) and on
21
21
  write registers/dereferences the device in the relevant site configs. The
22
22
  round-trip is intent-preserving even where the stored shape differs.
23
23
 
24
- In scope: overlay participation (role, hubs + default route, subnets) and
25
- peer status.
24
+ In scope: overlay participation (role, hubs + default route, subnets),
25
+ overlay exclusions (flow-level membership carve-outs — local breakout), and
26
+ peer status. Overlay *membership* — which flows are in the overlay at all
27
+ (role, hubs + default route, subnets, exclusions) — lives here; path
28
+ selection *within* a domain (e.g. which overlay uplink, or which internet
29
+ uplink) lives in ``sdwan_policy_manager``.
26
30
 
27
31
  Out of scope: VPN-scoped firewall rules (see ``l3_firewall``), IPsec crypto
28
32
  parameters (no driving test; highly vendor-divergent — add on evidence),
@@ -34,7 +38,11 @@ from __future__ import annotations
34
38
 
35
39
  from typing import Protocol, runtime_checkable
36
40
 
37
- from testprotocols.models.sdwan_appliance import SiteToSiteVpnConfig, VpnPeerStatus
41
+ from testprotocols.models.sdwan_appliance import (
42
+ FlowMatch,
43
+ SiteToSiteVpnConfig,
44
+ VpnPeerStatus,
45
+ )
38
46
 
39
47
 
40
48
  @runtime_checkable
@@ -59,3 +67,24 @@ class SiteToSiteVpn(Protocol):
59
67
  Empty list when the device participates in no overlay.
60
68
  """
61
69
  ...
70
+
71
+ def get_vpn_exclusions(self) -> list[FlowMatch]:
72
+ """Return the flow matches excluded from the overlay (local breakout).
73
+
74
+ Flows matching an entry bypass the site-to-site overlay and egress
75
+ the local uplink, even when an overlay route — including an overlay
76
+ default learned from a routing protocol — covers the destination.
77
+ Empty list when every flow is eligible for overlay routing.
78
+ """
79
+ ...
80
+
81
+ def set_vpn_exclusions(self, rules: list[FlowMatch]) -> None:
82
+ """Replace the overlay-exclusion rule set with *rules*.
83
+
84
+ Whole-replace; read-modify-write is the caller's responsibility.
85
+ Products that cannot express a constrained field (e.g. source-side
86
+ matches) raise rather than approximate. Vendor rule kinds outside
87
+ this contract (e.g. application-based exclusions) are preserved
88
+ unchanged by the driver.
89
+ """
90
+ ...
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: testprotocols
3
- Version: 0.5.2
3
+ Version: 0.7.0
4
4
  Summary: Common Test Resource Layer — capability and device protocols for telco testing.
5
5
  Author-email: Alottabits <rjvisser@alottabits.com>
6
6
  Maintainer-email: Alottabits <rjvisser@alottabits.com>
@@ -112,6 +112,8 @@ PROTOCOLS = [
112
112
  "set_vpn_config",
113
113
  "get_vpn_config",
114
114
  "get_vpn_peers",
115
+ "get_vpn_exclusions",
116
+ "set_vpn_exclusions",
115
117
  },
116
118
  ),
117
119
  ]
File without changes
File without changes
File without changes
File without changes