Loading 103221-1/TS_103_221_01.xsd +10 −0 Original line number Diff line number Diff line Loading @@ -156,6 +156,7 @@ <xs:element name="productID" type="XId" minOccurs="0"/> <xs:element name="listOfServiceTypes" type="ListOfServiceTypes" minOccurs="0"/> <xs:element name="taskDetailsExtensions" type="TaskDetailsExtensions" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="listOfTrafficPolicyReferences" type="ListOfTrafficPolicyReferences" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="ListOfTargetIdentifiers"> Loading Loading @@ -251,6 +252,7 @@ <xs:element name="listOfDIDs" type="ListOfDids" minOccurs="0"/> <xs:element name="mediationDetailsExtensions" type="MediationDetailsExtensions" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="serviceScopingOptions" type="ListOfServiceScopingOptions" minOccurs="0"/> <xs:element name="listOfTrafficPolicyReferences" type="ListOfTrafficPolicyReferences" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="ListOfServiceScopingOptions"> Loading Loading @@ -319,6 +321,14 @@ <xs:element name="dSId" type="GenericObjectID" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="ListOfTrafficPolicyReferences"> <xs:sequence> <xs:element name="trafficPolicyReference" type="TrafficPolicyReference" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:simpleType name="TrafficPolicyReference"> <xs:restriction base="GenericObjectID"/> </xs:simpleType> <xs:complexType name="ListOfMediationDetails"> <xs:sequence> <xs:element name="mediationDetails" type="MediationDetails" minOccurs="0" maxOccurs="unbounded"/> Loading 103221-1/TS_103_221_01_TrafficPolicy.xsd 0 → 100644 +25 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://uri.etsi.org/03221/X1/2023/02/TrafficPolicy" xmlns:x1="http://uri.etsi.org/03221/X1/2017/10" xmlns:etsi103280="http://uri.etsi.org/03280/common/2017/07" xmlns:hi1Policy="http://uri.etsi.org/03120/common/2022/07/TrafficPolicy" targetNamespace="http://uri.etsi.org/03221/X1/2023/02/TrafficPolicy" elementFormDefault="qualified" version="1.10.1"> <xs:import namespace="http://uri.etsi.org/03280/common/2017/07"/> <xs:import namespace="http://uri.etsi.org/03221/X1/2017/10"/> <xs:import namespace="http://uri.etsi.org/03120/common/2022/07/TrafficPolicy"/> <!-- Message containers --> <xs:complexType name="TrafficPolicyObject"> <xs:complexContent> <xs:extension base="x1:GenericObject"> <xs:sequence> <xs:group ref="hi1Policy:TrafficPolicyObjectGroup"></xs:group> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="TrafficRuleObject"> <xs:complexContent> <xs:extension base="x1:GenericObject"> <xs:sequence> <xs:group ref="hi1Policy:TrafficRuleObjectGroup"></xs:group> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:schema> 103221-1/examples/CreateTrafficPolicy_example.xml 0 → 100644 +64 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="UTF-8"?> <X1Request xmlns="http://uri.etsi.org/03221/X1/2017/10" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:policy="http://uri.etsi.org/03221/X1/2023/02/TrafficPolicy" xmlns:hi1Policy="http://uri.etsi.org/03120/common/2022/07/TrafficPolicy" xmlns:ts103280="http://uri.etsi.org/03280/common/2017/07" xmlns:hi1Common="http://uri.etsi.org/03120/common/2016/02/Common"> <x1RequestMessage xsi:type="CreateObjectRequest"> <admfIdentifier>admfID</admfIdentifier> <neIdentifier>neID</neIdentifier> <messageTimestamp>2023-02-14T18:46:21.247432Z</messageTimestamp> <version>v1.13.1</version> <x1TransactionId>2654a277-bafb-4240-9143-806ee41a3751</x1TransactionId> <createObject xsi:type="policy:TrafficRuleObject"> <objectId>6c67de93-926a-488b-9435-b0a30c20f676</objectId> <hi1Policy:Criteria> <hi1Policy:Criteria> <hi1Policy:IPPolicyCriteria> <hi1Policy:SourceIPRange> <ts103280:IPv4CIDR>203.0.113.0/24</ts103280:IPv4CIDR> </hi1Policy:SourceIPRange> </hi1Policy:IPPolicyCriteria> </hi1Policy:Criteria> </hi1Policy:Criteria> <hi1Policy:Action> <hi1Common:Owner>ETSI</hi1Common:Owner> <hi1Common:Name>PolicyAction</hi1Common:Name> <hi1Common:Value>PDSR</hi1Common:Value> </hi1Policy:Action> </createObject> </x1RequestMessage> <x1RequestMessage xsi:type="CreateObjectRequest"> <admfIdentifier>admfID</admfIdentifier> <neIdentifier>neID</neIdentifier> <messageTimestamp>2023-02-14T18:46:21.247432Z</messageTimestamp> <version>v1.13.1</version> <x1TransactionId>2654a277-bafb-4240-9143-806ee41a3751</x1TransactionId> <createObject xsi:type="policy:TrafficPolicyObject"> <objectId>b04057af-362f-4e8d-9337-416f43bfd7ec</objectId> <hi1Policy:TrafficPolicyName>Template Rule 1</hi1Policy:TrafficPolicyName> <hi1Policy:TrafficRules> <hi1Policy:TrafficRuleReference> <hi1Policy:Order>1</hi1Policy:Order> <hi1Policy:ObjectIdentifier>6c67de93-926a-488b-9435-b0a30c20f676</hi1Policy:ObjectIdentifier> </hi1Policy:TrafficRuleReference> </hi1Policy:TrafficRules> </createObject> </x1RequestMessage> <x1RequestMessage xsi:type="ActivateTaskRequest"> <admfIdentifier>admfID</admfIdentifier> <neIdentifier>neID</neIdentifier> <messageTimestamp>2023-02-14T18:46:21.247432Z</messageTimestamp> <version>v1.13.1</version> <x1TransactionId>211900a7-afb5-4187-b036-c85a92ab94aa</x1TransactionId> <taskDetails> <xId>2f5faff3-077d-4ec3-b66a-226e3a921eec</xId> <targetIdentifiers> <targetIdentifier> <e164Number>447700900000</e164Number> </targetIdentifier> </targetIdentifiers> <deliveryType>X2andX3</deliveryType> <listOfDIDs></listOfDIDs> <listOfTrafficPolicyReferences> <trafficPolicyReference>b04057af-362f-4e8d-9337-416f43bfd7ec</trafficPolicyReference> </listOfTrafficPolicyReferences> </taskDetails> </x1RequestMessage> </X1Request> create_attachments.py 0 → 100644 +60 −0 Original line number Diff line number Diff line from io import BytesIO from pathlib import Path import logging import zipfile # For ETSI portal attachments, a single zip archive is created which # contains: # - All files in the top-level spec directory # - A zipfile for each subdirectory, which contains all the files in that subdirectory # This second step is recursive, so each zip file contains only files and other zipfiles, never subdirectories # For an explanation as to *why* this is the case, speak to your ETSI technical officer. # # Example: Assuming the files for the portal attachment are of the following form: # # (contents of directory) # - top_level_file.ext # - subdirectory_1 # - subdirectory_1_file.ext # - subdirectory_2 # - subdirectory_2_file.ext # - TS 102 232-1 # # ...then the correct form for ETSI portal attachments is as follows # # ts_xxxxxx_vxxyyzzp0.zip # which contains: # - top_level_file.ext # - subdirectory_1.zip # (which contains) # - subdirectory_1_file.ext # - subdirectory_2.zip # (which contains) # - subdirectory_2_file.ext def recursively_zip_directory(directory: Path, zipname: str, recursion=0): logging.info( f"{'':{recursion * 4}}Packaging contents of {directory} into {zipname}" ) buffer = BytesIO() zip = zipfile.ZipFile(buffer, "a") for f in directory.iterdir(): if f.is_file(): logging.info(f"{'':{recursion * 4}}Adding file: {f}") zip.write(f, f.name) elif f.is_dir(): zipname = f.with_suffix(".zip").name logging.info(f"{'':{recursion * 4}}Adding archive: {f}") recurse_buffer = recursively_zip_directory(f, zipname, recursion + 1) zip.writestr(zipname, recurse_buffer.getvalue()) return buffer if __name__ == "__main__": logging.info("Creating attachments...") for directory in Path(".").glob("1*"): zip_name = f"ts_{directory.name}vXXYYZZp0.zip" zip_buffer = recursively_zip_directory(directory, zip_name) with open(zip_name, "wb") as f: f.write(zip_buffer.getvalue()) testing/xsd_compile_targets.json +6 −1 Original line number Diff line number Diff line Loading @@ -15,8 +15,13 @@ "103221-1/TS_103_221_01.xsd", "103221-1/TS_103_221_01_HashedID.xsd", "103221-1/TS_103_221_01_DestinationSet.xsd", "103221-1/TS_103_221_01_TrafficPolicy.xsd", "103280/TS_103_280.xsd", "103221-1/examples/ExampleGenericObjects.xsd" "103221-1/examples/ExampleGenericObjects.xsd", "103120/schema/ts_103120_Common.xsd", "103120/schema/ts_103120_Core.xsd", "103120/schema/ts_103120_TrafficPolicy.xsd", "testing/deps/xmldsig/xmldsig-core-schema.xsd" ], "exampleFiles" : [ "103221-1/examples" Loading Loading
103221-1/TS_103_221_01.xsd +10 −0 Original line number Diff line number Diff line Loading @@ -156,6 +156,7 @@ <xs:element name="productID" type="XId" minOccurs="0"/> <xs:element name="listOfServiceTypes" type="ListOfServiceTypes" minOccurs="0"/> <xs:element name="taskDetailsExtensions" type="TaskDetailsExtensions" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="listOfTrafficPolicyReferences" type="ListOfTrafficPolicyReferences" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="ListOfTargetIdentifiers"> Loading Loading @@ -251,6 +252,7 @@ <xs:element name="listOfDIDs" type="ListOfDids" minOccurs="0"/> <xs:element name="mediationDetailsExtensions" type="MediationDetailsExtensions" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="serviceScopingOptions" type="ListOfServiceScopingOptions" minOccurs="0"/> <xs:element name="listOfTrafficPolicyReferences" type="ListOfTrafficPolicyReferences" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="ListOfServiceScopingOptions"> Loading Loading @@ -319,6 +321,14 @@ <xs:element name="dSId" type="GenericObjectID" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="ListOfTrafficPolicyReferences"> <xs:sequence> <xs:element name="trafficPolicyReference" type="TrafficPolicyReference" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:simpleType name="TrafficPolicyReference"> <xs:restriction base="GenericObjectID"/> </xs:simpleType> <xs:complexType name="ListOfMediationDetails"> <xs:sequence> <xs:element name="mediationDetails" type="MediationDetails" minOccurs="0" maxOccurs="unbounded"/> Loading
103221-1/TS_103_221_01_TrafficPolicy.xsd 0 → 100644 +25 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://uri.etsi.org/03221/X1/2023/02/TrafficPolicy" xmlns:x1="http://uri.etsi.org/03221/X1/2017/10" xmlns:etsi103280="http://uri.etsi.org/03280/common/2017/07" xmlns:hi1Policy="http://uri.etsi.org/03120/common/2022/07/TrafficPolicy" targetNamespace="http://uri.etsi.org/03221/X1/2023/02/TrafficPolicy" elementFormDefault="qualified" version="1.10.1"> <xs:import namespace="http://uri.etsi.org/03280/common/2017/07"/> <xs:import namespace="http://uri.etsi.org/03221/X1/2017/10"/> <xs:import namespace="http://uri.etsi.org/03120/common/2022/07/TrafficPolicy"/> <!-- Message containers --> <xs:complexType name="TrafficPolicyObject"> <xs:complexContent> <xs:extension base="x1:GenericObject"> <xs:sequence> <xs:group ref="hi1Policy:TrafficPolicyObjectGroup"></xs:group> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="TrafficRuleObject"> <xs:complexContent> <xs:extension base="x1:GenericObject"> <xs:sequence> <xs:group ref="hi1Policy:TrafficRuleObjectGroup"></xs:group> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:schema>
103221-1/examples/CreateTrafficPolicy_example.xml 0 → 100644 +64 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="UTF-8"?> <X1Request xmlns="http://uri.etsi.org/03221/X1/2017/10" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:policy="http://uri.etsi.org/03221/X1/2023/02/TrafficPolicy" xmlns:hi1Policy="http://uri.etsi.org/03120/common/2022/07/TrafficPolicy" xmlns:ts103280="http://uri.etsi.org/03280/common/2017/07" xmlns:hi1Common="http://uri.etsi.org/03120/common/2016/02/Common"> <x1RequestMessage xsi:type="CreateObjectRequest"> <admfIdentifier>admfID</admfIdentifier> <neIdentifier>neID</neIdentifier> <messageTimestamp>2023-02-14T18:46:21.247432Z</messageTimestamp> <version>v1.13.1</version> <x1TransactionId>2654a277-bafb-4240-9143-806ee41a3751</x1TransactionId> <createObject xsi:type="policy:TrafficRuleObject"> <objectId>6c67de93-926a-488b-9435-b0a30c20f676</objectId> <hi1Policy:Criteria> <hi1Policy:Criteria> <hi1Policy:IPPolicyCriteria> <hi1Policy:SourceIPRange> <ts103280:IPv4CIDR>203.0.113.0/24</ts103280:IPv4CIDR> </hi1Policy:SourceIPRange> </hi1Policy:IPPolicyCriteria> </hi1Policy:Criteria> </hi1Policy:Criteria> <hi1Policy:Action> <hi1Common:Owner>ETSI</hi1Common:Owner> <hi1Common:Name>PolicyAction</hi1Common:Name> <hi1Common:Value>PDSR</hi1Common:Value> </hi1Policy:Action> </createObject> </x1RequestMessage> <x1RequestMessage xsi:type="CreateObjectRequest"> <admfIdentifier>admfID</admfIdentifier> <neIdentifier>neID</neIdentifier> <messageTimestamp>2023-02-14T18:46:21.247432Z</messageTimestamp> <version>v1.13.1</version> <x1TransactionId>2654a277-bafb-4240-9143-806ee41a3751</x1TransactionId> <createObject xsi:type="policy:TrafficPolicyObject"> <objectId>b04057af-362f-4e8d-9337-416f43bfd7ec</objectId> <hi1Policy:TrafficPolicyName>Template Rule 1</hi1Policy:TrafficPolicyName> <hi1Policy:TrafficRules> <hi1Policy:TrafficRuleReference> <hi1Policy:Order>1</hi1Policy:Order> <hi1Policy:ObjectIdentifier>6c67de93-926a-488b-9435-b0a30c20f676</hi1Policy:ObjectIdentifier> </hi1Policy:TrafficRuleReference> </hi1Policy:TrafficRules> </createObject> </x1RequestMessage> <x1RequestMessage xsi:type="ActivateTaskRequest"> <admfIdentifier>admfID</admfIdentifier> <neIdentifier>neID</neIdentifier> <messageTimestamp>2023-02-14T18:46:21.247432Z</messageTimestamp> <version>v1.13.1</version> <x1TransactionId>211900a7-afb5-4187-b036-c85a92ab94aa</x1TransactionId> <taskDetails> <xId>2f5faff3-077d-4ec3-b66a-226e3a921eec</xId> <targetIdentifiers> <targetIdentifier> <e164Number>447700900000</e164Number> </targetIdentifier> </targetIdentifiers> <deliveryType>X2andX3</deliveryType> <listOfDIDs></listOfDIDs> <listOfTrafficPolicyReferences> <trafficPolicyReference>b04057af-362f-4e8d-9337-416f43bfd7ec</trafficPolicyReference> </listOfTrafficPolicyReferences> </taskDetails> </x1RequestMessage> </X1Request>
create_attachments.py 0 → 100644 +60 −0 Original line number Diff line number Diff line from io import BytesIO from pathlib import Path import logging import zipfile # For ETSI portal attachments, a single zip archive is created which # contains: # - All files in the top-level spec directory # - A zipfile for each subdirectory, which contains all the files in that subdirectory # This second step is recursive, so each zip file contains only files and other zipfiles, never subdirectories # For an explanation as to *why* this is the case, speak to your ETSI technical officer. # # Example: Assuming the files for the portal attachment are of the following form: # # (contents of directory) # - top_level_file.ext # - subdirectory_1 # - subdirectory_1_file.ext # - subdirectory_2 # - subdirectory_2_file.ext # - TS 102 232-1 # # ...then the correct form for ETSI portal attachments is as follows # # ts_xxxxxx_vxxyyzzp0.zip # which contains: # - top_level_file.ext # - subdirectory_1.zip # (which contains) # - subdirectory_1_file.ext # - subdirectory_2.zip # (which contains) # - subdirectory_2_file.ext def recursively_zip_directory(directory: Path, zipname: str, recursion=0): logging.info( f"{'':{recursion * 4}}Packaging contents of {directory} into {zipname}" ) buffer = BytesIO() zip = zipfile.ZipFile(buffer, "a") for f in directory.iterdir(): if f.is_file(): logging.info(f"{'':{recursion * 4}}Adding file: {f}") zip.write(f, f.name) elif f.is_dir(): zipname = f.with_suffix(".zip").name logging.info(f"{'':{recursion * 4}}Adding archive: {f}") recurse_buffer = recursively_zip_directory(f, zipname, recursion + 1) zip.writestr(zipname, recurse_buffer.getvalue()) return buffer if __name__ == "__main__": logging.info("Creating attachments...") for directory in Path(".").glob("1*"): zip_name = f"ts_{directory.name}vXXYYZZp0.zip" zip_buffer = recursively_zip_directory(directory, zip_name) with open(zip_name, "wb") as f: f.write(zip_buffer.getvalue())
testing/xsd_compile_targets.json +6 −1 Original line number Diff line number Diff line Loading @@ -15,8 +15,13 @@ "103221-1/TS_103_221_01.xsd", "103221-1/TS_103_221_01_HashedID.xsd", "103221-1/TS_103_221_01_DestinationSet.xsd", "103221-1/TS_103_221_01_TrafficPolicy.xsd", "103280/TS_103_280.xsd", "103221-1/examples/ExampleGenericObjects.xsd" "103221-1/examples/ExampleGenericObjects.xsd", "103120/schema/ts_103120_Common.xsd", "103120/schema/ts_103120_Core.xsd", "103120/schema/ts_103120_TrafficPolicy.xsd", "testing/deps/xmldsig/xmldsig-core-schema.xsd" ], "exampleFiles" : [ "103221-1/examples" Loading