utf-queue-client 1.20.1b2__tar.gz → 1.21.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 (91) hide show
  1. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/PKG-INFO +1 -1
  2. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/pyproject.toml +1 -1
  3. utf_queue_client-1.21.0/test/Dockerfile.script_test +14 -0
  4. utf_queue_client-1.21.0/test/silabs-intermediate.pem +35 -0
  5. utf_queue_client-1.21.0/test/silabs-root.pem +29 -0
  6. utf_queue_client-1.21.0/test/test_ca_cert.py +84 -0
  7. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/models/schemas/utf_queue_models/models/python/generated_models_pydantic_v1.py +1 -7
  8. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/models/schemas/utf_queue_models/models/python/generated_models_pydantic_v2.py +1 -7
  9. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/models/schemas/utf_queue_models/schema/queue_message.json +0 -9
  10. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/scripts/__init__.py +13 -12
  11. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client.egg-info/PKG-INFO +1 -1
  12. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client.egg-info/SOURCES.txt +3 -0
  13. utf_queue_client-1.20.1b2/test/Dockerfile.script_test +0 -12
  14. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/.gitignore +0 -0
  15. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/.gitmodules +0 -0
  16. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/.idea/.gitignore +0 -0
  17. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/.idea/modules.xml +0 -0
  18. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/.idea/utf_queue_client_python.iml +0 -0
  19. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/.idea/vcs.xml +0 -0
  20. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/.pre-commit-config.yaml +0 -0
  21. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/Jenkinsfile +0 -0
  22. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/README.md +0 -0
  23. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/examples/example_async_consumer.py +0 -0
  24. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/requirements.txt +0 -0
  25. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/setup.cfg +0 -0
  26. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/sonar-project.properties +0 -0
  27. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/.gitattributes +0 -0
  28. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/conftest.py +0 -0
  29. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/pytest.ini +0 -0
  30. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/script_test.groovy +0 -0
  31. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/stopwatch.py +0 -0
  32. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test.hex +0 -0
  33. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test_amqp_connections.py +0 -0
  34. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test_async_consumer.py +0 -0
  35. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test_connection_retry.py +0 -0
  36. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test_data_lake_data_producer.py +0 -0
  37. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test_http_producer.py +0 -0
  38. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test_models.py +0 -0
  39. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test_opentelemetry_data_producer.py +0 -0
  40. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test_publish_release_info.py +0 -0
  41. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test_publish_test_results.py +0 -0
  42. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test_rail_data_producer_tests.py +0 -0
  43. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test_sqa_test_result_producer.py +0 -0
  44. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test_ubai_copy.py +0 -0
  45. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test_ubai_search.py +0 -0
  46. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test_ubai_update_retention.py +0 -0
  47. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test_ubai_upload.py +0 -0
  48. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test_utils.py +0 -0
  49. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test/test_xray_data_producer.py +0 -0
  50. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test-requirements-pydantic-v1.txt +0 -0
  51. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/test-requirements.txt +0 -0
  52. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/tools/build_dist.bat +0 -0
  53. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/tools/setup_venv.bat +0 -0
  54. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/tools/silabs-net.pem +0 -0
  55. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/tools/silabs.pem +0 -0
  56. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/tools/update_schema.bat +0 -0
  57. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/tools/upload_to_nexus.bat +0 -0
  58. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/tools/upload_to_pypi.bat +0 -0
  59. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/tools/upload_to_testpypi.bat +0 -0
  60. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/tox.ini +0 -0
  61. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/__init__.py +0 -0
  62. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/clients/__init__.py +0 -0
  63. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/clients/async_consumer.py +0 -0
  64. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/clients/base_producer.py +0 -0
  65. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/clients/data_lake_data_producer.py +0 -0
  66. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/clients/http_producer.py +0 -0
  67. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/clients/opentelemetry_data_producer.py +0 -0
  68. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/clients/sqa_test_result_producer.py +0 -0
  69. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/clients/test_rail_data_producer.py +0 -0
  70. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/clients/ubai_artifact_upload_request_producer.py +0 -0
  71. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/clients/xray_data_producer.py +0 -0
  72. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/exceptions/__init__.py +0 -0
  73. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/models/__init__.py +0 -0
  74. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/models/base_model.py +0 -0
  75. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/models/model_factory.py +0 -0
  76. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/models/schemas/__init__.py +0 -0
  77. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/models/schemas/utf_queue_models/models/python/__init__.py +0 -0
  78. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/models/schemas/utf_queue_models/models/python/generated_models.py +0 -0
  79. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/scripts/publish_release_info_cli.py +0 -0
  80. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/scripts/publish_test_results_cli.py +0 -0
  81. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/scripts/ubai_copy_cli.py +0 -0
  82. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/scripts/ubai_search_cli.py +0 -0
  83. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/scripts/ubai_update_retention_cli.py +0 -0
  84. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/scripts/ubai_upload_cli.py +0 -0
  85. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/utils/__init__.py +0 -0
  86. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/utils/queue_metrics_exporter.py +0 -0
  87. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client/utils/queue_span_exporter.py +0 -0
  88. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client.egg-info/dependency_links.txt +0 -0
  89. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client.egg-info/entry_points.txt +0 -0
  90. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client.egg-info/requires.txt +0 -0
  91. {utf_queue_client-1.20.1b2 → utf_queue_client-1.21.0}/utf_queue_client.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: utf-queue-client
