acex-devkit 2.4.0__tar.gz → 2.5.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 (89) hide show
  1. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/PKG-INFO +1 -1
  2. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/pyproject.toml +1 -1
  3. acex_devkit-2.5.0/src/acex_devkit/device_types/__init__.py +85 -0
  4. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/__init__.py +40 -0
  5. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/base.py +33 -0
  6. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/catalyst2950.py +59 -0
  7. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/catalyst2960.py +214 -0
  8. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/catalyst3500.py +21 -0
  9. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/catalyst3560.py +101 -0
  10. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/catalyst3650.py +76 -0
  11. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/catalyst3750.py +38 -0
  12. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/catalyst3850.py +43 -0
  13. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/catalyst4500.py +31 -0
  14. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/catalyst6500.py +15 -0
  15. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/catalyst6800.py +21 -0
  16. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/catalyst9200.py +80 -0
  17. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/catalyst9300.py +137 -0
  18. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/catalyst9400.py +15 -0
  19. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/catalyst9500.py +34 -0
  20. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/generic.py +25 -0
  21. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/industrial.py +21 -0
  22. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/modules.py +84 -0
  23. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/nexus9000.py +34 -0
  24. acex_devkit-2.5.0/src/acex_devkit/device_types/cisco/routers.py +26 -0
  25. acex_devkit-2.5.0/src/acex_devkit/device_types/fortinet/__init__.py +9 -0
  26. acex_devkit-2.5.0/src/acex_devkit/device_types/fortinet/base.py +18 -0
  27. acex_devkit-2.5.0/src/acex_devkit/device_types/fortinet/fortigate_f.py +72 -0
  28. acex_devkit-2.5.0/src/acex_devkit/device_types/juniper/__init__.py +17 -0
  29. acex_devkit-2.5.0/src/acex_devkit/device_types/juniper/base.py +21 -0
  30. acex_devkit-2.5.0/src/acex_devkit/device_types/juniper/ex2300.py +61 -0
  31. acex_devkit-2.5.0/src/acex_devkit/device_types/juniper/ex3400.py +33 -0
  32. acex_devkit-2.5.0/src/acex_devkit/device_types/juniper/ex4100.py +64 -0
  33. acex_devkit-2.5.0/src/acex_devkit/device_types/juniper/ex4400.py +68 -0
  34. acex_devkit-2.5.0/src/acex_devkit/device_types/juniper/ex4650.py +15 -0
  35. acex_devkit-2.5.0/src/acex_devkit/device_types/juniper/modules.py +25 -0
  36. acex_devkit-2.5.0/src/acex_devkit/models/asset.py +77 -0
  37. acex_devkit-2.5.0/src/acex_devkit/models/device_type.py +244 -0
  38. acex_devkit-2.5.0/src/acex_devkit/models/os_version.py +164 -0
  39. acex_devkit-2.5.0/src/acex_devkit/models/platform.py +26 -0
  40. acex_devkit-2.5.0/src/acex_devkit/os_versions.py +71 -0
  41. acex_devkit-2.4.0/src/acex_devkit/models/asset.py +0 -55
  42. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/README.md +0 -0
  43. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/__init__.py +0 -0
  44. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/configdiffer/__init__.py +0 -0
  45. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/configdiffer/command.py +0 -0
  46. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/configdiffer/configdiffer.py +0 -0
  47. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/configdiffer/diff.py +0 -0
  48. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/configdiffer/old_configdiffer.py +0 -0
  49. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/configdiffer/old_diff.py +0 -0
  50. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/drivers/__init__.py +0 -0
  51. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/drivers/base.py +0 -0
  52. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/drivers/base_driver.py +0 -0
  53. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/exceptions/__init__.py +0 -0
  54. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/__init__.py +0 -0
  55. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/acl_model.py +0 -0
  56. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/agent_manifest.py +0 -0
  57. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/ai_ops.py +0 -0
  58. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/assignment.py +0 -0
  59. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/attribute_value.py +0 -0
  60. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/augment.py +0 -0
  61. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/auth_config.py +0 -0
  62. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/base.py +0 -0
  63. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/capability.py +0 -0
  64. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/collection_agent.py +0 -0
  65. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/compliance.py +0 -0
  66. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/composed_configuration.py +0 -0
  67. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/config_components.py +0 -0
  68. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/config_snapshot.py +0 -0
  69. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/contact.py +0 -0
  70. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/container_entry.py +0 -0
  71. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/credential.py +0 -0
  72. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/external_value.py +0 -0
  73. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/lldp_neighbor.py +0 -0
  74. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/lldp_topology.py +0 -0
  75. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/logging.py +0 -0
  76. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/logical_node.py +0 -0
  77. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/management_connection.py +0 -0
  78. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/ned.py +0 -0
  79. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/node_response.py +0 -0
  80. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/pagination.py +0 -0
  81. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/reference.py +0 -0
  82. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/region.py +0 -0
  83. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/site.py +0 -0
  84. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/spanning_tree.py +0 -0
  85. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/models/telemetry_agent.py +0 -0
  86. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/normalizer/__init__.py +0 -0
  87. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/normalizer/base.py +0 -0
  88. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/normalizer/engine.py +0 -0
  89. {acex_devkit-2.4.0 → acex_devkit-2.5.0}/src/acex_devkit/types/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: acex-devkit
