stackit-alb 0.9.0__tar.gz → 0.9.2__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 (56) hide show
  1. stackit_alb-0.9.2/.gitignore +267 -0
  2. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/PKG-INFO +10 -11
  3. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/pyproject.toml +48 -36
  4. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/api/default_api.py +16 -15
  5. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/api_client.py +22 -9
  6. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/exceptions.py +1 -1
  7. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/__init__.py +0 -1
  8. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/create_load_balancer_payload.py +12 -12
  9. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/get_quota_response.py +4 -5
  10. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/host_config.py +3 -3
  11. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/list_credentials_response.py +3 -3
  12. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/list_load_balancers_response.py +3 -3
  13. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/list_plans_response.py +3 -3
  14. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/load_balancer.py +12 -12
  15. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/network.py +3 -2
  16. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/protocol_options_http.py +3 -3
  17. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/rule.py +6 -6
  18. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/status.py +3 -3
  19. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/target_pool.py +3 -3
  20. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/update_load_balancer_payload.py +12 -12
  21. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/update_target_pool_payload.py +3 -3
  22. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/rest.py +19 -3
  23. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/LICENSE.md +0 -0
  24. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/NOTICE.txt +0 -0
  25. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/README.md +0 -0
  26. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/__init__.py +0 -0
  27. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/api/__init__.py +0 -0
  28. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/api_response.py +0 -0
  29. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/configuration.py +0 -0
  30. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/active_health_check.py +0 -0
  31. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/certificate_config.py +0 -0
  32. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/cookie_persistence.py +0 -0
  33. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/create_credentials_payload.py +0 -0
  34. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/create_credentials_response.py +0 -0
  35. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/credentials_response.py +0 -0
  36. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/get_credentials_response.py +0 -0
  37. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/google_protobuf_any.py +0 -0
  38. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/http_header.py +0 -0
  39. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/http_health_checks.py +0 -0
  40. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/listener.py +0 -0
  41. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/load_balancer_error.py +0 -0
  42. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/load_balancer_options.py +0 -0
  43. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/loadbalancer_option_access_control.py +0 -0
  44. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/loadbalancer_option_logs.py +0 -0
  45. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/loadbalancer_option_metrics.py +0 -0
  46. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/loadbalancer_option_observability.py +0 -0
  47. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/path.py +0 -0
  48. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/plan_details.py +0 -0
  49. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/protocol_options_https.py +0 -0
  50. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/query_parameter.py +0 -0
  51. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/security_group.py +0 -0
  52. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/target.py +0 -0
  53. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/tls_config.py +0 -0
  54. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/update_credentials_payload.py +0 -0
  55. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/models/update_credentials_response.py +0 -0
  56. {stackit_alb-0.9.0 → stackit_alb-0.9.2}/src/stackit/alb/py.typed +0 -0