3
- Version: 1.20.1b2
3
+ Version: 1.21.0
4
4
  Summary: No description provided
5
5
  Author-email: Joe Savage <joe.savage@silabs.com>
6
6
  Keywords: UTF
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "utf-queue-client"
7
- version = "1.20.1b2"
7
+ version = "1.21.0"
8
8
  description = "No description provided"
9
9
  authors = [
10
10
  { name = "Joe Savage", email = "joe.savage@silabs.com" }
@@ -0,0 +1,14 @@
1
+ FROM python:3.8
2
+
3
+ RUN apt update && apt install -y curl
4
+ WORKDIR /usr/share/ca-certificates
5
+ COPY test/silabs-root.pem ./silabs/silabs-root.crt
6
+ COPY test/silabs-intermediate.pem ./silabs/silabs-intermediate.crt
7
+ RUN curl --fail -k https://vault.dev.silabs.net/v1/pki/ca/pem -o ./silabs/silabs-net-dev.crt && \
8
+ curl --fail -k https://vault.silabs.net/v1/pki/ca/pem -o ./silabs/silabs-net-prod.crt && \
9
+ echo "silabs/silabs-net-dev.crt" >> /etc/ca-certificates.conf && \
10
+ echo "silabs/silabs-net-prod.crt" >> /etc/ca-certificates.conf && \
11
+ echo "silabs/silabs-root.crt" >> /etc/ca-certificates.conf && \
12
+ echo "silabs/silabs-intermediate.crt" >> /etc/ca-certificates.conf && \
13
+ /usr/sbin/update-ca-certificates
14
+
@@ -0,0 +1,35 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ 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
34
+ YjxAR3YGXOartflPVBb+sNBBTgvHByb9YWwtQg==
35
+ -----END CERTIFICATE-----
@@ -0,0 +1,29 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIFBTCCAu2gAwIBAgIQHlZ3eYApxoBG7lYiRKHKbDANBgkqhkiG9w0BAQsFADAV
3
+ MRMwEQYDVQQDEwpTTCBSb290IENBMB4XDTIxMTEwMTE0MzQyOVoXDTQxMTEwMTE0
4
+ NDQyOVowFTETMBEGA1UEAxMKU0wgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQAD
5
+ ggIPADCCAgoCggIBAN0NoaEPfhMvgv+O3DeW4RzQ2Q5Wg13AUjtX9LSYnIq5lgpO
6
+ Up5Fnig94pHdm/6vmcAryl9b5UMZwrzO1Pa7Jd31s0KgbRJSHF9yHZ8suetb04I3
7
+ cyX3TwGt14wjD+rIp5IdWHsahQreZyuIgFQAf6iFy+v9skLJ/mkf9VXSZUbUIDSl
8
+ 80NDuu5wTsJSvu5GOeAqlTyD2FEdf07o4yWPY/VDMEtvuzVkNoWshJazjO+cUiDX
9
+ nIeXDMUKshNN4wV2WX6/14el+XC8p6iI7Lp/Kjr2OYb29FKDzmkX61P0uxMp5dkB
10
+ NILtn2x3yUEGHhRsw21sj5+T5YFJYfCa12ZBaXXaffBLmzTeetYumrw0jCvDut1/
11
+ LY8jvhDdqWyHsSSaYoi5fYtB1QgqGVfuBYQ6Jt2msnDkK68TYaqrnuIbIp7s+y08
12
+ 47LfEr4siIz5mgILfyg2U5rPeRJc6qh3M7SrF7Cc05MU8dfBvdSs+dpnxqoAgYnk
13
+ lfU/0PNTIrz1R3P/w+xt5sSXlNB6q/IpFCj69grBXNCW1FPOIZeRis38pGq58whA
14
+ 9bJoqjKQL0rTcN9IIbk6yY0xLReIJ+egV8GgVYuNP+yYCN6/5NYqzm85DCBkSKG1
15
+ R5srHQUPTRzd5tgAg0m76QBksXE022PCsPefeS+ZL2zo8qjbg8yBB1lhPOljAgMB
16
+ AAGjUTBPMAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSs
17
+ ODwoVsWmMJ3N+St1Wp15q0uCCTAQBgkrBgEEAYI3FQEEAwIBADANBgkqhkiG9w0B
18
+ AQsFAAOCAgEANadAUufhrExMpqVh9LKL8n9zRZVicrnWtjotIRj5o9jpiDVyKxK9
19
+ 4ZBYXRAqmQqql0QPM9lcSBkJwWcYZYfGhrZ4uD2TWJ8sW2JeRO5MRvJn7yR73LC6
20
+ lZQydGPqINZu8W1aoZ7giTFHhCP9kIwEY6y7WUZf7VPDYO8xM7np0zjWVl0R0gQF
21
+ Xp8XYCj6EpCnsn5ZwsbTnekz3exVC6QsxB/dBlgeI0MN4D2J2sOMlw2xlHCUkzLQ
22
+ TCfCwcGKSzKVQz1XQ2SpI6JS9An9EQeJH1jgvPNr8pDPhGZY7IKf6RwhI1inK6/5
23
+ e/Op/X8ifzUrUxW7HQIkOKKTu09hBrp8yq7+CYOXXEHNmsiwptUyUT202EBEWIQa
24
+ xOr2PwLQVYyCGM1Ec7Q/j179jfhZvUEBVK6zN8XwlIrwcgiI/8azwgT5d4Rqz4No
25
+ T6rLwbucYafP8HndjiwkUKW8SeTNI3+1uPR0Qrl87qYd5KqPmwV2FIaqYpH7kT91
26
+ PJN6Z/ClWFInUGXDBWrFdW6lWk/VBFNeAoTdwHR1WtmmyEsKR8LFimq97Uc8URSb
27
+ alvr09umQ+aieXPphyhQNQoUuLdSmAafcgr1Aj/8PNTCPEZih0aOhA6pVDMkyApr
28
+ GmZ84Rd6x6J2YMWKrldCdelWbiQOpMNBu0TG8QHjcrJj2esL1BUU4xI=
29
+ -----END CERTIFICATE-----
@@ -0,0 +1,84 @@
1
+ import pathlib
2
+ import tempfile
3
+ from unittest.mock import patch
4
+
5
+ import requests
6
+ from certifi import contents as certifi_contents
7
+
8
+ from utf_queue_client.scripts import (
9
+ LOCAL_CA_FILE_PATH,
10
+ SILABS_NET_CA,
11
+ get_or_make_ca_file,
12
+ )
13
+
14
+ ISRG_X1_CERT = """-----BEGIN CERTIFICATE-----
15
+ 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
44
+ -----END CERTIFICATE-----
45
+ """
46
+
47
+
48
+ def verify_ca(ca_file: str):
49
+ r = requests.get("https://iot-notifications.silabs.net/docs", verify=ca_file)
50
+ assert r.status_code == 200
51
+
52
+ r = requests.get("https://ubai.silabs.net/docs", verify=ca_file)
53
+ assert r.status_code == 200
54
+
55
+
56
+ def get_ca_and_verify():
57
+ LOCAL_CA_FILE_PATH.unlink(missing_ok=True)
58
+ for _ in range(2):
59
+ ca_file = get_or_make_ca_file()
60
+ assert pathlib.Path(ca_file).is_file()
61
+ ca_file_text = pathlib.Path(ca_file).read_text()
62
+ assert ISRG_X1_CERT in ca_file_text
63
+ assert SILABS_NET_CA in ca_file_text
64
+
65
+ verify_ca(ca_file)
66
+ LOCAL_CA_FILE_PATH.unlink(missing_ok=True)
67
+
68
+
69
+ def test_get_or_make_ca_file_empty_default_ca():
70
+ with patch(
71
+ "utf_queue_client.scripts.LOCAL_CA_FILE_PATH",
72
+ pathlib.Path(tempfile.gettempdir()) / "does-not-exist",
73
+ ):
74
+ get_ca_and_verify()
75
+
76
+
77
+ def test_get_or_make_ca_file_existing_default_ca(tmp_path):
78
+ default_ca_file = tmp_path / "default-ca.crt"
79
+ default_ca_file.write_text(certifi_contents() + SILABS_NET_CA)
80
+ with patch(
81
+ "utf_queue_client.scripts.LOCAL_CA_FILE_PATH",
82
+ default_ca_file,
83
+ ):
84
+ get_ca_and_verify()
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: queue_message.json
3
- # timestamp: 2025-09-08T15:07:56+00:00
3
+ # timestamp: 2025-09-08T16:49:35+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -176,12 +176,6 @@ class SqaTestResult(BaseModel):
176
176
  test_case_uuid: Optional[str] = Field(
177
177
  None, description="UUID generated by the client software"
178
178
  )
179
- from_branch_name: Optional[constr(max_length=250)] = Field(
180
- None, description="Branch from which the test originated"
181
- )
182
- from_build_num: Optional[float] = Field(
183
- None, description="Build number from which the test originated"
184
- )
185
179
 
186
180
 
187
181
  class SqaTestSession(BaseModel):
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: queue_message.json
3
- # timestamp: 2025-09-08T15:07:57+00:00
3
+ # timestamp: 2025-09-08T16:49:36+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -174,12 +174,6 @@ class SqaTestResult(BaseModel):
174
174
  test_case_uuid: Optional[str] = Field(
175
175
  None, description="UUID generated by the client software"
176
176
  )
177
- from_branch_name: Optional[constr(max_length=250)] = Field(
178
- None, description="Branch from which the test originated"
179
- )
180
- from_build_num: Optional[float] = Field(
181
- None, description="Build number from which the test originated"
182
- )
183
177
 
184
178
 
185
179
  class SqaTestSession(BaseModel):
@@ -493,15 +493,6 @@
493
493
  "test_case_uuid": {
494
494
  "description": "UUID generated by the client software",
495
495
  "type": "string"
496
- },
497
- "from_branch_name": {
498
- "description": "Branch from which the test originated",
499
- "maxLength": 250,
500
- "type": "string"
501
- },
502
- "from_build_num": {
503
- "description": "Build number from which the test originated",
504
- "type": "number"
505
496
  }
506
497
  },