3
- Version: 2.4.0
3
+ Version: 2.5.0
4
4
  Summary: ACE-X DevKit - Development kit for building ACE-X drivers and plugins
5
5
  License: AGPL-3.0
6
6
  Keywords: automation,devkit,sdk,drivers,plugins
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "acex-devkit"
3
- version = "2.4.0"
3
+ version = "2.5.0"
4
4
  description = "ACE-X DevKit - Development kit for building ACE-X drivers and plugins"
5
5
  authors = ["Johan Lahti <johan.lahti@acebit.se>"]
6
6
  readme = "README.md"
@@ -0,0 +1,85 @@
1
+ """Declared hardware device types.
2
+
3
+ Importing this package registers every declaration, so the catalog below is
4
+ the single place to ask what hardware is selectable.
5
+ """
6
+
7
+ from functools import cache
8
+
9
+ from acex_devkit.device_types import cisco as _cisco # noqa: F401 (registers Cisco declarations)
10
+ from acex_devkit.device_types import fortinet as _fortinet # noqa: F401 (registers Fortinet declarations)
11
+ from acex_devkit.device_types import juniper as _juniper # noqa: F401 (registers Juniper declarations)
12
+ from acex_devkit.models.device_type import (
13
+ DeviceType,
14
+ InterfaceSlot,
15
+ ModuleSlot,
16
+ PortGroup,
17
+ PortMedia,
18
+ PortModule,
19
+ Speed,
20
+ )
21
+ from acex_devkit.models.platform import OS, Vendor
22
+
23
+
24
+ @cache
25
+ def get(hardware_model: str) -> DeviceType | None:
26
+ """Return the declared device type for a model string, or None."""
27
+ klass = DeviceType.get(hardware_model)
28
+ return klass() if klass is not None else None
29
+
30
+
31
+ @cache
32
+ def _all() -> tuple[DeviceType, ...]:
33
+ return tuple(klass() for klass in dict.fromkeys(DeviceType.registry.values()))
34
+
35
+
36
+ def device_types(*, vendor: Vendor | None = None, os: OS | None = None) -> list[DeviceType]:
37
+ """Every declared device type, optionally narrowed by vendor and/or OS."""
38
+ return [d for d in _all() if (vendor is None or d.vendor == vendor) and (os is None or os in d.os)]
39
+
40
+
41
+ def models(*, vendor: Vendor | None = None, os: OS | None = None) -> list[str]:
42
+ """Selectable hardware model strings, sorted. Use for API/UI options."""
43
+ return sorted({m for d in device_types(vendor=vendor, os=os) for m in d.models})
44
+
45
+
46
+ def vendors() -> list[Vendor]:
47
+ return sorted({d.vendor for d in _all()})
48
+
49
+
50
+ @cache
51
+ def get_module(model: str) -> PortModule | None:
52
+ """Return the declared port module for a model string, or None."""
53
+ klass = PortModule.get(model)
54
+ return klass() if klass is not None else None
55
+
56
+
57
+ def port_modules(*, fits: str | None = None) -> list[str]:
58
+ """Declared port module models, optionally only those fitting a device.
59
+
60
+ Use for the per-slot module picker: ``port_modules(fits="C9300-24T")``.
61
+ """
62
+ known = sorted({m for klass in dict.fromkeys(PortModule.registry.values()) for m in klass().models})
63
+ if fits is None:
64
+ return known
65
+ device = get(fits)
66
+ if device is None or not device.slots:
67
+ return []
68
+ return [m for m in known if any(s.permits(m) for s in device.slots)]
69
+
70
+
71
+ __all__ = [
72
+ "DeviceType",
73
+ "InterfaceSlot",
74
+ "ModuleSlot",
75
+ "PortGroup",
76
+ "PortMedia",
77
+ "PortModule",
78
+ "Speed",
79
+ "device_types",
80
+ "get",
81
+ "get_module",
82
+ "models",
83
+ "port_modules",
84
+ "vendors",
85
+ ]
@@ -0,0 +1,40 @@
1
+ """Cisco hardware declarations.
2
+
3
+ Importing this package registers every Cisco device and port module.
4
+ One module per hardware family; add a new family by adding a file here.
5
+ """
6
+
7
+ from acex_devkit.device_types.cisco import ( # noqa: F401 (registers devices)
8
+ catalyst2950,
9
+ catalyst2960,
10
+ catalyst3500,
11
+ catalyst3560,
12
+ catalyst3650,
13
+ catalyst3750,
14
+ catalyst3850,
15
+ catalyst4500,
16
+ catalyst6500,
17
+ catalyst6800,
18
+ catalyst9200,
19
+ catalyst9300,
20
+ catalyst9400,
21
+ catalyst9500,
22
+ generic,
23
+ industrial,
24
+ modules, # noqa: F401 (registers modules)
25
+ nexus9000,
26
+ routers,
27
+ )
28
+ from acex_devkit.device_types.cisco.base import (
29
+ CiscoIOSDevice,
30
+ CiscoIOSXEDevice,
31
+ CiscoNetworkModule,
32
+ CiscoNXOSDevice,
33
+ )
34
+
35
+ __all__ = [
36
+ "CiscoIOSDevice",
37
+ "CiscoIOSXEDevice",
38
+ "CiscoNXOSDevice",
39
+ "CiscoNetworkModule",
40
+ ]
@@ -0,0 +1,33 @@
1
+ """Cisco device and module base classes.
2
+
3
+ Vendor and OS identity live here so a device declaration only has to state
4
+ its model strings and its ports.
5
+ """
6
+
7
+ from acex_devkit.models.device_type import DeviceType, PortModule
8
+ from acex_devkit.models.platform import OS, Vendor
9
+
10
+
11
+ class CiscoIOSDevice(DeviceType, abstract=True):
12
+ """Cisco device running cisco_ios."""
13
+
14
+ vendor: Vendor = Vendor.cisco
15
+ os: list[OS] = [OS.cisco_ios]
16
+
17
+
18
+ class CiscoIOSXEDevice(DeviceType, abstract=True):
19
+ """Cisco device running cisco_iosxe."""
20
+
21
+ vendor: Vendor = Vendor.cisco
22
+ os: list[OS] = [OS.cisco_iosxe]
23
+
24
+
25
+ class CiscoNXOSDevice(DeviceType, abstract=True):
26
+ """Cisco device running cisco_nxos."""
27
+
28
+ vendor: Vendor = Vendor.cisco
29
+ os: list[OS] = [OS.cisco_nxos]
30
+
31
+
32
+ class CiscoNetworkModule(PortModule, abstract=True):
33
+ """Base for Catalyst network modules (C9x00-NM-*)."""
@@ -0,0 +1,59 @@
1
+ """Catalyst 2950 hardware model declarations.
2
+
3
+ A device declares the model strings it reports and its front-panel port runs.
4
+ Interface naming is the driver's concern, not this file's.
5
+ """
6
+
7
+ from acex_devkit.device_types.cisco.base import CiscoIOSDevice
8
+ from acex_devkit.models.device_type import PortGroup, Speed
9
+
10
+
11
+ class WS_C2950G_24_EI(CiscoIOSDevice):
12
+ models: list[str] = ["WS-C2950G-24-EI"]
13
+ ports: list[PortGroup] = [
14
+ PortGroup(count=24, speeds=[Speed.fast_ethernet]),
15
+ PortGroup(count=2, speeds=[Speed.gigabit]),
16
+ ]
17
+ stackable: bool = False
18
+
19
+
20
+ class WS_C2950G_24_EI_DC(CiscoIOSDevice):
21
+ models: list[str] = ["WS-C2950G-24-EI-DC"]
22
+ ports: list[PortGroup] = [
23
+ PortGroup(count=24, speeds=[Speed.fast_ethernet]),
24
+ PortGroup(count=2, speeds=[Speed.gigabit]),
25
+ ]
26
+ stackable: bool = False
27
+
28
+
29
+ class WS_C2950G_48_EI(CiscoIOSDevice):
30
+ models: list[str] = ["WS-C2950G-48-EI"]
31
+ ports: list[PortGroup] = [
32
+ PortGroup(count=48, speeds=[Speed.fast_ethernet]),
33
+ PortGroup(count=2, speeds=[Speed.gigabit]),
34
+ ]
35
+ stackable: bool = False
36
+
37
+
38
+ class WS_C2950SX_48_SI(CiscoIOSDevice):
39
+ models: list[str] = ["WS-C2950SX-48-SI"]
40
+ ports: list[PortGroup] = [
41
+ PortGroup(count=48, speeds=[Speed.fast_ethernet]),
42
+ PortGroup(count=2, speeds=[Speed.gigabit]),
43
+ ]
44
+ stackable: bool = False
45
+
46
+
47
+ class WS_C2950T_24(CiscoIOSDevice):
48
+ models: list[str] = ["WS-C2950T-24"]
49
+ ports: list[PortGroup] = [
50
+ PortGroup(count=24, speeds=[Speed.fast_ethernet]),
51
+ PortGroup(count=2, speeds=[Speed.gigabit]),
52
+ ]
53
+ stackable: bool = False
54
+
55
+
56
+ class WS_C2950_24(CiscoIOSDevice):
57
+ models: list[str] = ["WS-C2950-24"]
58
+ ports: list[PortGroup] = [PortGroup(count=24, speeds=[Speed.fast_ethernet])]
59
+ stackable: bool = False
@@ -0,0 +1,214 @@
1
+ """Catalyst 2960 hardware model declarations.
2
+
3
+ A device declares the model strings it reports and its front-panel port runs.
4
+ Interface naming is the driver's concern, not this file's.
5
+ """
6
+
7
+ from acex_devkit.device_types.cisco.base import CiscoIOSDevice
8
+ from acex_devkit.models.device_type import PortGroup, Speed
9
+
10
+
11
+ class WS_C2960CPD_8TT_L(CiscoIOSDevice):
12
+ models: list[str] = ["WS-C2960CPD-8TT-L"]
13
+ ports: list[PortGroup] = [
14
+ PortGroup(count=8, speeds=[Speed.fast_ethernet]),
15
+ PortGroup(count=2, speeds=[Speed.ten_gigabit]),
16
+ ]
17
+
18
+
19
+ class WS_C2960CX_8PC_L(CiscoIOSDevice):
20
+ models: list[str] = ["WS-C2960CX-8PC-L"]
21
+ ports: list[PortGroup] = [PortGroup(count=10, speeds=[Speed.gigabit])]
22
+
23
+
24
+ class WS_C2960CX_8TC_L(CiscoIOSDevice):
25
+ models: list[str] = ["WS-C2960CX-8TC-L"]
26
+ ports: list[PortGroup] = [PortGroup(count=10, speeds=[Speed.gigabit])]
27
+
28
+
29
+ class WS_C2960C_12PC_L(CiscoIOSDevice):
30
+ models: list[str] = ["WS-C2960C-12PC-L"]
31
+ ports: list[PortGroup] = [
32
+ PortGroup(count=12, speeds=[Speed.fast_ethernet]),
33
+ PortGroup(count=2, speeds=[Speed.gigabit]),
34
+ ]
35
+
36
+
37
+ class WS_C2960C_8PC_L(CiscoIOSDevice):
38
+ models: list[str] = ["WS-C2960C-8PC-L"]
39
+ ports: list[PortGroup] = [
40
+ PortGroup(count=8, speeds=[Speed.fast_ethernet]),
41
+ PortGroup(count=2, speeds=[Speed.gigabit]),
42
+ ]
43
+
44
+
45
+ class WS_C2960C_8TC_L(CiscoIOSDevice):
46
+ models: list[str] = ["WS-C2960C-8TC-L"]
47
+ ports: list[PortGroup] = [
48
+ PortGroup(count=8, speeds=[Speed.fast_ethernet]),
49
+ PortGroup(count=2, speeds=[Speed.gigabit]),
50
+ ]
51
+
52
+
53
+ class WS_C2960C_8TC_S(CiscoIOSDevice):
54
+ models: list[str] = ["WS-C2960C-8TC-S"]
55
+ ports: list[PortGroup] = [
56
+ PortGroup(count=8, speeds=[Speed.fast_ethernet]),
57
+ PortGroup(count=2, speeds=[Speed.gigabit]),
58
+ ]
59
+
60
+
61
+ class WS_C2960G_24TC_L(CiscoIOSDevice):
62
+ models: list[str] = ["WS-C2960G-24TC-L"]
63
+ ports: list[PortGroup] = [PortGroup(count=26, speeds=[Speed.gigabit])]
64
+
65
+
66
+ class WS_C2960S_24PS_L(CiscoIOSDevice):
67
+ models: list[str] = ["WS-C2960S-24PS-L"]
68
+ ports: list[PortGroup] = [PortGroup(count=28, speeds=[Speed.gigabit])]
69
+
70
+
71
+ class WS_C2960S_24TS_L(CiscoIOSDevice):
72
+ models: list[str] = ["WS-C2960S-24TS-L"]
73
+ ports: list[PortGroup] = [PortGroup(count=28, speeds=[Speed.gigabit])]
74
+
75
+
76
+ class WS_C2960S_48FPS_L(CiscoIOSDevice):
77
+ models: list[str] = ["WS-C2960S-48FPS-L"]
78
+ ports: list[PortGroup] = [PortGroup(count=52, speeds=[Speed.gigabit])]
79
+
80
+
81
+ class WS_C2960S_48LPS_L(CiscoIOSDevice):
82
+ models: list[str] = ["WS-C2960S-48LPS-L"]
83
+ ports: list[PortGroup] = [PortGroup(count=52, speeds=[Speed.gigabit])]
84
+
85
+
86
+ class WS_C2960S_48TS_L(CiscoIOSDevice):
87
+ models: list[str] = ["WS-C2960S-48TS-L"]
88
+ ports: list[PortGroup] = [PortGroup(count=52, speeds=[Speed.gigabit])]
89
+
90
+
91
+ class WS_C2960X_24PD_L(CiscoIOSDevice):
92
+ models: list[str] = ["WS-C2960X-24PD-L"]
93
+ ports: list[PortGroup] = [
94
+ PortGroup(count=24, speeds=[Speed.gigabit]),
95
+ PortGroup(count=2, speeds=[Speed.ten_gigabit]),
96
+ ]
97
+
98
+
99
+ class WS_C2960X_24PS_L(CiscoIOSDevice):
100
+ models: list[str] = ["WS-C2960X-24PS-L"]
101
+ ports: list[PortGroup] = [PortGroup(count=28, speeds=[Speed.gigabit])]
102
+
103
+
104
+ class WS_C2960X_24TS_L(CiscoIOSDevice):
105
+ models: list[str] = ["WS-C2960X-24TS-L"]
106
+ ports: list[PortGroup] = [PortGroup(count=28, speeds=[Speed.gigabit])]
107
+
108
+
109
+ class WS_C2960X_48FPD_L(CiscoIOSDevice):
110
+ models: list[str] = ["WS-C2960X-48FPD-L"]
111
+ ports: list[PortGroup] = [
112
+ PortGroup(count=48, speeds=[Speed.gigabit]),
113
+ PortGroup(count=2, speeds=[Speed.ten_gigabit]),
114
+ ]
115
+
116
+
117
+ class WS_C2960X_48FPS_L(CiscoIOSDevice):
118
+ models: list[str] = ["WS-C2960X-48FPS-L"]
119
+ ports: list[PortGroup] = [PortGroup(count=52, speeds=[Speed.gigabit])]
120
+
121
+
122
+ class WS_C2960X_48LPS_L(CiscoIOSDevice):
123
+ models: list[str] = ["WS-C2960X-48LPS-L"]
124
+ ports: list[PortGroup] = [PortGroup(count=52, speeds=[Speed.gigabit])]
125
+
126
+
127
+ class WS_C2960X_48TS_L(CiscoIOSDevice):
128
+ models: list[str] = ["WS-C2960X-48TS-L"]
129
+ ports: list[PortGroup] = [PortGroup(count=52, speeds=[Speed.gigabit])]
130
+
131
+
132
+ class WS_C2960X_48TS_LL(CiscoIOSDevice):
133
+ models: list[str] = ["WS-C2960X-48TS-LL"]
134
+ ports: list[PortGroup] = [PortGroup(count=50, speeds=[Speed.gigabit])]
135
+
136
+
137
+ class WS_C2960_24PC_L(CiscoIOSDevice):
138
+ models: list[str] = ["WS-C2960-24PC-L"]
139
+ ports: list[PortGroup] = [
140
+ PortGroup(count=24, speeds=[Speed.fast_ethernet]),
141
+ PortGroup(count=2, speeds=[Speed.gigabit]),
142
+ ]
143
+
144
+
145
+ class WS_C2960_24TC_L(CiscoIOSDevice):
146
+ models: list[str] = ["WS-C2960+24TC-L"]
147
+ ports: list[PortGroup] = [
148
+ PortGroup(count=8, speeds=[Speed.fast_ethernet]),
149
+ PortGroup(count=2, speeds=[Speed.gigabit]),
150
+ ]
151
+
152
+
153
+ class WS_C2960_24TC_L_2(CiscoIOSDevice):
154
+ models: list[str] = ["WS-C2960-24TC-L"]
155
+ ports: list[PortGroup] = [
156
+ PortGroup(count=24, speeds=[Speed.fast_ethernet]),
157
+ PortGroup(count=2, speeds=[Speed.gigabit]),
158
+ ]
159
+
160
+
161
+ class WS_C2960_24TC_S(CiscoIOSDevice):
162
+ models: list[str] = ["WS-C2960+24TC-S"]
163
+ ports: list[PortGroup] = [
164
+ PortGroup(count=8, speeds=[Speed.fast_ethernet]),
165
+ PortGroup(count=2, speeds=[Speed.gigabit]),
166
+ ]
167
+
168
+
169
+ class WS_C2960_24TC_S_2(CiscoIOSDevice):
170
+ models: list[str] = ["WS-C2960-24TC-S"]
171
+ ports: list[PortGroup] = [
172
+ PortGroup(count=24, speeds=[Speed.fast_ethernet]),
173
+ PortGroup(count=2, speeds=[Speed.gigabit]),
174
+ ]
175
+
176
+
177
+ class WS_C2960_24TT_L(CiscoIOSDevice):
178
+ models: list[str] = ["WS-C2960-24TT-L"]
179
+ ports: list[PortGroup] = [
180
+ PortGroup(count=24, speeds=[Speed.fast_ethernet]),
181
+ PortGroup(count=2, speeds=[Speed.gigabit]),
182
+ ]
183
+
184
+
185
+ class WS_C2960_48PST_L(CiscoIOSDevice):
186
+ models: list[str] = ["WS-C2960+48PST-L"]
187
+ ports: list[PortGroup] = [
188
+ PortGroup(count=8, speeds=[Speed.fast_ethernet]),
189
+ PortGroup(count=4, speeds=[Speed.gigabit]),
190
+ ]
191
+
192
+
193
+ class WS_C2960_48TC_L(CiscoIOSDevice):
194
+ models: list[str] = ["WS-C2960-48TC-L"]
195
+ ports: list[PortGroup] = [
196
+ PortGroup(count=48, speeds=[Speed.fast_ethernet]),
197
+ PortGroup(count=2, speeds=[Speed.gigabit]),
198
+ ]
199
+
200
+
201
+ class WS_C2960_48TT_L(CiscoIOSDevice):
202
+ models: list[str] = ["WS-C2960-48TT-L"]
203
+ ports: list[PortGroup] = [
204
+ PortGroup(count=48, speeds=[Speed.fast_ethernet]),
205
+ PortGroup(count=2, speeds=[Speed.gigabit]),
206
+ ]
207
+
208
+
209
+ class WS_C2960_48TT_S(CiscoIOSDevice):
210
+ models: list[str] = ["WS-C2960-48TT-S"]
211
+ ports: list[PortGroup] = [
212
+ PortGroup(count=48, speeds=[Speed.fast_ethernet]),
213
+ PortGroup(count=2, speeds=[Speed.gigabit]),
214
+ ]
@@ -0,0 +1,21 @@
1
+ """Catalyst 3500 XL / 3550 hardware model declarations.
2
+
3
+ A device declares the model strings it reports and its front-panel port runs.
4
+ Interface naming is the driver's concern, not this file's.
5
+ """
6
+
7
+ from acex_devkit.device_types.cisco.base import CiscoIOSDevice
8
+ from acex_devkit.models.device_type import PortGroup, Speed
9
+
10
+
11
+ class WS_C3524_XL(CiscoIOSDevice):
12
+ models: list[str] = ["WS-C3524-XL"]
13
+ ports: list[PortGroup] = [
14
+ PortGroup(count=24, speeds=[Speed.fast_ethernet]),
15
+ PortGroup(count=2, speeds=[Speed.gigabit]),
16
+ ]
17
+
18
+
19
+ class WS_C3550_12G(CiscoIOSDevice):
20
+ models: list[str] = ["WS-C3550-12G"]
21
+ ports: list[PortGroup] = [PortGroup(count=12, speeds=[Speed.gigabit])]
@@ -0,0 +1,101 @@
1
+ """Catalyst 3560 hardware model declarations.
2
+
3
+ A device declares the model strings it reports and its front-panel port runs.
4
+ Interface naming is the driver's concern, not this file's.
5
+ """
6
+
7
+ from acex_devkit.device_types.cisco.base import CiscoIOSDevice
8
+ from acex_devkit.models.device_type import PortGroup, Speed
9
+
10
+
11
+ class WS_C3560CG_8PC_S(CiscoIOSDevice):
12
+ models: list[str] = ["WS-C3560CG-8PC-S"]
13
+ ports: list[PortGroup] = [PortGroup(count=10, speeds=[Speed.gigabit])]
14
+
15
+
16
+ class WS_C3560CX_12PC_S(CiscoIOSDevice):
17
+ models: list[str] = ["WS-C3560CX-12PC-S"]
18
+ ports: list[PortGroup] = [PortGroup(count=14, speeds=[Speed.gigabit])]
19
+
20
+
21
+ class WS_C3560CX_12PD_S(CiscoIOSDevice):
22
+ models: list[str] = ["WS-C3560CX-12PD-S"]
23
+ ports: list[PortGroup] = [PortGroup(count=14, speeds=[Speed.gigabit])]
24
+
25
+
26
+ class WS_C3560CX_8PC_S(CiscoIOSDevice):
27
+ models: list[str] = ["WS-C3560CX-8PC-S"]
28
+ ports: list[PortGroup] = [PortGroup(count=10, speeds=[Speed.gigabit])]
29
+
30
+
31
+ class WS_C3560CX_8PT_S(CiscoIOSDevice):
32
+ models: list[str] = ["WS-C3560CX-8PT-S"]
33
+ ports: list[PortGroup] = [PortGroup(count=10, speeds=[Speed.gigabit])]
34
+
35
+
36
+ class WS_C3560CX_8TC_S(CiscoIOSDevice):
37
+ models: list[str] = ["WS-C3560CX-8TC-S"]
38
+ ports: list[PortGroup] = [PortGroup(count=10, speeds=[Speed.gigabit])]
39
+
40
+
41
+ class WS_C3560C_12PC_S(CiscoIOSDevice):
42
+ models: list[str] = ["WS-C3560C-12PC-S"]
43
+ ports: list[PortGroup] = [
44
+ PortGroup(count=12, speeds=[Speed.fast_ethernet]),
45
+ PortGroup(count=2, speeds=[Speed.gigabit]),
46
+ ]
47
+
48
+
49
+ class WS_C3560C_8PC_S(CiscoIOSDevice):
50
+ models: list[str] = ["WS-C3560C-8PC-S"]
51
+ ports: list[PortGroup] = [
52
+ PortGroup(count=8, speeds=[Speed.fast_ethernet]),
53
+ PortGroup(count=2, speeds=[Speed.gigabit]),
54
+ ]
55
+
56
+
57
+ class WS_C3560G_24PS(CiscoIOSDevice):
58
+ models: list[str] = ["WS-C3560G-24PS"]
59
+ ports: list[PortGroup] = [PortGroup(count=26, speeds=[Speed.gigabit])]
60
+
61
+
62
+ class WS_C3560G_48PS(CiscoIOSDevice):
63
+ models: list[str] = ["WS-C3560G-48PS"]
64
+ ports: list[PortGroup] = [PortGroup(count=52, speeds=[Speed.gigabit])]
65
+
66
+
67
+ class WS_C3560G_48TS(CiscoIOSDevice):
68
+ models: list[str] = ["WS-C3560G-48TS"]
69
+ ports: list[PortGroup] = [PortGroup(count=52, speeds=[Speed.gigabit])]
70
+
71
+
72
+ class WS_C3560V2_24PS(CiscoIOSDevice):
73
+ models: list[str] = ["WS-C3560V2-24PS"]
74
+ ports: list[PortGroup] = [
75
+ PortGroup(count=24, speeds=[Speed.fast_ethernet]),
76
+ PortGroup(count=2, speeds=[Speed.gigabit]),
77
+ ]
78
+
79
+
80
+ class WS_C3560_24PS(CiscoIOSDevice):
81
+ models: list[str] = ["WS-C3560-24PS"]
82
+ ports: list[PortGroup] = [
83
+ PortGroup(count=24, speeds=[Speed.fast_ethernet]),
84
+ PortGroup(count=2, speeds=[Speed.gigabit]),
85
+ ]
86
+
87
+
88
+ class WS_C3560_24TS(CiscoIOSDevice):
89
+ models: list[str] = ["WS-C3560-24TS"]
90
+ ports: list[PortGroup] = [
91
+ PortGroup(count=24, speeds=[Speed.fast_ethernet]),
92
+ PortGroup(count=2, speeds=[Speed.gigabit]),
93
+ ]
94
+
95
+
96
+ class WS_C3560_8PC(CiscoIOSDevice):
97
+ models: list[str] = ["WS-C3560-8PC"]
98
+ ports: list[PortGroup] = [
99
+ PortGroup(count=8, speeds=[Speed.fast_ethernet]),
100
+ PortGroup(count=2, speeds=[Speed.gigabit]),
101
+ ]
@@ -0,0 +1,76 @@
1
+ """Catalyst 3650 hardware model declarations.
2
+
3
+ A device declares the model strings it reports and its front-panel port runs.
4
+ Interface naming is the driver's concern, not this file's.
5
+ """
6
+
7
+ from acex_devkit.device_types.cisco.base import CiscoIOSXEDevice
8
+ from acex_devkit.models.device_type import PortGroup, Speed
9
+
10
+
11
+ class WS_C3650_24PD(CiscoIOSXEDevice):
12
+ models: list[str] = ["WS-C3650-24PD"]
13
+ ports: list[PortGroup] = [
14
+ PortGroup(count=24, speeds=[Speed.gigabit]),
15
+ PortGroup(count=2, speeds=[Speed.ten_gigabit]),
16
+ ]
17
+
18
+
19
+ class WS_C3650_24PDM(CiscoIOSXEDevice):
20
+ models: list[str] = ["WS-C3650-24PDM"]
21
+ ports: list[PortGroup] = [
22
+ PortGroup(count=24, speeds=[Speed.gigabit]),
23
+ PortGroup(count=2, speeds=[Speed.ten_gigabit]),
24
+ ]
25
+
26
+
27
+ class WS_C3650_24PS(CiscoIOSXEDevice):
28
+ models: list[str] = ["WS-C3650-24PS"]
29
+ ports: list[PortGroup] = [PortGroup(count=24, speeds=[Speed.gigabit])]
30
+
31
+
32
+ class WS_C3650_24TD(CiscoIOSXEDevice):
33
+ models: list[str] = ["WS-C3650-24TD"]
34
+ ports: list[PortGroup] = [PortGroup(count=24, speeds=[Speed.gigabit])]
35
+
36
+
37
+ class WS_C3650_48FQM(CiscoIOSXEDevice):
38
+ models: list[str] = ["WS-C3650-48FQM"]
39
+ ports: list[PortGroup] = [
40
+ PortGroup(count=48, speeds=[Speed.gigabit]),
41
+ PortGroup(count=4, speeds=[Speed.forty_gigabit]),
42
+ ]
43
+
44
+
45
+ class WS_C3650_48PD(CiscoIOSXEDevice):
46
+ models: list[str] = ["WS-C3650-48PD"]
47
+ ports: list[PortGroup] = [
48
+ PortGroup(count=48, speeds=[Speed.gigabit]),
49
+ PortGroup(count=2, speeds=[Speed.ten_gigabit]),
50
+ ]
51
+
52
+
53
+ class WS_C3650_48PQ(CiscoIOSXEDevice):
54
+ models: list[str] = ["WS-C3650-48PQ"]
55
+ ports: list[PortGroup] = [
56
+ PortGroup(count=48, speeds=[Speed.gigabit]),
57
+ PortGroup(count=4, speeds=[Speed.ten_gigabit]),
58
+ ]
59
+
60
+
61
+ class WS_C3650_48PS(CiscoIOSXEDevice):
62
+ models: list[str] = ["WS-C3650-48PS"]
63
+ ports: list[PortGroup] = [PortGroup(count=48, speeds=[Speed.gigabit])]
64
+
65
+
66
+ class WS_C3650_48TQ(CiscoIOSXEDevice):
67
+ models: list[str] = ["WS-C3650-48TQ"]
68
+ ports: list[PortGroup] = [
69
+ PortGroup(count=48, speeds=[Speed.gigabit]),
70
+ PortGroup(count=4, speeds=[Speed.forty_gigabit]),
71
+ ]
72
+
73
+
74
+ class WS_C3650_48TS(CiscoIOSXEDevice):
75
+ models: list[str] = ["WS-C3650-48TS"]
76
+ ports: list[PortGroup] = [PortGroup(count=48, speeds=[Speed.gigabit])]
@@ -0,0 +1,38 @@
1
+ """Catalyst 3750 hardware model declarations.
2
+
3
+ A device declares the model strings it reports and its front-panel port runs.
4
+ Interface naming is the driver's concern, not this file's.
5
+ """
6
+
7
+ from acex_devkit.device_types.cisco.base import CiscoIOSDevice
8
+ from acex_devkit.models.device_type import PortGroup, Speed
9
+
10
+
11
+ class WS_C3750G_12S(CiscoIOSDevice):
12
+ models: list[str] = ["WS-C3750G-12S"]
13
+ ports: list[PortGroup] = [PortGroup(count=12, speeds=[Speed.gigabit])]
14
+
15
+
16
+ class WS_C3750G_12S_S(CiscoIOSDevice):
17
+ models: list[str] = ["WS-C3750G-12S-S"]
18
+ ports: list[PortGroup] = [PortGroup(count=12, speeds=[Speed.gigabit])]
19
+
20
+
21
+ class WS_C3750G_24TS_1U(CiscoIOSDevice):
22
+ models: list[str] = ["WS-C3750G-24TS-1U"]
23
+ ports: list[PortGroup] = [PortGroup(count=26, speeds=[Speed.gigabit])]
24
+
25
+
26
+ class WS_C3750G_48TS(CiscoIOSDevice):
27
+ models: list[str] = ["WS-C3750G-48TS"]
28
+ ports: list[PortGroup] = [PortGroup(count=52, speeds=[Speed.gigabit])]
29
+
30
+
31
+ class WS_C3750X_24(CiscoIOSDevice):
32
+ models: list[str] = ["WS-C3750X-24"]
33
+ ports: list[PortGroup] = [PortGroup(count=26, speeds=[Speed.gigabit])]
34
+
35
+
36
+ class WS_C3750X_24P(CiscoIOSDevice):
37
+ models: list[str] = ["WS-C3750X-24P"]
38
+ ports: list[PortGroup] = [PortGroup(count=26, speeds=[Speed.gigabit])]