@@ -0,0 +1,267 @@
1
+ ### VisualStudioCode template
2
+ .vscode/*
3
+ !.vscode/settings.json
4
+ !.vscode/tasks.json
5
+ !.vscode/launch.json
6
+ !.vscode/extensions.json
7
+ !.vscode/*.code-snippets
8
+
9
+ # Local History for Visual Studio Code
10
+ .history/
11
+
12
+ # Built Visual Studio Code Extensions
13
+ *.vsix
14
+
15
+ ### JetBrains template
16
+ # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
17
+ # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
18
+
19
+ # User-specific stuff
20
+ .idea/**/workspace.xml
21
+ .idea/**/tasks.xml
22
+ .idea/**/usage.statistics.xml
23
+ .idea/**/dictionaries
24
+ .idea/**/shelf
25
+
26
+ # AWS User-specific
27
+ .idea/**/aws.xml
28
+
29
+ # Generated files
30
+ .idea/**/contentModel.xml
31
+
32
+ # Sensitive or high-churn files
33
+ .idea/**/dataSources/
34
+ .idea/**/dataSources.ids
35
+ .idea/**/dataSources.local.xml
36
+ .idea/**/sqlDataSources.xml
37
+ .idea/**/dynamic.xml
38
+ .idea/**/uiDesigner.xml
39
+ .idea/**/dbnavigator.xml
40
+
41
+ # Gradle
42
+ .idea/**/gradle.xml
43
+ .idea/**/libraries
44
+
45
+ # Gradle and Maven with auto-import
46
+ # When using Gradle or Maven with auto-import, you should exclude module files,
47
+ # since they will be recreated, and may cause churn. Uncomment if using
48
+ # auto-import.
49
+ # .idea/artifacts
50
+ # .idea/compiler.xml
51
+ # .idea/jarRepositories.xml
52
+ # .idea/modules.xml
53
+ # .idea/*.iml
54
+ # .idea/modules
55
+ # *.iml
56
+ # *.ipr
57
+
58
+ # CMake
59
+ cmake-build-*/
60
+
61
+ # Mongo Explorer plugin
62
+ .idea/**/mongoSettings.xml
63
+
64
+ # File-based project format
65
+ *.iws
66
+
67
+ # IntelliJ
68
+ out/
69
+
70
+ # mpeltonen/sbt-idea plugin
71
+ .idea_modules/
72
+
73
+ # JIRA plugin
74
+ atlassian-ide-plugin.xml
75
+
76
+ # Cursive Clojure plugin
77
+ .idea/replstate.xml
78
+
79
+ # SonarLint plugin
80
+ .idea/sonarlint/
81
+
82
+ # Crashlytics plugin (for Android Studio and IntelliJ)
83
+ com_crashlytics_export_strings.xml
84
+ crashlytics.properties
85
+ crashlytics-build.properties
86
+ fabric.properties
87
+
88
+ # Editor-based Rest Client
89
+ .idea/httpRequests
90
+
91
+ # Android studio 3.1+ serialized cache file
92
+ .idea/caches/build_file_checksums.ser
93
+
94
+ ### VirtualEnv template
95
+ # Virtualenv
96
+ # http://iamzed.com/2009/05/07/a-primer-on-virtualenv/
97
+ .Python
98
+ [Bb]in
99
+ [Ii]nclude
100
+ [Ll]ib
101
+ [Ll]ib64
102
+ [Ll]ocal
103
+ [Ss]cripts
104
+ pyvenv.cfg
105
+ .venv
106
+ pip-selfcheck.json
107
+
108
+ ### Python template
109
+ # Byte-compiled / optimized / DLL files
110
+ __pycache__/
111
+ *.py[cod]
112
+ *$py.class
113
+
114
+ # C extensions
115
+ *.so
116
+
117
+ # Distribution / packaging
118
+ build/
119
+ develop-eggs/
120
+ dist/
121
+ downloads/
122
+ eggs/
123
+ .eggs/
124
+ lib/
125
+ lib64/
126
+ parts/
127
+ sdist/
128
+ var/
129
+ wheels/
130
+ share/python-wheels/
131
+ *.egg-info/
132
+ .installed.cfg
133
+ *.egg
134
+ MANIFEST
135
+
136
+ # PyInstaller
137
+ # Usually these files are written by a python script from a template
138
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
139
+ *.manifest
140
+ *.spec
141
+
142
+ # Installer logs
143
+ pip-log.txt
144
+ pip-delete-this-directory.txt
145
+
146
+ # Unit test / coverage reports
147
+ htmlcov/
148
+ .tox/
149
+ .nox/
150
+ .coverage
151
+ .coverage.*
152
+ .cache
153
+ nosetests.xml
154
+ coverage.xml
155
+ *.cover
156
+ *.py,cover
157
+ .hypothesis/
158
+ .pytest_cache/
159
+ cover/
160
+
161
+ # Translations
162
+ *.mo
163
+ *.pot
164
+
165
+ # Django stuff:
166
+ *.log
167
+ local_settings.py
168
+ db.sqlite3
169
+ db.sqlite3-journal
170
+
171
+ # Flask stuff:
172
+ instance/
173
+ .webassets-cache
174
+
175
+ # Scrapy stuff:
176
+ .scrapy
177
+
178
+ # Sphinx documentation
179
+ docs/_build/
180
+
181
+ # PyBuilder
182
+ .pybuilder/
183
+ target/
184
+
185
+ # Jupyter Notebook
186
+ .ipynb_checkpoints
187
+
188
+ # IPython
189
+ profile_default/
190
+ ipython_config.py
191
+
192
+ # pyenv
193
+ # For a library or package, you might want to ignore these files since the code is
194
+ # intended to run in multiple environments; otherwise, check them in:
195
+ # .python-version
196
+
197
+ # pipenv
198
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
199
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
200
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
201
+ # install all needed dependencies.
202
+ #Pipfile.lock
203
+
204
+ # poetry
205
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
206
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
207
+ # commonly ignored for libraries.
208
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
209
+ #poetry.lock
210
+
211
+ # pdm
212
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
213
+ #pdm.lock
214
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
215
+ # in version control.
216
+ # https://pdm.fming.dev/#use-with-ide
217
+ .pdm.toml
218
+
219
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
220
+ __pypackages__/
221
+
222
+ # Celery stuff
223
+ celerybeat-schedule
224
+ celerybeat.pid
225
+
226
+ # SageMath parsed files
227
+ *.sage.py
228
+
229
+ # Environments
230
+ .env
231
+ env/
232
+ venv/
233
+ ENV/
234
+ env.bak/
235
+ venv.bak/
236
+
237
+ # Spyder project settings
238
+ .spyderproject
239
+ .spyproject
240
+
241
+ # Rope project settings
242
+ .ropeproject
243
+
244
+ # mkdocs documentation
245
+ /site
246
+
247
+ # mypy
248
+ .mypy_cache/
249
+ .dmypy.json
250
+ dmypy.json
251
+
252
+ # Pyre type checker
253
+ .pyre/
254
+
255
+ # pytype static type analyzer
256
+ .pytype/
257
+
258
+ # Cython debug symbols
259
+ cython_debug/
260
+
261
+ # PyCharm
262
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
263
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
264
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
265
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
266
+ .idea/
267
+
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stackit-alb
3
- Version: 0.9.0
3
+ Version: 0.9.2
4
4
  Summary: Application Load Balancer API
5
+ Project-URL: Homepage, https://github.com/stackitcloud/stackit-sdk-python
6
+ Project-URL: Issues, https://github.com/stackitcloud/stackit-sdk-python/issues
7
+ Author-email: STACKIT Developer Tools <developer-tools@stackit.cloud>
5
8
  License-File: LICENSE.md
6
9
  License-File: NOTICE.txt
7
- Author: STACKIT Developer Tools
8
- Author-email: developer-tools@stackit.cloud
9
- Requires-Python: >=3.9,<4.0
10
10
  Classifier: License :: OSI Approved :: Apache Software License
11
11
  Classifier: Operating System :: OS Independent
12
12
  Classifier: Programming Language :: Python :: 3
@@ -16,12 +16,11 @@ Classifier: Programming Language :: Python :: 3.11
16
16
  Classifier: Programming Language :: Python :: 3.12
17
17
  Classifier: Programming Language :: Python :: 3.13
18
18
  Classifier: Programming Language :: Python :: 3.14
19
- Requires-Dist: pydantic (>=2.9.2)
20
- Requires-Dist: python-dateutil (>=2.9.0.post0)
21
- Requires-Dist: requests (>=2.32.3)
22
- Requires-Dist: stackit-core (>=0.0.1a)
23
- Project-URL: Homepage, https://github.com/stackitcloud/stackit-sdk-python
24
- Project-URL: Issues, https://github.com/stackitcloud/stackit-sdk-python/issues
19
+ Requires-Python: <4.0,>=3.9
20
+ Requires-Dist: pydantic>=2.9.2
21
+ Requires-Dist: python-dateutil>=2.9.0.post0
22
+ Requires-Dist: requests>=2.32.3
23
+ Requires-Dist: stackit-core>=0.0.1a
25
24
  Description-Content-Type: text/markdown
26
25
 
27
26
  # stackit.alb
@@ -47,4 +46,4 @@ import stackit.alb
47
46
 
48
47
  ## Getting Started
49
48
 
