From b12bfd3f24a36797213d9ab110ed11898d50303c Mon Sep 17 00:00:00 2001 From: Tony Williams Date: Wed, 25 Oct 2023 21:22:24 +1100 Subject: [PATCH 1/2] first commit - passes lint and test --- docs/reference/models_classic.rst | 12 +++++ .../models/classic/network_segments.py | 54 +++++++++++++++++++ .../test_models_classic_network_segments | 44 +++++++++++++++ 3 files changed, 110 insertions(+) create mode 100644 src/jamf_pro_sdk/models/classic/network_segments.py create mode 100644 tests/models/test_models_classic_network_segments diff --git a/docs/reference/models_classic.rst b/docs/reference/models_classic.rst index c2753d2..4c66526 100644 --- a/docs/reference/models_classic.rst +++ b/docs/reference/models_classic.rst @@ -79,3 +79,15 @@ Computer Groups ClassicComputerGroupMember ClassicComputerGroupCriterion ClassicComputerGroupCriterionSearchType + +Network Segments +---------------- + +.. currentmodule:: jamf_pro_sdk.models.classic.network_segments + +.. autosummary:: + :toctree: _autosummary + :nosignatures: + + ClassicNetworkSegment + ClassicNetworkSegmentsItem diff --git a/src/jamf_pro_sdk/models/classic/network_segments.py b/src/jamf_pro_sdk/models/classic/network_segments.py new file mode 100644 index 0000000..c362c03 --- /dev/null +++ b/src/jamf_pro_sdk/models/classic/network_segments.py @@ -0,0 +1,54 @@ +from typing import Optional + +from pydantic import Extra + +from .. import BaseModel +from . import ClassicApiModel + +_XML_ARRAY_ITEM_NAMES = {"starting_address": "starting_address", "ending_address": "ending_address"} + + +class ClassicNetworkSegmentItem(BaseModel, extra=Extra.allow): + """Represents a network_segment record returned by the + :meth:`~jamf_pro_sdk.clients.classic_api.ClassicApi.list_network_segments` operation. + """ + + id: Optional[int] + name: Optional[str] + starting_address: Optional[str] + ending_address: Optional[str] + + +class ClassicNetworkSegment(ClassicApiModel): + """Represents a network_segment record returned by the + :meth:`~jamf_pro_sdk.clients.classic_api.ClassicApi.get_network_segment_by_id` operation. + """ + + _xml_root_name = "network_segment" + _xml_array_item_names = _XML_ARRAY_ITEM_NAMES + _xml_write_fields = { + "name", + "starting_address", + "ending_address", + "distribution_server", + "distribution_point", + "url", + "swu_server", + "building", + "department", + "override_buildings", + "override_departments", + } + + id: Optional[int] + name: Optional[str] + starting_address: Optional[str] + ending_address: Optional[str] + distribution_server: Optional[str] + distribution_point: Optional[str] + url: Optional[str] + swu_server: Optional[str] + building: Optional[str] + department: Optional[str] + override_buildings: Optional[bool] + override_departments: Optional[bool] diff --git a/tests/models/test_models_classic_network_segments b/tests/models/test_models_classic_network_segments new file mode 100644 index 0000000..40cd9b0 --- /dev/null +++ b/tests/models/test_models_classic_network_segments @@ -0,0 +1,44 @@ +import json + +from deepdiff import DeepDiff +from src.jamf_pro_sdk.models.classic.network_segments import ClassicNetworkSegment + +NETWORK_SEGMENT_JSON = { + "network_segment": { + "id": 1, + "name": "Test Network", + "starting_address": "192.168.1.31", + "ending_address": "192.168.7.255", + "distribution_point": "Cloud Distribution Point", + "url": "https://use1-jcds.services.jamfcloud.com/download/66d8960449b44a668c38e4dddbe094d7", + "building": "Test Building", + "department": "Test Department", + } +} + + +def test_network_segment_model_parsings(): + """Verify select attributes across the NetworkSegment model.""" + network_segment = ClassicNetworkSegment(**NETWORK_SEGMENT_JSON["network_segment"]) + + assert network_segment is not None # mypy + assert network_segment.name == "Test Network" + assert network_segment.starting_address == "192.168.1.31" + assert network_segment.ending_address == "192.168.7.255" + assert network_segment.id == 1 + assert network_segment.distribution_point == "Cloud Distribution Point" + assert ( + network_segment.url + == "https://use1-jcds.services.jamfcloud.com/download/66d8960449b44a668c38e4dddbe094d7" + ) + assert network_segment.building == "Test Building" + assert network_segment.department == "Test Department" + + +def test_network_segment_model_json_output_matches_input(): + network_segment = ClassicNetworkSegment(**NETWORK_SEGMENT_JSON["network_segment"]) + serialized_output = json.loads(network_segment.json(exclude_none=True)) + + diff = DeepDiff(NETWORK_SEGMENT_JSON["network_segment"], serialized_output, ignore_order=True) + + assert not diff From 34e1ad8b85e132e2520dc18941e2132d044eea1d Mon Sep 17 00:00:00 2001 From: Bryson Tyrrell Date: Wed, 25 Oct 2023 09:01:50 -0500 Subject: [PATCH 2/2] Update src/jamf_pro_sdk/models/classic/network_segments.py --- src/jamf_pro_sdk/models/classic/network_segments.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jamf_pro_sdk/models/classic/network_segments.py b/src/jamf_pro_sdk/models/classic/network_segments.py index c362c03..10b122c 100644 --- a/src/jamf_pro_sdk/models/classic/network_segments.py +++ b/src/jamf_pro_sdk/models/classic/network_segments.py @@ -5,7 +5,7 @@ from .. import BaseModel from . import ClassicApiModel -_XML_ARRAY_ITEM_NAMES = {"starting_address": "starting_address", "ending_address": "ending_address"} +_XML_ARRAY_ITEM_NAMES = {} class ClassicNetworkSegmentItem(BaseModel, extra=Extra.allow):