507
498
  "required": [
@@ -1,9 +1,11 @@
1
1
  import logging
2
2
  import os
3
+ import pathlib
3
4
  import tempfile
4
5
  from contextlib import contextmanager
5
6
 
6
7
  import urllib3
8
+ from certifi import contents as certifi_contents
7
9
  from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
8
10
  from otel_extensions import (
9
11
  TelemetryOptions,
@@ -17,8 +19,7 @@ telemetry_initialized = False
17
19
 
18
20
  SERVICE_NAME = "UTF-Queue-Client-CLI"
19
21
 
20
- SILABS_NET_CA = """
21
- -----BEGIN CERTIFICATE-----
22
+ SILABS_NET_CA = """-----BEGIN CERTIFICATE-----
22
23
  MIIDMjCCAhqgAwIBAgIUDGFjXuAmh2l8HHbGrbQcyurWMRowDQYJKoZIhvcNAQEL
23
24
  BQAwFTETMBEGA1UEAxMKc2lsYWJzLm5ldDAeFw0yMDA1MjkyMDQyNDBaFw0zMDA1
24
25
  MjcyMDQzMDlaMBUxEzARBgNVBAMTCnNpbGFicy5uZXQwggEiMA0GCSqGSIb3DQEB
@@ -40,19 +41,19 @@ XBhoBcSg
40
41
  -----END CERTIFICATE-----
41
42
  """
42
43
 
43
- DEFAULT_SILABS_NET_CA_CERT_FILE = "/usr/local/share/ca-certificates/vault-ca-prod.crt"
44
+
45
+ LOCAL_CA_FILE_PATH = (
46
+ pathlib.Path(tempfile.gettempdir()) / "cert-bundle-with-silabs-net-ca.crt"
47
+ )
44
48
 
45
49
 
46
50
  def get_or_make_ca_file() -> str:
47
- if os.path.isfile(DEFAULT_SILABS_NET_CA_CERT_FILE):
48
- return DEFAULT_SILABS_NET_CA_CERT_FILE
49
- temp_dir = tempfile.gettempdir()
50
- ca_file_name = "silabs-net-ca.crt"
51
- ca_file_path = os.path.join(temp_dir, ca_file_name)
52
- if not os.path.isfile(ca_file_path):
53
- with open(ca_file_path, "w") as f:
54
- f.write(SILABS_NET_CA)
55
- return ca_file_path
51
+ """Creates a local CA file, if it doesn't exist already, that includes both the certifi bundle and the silabs.net CA.
52
+ Returns the ca path as a string.
53
+ """
54
+ if not LOCAL_CA_FILE_PATH.is_file():
55
+ LOCAL_CA_FILE_PATH.write_text(certifi_contents() + SILABS_NET_CA)
56
+ return str(LOCAL_CA_FILE_PATH)
56
57
 
57
58
 
58
59
  @contextmanager
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: utf-queue-client
3
- Version: 1.20.1b2
3
+ Version: 1.21.0
4
4
  Summary: No description provided
5
5
  Author-email: Joe Savage <joe.savage@silabs.com>
6
6
  Keywords: UTF
@@ -19,10 +19,13 @@ test/Dockerfile.script_test
19
19
  test/conftest.py
20
20
  test/pytest.ini
21
21
  test/script_test.groovy
22
+ test/silabs-intermediate.pem
23
+ test/silabs-root.pem
22
24
  test/stopwatch.py
23
25
  test/test.hex
24
26
  test/test_amqp_connections.py
25
27
  test/test_async_consumer.py
28
+ test/test_ca_cert.py
26
29
  test/test_connection_retry.py
27
30
  test/test_data_lake_data_producer.py
28
31
  test/test_http_producer.py
@@ -1,12 +0,0 @@
1
- FROM python:3.8
2
-
3
- RUN apt update && apt install -y curl
4
- WORKDIR /usr/local/share/ca-certificates
5
- RUN curl -k https://vault.dev.silabs.net/v1/pki/ca/pem -o silabs-net-dev.crt && \
6
- curl -k https://vault.silabs.net/v1/pki/ca/pem -o silabs-net-prod.crt && \
7
- curl http://pkicorp.silabs.com/certdata/SL%20Root%20CA.crt -o /tmp/slroot.der && \
8
- curl http://pkicorp.silabs.com/certdata/SL%20Enterprise%20CA01.crt -o /tmp/slintermediate.der && \
9
- openssl x509 -inform der -in /tmp/slroot.der -out slroot.crt && \
10
- openssl x509 -inform der -in /tmp/slintermediate.der -out slintermediate.crt && \
11
- /usr/sbin/update-ca-certificates
12
-