50
- [Examples](https://github.com/stackitcloud/stackit-sdk-python/tree/main/examples) for the usage of the package can be found in the [GitHub repository](https://github.com/stackitcloud/stackit-sdk-python) of the SDK.
49
+ [Examples](https://github.com/stackitcloud/stackit-sdk-python/tree/main/examples) for the usage of the package can be found in the [GitHub repository](https://github.com/stackitcloud/stackit-sdk-python) of the SDK.
@@ -1,55 +1,67 @@
1
1
  [project]
2
2
  name = "stackit-alb"
3
-
4
- [tool.poetry]
5
- name = "stackit-alb"
6
- version = "v0.9.0"
7
- authors = [
8
- "STACKIT Developer Tools <developer-tools@stackit.cloud>",
9
- ]
3
+ version = "v0.9.2"
10
4
  description = "Application Load Balancer API"
5
+ authors = [{ name = "STACKIT Developer Tools", email = "developer-tools@stackit.cloud" }]
6
+ requires-python = ">=3.9,<4.0"
11
7
  readme = "README.md"
12
- #license = "NoLicense"
13
8
  classifiers = [
14
9
  "Programming Language :: Python :: 3",
15
10
  "License :: OSI Approved :: Apache Software License",
16
11
  "Operating System :: OS Independent",
12
+ "Programming Language :: Python :: 3.9",
13
+ "Programming Language :: Python :: 3.10",
14
+ "Programming Language :: Python :: 3.11",
15
+ "Programming Language :: Python :: 3.12",
16
+ "Programming Language :: Python :: 3.13",
17
+ "Programming Language :: Python :: 3.14",
17
18
  ]
18
- packages = [
19
- { include = "stackit", from="src" }
19
+ dependencies = [
20
+ "stackit-core>=0.0.1a",
21
+ "requests>=2.32.3",
22
+ "pydantic>=2.9.2",
23
+ "python-dateutil>=2.9.0.post0",
20
24
  ]
21
25
 
22
- [tool.poetry.dependencies]
23
- python = ">=3.9,<4.0"
24
- stackit-core = ">=0.0.1a"
25
- requests = ">=2.32.3"
26
- pydantic = ">=2.9.2"
27
- python-dateutil = ">=2.9.0.post0"
28
-
29
- [tool.poetry.group.dev.dependencies]
30
- black = ">=24.8.0"
31
- pytest = ">=8.3.3"
32
- flake8 = [
33
- { version= ">=5.0.3", python="<3.12"},
34
- { version= ">=6.0.1", python=">=3.12"}
35
- ]
36
- flake8-black = ">=0.3.6"
37
- flake8-pyproject = ">=1.2.3"
38
- autoimport = ">=1.6.1"
39
- flake8-eol = ">=0.0.8"
40
- flake8-eradicate = ">=1.5.0"
41
- flake8-bandit = ">=4.1.1"
42
- flake8-bugbear = ">=23.1.14"
43
- flake8-quotes = ">=3.4.0"
44
- isort = ">=5.13.2"
45
-
46
26
  [project.urls]
47
27
  Homepage = "https://github.com/stackitcloud/stackit-sdk-python"
48
28
  Issues = "https://github.com/stackitcloud/stackit-sdk-python/issues"
49
29
 
30
+ [dependency-groups]
31
+ dev = [
32
+ "black>=24.8.0",
33
+ "pytest>=8.3.3",
34
+ "flake8>=5.0.3 ; python_full_version < '3.12'",
35
+ "flake8>=6.0.1 ; python_full_version >= '3.12'",
36
+ "flake8-black>=0.3.6",
37
+ "flake8-pyproject>=1.2.3",
38
+ "autoimport>=1.6.1",
39
+ "flake8-eol>=0.0.8",
40
+ "flake8-eradicate>=1.5.0",
41
+ "flake8-bandit>=4.1.1",
42
+ "flake8-bugbear>=23.1.14",
43
+ "flake8-quotes>=3.4.0",
44
+ "isort>=5.13.2",
45
+ ]
46
+
47
+ [tool.uv]
48
+ default-groups = "all"
49
+
50
+ [tool.uv.sources]
51
+ stackit-core = { path = "../../core" }
52
+
53
+ [tool.hatch.build.targets.sdist]
54
+ include = ["src/stackit"]
55
+
56
+ [tool.hatch.build.targets.wheel]
57
+ include = ["src/stackit"]
58
+
59
+ [tool.hatch.build.targets.wheel.sources]
60
+ "src/stackit" = "stackit"
61
+
50
62
  [build-system]
51
- requires = ["setuptools", "poetry-core"]
52
- build-backend = "poetry.core.masonry.api"
63
+ requires = ["hatchling"]
64
+ build-backend = "hatchling.build"
53
65
 
54
66
  [tool.pytest.ini_options]
55
67
  pythonpath = [
@@ -12,6 +12,7 @@
12
12
  """ # noqa: E501
13
13
 
14
14
  from typing import Any, Dict, List, Optional, Tuple, Union
15
+ from uuid import UUID
15
16
 
16
17
  from pydantic import Field, StrictFloat, StrictInt, StrictStr, validate_call
17
18
  from stackit.core.configuration import Configuration
@@ -55,7 +56,7 @@ class DefaultApi:
55
56
  project_id: StrictStr,
56
57
  region: StrictStr,
57
58
  create_credentials_payload: CreateCredentialsPayload,
58
- x_request_id: Optional[StrictStr] = None,
59
+ x_request_id: Optional[UUID] = None,
59
60
  _request_timeout: Union[
60
61
  None,
61
62
  Annotated[StrictFloat, Field(gt=0)],
@@ -77,7 +78,7 @@ class DefaultApi:
77
78
  :param create_credentials_payload: (required)
78
79
  :type create_credentials_payload: CreateCredentialsPayload
79
80
  :param x_request_id:
80
- :type x_request_id: str
81
+ :type x_request_id: UUID
81
82
  :param _request_timeout: timeout setting for this request. If one
82
83
  number provided, it will be total request
83
84
  timeout. It can also be a pair (tuple) of
@@ -131,7 +132,7 @@ class DefaultApi:
131
132
  project_id: StrictStr,
132
133
  region: StrictStr,
133
134
  create_credentials_payload: CreateCredentialsPayload,
134
- x_request_id: Optional[StrictStr] = None,
135
+ x_request_id: Optional[UUID] = None,
135
136
  _request_timeout: Union[
136
137
  None,
137
138
  Annotated[StrictFloat, Field(gt=0)],
@@ -153,7 +154,7 @@ class DefaultApi:
153
154
  :param create_credentials_payload: (required)
154
155
  :type create_credentials_payload: CreateCredentialsPayload
155
156
  :param x_request_id:
156
- :type x_request_id: str
157
+ :type x_request_id: UUID
157
158
  :param _request_timeout: timeout setting for this request. If one
158
159
  number provided, it will be total request
159
160
  timeout. It can also be a pair (tuple) of
@@ -207,7 +208,7 @@ class DefaultApi:
207
208
  project_id: StrictStr,
208
209
  region: StrictStr,
209
210
  create_credentials_payload: CreateCredentialsPayload,
210
- x_request_id: Optional[StrictStr] = None,
211
+ x_request_id: Optional[UUID] = None,
211
212
  _request_timeout: Union[
212
213
  None,
213
214
  Annotated[StrictFloat, Field(gt=0)],
@@ -229,7 +230,7 @@ class DefaultApi:
229
230
  :param create_credentials_payload: (required)
230
231
  :type create_credentials_payload: CreateCredentialsPayload
231
232
  :param x_request_id:
232
- :type x_request_id: str
233
+ :type x_request_id: UUID
233
234
  :param _request_timeout: timeout setting for this request. If one
234
235
  number provided, it will be total request
235
236
  timeout. It can also be a pair (tuple) of
@@ -346,7 +347,7 @@ class DefaultApi:
346
347
  project_id: StrictStr,
347
348
  region: StrictStr,
348
349
  create_load_balancer_payload: CreateLoadBalancerPayload,
349
- x_request_id: Optional[StrictStr] = None,
350
+ x_request_id: Optional[UUID] = None,
350
351
  _request_timeout: Union[
351
352
  None,
352
353
  Annotated[StrictFloat, Field(gt=0)],
@@ -368,7 +369,7 @@ class DefaultApi:
368
369
  :param create_load_balancer_payload: (required)
369
370
  :type create_load_balancer_payload: CreateLoadBalancerPayload
370
371
  :param x_request_id:
371
- :type x_request_id: str
372
+ :type x_request_id: UUID
372
373
  :param _request_timeout: timeout setting for this request. If one
373
374
  number provided, it will be total request
374
375
  timeout. It can also be a pair (tuple) of
@@ -423,7 +424,7 @@ class DefaultApi:
423
424
  project_id: StrictStr,
424
425
  region: StrictStr,
425
426
  create_load_balancer_payload: CreateLoadBalancerPayload,
426
- x_request_id: Optional[StrictStr] = None,
427
+ x_request_id: Optional[UUID] = None,
427
428
  _request_timeout: Union[
428
429
  None,
429
430
  Annotated[StrictFloat, Field(gt=0)],
@@ -445,7 +446,7 @@ class DefaultApi:
445
446
  :param create_load_balancer_payload: (required)
446
447
  :type create_load_balancer_payload: CreateLoadBalancerPayload
447
448
  :param x_request_id:
448
- :type x_request_id: str
449
+ :type x_request_id: UUID
449
450
  :param _request_timeout: timeout setting for this request. If one
450
451
  number provided, it will be total request
451
452
  timeout. It can also be a pair (tuple) of
@@ -500,7 +501,7 @@ class DefaultApi:
500
501
  project_id: StrictStr,
501
502
  region: StrictStr,
502
503
  create_load_balancer_payload: CreateLoadBalancerPayload,
503
- x_request_id: Optional[StrictStr] = None,
504
+ x_request_id: Optional[UUID] = None,
504
505
  _request_timeout: Union[
505
506
  None,
506
507
  Annotated[StrictFloat, Field(gt=0)],
@@ -522,7 +523,7 @@ class DefaultApi:
522
523
  :param create_load_balancer_payload: (required)
523
524
  :type create_load_balancer_payload: CreateLoadBalancerPayload
524
525
  :param x_request_id:
525
- :type x_request_id: str
526
+ :type x_request_id: UUID
526
527
  :param _request_timeout: timeout setting for this request. If one
527
528
  number provided, it will be total request
528
529
  timeout. It can also be a pair (tuple) of
@@ -1729,7 +1730,7 @@ class DefaultApi:
1729
1730
  ) -> GetQuotaResponse:
1730
1731
  """Get the quota of Application Load Balancers in a project.
1731
1732
 
1732
- Retrieves the configured Application Load Balancer quota for the project. Limit can be changed via service request. There can be 3 times as many TLS certificates and observability credentials as Load Balancers.
1733
+ Retrieves the configured Application Load Balancer quota for the project. Limit can be changed via service request.
1733
1734
 
1734
1735
  :param project_id: (required)
1735
1736
  :type project_id: str
@@ -1797,7 +1798,7 @@ class DefaultApi:
1797
1798
  ) -> ApiResponse[GetQuotaResponse]:
1798
1799
  """Get the quota of Application Load Balancers in a project.
1799
1800
 
1800
- Retrieves the configured Application Load Balancer quota for the project. Limit can be changed via service request. There can be 3 times as many TLS certificates and observability credentials as Load Balancers.
1801
+ Retrieves the configured Application Load Balancer quota for the project. Limit can be changed via service request.
1801
1802
 
1802
1803
  :param project_id: (required)
1803
1804
  :type project_id: str
@@ -1865,7 +1866,7 @@ class DefaultApi:
1865
1866
  ) -> RESTResponseType:
1866
1867
  """Get the quota of Application Load Balancers in a project.
1867
1868
 
1868
- Retrieves the configured Application Load Balancer quota for the project. Limit can be changed via service request. There can be 3 times as many TLS certificates and observability credentials as Load Balancers.
1869
+ Retrieves the configured Application Load Balancer quota for the project. Limit can be changed via service request.
1869
1870
 
1870
1871
  :param project_id: (required)
1871
1872
  :type project_id: str
@@ -12,11 +12,13 @@
12
12
  """ # noqa: E501
13
13
 
14
14
  import datetime
15
+ import decimal
15
16
  import json
16
17
  import mimetypes
17
18
  import os
18
19
  import re
19
20
  import tempfile
21
+ import uuid
20
22
  from enum import Enum
21
23
  from typing import Dict, List, Optional, Tuple, Union
22
24
  from urllib.parse import quote
@@ -63,8 +65,10 @@ class ApiClient:
63
65
  "bool": bool,
64
66
  "date": datetime.date,
65
67
  "datetime": datetime.datetime,
68
+ "decimal": decimal.Decimal,
66
69
  "object": object,
67
70
  }
71
+ _pool = None
68
72
 
69
73
  def __init__(self, configuration, header_name=None, header_value=None, cookie=None) -> None:
70
74
  self.config: Configuration = configuration
@@ -267,7 +271,7 @@ class ApiClient:
267
271
  return_data = self.__deserialize_file(response_data)
268
272
  elif response_type is not None:
269
273
  match = None
270
- content_type = response_data.getheader("content-type")
274
+ content_type = response_data.headers.get("content-type")
271
275
  if content_type is not None:
272
276
  match = re.search(r"charset=([a-zA-Z\-\d]+)[\s;]?", content_type)
273
277
  encoding = match.group(1) if match else "utf-8"
@@ -284,7 +288,7 @@ class ApiClient:
284
288
  return ApiResponse(
285
289
  status_code=response_data.status,
286
290
  data=return_data,
287
- headers=response_data.getheaders(),
291
+ headers=response_data.headers,
288
292
  raw_data=response_data.data,
289
293
  )
290
294
 
@@ -296,6 +300,7 @@ class ApiClient:
296
300
  If obj is str, int, long, float, bool, return directly.
297
301
  If obj is datetime.datetime, datetime.date
298
302
  convert to string in iso8601 format.
303
+ If obj is decimal.Decimal return string representation.
299
304
  If obj is list, sanitize each element in the list.
300
305
  If obj is dict, return the dict.
301
306
  If obj is OpenAPI model, return the properties dict.
@@ -311,12 +316,16 @@ class ApiClient:
311
316
  return obj.get_secret_value()
312
317
  elif isinstance(obj, self.PRIMITIVE_TYPES):
313
318
  return obj
319
+ elif isinstance(obj, uuid.UUID):
320
+ return str(obj)
314
321
  elif isinstance(obj, list):
315
322
  return [self.sanitize_for_serialization(sub_obj) for sub_obj in obj]
316
323
  elif isinstance(obj, tuple):
317
324
  return tuple(self.sanitize_for_serialization(sub_obj) for sub_obj in obj)
318
325
  elif isinstance(obj, (datetime.datetime, datetime.date)):
319
326
  return obj.isoformat()
327
+ elif isinstance(obj, decimal.Decimal):
328
+ return str(obj)
320
329
 
321
330
  elif isinstance(obj, dict):
322
331
  obj_dict = obj
@@ -326,7 +335,7 @@ class ApiClient:
326
335
  # and attributes which value is not None.
327
336
  # Convert attribute name to json key in
328
337
  # model definition for request.
329
- if hasattr(obj, "to_dict") and callable(obj.to_dict):
338
+ if hasattr(obj, "to_dict") and callable(getattr(obj, "to_dict")): # noqa: B009
330
339
  obj_dict = obj.to_dict()
331
340
  else:
332
341
  obj_dict = obj.__dict__
@@ -354,7 +363,7 @@ class ApiClient:
354
363
  data = json.loads(response_text)
355
364
  except ValueError:
356
365
  data = response_text
357
- elif re.match(r"^application/(json|[\w!#$&.+-^_]+\+json)\s*(;|$)", content_type, re.IGNORECASE):
366
+ elif re.match(r"^application/(json|[\w!#$&.+\-^_]+\+json)\s*(;|$)", content_type, re.IGNORECASE):
358
367
  if response_text == "":
359
368
  data = ""
360
369
  else:
@@ -400,12 +409,14 @@ class ApiClient:
400
409
 
401
410
  if klass in self.PRIMITIVE_TYPES:
402
411
  return self.__deserialize_primitive(data, klass)
403
- elif klass == object:
412
+ elif klass is object:
404
413
  return self.__deserialize_object(data)
405
- elif klass == datetime.date:
414
+ elif klass is datetime.date:
406
415
  return self.__deserialize_date(data)
407
- elif klass == datetime.datetime:
416
+ elif klass is datetime.datetime:
408
417
  return self.__deserialize_datetime(data)
418
+ elif klass is decimal.Decimal:
419
+ return decimal.Decimal(data)
409
420
  elif issubclass(klass, Enum):
410
421
  return self.__deserialize_enum(data, klass)
411
422
  else:
@@ -553,12 +564,14 @@ class ApiClient:
553
564
  os.close(fd)
554
565
  os.remove(path)
555
566
 
556
- content_disposition = response.getheader("Content-Disposition")
567
+ content_disposition = response.headers.get("Content-Disposition")
557
568
  if content_disposition:
558
569
  m = re.search(r'filename=[\'"]?([^\'"\s]+)[\'"]?', content_disposition)
559
570
  if m is None:
560
571
  raise ValueError("Unexpected 'content-disposition' header value")
561
- filename = m.group(1)
572
+ filename = os.path.basename(m.group(1)) # Strip any directory traversal
573
+ if filename in ("", ".", ".."): # fall back to tmp filename
574
+ filename = os.path.basename(path)
562
575
  path = os.path.join(os.path.dirname(path), filename)
563
576
 
564
577
  with open(path, "wb") as f:
@@ -129,7 +129,7 @@ class ApiException(OpenApiException):
129
129
  self.body = http_resp.data.decode("utf-8")
130
130
  except Exception: # noqa: S110
131
131
  pass
132
- self.headers = http_resp.getheaders()
132
+ self.headers = http_resp.headers
133
133
 
134
134
  @classmethod
135
135
  def from_response(
@@ -12,7 +12,6 @@
12
12
  Do not edit the class manually.
13
13
  """ # noqa: E501
14
14
 
15
-
16
15
  # import models into model package
17
16
  from stackit.alb.models.active_health_check import ActiveHealthCheck
18
17
  from stackit.alb.models.certificate_config import CertificateConfig
@@ -198,16 +198,16 @@ class CreateLoadBalancerPayload(BaseModel):
198
198
  # override the default output from pydantic by calling `to_dict()` of each item in errors (list)
199
199
  _items = []
200
200
  if self.errors:
201
- for _item in self.errors:
202
- if _item:
203
- _items.append(_item.to_dict())
201
+ for _item_errors in self.errors:
202
+ if _item_errors:
203
+ _items.append(_item_errors.to_dict())
204
204
  _dict["errors"] = _items
205
205
  # override the default output from pydantic by calling `to_dict()` of each item in listeners (list)
206
206
  _items = []
207
207
  if self.listeners:
208
- for _item in self.listeners:
209
- if _item:
210
- _items.append(_item.to_dict())
208
+ for _item_listeners in self.listeners:
209
+ if _item_listeners:
210
+ _items.append(_item_listeners.to_dict())
211
211
  _dict["listeners"] = _items
212
212
  # override the default output from pydantic by calling `to_dict()` of load_balancer_security_group
213
213
  if self.load_balancer_security_group:
@@ -215,9 +215,9 @@ class CreateLoadBalancerPayload(BaseModel):
215
215
  # override the default output from pydantic by calling `to_dict()` of each item in networks (list)
216
216
  _items = []
217
217
  if self.networks:
218
- for _item in self.networks:
219
- if _item:
220
- _items.append(_item.to_dict())
218
+ for _item_networks in self.networks:
219
+ if _item_networks:
220
+ _items.append(_item_networks.to_dict())
221
221
  _dict["networks"] = _items
222
222
  # override the default output from pydantic by calling `to_dict()` of options
223
223
  if self.options:
@@ -225,9 +225,9 @@ class CreateLoadBalancerPayload(BaseModel):
225
225
  # override the default output from pydantic by calling `to_dict()` of each item in target_pools (list)
226
226
  _items = []
227
227
  if self.target_pools:
228
- for _item in self.target_pools:
229
- if _item:
230
- _items.append(_item.to_dict())
228
+ for _item_target_pools in self.target_pools:
229
+ if _item_target_pools:
230
+ _items.append(_item_target_pools.to_dict())
231
231
  _dict["targetPools"] = _items
232
232
  # override the default output from pydantic by calling `to_dict()` of target_security_group
233
233
  if self.target_security_group:
@@ -17,6 +17,7 @@ import json
17
17
  import pprint
18
18
  import re # noqa: F401
19
19
  from typing import Any, ClassVar, Dict, List, Optional, Set
20
+ from uuid import UUID
20
21
 
21
22
  from pydantic import BaseModel, ConfigDict, Field, field_validator
22
23
  from typing_extensions import Annotated, Self
@@ -27,19 +28,17 @@ class GetQuotaResponse(BaseModel):
27
28
  GetQuotaResponse
28
29
  """ # noqa: E501
29
30
 
30
- max_credentials: Optional[Annotated[int, Field(le=999, strict=True, ge=-1)]] = Field(
31
+ max_credentials: Optional[Annotated[int, Field(le=1000000, strict=True, ge=-1)]] = Field(
31
32
  default=None,
32
33
  description="The maximum number of observability credentials that can be stored in this project.",
33
34
  alias="maxCredentials",
34
35
  )
35
- max_load_balancers: Optional[Annotated[int, Field(le=999, strict=True, ge=-1)]] = Field(
36
+ max_load_balancers: Optional[Annotated[int, Field(le=1000000, strict=True, ge=-1)]] = Field(
36
37
  default=None,
37
38
  description="The maximum number of load balancing servers in this project.",
38
39
  alias="maxLoadBalancers",
39
40
  )
40
- project_id: Optional[Annotated[str, Field(strict=True)]] = Field(
41
- default=None, description="Project identifier", alias="projectId"
42
- )
41
+ project_id: Optional[UUID] = Field(default=None, description="Project identifier", alias="projectId")
43
42
  region: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Region")
44
43
  used_credentials: Optional[Annotated[int, Field(le=1000000, strict=True, ge=-1)]] = Field(
45
44
  default=None,
@@ -76,9 +76,9 @@ class HostConfig(BaseModel):
76
76
  # override the default output from pydantic by calling `to_dict()` of each item in rules (list)
77
77
  _items = []
78
78
  if self.rules:
79
- for _item in self.rules:
80
- if _item:
81
- _items.append(_item.to_dict())
79
+ for _item_rules in self.rules:
80
+ if _item_rules:
81
+ _items.append(_item_rules.to_dict())
82
82
  _dict["rules"] = _items
83
83
  return _dict
84
84
 
@@ -71,9 +71,9 @@ class ListCredentialsResponse(BaseModel):
71
71
  # override the default output from pydantic by calling `to_dict()` of each item in credentials (list)
72
72
  _items = []
73
73
  if self.credentials:
74
- for _item in self.credentials:
75
- if _item:
76
- _items.append(_item.to_dict())
74
+ for _item_credentials in self.credentials:
75
+ if _item_credentials:
76
+ _items.append(_item_credentials.to_dict())
77
77
  _dict["credentials"] = _items
78
78
  return _dict
79
79
 
@@ -87,9 +87,9 @@ class ListLoadBalancersResponse(BaseModel):
87
87
  # override the default output from pydantic by calling `to_dict()` of each item in load_balancers (list)
88
88
  _items = []
89
89
  if self.load_balancers:
90
- for _item in self.load_balancers:
91
- if _item:
92
- _items.append(_item.to_dict())
90
+ for _item_load_balancers in self.load_balancers:
91
+ if _item_load_balancers:
92
+ _items.append(_item_load_balancers.to_dict())
93
93
  _dict["loadBalancers"] = _items
94
94
  return _dict
95
95
 
@@ -73,9 +73,9 @@ class ListPlansResponse(BaseModel):
73
73
  # override the default output from pydantic by calling `to_dict()` of each item in valid_plans (list)
74
74
  _items = []
75
75
  if self.valid_plans:
76
- for _item in self.valid_plans:
77
- if _item:
78
- _items.append(_item.to_dict())
76
+ for _item_valid_plans in self.valid_plans:
77
+ if _item_valid_plans:
78
+ _items.append(_item_valid_plans.to_dict())
79
79
  _dict["validPlans"] = _items
80
80
  return _dict
81
81
 
@@ -198,16 +198,16 @@ class LoadBalancer(BaseModel):
198
198
  # override the default output from pydantic by calling `to_dict()` of each item in errors (list)
199
199
  _items = []
200
200
  if self.errors:
201
- for _item in self.errors:
202
- if _item:
203
- _items.append(_item.to_dict())
201
+ for _item_errors in self.errors:
202
+ if _item_errors:
203
+ _items.append(_item_errors.to_dict())
204
204
  _dict["errors"] = _items
205
205
  # override the default output from pydantic by calling `to_dict()` of each item in listeners (list)
206
206
  _items = []
207
207
  if self.listeners:
208
- for _item in self.listeners:
209
- if _item:
210
- _items.append(_item.to_dict())
208
+ for _item_listeners in self.listeners:
209
+ if _item_listeners:
210
+ _items.append(_item_listeners.to_dict())
211
211
  _dict["listeners"] = _items
212
212
  # override the default output from pydantic by calling `to_dict()` of load_balancer_security_group
213
213
  if self.load_balancer_security_group:
@@ -215,9 +215,9 @@ class LoadBalancer(BaseModel):
215
215
  # override the default output from pydantic by calling `to_dict()` of each item in networks (list)
216
216
  _items = []
217
217
  if self.networks:
218
- for _item in self.networks:
219
- if _item:
220
- _items.append(_item.to_dict())
218
+ for _item_networks in self.networks:
219
+ if _item_networks:
220
+ _items.append(_item_networks.to_dict())
221
221
  _dict["networks"] = _items
222
222
  # override the default output from pydantic by calling `to_dict()` of options
223
223
  if self.options:
@@ -225,9 +225,9 @@ class LoadBalancer(BaseModel):
225
225
  # override the default output from pydantic by calling `to_dict()` of each item in target_pools (list)
226
226
  _items = []
227
227
  if self.target_pools:
228
- for _item in self.target_pools:
229
- if _item:
230
- _items.append(_item.to_dict())
228
+ for _item_target_pools in self.target_pools:
229
+ if _item_target_pools:
230
+ _items.append(_item_target_pools.to_dict())
231
231
  _dict["targetPools"] = _items
232
232
  # override the default output from pydantic by calling `to_dict()` of target_security_group
233
233
  if self.target_security_group:
@@ -17,9 +17,10 @@ import json
17
17
  import pprint
18
18
  import re # noqa: F401
19
19
  from typing import Any, ClassVar, Dict, List, Optional, Set
20
+ from uuid import UUID
20
21
 
21
22
  from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
22
- from typing_extensions import Annotated, Self
23
+ from typing_extensions import Self
23
24
 
24
25
 
25
26
  class Network(BaseModel):
@@ -27,7 +28,7 @@ class Network(BaseModel):
27
28
  Network
28
29
  """ # noqa: E501
29
30
 
30
- network_id: Optional[Annotated[str, Field(strict=True)]] = Field(
31
+ network_id: Optional[UUID] = Field(
31
32
  default=None,
32
33
  description="STACKIT network ID the Application Load Balancer and/or targets are in.",
33
34
  alias="networkId",
@@ -71,9 +71,9 @@ class ProtocolOptionsHTTP(BaseModel):
71
71
  # override the default output from pydantic by calling `to_dict()` of each item in hosts (list)
72
72
  _items = []
73
73
  if self.hosts:
74
- for _item in self.hosts:
75
- if _item:
76
- _items.append(_item.to_dict())
74
+ for _item_hosts in self.hosts:
75
+ if _item_hosts:
76
+ _items.append(_item_hosts.to_dict())
77
77
  _dict["hosts"] = _items
78
78
  return _dict
79
79
 
@@ -103,9 +103,9 @@ class Rule(BaseModel):
103
103
  # override the default output from pydantic by calling `to_dict()` of each item in headers (list)
104
104
  _items = []
105
105
  if self.headers:
106
- for _item in self.headers:
107
- if _item:
108
- _items.append(_item.to_dict())
106
+ for _item_headers in self.headers:
107
+ if _item_headers:
108
+ _items.append(_item_headers.to_dict())
109
109
  _dict["headers"] = _items
110
110
  # override the default output from pydantic by calling `to_dict()` of path
111
111
  if self.path:
@@ -113,9 +113,9 @@ class Rule(BaseModel):
113
113
  # override the default output from pydantic by calling `to_dict()` of each item in query_parameters (list)
114
114
  _items = []
115
115
  if self.query_parameters:
116
- for _item in self.query_parameters:
117
- if _item:
118
- _items.append(_item.to_dict())
116
+ for _item_query_parameters in self.query_parameters:
117
+ if _item_query_parameters:
118
+ _items.append(_item_query_parameters.to_dict())
119
119
  _dict["queryParameters"] = _items
120
120
  return _dict
121
121
 
@@ -82,9 +82,9 @@ class Status(BaseModel):
82
82
  # override the default output from pydantic by calling `to_dict()` of each item in details (list)
83
83
  _items = []
84
84
  if self.details:
85
- for _item in self.details:
86
- if _item:
87
- _items.append(_item.to_dict())
85
+ for _item_details in self.details:
86
+ if _item_details:
87
+ _items.append(_item_details.to_dict())
88
88
  _dict["details"] = _items
89
89
  return _dict
90
90
 
@@ -97,9 +97,9 @@ class TargetPool(BaseModel):
97
97
  # override the default output from pydantic by calling `to_dict()` of each item in targets (list)
98
98
  _items = []
99
99
  if self.targets:
100
- for _item in self.targets:
101
- if _item:
102
- _items.append(_item.to_dict())
100
+ for _item_targets in self.targets:
101
+ if _item_targets:
102
+ _items.append(_item_targets.to_dict())
103
103
  _dict["targets"] = _items
104
104
  # override the default output from pydantic by calling `to_dict()` of tls_config
105
105
  if self.tls_config:
@@ -196,16 +196,16 @@ class UpdateLoadBalancerPayload(BaseModel):
196
196
  # override the default output from pydantic by calling `to_dict()` of each item in errors (list)
197
197
  _items = []
198
198
  if self.errors:
199
- for _item in self.errors:
200
- if _item:
201
- _items.append(_item.to_dict())
199
+ for _item_errors in self.errors:
200
+ if _item_errors:
201
+ _items.append(_item_errors.to_dict())
202
202
  _dict["errors"] = _items
203
203
  # override the default output from pydantic by calling `to_dict()` of each item in listeners (list)
204
204
  _items = []
205
205
  if self.listeners:
206
- for _item in self.listeners:
207
- if _item:
208
- _items.append(_item.to_dict())
206
+ for _item_listeners in self.listeners:
207
+ if _item_listeners:
208
+ _items.append(_item_listeners.to_dict())
209
209
  _dict["listeners"] = _items
210
210
  # override the default output from pydantic by calling `to_dict()` of load_balancer_security_group
211
211
  if self.load_balancer_security_group:
@@ -213,9 +213,9 @@ class UpdateLoadBalancerPayload(BaseModel):
213
213
  # override the default output from pydantic by calling `to_dict()` of each item in networks (list)
214
214
  _items = []
215
215
  if self.networks:
216
- for _item in self.networks:
217
- if _item:
218
- _items.append(_item.to_dict())
216
+ for _item_networks in self.networks:
217
+ if _item_networks:
218
+ _items.append(_item_networks.to_dict())
219
219
  _dict["networks"] = _items
220
220
  # override the default output from pydantic by calling `to_dict()` of options
221
221
  if self.options:
@@ -223,9 +223,9 @@ class UpdateLoadBalancerPayload(BaseModel):
223
223
  # override the default output from pydantic by calling `to_dict()` of each item in target_pools (list)
224
224
  _items = []
225
225
  if self.target_pools:
226
- for _item in self.target_pools:
227
- if _item:
228
- _items.append(_item.to_dict())
226
+ for _item_target_pools in self.target_pools:
227
+ if _item_target_pools:
228
+ _items.append(_item_target_pools.to_dict())
229
229
  _dict["targetPools"] = _items
230
230
  # override the default output from pydantic by calling `to_dict()` of target_security_group
231
231
  if self.target_security_group:
@@ -97,9 +97,9 @@ class UpdateTargetPoolPayload(BaseModel):
97
97
  # override the default output from pydantic by calling `to_dict()` of each item in targets (list)
98
98
  _items = []
99
99
  if self.targets:
100
- for _item in self.targets:
101
- if _item:
102
- _items.append(_item.to_dict())
100
+ for _item_targets in self.targets:
101
+ if _item_targets:
102
+ _items.append(_item_targets.to_dict())
103
103
  _dict["targets"] = _items
104
104
  # override the default output from pydantic by calling `to_dict()` of tls_config
105
105
  if self.tls_config:
@@ -38,12 +38,17 @@ class RESTResponse(io.IOBase):
38
38
  self.data = self.response.content
39
39
  return self.data
40
40
 
41
+ @property
42
+ def headers(self):
43
+ """Returns a dictionary of response headers."""
44
+ return self.response.headers
45
+
41
46
  def getheaders(self):
42
- """Returns a dictionary of the response headers."""
47
+ """Returns a dictionary of the response headers; use ``headers`` instead."""
43
48
  return self.response.headers
44
49
 
45
50
  def getheader(self, name, default=None):
46
- """Returns a given response header."""
51
+ """Returns a given response header; use ``headers.get()`` instead."""
47
52
  return self.response.headers.get(name, default)
48
53
 
49
54
 
@@ -93,6 +98,7 @@ class RESTClientObject:
93
98
  url,
94
99
  data=request_body,
95
100
  headers=headers,
101
+ timeout=_request_timeout,
96
102
  )
97
103
  elif content_type == "application/x-www-form-urlencoded":
98
104
  r = self.session.request(
@@ -100,6 +106,7 @@ class RESTClientObject:
100
106
  url,
101
107
  params=post_params,
102
108
  headers=headers,
109
+ timeout=_request_timeout,
103
110
  )
104
111
  elif content_type == "multipart/form-data":
105
112
  # must del headers['Content-Type'], or the correct
@@ -113,6 +120,7 @@ class RESTClientObject:
113
120
  url,
114
121
  files=post_params,
115
122
  headers=headers,
123
+ timeout=_request_timeout,
116
124
  )
117
125
  # Pass a `string` parameter directly in the body to support
118
126
  # other content types than JSON when `body` argument is
@@ -123,10 +131,17 @@ class RESTClientObject:
123
131
  url,
124
132
  data=body,
125
133
  headers=headers,
134
+ timeout=_request_timeout,
126
135
  )
127
136
  elif headers["Content-Type"].startswith("text/") and isinstance(body, bool):
128
137
  request_body = "true" if body else "false"
129
- r = self.session.request(method, url, data=request_body, headers=headers)
138
+ r = self.session.request(
139
+ method,
140
+ url,
141
+ data=request_body,
142
+ headers=headers,
143
+ timeout=_request_timeout,
144
+ )
130
145
  else:
131
146
  # Cannot generate the request from given parameters
132
147
  msg = """Cannot prepare a request message for provided
@@ -140,6 +155,7 @@ class RESTClientObject:
140
155
  url,
141
156
  params={},
142
157
  headers=headers,
158
+ timeout=_request_timeout,
143
159
  )
144
160
  except requests.exceptions.SSLError as e:
145
161
  msg = "\n".join([type(e).__name__, str(e)])
File without changes
File without changes
File without changes